Index: extra/pylint.rc
===================================================================
--- extra/pylint.rc	(revision b297ba9e837aada12de87cd46ea7a01bfe549da7)
+++ extra/pylint.rc	(revision 4e2851147451b8c90769757e5d89695dc4011cea)
@@ -290,5 +290,5 @@
 # (useful for modules/projects where namespaces are manipulated during runtime
 # and thus existing member attributes cannot be deduced by static analysis
-ignored-modules=bumps,sas,numpy,numpy.random,scipy,scipy.special
+ignored-modules=bumps,sas,numpy,numpy.random,scipy,scipy.special,pyopencl,pycuda,matplotlib.cm,ipyvolume,ipywidget
 
 # List of classes names for which member attributes should not be checked
Index: sasmodels/jitter.py
===================================================================
--- sasmodels/jitter.py	(revision b297ba9e837aada12de87cd46ea7a01bfe549da7)
+++ sasmodels/jitter.py	(revision 4e2851147451b8c90769757e5d89695dc4011cea)
@@ -114,4 +114,5 @@
 def draw_sc(axes, size, view, jitter, steps=None, alpha=1):
     """Draw points for simple cubic paracrystal"""
+    # pylint: disable=unused-argument
     atoms = _build_sc()
     _draw_crystal(axes, size, view, jitter, atoms=atoms)
@@ -119,4 +120,5 @@
 def draw_fcc(axes, size, view, jitter, steps=None, alpha=1):
     """Draw points for face-centered cubic paracrystal"""
+    # pylint: disable=unused-argument
     # Build the simple cubic crystal
     atoms = _build_sc()
@@ -134,4 +136,5 @@
 def draw_bcc(axes, size, view, jitter, steps=None, alpha=1):
     """Draw points for body-centered cubic paracrystal"""
+    # pylint: disable=unused-argument
     # Build the simple cubic crystal
     atoms = _build_sc()
@@ -189,4 +192,5 @@
                         color=(0.6, 1.0, 0.6), alpha=1):
     """Draw a parallelepiped surface, with view and jitter."""
+    # pylint: disable=unused-argument
     a, b, c = size
     x = a*np.array([+1, -1, +1, -1, +1, -1, +1, -1])
@@ -212,5 +216,5 @@
     # in front of the "c+" face.  Use the c face so that rotations about psi
     # rotate that face.
-    if 0:
+    if 0: # pylint: disable=using-constant-test
         color = (1, 0.6, 0.6)  # pink
         x = a*np.array([+1, -1, +1, -1, +1, -1, +1, -1])
@@ -229,5 +233,5 @@
     ])
 
-def draw_sphere(axes, radius=0.5, steps=25,
+def draw_sphere(axes, radius=1.0, steps=25,
                 center=(0, 0, 0), color='w', alpha=1.):
     """Draw a sphere"""
@@ -249,5 +253,5 @@
     axes.plot([x, x], [y, y], [z, z+dz], color='black')
 
-def draw_person_on_sphere(axes, view, height=0.5, radius=0.5):
+def draw_person_on_sphere(axes, view, height=0.5, radius=1.0):
     """
     Draw a person on the surface of a sphere.
@@ -265,6 +269,6 @@
     arm_length = torso_length * 0.90
 
-    def _draw_part(x, z):
-        y = np.zeros_like(x)
+    def _draw_part(y, z):
+        x = np.zeros_like(y)
         xp, yp, zp = transform_xyz(view, None, x, y, z + radius)
         axes.plot(xp, yp, zp, color='k')
@@ -272,24 +276,24 @@
     # circle for head
     u = np.linspace(0, 2 * pi, 40)
-    x = head_radius * cos(u)
+    y = head_radius * cos(u)
     z = head_radius * sin(u) + head_height
-    _draw_part(x, z)
+    _draw_part(y, z)
 
     # rectangle for body
-    x = np.array([-torso_radius, torso_radius, torso_radius, -torso_radius, -torso_radius])
+    y = np.array([-torso_radius, torso_radius, torso_radius, -torso_radius, -torso_radius])
     z = np.array([0., 0, torso_length, torso_length, 0]) + leg_length
-    _draw_part(x, z)
+    _draw_part(y, z)
 
     # arms
-    x = np.array([-torso_radius - limb_offset, -torso_radius - limb_offset, -torso_radius])
+    y = np.array([-torso_radius - limb_offset, -torso_radius - limb_offset, -torso_radius])
     z = np.array([shoulder_height - arm_length, shoulder_height, shoulder_height])
-    _draw_part(x, z)
-    _draw_part(-x, z)
+    _draw_part(y, z)
+    _draw_part(-y, z)  # pylint: disable=invalid-unary-operand-type
 
     # legs
-    x = np.array([-torso_radius + limb_offset, -torso_radius + limb_offset])
+    y = np.array([-torso_radius + limb_offset, -torso_radius + limb_offset])
     z = np.array([0, leg_length])
-    _draw_part(x, z)
-    _draw_part(-x, z)
+    _draw_part(y, z)
+    _draw_part(-y, z)  # pylint: disable=invalid-unary-operand-type
 
     limits = [-radius-height, radius+height]
@@ -397,4 +401,5 @@
         Should allow free movement in theta, but phi is distorted.
     """
+    # pylint: disable=unused-argument
     # TODO: try Kent distribution instead of a gaussian warped by projection
 
@@ -534,5 +539,5 @@
 
     # mesh in theta, phi formed by rotating z
-    dtheta, dphi, dpsi = jitter
+    dtheta, dphi, dpsi = jitter  # pylint: disable=unused-variable
     z = np.matrix([[0], [0], [radius]])
     points = np.hstack([_rotate(theta_i, phi_j, z)
@@ -829,5 +834,5 @@
     #print("range",(vmin,vmax))
     #qx, qy = np.meshgrid(qx, qy)
-    if 0:
+    if 0:  # pylint: disable=using-constant-test
         level = np.asarray(255*(Iqxy - vmin)/(vmax - vmin), 'i')
         level[level < 0] = 0
@@ -841,5 +846,5 @@
         x, y = np.meshgrid(qx/qx.max(), qy/qy.max())
         axes.plot_surface(x, y, -1.1*np.ones_like(x), facecolors=colors)
-    elif 1:
+    elif 1:  # pylint: disable=using-constant-test
         axes.contourf(qx/qx.max(), qy/qy.max(), Iqxy, zdir='z', offset=-1.1,
                       levels=np.linspace(vmin, vmax, 24))
@@ -1019,5 +1024,6 @@
     # Note: travis-ci does not support mpl_toolkits.mplot3d, but this shouldn't be
     # an issue since we are lazy-loading the package on a path that isn't tested.
-    import mpl_toolkits.mplot3d  # Adds projection='3d' option to subplot
+    # Importing mplot3d adds projection='3d' option to subplot
+    import mpl_toolkits.mplot3d  # pylint: disable=unused-variable
     import matplotlib as mpl
     import matplotlib.pyplot as plt
@@ -1074,4 +1080,5 @@
     ## callback to draw the new view
     def _update(val, axis=None):
+        # pylint: disable=unused-argument
         view = stheta.val, sphi.val, spsi.val
         jitter = sdtheta.val, sdphi.val, sdpsi.val
@@ -1083,6 +1090,6 @@
 
         ## Visualize as person on globe
-        #draw_sphere(axes)
-        #draw_person_on_sphere(axes, view)
+        #draw_sphere(axes, radius=0.5)
+        #draw_person_on_sphere(axes, view, radius=0.5)
 
         ## Move beam instead of shape
@@ -1092,4 +1099,5 @@
         ## Move shape and draw scattering
         draw_beam(axes, (0, 0), alpha=1.)
+        #draw_person_on_sphere(axes, view, radius=1.2, height=0.5)
         draw_jitter(axes, view, jitter, dist=dist, size=size, alpha=1.,
                     draw_shape=draw_shape, projection=projection, views=3)
@@ -1208,8 +1216,9 @@
     import ipyvolume as ipv
 
-    class Axes:
+    class Axes(object):
         """
         Matplotlib Axes3D style interface to ipyvolume renderer.
         """
+        # pylint: disable=no-self-use,no-init
         # transparency can be achieved by setting the following:
         #    mesh.color = [r, g, b, alpha]
@@ -1260,8 +1269,10 @@
         def contourf(self, x, y, v, zdir='z', offset=0, levels=None, **kw):
             """mpl style contourf interface for ipyvolume"""
+            # pylint: disable=unused-argument
             # Don't use contour for now (although we might want to later)
             self.pcolor(x, y, v, zdir='z', offset=offset, **kw)
         def pcolor(self, x, y, v, zdir='z', offset=0, **kw):
             """mpl style pcolor interface for ipyvolume"""
+            # pylint: disable=unused-argument
             x, y, v = make_vec(x, y, v)
             image = make_image(v, kw)
@@ -1317,6 +1328,6 @@
         ## Visualize as person on globe
         #draw_beam(axes, (0, 0))
-        #draw_sphere(axes)
-        #draw_person_on_sphere(axes, view)
+        #draw_sphere(axes, radius=0.5)
+        #draw_person_on_sphere(axes, view, radius=0.5)
 
         ## Move beam instead of shape
Index: sasmodels/kernelcl.py
===================================================================
--- sasmodels/kernelcl.py	(revision b297ba9e837aada12de87cd46ea7a01bfe549da7)
+++ sasmodels/kernelcl.py	(revision 4e2851147451b8c90769757e5d89695dc4011cea)
@@ -115,4 +115,5 @@
     Monkey patch pyopencl to allow spaces in include file path.
     """
+    # pylint: disable=protected-access
     import pyopencl
     if hasattr(pyopencl, '_DEFAULT_INCLUDE_OPTIONS'):
