1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176
|
.. include:: ../links.inc
.. _advanced_setup:
Advanced setup of MNE-Python
============================
.. contents::
:local:
:depth: 1
Using MNE-Python with IPython / Jupyter notebooks
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
When using MNE-Python within IPython or a Jupyter notebook, we strongly
recommend using the Qt matplotlib backend for fast and correct rendering. On
Linux, for example, Qt is the only matplotlib backend for which 3D rendering
will work correctly. On macOS, certain matplotlib functions might not work as
expected on backends other than Qt. Enabling Qt can be accomplished when
starting IPython from a terminal:
.. code-block:: console
$ ipython --matplotlib=qt
or in a Jupyter Notebook, you can use the "magic" command:
.. code-block:: ipython
In [1]: %matplotlib qt
This will create separate pop-up windows for each figure, and has the advantage
that the 3D plots will retain rich interactivity (so, for example, you can
click-and-drag to rotate cortical surface activation maps).
If you are creating a static notebook or simply prefer Jupyter's inline plot
display, MNE-Python will work with the standard "inline" magic:
.. code-block:: ipython
In [1]: %matplotlib inline
but some functionality will be lost. For example, mayavi scenes will still
pop-up a separate window, but only one window at a time is possible, and
interactivity within the scene is limited in non-blocking plot calls.
.. admonition:: |windows| Windows
:class: note
If you are using MNE-Python on Windows through IPython or Jupyter, you might
also have to use the IPython magic command ``%gui qt`` after importing
MNE-Python, Mayavi or PySurfer (see `here
<https://github.com/ipython/ipython/issues/10384>`_). For example:
.. code-block:: ipython
In [1]: from mayavi import mlab
In [2]: %gui qt
If you use another Python setup and you encounter some difficulties please
report them on the `MNE mailing list`_ or on the `GitHub issues page`_ to get
assistance.
.. _installing_master:
Using the development version of MNE-Python (latest master)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
If you want access to the latest features and bugfixes, you can easily switch
from the stable version of MNE-Python to the current development version.
.. warning:: In between releases, function and class APIs can change without
warning.
For a one-time update to latest master, make sure you're in the conda
environment where MNE-Python is installed (if you followed the default install
instructions, this will be ``base``), and use ``pip`` to upgrade:
.. code-block:: console
$ conda activate name_of_my_mne_environment
$ pip install --upgrade --no-deps git+https://github.com/mne-tools/mne-python.git
If you plan to contribute to MNE-Python, or just prefer to use git rather than
pip to make frequent updates, check out the :ref:`contributing guide
<contributing>`.
.. _other-py-distros:
Using MNE-Python with other Python distributions
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
While the `Anaconda`_ Python distribution provides many conveniences, other
distributions of Python should also work with MNE-Python. In particular,
`Miniconda`_ is a lightweight alternative to Anaconda that is fully compatible;
like Anaconda, Miniconda includes the ``conda`` command line tool for
installing new packages and managing environments; unlike Anaconda, Miniconda
starts off with a minimal set of around 30 packages instead of Anaconda's
hundreds. See the `installation instructions for Miniconda`_ for more info.
It is also possible to use a system-level installation of Python (version 3.5
or higher) and use ``pip`` to install MNE-Python and its dependencies, using
the provided `requirements file`_:
.. code-block:: console
curl --remote-name https://raw.githubusercontent.com/mne-tools/mne-python/master/requirements.txt
pip install --user requirements.txt
Other configurations will probably also work, but we may be unable to offer
support if you encounter difficulties related to your particular Python
installation choices.
.. _CUDA:
Using MNE-Python with CUDA (NVIDIA GPU acceleration)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Some operations in MNE-Python can utilize `NVIDIA CUDA GPU processing`_ to
speed up some operations (e.g. FIR filtering) by roughly an order of magnitude.
To use CUDA, first ensure that you are running the `NVIDIA proprietary
drivers`_ on your operating system, and then do:
.. code-block:: console
$ conda install cupy
$ MNE_USE_CUDA=true python -c "import mne; mne.cuda.init_cuda(verbose=True)"
Enabling CUDA with 1.55 GB available memory
If you receive a message reporting the GPU's available memory, CuPy_
is working properly. To permanently enable CUDA in MNE, you can do::
>>> mne.utils.set_config('MNE_USE_CUDA', 'true') # doctest: +SKIP
You can then test MNE CUDA support by running the associated test:
.. code-block:: console
$ pytest mne/tests/test_filter.py -k cuda
If the tests pass, then CUDA should work in MNE. You can use CUDA in methods
that state that they allow passing ``n_jobs='cuda'``, such as
:meth:`mne.io.Raw.filter` and :meth:`mne.io.Raw.resample`,
and they should run faster than the CPU-based multithreading such as
``n_jobs=8``.
Off-screen rendering in MNE-Python on Linux with MESA
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
On remote systems, it might be possible to use MESA software rendering
(such as ``llvmpipe`` or ``swr``) for 3D visualization (with some tweaks).
For example, on CentOS 7.5 you might be able to use an environment variable
to force MESA to use modern OpenGL by using this before executing
``spyder`` or ``python``:
.. code-block:: console
$ export MESA_GL_VERSION_OVERRIDE=3.3
Also, it's possible that different software rending backends might perform
better than others, such as using the ``llvmpipe`` backend rather than ``swr``.
Troubleshooting 3D plots in MNE-Python
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
If you run into trouble when visualizing source estimates (or anything else
using mayavi), you can try setting a couple of environment variables at the
beginning of your script, session, or notebook::
>>> import os
>>> os.environ['ETS_TOOLKIT'] = 'qt4'
>>> os.environ['QT_API'] = 'pyqt5'
This will tell mayavi to use Qt backend with PyQt bindings, instead of the
default PySide. For more information, see
http://docs.enthought.com/mayavi/mayavi/building_applications.html#integrating-in-a-qt-application.
|