Changelog
=========

.. currentmodule:: surfer

Version 0.11.0
--------------

- Minimum Python version increased to 3.6
- Add support to turn off full-screen antialiasing, which can be problematic on
  some drivers (e.g., MESA software rendering on Linux)
- Simplification and refactoring of vector-valued data plotting
- Removal of unnecessary ``info`` log messages about smoothing matrix and
  colormap generation (changed to ``debug`` level)
- Clean up of exit functions like ``__del__`` to avoid segfaults


Version 0.10.0
--------------

- Added an option to smooth to nearest vertex in :meth:`Brain.add_data` using
  ``smoothing_steps='nearest'``
- Added options for using offscreen mode
- Improved integration with Jupyter notebook
- Avoided view changes when using :meth:`Brain.add_foci`

Version 0.9
-----------

- Fixed transparency issues with colormaps with
  :meth:`Brain.scale_data_colormap`
- Added an example of using custom colors
- Added options for choosing units for :class:`Brain` (``m`` or ``mm``)

Version 0.8
-----------

- The surface geometry that is displayed can now be changed after initializing
  a ``Brain`` instance with e.g. ``brain.set_surf("smoothwm")``.
- Allowed PySurfer to use custom matplotlib colormap objects or the names of
  custom colormaps that have been registered with matplotlib.
- Added four new colormaps from ``seaborn``: ``rocket``, ``mako``, ``icefire``,
  and ``vlag``.
- Terrain interaction is now possible via the ``interaction`` keyword argument.
- An API reference page is now available.
- Support is now provided for visualizing vector-valued (3 values per vertex)
  data.

Version 0.7
-----------

- Support for Python 3.3 and up.
- A new ``alpha`` keyword to the ``Brain`` constructor now controls
  opacity of the rendered brain surface.
- The ``curv`` keyword to the ``Brain`` constructor has been
  deprecated. To replicate previous behavior when ``curv`` was set to
  ``True`` simply omit the ``curv`` keyword. To replicate previous
  behavior when ``curv`` was set to ``False``, simply set the
  ``cortex`` keyword to None. To ease transition the ``curv`` argument
  will still be caught and processed, but it will be removed in a
  future release.
- The ``cortex`` keyword to the ``Brain`` constructor now also accepts
  a valid color specification (such as a 3-tuple with RGB values or a
  color name) to render the cortical surface in that color without
  rendering binary curvature values. Additionally it now also accepts
  a dictionary with keyword arguments that are passed on to the call
  to ``mlab.pipeline.surface``.
- ``Brain.save_movie`` now uses the ``imageio`` library, eliminating the need
  to manually install ``ffmpeg``. ``imageio`` has been added as an optional
  dependency which can be installed with
  ``$ pip install pysurfer[save_movie]``.
- ``Brain.save_image`` now has the option to save with alpha channel and
  antialiasing.

Version 0.6
-----------

- Values that were previously selected using a ``config_opts``
  dictionary in the ``Brain`` constructor are now keyword arguments.
  This should make it easier to use tab-completion in IPython, and will
  generally simplify your scripts. To ease transition, a ``config_opts``
  argument will still be caught, and its entries will be used (overriding
  the keyword arguments), but it will be removed in a future release.
- The ability to set default values in a config file has been removed.
  While convenient, this approach encourages code that is not fully
  reproducible. While existing code that was written expecting a config
  file will still run, the visualization will fall back to default values.
  These should be updated directly in your plotting scripts.
- Figure size is now specified only through the ``size`` keyword argument
  of :class:`Brain`. To make a rectangular window, pass a ``(width, height)``
  tuple. Passing a single value to ``size`` will still make a square window.
- The ``cortex`` keyword argument can now be a mayavi colormap name or
  a ``(colormap, min, max, reverse)`` tuple for full control.
- Morphometry plotting was made more flexible with the ability to pass
  a specific colormap and anchor points for that colormap. Additionally,
  the default anchor points now use robust statistics to give better
  values.
- Contour overlay plotting was made more flexible by adding keyword arguments
  to control whether a colorbar should be shown and whether existing contour
  overlays should be removed before plotting.

Version 0.5
-----------

- Added control over the width of outlines when plotting the borders of
  annotations or labels.
- The visual display of the surfaces was improved by using surface normals.
- Made colormap specification in Brain.add_data and Brain.add_contour_overlay
  more flexible, with better defaults.
- Brain.save_montage() can now produce 2d grids of views in addition to
  horizontal and vertical arrangements.
- Fixed some installation issues and added explicit checks for dependencies
  on install.
- Updated the installation docs with information about getting PySurfer
  running on OSX, and changed the official environment recommendation to
  Anaconda.

Version 0.4
-----------

Enhancements
~~~~~~~~~~~~

- Display data from both hemispheres simultaneously
- Display multiple views simultaneously
- Toggling Mayavi toolbars
- Use nibabel for IO functions

Version 0.3.1
-------------

Fixes
~~~~~

- Reverted change in io.py that broke Python 2.6 compatibility
- Updated traitsui import while keeping backgrounds compatibility

Version 0.3
-----------

Enhancements
~~~~~~~~~~~~

- TimeViewer GUI to control data exploration in the time dimension
- Support for reading and visualizing MEG data from MNE
- Function to project volume-based data using mri_vol2surf
- Label routines can read scalar data and threshold visualization
- Utility function to smooth overlay data along the cortical manifold
- Example for displaying parcellation-based ROI analysis results
- Example for displaying ROI labels
- Example for plotting probabilistic labels
- Improved color flexibility using matplotlib for many visualization modes
- Exposed alpha channel for many visualization modes

Fixes
~~~~~

- Big-endian overlay data should now display properly on 64-bit systems.
- Colorbar text displays properly on light backgrounds
- Lights are oriented depending on hemisphere so surfaces are equally lit
