Commit f0b454bc authored by Andreas Tille's avatar Andreas Tille

New upstream version 0.9.0

parent ae6cbb1c
version: 2
jobs:
build:
docker:
- image: circleci/python:3.6-jessie
steps:
# Get our data and merge with upstream
- checkout
- run: echo $(git log -1 --pretty=%B) | tee gitlog.txt
- run: echo ${CI_PULL_REQUEST//*pull\//} | tee merge.txt
- run:
command: |
if [[ $(cat merge.txt) != "" ]]; then
echo "Merging $(cat merge.txt)";
git pull --ff-only origin "refs/pull/$(cat merge.txt)/merge";
fi
# Load our data
- restore_cache:
keys:
- data-cache
- pip-cache
# Fix libgcc_s.so.1 pthread_cancel bug:
# https://github.com/ContinuumIO/anaconda-issues/issues/9190#issuecomment-386508136
# https://github.com/golemfactory/golem/issues/1019
- run: sudo apt-get install libgl1-mesa-glx libegl1-mesa libxrandr2 libxrandr2 libxss1 libxcursor1 libxcomposite1 libasound2 libxi6 libxtst6 qt5-default
- run: echo "export SUBJECTS_DIR=~/subjects" >> $BASH_ENV
- run: echo "export PATH=~/.local/bin:$PATH" >> $BASH_ENV
- run: echo "export LD_PRELOAD=/usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.4200.1" >> $BASH_ENV
# Spin up Xvfb
- run: echo "export DISPLAY=:99" >> $BASH_ENV
- run: /sbin/start-stop-daemon --start --quiet --pidfile /tmp/custom_xvfb_99.pid --make-pidfile --background --exec /usr/bin/Xvfb -- :99 -screen 0 1400x900x24 -ac +extension GLX +render -noreset;
# Python env
- run: pip install -U --user --progress-bar off numpy scipy matplotlib vtk PyQt5 sip PyQt5-sip nibabel sphinx numpydoc pillow imageio https://api.github.com/repos/sphinx-gallery/sphinx-gallery/zipball/master
- run: pip install -U --user --progress-bar off mayavi
- save_cache:
key: pip-cache
paths:
- "~/.cache/pip"
- run: python setup.py develop --user
# Check libs
- run: LIBGL_DEBUG=verbose python -c "from mayavi import mlab; import matplotlib.pyplot as plt; mlab.figure(); plt.figure()"
- run: echo $SUBJECTS_DIR
- run:
command: |
if [ ! -d $SUBJECTS_DIR ]; then
mkdir $SUBJECTS_DIR;
cd $SUBJECTS_DIR;
wget http://faculty.washington.edu/larsoner/fsaverage_min.zip;
unzip fsaverage_min.zip;
rm fsaverage_min.zip;
fi;
- run: ls $SUBJECTS_DIR
- run: cd doc && sphinx-build -D plot_gallery=1 -D sphinx_gallery_conf.filename_pattern=^\(\(?\!plot_fmri_activation_volume\|plot_morphometry\|plot_label\.py\|plot_probabilistic_label\|plot_resting_correlations\|plot_transparent_brain\|rotate_animation\|save_movie\|save_views\).\)*\$ -b html -d _build/doctrees . _build/html
- store_artifacts:
path: doc/_build/html/
destination: html
- save_cache:
key: data-cache
paths:
- "~/subjects"
[run]
branch = True
source = surfer
include = */surfer/*
omit =
*/setup.py
*.pyc
*.pyo
*.log
*~
.#*
*.swp
*.orig
build
dist/
doc/_build/
doc/build/
doc/examples/
doc/auto_examples/
doc/generated/
doc/example_data
doc/modules/generated/
doc/documentation/pysurfer_usage.txt
......@@ -21,3 +24,7 @@ doc/samples
pysurfer.egg-info
*.avi
.tmp/*.png
examples/example_data/coord-lh.label
.ipynb_checkpoints/
.cache/
.pytest_cache/
Michael Waskom <mwaskom@stanford.edu> mwaskom <mwaskom@stanford.edu> Michael Waskom <mwaskom@mit.edu> Michael Waskom <mwaskom@nyu.edu>
language: c
sudo: false
env:
global: PYTHON_VERSION=3.6
CONDA_DEPENDENCIES="numpy scipy matplotlib pyqt>=5.9 coverage pytest pytest-cov flake8 pygments traits traitsui pyface"
PIP_DEPENDENCIES="codecov pytest-sugar pytest-faulthandler nibabel imageio"
DISPLAY=:99.0
matrix:
include:
# Full
- os: linux
addons:
apt:
packages:
- mencoder
# 2.7, no mencoder
- os: linux
env: PYTHON_VERSION=2.7
CONDA_DEPENDENCIES="numpy scipy matplotlib coverage pytest pytest-cov flake8 mayavi"
PIP_DEPENDENCIES="codecov pytest-sugar faulthandler pytest-faulthandler nibabel imageio"
# OSX
- os: osx
# Setup anaconda
before_install:
# Rvm overrides cd with a function so that it can hook into it to run
# some scripts, see https://github.com/travis-ci/travis-ci/issues/8703
- if [ "${TRAVIS_OS_NAME}" == "osx" ]; then
unset -f cd;
fi;
- if [ "${TRAVIS_OS_NAME}" == "linux" ]; then
echo "Starting Xvfb...";
/sbin/start-stop-daemon --start --quiet --pidfile /tmp/custom_xvfb_99.pid --make-pidfile --background --exec /usr/bin/Xvfb -- :99 -screen 0 1400x900x24 -ac +extension GLX +render;
fi;
- git clone https://github.com/astropy/ci-helpers.git
- source ci-helpers/travis/setup_conda.sh
- if [ "$PYTHON_VERSION" != "2.7" ]; then
pip install vtk;
pip install mayavi;
fi;
install:
- python setup.py build
- python setup.py install
- SRC_DIR=$(pwd)
before_script:
# Let's create a (fake) display on Travis, and let's use a funny resolution
- cd ~
- wget --quiet http://faculty.washington.edu/larsoner/fsaverage_min.zip
- mkdir subjects
- cd subjects
- unzip ../fsaverage_min.zip
- cd ..
- export SUBJECTS_DIR="${PWD}/subjects"
- if [[ $PIP_DEPENDENCIES == *"imageio"* ]] || [ ! -z "$CONDA_ENVIRONMENT" ]; then
python -c "import imageio; imageio.plugins.ffmpeg.download()";
fi
script:
- cd ${SRC_DIR}
- pytest surfer --cov=surfer -v
- make flake
after_success:
- codecov
PySurfer Changes
================
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
-------------
......
Copyright (c) 2011, Neuroimaging in Python Team
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
* Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.
* Neither the name of the <organization> nor the
names of its contributors may be used to endorse or promote products
derived from this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
include LICENSE
# simple makefile to simplify repetetive build env management tasks under posix
# caution: testing won't work on windows, see README
PYTHON ?= python
NOSETESTS ?= nosetests
CTAGS ?= ctags
all: clean inplace test
clean-pyc:
find . -name "*.pyc" | xargs rm -f
clean-so:
find . -name "*.so" | xargs rm -f
find . -name "*.pyd" | xargs rm -f
clean-build:
rm -rf build
clean-ctags:
rm -f tags
clean: clean-build clean-pyc clean-so clean-ctags
flake:
@if command -v flake8 > /dev/null; then \
flake8 --exclude surfer/cm.py --count surfer examples; \
fi
in: inplace # just a shortcut
inplace:
$(PYTHON) setup.py build_ext -i
pytest:
rm -f .coverage
pytest surfer
test: clean pytest flake
.. -*- mode: rst -*-
PySurfer: Neuroimaging visualization in Python
==============================================
PySurfer
========
<img src=doc/logo_files/pysurfer_logo_small_crop.png width=500px style="horizontal-align:middle">
PySurfer is a Python module for interacting with a cortical surface
representations of neuroimaging data from Freesurfer. It extends Mayavi’s
powerful visualization engine with a high-level interface for working with
MRI and MEG data.
PySurfer is a Python package for interacting with a cortical surface
representations of neuroimaging data. It extends Mayavi's powerful
visualization engine with a high-level interface for working with MRI and MEG
data.
PySurfer offers both a command-line interface designed to broadly replicate
Freesurfer’s Tksurfer program as well as a Python library for writing scripts
to efficiently explore complex datasets.
PySurfer offers both a command-line interface designed to broadly the
Freesurfer Tksurfer program and a Python library for writing scripts to
efficiently explore complex datasets and prepare publication-ready figures.
To goal of the project is to facilitate the production of figures that are
both beautiful and scientifically informative.
To goal of the project is to facilitate the production of figures that are both
beautiful and scientifically informative.
Important Links
---------------
......@@ -22,45 +22,43 @@ Important Links
- Online documentation (stable): http://pysurfer.github.com/
- NITRC page: http://www.nitrc.org/projects/pysurfer
- Freesurfer: http://surfer.nmr.mgh.harvard.edu/
- Mailing list: http://mail.scipy.org/mailman/listinfo/nipy-devel
- Mailing list: https://mail.python.org/mailman/listinfo/neuroimaging
Install
-------
This packages uses distutils, which is the default way of installing python
modules. To install in your home directory, use::
python setup.py install --home
To install for all users on Unix/Linux::
This packages uses setuptools. To install it for all users, run:
python setup.py build
sudo python setup.py install
For information about dependencies, please see the online documentation:
http://pysurfer.github.com/install.html
If you do not have sudo privileges, you can install locally:
python setup.py install --home
For information about dependencies, please see the [online
documentation](http://pysurfer.github.com/install.html)
License
-------
Available under the BSD (3-clause) license.
Available under the Revised BSD (3-clause) license.
Testing
-------
You can launch the test suite for the io library using nosetests from the
source folder.
You can launch the test suite by running `nosetests` from the source folder.
For the visualization module the best way to test is to build the documentation,
which will run the example scripts and automatically generate static image output.
From the source directory::
Another way to test is to build the documentation, which will run the example
scripts and automatically generate static image output. From the source
directory:
cd doc/
make clean
make html
The resulting documentation will live at _build/html/index.html, which can
be compared to the online docs.
The resulting documentation will live at _build/html/index.html, which can be
compared to the online docs.
Either method will work only if you have Freesurfer installed on your
machine with a valid SUBJECTS_DIR folder.
Either method will work only if you have Freesurfer installed on your machine
with a valid SUBJECTS\_DIR folder.
environment:
matrix:
- PYTHON: "C:\\Python36-x64"
PYTHON_VERSION: "3.6"
PYTHON_ARCH: "64"
install:
- "SET PATH=%PYTHON%;%PYTHON%\\Scripts;%PATH%"
- "python --version"
- "pip install numpy scipy matplotlib nose pillow pytest pytest-cov pytest-faulthandler coverage imageio codecov pyqt5==5.9"
- "pip install traits traitsui pyface vtk mayavi nibabel"
- "python -c \"import imageio; imageio.plugins.ffmpeg.download()\""
- "powershell make/get_fsaverage.ps1"
- "python setup.py develop"
- "SET SUBJECTS_DIR=%CD%\\subjects"
- "ls %CD%\\subjects"
build: false # Not a C# project, build stuff at the test step instead.
test_script:
# Run the project tests
- "pytest surfer --cov=surfer -v"
on_success:
- "codecov"
......@@ -7,6 +7,9 @@ IPython on itself to then drop the user into an IPython environment.
import os
import sys
from surfer._commandline import parser
from distutils.version import LooseVersion
import importlib
if __name__ == '__main__':
is_ipython = False
......@@ -24,10 +27,16 @@ if __name__ == '__main__':
# boot up mlab/IPython
if len(sys.argv) > 3:
subjects_dir = os.environ['SUBJECTS_DIR']
surf_file = os.path.join(subjects_dir,
"%s/surf/%s.%s" % tuple(sys.argv[1:4]))
if not os.path.exists(surf_file):
sys.exit("ERROR: Could not find %s" % surf_file)
if sys.argv[2] in ['both', 'split']:
hemi_checks = ['lh', 'rh']
else:
hemi_checks = [sys.argv[2]]
for h in hemi_checks:
surf_file = os.path.join(subjects_dir,
"%s/surf/%s.%s" % (sys.argv[1], h,
sys.argv[3]))
if not os.path.exists(surf_file):
sys.exit("ERROR: Could not find %s" % surf_file)
if not is_ipython:
# Parse the args so that --help exits back to the shell
......@@ -43,12 +52,18 @@ if __name__ == '__main__':
path = os.path.split(__file__)[0]
load_file = __file__
import IPython
if IPython.__version__ < '0.11':
if LooseVersion(IPython.__version__) < '0.11':
flag = '-nobanner '
flag += '-wthread'
flag += '-wthread '
else:
flag = '--no-banner '
flag += '--gui=wx -i '
try:
gui = 'wx'
importlib.import_module(gui)
except ImportError:
pass
gui = 'qt'
flag += '--gui={gui} -i '.format(gui=gui)
cmd = 'ipython %s ' % (flag + __file__ +
' "%s"' % ' '.join(sys.argv[1:]))
os.system(cmd)
......@@ -57,15 +72,11 @@ if __name__ == '__main__':
from surfer import Brain
# Get a dict of config override options
confkeys = ["size", "background", "cortex"]
argdict = args.__dict__
config_opts = dict([(k, v) for k, v in argdict.items()
if k in confkeys and v])
# Load up the figure and underlying brain object
b = Brain(args.subject_id, args.hemi, args.surf, args.curv,
args.title, config_opts=config_opts)
b = Brain(args.subject_id, args.hemi, args.surf, title=args.title,
cortex=args.cortex, alpha=args.alpha, size=args.size,
background=args.background, foreground=args.foreground,
views=args.views)
# Maybe load some morphometry
if args.morphometry is not None:
......@@ -94,10 +105,8 @@ if __name__ == '__main__':
# It's nice to have mlab in the namespace, but we'll import it
# after the other stuff so getting usage is not interminable
try:
from mayavi import mlab
except ImportError:
from enthought.mayavi import mlab
from mayavi import mlab
assert mlab # make pyflakes happy
# Now clean up the namespace a bit
del parser, args
coverage:
precision: 2
round: down
range: "70...100"
status:
project:
default:
target: auto
threshold: 0.01
patch: false
changes: false
comment:
layout: "header, diff, sunburst, uncovered"
behavior: default
......@@ -11,35 +11,51 @@ BUILDDIR = _build
PAPEROPT_a4 = -D latex_paper_size=a4
PAPEROPT_letter = -D latex_paper_size=letter
ALLSPHINXOPTS = -d $(BUILDDIR)/doctrees $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) .
EXAMPLEDIR = examples
.PHONY: help clean html dirhtml singlehtml pickle json htmlhelp qthelp devhelp epub latex latexpdf text man changes linkcheck doctest
.PHONY: help clean html dirhtml pickle json htmlhelp qthelp latex changes linkcheck doctest
help:
@echo "Please use \`make <target>' where <target> is one of"
@echo " html to make standalone HTML files"
@echo " dirhtml to make HTML files named index.html in directories"
@echo " singlehtml to make a single large HTML file"
@echo " pickle to make pickle files"
@echo " json to make JSON files"
@echo " htmlhelp to make HTML files and a HTML help project"
@echo " qthelp to make HTML files and a qthelp project"
@echo " devhelp to make HTML files and a Devhelp project"
@echo " epub to make an epub"
@echo " latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter"
@echo " latexpdf to make LaTeX files and run them through pdflatex"
@echo " text to make text files"
@echo " man to make manual pages"
@echo " changes to make an overview of all changed/added/deprecated items"
@echo " linkcheck to check all external links for integrity"
@echo " doctest to run all doctests embedded in the documentation (if enabled)"
@echo " html_stable to make standalone HTML files (stable version)"
@echo " html_dev to make standalone HTML files (dev version)"
@echo " html_dev-pattern to make standalone HTML files for one example dir (dev version)"
@echo " *-noplot to make standalone HTML files without plotting"
@echo " dirhtml to make HTML files named index.html in directories"
@echo " pickle to make pickle files"
@echo " json to make JSON files"
@echo " htmlhelp to make HTML files and a HTML help project"
@echo " qthelp to make HTML files and a qthelp project"
@echo " latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter"
@echo " changes to make an overview of all changed/added/deprecated items"
@echo " linkcheck to check all external links for integrity"
@echo " doctest to run all doctests embedded in the documentation (if enabled)"
clean:
-rm -rf $(BUILDDIR)/* $(EXAMPLEDIR)/*
-rm -rf $(BUILDDIR)/*
-rm -rf auto_examples
-rm -rf auto_tutorials
-rm -rf generated
-rm -rf *.stc
-rm -rf *.fif
-rm -rf *.nii.gz
html_stable:
$(SPHINXBUILD) -D -b html $(ALLSPHINXOPTS) $(BUILDDIR)/html_stable
@echo
@echo "Build finished. The HTML pages are in $(BUILDDIR)/html_stable."
html_dev:
BUILD_DEV_HTML=1 $(SPHINXBUILD) -b html $(ALLSPHINXOPTS) $(BUILDDIR)/html
@echo
@echo "Build finished. The HTML pages are in $(BUILDDIR)/html"
html_dev-pattern:
BUILD_DEV_HTML=1 $(SPHINXBUILD) -D plot_gallery=1 -D sphinx_gallery_conf.filename_pattern=$(PATTERN) -b html $(ALLSPHINXOPTS) $(BUILDDIR)/html
@echo
@echo "Build finished. The HTML pages are in $(BUILDDIR)/html"
html:
../bin/pysurfer --help > documentation/pysurfer_usage.txt
$(SPHINXBUILD) -b html $(ALLSPHINXOPTS) $(BUILDDIR)/html
html_dev-noplot:
BUILD_DEV_HTML=1 $(SPHINXBUILD) -D plot_gallery=0 -b html $(ALLSPHINXOPTS) $(BUILDDIR)/html
@echo
@echo "Build finished. The HTML pages are in $(BUILDDIR)/html."
......@@ -48,11 +64,6 @@ dirhtml:
@echo
@echo "Build finished. The HTML pages are in $(BUILDDIR)/dirhtml."
singlehtml:
$(SPHINXBUILD) -b singlehtml $(ALLSPHINXOPTS) $(BUILDDIR)/singlehtml
@echo
@echo "Build finished. The HTML page is in $(BUILDDIR)/singlehtml."
pickle:
$(SPHINXBUILD) -b pickle $(ALLSPHINXOPTS) $(BUILDDIR)/pickle
@echo
......@@ -74,46 +85,16 @@ qthelp:
@echo
@echo "Build finished; now you can run "qcollectiongenerator" with the" \
".qhcp project file in $(BUILDDIR)/qthelp, like this:"
@echo "# qcollectiongenerator $(BUILDDIR)/qthelp/PySurfer.qhcp"
@echo "To view the help file:"
@echo "# assistant -collectionFile $(BUILDDIR)/qthelp/PySurfer.qhc"
devhelp:
$(SPHINXBUILD) -b devhelp $(ALLSPHINXOPTS) $(BUILDDIR)/devhelp
@echo
@echo "Build finished."
@echo "# qcollectiongenerator $(BUILDDIR)/qthelp/MNE.qhcp"
@echo "To view the help file:"
@echo "# mkdir -p $$HOME/.local/share/devhelp/PySurfer"
@echo "# ln -s $(BUILDDIR)/devhelp $$HOME/.local/share/devhelp/PySurfer"
@echo "# devhelp"
epub:
$(SPHINXBUILD) -b epub $(ALLSPHINXOPTS) $(BUILDDIR)/epub
@echo
@echo "Build finished. The epub file is in $(BUILDDIR)/epub."
@echo "# assistant -collectionFile $(BUILDDIR)/qthelp/MNE.qhc"
latex:
$(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex
@echo
@echo "Build finished; the LaTeX files are in $(BUILDDIR)/latex."
@echo "Run \`make' in that directory to run these through (pdf)latex" \
"(use \`make latexpdf' here to do that automatically)."
latexpdf:
$(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex
@echo "Running LaTeX files through pdflatex..."
make -C $(BUILDDIR)/latex all-pdf
@echo "pdflatex finished; the PDF files are in $(BUILDDIR)/latex."
text:
$(SPHINXBUILD) -b text $(ALLSPHINXOPTS) $(BUILDDIR)/text
@echo
@echo "Build finished. The text files are in $(BUILDDIR)/text."
man:
$(SPHINXBUILD) -b man $(ALLSPHINXOPTS) $(BUILDDIR)/man
@echo
@echo "Build finished. The manual pages are in $(BUILDDIR)/man."
@echo "Run \`make all-pdf' or \`make all-ps' in that directory to" \
"run these through (pdf)latex."
changes:
$(SPHINXBUILD) -b changes $(ALLSPHINXOPTS) $(BUILDDIR)/changes
......@@ -130,3 +111,8 @@ doctest:
$(SPHINXBUILD) -b doctest $(ALLSPHINXOPTS) $(BUILDDIR)/doctest
@echo "Testing of doctests in the sources finished, look at the " \
"results in $(BUILDDIR)/doctest/output.txt."
view:
@python -c "import webbrowser; webbrowser.open_new_tab('file://$(PWD)/$(BUILDDIR)/html/index.html')"
show: view
doc/_static/banner.png

44.5 KB | W: | H:

doc/_static/banner.png

65.9 KB | W: | H:

doc/_static/banner.png
doc/_static/banner.png
doc/_static/banner.png
doc/_static/banner.png
  • 2-up
  • Swipe
  • Onion skin
......@@ -506,3 +506,43 @@ ul.search li div.context {
ul.keywordmatches li.goodmatch a {
font-weight: bold;
}
.sphx-glr-thumbcontainer {
min-height: 320px !important;
margin: 20px !important;
}
.sphx-glr-thumbcontainer .figure {
width: 250px !important;
}
.sphx-glr-thumbcontainer img {
max-height: 250px !important;
width: 250px !important;
}
.sphx-glr-thumbcontainer a.internal {
padding: 270px 10px 0 !important;