|
Size: 19524
Comment:
|
Size: 7747
Comment:
|
| Deletions are marked like this. | Additions are marked like this. |
| Line 2: | Line 2: |
| Line 5: | Line 4: |
| There are currently two scientific Python installations available at the Martinos Center. The more recent instillation is based on the [[http://enthought.com/products/epd.php | Enthought Python Distribution (EPD)|target="_blank"]]. Users of the older [[DevelopersGuide/NMRCenterPython/UsersGuide#legacy_python| "Legacy Scientific Python Installation"]] are encouraged to switch to the EPD based installation, as it is more actively supported and contains more up to date packages. |
There are currently three scientific Python installations available at the Martinos Center. The the most recent installation is the [[https://store.continuum.io/cshop/anaconda/|Anaconda]] distribution. The [[http://enthought.com/products/epd.php|Enthought Python Distribution (EPD)]] and the legacy Python Installation are older; users of these installations are encouraged to switch to the Anaconda based installation, as it is the only one still actively supported and contains more up to date packages. |
| Line 10: | Line 6: |
| If you use Python, make sure to sign up for the [[https://mail.nmr.mgh.harvard.edu/mailman/listinfo/martinos-python | martinos-python mailing list | target="_blank"]] to receive updates regarding the Python installation and discuss Python related issues. |
If you use Python, make sure to sign up for the [[https://mail.nmr.mgh.harvard.edu/mailman/listinfo/martinos-python|martinos-python mailing list]] to receive updates regarding the Python installation and discuss Python related issues. This list is also where requests for module installation should be made. |
| Line 14: | Line 8: |
| === Resources for Learning Python === * [[http://scipy-lectures.github.com|Python Scientific Lecture Notes]] |
|
| Line 15: | Line 11: |
| == EPD Based Scientific Python Installation == | * [[http://www.scipy.org/NumPy_for_Matlab_Users|NumPy for Matlab Users]] * The [[http://meetup.bostonpython.com|Boston Python User Group]] regularly holds meetings and organizes introductory Python classes === Available Python Modules === The following neuroimaging related modules are installed in the Anaconda distribution: * [[http://martinos.org/mne/index.html|mne-python]] for M/EEG analysis * [[http://nipy.sourceforge.net/nibabel|nibabel]] provides access to a large number of neuro-imaging file formats * [[http://nipy.sourceforge.net/nitime|nitime]] for time-series analysis * [[http://code.google.com/p/pydicom|pydicom]] enables you to read, modify and write DICOM files with python code * [[http://pysurfer.github.com|PySurfer]] for visualization and interaction with cortical surface representations of neuroimaging data from FreeSurfer (Requires using environment '''pysurfer''' in anaconda2.7) * [[http://tensorflow.org|TensorFlow]] for machine learning (Requires using either the '''tensorflow''' or '''tensorflow-gpu''' environment in anaconda2.7) If you know of other modules that should be made available to all users, send an e-mail to the [[https://mail.nmr.mgh.harvard.edu/mailman/listinfo/martinos-python|martinos-python mailing list]] Run '''pip list''' to see a full list of modules == Anaconda Based Scientific Python Installation == <<Anchor(anaconda_python)>> === Getting Started === On CentOS 5/6/7 (64-bit) do the following to enable the Anaconda Python installation '''For Python 2.7:''' {{{ setenv PATH /usr/pubsw/packages/python/anaconda2.7/bin:${PATH} }}} There are 3 sub-environments in anaconda2.7: '''pysurfer''', '''tensorflow''', and '''tensorflow-gpu''' To use a sub-environment add to your PATH setenv PATH /usr/pubsw/packages/python/anaconda2.7/envs/''environment''/bin:${PATH} '''For Python 3.6:''' {{{ setenv PATH /usr/pubsw/packages/python/anaconda3.6/bin:${PATH} }}} Only the CentOS7 install is actively maintained. Notes for the python maintainer (person managing anaconda, not users) on saving old environments and creating new ones are [[managing_python|here]] == EPD Based Scientific Python Installation (not-maintained) == |
| Line 19: | Line 64: |
| Line 25: | Line 69: |
or if you use Bash {{{ export PATH=/usr/pubsw/packages/python/epd/bin:${PATH} }}} After this, you can run Python scripts by typing something like {{{ python my_script.py }}} To start an interactive Python ([[http://ipython.org | IPython | target="_blank" ]]) shell type {{{ ipython }}} For an integrated development environment specifically created for scientific Python type (in a bash/tcsh, not IPython) {{{ spyder & }}} this will start [[http://code.google.com/p/spyderlib | Spyder | target="_blank" ]], which lets you edit, run, and debug Python scripts. For new Python users, the built in help is a also very useful. {{attachment:spyder_screenshot_small.png}} === Resources for Learning Python === * [[http://scipy-lectures.github.com | Python Scientific Lecture Notes | target="_blank"]] * [[http://www.scipy.org/NumPy_for_Matlab_Users | NumPy for Matlab Users | target="_blank"]] * The [[http://meetup.bostonpython.com | Boston Python User Group | target="_blank"]] regularly holds meetings and organizes introductory Python classes === Available Python Modules === [[http://enthought.com/products/epd.php | EPD |target="_blank"]] comes with a large number of Python modules; an exhaustive list can be found [[http://enthought.com/products/epdlibraries.php | here | target="_blank"]]. In addition, the following neuroimaging related modules are installed: * [[http://martinos.org/mne/index.html | mne-python | target="_blank"]] for M/EEG analysis * [[http://nipy.sourceforge.net/nibabel | nibabel | target="_blank"]] provides access to a large number of neuro-imaging file formats * [[http://nipy.sourceforge.net/nitime | nitime | target="_blank"]] for time-series analysis * [[http://code.google.com/p/pydicom | pydicom | target="_blank"]] enables you to read, modify and write DICOM files with python code * [[http://pysurfer.github.com | PySurfer | target="_blank"]] for visualization and interaction with cortical surface representations of neuroimaging data from FreeSurfer If you know of other modules that should be made available to all users, send an e-mail to the [[https://mail.nmr.mgh.harvard.edu/mailman/listinfo/martinos-python | martinos-python mailing list | target="_blank"]] === EPD Versions and Installed Modules === The following table aims to give a complete list of all installed EPD versions and modules. The currently stable version is '''epd-7.2-2-rh5-x86_64'''. A different version can used by typing {{{ setenv PATH /usr/pubsw/packages/python/${EPD_VERSION}/bin:${PATH} }}} where EPD_VERSION is one of the installed EPD versions. ||''' Module '''|| ''' epd-7.0-2-rh5-x86_64 '''|| ''' epd-7.1-1-rh5-x86_64 '''|| ''' epd-7.2-2-rh5-x86_64 '''|| ''' epd-7.3-1-rh5-x86_64 '''|| || [[http://biopython.org/wiki/Main_Page | Bio | target="_blank"]] || 1.56 || 1.57 || 1.58 || 1.59 || || [[http://biopython.org/wiki/BioSQL | BioSQL | target="_blank"]] || ? || ? || ? || ? || || [[https://www.dlitz.net/software/pycrypto | Crypto | target="_blank"]] || 2.3 || 2.3 || 2.4.1 || 2.4.1 || || [[http://www.cython.org | Cython | target="_blank"]] || 0.14.1 || 0.14.1 || 0.15.1 || 0.16 || || [[http://ipython.org | IPython | target="_blank"]] || 0.10.1 || 0.11 || 0.12 || 0.12.1 || || [[http://pyopengl.sourceforge.net | OpenGL | target="_blank"]] || 3.0.1 || 3.0.1 || 3.0.1 || 3.0.1 || || [[http://packages.python.org/pyOpenSSL | OpenSSL | target="_blank"]] || 0.11 || 0.12 || 0.12 || 0.12 || || [[http://www.pythonware.com/products/pil | PIL | target="_blank"]] || 1.1.7-3 || 1.1.7-3 || 1.1.7-3 || 1.1.7-3 || || [[http://www.pyside.org | PySide | target="_blank"]] || || 1.0.3 || 1.1.0 || 1.1.0 || || [[http://bonsai.ims.u-tokyo.ac.jp/~mdehoon/software/cluster/software.htm#pycluster | Pycluster | target="_blank"]] || 1.50-2 || 1.50-3 || 1.50-4 || 1.50-4 || || [[http://www.scons.org | SCons | target="_blank"]] || 2.0.1 || 2.0.1 || 2.0.1 || 2.0.1 || || [[http://simpy.sourceforge.net/ | SimPy | target="_blank"]] || 2.1.0-2 || 2.1.0-2 || 2.2 || 2.2 || || [[http://pypi.python.org/pypi/AppInst | appinst | target="_blank"]] || 2.0.4-1 || 2.1.0-1 || 2.1.0-1 || 2.1.1-1 || || [[https://github.com/enthought/apptools | apptools | target="_blank"]] || || 4.0.0 || 4.0.1 || 4.1.0 || || [[https://github.com/ilanschnell/bitarray | bitarray | target="_blank"]] || 0.3.5 || 0.3.5 || 0.3.5 || 0.8.0 || || [[https://github.com/enthought/blockcanvas | blockcanvas | target="_blank"]] || || 4.0.0 || 4.0.1 || 4.0.1 || || [[https://github.com/ilanschnell/bsdiff4 | bsdiff4 | target="_blank"]] || || || 1.0.1 || 1.1.1 || || [[https://github.com/GaelVaroquaux/canica | canica | target="_blank"]] || 0.0.0-py2.7 || || || || || [[http://code.enthought.com/projects/chaco | chaco | target="_blank"]] || || 4.0.0 || 4.1.0 || 4.2.0 || || [[http://code.enthought.com/projects/code_tools.php | codetools | target="_blank"]] || || 4.0.0 || 4.0.0 || 4.0.0 || || [[http://nedbatchelder.com/code/coverage | coverage | target="_blank"]] || 3.4 || 3.5 || 3.5.1 || 3.5.1 || || [[http://pydap.org/ | dap | target="_blank"]] || ? || ? || ? || || || [[http://labix.org/python-dateutil | dateutil | target="_blank"]] || 1.5 || 1.5 || 1.5 || 1.5 || || [[http://code.google.com/p/pydicom | dicom | target="_blank"]] || 0.9.6 || 0.9.6 || 0.9.6 || 0.9.7 || || [[http://docutils.sourceforge.net/ | docutils | target="_blank"]] || 0.7 || 0.7 || 0.8.1 || 0.8.1 || || [[https://github.com/enthought/enstaller | egginst | target="_blank"]] || ? || ? || ? || ? || || [[http://code.enthought.com/projects/enable | enable | target="_blank"]] || || 4.0.0 || 4.1.0 || 4.2.0 || || [[https://github.com/enthought/enaml | enaml | target="_blank"]] || || || || 0.2.0-1 || || enamldoc || || || || ? || || [[https://github.com/enthought/encore | encore | target="_blank"]] || || || || 0.2-2 || || [[https://github.com/enthought/enstaller | enstaller | target="_blank"]] || 4.3.1 || 4.4.0 || 4.4.1 || 4.5.0 || || [[http://code.enthought.com/projects/envisage/ | envisage | target="_blank"]] || || 4.0.0 || 4.1.0 || 4.2.0 || || [[http://epydoc.sourceforge.net | epydoc | target="_blank"]] || 3.0.1 || 3.0.1 || 3.0.1 || 3.0.1 || || [[http://code.enthought.com/projects/ets_dev_tools.php | etsdevtools | target="_blank"]] || || 4.0.0 || 4.0.0 || 4.0.0 || || [[http://foolscap.lothar.com/trac | foolscap | target="_blank"]] || 0.6.1 || 0.6.1 || 0.6.2 || 0.6.3 || || [[http://fwrap.sourceforge.net/ | fwrap | target="_blank"]] || 0.1.1-1 || 0.1.1-2 || 0.1.1-3 || 0.1.1-3 || || [[https://github.com/enthought/graphcanvas | graphcanvas | target="_blank"]] || || 4.0.0 || 4.0.0 || 4.0.0 || || [[http://mercurial.selenic.com/wiki/NotifyExtension | hgext | target="_blank"]] || ? || || || || || [[http://code.google.com/p/html5lib/ | html5lib | target="_blank"]] || 0.90 || 0.90 || 0.90 || 0.90 || || [[http://code.google.com/p/httplib2/ | httplib2 | target="_blank"]] || $Rev: 259 $ || $Rev: 259 $ || $Rev: 259 $ || || || [[http://jinja.pocoo.org | jinja2 | target="_blank"]] || 2.5.5 || 2.5.5 || 2.6 || 2.6 || || [[http://packages.python.org/joblib/ | joblib | target="_blank"]] || 0.6.3 || 0.6.3 || 0.6.3 || 0.6.4 || || [[http://jsonpickle.github.com/ | jsonpickle | target="_blank"]] || || || || 0.4.0 || || kernmagic || || ? || ? || ? || || [[http://bitbucket.org/kang/python-keyring-lib | keyring | target="_blank"]] || || || || 0.9-1 || || kiva || || ? || ? || ? || || [[http://lxml.de | lxml | target="_blank"]] || 2.3-1 || 2.3-1 || 2.3.2-1 || 2.3.4-1 || || [[http://www.makotemplates.org | mako | target="_blank"]] || 0.4.1 || || || || || [[http://pypi.python.org/pypi/MarkupSafe | markupsafe | target="_blank"]] || 0.12 || || || || || [[http://matplotlib.sourceforge.net | matplotlib | target="_blank"]] || 1.0.1 || 1.0.1 || 1.1.0 || 1.1.0 || || [[http://code.enthought.com/projects/mayavi/ | mayavi | target="_blank"]] || || 4.0.0 || 4.1.0 || 4.2.0 || || [[http://pypi.python.org/pypi/Mercurial | mercurial | target="_blank"]] || 1.8.3-py2.7 || || || || || [[http://matplotlib.github.com/basemap | mpl_toolkits | target="_blank"]] || ? || ? || ? || ? || || netcdftime || 0.9.3 || || || || || [[http://networkx.lanl.gov/ | networkx | target="_blank"]] || 1.4 || 1.5 || 1.6 || 1.6 || || [[http://nipy.org/nibabel | nibabel | target="_blank"]] || 1.1.0 || 1.3.0 || 1.3.0 || 1.3.0 || || [[http://nipy.sourceforge.net | nipy | target="_blank"]] || 0.1.2.dev || || 0.2.0rc1.dev1 || || || [[http://nipy.org/nipype | nipype | target="_blank"]] || || || 0.5.3 || 0.6.0 || || nisext || 1.1.0 || ? || 1.1.0 || 1.2.2 || || [[http://nipy.org/nitime | nitime | target="_blank"]] || 0.3.dev || 0.3.1 || 0.3.1 || 0.4 || || [[http://readthedocs.org/docs/nose/en/latest | nose | target="_blank"]] || 1.0.1 || 1.0.0 || 1.1.2 || 1.1.2 || || [[http://code.google.com/p/numexpr/ | numexpr | target="_blank"]] || 1.4.2 || 1.4.2 || 2.0 || 2.0.1 || || [[http://numpy.scipy.org | numpy | target="_blank"]] || 1.5.1 || 1.6.0 || 1.6.1 || 1.6.1 || || [[http://bitbucket.org/ericgazoni/openpyxl/wiki/Home | openpyxl | target="_blank"]] || || || || 1.5.8 || || osgeo || || || 1.8.1 || 1.8.1 || || [[http://pandas.pydata.org | pandas | target="_blank"]] || 0.2 || 0.3.0 || 0.6.1 || 0.7.3 || || [[http://www.lag.net/paramiko | paramiko | target="_blank"]] || 1.7.6 (Fanny) || 1.7.7.1 (George) || 1.7.7.1 (George) || 1.7.7.1 (George) || || [[http://www.pip-installer.org | pip | target="_blank"]] || 1.0.1 || 1.0.2 || || || || [[http://www.dabeaz.com/ply/ | ply | target="_blank"]] || 3.3-3 || 3.4-1 || 3.4-1 || 3.4-1 || || [[http://code.google.com/p/pyamg | pyamg | target="_blank"]] || 1.0.0.dev || 1.0.0.dev || 1.0.0.dev || 2.0.4.dev || || [[http://code.enthought.com/projects/traits_gui | pyface | target="_blank"]] || || 4.0.0 || 4.1.0 || 4.2.0 || || [[http://www.stsci.edu/resources/software_hardware/pyfits | pyfits | target="_blank"]] || 2.4.0 || 2.4.0 || 3.0.3 || 3.0.6 || || [[https://launchpad.net/pyflakes | pyflakes | target="_blank"]] || 0.4.0 || 0.4.0 || 0.5.0 || 0.5.0 || || [[http://code.astraw.com/projects/motmot/wiki/pygarrayimage | pygarrayimage | target="_blank"]] || 0.0.7-4 || 0.0.7-4 || 0.0.7-4 || 0.0.7-4 || || [[http://www.pyglet.org/ | pyglet | target="_blank"]] || ? || ? || ? || ? || || [[http://pygments.org | pygments | target="_blank"]] || 1.4 || 1.4 || 1.4 || 1.4 || || [[http://www.sourceforge.net/projects/pysclint | pyhdf | target="_blank"]] || 0.8.3-4 || 0.8.3-5 || 0.8.3-6 || 0.8.3-6 || || [[http://code.google.com/p/pyproj/ | pyproj | target="_blank"]] || 1.8.7 || 1.8.9 || 1.8.9 || 1.9.0 || || [[http://pytz.sourceforge.net | pytz | target="_blank"]] || 2010o || 2011g || 2011n || 2011n || || [[http://www.prescod.net/pyximport | pyximport | target="_blank"]] || ? || ? || ? || ? || || [[http://www.reportlab.com/ | reportlab | target="_blank"]] || ? || ? || ? || ? || || [[http://rope.sf.net/ | rope | target="_blank"]] || 0.9.3 || 0.9.3 || 0.9.3 || 0.9.4 || || [[http://scikits.appspot.com/scikits | scikits | target="_blank"]] || 0.9_git || 0.10 || ? || ? || || [[https://github.com/enthought/scimath | scimath | target="_blank"]] || || 4.0.0 || 4.0.1 || 4.1.0 || || [[http://www.scipy.org | scipy | target="_blank"]] || 0.9.0rc2 || 0.9.0 || 0.10.0 || 0.10.1 || || [[http://pyserial.sourceforge.net | serial | target="_blank"]] || ? || ? || ? || ? || || [[http://pypi.python.org/pypi/setuptools | setuptools | target="_blank"]] || 0.6 || 0.6 || 0.6 || 0.6 || || shapelib || ? || ? || ? || || || shapely || || || || 1.2.14 || || skimage || || || 0.4.2 || 0.5 || || [[http://scikit-learn.org | sklearn | target="_blank"]] || 0.9 || 0.10 || 0.9 || 0.11 || || [[http://sphinx.pocoo.org | sphinx | target="_blank"]] || 1.0.7 || 1.0.7 || 1.1.3 || 1.1.2 || || [[http://code.google.com/p/spyderlib | spyderlib | target="_blank"]] || 2.1.4 || 2.1.4 || 2.1.8 || 2.1.10 || || [[http://code.google.com/p/spyderlib | spyderplugins | target="_blank"]] || ? || ? || ? || 2.1.10 || || [[http://www.sqlalchemy.org | sqlalchemy | target="_blank"]] || 0.6.6 || 0.7.1 || 0.7.1 || 0.7.6 || || [[http://www.sqlalchemy.org | sqlalchemy_nose | target="_blank"]] || ? || || || || || [[http://statsmodels.sourceforge.net/ | statsmodels | target="_blank"]] || || || || 0.4.0 || || [[http://pysurfer.github.com | surfer | target="_blank"]] || 0.1 || 0.1 || 0.1 || 0.3 || || [[http://sympy.org | sympy | target="_blank"]] || 0.6.7 || 0.7.0 || 0.7.1 || 0.7.1 || || [[http://www.pytables.org/ | tables | target="_blank"]] || 2.2.1 || 2.3b1.devpro || 2.3.1 || 2.3.1 || || [[http://www.tornadoweb.org/ | tornado | target="_blank"]] || || || 2.1.1-1 || 2.2-1 || || [[http://code.enthought.com/projects/traits | traits | target="_blank"]] || || 4.0.0 || 4.1.0 || 4.2.0 || || [[https://github.com/enthought/traitsui | traitsui | target="_blank"]] || || 4.0.1 || 4.1.0 || 4.2.0 || || [[https://github.com/enthought/mayavi | tvtk | target="_blank"]] || || ? || ? || ? || || [[http://twistedmatrix.com/trac | twisted | target="_blank"]] || 10.2.0 || 11.0.0 || 11.1.0 || 12.0.0 || || virtualenv_support || || ? || || || || [[http://www.vtk.org/Wiki/VTK/Examples/Python | vtk | target="_blank"]] || 5.6.0-2 || 5.6.0-2 || 5.6.0-2 || 5.6.0-2 || || [[http://wxpython.org | wxPython | target="_blank"]] || 2.8.10.1 || 2.8.10.1 || 2.8.10.1 || 2.8.10.1 || || [[http://www.lexicon.net/sjmachin/xlrd.htm | xlrd | target="_blank"]] || 0.7.1-3 || 0.7.1-4 || 0.7.1-4 || 0.7.6-1 || || [[https://secure.simplistix.co.uk/svn/xlwt/trunk | xlwt | target="_blank"]] || 0.7.2-3 || 0.7.2-3 || 0.7.2-3 || 0.7.3-1 || || [[http://pyyaml.org | yaml | target="_blank"]] || 3.09 || 3.10 || 3.10 || 3.10 || || [[http://www.zeromq.org/bindings:python | zmq | target="_blank"]] || 2.0.10-1 || 2.1.7 || 2.1.11 || 2.1.11 || || [[http://docs.zope.org/zopetoolkit | zope | target="_blank"]] || ? || ? || ? || ? || == Legacy Scientific Python Installation == |
== Legacy Scientific Python Installation (not-maintained) == |
| Line 212: | Line 72: |
| Scientific Python mode is now available in the following platform/os combinations in the NMR center | Scientific Python mode is now available in the following platform/os combinations in the NMR center |
| Line 216: | Line 76: |
| * MacOSX Leopard (Intel) | * MacOSX Leopard (Intel) |
| Line 220: | Line 80: |
| 1. In CentOS systems, the Python version is very old ( 2.3.4 ) which prevents installation of many new modules essential for scientific computing in Python. However, a number of other system modules and programs are dependent on this version and it's best not to disturb this version. | 1. In CentOS systems, the Python version is very old ( 2.3.4 ) which prevents installation of many new modules essential for scientific computing in Python. However, a number of other system modules and programs are dependent on this version and it's best not to disturb this version. |
| Line 222: | Line 82: |
| 2. Leopard systems have a customized Python 2.5.x, which, again is a necessity for a number of modules. Again, best not to tamper with it. | 1. Leopard systems have a customized Python 2.5.x, which, again is a necessity for a number of modules. Again, best not to tamper with it. |
| Line 224: | Line 84: |
| 3. '''Isolation:''' The latest Python ( 2.6.3 ) and its associated modules are installed in /usr/pubsw/packages which are isolated from the system python and its modules. This configuration enables NMR center users to basically access both the versions of the Python and since both exist independently, they don't mess with each other. | 1. '''Isolation:''' The latest Python ( 2.6.3 ) and its associated modules are installed in /usr/pubsw/packages which are isolated from the system python and its modules. This configuration enables NMR center users to basically access both the versions of the Python and since both exist independently, they don't mess with each other. |
| Line 227: | Line 87: |
| By default, typing "python" to invoke the Python interpreter brings up the system Python interpreter which can be verified by looking at the version. | |
| Line 228: | Line 89: |
| By default, typing "python" to invoke the Python interpreter brings up the system Python interpreter which can be verified by looking at the version. | To enable the scientific python mode, users source the scientific python mode script in the following way : |
| Line 230: | Line 91: |
| To enable the scientific python mode, users source the scientific python mode script in the following way : | |
| Line 234: | Line 94: |
| '''Note:''' strongly recommended. this line can/should be put as an alias in one's ~/.cshrc in the following way: | '''Note:''' strongly recommended. this line can/should be put as an alias in one's ~/.cshrc in the following way: |
| Line 240: | Line 101: |
| In the scientific python mode, the prompt is preceded by the text `(scientificpython)`, which lets the user know that he/she is in the scientific python mode. The user can invoke the python interpreter by typing `python` and notice that the interpreter is now the latest Python's interpreter. Once the user deactivates the mode, the prompt is changed back to the default prompt. | In the scientific python mode, the prompt is preceded by the text `(scientificpython)`, which lets the user know that he/she is in the scientific python mode. The user can invoke the python interpreter by typing `python` and notice that the interpreter is now the latest Python's interpreter. Once the user deactivates the mode, the prompt is changed back to the default prompt. |
| Line 242: | Line 103: |
| '''Note:''' The sourcing script works under tcsh shell. Bash is currently unsupported but will be if there are enough users using bash. | '''Note:''' The sourcing script works under tcsh shell. Bash is currently unsupported but will be if there are enough users using bash. |
| Line 245: | Line 106: |
* Python 2.6.3 * Numpy 1.3.0 |
* Python 2.6.3 * Numpy 1.3.0 |
| Line 251: | Line 111: |
| * IPython 0.10 | * IPython 0.10 |
| Line 261: | Line 121: |
| * pysqlite 2.6.0 ( except CentOS 32-bit ) | * pysqlite 2.6.0 ( except CentOS 32-bit ) |
| Line 266: | Line 126: |
| '''Note :''' The list of modules indicated by (c) are compiled modules and the rest were installed using easy_install script. | '''Note :''' The list of modules indicated by (c) are compiled modules and the rest were installed using easy_install script. |
| Line 270: | Line 129: |
| Line 274: | Line 132: |
| ( For advanced users ) | |
| Line 275: | Line 134: |
| ( For advanced users ) A program called `virtualenv` is made use of to isolate the Pythons. virtualenv enables one to totally switch to a different Python with its own modules ( enabled by the switch --no-site-packages). So when the user sources the `tcsh_activate` script, what he/she is effectively doing is to prefix the system PATH, PYTHONPATH, module PATHs with the custom Python's paths and when the user `deactivate`s he/she gets back all the default paths. virtualenv takes care of this complex paths manipulation behind the scenes. It also makes the modules installation a breeze for the administrator. |
A program called `virtualenv` is made use of to isolate the Pythons. virtualenv enables one to totally switch to a different Python with its own modules ( enabled by the switch --no-site-packages). So when the user sources the `tcsh_activate` script, what he/she is effectively doing is to prefix the system PATH, PYTHONPATH, module PATHs with the custom Python's paths and when the user `deactivate`s he/she gets back all the default paths. virtualenv takes care of this complex paths manipulation behind the scenes. It also makes the modules installation a breeze for the administrator. |
Scientific Python Mode in the NMR Center
Contents
There are currently three scientific Python installations available at the Martinos Center. The the most recent installation is the Anaconda distribution. The Enthought Python Distribution (EPD) and the legacy Python Installation are older; users of these installations are encouraged to switch to the Anaconda based installation, as it is the only one still actively supported and contains more up to date packages.
If you use Python, make sure to sign up for the martinos-python mailing list to receive updates regarding the Python installation and discuss Python related issues. This list is also where requests for module installation should be made.
Resources for Learning Python
* Python Scientific Lecture Notes
* The Boston Python User Group regularly holds meetings and organizes introductory Python classes
Available Python Modules
The following neuroimaging related modules are installed in the Anaconda distribution:
* mne-python for M/EEG analysis
* nibabel provides access to a large number of neuro-imaging file formats
* nitime for time-series analysis
* pydicom enables you to read, modify and write DICOM files with python code
* PySurfer for visualization and interaction with cortical surface representations of neuroimaging data from FreeSurfer (Requires using environment pysurfer in anaconda2.7)
* TensorFlow for machine learning (Requires using either the tensorflow or tensorflow-gpu environment in anaconda2.7)
If you know of other modules that should be made available to all users, send an e-mail to the martinos-python mailing list
Run pip list to see a full list of modules
Anaconda Based Scientific Python Installation
Getting Started
On CentOS 5/6/7 (64-bit) do the following to enable the Anaconda Python installation
For Python 2.7:
setenv PATH /usr/pubsw/packages/python/anaconda2.7/bin:${PATH}There are 3 sub-environments in anaconda2.7: pysurfer, tensorflow, and tensorflow-gpu
To use a sub-environment add to your PATH
setenv PATH /usr/pubsw/packages/python/anaconda2.7/envs/environment/bin:${PATH}
For Python 3.6:
setenv PATH /usr/pubsw/packages/python/anaconda3.6/bin:${PATH}Only the CentOS7 install is actively maintained.
Notes for the python maintainer (person managing anaconda, not users) on saving old environments and creating new ones are here
EPD Based Scientific Python Installation (not-maintained)
Getting Started
On CentOS 5/6 (64-bit) do the following to enable the EPD based Python installation
setenv PATH /usr/pubsw/packages/python/epd/bin:${PATH}
Legacy Scientific Python Installation (not-maintained)
Scientific Python mode is now available in the following platform/os combinations in the NMR center
- CentOS 64-bit
- CentOS 32-bit
- MacOSX Leopard (Intel)
The "system Python" ( the Python version which already exists in the system ) is not tampered with due to the following reasons:
- In CentOS systems, the Python version is very old ( 2.3.4 ) which prevents installation of many new modules essential for scientific computing in Python. However, a number of other system modules and programs are dependent on this version and it's best not to disturb this version.
- Leopard systems have a customized Python 2.5.x, which, again is a necessity for a number of modules. Again, best not to tamper with it.
Isolation: The latest Python ( 2.6.3 ) and its associated modules are installed in /usr/pubsw/packages which are isolated from the system python and its modules. This configuration enables NMR center users to basically access both the versions of the Python and since both exist independently, they don't mess with each other.
Enabling the Scientific Python mode
By default, typing "python" to invoke the Python interpreter brings up the system Python interpreter which can be verified by looking at the version.
To enable the scientific python mode, users source the scientific python mode script in the following way :
source /usr/pubsw/packages/python/2.6/scientificpython/bin/tcsh_activate
Note: strongly recommended. this line can/should be put as an alias in one's ~/.cshrc in the following way:
alias pyactivate "source /usr/pubsw/packages/python/2.6/scientificpython/bin/tcsh_activate"
Once, this is done, the user can just type pyactivate to activate the scientific python mode and type deactivate to get back to the default ( normal system python mode )
In the scientific python mode, the prompt is preceded by the text (scientificpython), which lets the user know that he/she is in the scientific python mode. The user can invoke the python interpreter by typing python and notice that the interpreter is now the latest Python's interpreter. Once the user deactivates the mode, the prompt is changed back to the default prompt.
Note: The sourcing script works under tcsh shell. Bash is currently unsupported but will be if there are enough users using bash.
List of installed modules
- Python 2.6.3
- Numpy 1.3.0
- Scipy 0.7.1 (c)
matplotlib 0.99.1.1 ( TkInter backend in Mac platform and wxPython backend in CentOS platforms ) (c)
- wxPython 2.8.10.1 ( only on CentOS platforms ) (c)
- IPython 0.10
- NetworkX 1.0rc1
- nose 0.11.1
- Sphinx 0.6.3
- Cython 0.11.3
- pynifti 0.20090303.1 (c)
- SQLAlchemy 0.6.3
- argparse 1.1
- xlrd 0.7.1
- xlwt 0.7.2
- pysqlite 2.6.0 ( except CentOS 32-bit )
- PyXML 0.8.4 (c)
- pydicom 0.9.4-1
- nibabel 1.0.0 ( cutting edge master branch Aug 27, 2010 )
Note : The list of modules indicated by (c) are compiled modules and the rest were installed using easy_install script.
Troubleshooting
pylab doesn't start: This might be because there might be a stray .matplotlibrc file, which is already existing in your path preventing the standard backend to load. As an example, pylab can't be imported if the backend is WXAgg for Mac platforms or TkAgg for CentOS platforms. The fix is to comment out the line starting with backend in your .matplotlibrc ( usually in ~/matplotlib/matplotlibrc )
Behind the Scenes
( For advanced users )
A program called virtualenv is made use of to isolate the Pythons. virtualenv enables one to totally switch to a different Python with its own modules ( enabled by the switch --no-site-packages). So when the user sources the tcsh_activate script, what he/she is effectively doing is to prefix the system PATH, PYTHONPATH, module PATHs with the custom Python's paths and when the user deactivates he/she gets back all the default paths. virtualenv takes care of this complex paths manipulation behind the scenes. It also makes the modules installation a breeze for the administrator.
