From e056ac752fc14289a864d07afa738d9d61adecd8 Mon Sep 17 00:00:00 2001
From: Paul McCarthy <pauld.mccarthy@gmail.com>
Date: Tue, 26 Jan 2016 16:10:57 +0000
Subject: [PATCH] Documentation updates.

---
 .gitignore                                       |  2 ++
 apidoc/conf.py                                   |  9 ++++++---
 .../fsl.fsleyes.controls.histogramlistpanel.rst  |  7 -------
 apidoc/fsl.fsleyes.gl.shaders.arbp.parse.rst     |  7 +++++++
 apidoc/fsl.fsleyes.gl.shaders.arbp.program.rst   |  7 +++++++
 apidoc/fsl.fsleyes.gl.shaders.arbp.rst           |  7 +++++++
 apidoc/fsl.fsleyes.gl.shaders.glsl.parse.rst     |  7 +++++++
 apidoc/fsl.fsleyes.gl.shaders.glsl.program.rst   |  7 +++++++
 apidoc/fsl.fsleyes.gl.shaders.glsl.rst           |  7 +++++++
 apidoc/fsl.fsleyes.plotting.dataseries.rst       |  7 +++++++
 apidoc/fsl.fsleyes.plotting.histogramseries.rst  |  7 +++++++
 ...fsl.fsleyes.plotting.powerspectrumseries.rst} |  4 ++--
 apidoc/fsl.fsleyes.plotting.rst                  |  7 +++++++
 apidoc/fsl.fsleyes.plotting.timeseries.rst       |  7 +++++++
 .../fsl.fsleyes.profiles.lightboxeditprofile.rst |  7 -------
 apidoc/index.rst                                 | 13 ++++++++++++-
 fsl/fsleyes/actions/__init__.py                  |  2 +-
 fsl/fsleyes/colourmaps.py                        |  2 +-
 fsl/fsleyes/controls/clusterpanel.py             |  2 +-
 fsl/fsleyes/controls/overlaydisplaytoolbar.py    | 16 ++++++++--------
 fsl/fsleyes/gl/gl21/gllinevector_funcs.py        |  2 +-
 fsl/fsleyes/gl/glvector.py                       |  4 ++--
 fsl/fsleyes/gl/shaders/arbp/__init__.py          | 14 ++++++++++++++
 fsl/fsleyes/gl/shaders/arbp/parse.py             |  2 +-
 fsl/fsleyes/gl/shaders/arbp/program.py           |  4 ++--
 fsl/fsleyes/gl/shaders/glsl/__init__.py          | 13 +++++++++++++
 fsl/fsleyes/gl/shaders/glsl/parse.py             |  9 +++++----
 fsl/fsleyes/gl/shaders/glsl/program.py           |  4 ++--
 fsl/fsleyes/plotting/__init__.py                 |  9 ++++++++-
 fsl/fsleyes/plotting/powerspectrumseries.py      |  2 +-
 fsl/fsleyes/plotting/timeseries.py               |  1 -
 fsl/fsleyes/views/plotpanel.py                   |  9 +++++----
 fsl/fsleyes/views/viewpanel.py                   |  2 +-
 33 files changed, 158 insertions(+), 51 deletions(-)
 delete mode 100644 apidoc/fsl.fsleyes.controls.histogramlistpanel.rst
 create mode 100644 apidoc/fsl.fsleyes.gl.shaders.arbp.parse.rst
 create mode 100644 apidoc/fsl.fsleyes.gl.shaders.arbp.program.rst
 create mode 100644 apidoc/fsl.fsleyes.gl.shaders.arbp.rst
 create mode 100644 apidoc/fsl.fsleyes.gl.shaders.glsl.parse.rst
 create mode 100644 apidoc/fsl.fsleyes.gl.shaders.glsl.program.rst
 create mode 100644 apidoc/fsl.fsleyes.gl.shaders.glsl.rst
 create mode 100644 apidoc/fsl.fsleyes.plotting.dataseries.rst
 create mode 100644 apidoc/fsl.fsleyes.plotting.histogramseries.rst
 rename apidoc/{fsl.fsleyes.controls.timeserieslistpanel.rst => fsl.fsleyes.plotting.powerspectrumseries.rst} (50%)
 create mode 100644 apidoc/fsl.fsleyes.plotting.rst
 create mode 100644 apidoc/fsl.fsleyes.plotting.timeseries.rst
 delete mode 100644 apidoc/fsl.fsleyes.profiles.lightboxeditprofile.rst

diff --git a/.gitignore b/.gitignore
index 0d20b6487..47ce7658f 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1 +1,3 @@
 *.pyc
+apidoc/html
+doc/html
diff --git a/apidoc/conf.py b/apidoc/conf.py
index aa4fc355c..1222bd83c 100644
--- a/apidoc/conf.py
+++ b/apidoc/conf.py
@@ -12,8 +12,11 @@
 # All configuration values have a default; values that are commented out
 # serve to show the default.
 
-import sys
 import os
+import sys
+import datetime
+
+date = datetime.date.today()
 
 # If extensions (or modules to document with autodoc) are in another directory,
 # add these directories to sys.path here. If the directory is relative to the
@@ -53,7 +56,7 @@ master_doc = 'index'
 
 # General information about the project.
 project = u'fslpy'
-copyright = u'2015, Paul McCarthy, FMRIB Centre'
+copyright = u'{}, Paul McCarthy, FMRIB Centre'.format(date.year)
 
 # The version info for the project you're documenting, acts as replacement for
 # |version| and |release|, also used in various other places throughout the
@@ -274,7 +277,7 @@ texinfo_documents = [
 epub_title = u'FSLpy'
 epub_author = u'Paul McCarthy'
 epub_publisher = u'Paul McCarthy'
-epub_copyright = u'2014, Paul McCarthy'
+epub_copyright = u'{}, Paul McCarthy'.format(date.year)
 
 # The basename for the epub file. It defaults to the project name.
 #epub_basename = u'FSLpy'
diff --git a/apidoc/fsl.fsleyes.controls.histogramlistpanel.rst b/apidoc/fsl.fsleyes.controls.histogramlistpanel.rst
deleted file mode 100644
index f12eb50a5..000000000
--- a/apidoc/fsl.fsleyes.controls.histogramlistpanel.rst
+++ /dev/null
@@ -1,7 +0,0 @@
-fsl.fsleyes.controls.histogramlistpanel module
-==============================================
-
-.. automodule:: fsl.fsleyes.controls.histogramlistpanel
-    :members:
-    :undoc-members:
-    :show-inheritance:
diff --git a/apidoc/fsl.fsleyes.gl.shaders.arbp.parse.rst b/apidoc/fsl.fsleyes.gl.shaders.arbp.parse.rst
new file mode 100644
index 000000000..1200ec387
--- /dev/null
+++ b/apidoc/fsl.fsleyes.gl.shaders.arbp.parse.rst
@@ -0,0 +1,7 @@
+fsl.fsleyes.gl.shaders.arbp.parse module
+========================================
+
+.. automodule:: fsl.fsleyes.gl.shaders.arbp.parse
+    :members:
+    :undoc-members:
+    :show-inheritance:
diff --git a/apidoc/fsl.fsleyes.gl.shaders.arbp.program.rst b/apidoc/fsl.fsleyes.gl.shaders.arbp.program.rst
new file mode 100644
index 000000000..ee526d734
--- /dev/null
+++ b/apidoc/fsl.fsleyes.gl.shaders.arbp.program.rst
@@ -0,0 +1,7 @@
+fsl.fsleyes.gl.shaders.arbp.program module
+==========================================
+
+.. automodule:: fsl.fsleyes.gl.shaders.arbp.program
+    :members:
+    :undoc-members:
+    :show-inheritance:
diff --git a/apidoc/fsl.fsleyes.gl.shaders.arbp.rst b/apidoc/fsl.fsleyes.gl.shaders.arbp.rst
new file mode 100644
index 000000000..4fb7281b1
--- /dev/null
+++ b/apidoc/fsl.fsleyes.gl.shaders.arbp.rst
@@ -0,0 +1,7 @@
+fsl.fsleyes.gl.shaders.arbp package
+===================================
+
+.. automodule:: fsl.fsleyes.gl.shaders.arbp
+    :members:
+    :undoc-members:
+    :show-inheritance:
diff --git a/apidoc/fsl.fsleyes.gl.shaders.glsl.parse.rst b/apidoc/fsl.fsleyes.gl.shaders.glsl.parse.rst
new file mode 100644
index 000000000..860befb0e
--- /dev/null
+++ b/apidoc/fsl.fsleyes.gl.shaders.glsl.parse.rst
@@ -0,0 +1,7 @@
+fsl.fsleyes.gl.shaders.glsl.parse module
+========================================
+
+.. automodule:: fsl.fsleyes.gl.shaders.glsl.parse
+    :members:
+    :undoc-members:
+    :show-inheritance:
diff --git a/apidoc/fsl.fsleyes.gl.shaders.glsl.program.rst b/apidoc/fsl.fsleyes.gl.shaders.glsl.program.rst
new file mode 100644
index 000000000..11658d533
--- /dev/null
+++ b/apidoc/fsl.fsleyes.gl.shaders.glsl.program.rst
@@ -0,0 +1,7 @@
+fsl.fsleyes.gl.shaders.glsl.program module
+==========================================
+
+.. automodule:: fsl.fsleyes.gl.shaders.glsl.program
+    :members:
+    :undoc-members:
+    :show-inheritance:
diff --git a/apidoc/fsl.fsleyes.gl.shaders.glsl.rst b/apidoc/fsl.fsleyes.gl.shaders.glsl.rst
new file mode 100644
index 000000000..873e342f3
--- /dev/null
+++ b/apidoc/fsl.fsleyes.gl.shaders.glsl.rst
@@ -0,0 +1,7 @@
+fsl.fsleyes.gl.shaders.glsl package
+===================================
+
+.. automodule:: fsl.fsleyes.gl.shaders.glsl
+    :members:
+    :undoc-members:
+    :show-inheritance:
diff --git a/apidoc/fsl.fsleyes.plotting.dataseries.rst b/apidoc/fsl.fsleyes.plotting.dataseries.rst
new file mode 100644
index 000000000..ecf1cbbf1
--- /dev/null
+++ b/apidoc/fsl.fsleyes.plotting.dataseries.rst
@@ -0,0 +1,7 @@
+fsl.fsleyes.plotting.dataseries module
+======================================
+
+.. automodule:: fsl.fsleyes.plotting.dataseries
+    :members:
+    :undoc-members:
+    :show-inheritance:
diff --git a/apidoc/fsl.fsleyes.plotting.histogramseries.rst b/apidoc/fsl.fsleyes.plotting.histogramseries.rst
new file mode 100644
index 000000000..7929299e2
--- /dev/null
+++ b/apidoc/fsl.fsleyes.plotting.histogramseries.rst
@@ -0,0 +1,7 @@
+fsl.fsleyes.plotting.histogramseries module
+===========================================
+
+.. automodule:: fsl.fsleyes.plotting.histogramseries
+    :members:
+    :undoc-members:
+    :show-inheritance:
diff --git a/apidoc/fsl.fsleyes.controls.timeserieslistpanel.rst b/apidoc/fsl.fsleyes.plotting.powerspectrumseries.rst
similarity index 50%
rename from apidoc/fsl.fsleyes.controls.timeserieslistpanel.rst
rename to apidoc/fsl.fsleyes.plotting.powerspectrumseries.rst
index 66a53a50d..608aa1dde 100644
--- a/apidoc/fsl.fsleyes.controls.timeserieslistpanel.rst
+++ b/apidoc/fsl.fsleyes.plotting.powerspectrumseries.rst
@@ -1,7 +1,7 @@
-fsl.fsleyes.controls.timeserieslistpanel module
+fsl.fsleyes.plotting.powerspectrumseries module
 ===============================================
 
-.. automodule:: fsl.fsleyes.controls.timeserieslistpanel
+.. automodule:: fsl.fsleyes.plotting.powerspectrumseries
     :members:
     :undoc-members:
     :show-inheritance:
diff --git a/apidoc/fsl.fsleyes.plotting.rst b/apidoc/fsl.fsleyes.plotting.rst
new file mode 100644
index 000000000..a3c143ffa
--- /dev/null
+++ b/apidoc/fsl.fsleyes.plotting.rst
@@ -0,0 +1,7 @@
+fsl.fsleyes.plotting package
+============================
+
+.. automodule:: fsl.fsleyes.plotting
+    :members:
+    :undoc-members:
+    :show-inheritance:
diff --git a/apidoc/fsl.fsleyes.plotting.timeseries.rst b/apidoc/fsl.fsleyes.plotting.timeseries.rst
new file mode 100644
index 000000000..13f64f3c5
--- /dev/null
+++ b/apidoc/fsl.fsleyes.plotting.timeseries.rst
@@ -0,0 +1,7 @@
+fsl.fsleyes.plotting.timeseries module
+======================================
+
+.. automodule:: fsl.fsleyes.plotting.timeseries
+    :members:
+    :undoc-members:
+    :show-inheritance:
diff --git a/apidoc/fsl.fsleyes.profiles.lightboxeditprofile.rst b/apidoc/fsl.fsleyes.profiles.lightboxeditprofile.rst
deleted file mode 100644
index bf8147bf8..000000000
--- a/apidoc/fsl.fsleyes.profiles.lightboxeditprofile.rst
+++ /dev/null
@@ -1,7 +0,0 @@
-fsl.fsleyes.profiles.lightboxeditprofile module
-===============================================
-
-.. automodule:: fsl.fsleyes.profiles.lightboxeditprofile
-    :members:
-    :undoc-members:
-    :show-inheritance:
diff --git a/apidoc/index.rst b/apidoc/index.rst
index 00af35bc0..b95355d90 100644
--- a/apidoc/index.rst
+++ b/apidoc/index.rst
@@ -13,4 +13,15 @@
    fsl.fsleyes
 
    
-This is the ``fslpy`` package.
+This is the ``fslpy`` API documentation.
+
+
+Building the documentation
+--------------------------
+
+These pages have been built with the following commands (assuming that we
+are starting in the ``fslpy`` root directory)::
+
+    cd apidoc
+    rm -rf html
+    sphinx-build . html
diff --git a/fsl/fsleyes/actions/__init__.py b/fsl/fsleyes/actions/__init__.py
index 4cea8ced3..9cb1758e9 100644
--- a/fsl/fsleyes/actions/__init__.py
+++ b/fsl/fsleyes/actions/__init__.py
@@ -14,7 +14,7 @@ performed, enabled and disabled, and may be bound to a GUI menu item or
 button. The :class:`ActionProvider` class represents some entity which can
 perform one or more actions.  As the :class:`.FSLEyesPanel` class derives from
 :class:`ActionProvider` pretty much everything in FSLEyes is an
-:classf:`ActionProvider`. 
+:class:`ActionProvider`. 
 
 
 The :func:`action` and :func:`toggleAction` functions are intended to be used
diff --git a/fsl/fsleyes/colourmaps.py b/fsl/fsleyes/colourmaps.py
index 0de096d15..90daf9f2c 100644
--- a/fsl/fsleyes/colourmaps.py
+++ b/fsl/fsleyes/colourmaps.py
@@ -997,7 +997,7 @@ class LookupTable(props.HasProperties):
 
     def getByName(self, name):
         """Returns the :class:`LutLabel` instance associated with the given
-        ``name``, or ``None`` if there is no ``LutLabel`. The name comparison
+        ``name``, or ``None`` if there is no ``LutLabel``. The name comparison
         is case-insensitive.
         """
         name = name.lower()
diff --git a/fsl/fsleyes/controls/clusterpanel.py b/fsl/fsleyes/controls/clusterpanel.py
index e30e737f3..77f8a5f2a 100644
--- a/fsl/fsleyes/controls/clusterpanel.py
+++ b/fsl/fsleyes/controls/clusterpanel.py
@@ -318,7 +318,7 @@ class ClusterPanel(fslpanel.FSLEyesPanel):
         .. note:: This method assumes that the given ``overlay`` is an
                   :class:`.Image` which has the same voxel dimensions as,
                   and shares the the same world coordinate system as the
-                 ``featImage``.
+                  ``featImage``.
 
         
         :arg overlay:   The overlay for which clusters are currently being
diff --git a/fsl/fsleyes/controls/overlaydisplaytoolbar.py b/fsl/fsleyes/controls/overlaydisplaytoolbar.py
index bf8d6c0fb..72ad90ea9 100644
--- a/fsl/fsleyes/controls/overlaydisplaytoolbar.py
+++ b/fsl/fsleyes/controls/overlaydisplaytoolbar.py
@@ -50,14 +50,14 @@ class OverlayDisplayToolBar(fsltoolbar.FSLEyesToolBar):
     .. autosummary::
        :nosignatures:
 
-       __makeDisplayTools
-       __makeVolumeOptsTools
-       __makeMaskOptsTools
-       __makeLabelOptsTools
-       __makeVectorOptsTools
-       __makeRGBVectorOptsTools
-       __makeLineVectorOptsTools
-       __makeModelOptsTools
+       _OverlayDisplayToolBar__makeDisplayTools
+       _OverlayDisplayToolBar__makeVolumeOptsTools
+       _OverlayDisplayToolBar__makeMaskOptsTools
+       _OverlayDisplayToolBar__makeLabelOptsTools
+       _OverlayDisplayToolBar__makeVectorOptsTools
+       _OverlayDisplayToolBar__makeRGBVectorOptsTools
+       _OverlayDisplayToolBar__makeLineVectorOptsTools
+       _OverlayDisplayToolBar__makeModelOptsTools
     """
     
     def __init__(self, parent, overlayList, displayCtx, viewPanel):
diff --git a/fsl/fsleyes/gl/gl21/gllinevector_funcs.py b/fsl/fsleyes/gl/gl21/gllinevector_funcs.py
index a523ef183..890f68856 100644
--- a/fsl/fsleyes/gl/gl21/gllinevector_funcs.py
+++ b/fsl/fsleyes/gl/gl21/gllinevector_funcs.py
@@ -40,7 +40,7 @@ log = logging.getLogger(__name__)
 def init(self):
     """Compiles and configures the vertex/fragment shaders used to render the
     ``GLLineVector`` via calls to :func:`compileShaders` and
-    :func:`updateShaderState.
+    :func:`updateShaderState`.
     """
     
     self.shader = None
diff --git a/fsl/fsleyes/gl/glvector.py b/fsl/fsleyes/gl/glvector.py
index 94dab3d86..3574a7bc2 100644
--- a/fsl/fsleyes/gl/glvector.py
+++ b/fsl/fsleyes/gl/glvector.py
@@ -622,8 +622,8 @@ class GLVector(globject.GLImageObject):
     def preDraw(self):
         """Must be called by subclass implementations.
 
-        Ensures that all of the textures used by this ``GLVector``are bound to
-        their corresponding texture units.
+        Ensures that all of the textures used by this ``GLVector`` are bound
+        to their corresponding texture units.
         """
         
         self.imageTexture   .bindTexture(gl.GL_TEXTURE0)
diff --git a/fsl/fsleyes/gl/shaders/arbp/__init__.py b/fsl/fsleyes/gl/shaders/arbp/__init__.py
index e69de29bb..089e5688e 100644
--- a/fsl/fsleyes/gl/shaders/arbp/__init__.py
+++ b/fsl/fsleyes/gl/shaders/arbp/__init__.py
@@ -0,0 +1,14 @@
+#!/usr/bin/env python
+#
+# __init__.py - ARB vertex/fragment program management.
+#
+# Author: Paul McCarthy <pauldmccarthy@gmail.com>
+#
+"""The ``arbp`` package is the home of the :class:`.ARBPShader` class, a class
+which may be used to manage OpenGL ``ARB_vertex_program`` and
+``ARB_fragment_program`` shader programs.  The :class:`.ARBPShader` class is
+defined in the :mod:`.program` module, and uses some functions defined in the
+:mod:`.parse` module.
+
+See also the :mod:`.glsl` package.
+"""
diff --git a/fsl/fsleyes/gl/shaders/arbp/parse.py b/fsl/fsleyes/gl/shaders/arbp/parse.py
index 3228117b3..418ce7e42 100644
--- a/fsl/fsleyes/gl/shaders/arbp/parse.py
+++ b/fsl/fsleyes/gl/shaders/arbp/parse.py
@@ -54,7 +54,7 @@ from a 3D image texture::
 
 
 And the corresponding fragment program, which looks up the voxel value
-and colours the fragment accordingly:
+and colours the fragment accordingly::
 
 
     !!ARBfp1.0
diff --git a/fsl/fsleyes/gl/shaders/arbp/program.py b/fsl/fsleyes/gl/shaders/arbp/program.py
index fa762ece8..c11c9e171 100644
--- a/fsl/fsleyes/gl/shaders/arbp/program.py
+++ b/fsl/fsleyes/gl/shaders/arbp/program.py
@@ -211,8 +211,8 @@ class ARBPShader(object):
         """Sets the value of the specified vertex program parameter.
 
         .. note:: It is assumed that the value is either a sequence of length
-        4 (for vector parameters), or a ``numpy`` array of shape ``(n, 4)``
-        (for matrix parameters).
+                  4 (for vector parameters), or a ``numpy`` array of shape 
+                  ``(n, 4)`` (for matrix parameters).
         """
 
         pos   = self.vertParamPositions[name]
diff --git a/fsl/fsleyes/gl/shaders/glsl/__init__.py b/fsl/fsleyes/gl/shaders/glsl/__init__.py
index e69de29bb..60c05774d 100644
--- a/fsl/fsleyes/gl/shaders/glsl/__init__.py
+++ b/fsl/fsleyes/gl/shaders/glsl/__init__.py
@@ -0,0 +1,13 @@
+#!/usr/bin/env python
+#
+# __init__.py - GLSL shader program management.
+#
+# Author: Paul McCarthy <pauldmccarthy@gmail.com>
+#
+"""The ``glsl`` package is the home of the :class:`.GLSLShader` class, a class
+which may be used to manage GLSL shader programs. The :class:`.GLSLShader`
+class is defined in the :mod:`.program` module, and uses some functions
+defined in the :mod:`.parse` module.
+
+See also the :mod:`.arbp` package.
+"""
diff --git a/fsl/fsleyes/gl/shaders/glsl/parse.py b/fsl/fsleyes/gl/shaders/glsl/parse.py
index 0fd381abf..7fff5d14d 100644
--- a/fsl/fsleyes/gl/shaders/glsl/parse.py
+++ b/fsl/fsleyes/gl/shaders/glsl/parse.py
@@ -111,10 +111,11 @@ STRUCT     = pp.Literal("struct").suppress()
 def getDeclarations(code):
     """Get all declarations prefixed with a storage qualifier.
     
-    Code example
-    ------------
-    uniform lowp vec4 fg_color = vec4(1),
-                      bg_color = vec4(vec3(0),1);
+    *Code example*
+
+    ::
+        uniform lowp vec4 fg_color = vec4(1),
+                          bg_color = vec4(vec3(0),1);
     """
 
     # Callable expression
diff --git a/fsl/fsleyes/gl/shaders/glsl/program.py b/fsl/fsleyes/gl/shaders/glsl/program.py
index 9e3c381c7..a21ab6630 100644
--- a/fsl/fsleyes/gl/shaders/glsl/program.py
+++ b/fsl/fsleyes/gl/shaders/glsl/program.py
@@ -4,7 +4,7 @@
 #
 # Author: Paul McCarthy <pauldmccarthy@gmail.com>
 #
-"""This module provides he :class:`GLSLShader` class, which encapsulates
+"""This module provides the :class:`GLSLShader` class, which encapsulates
 a GLSL shader program comprising a vertex shader and a fragment shader.
 """
 
@@ -232,7 +232,7 @@ class GLSLShader(object):
 
 
     def destroy(self):
-        """Deletes all GL resources managed by this ``GLSLShader`. """
+        """Deletes all GL resources managed by this ``GLSLShader``. """
         gl.glDeleteProgram(self.program)
 
         for buf in self.buffers.values():
diff --git a/fsl/fsleyes/plotting/__init__.py b/fsl/fsleyes/plotting/__init__.py
index 4372ba8ec..101526f0a 100644
--- a/fsl/fsleyes/plotting/__init__.py
+++ b/fsl/fsleyes/plotting/__init__.py
@@ -6,7 +6,14 @@
 #
 """The ``plotting`` package contains the :class:`.DataSeries` class, and
 all of its sub-classes. These classes are used by :class:`.PlotPanel` views
-for plotting data.
+for plotting data, and are defined in the following sub-modules:
+
+.. autosummary::
+
+   ~fsl.fsleyes.plotting.dataseries
+   ~fsl.fsleyes.plotting.timeseries
+   ~fsl.fsleyes.plotting.histogramseries
+   ~fsl.fsleyes.plotting.powerspectrumseries
 """
 
 import dataseries
diff --git a/fsl/fsleyes/plotting/powerspectrumseries.py b/fsl/fsleyes/plotting/powerspectrumseries.py
index fa8aefdbe..dc9daaecd 100644
--- a/fsl/fsleyes/plotting/powerspectrumseries.py
+++ b/fsl/fsleyes/plotting/powerspectrumseries.py
@@ -10,7 +10,7 @@ by the :class:`.PowerSpectrumPanel` for plotting power spectra.
 The following classes are provided:
 
 .. autosummary::
-   :nosignature:
+   :nosignatures:
 
    PowerSpectrumSeries
    VoxelPowerSpectrumSeries
diff --git a/fsl/fsleyes/plotting/timeseries.py b/fsl/fsleyes/plotting/timeseries.py
index 5eefdb388..7b78d628f 100644
--- a/fsl/fsleyes/plotting/timeseries.py
+++ b/fsl/fsleyes/plotting/timeseries.py
@@ -13,7 +13,6 @@ are use by the :class:`.TimeSeriesPanel`. The following classes are provided:
    TimeSeries
    VoxelTimeSeries
    FEATTimeSeries
-   FEATModelTimeSeries
    FEATPartialFitTimeSeries
    FEATEVTimeSeries
    FEATResidualTimeSeries
diff --git a/fsl/fsleyes/views/plotpanel.py b/fsl/fsleyes/views/plotpanel.py
index 8350d1797..a234b1d83 100644
--- a/fsl/fsleyes/views/plotpanel.py
+++ b/fsl/fsleyes/views/plotpanel.py
@@ -903,10 +903,11 @@ class OverlayPlotPanel(PlotPanel):
            property on the corresponding target.
 
         This method must therefore return a tuple containing:
-         - A :class:`.DataSeries` instance, or ``None`` if the overlay
-           is incompatible.
-         - A list of *target* instances.
-         * A list of *property names*.
+        
+          - A :class:`.DataSeries` instance, or ``None`` if the overlay
+            is incompatible.
+          - A list of *target* instances.
+          - A list of *property names*.
         
         The target and property name lists must have the same length.
         """
diff --git a/fsl/fsleyes/views/viewpanel.py b/fsl/fsleyes/views/viewpanel.py
index fb514c611..5c8901745 100644
--- a/fsl/fsleyes/views/viewpanel.py
+++ b/fsl/fsleyes/views/viewpanel.py
@@ -69,7 +69,7 @@ class ViewPanel(fslpanel.FSLEyesPanel):
     **Programming interface**
 
 
-    The following methods are available on a ``Viewpanel` for programmatically
+    The following methods are available on a ``Viewpanel`` for programmatically
     controlling its display and layout:
 
 
-- 
GitLab