pax_global_header00006660000000000000000000000064117726477770014543gustar00rootroot0000000000000052 comment=1867874eeb94247ca65fadc2e5caa6dd2ca39a94 nipy-nibabel-d3c26be/000077500000000000000000000000001177264777700146065ustar00rootroot00000000000000nipy-nibabel-d3c26be/.gitattributes000066400000000000000000000000451177264777700175000ustar00rootroot00000000000000nibabel/COMMIT_INFO.txt export-subst nipy-nibabel-d3c26be/.gitignore000066400000000000000000000015761177264777700166070ustar00rootroot00000000000000# Editor temporary/working/backup files # ######################################### .#* [#]*# *~ *$ *.bak *.diff *.org .project *.rej .settings/ .*.sw[nop] .sw[nop] *.tmp .project .pydevproject # Not sure what the next two are for *.kpf *-stamp # Compiled source # ################### *.a *.com *.class *.dll *.exe *.o *.py[oc] *.so # Packages # ############ # it's better to unpack these files and commit the raw source # git has its own built in compression methods *.7z *.bz2 *.bzip2 *.dmg *.gz *.iso *.jar *.rar *.tar *.tbz2 *.tgz *.zip # Python files # ################ build/ _build MANIFEST dist/ *.egg-info/ .shelf .tox/ # Logs and databases # ###################### *.log *.sql *.sqlite # OS generated files # ###################### .gdb_history .DS_Store? ehthumbs.db Icon? Thumbs.db # Things specific to this project # ################################### doc/source/generated nipy-nibabel-d3c26be/.mailmap000066400000000000000000000024721177264777700162340ustar00rootroot00000000000000# Prevent git from showing duplicate names with commands like "git shortlog" # See the manpage of git-shortlog for details. # The syntax is: # Name that should be used Bad name # # You can skip Bad name if it is the same as the one that should be used, and is unique. # # This file is up-to-date if the command git log --format="%aN <%aE>" | sort -u # gives no duplicates. Michael Hanke Michael Hanke Yaroslav Halchenko Bertrand Thirion bthirion Stephan Gerhard Stephan Gerhard Christian Haselgrove Christian Haselgrove CindeeM cindeem Félix C. Morency Felix C. Morency Félix C. Morency Félix C. Morency Félix C. Morency Krish Subramaniam Krish Subramaniam nipy-nibabel-d3c26be/.travis.yml000066400000000000000000000022321177264777700167160ustar00rootroot00000000000000# vim ft=yaml language: python python: - "2.5" - "2.6" - "2.7" - "3.2" env: NUMPY_VER=1.6.1 before_install: - mkdir builds - pushd builds - curl -O http://pypi.python.org/packages/source/n/numpy/numpy-${NUMPY_VER}.tar.gz - tar zxf numpy-${NUMPY_VER}.tar.gz - cd numpy-${NUMPY_VER} - python setup.py install - popd # command to install dependencies, e.g. pip install -r requirements.txt --use-mirrors install: # This has to be on a single "virtual line" because of how Travis # munges each line before executing it to print out the exit status. # It's okay for it to be on multiple physical lines, so long as you remember: # - There can't be any leading "-"s # - All newlines will be removed, so use ";"s - if [ "${TRAVIS_PYTHON_VERSION:0:1}" \< "3" ]; then easy_install -U pydicom; fi - python setup.py install # command to run tests, e.g. python setup.py test script: # Change into an innocuous directory and find tests from installation - mkdir for_testing - cd for_testing - nosetests `python -c "import os; import nibabel; print(os.path.dirname(nibabel.__file__))"` nipy-nibabel-d3c26be/AUTHOR000066400000000000000000000001721177264777700155330ustar00rootroot00000000000000Matthew Brett Michael Hanke Stephan Gerhard nipy-nibabel-d3c26be/COPYING000066400000000000000000000154541177264777700156520ustar00rootroot00000000000000.. -*- mode: rst; fill-column: 78 -*- .. ex: set sts=4 ts=4 sw=4 et tw=79: .. vim:syntax=rest .. _license: ********************** Copyright and Licenses ********************** NiBabel ======= The nibabel package, including all examples, code snippets and attached documentation is covered by the MIT license. :: The MIT License Copyright (c) 2009-2011 Matthew Brett Copyright (c) 2010-2011 Stephan Gerhard Copyright (c) 2006-2010 Michael Hanke Copyright (c) 2011 Christian Haselgrove Copyright (c) 2010-2011 Jarrod Millman Copyright (c) 2011-2012 Yaroslav Halchenko Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 3rd Party Code ============== Some code distributed within the nibabel sources was developed by other projects. This code is distributed under its respective licenses that are listed below. NetCDF ------ The netcdf IO module has been taken from SciPy. :: Copyright (c) 1999-2010 SciPy Developers Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: a. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. b. 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. c. Neither the name of the Enthought 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 THE REGENTS OR CONTRIBUTORS 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. Sphinx autosummary extension ---------------------------- This extension has been copied from NumPy (Jul 16, 2010) as the one shipped with Sphinx 0.6 doesn't work properly. :: Copyright (c) 2007-2009 Stefan van der Walt and Sphinx team Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: a. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. b. 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. c. Neither the name of the Enthought 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 THE REGENTS OR CONTRIBUTORS 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. Lightunit module ---------------- Taken from IPython. :: Copyright (c) 2009 Fernando Perez and the IPython Development Team Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: a. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. b. 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. c. Neither the name of the Enthought 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 THE REGENTS OR CONTRIBUTORS 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. nipy-nibabel-d3c26be/Changelog000066400000000000000000000415321177264777700164250ustar00rootroot00000000000000.. -*- mode: rst -*- .. vim:ft=rst .. _changelog: NiBabel Development Changelog ----------------------------- NiBabel is the successor to the much-loved PyNifti package. Here we list the releases for both packages. 'Close gh-' statements refer to GitHub issues that are available at:: http://github.com/nipy/nibabel/issues The full VCS changelog is available here: http://github.com/nipy/nibabel/commits/master Releases ~~~~~~~~ NiBabel +++++++ Most work on NiBabel so far has been by Matthew Brett (MB) and Michael Hanke (MH) and Stephan Gerhard (SG). Recently there have been large contributions from Krish Subramaniam, Alexandre Gramfort, Cindee Madison, Félix C. Morency, Christian Haselgrove. * 1.2.2 (Wednesday 27 June 2012) * Bugfix release * Fix longdouble tests for Debian PPC (thanks to Yaroslav Halchecko for finding and diagnosing these errors) * Generalize longdouble tests in the hope of making them more robust * Disable saving of float128 nifti type unless platform has real IEEE binary128 longdouble type. * 1.2.1 (Wednesday 13 June 2012) Particular thanks to Yaroslav Halchecko for fixes and cleanups in this release * Bugfix release * Make compatible with pydicom 0.9.7 * Refactor, rename nifti diagnostic script to ``nib-nifti-dx`` * Fix a bug causing an error when analyzing affines for orientation, when the affine contained all 0 columns * Add missing ``dicomfs`` script to installation list and rename to ``nib-dicomfs`` * 1.2.0 (Sunday 6 May 2012) * New feature and bugfix release * Freesurfer format support by Krish Subramaniam and Alexandre Gramfort. * ECAT read write support by Cindee Madison and Félix C. Morency. * A DICOM fuse filesystem by Christian Haselgrove. * Much work on making data scaling on read and write more robust to rounding error and overflow (MB). * Import of nipy functions for working with affine transformation matrices. * Added methods for working with nifti sform and qform fields by Bago Amirbekian and MB, with useful discussion by Brendan Moloney. * Fixes to read / write of RGB analyze images by Bago Amirbekian. * Extensions to ``concat_images`` by Yannick Schwartz. * A new ``nib-ls`` script to display information about neuroimaging files, and various other useful fixes by Yaroslav Halchenko. * 1.1.0 (Thursday 28 April 2011) * New feature release * Python 3.2 support * Substantially enhanced gifti reading support (SG) * Refactoring of trackvis read / write to allow reading and writing of voxel points and mm points in tracks. Deprecate use of negative voxel sizes; set voxel_order field in trackvis header. Thanks to Chris Filo Gorgolewski for pointing out the problem and Ruopeng Wang in the trackvis forum for clarifying the coordinate system of trackvis files. * Added routine to give approximate array orientation in form such as 'RAS' or 'LPS' * Fix numpy dtype hash errors for numpy 1.2.1 * Other bug fixes as for 1.0.2 * 1.0.2 (Thursday 14 April 2011) * Bugfix release * Make inference of data type more robust to changes in numpy dtype hashing * Fix incorrect thresholds in quaternion calculation (thanks to Yarik H for pointing this one out) * Make parrec2nii pass over errors more gracefully * More explicit checks for missing or None field in trackvis and other classes - thanks to Marc-Alexandre Cote * Make logging and error level work as expected - thanks to Yarik H * Loading an image does not change qform or sform - thanks to Yarik H * Allow 0 for nifti scaling as for spec - thanks to Yarik H * nifti1.save now correctly saves single or pair images * 1.0.1 (Wednesday 23 Feb 2011) * Bugfix release * Fix bugs in tests for data package paths * Fix leaks of open filehandles when loading images (thanks to Gael Varoquaux for the report) * Skip rw tests for SPM images when scipy not installed * Fix various windows-specific file issues for tests * Fix incorrect reading of byte-swapped trackvis files * Workaround for odd numpy dtype comparisons leading to header errors for some loaded images (thanks to Cindee Madison for the report) * 1.0.0 (Thursday, 13, Oct 2010) * This is the first public release of the NiBabel package. * NiBabel is a complete rewrite of the PyNifti package in pure python. It was designed to make the code simpler and easier to work with. Like PyNifti, NiBabel has fairly comprehensive NIfTI read and write support. * Extended support for SPM Analyze images, including orientation affines from matlab ``.mat`` files. * Basic support for simple MINC 1.0 files (MB). Please let us know if you have MINC files that we don't support well. * Support for reading and writing PAR/REC images (MH) * ``parrec2nii`` script to convert PAR/REC images to NIfTI format (MH) * Very preliminary, limited and highly experimental DICOM reading support (MB, Ian Nimmo Smith). * Some functions (`nibabel.funcs`) for basic image shape changes, including the ability to transform to the image with data closest to the cononical image orientation (first axis left-to-right, second back-to-front, third down-to-up) (MB, Jonathan Taylor) * Gifti format read and write support (preliminary) (Stephen Gerhard) * Added utilities to use nipy-style data packages, by rip then edit of nipy data package code (MB) * Some improvements to release support (Jarrod Millman, MB, Fernando Perez) * Huge downward step in the quality and coverage by the docs, caused by MB, mostly fixed by a lot of good work by MH. * NiBabel will not work with Python < 2.5, and we haven't even tested it with Python 3. We will get to it soon... PyNifti +++++++ Modifications are done by Michael Hanke, if not indicated otherwise. 'Closes' statement IDs refer to the Debian bug tracking system and can be queried by visiting the URL:: http://bugs.debian.org/ * 0.20100706.1 (Tue, 6 Jul 2010) * Bugfix: NiftiFormat.vx2s() used the qform not the sform. Thanks to Tom Holroyd for reporting. * 0.20100412.1 (Mon, 12 Apr 2010) * Bugfix: Unfortunate interaction between Python garbage collection and C library caused memory problems. Thanks to Yaroslav Halchenko for the diagnose and fix. * 0.20090303.1 (Tue, 3 Mar 2009) * Bugfix: Updating the NIfTI header from a dictionary was broken. * Bugfix: Removed left-over print statement in extension code. * Bugfix: Prevent saving of bogus 'None.nii' images when the filename was previously assign, before calling NiftiImage.save() (Closes: #517920). * Bugfix: Extension length was to short for all `edata` whos length matches n*16-8, for all integer n. * 0.20090205.1 (Thu, 5 Feb 2009) * This release is the first in a series that aims stabilize the API and finally result in PyNIfTI 1.0 with full support of the NIfTI1 standard. * The whole package was restructured. The included renaming `nifti.nifti(image,format,clibs)` to `nifti.(image,format,clibs)`. Redirect modules make sure that existing user code will not break, but they will issue a DeprecationWarning and will be removed with the release of PyNIfTI 1.0. * Added a special extension that can embed any serializable Python object into the NIfTI file header. The contents of this extension is automatically expanded upon request into the `.meta` attribute of each NiftiImage. When saving files to disk the content of the dictionary is also automatically dumped into this extension. Embedded meta data is not loaded automatically, since this has security implications, because code from the file header is actually executed. The documentation explicitely mentions this risk. * Added :class:`~nifti.extensions.NiftiExtensions`. This is a container-like handler to access and manipulate NIfTI1 header extensions. * Exposed :class:`~nifti.image.MemMappedNiftiImage` in the root module. * Moved :func:`~nifti.utils.cropImage` into the :mod:`~nifti.utils` module. * From now on Sphinx is used to generate the documentation. This includes a module reference that replaces that old API reference. * Added methods :meth:`~nifti.format.NiftiFormat.vx2q` and :meth:`~nifti.format.NiftiFormat.vx2s` to convert voxel indices into coordinates defined by qform or sform respectively. * Updating the `cal_min` and `cal_max` values in the NIfTI header when saving a file is now conditional, but remains enabled by default. * Full set of methods to query and modify axis units. This includes expanding the previous `xyzt_units` field in the header dictionary into editable `xyz_unit` and `time_unit` fields. The former `xyzt_units` field is no longer available. See: :meth:`~nifti.format.NiftiFormat.getXYZUnit`, :meth:`~nifti.format.NiftiFormat.setXYZUnit`, :meth:`~nifti.format.NiftiFormat.getTimeUnit`, :meth:`~nifti.format.NiftiFormat.setTimeUnit`, :attr:`~nifti.format.NiftiFormat.xyz_unit`, :attr:`~nifti.format.NiftiFormat.time_unit` * Full set of methods to query and manuipulate qform and sform codes. See: :meth:`~nifti.format.NiftiFormat.getQFormCode`, :meth:`~nifti.format.NiftiFormat.setQFormCode`, :meth:`~nifti.format.NiftiFormat.getSFormCode`, :meth:`~nifti.format.NiftiFormat.setSFormCode`, :attr:`~nifti.format.NiftiFormat.qform_code`, :attr:`~nifti.format.NiftiFormat.sform_code` * Each image instance is now able to generate a human-readable dump of its most important header information via `__str__()`. * :class:`~nifti.image.NiftiImage` objects can now be pickled. * Switched to NumPy's distutils for building the package. Cleaned and simplified the build procedure. Added optimization flags to SWIG call. * :attr:`nifti.image.NiftiImage.filename` can now also be used to assign a filename. * Introduced :data:`nifti.__version__` as canonical version string. * Removed `updateQFormFromQuarternion()` from the list of public methods of :class:`~nifti.format.NiftiFormat`. This is an internal method that should not be used in user code. However, a redirect to the new method will remain in-place until PyNIfTI 1.0. * Bugfix: :meth:`~nifti.image.NiftiImage.getScaledData` returns a unmodified data array if `slope` is set to zero (as required by the NIfTI standard). Thanks to Thomas Ross for reporting. * Bugfix: Unicode filenames are now handled properly, as long as they do not contain pure-unicode characters (since the NIfTI library does not support them). Thanks to Gaël Varoquaux for reporting this issue. * 0.20081017.1 (Fri, 17 Oct 2008) * Updated included minimal copy of the nifticlibs to version 1.1.0. * Few changes to the Makefiles to enhance Posix compatibility. Thanks to Chris Burns. * When building on non-Debian systems, only add include and library paths pointing to the local nifticlibs copy, when it is actually built. On Debian system the local copy is still not used at all, as a proper nifticlibs package is guaranteed to be available. * Added minimal setup_egg.py for setuptools users. Thanks to Gaël Varoquaux. * PyNIfTI now does a proper wrapping of the image data with NumPy arrays, which no longer leads to accidental memory leaks, when accessing array data that has not been copied before (e.g. via the *data* property of NiftiImage). Thanks to Gaël Varoquaux for mentioning this possibility. * 0.20080710.1 (Thu, 7 Jul 2008) * Bugfix: Pointer bug introduced by switch to new NumPy API in 0.20080624 Thanks to Christopher Burns for fixing it. * Bugfix: Honored DeprecationWarning: sync() -> flush() for memory mapped arrays. Again thanks to Christopher Burns. * More unit tests and other improvements (e.g. fixed circular imports) done by Christopher Burns. * 0.20080630.1 (Tue, 30 Jun 2008) * Bugfix: NiftiImage caused a memory leak by not calling the NiftiFormat destructor. * Bugfix: Merged bashism-removal patch from Debian packaging. * 0.20080624.1 (Tue, 24 Jun 2008) * Converted all documentation (including docstrings) into the restructured text format. * Improved Makefile. * Included configuration and Makefile support for profiling, API doc generation (via epydoc) and code quality checks (with PyLint). * Consistently import NumPy as N. * Bugfix: Proper handling of [qs]form codes, which previously have not been handled at all. Thanks to Christopher Burns for pointing it out. * Bugfix: Make NiftiFormat work without setFilename(). Thanks to Benjamin Thyreau for reporting. * Bugfix: setPixDims() stored meaningless values. * Use new NumPy API and replace deprecated function calls (`PyArray_FromDimsAndData`). * Initial support for memory mapped access to uncompressed NIfTI files (`MemMappedNiftiImage`). * Add a proper Makefile and setup.cfg for compiling PyNIfTI under Windows with MinGW. * Include a minimal copy of the most recent nifticlibs (just libniftiio and znzlib; version 1.0), to lower the threshold to build PyNIfTI on systems that do not provide a developer package for those libraries. * 0.20070930.1 (Sun, 30 Sep 2007) * Relicense under the MIT license, to be compatible with SciPy license. http://www.opensource.org/licenses/mit-license.php * Updated documentation. * 0.20070917.1 (Mon, 17 Sep 2007) * Bugfix: Can now update NIfTI header data when no filename is set (Closes: #442175). * Unloading of image data without a filename set is no checked and prevented as it would damage data integrity and the image data could not be recovered. * Added 'pixdim' property (Yaroslav Halchenko). * 0.20070905.1 (Wed, 5 Sep 2007) * Fixed a bug in the qform/quaternion handling that caused changes to the qform to vanish when saving to file (Yaroslav Halchenko). * Added more unit tests. * 'dim' vector in the NIfTI header is now guaranteed to only contain non-zero elements. This caused problems with some applications. * 0.20070803.1 (Fri, 3 Aug 2007) * Does not depend on SciPy anymore. * Initial steps towards a unittest suite. * pynifti_pst can now print the peristimulus signal matrix for a single voxel (onsets x time) for easier processing of this information in external applications. * utils.getPeristimulusTimeseries() can now be used to compute mean and variance of the signal (among others). * pynifti_pst is able to compute more than just the mean peristimulus timeseries (e.g. variance and standard deviation). * Set default image description when saving a file if none is present. * Improved documentation. * 0.20070425.1 (Wed, 25 Apr 2007) * Improved documentation. Added note about the special usage of the header property. Also added notes about the relevant properties in the docstring of the corresponding accessor methods. * Added property and accessor methods to access/modify the repetition time of timeseries (dt). * Added functions to manipulate the pixdim values. * Added utils.py with some utility functions. * Added functions/property to determine the bounding box of an image. * Fixed a bug that caused a corrupted sform matrix when converting a NumPy array and a header dictionary into a NIfTI image. * Added script to compute peristimulus timeseries (pynifti_pst). * Package now depends on python-scipy. * 0.20070315.1 (Thu, 15 Mar 2007) * Removed functionality for "NiftiImage.save() raises an IOError exception when writing the image file fails." (Yaroslav Halchenko) * Added ability to force a filetype when setting the filename or saving a file. * Reverse the order of the 'header' and 'load' argument in the NiftiImage constructor. 'header' is now first as it seems to be used more often. * Improved the source code documentation. * Added getScaledData() method to NiftiImage that returns a copy of the data array that is scaled with the slope and intercept stored in the NIfTI header. * 0.20070301.2 (Thu, 1 Mar 2007) * Fixed wrong link to the source tarball in README.html. * 0.20070301.1 (Thu, 1 Mar 2007) * Initial upload to the Debian archive. (Closes: #413049) * NiftiImage.save() raises an IOError exception when writing the image file fails. * Added extent, volextent, and timepoints properties to NiftiImage class (Yaroslav Halchenko). * 0.20070220.1 (Tue, 20 Feb 2007) * NiftiFile class is renamed to NiftiImage. * SWIG-wrapped libniftiio functions are no available in the nifticlib module. * Fixed broken NiftiImage from Numpy array constructor. * Added initial documentation in README.html. * Fulfilled a number of Yarik's wishes ;) * 0.20070214.1 (Wed, 14 Feb 2007) * Does not depend on libfslio anymore. * Up to seven-dimensional dataset are supported (as much as NIfTI can do). * The complete NIfTI header dataset is modifiable. * Most image properties are accessable via class attributes and accessor methods. * Improved documentation (but still a long way to go). * 0.20061114 (Tue, 14 Nov 2006) * Initial release. nipy-nibabel-d3c26be/MANIFEST.in000066400000000000000000000006621177264777700163500ustar00rootroot00000000000000include AUTHOR COPYING Makefile* MANIFEST.in setup* README.* include Changelog TODO recursive-include doc * recursive-include bin * recursive-include tools * # put this stuff back into setup.py (package_data) once I'm enlightened # enough to accomplish this herculean task recursive-include nibabel/tests/data * recursive-include nibabel/nicom/tests/data * recursive-include nibabel/gifti/tests/data * include nibabel/COMMIT_INFO.txt nipy-nibabel-d3c26be/Makefile000066400000000000000000000160131177264777700162470ustar00rootroot00000000000000COVERAGE_REPORT=coverage HTML_DIR=build/html LATEX_DIR=build/latex WWW_DIR=build/website DOCSRC_DIR=doc SF_USER ?= matthewbrett # # The Python executable to be used # PYTHON = python NOSETESTS = $(PYTHON) $(shell which nosetests) # # Determine details on the Python/system # PYVER := $(shell $(PYTHON) -V 2>&1 | cut -d ' ' -f 2,2 | cut -d '.' -f 1,2) DISTUTILS_PLATFORM := \ $(shell \ $(PYTHON) -c "import distutils.util; print(distutils.util.get_platform())") # Helpers for version handling. # Note: can't be ':='-ed since location of invocation might vary DEBCHANGELOG_VERSION = $(shell dpkg-parsechangelog | egrep ^Version | cut -d ' ' -f 2,2 | cut -d '-' -f 1,1) SETUPPY_VERSION = $(shell $(PYTHON) setup.py -V) # # Automatic development version # #yields: LastTagName_CommitsSinceThat_AbbrvHash DEV_VERSION := $(shell git describe --abbrev=4 HEAD |sed -e 's/-/+/g' |cut -d '/' -f 2,2) # By default we are releasing with setup.py version RELEASE_VERSION ?= $(SETUPPY_VERSION) # # Building # all: build build: $(PYTHON) setup.py config --noisy $(PYTHON) setup.py build # # Cleaning # clean: $(MAKE) -C doc clean -rm -rf build -rm *-stamp distclean: clean -rm MANIFEST -rm $(COVERAGE_REPORT) @find . -name '*.py[co]' \ -o -name '*.a' \ -o -name '*,cover' \ -o -name '.coverage' \ -o -iname '*~' \ -o -iname '*.kcache' \ -o -iname '*.pstats' \ -o -iname '*.prof' \ -o -iname '#*#' | xargs -L10 rm -f -rm -r dist -rm build-stamp -rm -r .tox # -rm tests/data/*.hdr.* tests/data/*.img.* tests/data/something.nii \ # tests/data/noise* tests/data/None.nii # # Little helpers # $(WWW_DIR): if [ ! -d $(WWW_DIR) ]; then mkdir -p $(WWW_DIR); fi # # Tests # test: unittest testmanual ut-%: build @PYTHONPATH=.:$(PYTHONPATH) $(NOSETESTS) nibabel/tests/test_$*.py unittest: build @PYTHONPATH=.:$(PYTHONPATH) $(NOSETESTS) nibabel --with-doctest testmanual: build @cd doc/source && PYTHONPATH=../..:$(PYTHONPATH) $(NOSETESTS) --with-doctest --doctest-extension=.rst . dicom coverage: build @PYTHONPATH=.:$(PYTHONPATH) $(NOSETESTS) --with-coverage --cover-package=nibabel # # Documentation # htmldoc: build cd $(DOCSRC_DIR) && PYTHONPATH=$(CURDIR):$(PYTHONPATH) $(MAKE) html pdfdoc: build cd $(DOCSRC_DIR) && PYTHONPATH=$(CURDIR):$(PYTHONPATH) $(MAKE) latex cd $(LATEX_DIR) && $(MAKE) all-pdf gitwash-update: build cd $(DOCSRC_DIR) && PYTHONPATH=$(CURDIR):$(PYTHONPATH) $(MAKE) gitwash-update # # Website # website: website-stamp website-stamp: $(WWW_DIR) htmldoc pdfdoc cp -r $(HTML_DIR)/* $(WWW_DIR) cp $(LATEX_DIR)/*.pdf $(WWW_DIR) touch $@ upload-website: website rsync -rzhvp --delete --chmod=Dg+s,g+rw $(WWW_DIR)/* \ web.sourceforge.net:/home/groups/n/ni/niftilib/htdocs/nibabel/ # This one udates for the specific user named at the top of the makefile upload-htmldoc: htmldoc upload-htmldoc-$(SF_USER) upload-htmldoc-%: htmldoc rsync -rzhvp --delete --chmod=Dg+s,g+rw $(HTML_DIR)/* \ $*,nipy@web.sourceforge.net:/home/groups/n/ni/nipy/htdocs/nibabel/ # # Sources # pylint: distclean # do distclean first to silence SWIG's sins PYTHONPATH=.:$(PYTHONPATH) pylint --rcfile doc/misc/pylintrc nibabel # # Distributions # # Check either everything was committed check-nodirty: # Need to run in clean tree. If fails: commit or clean first [ "x$$(git diff)" = "x" ] # || $(error "") check-debian: # Need to run in a Debian packaging branch [ -d debian ] check-debian-version: check-debian # Does debian version correspond to setup.py version? [ "$(DEBCHANGELOG_VERSION)" = "$(SETUPPY_VERSION)" ] embed-dev-version: check-nodirty # change upstream version sed -i -e "s/$(SETUPPY_VERSION)/$(DEV_VERSION)/g" setup.py nibabel/__init__.py # change package name sed -i -e "s/= 'nibabel',/= 'nibabel-snapshot',/g" setup.py deb-dev-autochangelog: check-debian # removed -snapshot from pkg name for now $(MAKE) check-debian-version || \ dch --newversion $(DEV_VERSION)-1 --package nibabel-snapshot \ --allow-lower-version "NiBabel development snapshot." deb-mergedev: git merge --no-commit origin/dist/debian/dev orig-src: distclean distclean # clean existing dist dir first to have a single source tarball to process -rm -rf dist # let python create the source tarball $(PYTHON) setup.py sdist --formats=gztar # rename to proper Debian orig source tarball and move upwards # to keep it out of the Debian diff tbname=$$(basename $$(ls -1 dist/*tar.gz)) ; ln -s $${tbname} ../nibabel-snapshot_$(DEV_VERSION).orig.tar.gz mv dist/*tar.gz .. # clean leftover rm MANIFEST devel-src: check-nodirty -rm -rf dist git clone -l . dist/nibabel-snapshot RELEASE_VERSION=$(DEV_VERSION) \ $(MAKE) -C dist/nibabel-snapshot -f ../../Makefile embed-dev-version orig-src mv dist/*tar.gz .. rm -rf dist devel-dsc: check-nodirty -rm -rf dist git clone -l . dist/nibabel-snapshot RELEASE_VERSION=$(DEV_VERSION) \ $(MAKE) -C dist/nibabel-snapshot -f ../../Makefile embed-dev-version orig-src deb-mergedev deb-dev-autochangelog # create the dsc -- NOT using deb-src since it would clean the hell first cd dist && dpkg-source -i'\.(gbp.conf|git\.*)' -b nibabel-snapshot mv dist/*.gz dist/*dsc .. rm -rf dist # make Debian source package # # DO NOT depend on orig-src here as it would generate a source tarball in a # Debian branch and might miss patches! deb-src: check-debian distclean cd .. && dpkg-source -i'\.(gbp.conf|git\.*)' -b $(CURDIR) bdist_rpm: $(PYTHON) setup.py bdist_rpm \ --doc-files "doc" \ --packager "nibabel authors " --vendor "nibabel authors " # build MacOS installer -- depends on patched bdist_mpkg for Leopard bdist_mpkg: $(PYTHON) tools/mpkg_wrapper.py setup.py install # Check for files not installed check-files: $(PYTHON) -c 'from nisext.testers import check_files; check_files("nibabel")' # Print out info for possible install methods check-version-info: $(PYTHON) -c 'from nisext.testers import info_from_here; info_from_here("nibabel")' # Run tests from installed code installed-tests: $(PYTHON) -c 'from nisext.testers import tests_installed; tests_installed("nibabel")' # Run tests from installed code sdist-tests: $(PYTHON) -c 'from nisext.testers import sdist_tests; sdist_tests("nibabel")' bdist-egg-tests: $(PYTHON) -c 'from nisext.testers import bdist_egg_tests; bdist_egg_tests("nibabel")' source-release: distclean python -m compileall . make distclean python setup.py sdist --formats=gztar,zip venv-tests: # I use this for python2.5 because the sdist-tests target doesn't work # (the tester routine uses a 2.6 feature) make distclean - rm -rf $(VIRTUAL_ENV)/lib/python$(PYVER)/site-packages/nibabel python setup.py install cd .. && nosetests $(VIRTUAL_ENV)/lib/python$(PYVER)/site-packages/nibabel tox-fresh: # tox tests with fresh-installed virtualenvs. Needs network. And # pytox, obviously. tox -c tox.ini tox-stale: # tox tests with MB's already-installed virtualenvs (numpy and nose # installed) tox -e python25,python26,python27,python32,np-1.2.1 .PHONY: orig-src pylint nipy-nibabel-d3c26be/Makefile.win000066400000000000000000000004601177264777700170420ustar00rootroot00000000000000# Makefile NiBabel under Windows using a standard Python distribution installer: # now the installer python setup.py bdist_wininst # # Cleaning # clean: -rmdir /S /Q -del /S *.a *.o *.gch *.pyd # # Testing # unittest: @set PYTHONPATH=$(CURDIR) & nosetests nibabel # # Trailer # .PHONY: all nipy-nibabel-d3c26be/README.rst000066400000000000000000000035011177264777700162740ustar00rootroot00000000000000.. -*- rest -*- .. vim:syntax=rest ======= NiBabel ======= This package provides read and write access to some common medical and neuroimaging file formats, including: ANALYZE_ (plain, SPM99, SPM2), GIFTI_, NIfTI1_, MINC_, MGH_ and ECAT_ as well as PAR/REC. There is some very limited support for DICOM_. NiBabel is the successor of PyNIfTI_. .. _ANALYZE: http://www.grahamwideman.com/gw/brain/analyze/formatdoc.htm .. _NIfTI1: http://nifti.nimh.nih.gov/nifti-1/ .. _MINC: http://wiki.bic.mni.mcgill.ca/index.php/MINC .. _PyNIfTI: http://niftilib.sourceforge.net/pynifti/ .. _GIFTI: http://www.nitrc.org/projects/gifti .. _MGH: http://surfer.nmr.mgh.harvard.edu/fswiki/FsTutorial/MghFormat .. _ECAT: http://xmedcon.sourceforge.net/Docs/Ecat .. _DICOM: http://medical.nema.org/ The various image format classes give full or selective access to header (meta) information and access to the image data is made available via NumPy arrays. Website ======= Current information can always be found at the NIPY nibabel website:: http://nipy.org/nibabel Mailing Lists ============= Please see the developer's list here:: http://mail.scipy.org/mailman/listinfo/nipy-devel Code ==== You can find our sources and single-click downloads: * `Main repository`_ on Github. * Documentation_ for all releases and current development tree. * Download as a tar/zip file the `current trunk`_. * Downloads of all `available releases`_. .. _main repository: http://github.com/nipy/nibabel .. _Documentation: http://nipy.org/nibabel .. _current trunk: http://github.com/nipy/nibabel/archives/master .. _available releases: http://github.com/nipy/nibabel/downloads License ======= Nibabel is licensed under the terms of the MIT license. Some code included with nibabel is licensed under the BSD license. Please the COPYING file in the nibabel distribution. nipy-nibabel-d3c26be/TODO000066400000000000000000000010031177264777700152700ustar00rootroot00000000000000.. -*- rest -*- .. vim:syntax=rst Stephan's TODO -------------- * testing for endianness correctly (e.g. while writing)? Matthew's TODO -------------- * Expose _data as dataobj * Implement slicing on dataobj (BIAP2) * Move file_map to {filename, fileobj, (filename, offset), (fileobj, offset) with suitable change warning * RO properties for affine, header. Update docs * is_proxy helper function and attribute for proxy objects * consider deprecating data_dtype methods for images. * new data package model nipy-nibabel-d3c26be/bin/000077500000000000000000000000001177264777700153565ustar00rootroot00000000000000nipy-nibabel-d3c26be/bin/nib-dicomfs000077500000000000000000000165431177264777700175070ustar00rootroot00000000000000#!/usr/bin/python # emacs: -*- mode: python-mode; py-indent-offset: 4; indent-tabs-mode: nil -*- # vi: set ft=python sts=4 ts=4 sw=4 et: ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ## # # See COPYING file distributed along with the NiBabel package for the # copyright and license terms. # ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ## # Copyright (C) 2011 Christian Haselgrove import sys import os import stat import errno import time import locale import logging import fuse import nibabel as nib import nibabel.dft as dft from optparse import OptionParser, Option uid = os.getuid() gid = os.getgid() encoding = locale.getdefaultlocale()[1] fuse.fuse_python_api = (0, 2) logger = logging.getLogger('nibabel.dft') class FileHandle: def __init__(self, fno): self.fno = fno self.keep_cache = False self.direct_io = False return def __str__(self): return 'FileHandle(%d)' % self.fno class DICOMFS(fuse.Fuse): def __init__(self, *args, **kwargs): self.followlinks = kwargs.pop('followlinks', False) fuse.Fuse.__init__(self, *args, **kwargs) self.fhs = {} return def get_paths(self): paths = {} for study in dft.get_studies(self.dicom_path, self.followlinks): pd = paths.setdefault(study.patient_name_or_uid(), {}) patient_info = 'patient information\n' patient_info = 'name: %s\n' % study.patient_name patient_info += 'ID: %s\n' % study.patient_id patient_info += 'birth date: %s\n' % study.patient_birth_date patient_info += 'sex: %s\n' % study.patient_sex pd['INFO'] = patient_info.encode('ascii', 'replace') study_datetime = '%s_%s' % (study.date, study.time) study_info = 'study info\n' study_info += 'UID: %s\n' % study.uid study_info += 'date: %s\n' % study.date study_info += 'time: %s\n' % study.time study_info += 'comments: %s\n' % study.comments d = {'INFO': study_info.encode('ascii', 'replace')} for series in study.series: series_info = 'series info\n' series_info += 'UID: %s\n' % series.uid series_info += 'number: %s\n' % series.number series_info += 'description: %s\n' % series.description series_info += 'rows: %d\n' % series.rows series_info += 'columns: %d\n' % series.columns series_info += 'bits allocated: %d\n' % series.bits_allocated series_info += 'bits stored: %d\n' % series.bits_stored series_info += 'storage instances: %d\n' % len(series.storage_instances) d[series.number] = {'INFO': series_info.encode('ascii', 'replace'), '%s.nii' % series.number: (series.nifti_size, series.as_nifti), '%s.png' % series.number: (series.png_size, series.as_png)} pd[study_datetime] = d return paths def match_path(self, path): wd = self.get_paths() if path == '/': logger.debug('return root') return wd for part in path.lstrip('/').split('/'): logger.debug("path:%s part:%s" % (path, part)) if part not in wd: return None wd = wd[part] logger.debug('return') return wd def readdir(self, path, fh): logger.info('readdir %s' % (path,)) matched_path = self.match_path(path) if matched_path is None: return -errno.ENOENT logger.debug('matched %s' % (matched_path,)) fnames = [ k.encode('ascii', 'replace') for k in matched_path.keys() ] fnames.append('.') fnames.append('..') return [ fuse.Direntry(f) for f in fnames ] def getattr(self, path): logger.debug('getattr %s' % path) matched_path = self.match_path(path) logger.debug('matched: %s' % (matched_path,)) now = time.time() st = fuse.Stat() if isinstance(matched_path, dict): st.st_mode = stat.S_IFDIR | 0755 st.st_ctime = now st.st_mtime = now st.st_atime = now st.st_uid = uid st.st_gid = gid st.st_nlink = len(matched_path) return st if isinstance(matched_path, str): st.st_mode = stat.S_IFREG | 0644 st.st_ctime = now st.st_mtime = now st.st_atime = now st.st_uid = uid st.st_gid = gid st.st_size = len(matched_path) st.st_nlink = 1 return st if isinstance(matched_path, tuple): st.st_mode = stat.S_IFREG | 0644 st.st_ctime = now st.st_mtime = now st.st_atime = now st.st_uid = uid st.st_gid = gid st.st_size = matched_path[0]() st.st_nlink = 1 return st return -errno.ENOENT def open(self, path, flags): logger.debug('open %s' % (path,)) matched_path = self.match_path(path) if matched_path is None: return -errno.ENOENT for i in xrange(1, 10): if i not in self.fhs: if isinstance(matched_path, str): self.fhs[i] = matched_path elif isinstance(matched_path, tuple): self.fhs[i] = matched_path[1]() else: raise -errno.EFTYPE return FileHandle(i) raise -errno.ENFILE # not done def read(self, path, size, offset, fh): logger.debug('read') logger.debug(path) logger.debug(size) logger.debug(offset) logger.debug(fh) return self.fhs[fh.fno][offset:offset+size] def release(self, path, flags, fh): logger.debug('release') logger.debug(path) logger.debug(fh) del self.fhs[fh.fno] return def get_opt_parser(): # use module docstring for help output p = OptionParser( usage="%s [OPTIONS] " % os.path.basename(sys.argv[0]), version="%prog " + nib.__version__) p.add_options([ Option("-v", "--verbose", action="count", dest="verbose", default=0, help="make noise. Could be specified multiple times"), ]) p.add_options([ Option("-L", "--follow-links", action="store_true", dest="followlinks", default=False, help="Follow symbolic links in DICOM directory"), ]) return p if __name__ == '__main__': parser = get_opt_parser() (opts, files) = parser.parse_args() if opts.verbose: logger.addHandler(logging.StreamHandler(sys.stdout)) logger.setLevel(opts.verbose > 1 and logging.DEBUG or logging.INFO) if len(files) != 2: sys.stderr.write("Please provide two arguments:\n%s\n" % parser.usage) sys.exit(1) fs = DICOMFS(dash_s_do='setsingle', followlinks=opts.followlinks) fs.parse(['-f', '-s', files[1]]) fs.dicom_path = files[0].decode(encoding) try: fs.main() except fuse.FuseError: # fuse prints the error message sys.exit(1) sys.exit(0) # eof nipy-nibabel-d3c26be/bin/nib-ls000077500000000000000000000146771177264777700165070ustar00rootroot00000000000000#!/usr/bin/python # emacs: -*- mode: python-mode; py-indent-offset: 4; indent-tabs-mode: nil -*- # vi: set ft=python sts=4 ts=4 sw=4 et: ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ## # # See COPYING file distributed along with the NiBabel package for the # copyright and license terms. # ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ## """ Output a summary table for neuroimaging files (resolution, dimensionality, etc.) """ __author__ = 'Yaroslav Halchenko' __copyright__ = 'Copyright (c) 2011-2012 Yaroslav Halchenko ' \ 'and NiBabel contributors' __license__ = 'MIT' import re import sys import nibabel as nib import numpy as np from math import ceil from optparse import OptionParser, Option from StringIO import StringIO # global verbosity switch verbose_level = 0 def verbose(l, msg): """Print `s` if `l` is less than the `verbose_level` """ # TODO: consider using nibabel's logger if l <= int(verbose_level): print "%s%s" % (' ' * l, msg) def error(msg, exit_code): print >> sys.stderr, msg sys.exit(exit_code) def table2string(table, out=None): """Given list of lists figure out their common widths and print to out Parameters ---------- table : list of lists of strings What is aimed to be printed out : None or stream Where to print. If None -- will print and return string Returns ------- string if out was None """ print2string = out is None if print2string: out = StringIO() # equalize number of elements in each row Nelements_max = len(table) \ and max(len(x) for x in table) for i, table_ in enumerate(table): table[i] += [''] * (Nelements_max - len(table_)) # figure out lengths within each column atable = np.asarray(table) # eat whole entry while computing width for @w (for wide) markup_strip = re.compile('^@([lrc]|w.*)') col_width = [ max( [len(markup_strip.sub('', x)) for x in column] ) for column in atable.T ] string = "" for i, table_ in enumerate(table): string_ = "" for j, item in enumerate(table_): item = str(item) if item.startswith('@'): align = item[1] item = item[2:] if not align in ['l', 'r', 'c', 'w']: raise ValueError, 'Unknown alignment %s. Known are l,r,c' % align else: align = 'c' NspacesL = max(ceil((col_width[j] - len(item))/2.0), 0) NspacesR = max(col_width[j] - NspacesL - len(item), 0) if align in ['w', 'c']: pass elif align == 'l': NspacesL, NspacesR = 0, NspacesL + NspacesR elif align == 'r': NspacesL, NspacesR = NspacesL + NspacesR, 0 else: raise RuntimeError, 'Should not get here with align=%s' % align string_ += "%%%ds%%s%%%ds " \ % (NspacesL, NspacesR) % ('', item, '') string += string_.rstrip() + '\n' out.write(string) if print2string: value = out.getvalue() out.close() return value def ap(l, format, sep=', '): """Little helper to enforce consistency""" if l == '-': return l ls = [format % x for x in l] return sep.join(ls) def safe_get(obj, name): """ """ try: f = getattr(obj, 'get_' + name) return f() except Exception, e: verbose(2, "get_%s() failed -- %s" % (name, e)) return '-' def get_opt_parser(): # use module docstring for help output p = OptionParser( usage="%s [OPTIONS] [FILE ...]\n\n" % sys.argv[0] + __doc__, version="%prog " + nib.__version__) p.add_options([ Option("-v", "--verbose", action="count", dest="verbose", default=0, help="Make more noise. Could be specified multiple times"), Option("-s", "--stats", action="store_true", dest='stats', default=False, help="Output basic data statistics"), Option("-z", "--zeros", action="store_true", dest='stats_zeros', default=False, help="Include zeros into output basic data statistics (--stats)"), ]) return p def proc_file(f, opts): verbose(1, "Loading %s" % f) row = ["@l%s" % f] try: vol = nib.load(f) h = vol.get_header() except Exception, e: row += ['failed'] verbose(2, "Failed to gather information -- %s" % str(e)) return row row += [ str(safe_get(h, 'data_dtype')), '@l[%s]' %ap(safe_get(h, 'data_shape'), '%3g'), '@l%s' % ap(safe_get(h, 'zooms'), '%.2f', 'x') ] # Slope if (hasattr(h, 'has_data_slope') and (h.has_data_slope or h.has_data_intercept)) \ and not h.get_slope_inter() in [(1.0, 0.0), (None, None)]: row += ['@l*%.3g+%.3g' % h.get_slope_inter()] else: row += [ '' ] if (hasattr(h, 'extensions') and len(h.extensions)): row += ['@l#exts: %d' % len(h.extensions)] else: row += [ '' ] try: if (hasattr(h, 'get_qform') and hasattr(h, 'get_sform') and (h.get_qform() != h.get_sform()).any()): row += ['sform'] else: row += [''] except Exception, e: verbose(2, "Failed to obtain qform or sform -- %s" % str(e)) if isinstance(h, nib.AnalyzeHeader): row += [''] else: row += ['error'] if opts.stats: # We are doomed to load data try: d = vol.get_data() if not opts.stats_zeros: d = d[np.nonzero(d)] # just # of elements row += ["[%d] " % np.prod(d.shape)] # stats row += [len(d) and '%.2g:%.2g' % (np.min(d), np.max(d)) or '-'] except Exception, e: verbose(2, "Failed to obtain stats -- %s" % str(e)) row += ['error'] return row def main(): """Show must go on""" parser = get_opt_parser() (opts, files) = parser.parse_args() global verbose_level verbose_level = opts.verbose if verbose_level < 3: # suppress nibabel format-compliance warnings nib.imageglobals.logger.level = 50 rows = [proc_file(f, opts) for f in files] print(table2string(rows)) if __name__ == '__main__': main() nipy-nibabel-d3c26be/bin/nib-nifti-dx000077500000000000000000000022131177264777700175720ustar00rootroot00000000000000#!/usr/bin/env python # emacs: -*- mode: python-mode; py-indent-offset: 4; indent-tabs-mode: nil -*- # vi: set ft=python sts=4 ts=4 sw=4 et: ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ## # # See COPYING file distributed along with the NiBabel package for the # copyright and license terms. # ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ## ''' Print nifti diagnostics for header files ''' import sys from optparse import OptionParser import nibabel as nib def main(): """ Go go team """ parser = OptionParser( usage="%s [FILE ...]\n\n" % sys.argv[0] + __doc__, version="%prog " + nib.__version__) (opts, files) = parser.parse_args() for fname in files: fobj = nib.volumeutils.allopen(fname) hdr = fobj.read(nib.nifti1.header_dtype.itemsize) result = nib.Nifti1Header.diagnose_binaryblock(hdr) if len(result): print 'Picky header check output for "%s"\n' % fname print result print else: print 'Header for "%s" is clean' % fname if __name__ == '__main__': main() nipy-nibabel-d3c26be/bin/parrec2nii000077500000000000000000000160771177264777700173550ustar00rootroot00000000000000#!/usr/bin/env python """PAR/REC to NIfTI converter """ from optparse import OptionParser, Option import sys import os import gzip import numpy as np import nibabel import nibabel.parrec as pr import nibabel.nifti1 as nifti1 from nibabel.loadsave import read_img_data from nibabel.filename_parser import splitext_addext # global verbosity switch verbose_switch = False def get_opt_parser(): # use module docstring for help output p = OptionParser( usage="%s [OPTIONS] \n\n" % sys.argv[0] + __doc__, version="%prog " + nibabel.__version__) p.add_option( Option("-v", "--verbose", action="store_true", dest="verbose", default=False, help="Make some noise.")) p.add_option( Option("-o", "--output-dir", action="store", type="string", dest="outdir", default=None, help=\ """Destination directory for NIfTI files. Default: current directory.""")) p.add_option( Option("-c", "--compressed", action="store_true", dest="compressed", default=False, help="Whether to write compressed NIfTI files or not.")) p.add_option( Option("--origin", action="store", dest="origin", default="scanner", help=\ """Reference point of the q-form transformation of the NIfTI image. If 'scanner' the (0,0,0) coordinates will refer to the scanner's iso center. If 'fov', this coordinate will be the center of the recorded volume (field of view). Default: 'scanner'.""")) p.add_option( Option("--minmax", action="store", nargs=2, dest="minmax", help=\ """Mininum and maximum settings to be stored in the NIfTI header. If any of them is set to 'parse', the scaled data is scanned for the actual minimum and maximum. To bypass this potentially slow and memory intensive step (the data has to be scaled and fully loaded into memory), fixed values can be provided as space-separated pair, e.g. '5.4 120.4'. It is possible to set a fixed minimum as scan for the actual maximum (and vice versa). Default: 'parse parse'.""")) p.set_defaults(minmax=('parse', 'parse')) p.add_option( Option("--store-header", action="store_true", dest="store_header", default=False, help=\ """If set, all information from the PAR header is stored in an extension of the NIfTI file header. Default: off""")) p.add_option( Option("--scaling", action="store", dest="scaling", default='dv', help=\ """Choose data scaling setting. The PAR header defines two different data scaling settings: 'dv' (values displayed on console) and 'fp' (floating point values). Either one can be chosen, or scaling can be disabled completely ('off'). Note that neither method will actually scale the data, but just store the corresponding settings in the NIfTI header. Default: 'dv'""")) return p def verbose(msg, indent=0): if verbose_switch: print "%s%s" % (' ' * indent, msg) def error(msg, exit_code): print >> sys.stderr, msg sys.exit(exit_code) def proc_file(infile, opts): # load the PAR header pr_img = pr.load(infile) pr_hdr = pr_img.get_header() # get the raw unscaled data form the REC file raw_data = read_img_data(pr_img, prefer='unscaled') # compute affine with desired origin affine = pr_hdr.get_affine(origin=opts.origin) # create an nifti image instance -- to get a matching header nimg = nifti1.Nifti1Image(raw_data, affine) nhdr = nimg.get_header() if 'parse' in opts.minmax: # need to get the scaled data verbose('Load (and scale) the data to determine value range') if opts.scaling == 'off': scaled_data = raw_data else: slope, intercept = pr_hdr.get_data_scaling(method=opts.scaling) scaled_data = slope * raw_data scaled_data += intercept if opts.minmax[0] == 'parse': nhdr.structarr['cal_min'] = scaled_data.min() else: nhdr.structarr['cal_min'] = float(opts.minmax[0]) if opts.minmax[1] == 'parse': nhdr.structarr['cal_max'] = scaled_data.max() else: nhdr.structarr['cal_max'] = float(opts.minmax[1]) # container for potential NIfTI1 header extensions exts = nifti1.Nifti1Extensions() if opts.store_header: # dump the full PAR header content into an extension fobj = open(infile, 'r') hdr_dump = fobj.read() dump_ext = nifti1.Nifti1Extension('comment', hdr_dump) fobj.close() exts.append(dump_ext) # put any extensions into the image nimg.extra['extensions'] = exts # image description descr = "%s;%s;%s;%s" % ( pr_hdr.general_info['exam_name'], pr_hdr.general_info['patient_name'], pr_hdr.general_info['exam_date'].replace(' ',''), pr_hdr.general_info['protocol_name']) nhdr.structarr['descrip'] = descr[:80] if pr_hdr.general_info['max_dynamics'] > 1: # fMRI nhdr.structarr['pixdim'][4] = pr_hdr.general_info['repetition_time'] # store units -- always mm and msec nhdr.set_xyzt_units('mm', 'msec') else: # anatomical or DTI nhdr.set_xyzt_units('mm', 'unknown') # get original scaling if opts.scaling == 'off': slope = 1.0 intercept = 0.0 else: slope, intercept = pr_hdr.get_data_scaling(method=opts.scaling) nhdr.set_slope_inter(slope, intercept) # finalize the header: set proper data offset, pixdims, ... nimg.update_header() # figure out the output filename outfilename = splitext_addext(os.path.basename(infile))[0] if not opts.outdir is None: # set output path outfilename = os.path.join(opts.outdir, outfilename) # prep a file if opts.compressed: verbose('Using gzip compression') outfilename += '.nii.gz' outfile = gzip.open(outfilename, 'w') else: outfilename += '.nii' outfile = open(outfilename, 'w') verbose('Writing %s' % outfilename) # first write the header nimg._write_header(outfile, nhdr, slope, intercept) # now the data itself, but prevent any casting or scaling nibabel.volumeutils.array_to_file( raw_data, outfile, offset=nhdr.get_data_offset()) # done outfile.close() def main(): parser = get_opt_parser() (opts, infiles) = parser.parse_args() global verbose_switch verbose_switch = opts.verbose if not opts.origin in ['scanner', 'fov']: error("Unrecognized value for --origin: '%s'." % opts.origin, 1) # store any exceptions errs = [] for infile in infiles: verbose('Processing %s' % infile) try: proc_file(infile, opts) except Exception: err = sys.exc_info()[1] errs.append('%s: %s' % (infile, err)) if len(errs): error('Caught %i exceptions. Dump follows:\n\n %s' % (len(errs), '\n'.join(errs)), 1) else: verbose('Done') if __name__ == '__main__': main() nipy-nibabel-d3c26be/doc/000077500000000000000000000000001177264777700153535ustar00rootroot00000000000000nipy-nibabel-d3c26be/doc/Makefile000066400000000000000000000063441177264777700170220ustar00rootroot00000000000000# Makefile for Sphinx documentation # # You can set these variables from the command line. SPHINXOPTS = SPHINXBUILD = sphinx-build PAPER = # Internal variables. BUILDROOT = ../build PAPEROPT_a4 = -D latex_paper_size=a4 PAPEROPT_letter = -D latex_paper_size=letter ALLSPHINXOPTS = -d $(BUILDROOT)/doctrees $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) source .PHONY: help clean html web pickle htmlhelp latex changes linkcheck help: @echo "Please use \`make ' where is one of" @echo " html to make standalone HTML files" @echo " pickle to make pickle files (usable by e.g. sphinx-web)" @echo " htmlhelp to make HTML files and a HTML help project" @echo " latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter" @echo " changes to make an overview over 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 " gitwash-update update git workflow from source repo" clean: -rm -rf $(BUILDROOT)/* -rm -rf source/generated generate-stamp generate: generate-stamp generate-stamp: mkdir -p $(BUILDROOT) PYTHONPATH=$(CURDIR)/sphinxext:$(CURDIR)/..:$(PYTHONPATH) \ python sphinxext/autosummary/generate.py \ -t sphinxext/autosummary/templates -o source/generated source/*.rst @touch $@ html: generate mkdir -p $(BUILDROOT)/html $(BUILDROOT)/doctrees $(SPHINXBUILD) -b html $(ALLSPHINXOPTS) $(BUILDROOT)/html @echo @echo "Build finished. The HTML pages are in $(BUILDROOT)/html." pickle: mkdir -p $(BUILDROOT)/pickle $(BUILDROOT)/doctrees $(SPHINXBUILD) -b pickle $(ALLSPHINXOPTS) $(BUILDROOT)/pickle @echo @echo "Build finished; now you can process the pickle files or run" @echo " sphinx-web $(BUILDROOT)/pickle" @echo "to start the sphinx-web server." web: pickle htmlhelp: mkdir -p $(BUILDROOT)/htmlhelp $(BUILDROOT)/doctrees $(SPHINXBUILD) -b htmlhelp $(ALLSPHINXOPTS) $(BUILDROOT)/htmlhelp @echo @echo "Build finished; now you can run HTML Help Workshop with the" \ ".hhp project file in $(BUILDROOT)/htmlhelp." latex: mkdir -p $(BUILDROOT)/latex $(BUILDROOT)/doctrees $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDROOT)/latex @echo @echo "Build finished; the LaTeX files are in $(BUILDROOT)/latex." @echo "Run \`make all-pdf' or \`make all-ps' in that directory to" \ "run these through (pdf)latex." changes: mkdir -p $(BUILDROOT)/changes $(BUILDROOT)/doctrees $(SPHINXBUILD) -b changes $(ALLSPHINXOPTS) $(BUILDROOT)/changes @echo @echo "The overview file is in $(BUILDROOT)/changes." linkcheck: mkdir -p $(BUILDROOT)/linkcheck $(BUILDROOT)/doctrees $(SPHINXBUILD) -b linkcheck $(ALLSPHINXOPTS) $(BUILDROOT)/linkcheck @echo @echo "Link check complete; look for any errors in the above output " \ "or in $(BUILDROOT)/linkcheck/output.txt." doctest: $(SPHINXBUILD) -b doctest $(ALLSPHINXOPTS) $(BUILDROOT)/doctest @echo "Testing of doctests in the sources finished, look at the " \ "results in _build/doctest/output.txt." gitwash-update: python ../tools/gitwash_dumper.py source nibabel --github-user=nipy \ --project-url=http://nipy.org/nibabel \ --project-ml-url=http://mail.scipy.org/mailman/listinfo/nipy-devel nipy-nibabel-d3c26be/doc/misc/000077500000000000000000000000001177264777700163065ustar00rootroot00000000000000nipy-nibabel-d3c26be/doc/misc/header.py000066400000000000000000000006021177264777700201060ustar00rootroot00000000000000# emacs: -*- mode: python-mode; py-indent-offset: 4; indent-tabs-mode: nil -*- # vi: set ft=python sts=4 ts=4 sw=4 et: ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ## # # See COPYING file distributed along with the NiBabel package for the # copyright and license terms. # ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ## nipy-nibabel-d3c26be/doc/misc/pylintrc000066400000000000000000000054321177264777700201010ustar00rootroot00000000000000# PyLint configuration file for the project nibabel. # # This pylintrc file will use the default settings except for the # naming conventions, which will allow for camel case naming as found # in Java code or several libraries such as PyQt, etc. # # At some moment it was modified by yoh from the original one # which can be found on debian systems at # /usr/share/doc/pylint/examples/pylintrc_camelcase # # Just place it in ~/.pylintrc for user-wide installation or simply # use within a call to pylint or export environment variable # export PYLINTRC=$PWD/doc/misc/pylintrc [BASIC] # Regular expression which should only match correct module names module-rgx=([a-z][a-z0-9_]*)$ attr-rgx=[a-z_][a-z0-9_]{,30} # Regular expression which should only match correct class names class-rgx=[A-Z_]+[a-zA-Z0-9]+$ # Regular expression which should only match correct function names function-rgx=[a-z_]+[a-z0-9_][a-z0-9]*$ # Regular expression which should only match correct method names method-rgx=(([a-z_]|__)[a-z0-9_]*(__)?|test[a-zA-Z0-9_]*)$ # Regular expression which should only match correct argument names argument-rgx=[a-z][a-z0-9]*_*[a-z0-9]*_*[a-z0-9]*_?$ # Regular expression which should only match correct variable names variable-rgx=([a-z_]+[a-z0-9]*_*[a-z0-9]*_*[a-z0-9]*_?||(__[a-zA-Z0-9_]*__))$||[A-Z]+ # Regular expression which should only match correct module level names # Default: (([A-Z_][A-Z1-9_]*)|(__.*__))$ const-rgx=([a-z_]+[a-z0-9]*_*[a-z0-9]*_*[a-z0-9]*_?|__[a-zA-Z0-9_]*__)$||[A-Z]+ [FORMAT] indent-string=' ' [DESIGN] # We are capable to follow that many, yes! max-branchs = 20 # some base class constructors have quite a few arguments max-args = 14 # and due to ClassWithCollections and conditional attributes classes by default have lots # of attributes max-attributes = 14 # some sci computation can't be handled efficiently without having #lots of locals max-locals = 35 [MESSAGES CONTROL] # Disable the following PyLint messages: # R0903 - Not enough public methods # W0105 - String statement has no effect # often used for after-line doc # W0142 - Used * or ** magic # W0232 - Class has no __init__ method # W0212 - Access to a protected member ... of a client class # W0613 - Unused argument # E1101 - Has no member (countless false-positives) disable-msg=R0903,W0142,W0105,W0212,W0613,E1101 [REPORTS] # set the output format. Available formats are text, parseable, colorized and # html output-format=colorized # Include message's id in output include-ids=yes # Tells wether to display a full report or only the messages reports=yes [MISCELLANEOUS] # List of note tags to take in consideration, separated by a comma. # FIXME -- something which needs fixing # TODO -- future plan # XXX -- some concern # YYY -- comment/answer to above mentioned concern notes=FIXME,TODO,XXX,YYY nipy-nibabel-d3c26be/doc/pics/000077500000000000000000000000001177264777700163115ustar00rootroot00000000000000nipy-nibabel-d3c26be/doc/pics/fslview_pst.png000066400000000000000000002337041177264777700213750ustar00rootroot00000000000000PNG  IHDRyi،sRGBbKGD pHYs  tIME )z_ IDATxwxu3`]^$vM"jd5V9Slǎ$NbyN_\^bX"(KEUHXD'hwf ,l}~$vΙs Kw?$g| O$ԙR)иJ%ԩz$ 9ED2ِ~PgI# ,YNQd!$),˨$J(BX0ӯXR8:G^f* Ly}phnTt:ݔi"(dmJ[Y2:D )fQ$^ z|444444Χ=;ux4 lNG$AU"HE284HÎQB z+FCCq&((^BۏvӦǺ!k)z2 ?–hVe0 3G%BG0KtWč%FgG7 iK8[C<2;v%92t!BиHU<DAiZEA =r]Bb-KFQp_Z7գ3cb! FFPv<|a| BnA<ƅc0Ɏ((̡Xbq ),AVYrBJo;CfrЫ{Jml rKNGɵe^y:ўRm=OEފlHlצ"Qe`sd~x5kgVGe`oG`oSz 54.JjU#JZkl7y@4 EѡƔ(7nٴqJ_% / (*`욅q [0%YUᢶáͧ<*= AQdo߾& Wo3.1f4^.O ~d [u*M]A~m "*IeSòyyEE1xŌa"a ?|=I5vѥE)e `1)՘"Ҩŕ H(Ǯ: IP+% đQdF<|ܞ~ 1`4hhh\DDA 攦0?Orcv.W B*!%TwI,aSF'Uaa~7x_BL## ܼ(;0ILB)sQaiCF?T,ᰂd$;7 5D#} Vb~l9v>lPD@@ " iQ2 oϩh:_ζݘ{Q]̊!!يl R v$sĤи|Aw Hv$mCB2?>|2"YIN٭y@ܴu8aj{d >vy,Էx1H: A7Sa֋3ě,& Z6P rҍ?^[-nUQ!hEq ]ScEc@ҏ̋ cJ)Pѩ-':A&Dz7>~`_U9T+ ˄*AWPdTEA@u#QhQ҃*(rF JD$=":.7or8&SePA ?Ê('tV:벵!zf:џ%F%!#J\uVGXU%UQRD b "-}qqxUm,N##ƜE" F#gq6%ކ";g9Rēe:/ GxA͡'D SZkhhhhh|H2bF|&)S~=ׯgllf:| ag}0A;?@m}GO49<<uOAv}{ECAj Ӧ ٽhhhhhh$x,/yfzرg/} ;\lj}{~1Ga\x^37d%m}$͟<4S@ r&E>`˖Z,ʛ$9l4زy/Ju]JZGmSϡϝwm".pB zռ̚,~lbONvL0+V2#Xs |3hs'hw8Ŋ|e8+M0%O#ɬ'_CKgC~Rf_OsKx#XPt{;UO| Wulۊkti9i5ICCCC`Bי-r0 جl̻dQ!9䜷o"m\Rґ&-ld6a3&\d~MO5+>O` hr.EY6f;J؊˩6oI#=:1XkUbOp$HtrQŲʹxG6(S;qE mKg𥥱p===sfoxjkk'}M7~_̻0w.^G:wzz:7tӄ4?}CrV{44444<wMVFQdOCCCCQډ+(} +O?iYGzwIgrDC*CP"DڦHWH7}Lwww`umχFOo/T˴иdX"~u&QQ$3(}NpDh¨}$HieD~~>ĥ6SNE0pjNFFPh5B8Z6Gi8ݯc6?>۷o'5-GLLK,A(XS7pl6gh8JLuXagۚ(E)",]N740>ըc%HKPWv#aűY@ m t~ĂKHOi>^jd~Ymh9IF#?0iii?}4oҗ91@k㏓u:>% oĭ7݆ $%%b VZŎ;Pb D#"̜"d/X3vp RS3h>Y<{[Pj(btz\܌4ٲEjRjXvo}9rkj508 ]Sվl=| kƯ#<իg?Kaa!=ml:wC?НwVM?53Na2B(7xD"*0݈Dރ X&>Z;xZl(!lYi k%il(~#nV?#GuW%y^6lO*L8q>7wSJ#Y+rOB[o[ooҞ3j?S|k_Im|>44̚3!a &]*wdJIvD#QzxXRU@h@0vjwq259L©'ޯƧD})))<^RRBPp,\,z EbkEVTUTO%*+Rhk(đ2U֮^zZ1H``˙A5>ulwww7 dmll@ 0A?vmP?0@(>=ir8ށ,eiYtx{Ԟ6i# b2w{$OZx&fN9IfhQ|3100^?1C8pet:ϻa=d0F1>x<(ʹd2p$G4*3Nr200@0x&".H$2if#*{/z jU;_*;S6Ȳ55LKɰOvV ڂf B甯M- &KMPz͍'VV_T_wIə ٻw/3fk!rdVԴ;x&-- 5  d|>n736@x}"Z[[b֬YTWWSTTDuu50oޅ+"(288Hrr2p7xj~¢R-t^Vʦx6Z7I筛J-`@e蠬ly+!磽=vm9~)={x<ܹs',RYD"56smkcJGCQ665QRZƚs))z|>_zN]ǿ_9~=R=ڞ_^ddYF'먯?cGx8q6'L$IK#ƧkkkCUURRRP&\544N`*a[aɮBq{zY37v^tEӹqjH𕵤7<̶m[HKk_&wƮ( 8F (rψW_pZerF"D2S-~z>JLFQۋ_[ ~Go4}6"K͆9PߒN\ 'ioo'++kD>pGܭ"Fhoo' vM[QiȊCK(J<0V|~|~"GR汶!L475R؎ p~l~ᐌÎ&]W'7Mu hh\}xx,l u4$YD̆!n!(*=O~C_ 2S)) ә29CxK/e~,Z+_n:YM#\?o.ʰl;I$AU&ZG-]4YBT9q`ON%٪QX4^.u;:bgFo2#&+PWwQtvt{N>tz<RSScϩpۭ73k,~_5n7|3#Or5! 'z,]%KLx~?zƚ[n'~ Yў[5эy bfZ/7 Fy܃gxxNvvn`۶miIIIҌ3(//n Rrrr>>Zb:P_W^-7abcadP8 ?U$"(L,"ϱx4KD%3 t "NTǎ[oͿw~:z|CÜ9L@PU93V(]HUGtLI'H xA:y H0 ߥ?~^{nv2335mqq b(ʤ`F(Сn_?>CCi Σгsr;X~ SRSO/g-457q]%%%%X\|$f$D8 Ί+JEСxa01|Ws/<(C.5%+畗_DOT+8rO=;rrrXp!kn.dl#.Xl43Ϡ9|Fܞ1f6mC:w}wR IDAT({񯕛C#TYml@u+ed7B=RMZZ:~!Rz/~싲Gv;#zdpDewk$-@ =CRXi 'DdLtݮ*s6hOXG#Dcmsk7Jt8ptSZ>#AYȑ#{* `wE/I Bռ2C D7c<ՕG8GG_md2qzHi|h}撤[w|-X}i|/PM#/:jKw(d2S PCqq1+V"ɞ4p7̨%TQYŬJihhDBWǽ[nn.r {h4z}4=//^L/`&Xq磩kYm@mN /z1L8.9GUU~DQd``˅,xxɲL @$dY& bXB!^XVDQDEEV+£_'7fu>^0c>eE;z͛^"#+#]l (E0̱@fa٧d hZm&fNNcjjkq8TEUq:RH"ޞn:2ҋC?d]PAͅ^ L_||>~[_W]f0YY7`vpX#rfBO0;;1pM6c\S#2źVQ'ىD u7b+SG,tYAD2ټC 8Lvv6:>FLqqgώu, K]˂ 1MuVgSR5NN7BQ$BYtH{E EQ뵍F#K,d22sFqUG]NϔMnw L//0?~ d"999&bfn\όC,ywlƆ_ ~⻹eZaE 3-AI` tBxaSdw}/i)+ (*uϒÿO^t(//Gq!.\gϞ=|a6in;^SSrᢢGZeO+-˭?iI)T,o[(Ƭ3#d 2VIdq YE(vd7seNQ8\TU\Zv_Q0fXd:όO&}LmL5.ZL&|># # /? GM\wBvN mqa>=}$uh􇙽t F:::lkk$7FcS zngl@/>&P(ٕw.W[uR:I`qVȵԔktZq0:+UvFB!t.6Jjj`ܻ.EՊ(LH&m c2HD(&8ylQGG V8o+L?2卭9sB<•:[B$ p|#Y+(w| ]2 7raԉ9,zkQ%cs8uܽ cx =F?FW̜uiƧ\NR ,RS]Z&Q),,8o\HǗz윯`00gvG׋De imm;p:r~}}Dvz~: F ,]S?!Uo~!?d̀ÅIbW±c\dcu{{ ]P:8p^O GνI(Do Ic݋6嘒]u!LZOQ&c+((rG54.H'%%G=*QŅ/4hK){tP(N'}}}q xצ")))A}>G_(vp8j0-/ʊppl؅vf,)=m_C!~gK"=~$zcs&ӧO#F۶m- [ˣ222Ft:t̞=^ҥK)--g UlyMڼhrٚ+[1C,uٴbp PRRD0v].f6$i-mWOY~n H<(^kS/\BF5ab4]έcV|^ݻIOOƕ?|z,.MMMZhh\$ۯs:S544. = и8prw##ݷpgK.#>'֤,_tin*? g 6ib'lُV|GS:}}dAJf.NA/mdJq>0$~|k_eƼEv/v3D! {ºx5ѾzE593|$?-Nҽ=0؞ ;Xgwb&Ȃ[>F~1V@'oy0o")Ssx>7Osl-l|ufd.YbjUJF^1K,aXL-C48_r}1H~4wյLKGy8@qde<:i:X{ K$7qfR3l׌fb(:lk,+5du׿7m^^ {f 933M4*Ӎ$ R9}3I9m8Elt:Q6!H#n7nS)`˞9YS͒ߦUs /?9y72|cx{;>Uo̼-v5./^ TU$$NŕSBAn!Ee{;YP̆oRR/ȇ>X>{&"aB`~9v+q-y{+jf,Zy7i9zID$IIX-s'pe9$o5.M_ǜZ7QҲ\}+cЏڅsh'l_|ﻘl* hs~;P>6,D" ް O[5)E ʃwcKZEG(bn:coӓ KQ} ,,ϛkj+fAk~)YضS̙3G[q]9zfW5*'x:w}1r>d~k%es9SCԡ:QG TEfmn,f5¡&fVVq-S44O_\KVy`,]!<(0}<9 i,ޑE_ 9nuk*}Okq,?oASQYuIfd摑V;wԎ!˗/,k.->aF/^|UUUx<JJJNFF`Jz{{>}:,cX1chrn73g$>*++deeatz={6a41188Hyy9,SVVNj鱗x --p8LEE߻\.N'0}t  NRRh9s0<l, z `l6UUUx^c#!PYYP(D^^999D"fΜfƌD"RSSINNFQn#"xk,^/EEEg-iӦ)))Xe.ӦMBUU6:Egӽ(DtˏzJt6CP 6( ,DE`0Ueh4J4EUUBP(D""įBh4(ѝTUE`0ahTU?S$?ә(~Ꙧ&r\3iykg{kgh]HΗ$]2?W^Sc X˸O[Y_첵SGx}d旱$GghMgw?U׬Y]k׮eѢEop뭷&$%k߾}' ~ ?pyyy 9jh-[$Ľ/27oov'|ʗihhLI^,Z6+ *|{K/޽{YhQ+V$%kt:*K)K$ɚ*>Jskhh\>,Y2{.a%k֭tuu%DL;v~UU"eE"֯_Yh^ziqx衇:YWFc \2anᆄɺ`H,N>9Bи͌ #(D"=8\/X aϚ(Yeee.7 Wʫ&q#47_eHY$1w܄:v|Uv|꧃K}|x}׬f3sUd04Q{(;9rŋuV 9uVfϞͫd:v;/s_pP[[Kkk+7RUUų>Kff&Yyw9s&O>$ݻp8عs'ӦM㩧-[q߿y***x7Ev=bݺu̝;_~JCC X,?ʆ رc>}Iشi<3~n7p-[P^^ΓO>Iqq1vbxxACQQO?4l޼Y_SUUƍQSSCrr2?JG%!Le`Z'>p@BrD"^ۄE@{bBYwJDN^544. deeMjM|ozG8& njbۑ$)>Wߏ磧d\.7}yzRwkB3 !1`1c$IL>9oy2F $$!hFj4H$hGRwukoZT*2RH$B<X,R*Zf Fd2I$!L( f-1QLPFaH&R9jH IDAT5f_)r1Fk<bl*AOo8cQ|NZ~/}!(_?v3FltytZs_[Cָ_x>(JC6C—:`jq:L-bQfM ՟ϑd0 8NL&z^>χfCUU uȇ~FGG)J̛7VKZ1*ZƳz_%2qnZ|$ITU%VN UUQ@f2:-mZ,͍h678h4 ø\.x &&&*K?( ͆n kmQK,# zD"AP z)Jc4iii_?!M撥7Jk;ɕ6i ߧ5vL,ֆEQ(H$DQ8lVcd&KEQ(LMMFe( tp8訬VgMo\8]5}޽slu1ϟߐ>z?K[WWWWCa}T#rswuu5$C߿)zP,ep6Lho-1l|EH?ןC7 M> Bb4eT*$\^\n^OXAT0;N'fa޽}սVLsFTJD f*rl6$Iz=fD7Y!( DI8Nv ikkK 244D4xEQPU(x.Y&>~8N^tJ&-WRjE!M$)qQ9B&E 1 r90###H$hkkC300x<2sV(bbb#IF,']U,EbPFcQzr} .^ ąjv,YҥKYt)]]]\.t,hTyt:J:&cZ蠽LnUxJ]Ah jm],Q[- tvvىBQy_8Z[[7oϧ,7}z^nD[^bLDGGK, Á`hB;vù{Q~̙ /Z6 {»$g^zZK_}?b|!T.g l6r|7t}#c,k&'7d_].=:uXj+)[wijj`XPUJeF.zW.2>+|GT\;m_yv@>X,255E2djjT*`1XVahp:2 477 '\ٟFvxb֭['^/z,gqyn4vT"ɐ0L8rSSS8(7HN~ww7N|>xAgg'@F.8N"TH$B,cE`",N TUz=tz!* & χ^gll 0XBpV  OAq 4®mꪳko~`ݺu 롟BQj#l[L{.>e34,C2Ʉh3۲d=E>KTBi2:~[d@E- QzNFC&!H+$ x\.`CUoZ" Q:~b><͢w)?̼ 4dZĹ\J@XOY1d kQ.Dh֗i{jL&0t~N(퓓dYYPp(lJ-C72t.˴t;СCݮ+hF>L.bhnnƮ.ބa9F! J %I`>N%rFZpB ,LNNL&Y`6Ij400 >va9,ljzFr6w~j̅p_x#?|Oh44,AWȂZr9TU%,6IVA*4 V]~åuc2ПxX/Ir9 311!_ڊ;FUUzyzNuUUuqL'HhDe("ߧuQz4P+g%O}UVJJB6%z@. ]`Xd;Ed2b :r,|^2nL&|^h4dkf#BAV4 f4h4Je6%HJ% c_A޾;, 5H$B>nc*KTT*E:FIne rUmF: @Cky]-ԮlU5x:_ "G*YpI9GDT"D?%K|6Qst⌑U@U(Usn^wRΩw]zօh:NS2x2j_F;4l)7bOm0}&''%Ao:''q 4Op;N:v:[oDF_kR)JEJ6b_]EúWT(~"t@ X,#rJ%N'rS) ,}Ŋ8p`;BA=(_fYk_F=}vMJt%0?(k^nhoϕFUUϘ\L_/Xti+""02O\>sުʾAQ׊Տ ~W9p8L6"VC*c,k4il1?]C!r`jjJB(~99hR;|:M&+'alr7fYfX=X,x<9v:&Q.u3477阜D"!-|&&tizn7F*. oUѤVZVEA% h~Q\8+#Ͼ=L0xM1 ZL&ۉr9I%e?`XhmmvH$UV |>?v~m9kakʕ VXT&%zb˗/ eõst^t&ZzE,-i#d^TE*B Mg9%v.$i P6t¿Pa&XҬx]޿bcp8l6FcM]-?b:v/Mr9 C+g%"m&N|-G)re3s qe L&S. >VKP`pp>g?«O+J,+@b}޼y7hvz{{Yf k׮pZzzzE355 z r嗳f,Xfq?beNz{{%nU"[7LpH~/<6 /L<;+N~vK/+۴i{Ƚ\}eQԶlr#rZsb?ސs*b>?L򵼩<`$n={T2I%h^"ZSSV~ZZZ$Ch~l͠_N) d4%(D"f3^GT_2_sZ͊ŋe6/x.t{uG㏿=[w|?Yq.Qf櫿,vꆝׅx_\=<|c;Sa3V[u x__eV]ū_O-{8 Y;ִcˆ!n@A IfF<-C-Xa/TV쫠PΒɑIf5h3ZI- _҇7ERITP2 tbH>-` Q'Toćү:b|pd C@Kߠ! >坯 ڽZ44i1mp@yL:Ɲ;FMʇl#2g[ن'Sք9۝ݔ,N* QLO{^seιW[+Xhcy%?IJ8@|(GV[SmvS:lvj*bdD\`徍"f'LVr۴ M?CZ%R.Dz)-_GSSܜ6EjʾX@r*ؘͲlێͿdõ7qN(iY`>|Y@jko;wlݻ1LsV(ظq#sv=ɓO>9/(]mmijjz};Vz=hd2bUU%f%B7^^!Z&4---,9͏iTP(ѣGR{\.H$jLMM155^*P(rD"i1&T*wfӦMܹsV}g[m^ߴ|˟a,R{@`l|5 L{jk>3W(_5ѥprf?|^j666lB/ xl9}o%W^N@XEG-[}X^.z:Y/&?E z\.GP Jqt:-eY=O_|7f, tRjT*hiOq tN_d5"kiifw34PEn$Mlkk+mmm2(FQFGGF%^ABG@Þ}Ƽ희b,:Kl4:&/~ݠF!)UK46:;r{65R<lС %AI-77hHƼP9DeZ@PhѵU(IJƌMcíѧZHESI)\A[(oK\KPMTQL'yjXB'OƉbEQ/+,LSt4jL$'JN=JQJ;inK{y/ڃ㲫oexހ1:dZ %6a3t\zsq^P &5Vϫժ$kkƀn4iؿ S4;gD9Ui{rY"-Sţ?aCi& IDATIh`LsTD&BnkQvpLi Pقj6NS,w.<;&… |rAtE׉Q\ Zx<ZZZjrfRoi7Rz=f?y7wq`3g[V\%.mzv-b|2Oe˓5T}] 3kFW.\ӿ9AQƒ=vNGz8%Uf#O355d,hmo'*'Z] {bCO>@xne+ccc5jJ$y~?^zAdף ʇ0̈́!yG l/%[10{+Z;:]&pg|L(P(IJekX,&?ˍ%Ma2ϊd}aAW8K]@j9UU&'',+#>CQP=']$Kj.ells;VusVE>\П<9N.2b(2H.]Hr9䘛}fz1{\pV'Wf,hdx?.&MTB/hՍt:\.3YdjxGo=^MlaZV jUłf'ml" *Kaf&|G>J!Mqr^Oww7͓s2d2a(JLMMdE ltMl3hImm͚5 (_ .lS… W5뮛}_ ,hG~_^ > `mVLЗ^ziCIѰz3 Uݻɖm|x*<\ZՓҴV%Օ[[[k=pYz:T*r+Hba9t:xS3krB|a=|X8qC1W.¡u2PFvcZ" hk($xBEח- NNhKBFdVUJBTFU+---t:y=:J."Љd؅:O}HKNUd ,y!<>;ĩIYFY& Á֬]q\x<y$455aX$N!L211A*J рܩ"hfv4󌎎H$ø\.3h"cj0.h4J<'c6l6)+(d'''9rSSSߑ\Z!rBLNNNÍeCl)g ҎFJw}w6u 74"믗2ط G>[sucGL /4t:݌?B-NΜ[>3-J\Dɼ~\ ٌl`0B!J!%2:HҭlnK虋U_d2$ILWW4і65"Q އtJ8sigݽݻwO Tp8sk[,D"ZTوEE_իWd:::ĀvBn5vgY2 3֟="7y\NΈOLLLݯT*edbb~k>=_sj%:bH$B__;wdD"w*J4ccc=zݻwsAB`0HGG@KKK ]]]Qo(DxXp]_`cG~9%e|Ɇ=k۶m3/¶oPC_sW_mao}q%5ћw?3 9JO?}f%4ctZf1NoQJAv([^V% vioo'Ҭ@[,Y 2芢>ANeyv e B#B# J\.Gww7RC/bD"YJ/t:,^ .$T*B!vҥK|vEU F磩҄pL477dpݴB6edd|>jb2{q88N5fb10|VE:!'bRTiFFFt:PHtwwISSI$RU'`fxl J$4❵}y뭷eЇv^%kZ_w.8ifP~Z-+Wl9i4VZu~zV"Rx('^鄦ə( t٬ JYt, RL&#'DUh4:-[V5_VIӲ|[*d/T*E\&ZOx\Qe = K/L&Yr%Ӧ R|!UE`]``P"L؄ ՑbXbH,t&[~Td2x^iDQ =NU V(:Nnŋˇp"  l_Q8?!<fw+Y{e˖oOԔdߛkkd2)sm59i#f֭W~ lj;kYDA8PEp4L\?-z"P֣O6 J@. g=j]?NKe5$31pĆ`0H ^ed2' `R~>mx91icx'U.@{iYz*X*q$= )g|bRP(0::*+rh4DQ0rш墥/.dLSb'''D"SVikk#ϓL&%^5N<1l64v.E!c``l6+9V-Qj$Z20_f}EeDk(_V(زmYԳըm/!]jye2gbZr* g(JY*&z-m`%599㑳MMM8NbM52@ f6^n("؈dYqtww}oz=-:S~s?dHRWTQD]d zT*E6S6 V+*c$`0ʌ5 _cb(6ObԈLvb!@#9yZc+۷i%ŋ7嫣!9@4%xt\]*_~Pj6}X<˖Lh& ( -:_̣OWyEz x򧣖_wrAnϙ$\~:DzUѠj}ӈg.$T25B6T ɝE>G__DIWW2 ;~DET*9tnimmCAx<2D"2kf{ccc%T F.+KCCCQ*/hE;7m'SklTxX}_5kΝ Gfߤ1d%:G'#Y(p-0 _xᅆ?o5 rjp w| /l1eU`˪xj x<.ǩN~~ŏmՐVUq1/fiii_8g5긔K/pS>1\&=&HN.B9 f=;vχf#0͒Myz{{ijjmRD[[]]]v(2g28z(D@ss3`Pv,|twwKc*<,7PA"ɤ5l6Dr9ZZZd;I)'5hknnP(9 p)?M$7ksG=?['w5V/\PV5b&Ѿ5#*D'^N 6l8xĺe VlregT@ tu]|ֶl9 b6N,죋(x@ vQCHDYuA:#FDP3Q63> uQ\N+gߝd(xX h-8Ny($%#|+S/qlVfBL$ {ezvA+#A׺. 1<ª591ql|՗^Fanދ#3~BG?xRX\`n?TR~Z}tʚqۿW>5W[F#hyjk@C֎;&a W[x<\,[kJ(*gۍ4Rx A҂`|>/$l6+f^/ϗgG!K_"[=OSѵC8f L&Ϩ1jkN]P{zzXt)M&@Ӆű[}bv< Qu׽ 5HL L&TU%311A8~,djxB׶X,JJ:eijj/DD"A$!t:Yx1=== sN)#vnjjqjD:[oe#TEni?+?5{|bUŬ?/}_<$W_=o~~dqZZZ4W$ՙ2PFe[i1&n-ʩslHQzgӏ\N:YߺBU_^ B4777*|\(t:]:-Zr&]Q@,$2|>hI{].W*ommmL&t%bQ^t\.\T:СC2PE.D_VĆ$N*B4z,1 Ŏ{%IYarrFQ "HnVVȇC$1Ul@.0T*JZ+Hu1rh2HRr EKGpo~nx<.}""9 N/ZFbh4ԔXW}y/pgD&>N"```t:v/=^/ץR|^V_x<"^ :ߘٽakYzV]]&N䓷}Z_І/[KhߛF::v,\P&n€Ak f&s:f(Qx43'4Zh03w8@MQװ><(DU$3" Tx .m9׏ D]e =hc!*B*1/^/Z,q:XV9&Ƙ䴍prVrdX%Y'>Y 4鴤Pu\( DF&i+2!m f@*<fH5~H$"EKGp 2z*b1N$/I21p8zIR(Bss3^@>'3<+ies `;P֪a+XOS1D%Gp{ve][ F4"a]UU"t:-ǿ$MdVx`:0jL(g^DXv(M>J50&Aj"hA *PT?jF2ĕۋN|E-KJS5~$oƮ#L38uD/d+ˌ h4ڵKPZ-Jޑѭ@N ?ޭcU_Wwꏧ<~D;B·F-#YnG;Ǜí[rw6,\pVK 67N[ogd\3<|J;x ===L*wr{޷>6޹Ubf\{ n̫m֐x}vnЫժ̦3̴K2VO-?}HjXc]ۛȺŃ\.cOٻlv?E Jb-N[Wpw.t:=0L4f#=R`=B)FFFF2 ^=/Lz9%~aF4z^q䨝 )#8xy̟zj*߳_/E{2O?ًv}5glllo`&'Nً/9(P1|򴠲^zZZ:"Dxgҥ08XCS.ygR4tOfjUf֢e.qxG-m}2]}4,J"zpA0bߥ@_i 5lwfR?ްkkjyv8]bf͚sfիW7|XSt|Z-cX79Oihh]Y[oֹzF2ͳx8> 9pׅV <>m,\LQz{8pܞ`<.v.ڬs=ݻ}x_M7͝'yaFLfx!Zʭlf3;1+Arv- s9(ʌu1_vf6l%L'ٳgO7ױcǤg)w3y7۰b='H|L|}Oa~AR~>Ue޽Eh-'s{l? VON('>Ѱcm+?r- ?QysvڵkB[z!KX;*|DEŋa߾9'V34voV[hTm}>}7ؿ.]{-q.[Fadd}144oٽ{7.'xl6Kgg'o&z^Әf^{5:;;ٱcQ0Z]vζmp\RHUU8@0d~9s:::xijjb˖-pAqq< mmmٳEQF cضm]]]ܹH(" a4ٹs'b޽1WFÞ={hoog֭nIRT*z- 6m|CoKÇٲe ߿_ns=455o>ٽ{7ZH$(VW_}.^ʲcHO8|M:::ؾ};v!b{-[zy( z:Dss37oCIGxW;8CCC8mkK/Q(ysB]__Xv{e]ܙY8CN¡\^}Ul6ijtww~ oXx3[\.[n=횿+l۶@ Vjkŀ~1_ 觵}{)oy]Um r,_FZ!,X$Wfʕ n7jU 8UU& łFrTFӉn4 +V{(<92 (X  q ww=sٹΞ{vΆ9윻w6{6$c0D$ZcuBB ڄT]]z_շ  +>J)r5pNUTL<łϩ& \)]n}{gqaf#LJ%%%ɕ%甮=>'̧OYa[^ןSڱn˟imA{{n7ks}'m7kI&UImX}Bys\.***p8rϞm磏̛gFY)}CZfΜ9rOUUV˧pG#Kv6+0}Z!_ʒǞp{}/'|2#!S?.~ĉ˕'BBbxnizN:Eaa-'mmu'+J(aF(۷\.Yn}$ ˲eOUn3[# >'=;Hө_uLQ[؊exH#L%c'F΍5T!+0* 5SaPx+|-\wkFE',gM3umu12DBm[g=R]AAąlhU(EEEJH%9:^{m| C֔W]AAaTj}׮])['NiH ɓ'` [xѣ:uU[$EQd޽~WSvI$ٳg+!W_%v]EϔB9Aʍ8p̹qY[%~o?BGqㆽ{VURF6(//wL-[nZm[2BWPP<Phh41o5E~pDQX6_1OqSH-^ho[zPAWPP=:(D#c3e"1#ti1?3ps]b[e– YY,[:{juar[)I+((o;~!\}w n_~5p'xiӦ 6wlUWWcۇlFxѱ-R*!:2r]UUUS~?<>q'/5[\+((ܔO7f3TXL"þCxbxر-z%mڴ)c)[rttt*y::bnǎ;cك*85[j(wx#~_(IV[ P( F_ѧ8wb'3-#b#sVq%VxGO=gΝ/СC,XJ_ӧe W\ƍ1c6lnst|gL:u֑ω'"Hk.&MĚ5k(--oP(wޡ={رcvZ&O̶mPմrX~=3gd͘fjkkd2G/m6\.gϞ@@YkRXXȱc!gYf &L|>w}j˿bV,TTx<XnSN>Cq8|̜9M6aZtW\`0eMr ;{2i+c0JOW )%KF6ںu+?T[S0'/[60uȿ/6޽{95Yfe3ekyzpFG8Dy[yy96-#U^^._*4 ӧO6sxJMpTjz-yRPP &O<(p XFL| ahjVF,~B/_V%In{'@Oc2ػ -EFA@ 1I$RO>_1V&+S˪c$3E,s>1tT(gݞ-EFRN<9c3eѣ0qb*_Xy[xRVhd%f58Ů˕ gxƶj5'NT]AAalڶm2f?S=J}}MMp'Z1me*꺯*DQ6o'o68tSQ;Ξpx;wT]AA!s˗ XˢD!U٭0#ce/Z-+VѾ<87|sc+ܸ* +(( CM?6Y-#sHi;e޳m}ۊl޼y?d}CQ5 z6`9Jؚ¨0T%# %nVm-=<8'k? ,[b"ZTɓ'c2ڶm pOC.ﲊUcϘwCC^ۮhXh "IԺr#1T*]{n7.NJ%{ܹ|V 0O.A@5Q?A8G,]]]`:#[Gk$ͷ! 6y#/]7.)/AF,pUj5H"?дu$)cGz}a\?j޷…Ԩ&covnYS=4hx0J*al8r/FY6c1;^u3y4ϯ܌;\mfOPɵ䡦KJJ= 'N\=HmѨGR%[ޮC*?#uƌIljƏ7ab%+~^U.@o/de^􊋋81K T1y%x;Fcܵjqlݺ?Zw1cL===~N:EEEW\_g|,6oرӧ5< }'}{ᰍEEa/VST͒%Vrrژ3GOI6`Xhiih4xO8q"}}}L&Z[[1͸n$X ׋` Bww7*H$B @ֆfFC(" h… ~\.@H$JJkk+QQLQy<|M&}}}$ DQ`4M?cwtZaZl6@0$kZiooG{ڊhdh4, nLkk+&Ix+bHՂ=ZtuuhAA 0jZmmmz|>8TH"i̞=ڼ=Qk4>#LnN:}<jJwW||AIttp!JJJEQ.΢x+(()V ^.^ŋe^b&lDմ?7$_7=ȓOGx DptDB!jx"P6:;;py(---,[ K}}=dillvGcc#(ry$W\Css3hP[[匿V0.\`ҥ|> V/^$u#B_mjjÕ+WEn7nRrrr󭯯CKKːI[[ۀ{XSSC(N/_pH$BYY:K]]$0}}}}\rED+W'y,HD]]^.ZZZD"\p+Vp%^ ,6tM\EϟOWW>ۼ䲝rPY֭Q.]+9jk+f-Q>;~ֆQtN7S^Ƃ>{'$g|Fk3(#,(g*ok,/4iMr.#[w了:#_}w4m|U&mq6mʕ+G혝tmK8pp8"Oo7PIx9'%)7QW$ 3?HDdzܸ\{z`AȼKΝ{LϞ=;c2V%O>3<-x 'N/5k4<`G~=\!p"*۷oɓYU&09U^~pld_]CϐѠ?FṠ5455gf+SmI[D7K~Q2/%4aժ$;v\R<F^xaIaxaW"fQG`dLRшFs1L'gL&mT1M/q3|˷RbT" cÎ;8uԀ8OSFـ~8u3 yqLf 0b]:cZ3b4bKRrTr lQmak" câE?qsVa^.}>DDVz~3UTEJ9f{ćQZZH$8}D&R*+?^ ;~sr$)cΆu rKIͨPUPAsvRGrM-V/)nٌspg Umm͚5?)La>Y*yuc5YZSqvIkk+͘9]hii۽{7MMMwE[݋b֭ˈ-QYvJbBYA*+1cKxCM47hA%KpLw\rT/^5 f/nVˋ/[^ziz^T>֋.ZFÇSt訠YB6osGlmRޮ6V\t>_&DcǎeV2h4L*ƒU3cT髠p 5垟1cmYygEhbEFtr{/dIQ^m=SVKK\8wTjMF  mL\Z.plO?cs\8,Dăl#g||M&71s)_}>*3gΰk.ϟիO'|Œ31uT>sz-6l… immEEꫯXr%֭'@^^GW^a͚5⋜,:笠JECC>(~!?Oعs'Մa;w.7of̙3nB'NdǎX7tRT}b ֮]9DQصk?Y~=?C 9x .=JE(?wW_oeܸqhZjkkYlׯ7`TTTiooglܸmbŊQis˅jiqBUYd 駟FRq;jf-ZĆ no.]fq=ݍZ܈ơǢa >'O]BhfqdWΧnllqsαj*V^o̔;v0uԌT@/4iEEEcn/jd2i+UV-QY~=o8tEAWP^ي@ *)F0nG #64C6777oH$c2e+el~u?˖R>UAAᆨTNT*W IDAT{*>~T3U\\F dZX&m]غ{~AWPPU$Ig~3cƌ:t z1qa={,h H2eʰ^pqaoV0SŋpܖP(Dmm-ӦMvߚrssq{|2.kPڏF?3gomm-۲8{,fvߺ:l6999և'N`ܹЀ`R7R[dNNJ+)0f̘1't:^{:;;x">~̜9s*Z#5Զ^N쾻wfҤIܖ>;O<1{ᡇ^?R[#GO޽{^RXX8h]} {g>L~~>%%%e+ {nam9rAE[Fjkmx믿>'Ob Z-Qٸq5e EYCWgu zn$c},JЕ~1r8} A ҂rJ^/Jqo˱Ze2bl2/FF2ӧڮL6۔۠ Zle70h~u? ZͤIW[}WnY6wP<?˯`Ӟ1naϾޝ9VCǦiReӇ|Mx1 qn=HD[ygFޱor|WOa/mM[S}(OweQo)0Hgcb#=CSȼ Yp^w]ȉcp܅1wQw3;$;"MH(4Bcs5m$Ɠש>^mjlYeSc3R(‰# Rװc1ܞ1#Om_T**Jy+( zؕ[ֻؒye7ƥ;ĦΐM@]¼?Riegö?+??b]{Ƥ>H5w<j ]b6S7%BRզ08$L&_AA6^#~c*`Llsg6~.қ?R0.Φm_1A;fj 90NՌ'Ğ,Y`mnd,?W6 iHTaj-Y5&r-ۿV8oLXv=F+M|LKьAԙCt:f͚ɓ$FDQ$//F__\\  z Am`3)|ak cKzFxᇙ0aZɓ'0{xF8ǖxx\= w%jApPTTnGVc68q"ňHKK :L8MNJKKFrz466M"Pz"c9"ɡ*v;---L&` ''^OK)((  H$0L& n8z(J<{|yx<9LXfR(~`Z XV **U`ve}lqh4$Ih4ЉT>f:9f0CqSPPx|ۄ?.W_W_cAƒ3&?C*mCy,}x&J@"c>*LEEA(++cܸqhZyݑ7< c_EEEi C0?"MV& ǃ`ҤI7Jv܉##" n7aXr9s:}~__#ؼYͯ׬]_ചؠj?~-*X.J'FUJ(>h4'O&++Kh/((@$MV+ZVK"vS[[Kww7]]].JE,#cDFF(`0HQQ^fxtɒe?|֪Tdl)>vb^\\̔)SXdosłF!L&dc9ʷI&S__OGG PPP^|[O ?Ho$!l&Rd2CYY3fT!(am w^&F((g~L&p%QT|r"!gzD"0x1@2$H v8&&Ξ=!77h4Jee%I$I0&Z[[G׳rJ*++9=YY"˗/+7BA>#L[-AtTVV2c p:X,BjJ$IH$ jb2PiN]]]b1$j@ee%zB Cz=ݨT*q\ႁΜNZ[[5uno߮SYGu:^:(ljNaX}΄a7ZMAAϧ˅@t:I&dggt:q:D"jX,* .ňb撕(b1<deeYYYrš(`4$ m n҃tzϚEIZ@M㝗Ҭ*6No>Joo/k֬wwZ>>g?\\,MCC}6}^硇I|\.N˅`@ @WWxh4J,v|(v |>Z[[q:r,F3i4raԐÄ ZԈ\6\4 RV@ssYN& VGaQ~OnoQ:PDQb fO,C\^TTO~bvO?yqqf̘ {F򨪪jB!IVC$lh4(nBx`0H(";;[h4 }z@$b<`2z477SWWGwNGyy9~+.% Da>/XSP;\|u4=,e'x.\fb(,SMs_qYTsT,Nys9z DPx֤A˱v<gƌ<l߾]L$/_[oŢExUH=퐖'.bHNhnd2a4QՄaz{{x3JE""JwcNxrJi i1.vEE8At~+Y%I";; μoݺŋ@ss m]RUU… )((!I-KnA 2eØL& ˗/N(BRYYI&ٌ:f(VPT$I N~V6Xjݤ#t东\nkOxA8U2JBpŸ́ABA/--__dNT*N>-_"IO?4&InhhtpBF#mmmb0Zf89}gQXy*l6RZh4c:;),,$''B(zV;@$@ 3gtz^/= |C*7j]᫽G?pH7*?\9|m\ Z>~- !"`0 N$Iy_͝zϮѺ]R1n8&M咧=M-&"4Г?[A N&8MF<GRDWWjNG DWT$I s"@SPPV%Iww7)0Aq%4 DB+|C0_>!~joYAA={@j5CvO)wT)hH @vv d2)V%++ IuH9"@4EE4 8}Ǐv|b1 ! Ze@AK9sMFsu)*$%y WFxT*t:drDX#`0(G*(܏x^/zBl6dM2$: fzF Fq=Hqv]r7TVVhoo͆jӂR`2DՒK   "'Npp#zh*(5dH$lF$ϋn!a0oo0l677ժQRi#ށ7fNII x{A ''G (ܼܭ'VZZj%;;[+WTz9`0 DB^+O@n7/_f޽f-ZDYY999l6MƤIQyz r F7}d2N#??Áhl6SSSCsu 7nB!)|3^fۍ"QT\6XQȬ9eg"'zhbmG$ԒMVVְF v]R!_,Q666RZZzOa  =h{{{;ƍS:½%* A0͘L&9ۛfC#-IU*~2e O<Ų|:60=p_~%̝;&3_~~s$IZntz m+ #t//;IW 'djv)ɾoWJ!A2}F$vIWZHG\thpJ'V7h4bZꢽ+hII C $INL&7{~~>EEEp%aܹ̙3GQWWG]]'N3fP^^ zL3V!vZUrW[F. ۍi\:Mb=RA}DNjZŢ 赚#i Wku1f̚*|s;3; pm@~a)QzY{N;B>MOOD"!MnG0͜;w@ hhhĉTUU!}mmmr9JAA. F#(ҿ' wN[[~_NWP>^GZB"H$$|~/~+^yt: L&#d[?Y?žxpj FC,.bI$'Wp`>VzkAN&xh5b7MK2wQ-̪sD"G.,OkHm~n0}nw 1$~4& Dz(cD#CUDΝ;A09} dJ=]h'ٓ9u;S˴\]BێVN-G'Iz%KE~~2˧p Fb`0HG͆[c4ux<륷χnGk&Iw\L6 A8|ـhAӑ… פCXL^Ou+~NN999ȥK50J%ej$$[ţ-'7ĩKH$D:s"^zmTj̀}?'$d_aT_/gOrgR253/"`Q *f9jeе1j1TRqyNΜ=PDR0,Z{F B&.\$Q0?F: p3piAO&vv {N Cyd#)bŬӡVD"tttE__;zV?Vn^GE-=픗SXX^~Av&DQFħj9{\DFA L""F8L U'?2>ҐjvRRBZbF%h+THWg~Bvl6 ɄrL{y>ݠGN cG)c'IJ&61/h̩;y~8 .1iA9<7YANUUz.˚j( ),,cѣh*0::H&rYS>]*5"TWWp8dG[[F\N'6 ˅dppQJ6[g6ҀZ`0veO-x'?L^i$D`/€$2$ G?c L~kgҾ׷I4)AOWXK;L&N%a~Z.vRs8q _"`ZZjB0X ǃ땧u:fY>^Cz="{hmm% H$X, )ǎŋ*(X~\.5AZD"ZBÊ(jDm}*~N\َl);VTTT ~977{tb+ܻn4ɡ98b(<]BU1hT.^;",'Ax+|DYY HabPR\DWwʲl6l6A]@bh4x<$ENgRlnťSrcj%++fy4^l~u0_: x,|TjJ d/͛Qz:JOr9q#3FﴩSS/#AG,&EP(D_pbF8`Liw\L2Źs0L8z=F%o XA2JDŽssq= #%xzEAj2ueӊ IDAT cU\2p&((~7!B!),,sLGhۯBٯ)DN_dh42yd˙5k'3~xrssG3EX:_cZ\S#o)r*stvvTVNQPx0yom%>#?nҞv'ygZݝ1zetI o:fc=4Ygg'n;U29hF$މ &f u$95~z*=}|&z)**brX,gJ zzh0g.C"HC2br1g|δ)]A{bڢ>__R8. Q$&&@J$"4:$)I8A#h봈bh4VCӒE: "8HIL[R1h 5Fd"A$A07wNGAAxxG !ٌ%5XtMJtwO{p7>̭pQ䇊9Ş_lgۿ>ۏ`?!A(o?CW?[ ?}'I [ݗ/ o8s-j {=fJd{?ew]MToOxM Ϙ=Z<g~#qT/!tOK?<\Xh'kdwԄxO]w&WRxflf3݄!*W_(d(]TTĉ),,j!gz,Y%I3iZj<:O{m'v}QM/K" rF+owkn/0eO?S&8`ӗ,"$شmHj=/̒K;uC~:>Lyv*!κIӨP &M0حFV믿Ns^`ظvZ)4qӼ7|y3e?-͜k̉ov9ʡ__Yng.%飙4]W@1nq7Ŏ'qd&f7~ݼy7l"` VA21Bd@O><3sG=D;¯^w&&R\\Lvv ſ q|r$H0@e<<4XX`0+8ӬBBB.OP*PT"ؘE$-.F2:QjqW>oTt;0s~ko_v/k2H$o5~#e ~<|ۋ`@Fhh]QOZ.}Qe^Cwҹ}s<.,%_/EDD ׋hrhJZ~ Nj pmқJ7La20Ls9/NT*Yhc5׈jehhBA\\N3PF @w -f-fRظ4.M`(t}fL.J111vZ[[d2!Jh4UI .9x]" CCCˍFcR/3uNG?CCC4T2DFu HOOf@ؐ P]nRAD\\ܝQ罽!hmmEՒCVV*FzzzA$NTTqqqH.x\T~?]o};v;SOa*DV+DGG? eeel@}ST*Du=N__~====ĐI||<6؊y Aw8l!vOxl,H(ibLmI :… 9us X.jpTTTp}M8ܹs̚5+(3gXp!@ivQt:.8RSSH$hZAVjIHHW (boaǃd {^Zӳ06h4twwP(hT.H$\.WKBB ˅nghhhxnN|F&Q[[~O pqVr:lsf ax%\y|$$$裏j5kV8E*3\)s:HR^/?0t"0׺71j-Zt1=|n;pvf{kZ2x;&HDdd$ .5<111̜9sep8d#~I2in;>|8(ȯCCC$&&HQTmR+?C*:H HDR{{{蠹V+F~wtߏ墸8M}$a~<::d2& NN M8̧)v4+CoB-6-(g"%KGhh(DEE;珑12rC.KXq-]Fdf<ȅ X~=ٜ8qHDFF{!''Ç86oLaa!}rNgL6]vFcc#(JGaa![n%&&jt:|'a9{,Fɓ'ddffrqN'sΑƍСCD"&::-[0uT8@LL mmm455Ν;6m;v@R__Ogg'rSPP͛>cppˑ#GeݺuL2%kZ9}4ٔͱcpt:Ο?Obb"6m"???DBOODFFeOݻQ477ڊJSm6psAٸq#TTTp\;v֭[Gzz:Nf+++#55 6\w|޽(yWW!!!8q<===t5W*`Z9pnK[STTD^^^'y\\III'p'g +JRSS]JMMM@&&dZihhҥK|tvvP(!778JeQl6LgggL&CբPJF ?ZVRH[7TGIԼ\hf0</))!-- ~m֮]˫ \t:ٵk/„s\.oҥKruV-[?ZqL[]u\HR<---jNS?awKɾүR)၂0r

zzzۅJVp8ذaCP\.ׯ fڵhmnD]8;tt:$..@nԩS P(p:8N}YfΜR Db1̝;JYY^ÁA§{+|>,K bd2 75DCCzU v'%x衇f5?AH$j?~K^,P( 5MƺLZZ"IN:Ʉ]E?|> 11X`BO!ILB&* ֹ{/%pv.\O?.L3<.D³>{wX^b^\D"d2ΦpFFx< Ԉk|>20Ri }XKe|cryJ7L 044D?.k7 8gEPXBn;? ZJfʕwLkkk9s&uXg"ލF#HF!"""Rկm6Fc:ۅ EFFP(v;\Nrr2p8 _133ikma zpla/L&رcǎ&X=me5m>P %%@5BA||<\.L&S5/H]2#k 7pN?fIKK VRI~~>ӦMCxP(dג ;;ExÓQQQASWTw.` xgF (-- %p]˒ ֹٳAzcrBGRG+E" ʐIeȑuXÓ E[#fћ<:BL\63H6dCncYZ `JINGzL=$1O.p'RCRdTvWb؈ dH?t1: N+ۃᖎt+XGޤ`XP[(hWB Bc`A\.g/&92\,gi,# %Dd@(Fc WHJB#`s;ԋB 2$K߅Ugr`=Ȥ2DF|"lz @]ȋN&<$R;M~t}: ]m½{s$qq<,9 V00|"(MuƯЏo C!GF3eʔ@Ⱦ0lqrbccFhN+bMIII:HD=Ê?2%\NP?8da223ExCFjkkzDs@sd DwG9۰ p&p>jٰg>'9{\R@]+CC}}=J:nP&x<)--edggST N gQ ATh"HPTǵZ-Fٌ^3Qq¾{b1b"!!!Io* fQ^^NUUUPZ p`2F \7lY%K"3y\r_0e(y%JV7^"#i|q9y&zzz0L>χT*%,,(T4^j"Jq ۋ&..,lI #::0t:mmm t:;444PSSÉ'BATUUz \7j%(!bXrb5*:6n.nk֭3iÇVr\ex4^Ղ*:Z(,W—|W(H:I81D(hh勞HLLD`R@"y/  .Pv}v={p̙YM$>p!44 +jEٳ dL4+V>SŕB A؇%12H$ N3Z, jvB+ԞJKKtT*f0@Mu:B@RBS2>>pw,ju ]$P^7_ &!!<.\v.-ڊ@{` (rI2,g9z{TQuGvsȑpy|x5`O,4: IDAT^zItMM|>njIHH@V;00@hh(l,"%]]t=55M|ll,"(&?t3耋``fK3p/"AH׍V G3̥RVyw\0e(G<,\~#wB|zN3}F}}}3"YDI!r\b̽w`غ~mzo>6mDyy9H$zFVpl6v~<QQQ&'ҷBV%))PFp@d|ff&yyyb0蠶۷b Y188(X8qϏ4~kOxn9|泜б՜!CKWWפ|tvv />#`l2/jn}l6G"b* pBBBP8N***hkk zb1L6yOGGO &(sHIIqm…A3f Z^U8X 2J̝;7(\$\͛ ݯ{{{ijjh DϻNBBcWcXhhhPO]\.tttAjj*NFf3%(N{{;v]PIaÆ \F6/M8sF#݂)CɶmۂrغukPn7[lCw1\.vQTL2X]ZQƴ%8K٧ZBOl)V+1ߏhXi C\\)))HR#::JUUgϞettt\o \wWLgU϶'j^PFY x.2T(+AkA<|K_<: #5kְzjx<FLߞCb"58{ Fɔ,$++3jv;TTT000@LL ={@7ZinnPp74c*k[.#2\>u\c;wm׵C9}e^baNbQ폨o9N4y޽Axݵ[_dTZ$O>=hue^#5y*c饗Ub3qR M,kԩ5֢ijjSg@5kCEE'N >>{RXXOjj*'ODcO'++O?͆NԩSrJ VVWWϟ'&&?"~ߒFss3qFٰaZjڐJڵiӦzj9{,}}}x<OAA7sqF#G"ٷo999ڵ FT=]H$/~"Z,#JY-7ɞ"BJ %;ED47Lr_ o4 a9nÜ lk|! lݺlD/V9xwv#11v8XLNqZ$Ly+U╄!VFڲG|4***x9tPКb\W VwNqj[j\.N:?rݜ8qEx=v/f``8Ιfr^ɑ^nOjQ՘ q]gl@ jK߫d䌰 p'pM '|b#E[dX,&&&)Ry6iHDLLLptHDllGX^ 8YVS؅رcT ͕Q{B %XAׁܹs?ɓP2!\ge^^3gF˗)Ø> mT!#B<ɌDΞ0Ҩ>Aa#yn"8aI$I1~8g+V\uf-WU?pĵ,4c\.իWrQׅ2cz焥k AϽGFd)p@es75sLzzzF\!++8Qēk _dx#/uuuddd\3XA7wz&׭Vhjl!<\v1mjխήn#al=$'P{O~)N'M- ͎ ))q¹#22⦟EFf6^C?fAvv:!J!u77x͡ x' '3W3La 6& r5/- [rSJ]*#e^G}:c2cҗp8t#Mf2oi47Yy,\n\NAA]sCH#SKol2eJ*))) ׇB±cG8_"v@Pw:ݍpciիW|qr}ɛ oM6/]]$L%7\Nt~zx fڵ|_q]<O63m8ݞvj23%3# ۅ{{}nʹu =nXwhIØU'[<]SIz2(M~f&ETT$rM$wobڂl[/<nQfD+ײhff 3뱸

ذaqqqTTT000O>!77?)SpiL&N~@kc+deeqa\.CCC;w֯_O~~>G,EMM lܸӧsNT*455RصklٲjjjXr%9998p|֯_OBB t:9r|ᇤq V+FRRSSYvu7潽]t~_1k֬qGJJfgּBq5ommК>T>ko}^q3lH z= Ekk>$=siӦd~o=ӉT*{$q s8r<"H4tVVVRPP!H>xwD"_5,"3#s\2ڽ+y% .kԘ.\@AAd^k~^Lv]* Ͽ5ژ\sDBmm-^VQ+M&95x<㖡ᠥ_GFDD0w}|>DA]y叟?\@ǩC˲$?|~Ell_{#./~~'8$^/~>1>u^GsqEGgg'WZA| 8î"/#6)nް">>ˮ/nPb'z[BEfp@NYYSqDx^ԜTÑ tm>nr/nOؘ(>>rǟ mk?YRARswmlA캟H$̛7/(H$̟?|jܐJKk+]]=lnQR=[EjjJPhniepPw2x}Q+VIRSg5ێ&!=^{)ùaÆ&MOEB-d۶mM[ *TSq{\.[l Z͛G X:nJttvu32r.8WVUR\<NrJE$,CGff-)"@xچ#,r9s=?{7ߺ);vp1|@?t=ͭ)j4hlj%,LjbT*T([2A }~QS~իܭ;O?Ms<36ݻwq"0/\ X'gLg:N&vMo>/%e޽ZÎVq:#m!8xٶu3\n**ٳ{ΞaGp:ޒ2ܵ={>Ⅿ|5kVח9!SN v *&!Jo:OxMlbqЂb1\oGHX2K# C2 IDAT-i?W׿]Gsu)?y ENN<8eɒp:iquإ~Ҧn'qd]6>,(wFh0kZ2LAeJ 5} '2'yJ5y)tFHHH0DՕ'bnS>u~ll*pjyWA7׋^%ϊ' hU\QcqyhL[K$ǫK/S"9ֽOB#"7<ДTG8{nz{:R&/k nČ|Æ#R [>x^__O[[iiikEEEAB SxlJ-T*eڴiyY֐D!.Hn)׵ >},r^xGZ4uh.H^իVyFwz6DCTVp#xظq z]*nFp\@?v)ލ\^Фםt:ٳzI9}LURRyy<v=Uֆf̜Y|Kܫ^1x7,**QZL4Z[۰;=T}V>"mm"PRRBZZZ mM<#..D- 0B\7mMףjMͅ[qawӍ rDHe2Vyl6q_Ig7Qn !\᭳ou\.tE3ͤ {v? }ZÎCCCqBll na J6b8W)LfZ-2޻roMMIpV&GBA~ިF4}~{4Xe)aaY.0J̞={B ݨPG9se^bx̒c*t9DrEHFBC5̟זF|B>̝7hl#)),n磼OGq].jz2y޽ Hx'QȆne;q4.EغS$l-^M"HOT1҈.$q=BrңFAP3\@(#XJ^~eDn⥙qdxwi <Ӹ\k,1w~JQQQ5X%`w^S/,0PNvlG}sG8SLflUs^/j><g>jcws5?9Mdt*Ź }\A{g/?F"gKeAq6OcJv.Tx3R'ʉRn鵼9u$Ru=4gadG͛#>8żYqGGŢؤ,a=Z| |!,] X_3336Ż}]ᭃX,&==}B9"Dddde^"hL1@u:QQQWĉP(ز~o}篈P_j'ZsKHLCqL h4B[k yb{jW^!ҳ♤!A$/F\}*ԪBc ֖/rn˧e8V P{4{V HBB D4` a13;] {;띏gvxkq ' L2$!$@9d@(4G.TUw=穫S |022h89Y9ŴO1/5]k"Co9Npd\JK;vEػԅ$G #>u&# hf6G}QZ$Wȿ^髥TW@ fwB6>/6_ }L4-RUÇ͠P[[AeݻdE 2v[ƈLB\LѠMK?⥋n5rs^Akc g=ѽ\^Dhia!m<5zO.!1D-Z{-Z_ŸH+C?t<}#I2>;|~[RUUo|P$+˻O6N2֬YsuM…dgN22sj _:|b۶n',vNvObpf/L;=>G R_hYV6nY]xC19>Z?ue4M iKiiiaKwwi}{Ŀ1axX+p8˗.B'uj̛ĐץVV+W.=LUUܔwA:98\0ar:4ϚFMM 5A5S4 Vuu5Æ {bI0w [3TTTPVV6h7ZW_O[R,}As--QvFGbxD-SYUEhHb=77mH#y=RzN'׮]sAw:35h*G1ń6d=??G;vtٌj63ȌLssˠhd(-V+GG e??_:::T'&&-0 3HRW^&m|Pq9y0iݜx[kXZ^%tV.%G((< 3sMcذ@˶ÿZ׹7 >jɲ9tl>c^_à,Kb4rNֶ6~2eɓ'5jRˊ^mxnL*O‹1!,&1iN 뾤)N <!NS\UA.o(^|vwPPZŤ h?kOŜ#ikω כMlb>{H޿W N$.~U8v9ϩDkkk)((=( ÇgĈTUUZFQ~-3۷W#>[|8v8wSLܹsڊfc䐚Jvv6ֲzj~p5&LSшbD233INN//;v,YYYw~|;sEQk3~ .kGEEQ__ju~ ܵ8u]ŋ?o|ݾ,uSS f Wl6:6=//si=qf$MElMR9PPefG8dӊSt(N+&d́Qe#:gNISң8mHhu!ƻjIh8z$U2h6$Zz4I׫uu{|Ekİ@^z a]?H`` eۜ. Dd4MéII8UMIĘqx^qdF^K.I`0ifYX,z=it[,t:FN5OOOEd2l2t:]׽xyy!2fo=<<$ oon$˲z=^x^s=yxzGrr$MBQ{yfEQxaEEE7I6$5ȲkX=yzzvݓ^GaXko@\>2mo'ŋinnK%#3} ]7-$N_7.K#&:> TK[G+7r _E@M}w`ݜW׋@L^ek +&xzzԕfd=Y2^[r͟}A(&FRPE; sL0K`ܹniE,gqdz=Zv'Nc رc̚L2ēq9rٳg9=#ҥKܸq11$$k6vNԡ]$OGXX\fZøiOهLY:SQYVʚ{)i`~H*YR9WPcVI~E+S"j^)̍zU#V%=+n԰c:::Xp!BO{ uP2GdF+00mm hN9ȋTv-Yݖ6\;j`B A͠dZ |1& LLPN&1Y|z10LàWmd3)jY5[QU&,f"F ZBU]g+h9in/meMI1tEQ ??n}YݲL>jZ[26|ܩwsNLcN8HH- Ɛ@Lnde#EE Ƶkm z`y)LŲ]pق:f_gD0Fy!2 6h\.[ѐPd EQNv@r2pmS$mn5MLJ :~s寍|Ai06|TU%77-ZN+Wܱ3ZC&3󜧝k4L&E+--%5jϦRVZgW^e&Ol=g#uٜ4WעɔdΙCDG ;?s1ƥ੿U&7} +ߠhOMl0q|6Vu:/NA Rt*99:əd>iԝ~0۱cvmmNE jU-III/gc^\\7.K}3 ^6l9W/n0o<\.h"ƌv99qNc1n|c%)1mG"~LMN욆b6$!I_8BҴp \yuKVP!`fG…s4ߗ+/3gMZRL13+8̘z=Z:SEKQM￟ rt@Z. h_3t^ϏϚƋ/xmwyكq]RB-,~eFyWAR4qisy~G'2oDj=_ET7_>F/Rd%,/ *Eaf- p6-M :TFGE_W_f:n[ekO>ylOX:vrhePrq]~kl6n-͛#I 1ݿK- [ x~*0.]` G xT8}4$c2{RSSMTdNgNpYƁԺE*B X Уt-wMCc?%0u,.g+&5m+Wdʕ˜ Iq#?L7O?}(l8!_+f4+Y+K1%n6cw-oߒNHHx` (" =z3~%z( nђeAy,gX^fhll:Ľ?={ݻwsIMMuSYٙG?Q}{k[(?_ojx&cCU:o,f=55X|0hllں6oa<{7 sI뇿wo*z_"]*{ssN;EqcDd&3az &Mhii`!8bҠ,Elgܱ[ȽrI`+k. Ū&慷[YӧSWANa9 Ҡk_v 矢McЇL$ޛ#7mZNkG~ʙݥ3:흷u彃B< 'goXWWr`h&F1-wKhNz|4mPHb [h듖i`@Ӵ~0̙N4 .,?aB L2҂bb'FaE a\<a$M|_q_yU7_#'-Ħ<ӏϠr%m+FDvӒ/ccVtM0$%%ŭZ4然IDATslb>Y|"/Zܸ%N#11-Z0~A}gylietNjWZDD_BBFqSرڨ999ttX9}: QMؒ~Q~42m(Ã8#J;l$9878xï~IшY'#I#~x k_MvQWllߺMr^oʑlvjѷm6pGݴ|泒kx=Y^BkplEp ßN:m_fUUٹsg.{ g,cz|ʙ345L6=z]DYy ɩ0#<>}ѣGlaavsn[*Nqj:2bCHM6)\ݸkؚ6Ջs$4l89DzJhh(qJ@LW_7n8(@C2&RHa%+yW!fдzl6۷ownՇ LFsk*aK VWWm.:j@LP¢WNqSL8E -K2w +ֽ".-NǤIܢ( CnLa;# sr @CC[if뀴cp^7T_\"_k\Vqk^@ YJVD5hZкZN+,zȟ5;Ä,c>U OOO$I,]4~˷IOOgܹ?cΝ˯k~cX^v 7eΌTHىo56|hk#}gOelD{;acGqi*YpXrt_BKU ;"ntc#9gx`K޽{)..fر̘1CX#o-t[:TT,X&aewrgփ̀L(G}{xxp8Ƈ|js2rD-M Wu@ii &e\ݥii/ >B¸fe]MSf1jGRoG3?9ʟ3 Rk~E]?gf.dXwšC\03gqA˕ΰbkX˼JV/0tZ,}v"}X2&SG͠C{ZZZ(++C::4 z)I)c4HMud>^x{zI6*WT]KNza&1b8F vBoi !"{{wya?thN'], :V<р nmfæ]w-o>jGu^G8߿m .-asp8:t-Z |ו^Yb(Ty%yc瓞)((`ܸq:tÁ[kbA}ȕ2\"88>Dv܉^˗/'|Brr27nۛ\nܸhd?? Ν;u={7nWfԨQddd@{{;&&&իWÇiooLFڵk:IJJL&nܸAnn.^^^lܸd6l؀//_NǮ]HLL> 88lPU}ϪU455ѣGYx1k֬a̘1/,,p܇[qm祥$%% ϣ{va3Ŕ7tC$ZɨEz&g5Ν;iDo0K/a' ''=G{CT.^8;qkɫXڣDee%7`ni%zjsN{9lݺ-7o^4BڔzQҳez2u:#}%&E<`x Qh ̚5-Z:ٳgEKQ̙\ ___1" ¢GJyXXmmmxyy* -u',<==ݮeZlwؚ@ x-ݔ4+l&$$/_q]}w*[^^de]]SU|Ǝ'-_au(++l6j C5իW{]ޛ^>: y'9Uz{ZL&1 œ3!!!+ݮ}=uttk׮{fffUYW׬V+۷oɓ'a]moo'==e˖ݵlFFDGG;v`}j/??>5ƶm^Nۻ쫖`ӦMXeX,ݷ>wune^x>ӳrBץAWUIPUUŨ(>`\9&F-Zԧ&L`03lJJJL&O?twĉ.߷N[aW-^JNNNc}$'sދ۽պ:܋Kn\ 􋨨(HhSY^?`-W5upU7A@E!""b5Yݪ*#b8mM  d~ӦMZBkt:&O-EQHKKs,.qi ww@04')/`Ӧ-4ƅlݹsqUu|qNЍA# Yo9:8kג_4$k+{wѓC4~WiFrw]b'k׮%q2LcHT{v /2Uג/kHgN{QKF";;ހ@ 8-aLs;[6b j/K,Į/xx.gL^9c|`G[>_8c6hCg 4oݶOqӟϾUa2;4@Jx]dT/O͢ 2x1p#%y'v李=nZe^[[>*WT`2鉉<7JGGm[ __^Otkniq+,K G}5TsgPs  hmq% rϠ݁^7UutjzTȲE1BCuj(C89*ӉN ~h&KNUpnGu:e^7p:;?CpNAuJgQ#ҐM>9 _6ak95 n԰|ٻZ֭sVͣadgg( 7(-+sIիWs[Oz=Q_ FPRRJKkH:\("I2aH}iEO@B7 1ԘwN^$@edYBQtCjdEh4b4]zFcauSn0@ӣ)]EI0 Cjorf6ihh߿WݡlRF I۷'::^J2w7'3zÇ{AA[|xzzSصk'G|Ann.OoH]]1@m]#18\V:::ȹE\λu5kwnȑ#]o;&ُf-p8X~=o&MMMddd?$Ԅff)z[t)ө*> >*z*kk8q0~KI߽VJ}U)v}JY|g7O=lMHwUur:^}5UuI<\rVkX<,,xf+?:׾:SlB4Mcܹ@g7|[ƩixzZv|||8^441>1^4@ `LDBC|CLh3j#bX?'򗏷39JEe{7 >f϶u"A񡩩 O[hQ<lۑłcY407 ,㸷رij ['z(q$N]pwF;.e:ͬ0"_Cj1LN[񦤴 _iplF$"#lA1ꑑ!A <;610?:bbNTa,! v>Lꜧ1 ݲ,[t$O-&<$H_~E*f,{w[/SHԽS/.a3:EQ|(wd27򤥥$O_}w?@| m~~1g۶>Qj HF@ @2"dD$# HF@ @2"dD$# HF@ @2"dD$# HF@ @2"dD$# HF@ @2"dD$# HF@ @2"dD$# HF@ @2"dDP׺> @2"dDP׺>@2"dD0 `/@2"X<@."dD$# ~_{Q} >loqxhBBo!}y#Dzqyo?-ur{(`Y+󓀈00'8bᄇ'~DlZv`Y˂ф߇:{? {!XuV m3>A@ m~~hx@2"dD$# ~Zއ-1_|o[fD*]2DyU@"dD3{5@2"dD0)1A@ @2"{:r:G$# ȓ@M"`(TD0!LA@n<`69? ܍0?@2"dD$# HF@D$# HF@׺>{یY4% J`0HD!®)КMTD:*26u> hd Ӳ ULP y%) aȧ 0Џ6>K@,6GH[6$ 8024@e_l~'%#PAF̚J@ͼ^֦/p 2)rs"(f$@<^ pqe[d;_d\! JlKnu]E@X@`Pp8ρ="', ;ҀD[_\sxb lD*m_} a^71 ›߇A>llHrMYssFȻ jCou>i$7RmC/ݮ )Z`|ru'whlXC[kY1pQ~PΌoS| ЫW\3^`V7}H@$Bh`/Wy2r5Y79LƘ 6;.!YVp,w39_q.p1if5&fVXhŘevy1|ŌPF8F~+u݌=ЇC90+uQ׈7QژpwF0"@Gg7?mpH;F^)@Y"hsjSw<6c% `Eό1fFogw(% H"ȋFqDIcq=51ע,7A<cTBO_ڛ-|JҶ ڼ~e n>M&`5)1N6]\cL?S"=T}w$@S\(}}1 m޻aYk&3_c d1 8g:㲱 `cci/ǧ6{f>G;Y}a뜹|\# "HH,8@;"`Om3D@q'zfS2gd{k ^Um8&E g }|"^ӈʀR8DB/:K]Ԫt5!OmgȵD9f'"Vܰ@f"`?αv`}!jVYaF R -.dTsu.׿wgpݧK07W@.;fc557)f4%^` [o"2(0Qes#JyNMѯp@,d\! ` ,uX1}*.QƬ(u >p -$3DwD D=.pἙLQhW.n!# 2`ӓIw^=ps2KY2(x>2 罚|IB0G@+yʎFgdf2jF=7D?nZ9 fE=yʎ{APc>m^_ڴ.w/T^1O q D6 Y1=d}>ʠ܎1()Sof|rDLi ÈEɲ+;m28e1m pF!n|}D.@k1_x CfC۞=F<4(jԿދ?C[y6qzq33ec;Qp =xN)S}QsЬsRP% "{R2n0~OpPI[Azm>X?c31\|G\&'173E2QpaSq,>$P[ܗK=1o|g6Z}2xggV D' bu]rg9=5(s,&u{ Ync#z, x/z{/ڢϏpnWOML8mۯ߶ǯO6? =e^cp/'7J[OR Ʀ$gyЊhB{B4Efe_Q:÷Ɓe~5ڰq\2r"Wc% г<{Ƥw-ͰN\M}hI9Q;ȣVq-Dsԣ1([Woݞjg<~'&5ԧ.WD>k]مfLәs Q2Z|^{k p? x{2uFrK˸6Cv=PwPPKcnYrlkf'>m۲<~W=Jg6, |m&)#L8^1cӷp:Ĉܜwm!dwSD?y[W՟ hsf1Yy{(azDYKW Ǟzګ'0ф}wϳ^}shw.=61|Ү(I:f(2q:M쌽==:[[?e; z:cԡGƶMA}~[~5k>_﵈jƐu.^QrM|fnB$8ckʥe^׻)e}Dpw>(m}YEy=5G6 &8Ks?۳a1󝊣ƪ.?( {ͬ|jbL-C?3羇yMtgЗ`ĮdF}qb9{ E//50DLe;J'$nD;9F{&<&keχv/Pz|=@f"`*G'ݽ #qhuܤ4WulQe9X0joqQNI#caYzV g&mf_h]UYyd#i3`?D0jnϴȘ<*Q5j>5oG˥S%fZSQƑ:o#k4913]ե#UzSg=V\7f2b`|ݘ]G6u"R\OX\J׉ P-ؼG>S,ߑH5G}-FjW\--Z(izxn3_G5Uxhf^<Lun>(+rPfߡOF; kC+Եgbaz Q|~*{f-%]g|:+jYқ D2k_uh},Qe.ۨm!q~x~ʊ SJ- ],FQc2&"[gѿ<-D=Djg޿fH &3uLu(Ҫ>.?^97i,l.LqlsLuiKЎ&e0L̴}dӲ/}E:V}Gs:2"cͨ (%j0]e2gjmj1$(rFmK{bڷfrYn.XaFL@A *ϙ8t9chh3mks)u=lW#} } s1 +xlFg>19] qeLn2z3kΣֹe' Le79dS;Sb+>)1.iGIQ]6Wf /b.ҵrգEKXԉz^m=|y裙Y5p:5/YOY7f @[ Ѩd bh-7lz F8usMVZՑ$cݧim2UȲcs1Q:L΅cǽ׋C|^G>vx&K6'K}Xs$wD2MZ29 (u:gz\E)=ǡoz{ݯ N@FذydrA&hOyi{.wĶ:(F9shsLm>tH@2𼚨Dyҟ@YsŨsю[;-ORh} ׹azEN>MPL`(e64 KOp~@3[<:Sy0\`hCqB] ! 2BF n>+'rY|k2+?u?+IDATKOs` DL8F#30ؖj3Fuq8 M@F݀UL4ڹXx%Q_\˞f)F@R9Q;qզIo)YFWƑv^r%Ϩ7e@/")‚1WKZX|f6S:PL}ɲ=#S]>VG&Rk6z%uLW92Wv]w%wUgyN7[v>pO8kA'˹ q/j @TȤK_[4 `X&7PGXE9㱗>)u7uZ-tc`.x.yG>7fZ=zcD{ay-dbQcrziԷz$)l}F`LI>uĒMf3b-֓Zհ][TOb~=h'LjM>se8KH9QWa,}>D h.#aru,Z I@ [TDܔ.ڵd>%g7edgC'c0 M׍Z~/e/ǐul5R,+ǽω9GF]xp9!' bx&G|-#~#'f~o(@9TO{)GYOB'PW)m|!O@bo"ll@1>5Sߪ66DF G>v˴>}P~<}+Rrm`՘1!&#QB@@@uGxu(cZeogOu9"H7k{9В]n60{oNa}22uspK@5ԗ>d8G)+f$ *W2WSSvh0(OʲsOD=.C@O0"X" (Ldu ^26 g"`6f%xDf0?[r%@ " -'67}#WCyGީ$b*6τE~M:7" }cl % (h4cD.R) #MYsVFtwv /m0 \>$MQ6/%,D@5&yeϜ(׃d^>Њbj,h˚MUh)9CY { slg3/|E@|\Ss< XԣlD\psc{־d پ-0&muE"dD,xWX@"hi%ڹWDp;jk8B@}h{h[˜ hʆNl@"BgG@"8F5o!E]ʗ}o򵮽D0W6 @bu #$# RJ 355^WC)T%  ~Dp.{pЗ \GƜ)Y $# HF@ 侷!L,C f' %f' HF@|o򵮽D|G,@=" ,!@"eL@*"% E6F# ]D{׺zU*@b"Bl@2nj@@@n"dD$# R޶k]{@S"dDm`7E!`4"dD\D$# HF@ >D$# H濽zu]'_u]?{w>VizPI'?zSI'MYs|۶cs_u` ^17=OC@4O*xoz*QғGO=ћ:HO=ПeY_A0!A_̫_;mze= v_!g{տ' H+$# HF@ @2"dDkC u]z{у?z8ZEJ{i]QMGO>"BYuٶmG_zvu_^Au?jѓGGꜺY6p'o?aܲ,7Llz]w X<' ҲHKM҃zGob=W)i] zF@D J{U~I1m__^?zRhhS)zGH?۶A1 image/svg+xml nipy-nibabel-d3c26be/doc/source/000077500000000000000000000000001177264777700166535ustar00rootroot00000000000000nipy-nibabel-d3c26be/doc/source/README.txt000066400000000000000000000010641177264777700203520ustar00rootroot00000000000000====================== Nibabel Documentation ====================== This directory contains the documentation for the Nibabel_ project. The documentation is written in reST_ (reStructuredText) and uses Sphinx_ to render html documentation from the rst source files. A relatively recent version of Sphinx_ is required to build the documentation, at least 0.6.x. Use the ``Makefile`` to build the documentation. Common commands: Discover available make targets:: make help Clean up previous build:: make clean Build html documentation:: make html nipy-nibabel-d3c26be/doc/source/_static/000077500000000000000000000000001177264777700203015ustar00rootroot00000000000000nipy-nibabel-d3c26be/doc/source/_static/item.png000066400000000000000000000005721177264777700217510ustar00rootroot00000000000000PNG  IHDR 2ϽsRGB4IDATM+q<3^{!z;*bÊQ)" *"tHBz%f~P=:}+\Ŭyis? B߿"1_$/@s@z~@H !"[G B0&;c! mny[ DlM[ K# eJͬ@ӁB ŀP77_ڷ 1r`zҳ7wI&69^!gn} <*.]ްi}""ssƎ #!ҳ7,u62 ҳBo{xa!B `zu׫k/_lv9$ƇG'%%$ht; *35ip:*^|v>wZ}dZ!Uuֹ%7=|(p5Wk*k_mz;<@ʈ Rruۮi65,.fTF:p0kqOq W_伮{?|ʹ D(PjZƎd cO $0 >H xzb3{ʷDIh:`Ek_+XS[UsCJШ$OWxj(Qur2ٖ2lbT"ċe( t>99\cϼ4Ni¢ ST*a(XZo8ۮg'?{3a1!!ta55 bjo'߃ސ za]VpPiy]!EBTArц-־U0q^KPє%dEp"{X/u'5[V/V]+Fe H)aIĀX!bn8S `@qރ=cT&_-_{n'Š [kRG%dH$'AVKxç6v,)c_qJFɻK.O?$d|kD +XHu׺û\Ce qn{D! (mmWN"(_).JμoF4mWC}\PPҬR:JVԈfn vC}Ǻ¸f͐ry/>#*"Xmd!@b5vaLJIj́#-HZ$.+?a#VDN!Ҟ}?ܐ6ِi<-b[%=>W 4%{ c+KcSpJ Z&6Ȑ1$/s쨡fe^M_xLDn9XlKUMmWOh&uv''4JF h jKs&&=DGh}}KRO9=L~ LфB@J8Wy7:Wv浏,%P8x/ξ_JV rZîl|LqhFV˜u]:4$iwi[5cbro՞ۼrw1&(m]PmzZdd`Tju?LZ}WMNP)O Ƽn[Mכߟ:vZUm7ˆN/(z #5qe#'(1  H͵g~N]zSWsL?*FqGGT|b{#b=[_<` b@b"jqm?̺{Wݲ ~`<GE۫4KO+2 Z݂p | W_~⡮.)$qAƴYr-9wGEj>ۮcVHBŃ \>{ Ըb0$Gl~ Bh؈GU:i}[:E0JJݺw\_ѭ'BQԍ!˶-z13۝=j_,ԏ9"B@X#~~et͍+!-QAZ;Ow?ʒ0aɢ'>H[|5kYMk.@8En>&vA r2c+*>[W_Ի;k_a9!v d@x3j.6@~x<LyEGutX3ʹ~A;/W)k{))0@8pb[Y.1)!9B@lJ) ٘ s󿡎jWOmw9K`=_;!l~ o0W˓wX{ eMxCŀO :O1qЪͰ9>aCT> )Q}?xXL)J$1c :uVPr~w9.!~Ewn / e!xEJI-KK=.%''Ybo{iVn 鬿T{tVwഴ܌hߤ=pL3 !T*EfZ<#!KͰ@Rҹ'*ZͲO88L A:--eB՜G~oopcY|IECHrfƌ,3$Ozpx ARۆ DDW'¢Fְ4]Ъ5.{ہ?2s&\ԘA?Ja4良 S5 ̞K]0rEDhE ,b@BLgGӇٲw}jPNOIv;d2M䡃Jmť]Aͱ*Z=6g_;23_~,P %ܑ#[" x[QLD@MJOh5hk-knp]޵*%ƢU%8M@@~@PTZZtFF}'_`cPD¡J]EC2sԩ숟ނP(\ڻߕOϞ6;b 2?CXxwq|Q- !< 2x#ChH3ꚧl݋~fն>ǔ9k7ው }hS:_;k=-]&SUd}v;o E&Z" 6K7[GN^bvx FAвu8ÓjugڻY|W}O=^u VɪjKQQ <>DWwߙWGY7ZzkPИ>$˃P˝U{| G6zbb˹ݒu8'.lo3_m:{ܽrpJT\C&_ J;}ńtn˳23cyk٢#ճZk.Ǩ/O8hﬠrcKiuc 4J^W K۵ g;lgtZg*",[N~ҹy#x *@̎Ϊ!O03Xbbw}*;;lqJclitjeecUչfb-"ZJk%40!_yMXlwuyG.|v^{/ U2::wR.\!W)hAp9-><MA,q(B6.V聈1jspmL$byW_틅Od(J ?xr_\C S޴nݓ@I>^rC1$kM)}2GCO.xxUZG[n. D,IEm.25=0ƦP4y+RB˙0jQV])OQ;!+-**<`+ n?TU^L)֮U֫sFd!#H((#q+7/g`Q r.һMm|UN>.$66oBSST !]M3C֨ݴp \.aR@%\m$idu;zm6qnF7&XᄙCVki cϙ!D|@jeG_}k i@ָAmN6s#jlBss}QrЄA%9j#;ˏi )}wڒU[:D֔>P RnsԷݢVp` P9Mۖdru˟MKP4&ߜ AHdiWs62 ^^+d+Vzū ә?m}k qQ>/ ܅il;#za yI~C1@.s+Gn2ML16UR6EIDnU|ao\Tx&ĐZ7m&  `rV[ެi׬]}w;şZЁ';׈¨w^M딐xϖW.X[G'DWTX󷿝 ɝ4t$AfABaCp ZD0rИt4Q"[$cgLYA(I5c* @B"dl}szͫO ~QbM|^cDVͶ-?9Qt{yQ@È\NovskBR#GH z12?iZKnN@z+@SC×6_vQN;=׏?L~_(r˜)!ڻ|oJࡏ`HVHK< LrZ}z/+)ikw Dj)I)N_'OD`i&y"3ƦWVN>鮼t׃Mq$ǡi^/@hqp0BS}n^ О(R0 Q j9YdLN8k`rN%EO``)0Jcb j|S.Ud ^QDBEcIU~_?ῢ#Vq{B-\0A8]iRRە=LD1Ѳ_3tOspO!F5~l=rs 27okƒ5>͊3x#tXم+a]ƴ|핐f-/sӦ~ IVmMEŅ}8epe(BE^<**y\ᱬkGN师1D0$,i(U?/,}V_ݵbtzǪQ((0FpP7f5{S'640kB7QNI?E Zq'pEb*V8>g+9// /P| @" ݖVZZӻgkdw\І'οgZnrYs3RS>f'4eԄ'qVP` ?+F[P&tdyH&$^>&e5/*PQU'}2A"PQYwQ)<8gO JKPNքQDZ85,{}n:Dc*V'h}l*iW5߰q5gK#%IBIͷքNC~̻,XC~fGB$9 ;؟V܅}Ʊ50gL|܂5"& `($Zn4E({/!ۻZN>4jhbeJD3QDt6)s-gg=;!ZU׹TއA$p|.;`4o'ͯG/HPjeg\<zg93.U>UC3rʿb/&[fl{s\JX۩O|i"wB@}ֶ>Erx2#)&_J iA R%!9qд'amt*,jCEQvnϺG/3`C\v=kt7H*"S*}yhvIpP1 e:gMv8~SNtCp^,Άփ?||Nx=fVq4-a(M0捔Z&vC =~zˮn0@D]Wsfh^) -(d=&s\CX" (ԓVb '3?7X҈D4 !t}WRq/L2H߸0'IGQB(Jiy`0Ix$ALN<5mpn¡C 󳲲 ͫ|ea$tڃT>}m޴E[<?(h3/5f܂&v.ݻ[Cm!bli??IaQ7E:rNڧ5FJL ^vc]nwW*+^)mJdB=8"'#1;3 ׿nƽM7znFگ ./ āV_Feq>EN$ z۲1P|mWJcHż9DQ0!JvƲ5?:$\.pa>qQZ X&t^N**v:~aAϼ柿`h,J@G_||sJbԋy{;ͨƎ />|Jl[\?|:')CNo u{\O<>O~ӤF }%#9S B&'2AXWӇ@"Jwsi6; 1m< c $ Qa0D>'*( 6P PmvPOS=Ol\{¯WnkonD%(|KirF"PQÿ\6IPH Qoo>8Y.'8cd,Z*.~fR_YdW/t;DQ5<ѷ<35c쮖.W}ӧ?ocP .[>F /`+s4*&D+_m97?e胲47Qx'4HHDHDHH / CV_:Ts9%5N`3+Xd,/.DzKoP-q-YꃧkLɃ$F W8DFilatAL[Թ2EC" *rrg/A%Bog^'4SQv❒*(2!>{j+G+}!i^}}-u;mmKBwuk=o1"i3iWE;z޽=9+"^w@+Vc[Za> S:_˵G^Z 6%(nx (+(^ඇ o@D#.~jIݟi4},úscDԙ"jN[(*-)˯jEOW5hxFujF(.KQhr-tu#JlzDp"DzZt o+{{bZwG t]2M{Sm߯YQgI*ZQ8q-bPq-[yAAa=|שLTfzՆ81qݳrJ?`@.zQ]]+,=M絲-^\̠G8D0 A @XMYPOS26#"Gd*P1~I1BA~&ǹc/ޓ'(B~^O^+U6(׏M{Lӌ}zWQJr>ΐ,Y*lsVH3SJ*}w?x{1;Ao}4jXzIk]-x'S_2&{C&=.B U02#2qvI UjYɔ2^ۋ$r2CUaً= >ҺܧO誧 ½}@PW%NVu\9(vHH1?wEU%/B&))1!3%H݇>5ovС`SDTz@b mmk0hucQA2Z)?k e.TdU8{ޓ!vҰ캽Kۏy-63ȠeuGT:CQT@i#yCHX?zt=c3ô1hSؽ@D@@*~Ձ= apw7BSwF)DRJ.aBrvԀ>aI)/W붟>N4P, &fO8rw;MBYK]~nok6[4J飫nzl8^D%7BOv'(҅Ғ+{N]f^,H͵GJϘ y酢}R9NjF$ܹ>ϊc%6?$M׿\,7[bx].%DMa=70rXɬc '4R+m|cSDz]~ Nvhp+/K,;Ӓ= mLytyq=ܴ= @ 477/?1Qw[ٸ]c]5Yh譿XϡY}5^ΫڵsSŠg%GZ楿ӆ.Ohvؑx!\A  zJKΝQ~DB8lKn/yͯC'hӗl:v GG+eR(ȧ_“raI d wy{ӿuM0͝)H;yNƄ10F(I(J*}캓 ۇ!E"`\yYȑ AQOaHtIO^Ų4QB&N[ɋ=$SVt{D҃![\uťSJ3&^~m>vPݨYlRȀ:mJlT'-{U%Qa;.nk9g}ژ6edVc"EQ Ze原uT,Y<"DD0$+ gn^_Wi(LTZ}ѯ6Qk7o!<D= J= 7ݵԤq{֢pz_#  >sf[ۀA\)UZ ݮycW*J9B"B0Qfܿ݅).UՎTQ_=%5T`պxCL&K|W,֎Z4~;Z XFn[*pٹgXWyYY]̠sAPh),TT K#h5e"^qiyY"p*$EńI୯g=0 0ŵ4p}x A HPw8q('#y;wU}^}COW p)I.O +Z |"'Qbbtwm*] ;\V̎axqkK~y@u:pW:2@$P" }kmPo`A~vaaڲk,e\MB\tUklӕߦGDZd(IG[)4\uNH݃J }y7vQo U!`)H=z#"4lDTBcBIOxR%$Q흌noR%~*J(o!  (y:]]qxg+}^N|9GN6zy|ōöN4߸g2&gUr%wb#k}r%/^ ES셋m'MNB1 os0?0hu0k Mz ^,jV }+nﶴ.]^8s\?*p rCXJ{Ƥ~e |+;.%%9c1Q1&궹:Hj5kv@NkfwSCUG/5[VGMKI3[幼Ze.\T]ۢSӡ&eCx4D|ǯϾkDA?S{tzLLe poyRmpZEA4Q5f[OƏ݁vےPɍmg?]VEQw.YӾֽ:tVdRNCug"7yo8y'|Q-m;zϜ1z%;N"{>U7uГssD̊yyu#E("Yrr`&MU?zf]wW̧?uS9y鱒Fb,8qFULxNSd eY`B( ,' 'VAo8#ð!sל;:#11eU˿Zh+k\~^KꁳהEL଩Yt5ȌYe 2TYU6gPA*ԌuV|c矾a?j3խwKs^?9מڍ&D!ҀCWT IDAT02:eB[p7`C!w6gi&Ƀ&Qw`۱1\"d'-7xGat>[}sKkx gQkedg^=n8i +l~e3Ι8\d\54gD1)\X :F,@" Pat+REes[Ykt`j F8{h"_hRj)5YU&ˀxKLj) q]=A(,&lKNf}g\ NVKbF}(o%ZÕG, w|kWU8 +#*(:ZmTC61rS]!m^Ak/6}>cL/JjSGPu`ilTߌ_ _yo\hIM5"Otw256ʦQֽ""pQQѭt9WLle+!|fb=\FhɋչoׯG@IgxijB(* BB.22axN`00BbĠ`0(8 Jbbd؂R0(I {T:MAPXXJW9C JZ  !UUZ}?͞:c2Nxщsq.PT]T򁺭?.l/;7MeF 6)赀aH(>:Yu=17tD!BiCf=ox7rPYYfL[0 )]la1ǏT +~ "le}q#w?|'Sy`o鐯>Ӯ+'pLOLUԐ(ơ1f:^Q|5Unv{)Ūɒ0LzZlzJl|٨ce EE]bP+ z؞>u0BDm;e6F n V^m ܫgڞ c iq{S6՛P3blę)J|cJ&;3ef0uGξ} cGgsӦt0V ODqμ`\s {WEKn 7WQ1Q2,5yM3fjq;UpQѱ@4Y4 TpH:qr߁snMâTMAL9p Ib$IY2%%P| u@@u퓏^㟙zFv"VI;#*0X`Qqpi#M8s%sRk_rhͼyUU&)2IQ@B]VxRA:|HA۽畷4qx:%ƥ^Rp aힽrԾq"Q岽?lٶb˶g{H4*NMei[g5Ih/=4Iawct|M %s%C2 EQUlAy¸AVQ4Oy[>Ξf㌑T 0BpH-uJЧi"-vKt:t7>۫#s]QU·ttD-~ <2DO]lmLe|-S>L;$M:9&>BYmcY\=gC9XFHJ;t2艧Tuu))aO8_hf^HRP qX؛ 9x!*6ਘ?{wE>nJ?^_!G|6=io􁉑*;L&ۑcթC+W{/IAQyۍɞރDq^g֙Dj{ րn`.>:"AKU FAXH s aI~z__Zo5|MP0BhBTh;Ҋ!QDdT"O]wkƂgt=d45GwZjwy o~ڿ+_lhp1 pH 'Ia|ltdY\wp?cFvlQUNoӈEcL(i{n\}hn4'joroS̩c>3oP6mg0ڗ8^!,AQJX44 1*%;)1QYUEû?\Z^ci ׶-lwKL癠,>{С͛7xӪ?3zݷ2Id7 781m-m޲ q׻Ο;*N{kA&(plںNnsDUpU ;N),-tui]yAFV$J /@Dm{c[A@t:7[9^!yk\FZd$ %NkކFjg 4Mcg!.=`G>phfy kF^xWU'3IgLF ĔZd,QzXY ˲?==TAX6:g+ZTamMA[yJ00C N @=h6>gcR0Ѭ*&K "QUMeGx@EyV`nFk X;}Ę(;/02<&%b BΝ9}_[~G>-\Gw =$RW/=1kn[T)E,ZwM='|l濽I7bJ+%³Jx6ň`۫2/J0O>ͷ?#1+=`YFxp݅Sy9LwB7mhK), q<2,#-NDCFXBSшԦMykB>"l̼r(Ƭ բpB:Q hDe9DmN!j",-n霰gVfDŽ+BBP%@ CDE"_P!0UXi:]Xӫ//Aeـ(,tt݉ݯi)޿%Pun$Ȃv$Kjiah劉IxW|]ڹRЏ@ f1gtt#۷oI'xP[!I b0gYhScق` XZt[>dp"K,oɇ?|x]v~BȘ9>|SRi2 ?z(`d&)% :!5E c$hX F CGx|Aњ괧}%B"ì AԈ5SY)b01ڼu~ YxI >KǪjsť?~bDXҧycL}>woX  Ab|!hZ%~t}Ӯ5e(eIԴ@ssmrp8Q@cED0carc,CNSPYRTZ_ 'HTMvv59w FU áٙe-_k}? 6 vaI-/vԥ쌭̖`h%zX!8oC~kK31s"c%Q}_Ciɦ/b#ħW_,]wEb-$6KwE\?s+'N/#{x)Vȑ}!;wz:S>^;D]^0Ų|B"!Ͼْuc 5tIꕛ ^Ӱ$.SSM 55eM-@|B|EeҷW4yUP0,/*FF @1&:PGb5[ȄJK񉭲Rt9LzCOL}{N4,_Deu=-"" 3%1L<1_Ͻ.oy3ӓe9 R/߹CCHLoh J,-8ssx|*:T\ $% ͞g_]ǃSP=G \I@fC>(آ5PPp<׏5D YN*ySrnje !:.j OeEy~xuw%Ǩi9pRR}^]b%QxÑ'~>&hBzaHzU1!F*jb*Mꕫv)@B#ͻ90D*k\=q>}4D4Ul\][<9ӨyVo[\=!-K)[0B2 5* ϔ]XF@, l>RZ|ӬqQ܀0Bj}d hTױfe :on(@p{>}DG!%5+,oݽĝr}ͅA\xS}vq˷ۣK&FHVdB:zt=uaFx[bL^h\;6,wu$$qokm-OO'THL! E,@_iHyNL;nIQ&Nd7G[?:E @Ԧy4Nݻ޲cWX8Z*wG$ݲanp =vne.y)Ppuuu٤nWiFZJ^GDp3=(kJjvq_r .&E=FJKO<:Ej_ ջ;$ 0`QM#qAShE&bLXh5g{'랒r:N\^}sed9)CgQL1J8M<ˎY${#~}"Kv~|zM3:A @ JJ Ƹ|Ш4,#{D_Dc(%|e ;|Q^M U5t$F uN>̇D@o[\H ,C4V.-5k{vf59 6Diʪc߭KJ/mBuܼ{F[FHPktELL J*cQeU[a,=Ĭ5':KQ '#-w~bL>Ga3%5-~YGwܠ.ƣBP:uy<蛞I&ȫrh bfjEԦ]F}KD#!ᄉ7Ӓ٫2SrN1N7@Y1,HA_' NlJ<>iՒ)1 sRibNG)~? *u@IDAT pæOo2qfj>'OT6ԋ^@nS06lcb)xv:omwZYz9$jҤ+e0F ,$Jcw*?<[\K (C0`#p4*겠Q^[*-֖꼴WDQ\vY~_=(m'T@,)JהgUqlrbE}ƍj4У_ 7@%, lq6+qTڒD(pˍ9dlityE>^&1(cڹeK $6SѪAgS}9胹qVNFU4.^ݶ&%fRT#> "!)T0IuxV?oqkED;h:CSPp{|oW/Zxǎ=p=0zj4j\wyd2TW)n/NvII۷C&^99 rT-|뙬$9eYji,J7wȄh4v=7dg-EƄ_9~!ÃA4Y,Rꍦs/˜S∌U߮lB`Z5<8y:J´b;VC}s珍^# :.$㥍nٳ{A;5)>..&N~'>zTooO<}䁏ٯ/i#q E#yՐyZy$/1enH N3edefgR)nۋ{p̨n~55lLQ #3DaxlK]i<j Kj|m3FDa&O񮕟hAz= MuGq+9N1/pFk OP[АOJ Vp[ f,6%˶QN{\1$zVgAx~]Ucnnܞ 6kTkkQ{3ޓ3Q %I)E|`>=)1B:zQ(k(#{O/fó(Qa13CeV՘ KOlx߻}|4AіUE԰Κ ^DՔe7sY1KT.hVCH[ڰ s䉓{E l/]#'1e71mꪍ,K fATJ%`m{? mKؖ─PA\"|8oш 睷a ax-<9GeӨ"F%FcE;具HGƼ"k+X] ; iWoWlR]خ~1w@ @0p FҒӫ(yyz,x.-13D=uO``ꫩF4#b40 e0$voYXx''{X%JQqW3<<71n26/R(+m[6ܹ}֬~n3HO[9d7nv`a;e>n:P{^lY9{\ɑݠqɓ~--4qjLJ}?x!茤7@eEb(>sTr6!HTP1L22R蜕 r1`Ӂy45PD4W/Bf{tb}]CJj\xq$ȑoߦ2q }_c{ cUCFڴiٳYò];'6o{sQR^GFDIJ3ⴛg +]`۠*Sf-##[gLh񐳅euU5NXj㽰\NYP`?5is) WҮmaF;][7jXBx78yC " L3F(e|#x|؟wjTS|.CL߻٢ڻ[\>pBJ=κ j5_~S'mys^4zQ38ջOdzU%7|0>o/ݽKκ^#]/dVDE-.)۾}̾HS5n4YXE(DTӌ$ mzAz/ZZAFĬP[6)26Ne\,6[1srz{J@Aƫ߿1otk^`㌙n3_}v% Aǹm+NY785^tHQ(/ɟ_׋=̞!\xRJhѱqzfL1e):%*-;21=<*Nn-77+ao[mS@@%]_z :oء=ڞҞjC-1FJ 2Xne޲y*NF%k2^:? tS q-j1f-n)>zu9)~i@UUe/po;F$Y;'N9)K0T~{|]{?uD}MYeLzeuw9&`Xl73;5qɉmc=M1C}+ca>s]p.Ξ<ھk^MM.WPXѱqƿڝӏ_k jM&9Ī'1˙}|aiV3nMRAnۣ~Jb S>$mV3F;Oi5Gq荦q'-AVѠ%LWH$No&`Dž{ /JB0#Gܰqͦs VUqR-j牣@QڗvY{}%\k ðpNv8n]2O%vJ멷#@f?)GTMnEs`6[La ݻ v;t8i1|aY>w~/=!^D>["#s֭[g4\=ԁw'!k(o?6.}兗?Q7oޗ9fXa?@!PFi_.>hsU߭=[V!aڶ߻/vd;0>''/xͰ9-|qKgϟg_Xyk[ppE]G (wBx,[k/'&f,Zln X[湐!|ܷo7n,B8401Q:m$TAhk-,<_xE܍}FxIENDB`nipy-nibabel-d3c26be/doc/source/_static/nipy.css000066400000000000000000000177521177264777700220060ustar00rootroot00000000000000/** * Alternate Sphinx design * Originally created by Armin Ronacher for Werkzeug, adapted by Georg Brandl. */ body { font-family: 'Lucida Grande', 'Lucida Sans Unicode', 'Geneva', 'Verdana', sans-serif; font-size: 14px; letter-spacing: -0.01em; line-height: 150%; text-align: center; /*background-color: #AFC1C4; */ background-color: #BFD1D4; color: black; padding: 0; border: 1px solid #aaa; margin: 0px 80px 0px 80px; min-width: 740px; } a { color: #CA7900; text-decoration: none; } a:hover { color: #2491CF; } pre { font-family: 'Consolas', 'Deja Vu Sans Mono', 'Bitstream Vera Sans Mono', monospace; font-size: 0.95em; letter-spacing: 0.015em; padding: 0.5em; border: 1px solid #ccc; background-color: #f8f8f8; } td.linenos pre { padding: 0.5em 0; border: 0; background-color: transparent; color: #aaa; } table.highlighttable { margin-left: 0.5em; } table.highlighttable td { padding: 0 0.5em 0 0.5em; } cite, code, tt { font-family: 'Consolas', 'Deja Vu Sans Mono', 'Bitstream Vera Sans Mono', monospace; font-size: 0.95em; letter-spacing: 0.01em; } hr { border: 1px solid #abc; margin: 2em; } tt { background-color: #f2f2f2; border-bottom: 1px solid #ddd; color: #333; } tt.descname { background-color: transparent; font-weight: bold; font-size: 1.2em; border: 0; } tt.descclassname { background-color: transparent; border: 0; } tt.xref { background-color: transparent; font-weight: bold; border: 0; } a tt { background-color: transparent; font-weight: bold; border: 0; color: #CA7900; } a tt:hover { color: #2491CF; } dl { margin-bottom: 15px; } dd p { margin-top: 0px; } dd ul, dd table { margin-bottom: 10px; } dd { margin-top: 3px; margin-bottom: 10px; margin-left: 30px; } .refcount { color: #060; } dt:target, .highlight { background-color: #fbe54e; } dl.class, dl.function { border-top: 2px solid #888; } dl.method, dl.attribute { border-top: 1px solid #aaa; } dl.glossary dt { font-weight: bold; font-size: 1.1em; } pre { line-height: 120%; } pre a { color: inherit; text-decoration: underline; } .first { margin-top: 0 !important; } div.document { background-color: white; text-align: left; background-image: url(contents.png); background-repeat: repeat-x; } /* div.documentwrapper { width: 100%; } */ div.clearer { clear: both; } div.related h3 { display: none; } div.related ul { background-image: url(navigation.png); height: 2em; list-style: none; border-top: 1px solid #ddd; border-bottom: 1px solid #ddd; margin: 0; padding-left: 10px; } div.related ul li { margin: 0; padding: 0; height: 2em; float: left; } div.related ul li.right { float: right; margin-right: 5px; } div.related ul li a { margin: 0; padding: 0 5px 0 5px; line-height: 1.75em; color: #EE9816; } div.related ul li a:hover { color: #3CA8E7; } div.body { margin: 0; padding: 0.5em 20px 20px 20px; } div.bodywrapper { margin: 0 240px 0 0; border-right: 1px solid #ccc; } div.body a { text-decoration: underline; } div.sphinxsidebar { margin: 0; padding: 0.5em 15px 15px 0; width: 210px; float: right; text-align: left; /* margin-left: -100%; */ } div.sphinxsidebar h4, div.sphinxsidebar h3 { margin: 1em 0 0.5em 0; font-size: 0.9em; padding: 0.1em 0 0.1em 0.5em; color: white; border: 1px solid #86989B; background-color: #AFC1C4; } div.sphinxsidebar ul { padding-left: 1.5em; margin-top: 7px; list-style: none; padding: 0; line-height: 130%; } div.sphinxsidebar ul ul { list-style: square; margin-left: 20px; } p { margin: 0.8em 0 0.5em 0; } p.rubric { font-weight: bold; } h1 { margin: 0; padding: 0.7em 0 0.3em 0; font-size: 1.5em; color: #11557C; } h2 { margin: 1.3em 0 0.2em 0; font-size: 1.35em; padding: 0; } h3 { margin: 1em 0 -0.3em 0; font-size: 1.2em; } h1 a, h2 a, h3 a, h4 a, h5 a, h6 a { color: black!important; } h1 a.anchor, h2 a.anchor, h3 a.anchor, h4 a.anchor, h5 a.anchor, h6 a.anchor { display: none; margin: 0 0 0 0.3em; padding: 0 0.2em 0 0.2em; color: #aaa!important; } h1:hover a.anchor, h2:hover a.anchor, h3:hover a.anchor, h4:hover a.anchor, h5:hover a.anchor, h6:hover a.anchor { display: inline; } h1 a.anchor:hover, h2 a.anchor:hover, h3 a.anchor:hover, h4 a.anchor:hover, h5 a.anchor:hover, h6 a.anchor:hover { color: #777; background-color: #eee; } table { border-collapse: collapse; margin: 0 -0.5em 0 -0.5em; } table td, table th { padding: 0.2em 0.5em 0.2em 0.5em; } div.footer { background-color: #E3EFF1; color: #86989B; padding: 3px 8px 3px 0; clear: both; font-size: 0.8em; text-align: right; } div.footer a { color: #86989B; text-decoration: underline; } div.pagination { margin-top: 2em; padding-top: 0.5em; border-top: 1px solid black; text-align: center; } div.sphinxsidebar ul.toc { margin: 1em 0 1em 0; padding: 0 0 0 0.5em; list-style: none; } div.sphinxsidebar ul.toc li { margin: 0.5em 0 0.5em 0; font-size: 0.9em; line-height: 130%; } div.sphinxsidebar ul.toc li p { margin: 0; padding: 0; } div.sphinxsidebar ul.toc ul { margin: 0.2em 0 0.2em 0; padding: 0 0 0 1.8em; } div.sphinxsidebar ul.toc ul li { padding: 0; } div.admonition, div.warning { font-size: 0.9em; margin: 1em 0 0 0; border: 1px solid #86989B; background-color: #f7f7f7; } div.admonition p, div.warning p { margin: 0.5em 1em 0.5em 1em; padding: 0; } div.admonition pre, div.warning pre { margin: 0.4em 1em 0.4em 1em; } div.admonition p.admonition-title, div.warning p.admonition-title { margin: 0; padding: 0.1em 0 0.1em 0.5em; color: white; border-bottom: 1px solid #86989B; font-weight: bold; background-color: #AFC1C4; } div.warning { border: 1px solid #940000; } div.warning p.admonition-title { background-color: #CF0000; border-bottom-color: #940000; } div.admonition ul, div.admonition ol, div.warning ul, div.warning ol { margin: 0.1em 0.5em 0.5em 3em; padding: 0; } div.versioninfo { margin: 1em 0 0 0; border: 1px solid #ccc; background-color: #DDEAF0; padding: 8px; line-height: 1.3em; font-size: 0.9em; } a.headerlink { color: #c60f0f!important; font-size: 1em; margin-left: 6px; padding: 0 4px 0 4px; text-decoration: none!important; visibility: hidden; } h1:hover > a.headerlink, h2:hover > a.headerlink, h3:hover > a.headerlink, h4:hover > a.headerlink, h5:hover > a.headerlink, h6:hover > a.headerlink, dt:hover > a.headerlink { visibility: visible; } a.headerlink:hover { background-color: #ccc; color: white!important; } table.indextable td { text-align: left; vertical-align: top; } table.indextable dl, table.indextable dd { margin-top: 0; margin-bottom: 0; } table.indextable tr.pcap { height: 10px; } table.indextable tr.cap { margin-top: 10px; background-color: #f2f2f2; } img.toggler { margin-right: 3px; margin-top: 3px; cursor: pointer; } img.inheritance { border: 0px } form.pfform { margin: 10px 0 20px 0; } table.contentstable { width: 90%; } table.contentstable p.biglink { line-height: 150%; } a.biglink { font-size: 1.3em; } span.linkdescr { font-style: italic; padding-top: 5px; font-size: 90%; } ul.search { margin: 10px 0 0 20px; padding: 0; } ul.search li { padding: 5px 0 5px 20px; background-image: url(file.png); background-repeat: no-repeat; background-position: 0 7px; } ul.search li a { font-weight: bold; } ul.search li div.context { color: #888; margin: 2px 0 0 30px; text-align: left; } ul.keywordmatches li.goodmatch a { font-weight: bold; } nipy-nibabel-d3c26be/doc/source/_static/reggie.png000066400000000000000000000322161177264777700222550ustar00rootroot00000000000000PNG  IHDRA,sBIT|d pHYs99hҤtEXtSoftwarewww.inkscape.org< IDATxw\E?M! !(B*((]Ф  .%RB i7{vs;s{wfy_QU:4 M͐B72'LUTI -"#uf3n=Ͳ-UѸ "G$n`wU};cښZD}cCr3OoWՇ|^Spt ,hRFU]FcfpTP.00?pUoիy?->]σ "p `WU."{b,O#t'\U=%cQۏhW*"+uZ#ϻ5.D}wf>vZh0>< MUoA,!kTh&"` @>OD>Uտd g[T_8Yp ;`\>.S*4fK 2#xC"]s0Xƽ^UoD׉Fi8ZD;V3cpL0+=QQG<@FP zݘ|z/*Q?H-Zc6YAD%dյuF-KZkH[cc;[UOׁ3뒰[+8'f(G -"Á_:Q>WUout("{vǥܛt>QH>q)UujriEd&P UuzJx26QDF4FG,{E}Y\D) pqZ Q І -"poܤ9> m=ͱZBo/:kCo| HӁr*]s)2!qmpO忽o>01[r $iF 0Q&jwV+](WhdLs~(a싀gR9_h(9aOz`zĺtBǝ U8 Y&OyBG !XbЖsqeݱBRM_IC>%31D'd:/qAi%"ѸjNr@>*bGz2^[%"= =P??=۸vƋS,-,G[( &E2|VP\<23P,ee8^-a`9_%K4B?@e`])z"q4\~m)KTM-FV:I!eoL$M$e;K7FD[jTh6 FNtJ "+&Iɇp6WJ܎r"9q-B=iBbܱhKN'!-A` m4}SCҗh}ݲt儎.q=H?fhr,uO=}YFB[8׳I.CR.O[VwpvYD[1l8 BPhp\.u4hvX;gq¥4>l+}4v&؉՞qz܎P \hU} ;ҼdV!Slү=!PYi"UU7їNUPO'~i~;R?9TNUJe䷌s#y~9 6ڞ7(gm'xr;+=5؎%oe<^j 򚁫9<%bwxhBֳЫL|y.&=߁J5PD֤@ \ps$9&?}XVN炵Ҿ36jg?5+tL]!Tnjɡf SWh;ٌ3=XNĝG"K&ׄݴL7:V`M *#\RBq?{}أBWGhDYi{T(m}Ȫ%*GuT5M:"6h`)["T5C"rpAy60.uPէ11Q Mc#Wm!l*]˧|pGףERfh@-'x7]|vRu1;ږHdָˎ K.GD{]̩0KxKDWUWB""`NGYZU_mwQYXJU [hpx,I{):8'Krq*ecy lQ4eNt#"yT$TFܤåYmLtை4i%^<Y׍--C(p.=JI.&zHEUu&7eߧ1NΦre͓mB?C\H-5NNtMuYyc)i儼@JǡڶoqQc4s=lqqd] -t+r-&G);*ep= :ʸI܎zg2%g㷧}+S6jScE'aMXiRUWUaS1 ]%ɪ[kU$"зP^CYW6 c&lCbs8 #t 18Pp fr+aVqp-"}̗xex;guZC0k =ʬ>?6}}ߌ+dǬ dzʴ6z|h?G %u~9]IP낼&W0@Nnވy?Г lƕ]A!5]D6Tsh 5Tu\żğ" L1*QSz럧ؚVjJdQD\k/QU_Ub*Y71;~J ^s}cbK?L{1ЩXhL{emYӺШg=;e-}UDMUy٧t`~G{Ӓz{C'_V_K'ghO]-7i `*pM>t&ovqY%9@' uůǬCU]U:TAD]Ø745۾; Ygoa-S~xBD~0YBCp W!z&Xv[л[CzqENA-~ <%"BB R%>KDS&o8p+AL ޓqoܬ;,R~#4M\){i⤃Th9wZvsCX˻.&IP\{U5 rE""m^R+pQ/)0AD Q>d,7)Z5mM|$j:nyܤh{vHuBX07)}V-SJA*GW;5οDžJU.Th̹8&%H;aWnr['g NmUnkB0]DR)yXf'i;os{>1HShLp^Jf}xAD\iBDVǤʽʪ^ySXl0лU韁s+*Zִ:؂yV.œ/윇 B-je$GrEMў[M1/ZcB4F{.3(Yf%eS1nZ}Zmjn6CpI`RiUU[UCYI"2KQ)t߱ &8~o>Us%o,L큑ur~QhR|vB/nKm(?}n4A6],sm" p*= (4&q,> J-w'g$ ;C)Z8z.2"""_.wn;h߮^}hoݥ3{d*ErK|R!HUT1 SaыʣRٳ?AxIϮ$=qU-EsDžF5w\a7Od?膛o@OO{Ъ>])onǿABfۧeGu1 t 7<Һxp m!}Mw;T~̛_: Sfqcg,DeI|\/iǞѯ6z gm,"qsAU9>ML!U-bV1}l-,#$@W}!,ڧvL mOTߑ)U}_USZODF+ܒ!"ոNqK-w5KoYeO꣥Th˟޷|#SIڇ8< K) K?]H?zKnFI~pzU>CVۀ =-KAڈ8of8w'3rE.)35o`B؇ 7oe)Ocd2ñOYƬoxfI<ょz.{݅.VhHV p,Z/Y ("{VUdzZ1|Fu ˱Vp' [ WF#`w;EdiLʱaC6 @B@sWyNݫQUZ,4z3˗82CqZ]2 p V.3yFכK̞Lg>(LD&1/1x11VckqHUH:桔 K ` 0@ec[ל5wzx,P a*0tHz?!"c;џC>-_(?9sx2( ]m+斫Ҝص0BزW75|#tsˀ[x %HZH{3g@oB?x:/ȥݧt;/Es6@f& ȸ E*$"2?ɪ\ _v$glv w~5}llk,۹3C#`3Um:-xz6Ϩ1f",]Mag~&ӿ:J+TU9X kDaF̑]"ҖlҖ+^)jvˡY73}3Юq|t2ONeB+t U=ؕd*mC\cU# c[}g uݼ+_,>;}j= [b܊j,< "[T!eN3ް莞^gf˕UMR^E]W%}.&EK7FEPQd6z o3}9V]֭vXĉސ.6cP "CD,`"եy!C(3 ȸ4ds>r2¸uso9IT/VX. q(ɂ<¤GpXQ|>jsǔ5O;~K*t U}Xdգ{D@RՄ Ql/7R=rVx56dz*=*\^VfއIV7-:]Uvz7tb'SA#"K1'Ϣ"l?.k€>./Y\iz]^Tm.L}0kI0͖ẃ'j]fa`m<}TLbbOe{wbĝ?bl4gtv 0sq&< V r#jAEgpMϐǗ#GiW-lLZlxj:[^O8 D#hq?\|,U@[Y!>}X5T=x}Yfi0>4c~k˶8hup9&ҙԮ[oɛRbVOP7h\GE6ItWy;^pfS9?| wmK -"nxddb=UT@F'aq$tcRMܛ³v -"_¸WE!:u<|KUK_vp!̏blS2[.0%+e6Sh{`vfˑ/aU~MUV sKΈުzsn^lޙ͖Al\ We=P[(M=5y'!ƣ5U5iz$a{CUj65ciد0k F9ŔYU_O%ӀԜυWhY\31Dw<H__ iFtJ1?H(s#di(;QAK+tYꩤQsea|_#Ak0밟$ɘ,,bVP s|~d:i?-1j$m }&\Jke7Vl(STut" .J'TLmǀUur*5@KZh{r+3uvCPˤv&+VU}1%:*fBVmU1~}vTջ2!ZnPD~[KN-IOBVfhAd\JUtfςRh=чd^o*-"2 8Gt,?iRJWw0J/$tf Nm0b?eFRfglph ̀]'ǩ`)"< mw6M[_#>O49T?{xDMBPxATV~זݷ5dC``G`LJKh`bH.U5Ыjyg6+4&Fy2B,/n18r">&PѰu+Ed:CW/B7u'WŜQ+?M|MY&[PS B]TO2P噋7\Ut ;(I,3`_GV5&x]=y9B -"Sk=>2EdUL]޴) , ИRa>9AŀӀ=ꔥ^j *ЅX{.+"6~U}?m$%} *)b;/`NeA<" ]0kˍ"VgKm =| =g6B*-?SÑ/m xǻ0r>vՒyLzY`)(i(Iq.KEd8 YYvUhW ZU`mU]QU~Y6?O2AUoM*$pera㢣Qdoj1>~iwT.I"z05KPzjPKXyQ/E։Sf˟HNzL#l[-nWv,qƂYU7&"`&I[AЮ.ZOjc&xmg1YJ2gw*ߦ k93]-t.G9 S+2 +%B BJB*貧 I8DMX-+)9mЪ:wD&V:_v(tVd[Of FG[*Mpv>W{juw t WX3 *BPA3 xyB~SU ,YAYMq9DdG ^KaFF6PTigB۴_~p;_I *m }&S5vˋYQ"W mIp;8鏲3X3\#Qdi6p6֦߷Vrdl'"P=1NK IIn()R:O }z{V2E ݱЁˤPD֢zSUa ֪ڳA Ѓ2g*WZ=xXBeh`2!IR)ZR$IBdA;+HQ _=)3kv"{([uӹ i+/Nm):P_]5D$胳̜yXh:Sge$I:9Szvu70t: R.Wr""1_(խN 2"ޔBI }_[jb~{-Iw"2xv]قRUhT&U4M0YDJp#Flf (t_Ҷ`J%)_B1)kI88WDnT3" t/+NDLe 0Xۑ(&dLQD|IӰ%j6ύv]FUvTKox0"IXOPy7RmDzmmЪ̡{BG )8oAZIY.T+t$=v%<<%YJv8 ]nGP -"?z^9"*~f5vW訅v}IXNs4ql*$ՈZD\LZNTU apt""œ+_?#:#q1/oFK Sݘ0'P+IWBBV.tm&zovT4Cp+V: mn4R͈_Q{=UV-ipzjtB;#\ UDOn`<U}%EQ;DrquYUKu)QrD 4? X%~!m`U5M:Q2DdQvv[u.W˚&;kJ6:$Y  lkV? } Ҁ=luȀΤ2ʮXuZ啁;ǁa9T:ڰʕYDFb7`^(ss(a+O{t囘RQ[j-%;d@gqVLr.PMc OG*UuqQW˲uh>I! "+aB3KgaMCt""P94rqZIENDB`nipy-nibabel-d3c26be/doc/source/_templates/000077500000000000000000000000001177264777700210105ustar00rootroot00000000000000nipy-nibabel-d3c26be/doc/source/_templates/indexsidebar.html000066400000000000000000000014371177264777700243440ustar00rootroot00000000000000

Quick links

Search mailing list archive

nipy-nibabel-d3c26be/doc/source/_templates/layout.html000066400000000000000000000022021177264777700232070ustar00rootroot00000000000000{% extends "!layout.html" %} {% set title = 'Neuroimaging in Python' %} {% block rootrellink %}
  • Community
  • NiBabel Home
  • Mailing list
  • License
  • {% endblock %} {% block extrahead %} {% endblock %} {% block header %}

    NiBabel

    Access a cacophony of neuro-imaging file formats

    {% endblock %} {% block sidebarsearch %} {{ super() }}

    Reggie -- the one

    {% endblock %} {% block relbar2 %}{% endblock %} {% block sidebar1 %}{{ sidebar() }}{% endblock %} {% block sidebar2 %}{% endblock %} nipy-nibabel-d3c26be/doc/source/api.rst000066400000000000000000000014101177264777700201520ustar00rootroot00000000000000.. -*- mode: rst -*- .. _api: ================= API Documentation ================= .. autosummary:: :toctree: generated nibabel .. the rest of the modules are relative to the top-level .. currentmodule:: nibabel File Formats ============ .. autosummary:: :toctree: generated analyze spm2analyze spm99analyze gifti minc nicom nifti1 parrec trackvis Image Utilities =============== .. autosummary:: :toctree: generated eulerangles funcs imageclasses imageglobals loadsave orientations quaternions spatialimages volumeutils Miscellaneous Helpers ===================== .. autosummary:: :toctree: generated arrayproxy batteryrunners fileholders filename_parser onetime tmpdirs nipy-nibabel-d3c26be/doc/source/changelog.rst000077700000000000000000000000001177264777700235672../../Changelogustar00rootroot00000000000000nipy-nibabel-d3c26be/doc/source/conf.py000066400000000000000000000210771177264777700201610ustar00rootroot00000000000000# -*- coding: utf-8 -*- # emacs: -*- mode: python-mode; py-indent-offset: 4; indent-tabs-mode: nil -*- # vi: set ft=python sts=4 ts=4 sw=4 et: ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ## # # See COPYING file distributed along with the NiBabel package for the # copyright and license terms. # ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ## # # nipype documentation build configuration file, created by # sphinx-quickstart on Mon Jul 20 12:30:18 2009. # # This file is execfile()d with the current directory set to its containing dir. # # Note that not all possible configuration values are present in this # autogenerated file. # # All configuration values have a default; values that are commented out # serve to show the default. import sys, os import nibabel # 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 # documentation root, use os.path.abspath to make it absolute, like shown here. sys.path.append(os.path.abspath('../sphinxext')) # -- General configuration ----------------------------------------------------- # We load the nibabel release info into a dict by explicit execution rel = {} execfile('../../nibabel/info.py', rel) # Add any Sphinx extension module names here, as strings. They can be extensions # coming with Sphinx (named 'sphinx.ext.*') or your custom ones. extensions = ['sphinx.ext.autodoc', 'sphinx.ext.doctest', #'sphinx.ext.intersphinx', 'sphinx.ext.todo', 'sphinx.ext.pngmath', 'sphinx.ext.inheritance_diagram', # we have a local copy of autosummary from the unreleased sphinx # 1.0 -- reason: the 0.6 extension creates half-empty summaries 'autosummary', # we have a local copy of the extension, imported from NumPy 1.3 # this also includes the docscrape* extensions 'math_dollar', # has to go before numpydoc 'numpydoc', 'only_directives', 'math_dollar', ] # the following doesn't work with sphinx < 1.0, but will make a separate # sphinx-autogen run obsolete in the future #autosummary_generate = True # Add any paths that contain templates here, relative to this directory. templates_path = ['_templates'] # The suffix of source filenames. source_suffix = '.rst' # The encoding of source files. #source_encoding = 'utf-8' # The master toctree document. master_doc = 'index' # General information about the project. project = u'NiBabel' copyright = u'2006-2010, %(MAINTAINER)s <%(AUTHOR_EMAIL)s>' % rel # The version info for the project you're documenting, acts as replacement for # |version| and |release|, also used in various other places throughout the # built documents. # # The short X.Y version. version = nibabel.__version__ # The full version, including alpha/beta/rc tags. release = version # The language for content autogenerated by Sphinx. Refer to documentation # for a list of supported languages. #language = None # There are two options for replacing |today|: either, you set today to some # non-false value, then it is used: #today = '' # Else, today_fmt is used as the format for a strftime call. today_fmt = '%B %d, %Y, %H:%M PDT' # List of documents that shouldn't be included in the build. unused_docs = ['api/generated/gen'] # what to put into API doc (just class doc, just init, or both autoclass_content = 'both' # List of directories, relative to source directory, that shouldn't be searched # for source files. exclude_trees = ['_build'] # The reST default role (used for this markup: `text`) to use for all documents. #default_role = None # If true, '()' will be appended to :func: etc. cross-reference text. #add_function_parentheses = True # If true, the current module name will be prepended to all description # unit titles (such as .. function::). #add_module_names = True # If true, sectionauthor and moduleauthor directives will be shown in the # output. They are ignored by default. #show_authors = False # The name of the Pygments (syntax highlighting) style to use. pygments_style = 'sphinx' # A list of ignored prefixes for module index sorting. #modindex_common_prefix = [] # -- Sphinxext configuration --------------------------------------------------- # Set attributes for layout of inheritance diagrams inheritance_graph_attrs = dict(rankdir="LR", size='"6.0, 8.0"', fontsize=14, ratio='compress') inheritance_node_attrs = dict(shape='ellipse', fontsize=14, height=0.75, color='dodgerblue1', style='filled') # Flag to show todo items in rendered output todo_include_todos = True # -- Options for HTML output --------------------------------------------------- # The theme to use for HTML and HTML Help pages. Major themes that come with # Sphinx are currently 'default' and 'sphinxdoc'. html_theme = 'sphinxdoc' # The style sheet to use for HTML and HTML Help pages. A file of that name # must exist either in Sphinx' static/ path, or in one of the custom paths # given in html_static_path. html_style = 'nibabel.css' # Theme options are theme-specific and customize the look and feel of a theme # further. For a list of options available for each theme, see the # documentation. #html_theme_options = {} # Add any paths that contain custom themes here, relative to this directory. #html_theme_path = [] # The name for this set of Sphinx documents. If None, it defaults to # " v documentation". #html_title = '' # A shorter title for the navigation bar. Default is the same as html_title. #html_short_title = None # The name of an image file (relative to this directory) to place at the top # of the sidebar. #html_logo = None # The name of an image file (within the static path) to use as favicon of the # docs. This file should be a Windows icon file (.ico) being 16x16 or 32x32 # pixels large. #html_favicon = None # Add any paths that contain custom static files (such as style sheets) here, # relative to this directory. They are copied after the builtin static files, # so a file named "default.css" will overwrite the builtin "default.css". html_static_path = ['_static'] # If not '', a 'Last updated on:' timestamp is inserted at every page bottom, # using the given strftime format. #html_last_updated_fmt = '%b %d, %Y' # Content template for the index page. html_index = 'index.html' # If true, SmartyPants will be used to convert quotes and dashes to # typographically correct entities. #html_use_smartypants = True # Custom sidebar templates, maps document names to template names. html_sidebars = {'index': 'indexsidebar.html'} # Additional templates that should be rendered to pages, maps page names to # template names. #html_additional_pages = {'index': 'index.html'} # If false, no module index is generated. #html_use_modindex = True # If false, no index is generated. #html_use_index = True # If true, the index is split into individual pages for each letter. #html_split_index = False # If true, links to the reST sources are added to the pages. html_show_sourcelink = True # If true, an OpenSearch description file will be output, and all pages will # contain a tag referring to it. The value of this option must be the # base URL from which the finished HTML is served. #html_use_opensearch = '' # If nonempty, this is the file name suffix for HTML files (e.g. ".xhtml"). #html_file_suffix = '' # Output file base name for HTML help builder. htmlhelp_basename = 'nibabeldoc' # -- Options for LaTeX output -------------------------------------------------- # The paper size ('letter' or 'a4'). #latex_paper_size = 'letter' # The font size ('10pt', '11pt' or '12pt'). #latex_font_size = '10pt' # Grouping the document tree into LaTeX files. List of tuples # (source start file, target name, title, author, documentclass [howto/manual]). latex_documents = [ ('index', 'nibabel.tex', u'NiBabel Documentation', u'NiBabel Authors', 'manual'), ] # The name of an image file (relative to this directory) to place at the top of # the title page. #latex_logo = None # For "manual" documents, if this is true, then toplevel headings are parts, # not chapters. #latex_use_parts = False # Additional stuff for the LaTeX preamble. #latex_preamble = '' # Documents to append as an appendix to all manuals. #latex_appendices = [] # If false, no module index is generated. #latex_use_modindex = True # Example configuration for intersphinx: refer to the Python standard library. intersphinx_mapping = {'http://docs.python.org/': None} nipy-nibabel-d3c26be/doc/source/devel/000077500000000000000000000000001177264777700177525ustar00rootroot00000000000000nipy-nibabel-d3c26be/doc/source/devel/data_pkg_design.rst000066400000000000000000000216771177264777700236240ustar00rootroot00000000000000.. _data-package-design: Design of data packages for the nipy suite ========================================== See :ref:`data-package-discuss` for a more general discussion of design issues. When developing or using nipy, many data files can be useful. We divide the data files nipy uses into at least 3 categories #. *test data* - data files required for routine code testing #. *template data* - data files required for algorithms to function, such as templates or atlases #. *example data* - data files for running examples, or optional tests Files used for routine testing are typically very small data files. They are shipped with the software, and live in the code repository. For example, in the case of ``nipy`` itself, there are some test files that live in the module path ``nipy.testing.data``. *template data* and *example data* are example of *data packages*. What follows is a discussion of the design and use of data packages. Use cases for data packages +++++++++++++++++++++++++++ Using the data package `````````````````````` The programmer will want to use the data something like this: .. testcode:: from nibabel.data import make_datasource templates = make_datasource('nipy', 'templates') fname = templates.get_filename('ICBM152', '2mm', 'T1.nii.gz') where ``fname`` will be the absolute path to the template image ``ICBM152/2mm/T1.nii.gz``. The programmer can insist on a particular version of a ``datasource``: .. testcode:: if templates.version < '0.4': raise ValueError('Need datasource version at least 0.4') If the repository cannot find the data, then: >>> make_datasource('nipy', 'implausible') Traceback ... nibabel.data.DataError where ``DataError`` gives a helpful warning about why the data was not found, and how it should be installed. Warnings during installation ```````````````````````````` The example data and template data may be important, and it would be useful to warn the user if NIPY cannot find either of the two sets of data when installing the package. Thus:: python setup.py install will import nipy after installation to check whether these raise an error: >>> from nibabel.data import make_datasource >>> template = make_datasource('nipy', 'templates') >>> example_data = make_datasource('nipy', 'data') and warn the user accordingly, with some basic instructions for how to install the data. .. _find-data: Finding the data ```````````````` The routine ``make_datasource`` will need to be able to find the data that has been installed. For the following call: >>> templates = make_datasource('nipy', 'templates') We propose to: #. Get a list of paths where data is known to be stored with ``nipy.data.get_data_path()`` #. For each of these paths, search for directory ``nipy/templates``. If found, and of the correct format (see below), return a datasource, otherwise raise an Exception The paths collected by ``nipy.data.get_data_paths()`` will be constructed from ':' (Unix) or ';' separated strings. The source of the strings (in the order in which they will be used in the search above) are: #. The value of the ``NIPY_DATA_PATH`` environment variable, if set #. A section = ``DATA``, parameter = ``path`` entry in a ``config.ini`` file in ``nipy_dir`` where ``nipy_dir`` is ``$HOME/.nipy`` or equivalent. #. Section = ``DATA``, parameter = ``path`` entries in configuration ``.ini`` files, where the ``.ini`` files are found by ``glob.glob(os.path.join(etc_dir, '*.ini')`` and ``etc_dir`` is ``/etc/nipy`` on Unix, and some suitable equivalent on Windows. #. The result of ``os.path.join(sys.prefix, 'share', 'nipy')`` #. If ``sys.prefix`` is ``/usr``, we add ``/usr/local/share/nipy``. We need this because Python 2.6 in Debian / Ubuntu does default installs to ``/usr/local``. #. The result of ``get_nipy_user_dir()`` Requirements for a data package ``````````````````````````````` To be a valid NIPY project data package, you need to satisfy: #. The installer installs the data in some place that can be found using the method defined in :ref:`find-data`. We recommend that: #. By default, you install data in a standard location such as ``/share/nipy`` where ```` is the standard Python prefix obtained by ``>>> import sys; print sys.prefix`` Remember that there is a distinction between the NIPY project - the umbrella of neuroimaging in python - and the NIPY package - the main code package in the NIPY project. Thus, if you want to install data under the NIPY *package* umbrella, your data might go to ``/usr/share/nipy/nipy/packagename`` (on Unix). Note ``nipy`` twice - once for the project, once for the pacakge. If you want to install data under - say - the ```pbrain`` package umbrella, that would go in ``/usr/share/nipy/pbrain/packagename``. Data package format ``````````````````` The following tree is an example of the kind of pattern we would expect in a data directory, where the ``nipy-data`` and ``nipy-templates`` packages have been installed:: `-- nipy |-- data | |-- config.ini | `-- placeholder.txt `-- templates |-- ICBM152 | `-- 2mm | `-- T1.nii.gz |-- colin27 | `-- 2mm | `-- T1.nii.gz `-- config.ini The ```` directory is the directory that will appear somewhere in the list from ``nipy.data.get_data_path()``. The ``nipy`` subdirectory signifies data for the ``nipy`` package (as opposed to other NIPY-related packages such as ``pbrain``). The ``data`` subdirectory of ``nipy`` contains files from the ``nipy-data`` package. In the ``nipy/data`` or ``nipy/templates`` directories, there is a ``config.ini`` file, that has at least an entry like this:: [DEFAULT] version = 0.2 giving the version of the data package. .. _data-package-design-install: Installing the data ``````````````````` We will use python distutils to install data packages, and the ``data_files`` mechanism to install the data. On Unix, with the following command:: python setup.py install --prefix=/my/prefix data will go to:: /my/prefix/share/nipy For the example above this will result in these subdirectories:: /my/prefix/share/nipy/nipy/data /my/prefix/share/nipy/nipy/templates because ``nipy`` is both the project, and the package to which the data relates. If you install to a particular location, you will need to add that location to the output of ``nipy.data.get_data_path()`` using one of the mechanisms above, for example, in your system configuration:: export NIPY_DATA_PATH=/my/prefix/share/nipy Packaging for distributions ``````````````````````````` For a particular data package - say ``nipy-templates`` - distributions will want to: #. Install the data in set location. The default from ``python setup.py install`` for the data packages will be ``/usr/share/nipy`` on Unix. #. Point a system installation of NIPY to these data. For the latter, the most obvious route is to copy an ``.ini`` file named for the data package into the NIPY ``etc_dir``. In this case, on Unix, we will want a file called ``/etc/nipy/nipy_templates.ini`` with contents:: [DATA] path = /usr/share/nipy Current implementation `````````````````````` This section describes how we (the nipy community) implement data packages at the moment. The data in the data packages will not usually be under source control. This is because images don't compress very well, and any change in the data will result in a large extra storage cost in the repository. If you're pretty clear that the data files aren't going to change, then a repository could work OK. The data packages will be available at a central release location. For now this will be: http://nipy.sourceforge.net/data-packages/ . A package, such as ``nipy-templates-0.2.tar.gz`` will have the following sort of structure:: |-- setup.py |-- README.txt |-- MANIFEST.in `-- templates |-- ICBM152 | |-- 1mm | | `-- T1_brain.nii.gz | `-- 2mm | `-- T1.nii.gz |-- colin27 | `-- 2mm | `-- T1.nii.gz `-- config.ini There should be only one ``nipy/packagename`` directory delivered by a particular package. For example, this package installs ``nipy/templates``, but does not contain ``nipy/data``. Making a new package tarball is simply: #. Downloading and unpacking e.g ``nipy-templates-0.1.tar.gz`` to form the directory structure above. #. Making any changes to the directory #. Running ``setup.py sdist`` to recreate the package. The process of making a release should be: #. Increment the major or minor version number in the ``config.ini`` file #. Make a package tarball as above #. Upload to distribution site There is an example nipy data package ``nipy-examplepkg`` in the ``examples`` directory of the NIPY repository. The machinery for creating and maintaining data packages is available at http://github.com/nipy/data-packaging See the ``README.txt`` file there for more information. nipy-nibabel-d3c26be/doc/source/devel/data_pkg_discuss.rst000066400000000000000000000360141177264777700240170ustar00rootroot00000000000000.. _data-package-discuss: ########################## Principles of data package ########################## ********** Motivation ********** When developing or using nipy, many data files can be useful. #. *small test data* - very small data files required for routine code testing. By small we mean less than 100K, and probably much less. They have to be small because we keep them in the main code repository, and you therefore always get them with any download. #. *large test data*. These files can be much larger, and don't come in the standard repository. We use them for tests, but we skip the tests if the data are not present. #. *template data* - data files required for some algorithms to function, such as templates or atlases #. *example data* - data files for running examples. We need some standard way to provide the larger data sets. To do this, we are here defining the idea of a *data package*. This document is a draft specification of what a *data package* looks like and how to use it. ******************* Separation of ideas ******************* This section needs some healthy beating to make the ideas clearer. However, in the interests of the 0SAGA_ software model, here are some ideas that may be separable. Package ======= This idea is rather difficult to define, but is a bit like a data project, that is a set of information that the packager believed had something in common. The package then is an abstract idea, and what is in the package could change completely over course of the life of the package. The package then is a little bit like a namespace, having itself no content other than a string (the package name) and the data it contains. Package name ============ This is a string that gives a name to the package. Package instantiation ===================== By *instantiation* we mean some particular actual set of data for a particular package. By actual, we mean stuff that can be read as bytes. As we add and remove data from the package, the *instantiation* changes. In version control, the instantiation would be the particular state of the working tree at any moment, whether this has been committed or not. It might not be enjoyable, but we'll call a package instantiation a *pinstance*. Pinstance revision ================== A revision is an instantiation of the working tree that has a unique label - the *revision id*. Pinstance revision id ===================== The *revision id* is a string that identifies a particular *pinstance*. This is the equivalent of the revision number in subversion_, or the commit hash in systems like git_ or mercurial_. There is only one pinstance for any given revision id, but there can be more than one revision id for a pinstance. For example, you might have a revision of id '200', delete a file, restore the file, call this revision id '201', but they might both refer to the same instantiation of the package. Or they might not, that's up to you, the author of the package. Pinstance tag ============= A *tag* is a memorable string that refers to a particular pinstance. It differs from a revision id only in that there is not likely to be a tag for every revision. It's possible to imagine pinstances without a revision id but with a tag, but perhaps it's reasonable to restrict tags to refer to revisions. A *tag* is equivalent to a tag name in git or mercurial - a memorable string that refers to a static state of the data. An example might be a numbered version. So, a package may have a revision uniquely identified by a revision id ``af5bd6``. We might decide to label this revision ``release-0.3`` (the equivalent of applying a git tag). ``release-0.3`` is the tag and ``af5bd6`` is the revision id. Different sources of the same package might possibly produce different tags [#tag-sources]_ Pinstance version ================= A *pinstance* might also have a version. A version is just a tag that can be compared using some algorithm. .. _prundle: Package provider bundle ======================= Maybe we could call this a "prundle". The *provider bundle* is something that can deliver the bytes of a particular pinstance. For example, if you have a package named "interesting-images", you might have a revision of that package identified by revision id "f745dc2" and tagged with "version-0.2". There might be a *provider bundle* of that instantiation that is a zipfile ``interesting-images-version-0.2.zip``. There might also be a directory on an http server with the same contents ``http://my.server.org/packages/interesting-images/version-9.2``. The zipfile and the http directory would both be *provider bundles* of the particular instantiation. When I unpack the zipfile onto my hard disk, I might have a directory ``/my/home/packages/interesting-images/version-0.2``. Now this path is a provider bundle. Provider bundle format ====================== In the example above, the zipfile, the http directory and the local path are three different provider bundle formats delivering the same package instantiation. Let's call those formats: * zipfile format * url-path format * local-path format Pinstance release ================= A release might be a package instantiation that one person has: #. tagged #. made available as one or more *provider bundles* .. _prundle-discovery: Prundle discovery ================= We *discover* a package bundle when we ask a system (local or remote) whether they have a package bundle at a given revision, tag, or bundle format. That implies two discoveries - *local discovery* (is the package bundle on my local system, if so where is it?); and *remote discovery* (is the package bundle on your expensive server and if so, how do I get it?). For the Debian distributions, the ``sources.list`` file identifies sources from which we can query for software packages. Those would be sources for *remote discovery* in our language. Prundle discovery source ======================== A *prundle discovery source* is somewhere that can answer prundle discovery queries. One such thing might be a prundle registry, where an element in the registry contains information about a particular prundle. At a first pass this might contain: * package name * bundle format * revision id (optional) * tag (optional) Maybe it should also contain information about where the information came from. Pinstance metadata query ======================== We query a pinstance when we know that a particular system (local or remote) has a package bundle of the pinstance we want. Then we get some information about that pinstance. By definition, different prundles relating to the same pinstance have the same metadata. Pinstance metadata query source =============================== A *pinstance metadata query source* is somewhere that can answer pinstance metadata queries. Obviously a source may well be both a *prundle discovery source* and a *pinstance metadata query source*. Pinstance installation ====================== We install a pinstance when we get some prundle containing the pinstance and place it on local storage, such that we can *discover* the prundle on our own (local) system. That is we take some prundle and convert it to a *local-path* format bundle *and* we register this local-path format bundle to a *discovery source*. Data and metadata ================= Pinstance data is the bytes as they are arranged in a particular pinstance. Pinstance metadata is data about the pinstance. It might include information about what data is in the package. Prundle metadata Information about the particular prundle format. *********************** Comparative terminology *********************** In which we compare the package terminology above to the terminology of Debian packaging. Compared to Debian packaging ============================ * A Debian distribution is a label - such as 'unstable' or 'lenny' - that refers to a set of package revisions that go together. We have no equivalent. * A Debian *repository* is a set of packages within a distribution that go together - e.g. 'main' or 'contrib'. We probably don't have an equivalent (unless we consider Debian's repository as being like a very large package in our language). * A Debian source is a URI giving a location from which you can collect one or more repositories. For example, the line: "http://www.example.com/packages stable main contrib" in a "sources.list" file refers to the *source* "http://www.example.com/packages" providing *distribution* "stable" and *repositories* (within stable) of "main" and "contrib". In our language the combination of URI, distribution and repository would refer to a *prundle discovery source* - that is - something that will answer queries about bundles. * package probably means the same for us as for Debian - a name - like "python-numpy" - that refers to a set of files that go together and should be installed together. * Debian packages have versions to reflect the different byte contents. For example there might be a .deb file (see below) "some-package-0.11_3-i386.deb" for one distribution, and another (with different contents) for another distribution - say "some-package-0.12_9-i386.deb". The "0.11_3" and "0.12_9" parts of the deb filename are what we would call *package instantiation tags*. * A Debian deb file is an archive in a particular format that unpacks to provide the files for a particular package version. We'd call the deb file a *package bundle*, that is in *bundle format* "deb-format". ********** Desiderata ********** We want to build a package system that is very simple ('S' in 0SAGA_). For the moment, the main problems we want to solve are: creation of a package instantiation, installation of package instantiations, local discovery of package instantiations. For now we are not going to try and solve queries. At least local discovery should be so simple that it can be implemented in any language, and should not require a particular tool to be installed. We hope we can write a spec that makes all of (creation, installation, local discovery) clearly defined, so that it would be simple to write an implementation. Obviously we're going to end up writing our own implementation, or adapting someone else's. datapkg_ looks like the best candidate at the moment. ****** Issues ****** From a brief scan of the `debian package management documentation `_. Dependency management ===================== (no plan at the moment) Authentication and validation ============================= * Authentication - using signatures to confirm that you made this package. * Verification - verify that the contents have not been corrupted or changed since the original instantiation. For dependency and validation, see the `Debian secure apt`_ page. One related proposal would be: .. _Debian secure apt: http://wiki.debian.org/SecureApt * Each package instantiation would carry a table of checksums for the files within. Someone using this instantiation would check the checksums to confirm that they had the intended content. * Authentication would involve some kind of signing of the table of checksums, as in the ``Release.gpg`` file in Debian distributions (`Debian secure apt`_ again). This involves taking a checksum of the table of checksums, then using our trusted private key to encrypt this checksum, generating a digital signature. The signature is the thing we provide to the user. The user then gets our public key or has it already; they use the key to decrypt the signature to get the checksum, and they check the resulting checksum against the actual checksum of the checksum table. The property of the public/private key pair is that it is very hard to go backwards. To explain, here's an example. Imagine someone we don't like has made a version of the package instantiation, but wants to persuade the world that we made it. Their contents will have different checksums, and therefore a different checksum for the checksum table. Let's say the checksum of the new checksum table is *X*. They know that you, the user, will use your own copy of our public key, and they can't get at that. Their job then, is to make a new encrypted checksum (the signature) that will decrypt with our real public key, to equal *X*. That's going backwards from the desired result *X* to the signature, and that is very hard, if they don't have our private key. ****************************** Differences from code packages ****************************** The obvious differences are: #. Data packages can be very large #. We have less need for full history tracking (probably) The size of data packages probably mean that using git_ itself will not work well. git_ stores (effectively) all previous versions of the files in the repository, as zlib compressed blobs. The working tree is an uncompressed instantiation of the current state. Thus, if we have, over time, had 4 different versions of a large file with little standard diff relationship to one another, the repository will have four zlib compressed versions of the file in the ``.git/objects`` database, and one uncompressed version in the working tree. The files in data packages may or may not compress well. In contrast to the full git_ model, we may want to avoid duplicates of the data. We probably won't by default want to keep all previous versions of the data together at least locally. We probably do want to be able to keep track of which files are the same across different instantiations of the package, in the case where we already have one instantiation on local disk, and we are asking for another, with some shared files. We might well want to avoid downloading duplicate data in that case. Maybe the way to think of it is of the different costs that become important as files get larger. So the cost for holding a full history becomes very large, whereas the benefit decreases a little bit (compared to code). ************* Some usecases ************* Discovery ========= :: from ourpkg import default_registry my_pkg_path = default_registry.pathfor('mypkg', '0.3') if mypkg_path is None: raise RuntimeError('It looks like mypkg version 0.3 is not installed') .. rubric:: Footnotes .. [tag-sources] Revsion ids could for example be hashes of the package instantiation (package contents), so they could be globally unique to the contents, whereever the contents was when the identifier was made. However, *tags* are just names that someone has attached to a particular revsion id. If there is more than one person providing versions of a particular package, there may not be agreement on the revsion that a particular tag is attached to. For example, I might think that ``release-0.3`` of ``some-package`` refers to package state identified by revsion id ``af5bd6``, but you might think that ``release-0.3`` of ``some-package`` refers to some other package state. In this case you and are are both a *tag sources* for the package. The state that particular tag refers to can depend then on the source from which the tag came. .. include:: ../links_names.txt nipy-nibabel-d3c26be/doc/source/devel/data_pkg_uses.rst000066400000000000000000000167121177264777700233240ustar00rootroot00000000000000.. _data-pkg-uses: ######################################## Data package usecases and implementation ######################################## ******** Usecases ******** We are here working from :doc:`data_pkg_discuss` Prundles ======== See :ref:`prundle`. An *local path* format prundle is a directory on the local file system with prundle data stored in files in a on the local filesystem. Examples ======== We'll call our package `dang` - data package new generation. Create local-path prundle ------------------------- >>> import os >>> import tempfile >>> pth = tempfile.mkdtemp() # temporary directory Make a pinstance object >>> from dang import Pinstance >>> pri = Prundle(name='my-package') >>> pri.pkg_name 'my-package' >>> pri.meta {} Now we make a prundle. First a directory to contain it >>> import os >>> import tempfile >>> pth = tempfile.mkdtemp() # temporary directory >>> from dang.prundle import LocalPathPrundle >>> prun = LocalPathPrundle(pri, pth) At the moment there's nothing in the directory. The 'write' method will write the meta information - here just the package name. >>> prun.write() # writes meta.ini file >>> os.listdir(pth) ['meta.ini'] The local path prundle data is just the set of files in the temporary directory named in ``pth`` above. Now we've written the package, we can get it by a single call that reads in the ``meta.ini`` file: >>> prun_back = LocalPathPrundle.from_path(pth) >>> prun_back.pkg_name 'my-package' Getting prundle data -------------------- The file-system prundle formats can return content by file names. For example, for the local path ``prun`` distribution objects we have seen so far, the following should work:: >>> fobj = prun.get_fileobj('a_file.txt') In fact, local path distribution objects also have a ``path`` attribute:: >>> fname = os.path.join(prun.path, 'a_file.txt') The ``path`` attribute might not make sense for objects with greater abstraction over the file-system - for example objects encapsulating web content. ********* Discovery ********* So far, in order to create a prundle object, we have to know where the prundle is (the path). We want to be able to tell the system where prundles are - and the system will then be able to return a prundle on request - perhaps by package name. The system here is answering a :ref:`prundle-discovery` query. We will then want to ask our packaging system whether it knows about the prundle we are interested in. Discovery sources ================= A discovery source is an object that can answer a discovery query. Specifically, it is an object with a ``discover`` method, like this:: >>> import dang >>> dsrc = dang.get_source('local-system') >>> dquery_result = dsrc.discover('my-package', version='0') >>> dquery_result[0].pkg_name 'my-package' >>> dquery_result = dsrc.discover('implausible-pkg', version='0') >>> len(dquery_result) 0 The discovery version number spec may allow comparison operators, as for ``distutils.version.LooseVersion``:: >>> res = dsrc.discover(name='my-package', version='>=0') >>> prun = rst[0] >>> prun.pkg_name 'my-package' >>> prun.meta['version'] '0' Default discovery sources ========================= We've used the ``local-system`` discovery source in this call:: >>> dsrc = dpkg.get_source('local-system') The ``get_source`` function is a convenience function that returns default discovery sources by name. There are at least two named discovery sources, ``local-system``, and ``local-user``. ``local-system`` is a discovery source for packages that are installed system-wide (``/usr/share/data`` type installation in \*nix). ``local-user`` is for packages installed for this user only (``/home/user/data`` type installations in \*nix). Discovery source pools ====================== We'll typically have more than one source from which we'd like to query. The obvious case is where we want to look for both system and local sources. For this we have a *source pool* which simply returns the first known distribution from a list of sources. Something like this:: >>> local_sys = dpkg.get_source('local-system') >>> local_usr = dpkg.get_source('local-user') >>> src_pool = dpkg.SourcePool((local_usr, local_sys)) >>> dq_res = src_pool.discover('my-package', version='0') >>> dq_res[0].pkg_name 'my-package' We'll often want to do exactly this, so we'll add this source pool to those that can be returned from our ``get_source`` convenience function:: >>> src_pool = dpkg.get_source('local-pool') Register a prundle ================== In order to register a prundle, we need a prundle object and a discovery source:: >>> from dang.prundle import LocalPathPrundle >>> prun = LocalPathDistribution.from_path(path=/a/path') >>> local_usr = dang.get_source('local-user') >>> local_usr.register(prun) Let us then write the source to disk:: >>> local_usr.write() Now, when we start another process as the same user, we can do this:: >>> import dang >>> local_usr = dang.get_source('local-user') >>> prun = local_usr.discover('my-package', '0')[0] ************** Implementation ************** Here are some notes. We had the hope that we could implement something that would be simple enough that someone using the system would not need our code, but could work from the specification. Local path prundles =================== These are directories accessible on the local filesystem. The directory needs to give information about the prundle name and optionally, version, tag, revision id and maybe other metadata. An ``ini`` file is probably enough for this - something like a ``meta.ini`` file in the directory with:: [DEFAULT] name = my-package version = 0 might be enough to get started. Discovery sources ================= The discovery source has to be able to return prundle objects for the prundles it knows about. [my-package] 0 = /some/path 0.1 = /another/path [another-package] 0 = /further/path Registering a package ===================== So far we have a local path distribution, that is a directory with some files in it, and our own ``meta.ini`` file, containing the package name and version. How does this package register itself to the default sources? Of course, we could use ``dpkg`` as above:: >>> dst = dpkg.LocalPathDistribution.from_path(path='/a/path') >>> local_usr = dpkg.get_source('local-user') >>> local_usr.register(dst) >>> local_usr.save() but we wanted to be able to avoid using ``dpkg``. To do this, there might be a supporting script, in the distribution directory, called ``register_me.py``, of form given in :download:`register_me.py`. Using discovery sources without dpkg ==================================== The local discovery sources are ini files, so it would be easy to read and use these outside the dpkg system, as long as the locations of the ini files are well defined. Here is the code from ``register_me.py`` defining these files:: import os import sys if sys.platform == 'win32': _home_dpkg_sdir = '_dpkg' _sys_drive, _ = os.path.splitdrive(sys.prefix) else: _home_dpkg_sdir = '.dpkg' _sys_drive = '/' # Can we get the user directory? _home = os.path.expanduser('~') if _home == '~': # if not, the user ini file is undefined HOME_INI = None else: HOME_INI = os.path.join(_home, _home_dpkg_sdir, 'local.dsource') SYS_INI = os.path.join(_sys_drive, 'etc', 'dpkg', 'local.dsource') nipy-nibabel-d3c26be/doc/source/devel/devdiscuss.rst000066400000000000000000000012571177264777700226650ustar00rootroot00000000000000.. -*- mode: rst; fill-column: 79 -*- .. ex: set sts=4 ts=4 sw=4 et tw=79: ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### # # See COPYING file distributed along with the NiBabel package for the # copyright and license terms. # ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### .. _chap_devdiscuss: ********************* Developer discussions ********************* Some discussions of usecases and other design issues. Most of these don't apply to the current codebase, and are only for discussion of future directions. .. toctree:: :maxdepth: 2 usecases/index refactoring/index data_pkg_design nipy-nibabel-d3c26be/doc/source/devel/devguide.rst000066400000000000000000000066271177264777700223130ustar00rootroot00000000000000.. -*- mode: rst; fill-column: 79 -*- .. ex: set sts=4 ts=4 sw=4 et tw=79: ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### # # See COPYING file distributed along with the NiBabel package for the # copyright and license terms. # ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### .. _chap_devguide: **************************** NiBabel Developer Guidelines **************************** NiBabel source code =================== .. toctree:: :maxdepth: 2 ../gitwash/index Documentation ============= Code Documentation ------------------ All documentation should be written using Numpy documentation conventions: http://projects.scipy.org/numpy/wiki/CodingStyleGuidelines#docstring-standard Git Repository ============== Layout ------ The main release branch is called ``master``. This is a merge-only branch. Features finished or updated by some developer are merged from the corresponding branch into ``master``. At a certain point the current state of ``master`` is tagged -- a release is done. Only usable feature should end-up in ``master``. Ideally ``master`` should be releasable at all times. Additionally, there are distribution branches. They are prefixed ``dist/`` and labeled after the packaging target (e.g. *debian* for a Debian package). If necessary, there can be multiple branches for each distribution target. ``dist/debian/proper`` Official Debian packaging ``dist/debian/dev`` Debian packaging of unofficial development snapshots. They do not go into the main Debian archive, but might be distributed through other channels (e.g. NeuroDebian). Releases are merged into the packaging branches, packaging is updated if necessary and the branch gets tagged when a package version is released. Maintenance (as well as backport) releases or branches off from the respective packaging tag. There might be additonal branches for each developer, prefixed with intials. Alternatively, several GitHub (or elsewhere) clones might be used. Commits ------- Please prefix all commit summaries with one (or more) of the following labels. This should help others to easily classify the commits into meaningful categories: * *BF* : bug fix * *RF* : refactoring * *NF* : new feature * *BW* : addresses backward-compatibility * *OPT* : optimization * *BK* : breaks something and/or tests fail * *PL* : making pylint happier * *DOC*: for all kinds of documentation related commits * *TEST*: for adding or changing tests Merges ------ For easy tracking of what changes were absorbed during merge, we advise that you enable merge summaries within git: git-config merge.summary true See :ref:`configure-git` for more detail. Changelog ========= The changelog is located in the toplevel directory of the source tree in the `Changelog` file. The content of this file should be formated as restructured text to make it easy to put it into manual appendix and on the website. This changelog should neither replicate the VCS commit log nor the distribution packaging changelogs (e.g. debian/changelog). It should be focused on the user perspective and is intended to list rather macroscopic and/or important changes to the module, like feature additions or bugfixes in the algorithms with implications to the performance or validity of results. It may list references to 3rd party bugtrackers, in case the reported bugs match the criteria listed above. nipy-nibabel-d3c26be/doc/source/devel/index.rst000066400000000000000000000003211177264777700216070ustar00rootroot00000000000000.. -*- mode: rst -*- .. ex: set sts=4 ts=4 sw=4 et tw=79: .. _devindex: Developer documentation page ============================ .. toctree:: :maxdepth: 2 devguide devdiscuss make_release nipy-nibabel-d3c26be/doc/source/devel/make_release.rst000066400000000000000000000215421177264777700231250ustar00rootroot00000000000000.. _release-guide: *********************************** A guide to making a nibabel release *********************************** A guide for developers who are doing a nibabel release .. _release-tools: Release tools ============= There are some release utilities that come with nibabel_. nibabel should install these as the ``nisext`` package, and the testing stuff is understandably in the ``testers`` module of that package. nibabel has Makefile targets for their use. The relevant targets are:: make check-version-info make check-files make sdist-tests The first installs the code from a git archive, from the repository, and for in-place use, and runs the ``get_info()`` function to confirm that installation is working and information parameters are set correctly. The second (``sdist-tests``) makes an sdist source distribution archive, installs it to a temporary directory, and runs the tests of that install. If you have a version of nibabel trunk past February 11th 2011, there will also be a functional make target:: make bdist-egg-tests This builds an egg (which is a zip file), hatches it (unzips the egg) and runs the tests from the resulting directory. .. _release-checklist: Release checklist ================= * Review the open list of `nibabel issues`_. Check whether there are outstanding issues that can be closed, and whether there are any issues that should delay the release. Label them ! * Review and update the release notes. Review and update the :file:`Changelog` file. Get a partial list of contributors with something like:: git log 1.2.0.. | grep '^Author' | cut -d' ' -f 2- | sort | uniq where ``1.2.0`` was the last release tag name. Then manually go over ``git shortlog 1.2.0..`` to make sure the release notes are as complete as possible and that every contributor was recognized. * Use the opportunity to update the ``.mailmap`` file if there are any duplicate authors listed from ``git shortlog``. * Check the ``long_description`` in ``nibabel/info.py``. Check it matches the ``README`` in the root directory. * Do a final check on the `nipy buildbot`_ * If you have travis-ci_ building set up you might want to push the code in it's current state to a branch that will build, e.g:: git branch -D pre-release-test # in case branch already exists git co -b pre-release-test git push origin pre-release-test * Clean:: make distclean * Make sure all tests pass (from the nibabel root directory):: cd .. nosetests --with-doctest nibabel cd nibabel # back to the root directory * Make sure all tests pass from sdist:: make sdist-tests and bdist_egg:: make bdist-egg-tests and the three ways of installing (from tarball, repo, local in repo):: make check-version-info The last may not raise any errors, but you should detect in the output lines of this form:: {'sys_version': '2.6.6 (r266:84374, Aug 31 2010, 11:00:51) \n[GCC 4.0.1 (Apple Inc. build 5493)]', 'commit_source': 'archive substitution', 'np_version': '1.5.0', 'commit_hash': '25b4125', 'pkg_path': '/var/folders/jg/jgfZ12ZXHwGSFKD85xLpLk+++TI/-Tmp-/tmpGPiD3E/pylib/nibabel', 'sys_executable': '/Library/Frameworks/Python.framework/Versions/2.6/Resources/Python.app/Contents/MacOS/Python', 'sys_platform': 'darwin'} /var/folders/jg/jgfZ12ZXHwGSFKD85xLpLk+++TI/-Tmp-/tmpGPiD3E/pylib/nibabel/__init__.pyc {'sys_version': '2.6.6 (r266:84374, Aug 31 2010, 11:00:51) \n[GCC 4.0.1 (Apple Inc. build 5493)]', 'commit_source': 'installation', 'np_version': '1.5.0', 'commit_hash': '25b4125', 'pkg_path': '/var/folders/jg/jgfZ12ZXHwGSFKD85xLpLk+++TI/-Tmp-/tmpGPiD3E/pylib/nibabel', 'sys_executable': '/Library/Frameworks/Python.framework/Versions/2.6/Resources/Python.app/Contents/MacOS/Python', 'sys_platform': 'darwin'} /Users/mb312/dev_trees/nibabel/nibabel/__init__.pyc {'sys_version': '2.6.6 (r266:84374, Aug 31 2010, 11:00:51) \n[GCC 4.0.1 (Apple Inc. build 5493)]', 'commit_source': 'repository', 'np_version': '1.5.0', 'commit_hash': '25b4125', 'pkg_path': '/Users/mb312/dev_trees/nibabel/nibabel', 'sys_executable': '/Library/Frameworks/Python.framework/Versions/2.6/Resources/Python.app/Contents/MacOS/Python', 'sys_platform': 'darwin'} * Check the ``setup.py`` file is picking up all the library code and scripts, with:: make check-files Look for output at the end about missed files, such as:: Missed script files: /Users/mb312/dev_trees/nibabel/bin/nib-dicomfs, /Users/mb312/dev_trees/nibabel/bin/nifti1_diagnose.py Fix ``setup.py`` to carry across any files that should be in the distribution. * You probably have virtualenvs for different python versions. Check the tests pass for different configurations. If you have pytox_ and a network connnection, and lots of pythons installed, you might be able to do:: tox and get tests for python 2.5, 2.6, 2.7, 3.2. I (MB) have my own set of virtualenvs installed and I've set them up to run with:: tox -e python25,python26,python27,python32,np-1.2.1 The trick was only to define these ``testenv`` sections in ``tox.ini``. These two above run with:: make tox-fresh make tox-stale respectively. The long-hand not-tox way looks like this:: workon python26 make sdist-tests deactivate etc for the different virtualenvs. * Check on different platforms, particularly windows and PPC. I have wine installed on my Mac, and git bash installed under wine. I run bash and the tests like this:: wineconsole bash # in wine bash make sdist-tests For the PPC I have to log into an old Mac G5 in Berkeley at ``jerry.bic.berkeley.edu``. Here's an example session:: ssh jerry.bic.berkeley.edu cd dev_trees/nibabel git co main-master git pull make sdist-tests * Check the documentation doctests:: cd doc make doctest cd .. * Check everything compiles without syntax errors:: python -m compileall . * The release should now be ready. * Edit :file:`nibabel/info.py` to set ``_version_extra`` to ``''``; commit. Then:: make source-release * Once everything looks good, you are ready to upload the source release to PyPi. See `setuptools intro`_. Make sure you have a file ``\$HOME/.pypirc``, of form:: [distutils] index-servers = pypi [pypi] username:your.pypi.username password:your-password [server-login] username:your.pypi.username password:your-password * When ready:: python setup.py register python setup.py sdist --formats=gztar,zip upload From somewhere - maybe a windows machine - upload the windows installer for convenience:: python setup.py bdist_wininst upload * Tag the release with tag of form ``1.1.0``:: git tag -am 'Second main release' 1.1.0 * Now the version number is OK, push the docs to sourceforge with:: make upload-htmldoc-mysfusername where ``mysfusername`` is obviously your own sourceforge username. * Set up maintenance / development branches If this is this is a full release you need to set up two branches, one for further substantial development (often called 'trunk') and another for maintenance releases. * Branch to maintenance:: git co -b maint/1.0.x Set ``_version_extra`` back to ``.dev`` and bump ``_version_micro`` by 1. Thus the maintenance series will have version numbers like - say - '1.0.1.dev' until the next maintenance release - say '1.0.1'. Commit. Don't forget to push upstream with something like:: git push upstream maint/1.0.0 --set-upstream * Start next development series:: git co main-master then restore ``.dev`` to ``_version_extra``, and bump ``_version_minor`` by 1. Thus the development series ('trunk') will have a version number here of '1.1.0.dev' and the next full release will be '1.1.0'. If this is just a maintenance release from ``maint/1.0.x`` or similar, just tag and set the version number to - say - ``1.0.2.dev``. * Push tags:: git push --tags * Make next development release tag After each release the master branch should be tagged with an annotated (or/and signed) tag, naming the intended next version, plus an 'upstream/' prefix and 'dev' suffix. For example 'upstream/1.0.0.dev' means "development start for upcoming version 1.0.0. This tag is used in the Makefile rules to create development snapshot releases to create proper versions for those. The version derives its name from the last available annotated tag, the number of commits since that, and an abbreviated SHA1. See the docs of ``git describe`` for more info. Please take a look at the Makefile rules ``devel-src``, ``devel-dsc`` and ``orig-src``. * Announce to the mailing lists. .. _pytox: http://codespeak.net/tox .. _setuptools intro: http://packages.python.org/an_example_pypi_project/setuptools.html .. _travis-ci: http://travis-ci.org .. include:: ../links_names.txt nipy-nibabel-d3c26be/doc/source/devel/refactoring/000077500000000000000000000000001177264777700222555ustar00rootroot00000000000000nipy-nibabel-d3c26be/doc/source/devel/refactoring/code/000077500000000000000000000000001177264777700231675ustar00rootroot00000000000000nipy-nibabel-d3c26be/doc/source/devel/refactoring/code/images.py000066400000000000000000000066721177264777700250210ustar00rootroot00000000000000# emacs: -*- mode: python-mode; py-indent-offset: 4; indent-tabs-mode: nil -*- # vi: set ft=python sts=4 ts=4 sw=4 et: ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ## # # See COPYING file distributed along with the NiBabel package for the # copyright and license terms. # ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ## ''' Base class for images A draft. ''' import nibabel.ioimps as ioimps class ImageError(Exception): pass class Image(object): ''' Base class for images Attributes: * data : array-like; image data * affine : array; mapping from image voxels to output space coordinates * output_space : string; name for affine output space * meta : dict-like; image metadata * io : image io implementation object Properties (sorry guys): * filename : string : read only, filename or None if none * mode : string; 'r'ead, 'w'rite, or 'rw' Methods: * save(filespec=None) * get_filespec() * set_filespec(filespec) * same_as_filename() Class attributes: * default_io_class ''' default_io_class = ioimps.default_io def __init__(self, data, affine=None, output_space=None, meta=None, filespec=None, io=None, mode='rw'): self.data = data self.affine = affine self.output_space = output_space if meta is None: meta = {} self.meta = meta if not filespec is None: if io is None: io = ioimps.guessed_imp(filespec) else: io.set_filespec(filespec) if io is None: io = self.default_io_class() self.io = io # lay down flag to show changes in IO self._io_hash = io.get_hash() self._mode = None self.mode = mode @property def filename(self): filespec = self.get_filespec() return filespec.filename def mode(): def fget(self): return self._mode def fset(self, mode): if not set('rw').issuperset(set(mode)): raise ImageError('Invalid mode "%s"' % mode) self._mode = mode doc = 'image read / write mode' return locals() mode = property(**mode()) def get_filespec(self): return self.io.get_filespec() def set_filespec(self, filespec): self.io.set_filespec(filespec) def save(self, filespec=None, io=None): io.save_image(self, filespec, io) @classmethod def from_io(klass, io): return io.as_image(klass) def same_as_filename(self, filename=None): ''' True if image in memory is same as image on disk ''' fname = self.filename if fname is None: return False if filename: if filename != fname: return False # first, check if io has changed if self._io_hash != self.io.get_hash(): return False # Then get io to check image against itself return self.io.same_as_image(self) def load(filespec, maker=Image, io=None): if io is None: io = ioimps.guessed_implementation(filespec) else: io.set_filespec(filespec) return maker.from_io(io) def save(img, filespec=None, io=None): img.save(filespec, io) nipy-nibabel-d3c26be/doc/source/devel/refactoring/code/ioimps.py000066400000000000000000000035631177264777700250500ustar00rootroot00000000000000# emacs: -*- mode: python-mode; py-indent-offset: 4; indent-tabs-mode: nil -*- # vi: set ft=python sts=4 ts=4 sw=4 et: ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ## # # See COPYING file distributed along with the NiBabel package for the # copyright and license terms. # ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ## ''' IO implementatations ''' def guessed_imp(filespec): ''' Return implementation guessed from filespec ''' raise NotImplementedError class IOImplementation(object): def __init__(self, filespec = None): self._filespec = None self.set_filespec(filespec) def get_filespec(self): return self._filespec def set_filespec(self, filespec): self._filespec = filespec def to_filespec(self, filespec=None): raise NotImplementedError def copy(self): raise NotImplementedError def get_affine(self): raise NotImplementedError def set_affine(self, affine): raise NotImplementedError def get_output_space(self): raise NotImplementedError def set_output_space(self, output_space): raise NotImplementedError def get_data_shape(self): raise NotImplementedError def set_data_shape(self, shape): raise NotImplementedError def get_data_dtype(self): raise NotImplementedError def set_data_dtype(self, dtype): raise NotImplementedError def write_slice(data, slicedef, outfile = None): raise NotImplementedError def as_image(self, image_maker): raise NotImplementedError def save_image(self, image, filespec=None, io=None): raise NotImplementedError def same_as_image(self, image): raise NotImplementedError def get_hash(self): raise NotImplementedError default_io = IOImplementation nipy-nibabel-d3c26be/doc/source/devel/refactoring/image_redraft.py000066400000000000000000000026431177264777700254250ustar00rootroot00000000000000import numpy as np def _unwritable_wrapper(in_arr): out_arr = np.asanyarray(arr) if not out_arr.flags.writeable: return out_arr if out_arr is arr: # there was an array as input out_arr = arr[:] out_arr.flags.writeable = False return out_arr class Image(object): _header_class = Header # generic Header class def __init__(self, data, affine, header=None, world='unknown', extra=None): self._data = _unwritable_wrapper(data) self.set_affine(affine) self.set_header(header) self._world = world if extra is None: extra = {} self.extra = extra def get_data(self, copy=False): data = self._data if copy: return data.copy() return data def get_affine(self): return self._affine.copy() def set_affine(self, affine): self._affine = np.array(affine) # copy self._dirty_header = True def get_header(self): return self._header.copy() def set_header(self, header): self._header = self._header_class.from_header(header) # copy self._dirty_header = True def _get_world(self): return self._world def _set_world(self, world): self._world = world self._dirty_header = True world = property(_get_world, _set_world, None, 'Get / set world') nipy-nibabel-d3c26be/doc/source/devel/refactoring/index.rst000066400000000000000000000002641177264777700241200ustar00rootroot00000000000000============================ nibabel refactoring drafts ============================ Drafts, maybe with code, for refactoring. .. toctree:: :maxdepth: 2 ioimplementation nipy-nibabel-d3c26be/doc/source/devel/refactoring/ioimplementation.rst000066400000000000000000000056411177264777700263720ustar00rootroot00000000000000.. -*- mode: rst -*- ==================================================== Relationship between images and io implementations ==================================================== Images ====== An image houses the association of the: * data array * affine * output space * metadata * mode These are straightforward attributes, and have no necessary relationship to stuff on disk. By ''disk'', we mean, file-like objects - not necessarily on disk. The *io implementation* manages the relationship of images and stuff on disk. Specifically, it manages ``load`` of images from disk, and ``save`` of images to disk. The user does not see the io implementation unless they ask to. In standard use of images they will not need to do this. IO implementations ================== By use case. :: Creating array image, saving >>> import tempfile >>> from nibabel.images import Image >>> from nibabel import load, save >>> fp, fname = tempfile.mkstemp('.nii') >>> data = np.arange(24).reshape((2,3,4)) >>> img = Image(data) >>> img.filename is None True >>> img.save() Traceback (most recent call last): ... ImageError: no filespec to save to >>> save(img) Traceback (most recent call last): ... ImageError: no filespec to save to >>> img2 = save(img, 'some_image.nii') # type guessed from filename >>> img2.filename == fname True >>> img.filename is None # still True >>> img.filename = 'some_filename.nii' # read only property Traceback (most recent call last): ... AttributeError: can't set attribute Load, futz, save >>> img3 = load(fname, mode='r') >>> img3.filename == fname True >>> np.all(img3.data == data) True >>> img3.data[0,0] = 99 >>> img3.save() Traceback (most recent call last): ... ImageError: trying to write to read only image >>> img3.mode = 'rw' >>> img3.save() >>> load(img4) >>> img4.mode # 'r' is the default 'r' >>> mod_data = data.copy() >>> mod_data[0,0] = 99 >>> np.all(img4.data = mod_data) True Prepare image for later writing >>> img5 = Image(np.zeros(2,3,4)) >>> fp, fname2 = tempfile.mkstemp('.nii') >>> img5.set_filespec(fname2) >>> # then do some things to the image >>> img5.save() This is an example where you do need the io API >>> from nibabel.ioimps import guessed_imp >>> fp, fname3 = tempfile.mkstemp('.nii') >>> ioimp = guessed_imp(fname3) >>> ioimp.set_data_dtype(np.float) >>> ioimp.set_data_shape((2,3,4)) # set_data_shape method >>> slice_def = (slice(None), slice(None), 0) >>> ioimp.write_slice(data[slice_def], slice_def) # write_slice method >>> slice_def = (2, 3, 1) >>> ioimp.write_slice(data[slice_def], slice_def) # write_slice method Traceback (most recent call last): ... ImageIOError: data write is not contiguous nipy-nibabel-d3c26be/doc/source/devel/register_me.py000066400000000000000000000026231177264777700226340ustar00rootroot00000000000000from os.path import join as pjoin, expanduser, abspath, dirname import sys # Python 3 compatibility try: import configparser as cfp except ImportError: import ConfigParser as cfp if sys.platform == 'win32': HOME_INI = pjoin(expanduser('~'), '_dpkg', 'local.dsource') else: HOME_INI = pjoin(expanduser('~'), '.dpkg', 'local.dsource') SYS_INI = pjoin(abspath('etc'), 'dpkg', 'local.dsource') OUR_PATH = dirname(__file__) OUR_META = pjoin(OUR_PATH, 'meta.ini') DISCOVER_INIS = {'user': HOME_INI, 'system': SYS_INI} def main(): # Get ini file to which to write try: reg_to = sys.argv[1] except IndexError: reg_to = 'user' if reg_to in ('user', 'system'): ini_fname = DISCOVER_INIS[reg_to] else: # it is an ini file name ini_fname = reg_to # Read parameters for our distribution meta = cfp.ConfigParser() files = meta.read(OUR_META) if len(files) == 0: raise RuntimeError('Missing meta.ini file') name = meta.get('DEFAULT', 'name') version = meta.get('DEFAULT', 'version') # Write into ini file dsource = cfp.ConfigParser() dsource.read(ini_fname) if not dsource.has_section(name): dsource.add_section(name) dsource.set(name, version, OUR_PATH) dsource.write(file(ini_fname, 'wt')) print 'Registered package %s, %s to %s' % (name, version, ini_fname) if __name__ == '__main__': main() nipy-nibabel-d3c26be/doc/source/devel/scaling.rst000066400000000000000000000047151177264777700221330ustar00rootroot00000000000000########################### Scalefactors and intercepts ########################### SPM Analyze and nifti1 images have *scalefactors*. nifti1 images also have *intercepts*. If ``A`` is an array in memory, and ``S`` is the array that will be written to disk, then:: R = (A - intercept) / scalefactor and ``R == S`` if ``R`` is already the data dtype we need to write. If we load the image from disk, we exactly recover ``S`` (and ``R``). To get something approximating ``A`` (say ``Aprime``) we apply the intercept and scalefactor:: Aprime = (S * scalefactor) + intercept In a perfect world ``A`` would be exactly the same as ``Aprime``. However ``scalefactor`` and ``intercept`` are floating point values. With floating point, if ``r = (a - b) / c; p = (r * c) + b`` it is not necessarily true that ``p == a``. For example: >>> import numpy as np >>> a = 10 >>> b = np.e >>> c = np.pi >>> r = (a - b) / c >>> p = (r * c) + b >>> p == a False So there will be some error in this reconstruction, even when ``R`` is the same type as ``S``. More common is the situation where ``R`` is a different type from ``S``. If ``R`` is of type ``r_dtype``, ``S`` is of type ``s_dtype`` and ``cast_function(R, dtype)`` is some function that casts ``R`` to the desired type ``dtype``, then:: R = (A - intercept) / scalefactor S = cast_function(R, s_dtype) R_prime = cast_function(S, r_dtype) A_prime = (R_prime * scalefactor) + intercept The type of ``R`` will depend on what numpy did for upcasting ``A, intercept, scalefactor``. In order that ``cast_function(S, r_dtype)`` can best reverse ``cast_function(R, s_dtype)``, the second needs to know the type of ``R``, which is not stored. The type of ``R`` depends on the types of ``A`` and of ``intercept, scalefactor``. We don't know the type of ``A`` because it is not stored. ``R`` is likely to be a floating point type because of the application of scalefactor and intercept. If ``(intercept, scalefactor)`` are not the identity (0, 1), then we can ensure that ``R`` is at minimum the type of the ``intercept, scalefactor`` by making these be at least 1D arrays, so that floating point types will upcast in ``R = (A - intercept) / scalefactor``. The cast of ``R`` to ``S`` and back to ``R_prime`` can lose resolution if the types of ``R`` and ``S`` have different resolution. Our job is to select: * scalefactor * intercept * ``cast_function`` such that we minimize some measure of difference between ``A`` and ``A_prime``. nipy-nibabel-d3c26be/doc/source/devel/usecases/000077500000000000000000000000001177264777700215655ustar00rootroot00000000000000nipy-nibabel-d3c26be/doc/source/devel/usecases/filenames.rst000066400000000000000000000051011177264777700242570ustar00rootroot00000000000000======================== Usecases for filenames ======================== Here we describe the uses that we might make of a filename attached to an image. The images need not ever be associated with files. We can imagine other storage for images, that are not in files, but - for example - databases, or file-like objects. An image can exist without a filename, when we create the image in memory: >>> import numpy as np >>> import nibabel as nib >>> data = np.arange(24).reshape((2,3,4)) >>> img = nib.Nifti1Image(data, np.eye(4)) Some images will have filenames. For example, if we load an image from disk, there is a natural association with the filename. To show this, we first get an example filename from the nibabel code: >>> from nibabel.testing import data_path, pjoin >>> fname = pjoin(data_path, 'example4d.nii.gz') Now we can load from the filename: >>> img = nib.load(fname) We could get the filename with one of:: >>> img.get_filename() == fname True The argument for the second is that we will also want to set the filename. The setter will want to expand filenames that are interpretable but not full. For example, the following might all be OK for an image ``somefile.img``: >>> img = nib.Spm99AnalyzeImage(np.zeros((2,3,4)), np.eye(4)) >>> img.set_filename('somefile') >>> img.set_filename('somefile.hdr') >>> img.set_filename('somefile.img') If that is true, imagine a property ``img.filename`` which encapsulates the get and set calls. It would have the following annoying behavior:: img.filename = 'somefile' assert img.filename == 'somefile.img' img.filename = 'somefile.hdr' assert img.filename == 'somefile.img' In this case I think getters and setters are more pleasant. The filename should probably follow the image around even if the image in memory has diverged very far from the image on disk: >>> img = nib.load(fname) >>> idata = img.get_data() >>> idata[:] = 0 >>> hdr = img.get_header() >>> hdr['descrip'] = 'something strange' >>> img.get_filename() == fname True This also allows saving into - and loading from - already open file-like objects. The main use for this is testing, but we could imagine wrapping some other storage mechanism in file-like objects: >>> from StringIO import StringIO >>> img_klass = nib.Nifti1Image >>> file_map = img_klass.make_file_map({'image':StringIO()}) >>> img = img_klass(data, np.eye(4), file_map=file_map) >>> img.to_file_map() In this last case, there is obviously not a valid filename: >>> assert img.get_filename() is None nipy-nibabel-d3c26be/doc/source/devel/usecases/index.rst000066400000000000000000000002011177264777700234170ustar00rootroot00000000000000================== nibabel usecases ================== .. toctree:: :maxdepth: 2 filenames loading_saving spm_use nipy-nibabel-d3c26be/doc/source/devel/usecases/loading_saving.rst000066400000000000000000000103621177264777700253050ustar00rootroot00000000000000.. -*- rst -*- =============================================== Loading and saving image files from / to disk =============================================== Need for lightweight version of image object ============================================ Images can be very large, and therefore take up a large amount of memory, or processor / system time when loading the image from disk. We would like to be able to create and look at an image (and not the image data) without incurring the full cost of the load from disk. So, the image object can be lightweight:: import nibabel img = nibabel.load('some_image.nii') In this case, the ``img`` object has not yet loaded the data from disk. We may use the ``get_data()`` method to get the data, or something fancy with the ``data`` attribute to delay loading until we access the data. Keeping track of the image and the disk file ============================================ We may need to know whether the image in memory corresponds to the image file on disk. For example, we often need to get filenames for images when passing images to external programs. Imagine a realignment:: import nipy img1 = nibabel.load('meanfunctional.nii') img2 = nibabel.load('anatomical.nii') realigner = nipy.interfaces.fsl.flirt() params = realigner.run(source=img1, target=img2) In ``nipy.interfaces.fsl.flirt.run`` there will at some point be calls like:: source_filename = nipy.as_filename(source_img) target_filename = nipy.as_filename(target_img) We need to make sure that the ``source_filename`` corresponds to the ``source_img``. When we pass the source image, this will be true:: source_img.get_filename() == 'meanfunctional.nii' We need to know whether the ``source_img`` still corresponds exactly to ``meanfunctional.nii``. If so, we return ``meanfunctional.nii`` as the ``source_filename``, otherwise we will have to do something like:: import tempfile fname = tempfile.mkstemp('.nii') img = source_img.to_filename(fname) Another application for this scheme is when working in parallel. A set of nodes may have fast common access to a filesystem on which the images are stored. If a master is farming out images to nodes, a master might want to check if the image was identical to something on file and pass a lightweight shell round the image (with the data not loaded into memory), relying on the node pulling the image from disk when it uses it. One implementation is to have ``dirty`` flag, which, if set, would tell you that the image might not correspond to the disk file. We set this flag when anyone asks for the data, on the basis that the user may then do something to the data and you can't know if they have:: img = nibabel.load('some_image.nii') data = img.get_data() data[:] = 0 img2 = nibabel.load('some_image.nii') assert not np.all(img2.get_data() == img.get_data()) The image consists of the data, the affine and a header. In order to keep track of the header and affine, we could cache them when loading the image:: img = nibabel.load('some_image.nii') hdr = img.get_header() assert img._cache['header'] == img.get_header() hdr.set_data_dtype(np.complex64) assert img._cache['header'] != img.get_header() When asking to return a filename, or similar, check the current header and current affine (the header may be separate from the affine for an SPM image) against their cached copies, if they are the same and the 'dirty' flag is not set, we know that the filename is OK. This may be OK for small bits of memory like the affine and the header, but would quickly become prohibitive for larger image metadata such as large nifti header extensions. We could just always assume that images with large header extensions are *not* the same as for on disk. The user can override the result of these checks directly:: img = nibabel.load('some_image.nii') assert img.is_dirty == False hdr = img.get_header() hdr.set_data_dtype(np.complex64) assert img.is_dirty == True img.is_dirty == False The checks are magic behind the scenes stuff that do some safe optimization (in the sense that we are not resaving the data if that is not necessary), but drops back to the default (resaving the data) if there is any uncertainty, or the cost is too high to be able to check. nipy-nibabel-d3c26be/doc/source/devel/usecases/spm_use.rst000066400000000000000000000174101177264777700237750ustar00rootroot00000000000000.. -*- mode: rst -*- ======================== Image use-cases in SPM ======================== SPM uses a *vol struct* as a structure characterizing an object. This is a Matlab ``struct``. A ``struct`` is like a Python dictionary, where field names (strings) are associated with values. There are various functions operating on vol structs, so the vol struct is rather like an object, where the methods are implemented as functions. Actually, the distinction between methods and functions in Matlab is fairly subtle - their call syntax is the same for example. .. sourcecode:: matlab >> fname = 'some_image.nii'; >> vol = spm_vol(fname) % the vol struct vol = fname: 'some_image.nii' mat: [4x4 double] dim: [91 109 91] dt: [2 0] pinfo: [3x1 double] n: [1 1] descrip: 'NIFTI-1 Image' private: [1x1 nifti] >> vol.mat % the 'affine' ans = -2 0 0 92 0 2 0 -128 0 0 2 -74 0 0 0 1 >> help spm_vol Get header information etc for images. FORMAT V = spm_vol(P) P - a matrix of filenames. V - a vector of structures containing image volume information. The elements of the structures are: V.fname - the filename of the image. V.dim - the x, y and z dimensions of the volume V.dt - A 1x2 array. First element is datatype (see spm_type). The second is 1 or 0 depending on the endian-ness. V.mat - a 4x4 affine transformation matrix mapping from voxel coordinates to real world coordinates. V.pinfo - plane info for each plane of the volume. V.pinfo(1,:) - scale for each plane V.pinfo(2,:) - offset for each plane The true voxel intensities of the jth image are given by: val*V.pinfo(1,j) + V.pinfo(2,j) V.pinfo(3,:) - offset into image (in bytes). If the size of pinfo is 3x1, then the volume is assumed to be contiguous and each plane has the same scalefactor and offset. ____________________________________________________________________________ The fields listed above are essential for the mex routines, but other fields can also be incorporated into the structure. The images are not memory mapped at this step, but are mapped when the mex routines using the volume information are called. Note that spm_vol can also be applied to the filename(s) of 4-dim volumes. In that case, the elements of V will point to a series of 3-dim images. This is a replacement for the spm_map_vol and spm_unmap_vol stuff of MatLab4 SPMs (SPM94-97), which is now obsolete. _______________________________________________________________________ Copyright (C) 2005 Wellcome Department of Imaging Neuroscience >> spm_type(vol.dt(1)) ans = uint8 >> vol.private ans = NIFTI object: 1-by-1 dat: [91x109x91 file_array] mat: [4x4 double] mat_intent: 'MNI152' mat0: [4x4 double] mat0_intent: 'MNI152' descrip: 'NIFTI-1 Image' So, in our (provisional) terms: * vol.mat == img.affine * vol.dim == img.shape * vol.dt(1) (vol.dt[0] in Python) is equivalent to img.io_dtype * vol.fname == img.filename SPM abstracts the implementation of the image to the ``vol.private`` member, that is not in fact required by the image interface. Images in SPM are always 3D. Note this behavior: .. sourcecode:: matlab >> fname = 'functional_01.nii'; >> vol = spm_vol(fname) vol = 191x1 struct array with fields: fname mat dim dt pinfo n descrip private That is, one vol struct per 3D volume in a 4D dataset. SPM image methods / functions ============================= Some simple ones: .. sourcecode:: matlab >> fname = 'some_image.nii'; >> vol = spm_vol(fname); >> img_arr = spm_read_vols(vol); >> size(img_arr) % just loads in scaled data array ans = 91 109 91 >> spm_type(vol.dt(1)) % the disk-level (IO) type is uint8 ans = uint8 >> class(img_arr) % always double regardless of IO type ans = double >> new_fname = 'another_image.nii'; >> new_vol = vol; % matlab always copies >> new_vol.fname = new_fname; >> spm_write_vol(new_vol, img_arr) ans = fname: 'another_image.nii' mat: [4x4 double] dim: [91 109 91] dt: [2 0] pinfo: [3x1 double] n: [1 1] descrip: 'NIFTI-1 Image' private: [1x1 nifti] Creating an image from scratch, and writing plane by plane (slice by slice): .. sourcecode:: matlab >> new_vol = struct(); >> new_vol.fname = 'yet_another_image.nii'; >> new_vol.dim = [91 109 91]; >> new_vol.dt = [spm_type('float32') 0]; % little endian (0) >> new_vol.mat = vol.mat; >> new_vol.pinfo = [1 0 0]'; >> new_vol = spm_create_vol(new_vol); >> for vox_z = 1:new_vol.dim(3) new_vol = spm_write_plane(new_vol, img_arr(:,:,vox_z), vox_z); end I think it's true that writing the plane does not change the scalefactors, so it's only practical to use ``spm_write_plane`` for data for which you already know the dynamic range across the volume. Simple resampling from an image: .. sourcecode:: matlab >> fname = 'some_image.nii'; >> vol = spm_vol(fname); >> % for voxel coordinate 10,15,20 (1-based) >> hold_val = 3; % third order spline resampling >> val = spm_sample_vol(vol, 10, 15, 20, hold_val) val = 0.0510 >> img_arr = spm_read_vols(vol); >> img_arr(10, 15, 20) % same as simple indexing for integer coordinates ans = 0.0510 >> % more than one point >> x = [10, 10.5]; y = [15, 15.5]; z = [20, 20.5]; >> vals = spm_sample_vol(vol, x, y, z, hold_val) vals = 0.0510 0.0531 >> % you can also get the derivatives, by asking for more output args >> [vals, dx, dy, dz] = spm_sample_vol(vol, x, y, z, hold_val) vals = 0.0510 0.0531 dx = 0.0033 0.0012 dy = 0.0033 0.0012 dz = 0.0020 -0.0017 This is to speed up optimization in registration - where the optimizer needs the derivatives. ``spm_sample_vol`` always works in voxel coordinates. If you want some other coordinates, you would transform them yourself. For example, world coordinates according to the affine looks like: .. sourcecode:: matlab >> wc = [-5, -12, 32]; >> vc = inv(vol.mat) * [wc 1]' vc = 48.5000 58.0000 53.0000 1.0000 >> vals = spm_sample_vol(vol, vc(1), vc(2), vc(3), hold_val) vals = 0.6792 Odder sampling, often used, can be difficult to understand: .. sourcecode:: matlab >> slice_mat = eye(4); >> out_size = vol.dim(1:2); >> slice_no = 4; % slice we want to fetch >> slice_mat(3,4) = slice_no; >> arr_slice = spm_slice_vol(vol, slice_mat, out_size, hold_val); >> img_slice_4 = img_arr(:,:,slice_no); >> all(arr_slice(:) == img_slice_4(:)) ans = 1 This is the simplest use - but in general any affine transform can go in ``slice_mat`` above, giving optimized (for speed) sampling of slices from volumes, as long as the transform is affine. Miscellaneous functions operating on vol structs: * spm_conv_vol - convolves volume with seperable functions in x, y, z * spm_render_vol - does a projection of a volume onto a surface * spm_vol_check - takes array of vol structs and checks for sameness of image dimensions and ``mat`` (affines) across the list. And then, many SPM function accept vol structs are arguments. nipy-nibabel-d3c26be/doc/source/dicom/000077500000000000000000000000001177264777700177465ustar00rootroot00000000000000nipy-nibabel-d3c26be/doc/source/dicom/dcm2nii_algorithms.rst000066400000000000000000000066741177264777700242730ustar00rootroot00000000000000.. _dcm2nii-algorithms: ==================== dcm2nii algorithms ==================== dcm2nii_ is an open source DICOM_ to nifti_ conversion program, written by Chris Rorden, in Delphi (object orientated pascal). It's part of Chris' popular mricron_ collection of programs. The source appears to be best found on the `mricron NITRC site`_. It's BSD_ licensed. .. _mricron NITRC site: http://www.nitrc.org/projects/mricron These are working notes looking at Chris' algorithms for working with DICOM. Compiling dcm2nii ================= Follow the download / install instructions at the http://www.lazarus.freepascal.org/ site. I was on a Mac, and folowed the instructions here: http://wiki.lazarus.freepascal.org/Installing_Lazarus_on_MacOS_X . Default build with version 0.9.28.2 gave an error linking against Carbon, so I needed to download a snapshot of fixed Lazarus 0.9.28.3 from http://www.hu.freepascal.org/lazarus . Open ``/dcm2nii/dcm2nii.lpi`` using the Lazarus GUI. Follow instructions for compiler setup in the mricron ``Readme.txt``; in particular I set other compiler options to:: -k-macosx_version_min -k10.5 -XR/Developer/SDKs/MacOSX10.5.sdk/ Further inspiration for building also came from the ``debian/rules`` file in Michael Hanke's mricron debian package: http://neuro.debian.net/debian/pool/main/m/mricron/ Some tag modifications ====================== Note - Chris tells me that ``dicomfastread.pas`` was an attempt to do a fast dicom read that is not yet fully compatible, and that the algorithm used is in fact ``dicomcompat.pas``. Looking in the source file ``/dcm2nii/dicomfastread.pas``. Named fields here are as from :ref:`dicom-fields` * If 'MOSAIC' is the last string in 'ImageType', this is a mosaic * 'DateTime' field is combination of 'StudyDate' and 'StudyTime'; fixes in file ``dicomtypes.pas`` for different scanner date / time formats. * AcquisitionNumber read as normal, but then set to 1, if this a mosaic image, as set above. * If 'EchoNumbers' > 0 and < 16, add 'EchoNumber' * 100 to the 'AcquisitionNumber' - presumably to identify different echos from the same series as being different series. * If 'ScanningSequence' sequence contains 'RM', add 100 to the 'SeriesNumber' - maybe to differentiate research and not-research scans with the same acquisition number. * is_4D flag labeling DICOM file as a 4D file: * There's a Philips private tag (2001, 1018) - labeled 'Number of Slices MR' by pydicom_ call this ``NS`` * If ``NS>0`` and 'NumberofTemporalPositions' > 0, and 'NumberOfFrames' is > 1 Sorting slices into volumes =========================== Looking in the source file ``/dcm2nii/sortdicom.pas``. In function ``ShellSortDCM``: Sort compares two dicom images, call them ``dcm1`` and ``dcm2``. Tests are: #. Are the two images 'repeats' - defined by same 'InstanceNumber' (0020, 0013), and 'AcquisitionNumber' (0020, 0012) and 'SeriesNumber' (0020, 0011) and a combination of 'StudyDate' and 'StudyTime')? Then report an error about files having the same index, flag repeated values. #. Is ``dcm1`` less than ``dcm2``, defined with comparisons in the following order: #. StudyDate/Time #. SeriesNumber #. AcquisitionNumber #. InstanceNumber This should obviously only ever be > or <, not ==, because of the first check. Next remove repeated values as found in the first step above. There's a function `` .. include:: ../links_names.txt nipy-nibabel-d3c26be/doc/source/dicom/derivations/000077500000000000000000000000001177264777700222755ustar00rootroot00000000000000nipy-nibabel-d3c26be/doc/source/dicom/derivations/dicom_mosaic.py000066400000000000000000000014211177264777700252730ustar00rootroot00000000000000''' Just showing the mosaic simplification ''' import sympy from sympy import Matrix, Symbol, symbols, zeros, ones, eye def numbered_matrix(nrows, ncols, symbol_prefix): return Matrix(nrows, ncols, lambda i, j: Symbol( symbol_prefix + '_{%d%d}' % (i+1, j+1))) def numbered_vector(nrows, symbol_prefix): return Matrix(nrows, 1, lambda i, j: Symbol( symbol_prefix + '_{%d}' % (i+1))) RS = numbered_matrix(3, 3, 'rs') mdc, mdr, rdc, rdr = symbols( 'md_{cols}', 'md_{rows}', 'rd_{cols}', 'rd_{rows}') md_adj = Matrix((mdc - 1, mdr - 1, 0)) / -2 rd_adj = Matrix((rdc - 1 , rdr - 1, 0)) / -2 adj = -(RS * md_adj) + RS * rd_adj adj.simplify() Q = RS[:,:2] * Matrix(( (mdc - rdc) / 2, (mdr - rdr) / 2)) Q.simplify() assert adj == Q nipy-nibabel-d3c26be/doc/source/dicom/derivations/spm_dicom_orient.py000066400000000000000000000104321177264777700262010ustar00rootroot00000000000000''' Symbolic versions of the DICOM orientation mathemeatics. Notes on the SPM orientation machinery. There are symbolic versions of the code in ``spm_dicom_convert``, ``write_volume`` subfunction, around line 509 in the version I have (SPM8, late 2009 vintage). ''' import numpy as np import sympy from sympy import Matrix, Symbol, symbols, zeros, ones, eye # The code below is general (independent of SPMs code) def numbered_matrix(nrows, ncols, symbol_prefix): return Matrix(nrows, ncols, lambda i, j: Symbol( symbol_prefix + '_{%d%d}' % (i+1, j+1))) def numbered_vector(nrows, symbol_prefix): return Matrix(nrows, 1, lambda i, j: Symbol( symbol_prefix + '_{%d}' % (i+1))) # premultiplication matrix to go from 0 based to 1 based indexing one_based = eye(4) one_based[:3,3] = (1,1,1) # premult for swapping row and column indices row_col_swap = eye(4) row_col_swap[:,0] = eye(4)[:,1] row_col_swap[:,1] = eye(4)[:,0] # various worming matrices orient_pat = numbered_matrix(3, 2, 'F') orient_cross = numbered_vector(3, 'n') missing_r_col = numbered_vector(3, 'k') pos_pat_0 = numbered_vector(3, 'T^1') pos_pat_N = numbered_vector(3, 'T^N') pixel_spacing = symbols(('\Delta{r}', '\Delta{c}')) NZ = Symbol('N') slice_thickness = Symbol('\Delta{s}') R3 = orient_pat * np.diag(pixel_spacing) R = zeros((4,2)) R[:3,:] = R3 # The following is specific to the SPM algorithm. x1 = ones((4,1)) y1 = ones((4,1)) y1[:3,:] = pos_pat_0 to_inv = zeros((4,4)) to_inv[:,0] = x1 to_inv[:,1] = symbols('abcd') to_inv[0,2] = 1 to_inv[1,3] = 1 inv_lhs = zeros((4,4)) inv_lhs[:,0] = y1 inv_lhs[:,1] = symbols('efgh') inv_lhs[:,2:] = R def spm_full_matrix(x2, y2): rhs = to_inv[:,:] rhs[:,1] = x2 lhs = inv_lhs[:,:] lhs[:,1] = y2 return lhs * rhs.inv() # single slice case orient = zeros((3,3)) orient[:3,:2] = orient_pat orient[:,2] = orient_cross x2_ss = Matrix((0,0,1,0)) y2_ss = zeros((4,1)) y2_ss[:3,:] = orient * Matrix((0,0,slice_thickness)) A_ss = spm_full_matrix(x2_ss, y2_ss) # many slice case x2_ms = Matrix((1,1,NZ,1)) y2_ms = ones((4,1)) y2_ms[:3,:] = pos_pat_N A_ms = spm_full_matrix(x2_ms, y2_ms) # End of SPM algorithm # Rather simpler derivation from DICOM affine formulae - see # dicom_orientation.rst # single slice case single_aff = eye(4) rot = orient rot_scale = rot * np.diag(pixel_spacing[:] + [slice_thickness]) single_aff[:3,:3] = rot_scale single_aff[:3,3] = pos_pat_0 # For multi-slice case, we have the start and the end slice position # patient. This gives us the third column of the affine, because, # ``pat_pos_N = aff * [[0,0,ZN-1,1]].T multi_aff = eye(4) multi_aff[:3,:2] = R3 trans_z_N = Matrix((0,0, NZ-1, 1)) multi_aff[:3, 2] = missing_r_col multi_aff[:3, 3] = pos_pat_0 est_pos_pat_N = multi_aff * trans_z_N eqns = tuple(est_pos_pat_N[:3,0] - pos_pat_N) solved = sympy.solve(eqns, tuple(missing_r_col)) multi_aff_solved = multi_aff[:,:] multi_aff_solved[:3,2] = multi_aff_solved[:3,2].subs(solved) # Check that SPM gave us the same result A_ms_0based = A_ms * one_based A_ms_0based.simplify() A_ss_0based = A_ss * one_based A_ss_0based.simplify() assert single_aff == A_ss_0based assert multi_aff_solved == A_ms_0based # Now, trying to work out Z from slice affines A_i = single_aff nz_trans = eye(4) NZT = Symbol('d') nz_trans[2,3] = NZT A_j = A_i * nz_trans IPP_i = A_i[:3,3] IPP_j = A_j[:3,3] # SPM does it with the inner product of the vectors spm_z = IPP_j.T * orient_cross spm_z.simplify() # We can also do it with a sum and division, but then we'd get undefined # behavior when orient_cross sums to zero. ipp_sum_div = sum(IPP_j) / sum(orient_cross) ipp_sum_div = sympy.simplify(ipp_sum_div) # Dump out the formulae here to latex for the RST docs def my_latex(expr): S = sympy.latex(expr) return S[1:-1] print 'Latex stuff' print ' R = ' + my_latex(to_inv) print ' ' print ' L = ' + my_latex(inv_lhs) print print ' 0B = ' + my_latex(one_based) print print ' ' + my_latex(solved) print print ' A_{multi} = ' + my_latex(multi_aff_solved) print ' ' print ' A_{single} = ' + my_latex(single_aff) print print r' \left(\begin{smallmatrix}T^N\\1\end{smallmatrix}\right) = A ' + my_latex(trans_z_N) print print ' A_j = A_{single} ' + my_latex(nz_trans) print print ' T^j = ' + my_latex(IPP_j) print print ' T^j \cdot \mathbf{c} = ' + my_latex(spm_z) nipy-nibabel-d3c26be/doc/source/dicom/dicom.rst000066400000000000000000000005541177264777700215770ustar00rootroot00000000000000.. _dicom: ================================== DICOM concepts and implementations ================================== Contents: .. toctree:: :maxdepth: 2 dicom_info dicom_orientation dicom_fields dicom_mosaic siemens_csa spm_dicom .. these documents not yet ready for public advertisement .. toctree:: :hidden: dcm2nii_algorithms nipy-nibabel-d3c26be/doc/source/dicom/dicom_fields.rst000066400000000000000000000046171177264777700231310ustar00rootroot00000000000000.. _dicom-fields: ============== DICOM fields ============== In which we pick out some interesting fields in the DICOM header. We're getting the information mainly from the standard `DICOM object definitions`_ We won't talk about the orientation, patient position-type fields here because we've covered those somewhat in :ref:`dicom-orientation`. Fields for ordering DICOM files into images =========================================== You'll see some discussion of this in :ref:`spm-dicom`. Section 7.3.1: general series module * Modality (0008,0060) - Type of equipment that originally acquired the data used to create the images in this Series. See C.7.3.1.1.1 for Defined Terms. * Series Instance UID (0020,000E) - Unique identifier of the Series. * Series Number (0020,0011) - A number that identifies this Series. * Series Time (0008,0031) - Time the Series started. Section C.7.6.1: * Instance Number (0020,0013) - A number that identifies this image. * Acquisition Number (0020,0012) - A number identifying the single continuous gathering of data over a period of time that resulted in this image. * Acquisition Time (0008,0032) - The time the acquisition of data that resulted in this image started Section C.7.6.2.1.2: Slice Location (0020,1041) is defined as the relative position of the image plane expressed in mm. This information is relative to an unspecified implementation specific reference point. Section C.8.3.1 MR Image Module * Slice Thickness (0018,0050) - Nominal reconstructed slice thickness, in mm. Section C.8.3.1 MR Image Module * Spacing Between Slices (0018,0088) - Spacing between slices, in mm. The spacing is measured from the center-tocenter of each slice. * Temporal Position Identifier (0020,0100) - Temporal order of a dynamic or functional set of Images. * Number of Temporal Positions (0020,0105) - Total number of temporal positions prescribed. * Temporal Resolution (0020,0110) - Time delta between Images in a dynamic or functional set of images Multi-frame images ================== An image for which the pixel data is a continuous stream of sequential frames. Section C.7.6.6: Multi-Frame Module * Number of Frames (0028,0008) - Number of frames in a Multi-frame Image. * Frame Increment Pointer (0028,0009) - Contains the Data Element Tag of the attribute that is used as the frame increment in Multi-frame pixel data. .. include:: ../links_names.txt nipy-nibabel-d3c26be/doc/source/dicom/dicom_info.rst000066400000000000000000000043311177264777700226070ustar00rootroot00000000000000=================== DICOM information =================== DICOM_ is a large and sometimes confusing imaging data format. In the other pages in this series we try and document our understanding of various aspects of DICOM relevant to converting to formats such as NIfTI_ . There are a large number of DICOM_ image conversion programs already, partly because it is a complicated format with features that vary from manufacturer to manufacturer. We use the excellent PyDICOM_ as our back-end for reading DICOM. Here is a selected list of other tools and relevant resources: * Grassroots DICOM : GDCM_ . It is C++ code wrapped with swig_ and so callable from Python. ITK_ apparently uses it for DICOM conversion. BSD_ license. * dcm2nii_ - a BSD_ licensed converter by Chris Rorden. As usual, Chris has done an excellent job of documentation, and it is well battle-tested. There's a nice set of example data to test against and a list of other DICOM software. The `MRIcron install`_ page points to the source code. Chris has also put effort into extracting diffusion parameters from the DICOM images. * SPM8_ - SPM has a stable and robust general DICOM conversion tool implemented in the ``spm_dicom_convert.m`` and ``spm_dicom_headers.m`` scripts. The conversions don't try to get the diffusion parameters. The code is particularly useful because it has been well-tested and is written in Matlab_ - and so is relatively easy to read. GPL_ license. We've described some of the algorithms that SPM uses for DICOM conversion in :ref:`spm-dicom`. * DICOM2Nrrd_: a command line converter to convert DICOM images to Nrrd_ format. You can call the command from within the Slicer_ GUI. It does have algorithms for getting diffusion information from the DICOM headers, and has been tested with Philips, GE and Siemens data. It's not clear whether it yet supports the :ref:`dicom-mosaic`. BSD_ style license. * The famous Philips cookbook: http://www.archive.org/details/DicomCookbook * http://dicom.online.fr/fr/dicomlinks.htm =============== Sample images =============== * http://www.barre.nom.fr/medical/samples/ * http://pubimage.hcuge.ch:8080/ * Via links from the dcm2nii_ page. .. include:: ../links_names.txt nipy-nibabel-d3c26be/doc/source/dicom/dicom_mosaic.rst000066400000000000000000000137421177264777700231350ustar00rootroot00000000000000.. _dicom-mosaic: ======================= Siemens mosaic format ======================= Siemens mosaic format is a way of storing a 3D image in a DICOM_ image file. The simplest DICOM_ images only knows how to store 2D files. For example, a 3D image in DICOM is usually stored as a series of 2D slices, each slices as a separate DICOM image. . Mosaic format stores the 3D image slices as a 2D grid - or mosaic. For example here are the pixel data as loaded directly from a DICOM image with something like:: import matplotlib.pylab as plt import dicom dcm_data = dicom.read_file('my_file.dcm') plt.imshow(dcm_data.pixel_array) .. image:: mosaic_grid.png Getting the slices from the mosaic ================================== The apparent image in the DICOM file is a 2D array that consists of blocks, that are the output 2D slices. Let's call the original array the *slab*, and the contained slices *slices*. The slices are of pixel dimension ``n_slice_rows`` x ``n_slice_cols``. The slab is of pixel dimension ``n_slab_rows`` x ``n_slab_cols``. Because the arrangement of blocks in the slab is defined as being square, the number of blocks per slab row and slab column is the same. Let ``n_blocks`` be the number of blocks contained in the slab. There is also ``n_slices`` - the number of slices actually collected, some number <= ``n_blocks``. We have the value ``n_slices`` from the 'NumberOfImagesInMosaic' field of the Siemens private (CSA) header. ``n_row_blocks`` and ``n_col_blocks`` are therefore given by ``ceil(sqrt(n_slices))``, and ``n_blocks`` is ``n_row_blocks ** 2``. Also ``n_slice_rows == n_slab_rows / n_row_blocks``, etc. Using these numbers we can therefore reconstruct the slices from the 2D DICOM pixel array. DICOM orientation for mosaic ============================ See :ref:`dicom-pcs` and :ref:`dicom-orientation`. We want a 4 x 4 affine $A$ that will take us from (transposed) voxel coordinates in the DICOM image to mm in the :ref:`dicom-pcs`. See :ref:`ij-transpose` for what we mean by transposed voxel coordinates. We can think of the affine $A$ as the (3,3) component, $RS$, and a (3,1) translation vector $\mathbf{t}$. $RS$ can in turn be thought of as the dot product of a (3,3) rotation matrix $R$ and a scaling matrix $S$, where ``S = diag(s)`` and $\mathbf{s}$ is a (3,) vector of voxel sizes. $\mathbf{t}$ is a (3,1) translation vector, defining the coordinate in millimeters of the first voxel in the voxel volume (the voxel given by ``voxel_array[0,0,0]``). In the case of the mosaic, we have the first two columns of $R$ from the $F$ - the left/right flipped version of the ``ImageOrientationPatient`` DICOM field described in :ref:`dicom-affines-reloaded`. To make a full rotation matrix, we can generate the last column from the cross product of the first two. However, Siemens defines, in its private :ref:`csa-header`, a ``SliceNormalVector`` which gives the third column, but possibly with a z flip, so that $R$ is orthogonal, but not a rotation matrix (it has a determinant of < 0). The first two values of $\mathbf{s}$ ($s_1, s_2$) are given by the ``PixelSpacing`` field. We get $s_3$ (the slice scaling value) from ``SpacingBetweenSlices``. The :ref:`spm-dicom` code has a comment saying that mosaic DICOM imagqes have an incorrect ``ImagePositionPatient`` field. The ``ImagePositionPatient`` field usually gives the $\mathbf{t}$ vector. The comments imply that Siemens has derived ``ImagePositionPatient`` from the (correct) position of the center of the first slice (once the mosaic has been unpacked), but has then adjusted the vector to point to the top left voxel, where the slice size used for this adjustment is the size of the mosaic, before it has been unpacked. Let's call the correct position in millimeters of the center of the first slice $\mathbf{c} = [c_x, c_y, c_z]$. We have the derived $RS$ matrix from the calculations above. The unpacked (eventual, real) slice dimensions are $(rd_{rows}, rd_{cols})$ and the mosaic dimensions are $(md_{rows}, md_{cols})$. The ``ImagePositionPatient`` vector $\mathbf{i}$ resulted from: .. math:: \mathbf{i} = \mathbf{c} + RS \begin{bmatrix} -(md_{rows}-1) / 2\\ -(md_{cols}-1) / 2\\ 0 \end{bmatrix} To correct the faulty translation, we reverse it, and add the correct translation for the unpacked slice size $(rd_{rows}, rd_{cols})$, giving the true image position $\mathbf{t}$: .. math:: \mathbf{t} = \mathbf{i} - (RS \begin{bmatrix} -(md_{rows}-1) / 2\\ -(md_{cols}-1) / 2\\ 0 \end{bmatrix}) + (RS \begin{bmatrix} -(rd_{rows}-1) / 2\\ -(rd_{cols}-1) / 2\\ 0 \end{bmatrix}) Because of the final zero in the voxel translations, this simplifies to: .. math:: \mathbf{t} = \mathbf{i} + Q \begin{bmatrix} (md_{rows} - rd_{rowss}) / 2 \\ (md_{cols} - rd_{cols}) / 2 \end{bmatrix} where: .. math:: Q = \begin{bmatrix} rs_{11} & rs_{12} \\ rs_{21} & rs_{22} \\ rs_{31} & rs_{32} \end{bmatrix} Data scaling ============ SPM gets the DICOM scaling, offset for the image ('RescaleSlope', 'RescaleIntercept'). It writes these scalings into the nifti_ header. Then it writes the raw image data (unscaled) to disk. Obviously these will have the corrent scalings applied when the nifti image is read again. A comment in the code here says that the data are not scaled by the maximum amount. I assume by this they mean that the DICOM scaling may not be the maximum scaling, whereas the standard SPM image write is, hence the difference, because they are using the DICOM scaling rather then their own. The comment continues by saying that the scaling as applied (the DICOM - not maximum - scaling) can lead to rounding errors but that it will get around some unspecified problems. .. include:: ../links_names.txt nipy-nibabel-d3c26be/doc/source/dicom/dicom_orientation.rst000066400000000000000000000411741177264777700242150ustar00rootroot00000000000000================================ Defining the DICOM orientation ================================ .. _dicom-pcs: DICOM patient coordinate system =============================== First we define the standard DICOM patient-based coordinate system. This is what DICOM means by x, y and z axes in its orientation specification. From section C.7.6.2.1.1 of the `DICOM object definitions`_ (2009): If Anatomical Orientation Type (0010,2210) is absent or has a value of BIPED, the x-axis is increasing to the left hand side of the patient. The y-axis is increasing to the posterior side of the patient. The z-axis is increasing toward the head of the patient. (we'll ignore the quadupeds for now). In a way it's funny to call this the 'patient-based' coordinate system. 'Doctor-based coordinate system' is a better name. Think of a doctor looking at the patient from the foot of the scanner bed. Imagine the doctor's right hand held in front of her like Spiderman about to shoot a web, with her palm towards the patient, defining a right-handed coordinate system. Her thumb points to her right (the patient's left), her index finger points down, and the middle finger points at the patient. .. _dicom-pixel-array: DICOM pixel data ================ C.7.6.3.1.4 - Pixel Data Pixel Data (7FE0,0010) for this image. The order of pixels sent for each image plane is left to right, top to bottom, i.e., the upper left pixel (labeled 1,1) is sent first followed by the remainder of row 1, followed by the first pixel of row 2 (labeled 2,1) then the remainder of row 2 and so on. The resulting pixel array then has size ('Rows', 'Columns'), with row-major storage (rows first, then columns). We'll call this the DICOM *pixel array*. Pixel spacing ============= Section 10.7.1.3: Pixel Spacing The first value is the row spacing in mm, that is the spacing between the centers of adjacent rows, or vertical spacing. The second value is the column spacing in mm, that is the spacing between the centers of adjacent columns, or horizontal spacing. .. _dicom-orientation: DICOM voxel to patient coordinate system mapping ================================================ See: * http://www.dclunie.com/medical-image-faq/html/part2.html * http://fixunix.com/dicom/50449-image-position-patient-image-orientation-patient.html See `wikipedia direction cosine`_ for a definition of direction cosines. From section C.7.6.2.1.1 of the `DICOM object definitions`_ (2009): The Image Position (0020,0032) specifies the x, y, and z coordinates of the upper left hand corner of the image; it is the center of the first voxel transmitted. Image Orientation (0020,0037) specifies the direction cosines of the first row and the first column with respect to the patient. These Attributes shall be provide as a pair. Row value for the x, y, and z axes respectively followed by the Column value for the x, y, and z axes respectively. From Section C.7.6.1.1.1 we see that the 'positive row axis' is left to right, and is the direction of the rows, given by the direction of last pixel in the first row from the first pixel in that row. Similarly the 'positive column axis' is top to bottom and is the direction of the columns, given by the direction of the last pixel in the first column from the first pixel in that column. Let's rephrase: the first three values of 'Image Orientation Patient' are the direction cosine for the 'positive row axis'. That is, they express the direction change in (x, y, z), in the DICOM patient coordinate system (DPCS), as you move along the row. That is, as you move from one column to the next. That is, as the *column* array index changes. Similarly, the second triplet of values of 'Image Orientation Patient' (``img_ornt_pat[3:]`` in Python), are the direction cosine for the 'positive column axis', and express the direction you move, in the DPCS, as you move from row to row, and therefore as the *row* index changes. Further down section C.7.6.2.1.1 (RCS below is the *reference coordinate system* - see `DICOM object definitions`_ section 3.17.1): The Image Plane Attributes, in conjunction with the Pixel Spacing Attribute, describe the position and orientation of the image slices relative to the patient-based coordinate system. In each image frame the Image Position (Patient) (0020,0032) specifies the origin of the image with respect to the patient-based coordinate system. RCS and the Image Orientation (Patient) (0020,0037) attribute values specify the orientation of the image frame rows and columns. The mapping of pixel location (i, j) to the RCS is calculated as follows: .. math:: \begin{bmatrix} P_x\\ P_y\\ P_z\\ 1 \end{bmatrix} = \begin{bmatrix} X_x\Delta{i} & Y_x\Delta{j} & 0 & S_x \\ X_y\Delta{i} & Y_y\Delta{j} & 0 & S_y \\ X_z\Delta{i} & Y_z\Delta{j} & 0 & S_z \\ 0 & 0 & 0 & 1 \end{bmatrix} \begin{bmatrix} i\\ j\\ 0\\ 1 \end{bmatrix} = M \begin{bmatrix} i\\ j\\ 0\\ 1 \end{bmatrix} Where: #. $P_{xyz}$ : The coordinates of the voxel (i,j) in the frame's image plane in units of mm. #. $S_{xyz}$ : The three values of the Image Position (Patient) (0020,0032) attributes. It is the location in mm from the origin of the RCS. #. $X_{xyz}$ : The values from the row (X) direction cosine of the Image Orientation (Patient) (0020,0037) attribute. #. $Y_{xyz}$ : The values from the column (Y) direction cosine of the Image Orientation (Patient) (0020,0037) attribute. #. $i$ : Column index to the image plane. The first column is index zero. #. $\Delta{i}$: Column pixel resolution of the Pixel Spacing (0028,0030) attribute in units of mm. #. $j$ : Row index to the image plane. The first row index is zero. #. $\Delta{j}$ - Row pixel resolution of the Pixel Spacing (0028,0030) attribute in units of mm. .. _ij-transpose: (i, j), columns, rows in DICOM ============================== We stop to ask ourselves, what does DICOM mean by voxel (i, j)? Isn't that obvious? Oh dear, no it isn't. See the :ref:`dicom-orientation` formula above. In particular, you'll see: * $i$ : Column index to the image plane. The first column is index zero. * $j$ : Row index to the image plane. The first row index is zero. That is, if we have the :ref:`dicom-pixel-array` as defined above, and we call that ``pixel_array``, then voxel (i, j) in the notation above is given by ``pixel_array[j, i]``. What does this mean? It means that, if we want to apply the formula above to array indices in ``pixel_array``, we first have to apply a column / row flip to the indices. Say $M_{pixar}$ (sorry) is the affine to go from array indices in ``pixel_array`` to mm in the DPCS. Then, given $M$ above: .. math:: M_{pixar} = M \left(\begin{smallmatrix}0 & 1 & 0 & 0\\1 & 0 & 0 & 0\\0 & 0 & 1 & 0\\0 & 0 & 0 & 1\end{smallmatrix}\right) .. _dicom-affines-reloaded: DICOM affines again =================== The :ref:`ij-transpose` is rather confusing, so we're going to rephrase the affine mapping; we'll use $r$ for the row index (instead of $j$ above), and $c$ for the column index (instead of $i$). Next we define a flipped version of 'ImageOrientationPatient', $F$, that has flipped columns. Thus if the vector of 6 values in 'ImageOrientationPatient' are $(i_1 .. i_6)$, then: .. math:: F = \begin{bmatrix} i_4 & i_1 \\ i_5 & i_2 \\ i_6 & i_3 \end{bmatrix} Now the first column of F contains what the DICOM docs call the 'column (Y) direction cosine', and second column contains the 'row (X) direction cosine'. We prefer to think of these as (respectively) the row index direction cosine and the column index direction cosine. Now we can rephrase the DICOM affine mapping with: .. _dicom-slice-affine: DICOM affine formula ==================== .. math:: \begin{bmatrix} P_x\\ P_y\\ P_z\\ 1 \end{bmatrix} = \begin{bmatrix} F_{11}\Delta{r} & F_{12}\Delta{c} & 0 & S_x \\ F_{21}\Delta{r} & F_{22}\Delta{c} & 0 & S_y \\ F_{31}\Delta{r} & F_{32}\Delta{c} & 0 & S_z \\ 0 & 0 & 0 & 1 \end{bmatrix} \begin{bmatrix} r\\ c\\ 0\\ 1 \end{bmatrix} = A \begin{bmatrix} r\\ c\\ 0\\ 1 \end{bmatrix} Where: * $P_{xyz}$ : The coordinates of the voxel (c, r) in the frame's image plane in units of mm. * $S_{xyz}$ : The three values of the Image Position (Patient) (0020,0032) attributes. It is the location in mm from the origin of the RCS. * $F_{:,1}$ : The values from the column (Y) direction cosine of the Image Orientation (Patient) (0020,0037) attribute - see above. * $F_{:,2}$ : The values from the row (X) direction cosine of the Image Orientation (Patient) (0020,0037) attribute - see above. * $r$ : Row index to the image plane. The first row index is zero. * $\Delta{r}$ - Row pixel resolution of the Pixel Spacing (0028,0030) attribute in units of mm. * $c$ : Column index to the image plane. The first column is index zero. * $\Delta{c}$: Column pixel resolution of the Pixel Spacing (0028,0030) attribute in units of mm. For later convenience we also define values useful for 3D volumes: * $s$ : slice index to the slice plane. The first slice index is zero. * $\Delta{s}$ - spacing in mm between slices. .. _dicom-3d-affines: Getting a 3D affine from a DICOM slice or list of slices ======================================================== Let us say, we have a single DICOM file, or a list of DICOM files that we believe to be a set of slices from the same volume. We'll call the first the *single slice* case, and the second, *multi slice*. In the *multi slice* case, we can assume that the 'ImageOrientationPatient' field is the same for all the slices. We want to get the affine transformation matrix $A$ that maps from voxel coordinates in the DICOM file(s), to mm in the :ref:`dicom-pcs`. By voxel coordinates, we mean coordinates of form $(r, c, s)$ - the row, column and slice indices - as for the :ref:`dicom-slice-affine`. In the single slice case, the voxel coordinates are just the indices into the pixel array, with the third (slice) coordinate always being 0. In the multi-slice case, we have arranged the slices in ascending or descending order, where slice numbers range from 0 to $N-1$ - where $N$ is the number of slices - and the slice coordinate is a number on this scale. We know, from :ref:`dicom-slice-affine`, that the first, second and fourth columns in $A$ are given directly by the (flipped) 'ImageOrientationPatient', 'PixelSpacing' and 'ImagePositionPatient' field of the first (or only) slice. Our job then is to fill the first three rows of the third column of $A$. Let's call this the vector $\mathbf{k}$ with values $k_1, k_2, k_3$. .. _dicom-affine-defs: DICOM affine Definitions ------------------------ See also the definitions in :ref:`dicom-slice-affine`. In addition * $T^1$ is the 3 element vector of the 'ImagePositionPatient' field of the first header in the list of headers for this volume. * $T^N$ is the 'ImagePositionPatient' vector for the last header in the list for this volume, if there is more than one header in the volume. * vector $\mathbf{n} = (n_1, n_2, n_3)$ is the result of taking the cross product of the two columns of $F$ from :ref:`dicom-slice-affine`. Derivations ----------- For the single slice case we just fill $\mathbf{k}$ with $\mathbf{n} \cdot \Delta{s}$ - on the basis that the Z dimension should be right-handed orthogonal to the X and Y directions. For the multi-slice case, we can fill in $\mathbf{k}$ by using the information from $T^N$, because $T^N$ is the translation needed to take the first voxel in the last (slice index = $N-1$) slice to mm space. So: .. math:: \left(\begin{smallmatrix}T^N\\1\end{smallmatrix}\right) = A \left(\begin{smallmatrix}0\\0\\-1 + N\\1\end{smallmatrix}\right) From this it follows that: .. math:: \begin{Bmatrix}k_{{1}} : \frac{T^{1}_{{1}} - T^{N}_{{1}}}{1 - N}, & k_{{2}} : \frac{T^{1}_{{2}} - T^{N}_{{2}}}{1 - N}, & k_{{3}} : \frac{T^{1}_{{3}} - T^{N}_{{3}}}{1 - N}\end{Bmatrix} and therefore: .. _dicom-3d-affine-formulae: 3D affine formulae ------------------ .. math:: A_{multi} = \left(\begin{smallmatrix}F_{{11}} \Delta{r} & F_{{12}} \Delta{c} & \frac{T^{1}_{{1}} - T^{N}_{{1}}}{1 - N} & T^{1}_{{1}}\\F_{{21}} \Delta{r} & F_{{22}} \Delta{c} & \frac{T^{1}_{{2}} - T^{N}_{{2}}}{1 - N} & T^{1}_{{2}}\\F_{{31}} \Delta{r} & F_{{32}} \Delta{c} & \frac{T^{1}_{{3}} - T^{N}_{{3}}}{1 - N} & T^{1}_{{3}}\\0 & 0 & 0 & 1\end{smallmatrix}\right) A_{single} = \left(\begin{smallmatrix}F_{{11}} \Delta{r} & F_{{12}} \Delta{c} & \Delta{s} n_{{1}} & T^{1}_{{1}}\\F_{{21}} \Delta{r} & F_{{22}} \Delta{c} & \Delta{s} n_{{2}} & T^{1}_{{2}}\\F_{{31}} \Delta{r} & F_{{32}} \Delta{c} & \Delta{s} n_{{3}} & T^{1}_{{3}}\\0 & 0 & 0 & 1\end{smallmatrix}\right) See :download:`derivations/spm_dicom_orient.py` for the derivations and some explanations. .. _dicom-z-from-slice: Working out the Z coordinates for a set of slices ================================================= We may have the problem (see e.g. :ref:`spm-volume-sorting`) of trying to sort a set of slices into anatomical order. For this we want to use the orientation information to tell us where the slices are in space, and therefore, what order they should have. To do this sorting, we need something that is proportional, plus a constant, to the voxel coordinate for the slice (the value for the slice index). Our DICOM might have the 'SliceLocation' field (0020,1041). 'SliceLocation' seems to be proportianal to slice location, at least for some GE and Philips DICOMs I was looking at. But, there is a more reliable way (that doesn't depend on this field), and uses only the very standard 'ImageOrientationPatient' and 'ImagePositionPatient' fields. Consider the case where we have a set of slices, of unknown order, from the same volume. Now let us say we have one of these slices - slice $i$. We have the affine for this slice from the calculations above, for a single slice ($A_{single}$). Now let's say we have another slice $j$ from the same volume. It will have the same affine, except that the 'ImagePositionPatient' field will change to reflect the different position of this slice in space. Let us say that there a translation of $d$ slices between $i$ and $j$. If $A_i$ ($A$ for slice $i$) is $A_{single}$ then $A_j$ for $j$ is given by: .. math:: A_j = A_{single} \left(\begin{smallmatrix}1 & 0 & 0 & 0\\0 & 1 & 0 & 0\\0 & 0 & 1 & d\\0 & 0 & 0 & 1\end{smallmatrix}\right) and 'ImagePositionPatient' for $j$ is: .. math:: T^j = \left(\begin{smallmatrix}T^{1}_{{1}} + \Delta{s} d n_{{1}}\\T^{1}_{{2}} + \Delta{s} d n_{{2}}\\T^{1}_{{3}} + \Delta{s} d n_{{3}}\end{smallmatrix}\right) Remember that the third column of $A$ gives the vector resulting from a unit change in the slice voxel coordinate. So, the 'ImagePositionPatient' of slice - say slice $j$ - can be thought of the addition of two vectors $T^j = \mathbf{a} + \mathbf{b}$, where $\mathbf{a}$ is the position of the first voxel in some slice (here slice 1, therefore $\mathbf{a} = T^1$) and $\mathbf{b}$ is $d$ times the third colum of $A$. Obviously $d$ can be negative or positive. This leads to various ways of recovering something that is proportional to $d$ plus a constant. The algorithm suggested in this `ITK post on ordering slices`_ - and the one used by SPM - is to take the inner product of $T^j$ with the unit vector component of third column of $A_j$ - in the descriptions here, this is the vector $\mathbf{n}$: .. _ITK post on ordering slices: http://www.itk.org/pipermail/insight-users/2003-September/004762.html .. math:: T^j \cdot \mathbf{c} = \left(\begin{smallmatrix}T^{1}_{{1}} n_{{1}} + T^{1}_{{2}} n_{{2}} + T^{1}_{{3}} n_{{3}} + \Delta{s} d n_{{1}}^{2} + \Delta{s} d n_{{2}}^{2} + \Delta{s} d n_{{3}}^{2}\end{smallmatrix}\right) This is the distance of 'ImagePositionPatient' along the slice direction cosine. The unknown $T^1$ terms pool into a constant, and the operation has the neat feature that, because the $n_{123}^2$ terms, by definition, sum to 1, the whole can be expressed as $\lambda + \Delta{s} d$ - i.e. it is equal to the slice voxel size ($\Delta{s}$) multiplied by $d$, plus a constant. Again, see :download:`derivations/spm_dicom_orient.py` for the derivations. .. include:: ../links_names.txt nipy-nibabel-d3c26be/doc/source/dicom/mosaic_grid.png000066400000000000000000001260341177264777700227420ustar00rootroot00000000000000PNG  IHDRD=VDsRGB pHYs : :dJtIME u IDATxgu%_Uu@7R HeZdKۊG,ό8-ό,9͓58`%J(3$Iȡй{qdZTW}u'4E|a_X~^Xx-4?a.τedE0ȫ `@ }ϒBnB _Q 4fiLi, ?Yx h LM%?iX5)N|hͲKJ#O ***XFBT#Ty6nP SL];lTR>GIQJJO1??#%i*GT?yFNU,rF̀ϧ0Y0S477n~Nuu~(HB gwdyy( h HAZ<3,9u32PєP39aXP&KcnnLQ< Fx1IUbIn0@3#f4_ 1 0{G&Ղ HH-lA{sd_E$ hlHfMj:! hѢ)Mׄ$O;a!ԍbUH)Ps/w@xI@n*陳#F6R̔*}ͣ}1@P}3)&gOL 3!HBpsTM !_!`1:}|nc̈9_]L74&0By$č%Q5}OL cI0100F31ђSUf&*P f$b~:<aMʗôxi2(B h& 0ҭ}Pm&Ebyna4(0!(E,Š*n) $L!fHu%Ȕ|N !bt_ i $}$}IɢءF"ٰIJ&XNE*ĠBr?8 A@&V`qT(bX !D/s$|@9, B5. j))EN#SҥAHiQ4VgNRXLhdD}4XZz%'EJPFPM1W'6ۭD8j⃹{A5^Hu|`f$XɌ!hF3&0ءР)mfMa&DBĪ$bRcd^+ 4sEЄ(m9h{+ZD?GmV.*6 !iLRR[/ Z@ FzE! ,%- XrEr/2( Xd[mHF0&J+LU4A49{NB)1G:'_ ]sfQzDjbٙ RJrhcz6p>uvA'}AcHx=E5 ^T]5 F%"O ^RkJLRRLLe++)"T)f\` ̟*: ,Y\v[)QG_ӭ[A?L@KT(+@h$B L'$5aT/Ĕ/EZwQf(bN,-g.=Zz-wΔqi5||Z-5XVpxQ}ek>o3I$7M1ydپEű N7f0bPGֺ DWkV_2w䘳|ݑ@W׾Ή΢33 D]7;fM6W J-4:ƍD6X[+NUb$`uݩc͉މk=;51]-uZnrNvѹS bj*BC863FοKf0+1=c[FЙEoH H"W-:Tߩ-S+S`4z xcǧNz/6c`aaw]c䂾C6_}H`Z{\˷Mhw%N;W~v75Ot,[_No0Z51 n}ewh/(T*Ë˷}s/WIQ~l#ޓguSb¼ ryu{V^W`Ҩy}u߼bWrtL`oϦo|}wO018R^zm[/>yqeaQh }xٗM{Kc';}'%yhn,=}YW}`p<6cF1 h>cXⓗ?^mb !JՍeRo`N)_,q=j}x赗d_?oedzO}:(fs`w}⭟=y/@5)XcVڷkVH6@%ۑ(O<[G7/єT0&T'> [lwh`o_zhrw>jqYюc׿Ģ[7g^FsO"^Am~ËɩbdxiG,D[334-sGhYP?z}gW͌.+\S̉w|ֲnE( 6$6,ԛF¦>&QQX3Q={H4PS_`i3TA [{m9 DQOrֳ=z)|bϼ AH' F"hʫx ;'B"@S;gzqw`g7`ۭC=>9`P%C 0JCQzr&3=xEQ}DLL#r1p+r.hVӀ ,0hR&hG'H h}*6P]g&f=,q'q0T-qnniF լ•='H,3b 46IH(11u^pBԒ BdڲdFfTYK <Zf-L@ٴ q79nU{\Z/yr'S{G.7~r#mAyeŝs&l:&FȢw ^Ht^sE01rQr!ۯhRV9weV}z&:j-1\њX"e@}蜙j&VS0 :#u_2c"۞FbvKY+oE~0*i¨y[S( , $f^4⚊IO3ry(iTg|:^B uQ7!5GvCCH8'ĹsJu~LY.'![=@D7Hocs\ Jɛ8Fsj)EJB, +4@,jJy Ġ<܉7gio>:Qs )hb1Ɉ9H=r-B11ZUoLJ̔9 ++5fb@c5Dg4u(0`(̜(0dB5rœacO-Vt32 &k!D=2I}^MjL$SF m۲aJ2"B@R>DˬD(SdyeHs,~"SL,g KYik͔vU' 9D:sĭ]6RC?`ɐ8NG꣧y9IT `@אWuɑA!2ImzU\ =u2'6C#Ld"%}E 5 Td:6F@JGk@Kxϓ0IBf5.0xS*r"k|$G;,ZpeNט\p|Q&4fт@Xg[pi|DQR!s?FTl"Ӝ^)IX:gk'Q,\Q弰U4̫ `_X+bQMW0 A5+L+7R,/.D$$i^%̈́0`)>J5#,d!悉HMPduiYV=P'L=fSAe_$H hfrٱSWKH k4M6ÍW.vQHgxc #Q;<oaj!+Ŕт/~D Xԗku%ݝ#\T 1__uzo xkJN>1ځ,Y_>yQJJZ!|+(F99 (^yffkLJ&,=_ǖ8$3}als;>FA.{ۍ^Cj"T ۯ!51ڋ+n= /.֌&P 3]2ÂFp2ۿ9[ 6|XԋYiOY{REZbRֶ;Cgh?q|b(5FNmٱip@oܩ^vSY0AΎڿX VM O3靧f^vovDa5R>={/>0ӱ~Tנ扪g_ی2;0F0$M/H;o2U6)U E'ƟԴ1fHbr\)˛M/ɢXii&>=Jb[WrO'-8;>9| IDATԁxt}FF_ ww=,q}?(]ޙj4~:O0lU(r:HJڱgh5:ptFs,,-Bږl~HıEWw Nx/jG8gI,ZMAur˝crߚՍkxЖ`gmR"դ֮)Q4g!!,rv]:4).VW!ygwOdЋT0Î'?,݆ |x͸UNePLc' N1uUɬ4΢Ȭ@niRP55&DMo$ЂPD6Y1z'xmPgH_IlVyak RcAO/)d {h]tZ&ѣK>z#kz3/sG}_t.Ap KLL:wMѻ7| K1Vqcgf!$T6KtVQhfɗ`PC5&֦e8;30&"[ސ mٮX$EehhSpڵZ8|-^.,ZC<ၺ\<q CEkhJ?}hV3Ϝ=Qⶥd]]k{gVės[4%8F4 ])j@eh}{-hwn=u\:[嗀߯qf+Nm4Ր붴=1PײdRfL$ Oԇh-s/C*7'1+W`F%DUjrY(ܷVkx ^,N_;6}!ъH9eu#HT /[uzC=lKk;Dh0|,Uvu=p@$& IDtS36v}ya05;{NMo8s`{}3JZD{ǖEqxkg:pr767 `6;o_/!{jF.Pᡭޱ2j /h4uS_׻>6=`PfL2yOw;+~>~;_o]@DvmGmeqٶ3OL4/r~!%7zϜw@Y];%f9Oޱk-p_C~h;>R!h٢oX۲uEB ;񱱍Fm+ϬxЪ7f4}FԶ76~Hߔy|ow- 7۱D\<>xh̻e\o9,N?13[w'7!`Lӎbqגu,pׅ5'tRw4k0nwrƶ:~rk~vxc0eHDg=;ffH^ܘ:3ս[;Cw}]ӭ14.,7G;rݫ?}Ez=5=xcxT}l;%ByWٷ}Ԣ#5u=O'K?8Ov=vl^35ſ2ŘdIh~uqyj㾫]ĥUyy?Hv,J3tE[gmܮâ''YWVh_ln?zYo[G<~jhdNQEb|g[O_EC맖={ (4 wdɢ0qbW,zc֛>Y#}rf+'ַ750Y.9l8g$g/UCOݧ'˾%N?TYշsd[ϷEjA`_CL-~f-r$jp3@?B9;Zm::ڶ^|'lÛj{=SV`Rf~#jo󲩳av;*Ly}]cy`I:MGZvw1d[Zx=}=۾mtw g{ΛSsH[Á7cם6cVRk!|Woe=`4h}O99o -[?r\={kLs P2χ77|s uëyhi(y/EָXg^tx|$ 9ɔ}=|{ٹ82;-f3M@=}=v~i5& 5(P};?GA WM8eN%"#赽HO홖fr?yr !UwEsy?=0z|jJC1TMs"cǥez# kVѦ6+rz=?RHgy)D^hELzh]#>Y'B Uvu^s6ur,&&,\1OGye_J~kV/zug_񱓗m[q{F4YuKh,oŏ2K UϏ3>c>q"wԒ,G"#&S墢Db`KTR7)Qh&j/M"SI<}+h}ʗt.z=8DVoÿM_ډKo-Ͱ*3(ځ&TMoi B1I ]ObbS{>;D&ZS*V/~+FSH%K, at$Yj=cS)N>h$h3Xs# O*#O00^0fSU. Yxtɒ ei,lhs}֗IhDub М>$Ll;zT'EC)YH6UUe|hV˴PCҰ|$BDBZy0Z%f@YyD/ޤvEk5PufiDGkN *1#nق5z&s0żWB- 0cP Kc=-LW)?d!hPk>2B%9hNp*9gPj1%7hS":gXh2G>vGX"Ti6&K#LPh)S`?u;C@~b/zSaM:c2x^b%_P};ڝ**3o1@05Kry.+C$'Z = id9b"yLPR1)b>qnXKKRUSBA-!(hqn)Pjj!Bs 9yZeVj`BoH$+ZGC2PiTj"D$DF 4 Z+Hj9 il 45岢 )zSZJh5B2PM!.Յk٪-, Y5*őw+j?ѐsOe%BԄd/P‹!VznjR%c5A}|I6f^+h{q7e *&*^z#YzkљZҙ6/Ok~cپSˎbO}eӭb&'M&~ ѸH.]EKp g@"&s*f]. T4:GD4(?Y0k=wH4UŐZPOZ™3ϖE|%BUiF#3zk7# Ӷ8Qvf7hM>1=Xž8wg/ٵ7Bۯ:'>QHZZP11O#~n1Leȷ@!z"TM6k_Ka ѱS#z/[_t%^)ڊLj7W}Y/V_x#BBR$\4==WaFXHEzf W޹oIFALnTMB.1PN|k3yKcb>oo}O۟9oLziBo_<(6nÔ,pV/fWt>e-SnnFmݭý[ׯZ7^ Wzyp5lOZҳ5wvJǪ֨yЏ{ow8+BXYF33QӀ&~7a֜|}󇞶&:3wŌXk4woi~wW|+f{yWMϔm=k x}?q~zH5. {_{z@u oxC{.\yWmk45JJ=h .δ _<HQ˹&yM`涝7~_BOt =wA|(xW}`(^5ADzl@#GijIa7W)LQAu>2w㍍xٶg䩋pȐpOX|]^[m!CSH;W=}bIGX Ek \>sӖ_22sۡIڏ<^s?~ޣhsEbɓoOvwZ<ۗ5n\o'Z_(bB/|`s3߾4F_P SD g!`Y7>#O9,P >ty޵b/F/(GÆr{׮ѭ[FǮZ~5Ɖ;\3/m] s!W^?yԖ߼ŵrd*UҕSGZqM?5׹~=6tC7=y]LeK͓==;3& m>V)v,`3֪>]ʝ}voT&b(?7|6C~}˟>nHPߨ4Qڽ>3;:p܃'jGw7=i '-ڱ٧6~ӟ=Gdrܘ ~"-.ik~wкo&%ɹsg?cŁoDH `CǏŮx@뎍ְ`X/;~WFi?e^1i_sգŪ>蝙.+u%<;N8qV|6 96z;?d y̍cUQAP, LOuűV,ghZף=#bB6?տexW}",9U ȥ^۶Hb ]gONDe pm֨({Ȏ۹s&!90 ",*K$,ٲvWl`~EfIY(4&b094ѹV{X}Vթsq'#cmTr$y~xݕ+7g/^لR탟n6Kˋ_8qly+e!+g5G|>e-C>k&aP{8K=(UաuU݇#wgvיF3S>cpw-ث~-xx&Wܜ*1Z4`|ܵW3 PyAfB: 9]1Yu.MK7XKٜPNsp9re:$$6l h 3!wj5}7(O~g,t 0/iVcd3MUF&!2ğo4x/F{;H ckuƚ.Hj4EG1TL$]|CB')a>}5ziyf9qXGSho|ư'goDỦ4ίyh.Qضo{ is"G2?[OGC]eS]>Q/*0H O9&J>ƅo4MGz !21鈮ZOVJ; BY1r^yai>;Lb~yK*ԥd[g`n6 Tqdo 1>D@ ;UKޮdP9WS\ F$`9,#Й]#P@D3ScW IgOqgaLz@ זOJūcᣂ<X}i$ۧs~g7϶ϸgֳ7:&ZS>9W/_>Bۣ]pyV81(3jsL;H.뿓lgw^.TWtw'ΔqW~iH{ԥIypSp6{Į{k C , U껎6h-sQodAZo(\ RRHp8H6| Ft"I&3M/,Zm,Q@ab\?V*ShH1,H=Y=%>A'2"Iʌ;#S"'IZr. du?(ђ5C谒l䐼b1VI3B,Hg"CsM<Y;=pbA"AY&I]h~8 /@A1, IJ]ep1Q$^~Mw^|Wh{VnL@ EPcdEXZS3і^C+YW̘ǖ#Vs`B5\TD֕v8hB5/"1iq72aޥvﲌ$l6򬼬B}1=%xZiG~ڜӻd܅` d2R1`d:r\ĉXʠCJ":?J$ 59Mhh &#"ϝ&_ݖDYaP{j\az'K(yIK"qx+1OUh^dUx M3 y;um|,A5kgI#,'ˏM(PԃP;,ͷ}h%EkvD`&kf;khβKɺEٖ8sO j#Sk:;2q&p17qex$&/[W&R;C4e Ɩˆx м\h@pĹ< ARk72L uۺOQ@rh3* )#T!e)ImoEu@kYڿzQ箹TORjEp,m(KGqL*WbɾBGjBe.fu&'讐~B2`Laal,Bl)G%h <V^1mKa8*ky/YI P#Z,@cT A0 \yo $4X>%X X(K1᫃Gs ʒ#+r@N*R2hGm= wE(?TedA,Z ̋=Ӿ82-9]aپYT4(܍2)3-#,ZL^2-mN=/,+.ˣGZ*Q N4 mCVRng[ٞ9Yš`ɦjy&O\5d\N4 ڊEpuDQQҬzQ۸>6z@bERhP=h]=m|V d8։m<bL]$@JA5A\SfmeA0}5g-GT$%SsDcXf_6ٔnWLһZt,ylt+cMI?ư);Y Wi \i6߹1YӧŴzǴҀsCH͢(x!tBݔϯ  r:MbќX'Ur9%ҽ߅uWjO>g6ӊ::2W LJjd[ QA `D?pW.g2ۜukb1dl{6zuSNO[ Y'W'w;^*-K۵U, KigХ17FJ'=u$0Nds87ZHY A*xp]}rnt;mtJ6*tǵM$1,1DVGŔw^iuwRaЦϾeUkGmI Q^\p{mYJKM>egOxW*s>^?{T ݙht)-aHi.6h|oo8H4g7$C\Iz7o %n-)}xWEf?% Z7" rXAf'nGi^pNDMfo7o?8+gF=2t]'bùE#gyTI*SߖDYc}?x#F'E;_d7ڝ01k[L#-舔j#!_O_JIƇs7xZ.¨׫YI$13=.\yő9=@\ѵW2ii30='.Ud45SޗjI7W g҇Lq­2dO*LKx?Gwdo+^ium^*;P%UwKhZ/t}f3ŀ$ZH 9BGSQ^HONm/uz1G^"62DDQ&}Rea2osfYxFcԽwQ(sK[6Rpwum3NJN6O͏/=e='ٙdUbNms~0y×7oMfcqe2]B 6jP~s)'D^)Ttx::Q-?; 89}p> -LWc+m:N$% Lm\=c8BwRL:1*r"(*1w"VgNB [7Bgwp(\h|V@R^INE&! 6TU[J"[Eghѹ0*ˑiH=#ܶɲ `i`IdĐ>w[2۬Jc`B^ΎTx$5?Zdn e: g{?ةXwCǗ)=ҵhY,ڋT;^p7n ":#4=5t^Ԩ0zIDK]vbaU93ʐCon`TL%:q9wF\{M'>2Y)&dʓ LVV~LJ. TcsKkT5gL4Df w:$3*+3]{BuِRD~6&&jr &%`b bv%Lut}@ >gPݽ|mpטP嗫RZ9X츾>O'*g#ܴ* ˡ5) xՁё(,4w9WE$sDzD V'Njα;eD6:kr] R bs'* UUGxld4.9pKL\OP ߉H73l/W47~lNF)Ͼ5NN?/ 5!sVeBMɖ\Ns$]w_%ٱ&2 "q|Ѽ5+M `.5 I*nd;Py84=ca|"= L;h}x㕾ڠXC+C!rMr<{bA,7,<ªzԩv^c_٦ sCnKdf"">gOq v9ɚ#t|ǤȴJRƕ{mw WK3٠?Ul:G?S./7>?tG:̚'3nBp,3䰑djOatx'V3_8 HH!xcJH|tV-M(LH1Q4'i?}V 4wl5bkptXovg#CL @DӛeG^,f:crcd8" _kfEGCS=  ]yp!1Vzg>$)HV,jY)4.O sH5y5e+o7:A"9?wbDY}}N@un"D1Zne7LܢĕLgԑ{qyO]KnD=>ˌ IDATq-iLCY}9/};Q?ًC⬫ѻ9:]mF십Iv1)H DIbvUuV,!SU ʲ` S?ˠ20r08s2bƃc\Uh8YT@U"AR{*H6=ws5&0N_CGr'υVm N惉{;bWۦCoYR5!#S|I]jv P1շfSAl >~cSbtțwFo7ݵaܱdYk NtV\ E: '/Kro6 ^ulZNnu=m ]{r&7>:1YuWŌsg(~"iGZcSMm=]8S1̀VSY҉/޲ _g;da[F>|NbJFE n^-\H&lltmkXZ ԋ__N./MM^Xtnde;*!UI03U=>U{k|D[ 늦TYF2|+[_gS@!4 }_Pt_ml#&Ǻ!s_ h3"rI;ӗ<8>IfE"wn>_I;Z!>sG0QYlI!)Qy0D1X۠Hȅ4)5` @yfM>[9m+۔)V7rX5;z3o\HX`ȥ$l( I)m*ZtATp@BgJ8ȄCez AC(+#S?IyDBEqIߤ }S|7zlhϼR /mLE`J$̋,: i> h JR ௤! %<.)D$E,4TRﰨ|AL53JdsAP)A @ |~b&zwFA F!!SRb}-:徊`'Ѷ,@`:9Ei& k'2BH%)q>R+"%$2CSפˤO f>C3OoQBըEByQaoSt kb2ܕ~.З -"lrC>J.5Ӂ;lG."i)eeJ2a'yW$W̘%[2R$mXB#v6e?T :@2NKJafie)2b)*H&AYwItA=rːA-J􇈨G_:~/`!8PH3K{;dg:j|eT&(iϖŎc%#M|?@%%!YNBmzTuz@Ͷ% W9B"7LTD1V>S .yu@ BZ,DRZJdz* Q9JO0ߣu7Zj(+0Aŋض _B*oe̠-P"qZ@db@ƭ5JZjBL@T DjGLS %2-' Ȏx,!IIu#YA]hBfIz bt u8J1Թ5$+}i6$AHNC@"S2ћDDPCk($2TS [YdGTU $e a6(ZۉF#6t<.lTh3Dimy`7FS_Sα:DA@J$2E؆hL$B2HldF D$+(EZm{yYa&HXYQ5Ö*DbW"㸌5Mdsz|^6o h h4i5L+ґePAj} P")؊8L;x7OqKmc`J<U 9^zKMȔR*)lUYئP-Ko@}'aX*Px@eHLJ%~BU] xR HmFH:!3[K^o*F<\S%_IFp35QZ/N nGG]jJ ht$  \c;znnYDzu]zH5} l:Jk]"CC;)*LfJ.[Zŵ|:jx%+CWof#wrKȒ}NY֗sp-@i{'|dR$JIEx0A'-o#@;w#_?JIS`72yQ*U]SҸR3./8'^v+dE[fHoC[hciۿsCK1LXW=.Ժf{/jME;:BJnjp&3Y2yTtMi]XozdB쀅p"E}T;XW P9w͗tDX:]4yamFVMeRuY2$݈"!C+V,C~.|N\?2dN8y!,|:CTlTk}$c*E\EwΝůg"~N)$_ҼY=TϘ*@aeor']1ZR0)\e*X0;],5Yei=1 }I@4>t\y8ˡ@(Fh? hUZZw]ٷW,pā!_HP65YmxGgw8@E*i,_*s;75⺪:W2xtcޑbPJztk݅:sbu.b8U#HCA#<pwK͋=Hd|u]ζ`6Ād2v A!6 vCHAr3g] `L] 'ՔR0\L9F\|Xn`Lߠ,BDꆶ5oàB%A$GFI']/ݞ3 䦖#_q*IeW%F沫_RERHmCf,w]^j*UB7Ww1jȳ4WƵՒÏHlPU{lKUvP<-3t9wPaS۩Ҡ&(4 $ w])z CDB& {tCD04Yz`'!cW3FV4D䠿|݆cs/ZV2NO jRurR\@T85}c>}08Pq'p7#8oׇ еlM8P}ъ C/5t'|H :H1kќn:v-@~f ' ږX;R=Ng\~sp-.ÌeیpcT!mo^3tՑR!f }"?w|hN&fޅ@$iߵ~= \[['-Mi w:q,A]5 c.22*Y =׺PauhY^ Ҋ"i/wpTM8gj fLB% &'<"S5D`Yo~bZD/%![b$[\OFRw?d oNT.fsvVjd9?f0Y ơh7fu թ5Lk=BN x9wݵ-huuKyJ!B&47nwmC|гq+z:P5?({GV00K+wTvq6-'ЗDzwzõrU1TѪOԞ,…hj(=YDե%VRJu@՚AG4:*{S2pIhda~:m2\IJ>{r|.Xi<11HD,oⱨ/p_*ٳ:ѡRNS{7)nccTqU'۩?=x{爿j-# 8-߄5: _>]\ 4 $nNJLtZGMY `hq1~sǝ=Cq HC]hIҼǿQj(?ۨLKVoe:y2{\&!zczV~ea4LwL>.^~>7j\-lip"HMx/qqC&;Pi୮m͓[c973JC Rt݇a] W2;$VwO3rY}e&0X J b  ~3JzOG/ϟ Ŷ]xgW_5w۫'\?EGʛlt 1D& _O@,<=Y}Qg3uN;t1zt NaѻO0݋MHW C@".c*9^>H1`7pf𿞨Y_ 6U-W 7˩uKf>"|c2`H5,~r^80?%cђ N %N9}<;|]ʆtw? !vKԗ84-< q$($lWrw,;8YكUjŃOE|&m!cщ+Kkr=R-G?#o_ Φz'5ے]Eooea8#s;~}N/ 􋱂'|͗i<[7<\/~)Q]5`U?dFПbv@pfj)Mks'&YȚ湳EJ^&ǿWyog2$-_#.i[2{:10V<.=+UMA΂-4 lHSd(o~V 㯩++59= fPɬ`R$NcŐR,PhS7|08odaVXkjfϮiċ~> ]S8 $+hr#7>G\"0ju $&oT:'[Z /(1ph8*~2YNM8P[}4Szӣ @[{k t*; IDATfԸ@., d1ݓޚٮU5{*-8C2ԺU'&Rz&$>x=p[(ba (RI{gw+# J 5Ggop  :;&Bw&W~C%JC(Zᚙ<[Jt6V2*"XJl0Ly/7/B 4cHo˃:~^J$[mH1mC`R Ц4C&ɤNC$fk;tJ&m,4%M K!@m^el#KdmW;kZLg:>x<:߽|yg-薧0<4VUbXu庵W~w=o (g6lңG)3(*w|ڪy1 E@F+w+]{oz'O:[R4)$0rƵR{O<3>K ED9(rZ \( 9KM?ʼnY ]_L`^8#k Q{`u e~Q}B5d[Bjorz3Snn3ePjgNV$N>VIL4aGB:0bBbU_c.$L9/v,&`+F +\sM"]RHH!B) L5@p,Js;EZȅ3٨`PIxRVjb :Vw"q5%ɊDDLGc_,c.z5YQCq3 'Z]߀&D ]'0%B1Kl/-g!7ݏe]-)z$#/M%O&Ekފ8[J <ŮW< Wjfp)f%0jj2Ι?&b&qKylr*ԎV0.Qaw#.ZEnꋥZs6{m= *8Xՙ2-WhSh5 皖zB@B:@J*BJO_[İAT. ߺ{3?ڬŕ aOͽK9#?E EYCȫAO^7?$lI J {faY֠mpBMHmN2Qϸjf꾛eu}۵k׺TRRVv+_~df³s[d`mբ{l?コ2Hvmkpb \4z':rm@ř aª #0!TS Gj+$Mԗw۾oJ}f&: 9݅\Nˆ ]{vY ]8&0Er\{xag6Z$LʂUf^7?sL>AxK{:~`;.}U‹j.Q' Y7.'6w޳࣫Y:"j֝5_YߝsB-~M3u[_e}M=e"{|;\aJTB롨@]νz5+ZsզW*@urnIӓܒA{<|qgk{՞ʭ E 4PnlK.\gww4xBxS]_#fUQBM</\۟;[N/ƌ-"\luϼ;w3Lus# Tu:oNEVَg;ݻO5Š+x«MBQ wK9bLՔ2J"UӰTrlbvߎ>w/ؾsRzh{`_||l?ciƬ6 \GyozץvKJfuS]xv~|w Nn6' ؚVuW !CO_#OeqY|7=?uB,h;N_* 9; C^W-|-2M1 Y{@ثoYH>Y@|8'gpǾulkGTDJȹo]=8sE7i=iE;"zm[oX(3$CAno}[9\^%k{ഹw}Ϝbu ~ V#w|(jPjEg}+ 2K|g/\/tCED#z-\'> n|&ԯh*:P/o߾;LtYhBT9ξ盏Tt^dc Gl L>l[ߵs%\'V 1 MkڢyKuTok8cEOnZWPK {-wWn_wޯWj3OvE׋^uYOٗo qhpN ӏ{;?}DIJ0 -J>oCWϏ* FR(A]&_jpܡ0FϜ۷0MO g_1ǟ=6Gw~I=QMjG?eW=DM-_.~|'h ;lO7޽wvƳI8ڀ/AX ˖=FiЏ^RlxRvA@-_3E P`3sXsIPC. *ՠe3Ǟ廞#P_1a)N{P~·}Ut麩wp@׫ 6n;x=jGO=TPLz+Ϸ̾ dOXs5iD5pAbnv?w6^{S W7jEMQ =dT1TRMfG^9 mpbndEXi5"L :UhBj)i` :,KC A\MŔr [{hAILj,+" 9q_VU$/DLQ@J? ZJb^;܇Vt볥)6L^?[;iAohmtp(AZ$m[)}}5JrR*>EF0% +Tj 뢥$ AJT p#EXKQs!C<1^$hQP(U Ct}W> iEE')zݣS0F%]NPi gI >U41 Y {ձhźރtˈ*wNee,:VʉpBLSW*UպZCoAњA-EB  !+gīJj;_$~O.j_a1E*{Ј8}= j&b̤A@LYChp0Di3eX> ;K%̶:}MBOܪHU#?]i?}{awӊg֑AHSϠB~,iT;yb X?m-T-`0ݷhp,3K$ݲs "jDsGP8Ȇ~2fhCPo`ep uI#MK&YYH:JhA9DR3OG`-[eZ@텻+?e ,LܱьVu5da,MP( 7l2Z҄流%9HJU뒡"MT>Љ2b?7;1r`BtM )F,YSn7[79E6hR<:F_<Ll3 ٵ(%o?_Z7k6 = ,&G둎}B3lKc3(8VӼBtbX4!5U9]b\uݹf%dҞ%ķ&Mg ou5Ix$t]s w+5 |-1at0 )Ie>uHuøP@zL0ɱ8&aC8xtmI  x^!ē^xG~_=*fNj63,i*!r4t?tSQ~I2zݚc:M,sDsDK;4HD ?z>wm>t]?Va3Ij`-R܁$;-0̬5:0DǚXb!נgxϵ Uۘ]&&P6F]yA ?&1"],@җ5{Xj,lDA^F3^&`}̰gsc)cvɨD+4=Ui^nF0݃( YTZ駁 ǀB5ejJK"u.*1>7qh$m?9~l ;}tT' Wc5 rIDATia0GkzZ5wP*ZK N"ALH"rmpĀly0l]/,b!dt>[=."&Ә':Nspvp`b"sq]J(FYCBL¬,?U 8l%zKaxlFED,xd A¾PD2\U, J`RDTQbEj9(/PJv%B<^\5:H;`;{P2 EO))Ax%I#!,D 4R$tLQ%*FժB)t%K3 T%h6)em^n8d@(CYH7i:r"]-2{PGa^>b"ڇu'~*JthTQ1CaR,|TV ] d݉6* )45_PN~ M>[l5k^H7=)ɞ^KdTU+$`w& >3W `*%Cm&UaT.Ȟj!o m߄ 'UxǙPX; 0z%ըtL5g;*TMkI3WN vX80jA&JeP^'hŤS;Qsb_:e|U@g1ZRMC9,4A酝DPOi iML?6"it*mڀ' cT5RݛirGC@ӕBJLijbC j n`&t xǘ|QbGΚ XBM}r"SwvhZ-E ( 2Ep쪘ib",\g,&0+6JKER;_=JZGG$E(Vq1p4 iSkutϒp0hTqYw&.1 C5=(Y-_[F#ZzL/Zc.7Lc@A+ нPL$"Lפ}HX5yzӾ͚nd`3[ѐa*H>ӅE:j7ۑ[ HفL@H%+oӐu?%5\ C<͇<˙Iҳ5 U!H6lʌc/r-^MEAH\0Z0KrKCxy-mr Og̛.Cm· 9* . }x<*<2.-fyrXBs08.oCGeTDZn5暷=pq IB+sBɏ0^) #$\W,VP;"|MFI9cۮ80"N`N M.06lfq}c h4^} VuN痮\~ɯ?r9Tyt~|`]42Weobu=w]y'|)u\* uEwo|zǻ/#7_Sw\G8}-oco~ #rOpX>Y>v8w`uA˷ǽe{NKw#e?p7o*F[rwny{}n` 3}Y^'ZΏǻ'z.j 2FOb2!7^eM}I9TWV8~Se>w>/w]/P?~3~q'nswn^'<\ǥR ^{wR!K~z;yLv?Ə>\z?pz' ``csa_max_pos - csa_position`` (the remaining bytes in the header), then we just read the remaning bytes in the header (as above) into ``value`` below, as uint8, move the filepointer to the next 4 byte boundary, and give up reading. 2. value : uint8, ``item_len``. We set the stream position to the next 4 byte boundary. .. include:: ../links_names.txt nipy-nibabel-d3c26be/doc/source/dicom/spm_dicom.rst000066400000000000000000000277131177264777700224640ustar00rootroot00000000000000.. _spm-dicom: ====================== SPM DICOM conversion ====================== These are some notes on the algorithms that SPM_ uses to convert from DICOM_ to nifti_. There are other notes in :ref:`dicom-mosaic`. The relevant SPM files are ``spm_dicom_headers.m``, ``spm_dicom_dict.mat`` and ``spm_dicom_convert.m``. These notes refer the version in SPM8, as of around January 2010. ``spm_dicom_dict.mat`` ====================== This is obviously a Matlab ``.mat`` file. It contains variables ``group`` and ``element``, and ``values``, where ``values`` is a struct array, one element per (group, element) pair, with fields ``name`` and ``vr`` (the last a cell array). ``spm_dicom_headers.m`` ======================= Reads the given DICOM files into a struct. It looks like this was written by John Ahsburner (JA). Relevant fixes are: File opening ------------ When opening the DICOM file, SPM (subfunction ``readdicomfile``) #. opens as little endian #. reads 4 characters starting at pos 128 #. checks if these are ``DICM``; if so then continues file read; otherwise, tests to see if this is what SPM calls *truncated DICOM file format* - lacking 128 byte lead in and ``DICM`` string: #. Seeks to beginning of file #. Reads two unsigned short values into ``group`` and ``tag`` #. If the (``group``, ``element``) pair exist in ``spm_dicom_dict.mat``, then set file pointer to 0 and continue read with ``read_dicom`` subfunction.. #. If ``group`` == 8 and ``element`` == 0, this is apparently the signature for a 'GE Twin+excite' for which JA notes there is no documentation; set file pointer to 0 and continue read with ``read_dicom`` subfunction. #. Otherwise - crash out with error saying that this is not DICOM file. tag read for Philips Integra ---------------------------- The ``read_dicom`` subfunction reads a tag, then has a loop during which the tag is processed (by setting values into the return structure). At the end of the loop, it reads the next tag. The loop breaks when the current tag is empty, or is the item delimitation tag (group=FFFE, element=E00D). After it has broken out of the loop, if the last tag was (FFFE, E00D) (item delimitation tag), and the tag length was not 0, then SPM sets the file pointer back by 4 bytes from the current position. JA comments that he didn't find that in the standard, but that it seemed to be needed for the Philips Integra. Tag length ---------- Tag lengths as read in ``read_tag`` subfunction. If current format is explicit (as in 'explicit little endian'): #. For VR of \x00\x00, then group, element must be (FFFE, E00D) (item delimitation tag). JA comments that GE 'ImageDelimitationItem' has no VR, just 4 0 bytes. In this case the tag length is zero, and we read another two bytes ahead. There's a check for not-even tag length. If not even: #. 4294967295 appears to be OK - and decoded as Inf for tag length. #. 13 appears to mean 10 and is reset to be 10 #. Any other odd number is not valid and gives a tag length of 0 ``SQ`` VR type (Sequnce of items type) -------------------------------------- tag length of 13 set to tag length 10. ``spm_dicom_convert.m`` ======================= Written by John Ashburner and Jesper Andersson. File categorization ------------------- SPM makes a special case of Siemens 'spectroscopy images'. These are images that have 'SOPClassUID' == '1.3.12.2.1107.5.9.1' and the private tag of (29, 1210); for these it pulls out the affine, and writes a volume of ones corresponding to the acquisition planes. For images that are not spectroscopy: * Discards images that do not have any of ('MR', 'PT', 'CT') in 'Modality' field. * Discards images lacking any of 'StartOfPixelData', 'SamplesperPixel', 'Rows', 'Columns', 'BitsAllocated', 'BitsStored', 'HighBit', 'PixelRespresentation' * Discards images lacking any of 'PixelSpacing', 'ImagePositionPatient', 'ImageOrientationPatient' - presumably on the basis that SPM cannot reconstruct the affine. * Fields 'SeriesNumber', 'AcquisitionNumber' and 'InstanceNumber' are set to 1 if absent. Next SPM distinguishes between :ref:`dicom-mosaic` and standard DICOM. Mosaic images are those with the Siemens private tag:: (0029, 1009) [CSA Image Header Version] OB: '20100114' and a readable CSA header (see :ref:`dicom-mosaic`), and with non-empty fields from that header of 'AcquisitionMatrixText', 'NumberOfImagesInMosaic', and with non-zero 'NumberOfImagesInMosaic'. The rest are standard DICOM. For converting mosaic format, see :ref:`dicom-mosaic`. The rest of this page refers to standard (slice by slice) DICOMs. .. _spm-volume-sorting: Sorting files into volumes -------------------------- First pass ~~~~~~~~~~ Take first header, put as start of first volume. For each subsequent header: #. Get ``ICE_Dims`` if present. Look for Siemens 'CSAImageHeaderInfo', check it has a 'name' field, then pull dimensions out of 'ICE_Dims' field in form of 9 integers separated by '_', where 'X' in this string replaced by '-1' - giving 'ICE1' Then, for each currently identified volume: #. If we have ICE1 above, and we do have 'CSAIMageHeaderInfo', with a 'name', in the first header in this volume, then extract ICE dims in the same way as above, for the first header in this volume, and check whether all but ICE1[6:8] are the same as ICE2. Set flag that all ICE dims are identical for this volume. Set this flag to True if we did not have ICE1 or CSA information. #. Match the current header to the current volume iff the following match: #. SeriesNumber #. Rows #. Columns #. ImageOrientationPatient (to tolerance of sum squared difference 1e-4) #. PixelSpacing (to tolerance of sum squared difference 1e-4) #. ICE dims as defined above #. ImageType (iff imagetype exists in both)zv #. SequenceName (iff sequencename exists in both) #. SeriesInstanceUID (iff exists in both) #. EchoNumbers (iff exists in both) #. If the current header matches the current volume, insert it there, otherwise make a new volume for this header .. _spm-second-pass: Second pass ~~~~~~~~~~~ We now have a list of volumes, where each volume is a list of headers that may match. For each volume: #. Estimate the z direction cosine by (effectively) finding the cross product of the x and y direction cosines contained in 'ImageOrientationPatient' - call this ``z_dir_cos`` #. For each header in this volume, get the z coordinate by taking the dot product of the 'ImagePositionPatient' vector and ``z_dir_cos`` (see :ref:`dicom-z-from-slice`). #. Sort the headers according to this estimated z coordinate. #. If this volume is more than one slice, and there are any slices with the same z coordinate (as defined above), run the :ref:`dicom-img-resort` on this volume - on the basis that it may have caught more than one volume-worth of slices. Return one or more volume's worth of lists. Final check ~~~~~~~~~~~ For each volume, recalculate z coordinate as above. Calculate the z gaps. Subtract the mean of the z gaps from all z gaps. If the average of the (gap-mean(gap)) is greater than 1e-4, then print a warning that there are missing DICOM files. .. _dicom-img-resort: Possible volume resort ~~~~~~~~~~~~~~~~~~~~~~ This step happens if there were volumes with slices having the same z coordinate in the :ref:`spm-second-pass` step above. The resort is on the set of DICOM headers that were in the volume, for which there were slices with identical z coordinates. We'll call the list of headers that the routine is still working on - ``work_list``. #. If there is no 'InstanceNumber' field for the first header in ``work_list``, bail out. #. Print a message about the 'AcquisitionNumber' not changing from volume to volume. This may be a relic from previous code, because this version of SPM does not use the 'AcquisitionNumber' field except for making filenames. #. Calculate the z coordinate as for :ref:`spm-second-pass`, for each DICOM header. #. Sort the headers by 'InstanceNumber' #. If any headers have the same 'InstanceNumber', then discard all but the first header with the same number. At this point the remaining headers in ``work_list`` will have different 'InstanceNumber's, but may have the same z coordinate. #. Now sort by z coordinate #. If there are ``N`` headers, make a ``N`` length vector of flags ``is_processed``, for which all values == False #. Make an output list of header lists, call it ``hdr_vol_out``, set to empty. #. While there are still any False elements in ``is_processed``: #. Find first header for which corresponding ``is_processed`` is False - call this ``hdr_to_check`` #. Collect indices (in ``work_list``) of headers which have the same z coordinate as ``hdr_to_check``, call this list ``z_same_indices``. #. Sort ``work_list[z_same_indices]`` by 'InstanceNumber' #. For each index in ``z_same_indices`` such that ``i`` indexes the indices, and ``zsind`` is ``z_same_indices[i]``: append header corresponding to ``zsind`` to ``hdr_vol_out[i]``. This assumes that the original ``work_list`` contained two or more volumes, each with an identical set of z coordinates. #. Set corresponding ``is_processed`` flag to True for all ``z_same_indices``. #. Finally, if the headers in ``work_list`` have 'InstanceNumber's that cannot be sorted to a sequence ascending in units of 1, or if any of the lists in ``hdr_vol_out`` have different lengths, emit a warning about missing DICOM files. Writing DICOM volumes --------------------- This means - writing DICOM volumes from standard (slice by slice) DICOM datasets rather than :ref:`dicom-mosaic`. Making the affine ~~~~~~~~~~~~~~~~~ We need the (4,4) affine $A$ going from voxel (array) coordinates in the DICOM pixel data, to mm coordinates in the :ref:`dicom-pcs`. This section tries to explain how SPM achieves this, but I don't completely understand their method. See :ref:`dicom-3d-affines` for what I believe to be a simpler explanation. First define the constants, matrices and vectors as in :ref:`dicom-affine-defs`. $N$ is the number of slices in the volume. Then define the following matrices: .. math:: R = \left(\begin{smallmatrix}1 & a & 1 & 0\\1 & b & 0 & 1\\1 & c & 0 & 0\\1 & d & 0 & 0\end{smallmatrix}\right) L = \left(\begin{smallmatrix}T^{1}_{{1}} & e & F_{{11}} \Delta{r} & F_{{12}} \Delta{c}\\T^{1}_{{2}} & f & F_{{21}} \Delta{r} & F_{{22}} \Delta{c}\\T^{1}_{{3}} & g & F_{{31}} \Delta{r} & F_{{32}} \Delta{c}\\1 & h & 0 & 0\end{smallmatrix}\right) For a volume with more than one slice (header), then $a=1; b=1, c=N, d=1$. $e, f, g$ are the values from $T^N$, and $h == 1$. For a volume with only one slice (header) $a=0, b=0, c=1, d=0$ and $e, f, g, h$ are $n_1 \Delta{s}, n_2 \Delta{s}, n_3 \Delta{s}, 0$. The full transform appears to be $A_{spm} = R L^{-1}$. Now, SPM, don't forget, is working in terms of Matlab array indexing, which starts at (1,1,1) for a three dimensional array, whereas DICOM expects a (0,0,0) start (see :ref:`dicom-slice-affine`). In this particular part of the SPM DICOM code, somewhat confusingly, the (0,0,0) to (1,1,1) indexing is dealt with in the $A$ transform, rather than the ``analyze_to_dicom`` transformation used by SPM in other places. So, the transform $A_{spm}$ goes from (1,1,1) based voxel indices to mm. To get the (0, 0, 0)-based transform we want, we need to pre-apply the transform to take 0-based voxel indices to 1-based voxel indices: .. math:: A = R L^{-1} \left(\begin{smallmatrix}1 & 0 & 0 & 1\\0 & 1 & 0 & 1\\0 & 0 & 1 & 1\\0 & 0 & 0 & 1\end{smallmatrix}\right) This formula with the definitions above result in the single and multi slice formulae in :ref:`dicom-3d-affine-formulae`. See :download:`derivations/spm_dicom_orient.py` for the derivations and some explanations. Writing the voxel data ~~~~~~~~~~~~~~~~~~~~~~ Just apply scaling and offset from 'RescaleSlope' and 'RescaleIntercept' for each slice and write volume. .. include:: ../links_names.txt nipy-nibabel-d3c26be/doc/source/external/000077500000000000000000000000001177264777700204755ustar00rootroot00000000000000nipy-nibabel-d3c26be/doc/source/external/nifti1.h000066400000000000000000002071601177264777700220460ustar00rootroot00000000000000/** \file nifti1.h \brief Official definition of the nifti1 header. Written by Bob Cox, SSCC, NIMH. HISTORY: 29 Nov 2007 [rickr] - added DT_RGBA32 and NIFTI_TYPE_RGBA32 - added NIFTI_INTENT codes: TIME_SERIES, NODE_INDEX, RGB_VECTOR, RGBA_VECTOR, SHAPE */ #ifndef _NIFTI_HEADER_ #define _NIFTI_HEADER_ /***************************************************************************** ** This file defines the "NIFTI-1" header format. ** ** It is derived from 2 meetings at the NIH (31 Mar 2003 and ** ** 02 Sep 2003) of the Data Format Working Group (DFWG), ** ** chartered by the NIfTI (Neuroimaging Informatics Technology ** ** Initiative) at the National Institutes of Health (NIH). ** **--------------------------------------------------------------** ** Neither the National Institutes of Health (NIH), the DFWG, ** ** nor any of the members or employees of these institutions ** ** imply any warranty of usefulness of this material for any ** ** purpose, and do not assume any liability for damages, ** ** incidental or otherwise, caused by any use of this document. ** ** If these conditions are not acceptable, do not use this! ** **--------------------------------------------------------------** ** Author: Robert W Cox (NIMH, Bethesda) ** ** Advisors: John Ashburner (FIL, London), ** ** Stephen Smith (FMRIB, Oxford), ** ** Mark Jenkinson (FMRIB, Oxford) ** ******************************************************************************/ /*---------------------------------------------------------------------------*/ /* Note that the ANALYZE 7.5 file header (dbh.h) is (c) Copyright 1986-1995 Biomedical Imaging Resource Mayo Foundation Incorporation of components of dbh.h are by permission of the Mayo Foundation. Changes from the ANALYZE 7.5 file header in this file are released to the public domain, including the functional comments and any amusing asides. -----------------------------------------------------------------------------*/ /*---------------------------------------------------------------------------*/ /*! INTRODUCTION TO NIFTI-1: ------------------------ The twin (and somewhat conflicting) goals of this modified ANALYZE 7.5 format are: (a) To add information to the header that will be useful for functional neuroimaging data analysis and display. These additions include: - More basic data types. - Two affine transformations to specify voxel coordinates. - "Intent" codes and parameters to describe the meaning of the data. - Affine scaling of the stored data values to their "true" values. - Optional storage of the header and image data in one file (.nii). (b) To maintain compatibility with non-NIFTI-aware ANALYZE 7.5 compatible software (i.e., such a program should be able to do something useful with a NIFTI-1 dataset -- at least, with one stored in a traditional .img/.hdr file pair). Most of the unused fields in the ANALYZE 7.5 header have been taken, and some of the lesser-used fields have been co-opted for other purposes. Notably, most of the data_history substructure has been co-opted for other purposes, since the ANALYZE 7.5 format describes this substructure as "not required". NIFTI-1 FLAG (MAGIC STRINGS): ---------------------------- To flag such a struct as being conformant to the NIFTI-1 spec, the last 4 bytes of the header must be either the C String "ni1" or "n+1"; in hexadecimal, the 4 bytes 6E 69 31 00 or 6E 2B 31 00 (in any future version of this format, the '1' will be upgraded to '2', etc.). Normally, such a "magic number" or flag goes at the start of the file, but trying to avoid clobbering widely-used ANALYZE 7.5 fields led to putting this marker last. However, recall that "the last shall be first" (Matthew 20:16). If a NIFTI-aware program reads a header file that is NOT marked with a NIFTI magic string, then it should treat the header as an ANALYZE 7.5 structure. NIFTI-1 FILE STORAGE: -------------------- "ni1" means that the image data is stored in the ".img" file corresponding to the header file (starting at file offset 0). "n+1" means that the image data is stored in the same file as the header information. We recommend that the combined header+data filename suffix be ".nii". When the dataset is stored in one file, the first byte of image data is stored at byte location (int)vox_offset in this combined file. The minimum allowed value of vox_offset is 352; for compatibility with some software, vox_offset should be an integral multiple of 16. GRACE UNDER FIRE: ---------------- Most NIFTI-aware programs will only be able to handle a subset of the full range of datasets possible with this format. All NIFTI-aware programs should take care to check if an input dataset conforms to the program's needs and expectations (e.g., check datatype, intent_code, etc.). If the input dataset can't be handled by the program, the program should fail gracefully (e.g., print a useful warning; not crash). SAMPLE CODES: ------------ The associated files nifti1_io.h and nifti1_io.c provide a sample implementation in C of a set of functions to read, write, and manipulate NIFTI-1 files. The file nifti1_test.c is a sample program that uses the nifti1_io.c functions. -----------------------------------------------------------------------------*/ /*---------------------------------------------------------------------------*/ /* HEADER STRUCT DECLARATION: ------------------------- In the comments below for each field, only NIFTI-1 specific requirements or changes from the ANALYZE 7.5 format are described. For convenience, the 348 byte header is described as a single struct, rather than as the ANALYZE 7.5 group of 3 substructs. Further comments about the interpretation of various elements of this header are after the data type definition itself. Fields that are marked as ++UNUSED++ have no particular interpretation in this standard. (Also see the UNUSED FIELDS comment section, far below.) The presumption below is that the various C types have particular sizes: sizeof(int) = sizeof(float) = 4 ; sizeof(short) = 2 -----------------------------------------------------------------------------*/ /*=================*/ #ifdef __cplusplus extern "C" { #endif /*=================*/ /*! \struct nifti_1_header \brief Data structure defining the fields in the nifti1 header. This binary header should be found at the beginning of a valid NIFTI-1 header file. */ /*************************/ /************************/ struct nifti_1_header { /* NIFTI-1 usage */ /* ANALYZE 7.5 field(s) */ /*************************/ /************************/ /*--- was header_key substruct ---*/ int sizeof_hdr; /*!< MUST be 348 */ /* int sizeof_hdr; */ char data_type[10]; /*!< ++UNUSED++ */ /* char data_type[10]; */ char db_name[18]; /*!< ++UNUSED++ */ /* char db_name[18]; */ int extents; /*!< ++UNUSED++ */ /* int extents; */ short session_error; /*!< ++UNUSED++ */ /* short session_error; */ char regular; /*!< ++UNUSED++ */ /* char regular; */ char dim_info; /*!< MRI slice ordering. */ /* char hkey_un0; */ /*--- was image_dimension substruct ---*/ short dim[8]; /*!< Data array dimensions.*/ /* short dim[8]; */ float intent_p1 ; /*!< 1st intent parameter. */ /* short unused8; */ /* short unused9; */ float intent_p2 ; /*!< 2nd intent parameter. */ /* short unused10; */ /* short unused11; */ float intent_p3 ; /*!< 3rd intent parameter. */ /* short unused12; */ /* short unused13; */ short intent_code ; /*!< NIFTI_INTENT_* code. */ /* short unused14; */ short datatype; /*!< Defines data type! */ /* short datatype; */ short bitpix; /*!< Number bits/voxel. */ /* short bitpix; */ short slice_start; /*!< First slice index. */ /* short dim_un0; */ float pixdim[8]; /*!< Grid spacings. */ /* float pixdim[8]; */ float vox_offset; /*!< Offset into .nii file */ /* float vox_offset; */ float scl_slope ; /*!< Data scaling: slope. */ /* float funused1; */ float scl_inter ; /*!< Data scaling: offset. */ /* float funused2; */ short slice_end; /*!< Last slice index. */ /* float funused3; */ char slice_code ; /*!< Slice timing order. */ char xyzt_units ; /*!< Units of pixdim[1..4] */ float cal_max; /*!< Max display intensity */ /* float cal_max; */ float cal_min; /*!< Min display intensity */ /* float cal_min; */ float slice_duration;/*!< Time for 1 slice. */ /* float compressed; */ float toffset; /*!< Time axis shift. */ /* float verified; */ int glmax; /*!< ++UNUSED++ */ /* int glmax; */ int glmin; /*!< ++UNUSED++ */ /* int glmin; */ /*--- was data_history substruct ---*/ char descrip[80]; /*!< any text you like. */ /* char descrip[80]; */ char aux_file[24]; /*!< auxiliary filename. */ /* char aux_file[24]; */ short qform_code ; /*!< NIFTI_XFORM_* code. */ /*-- all ANALYZE 7.5 ---*/ short sform_code ; /*!< NIFTI_XFORM_* code. */ /* fields below here */ /* are replaced */ float quatern_b ; /*!< Quaternion b param. */ float quatern_c ; /*!< Quaternion c param. */ float quatern_d ; /*!< Quaternion d param. */ float qoffset_x ; /*!< Quaternion x shift. */ float qoffset_y ; /*!< Quaternion y shift. */ float qoffset_z ; /*!< Quaternion z shift. */ float srow_x[4] ; /*!< 1st row affine transform. */ float srow_y[4] ; /*!< 2nd row affine transform. */ float srow_z[4] ; /*!< 3rd row affine transform. */ char intent_name[16];/*!< 'name' or meaning of data. */ char magic[4] ; /*!< MUST be "ni1\0" or "n+1\0". */ } ; /**** 348 bytes total ****/ typedef struct nifti_1_header nifti_1_header ; /*---------------------------------------------------------------------------*/ /* HEADER EXTENSIONS: ----------------- After the end of the 348 byte header (e.g., after the magic field), the next 4 bytes are a char array field named "extension". By default, all 4 bytes of this array should be set to zero. In a .nii file, these 4 bytes will always be present, since the earliest start point for the image data is byte #352. In a separate .hdr file, these bytes may or may not be present. If not present (i.e., if the length of the .hdr file is 348 bytes), then a NIfTI-1 compliant program should use the default value of extension={0,0,0,0}. The first byte (extension[0]) is the only value of this array that is specified at present. The other 3 bytes are reserved for future use. If extension[0] is nonzero, it indicates that extended header information is present in the bytes following the extension array. In a .nii file, this extended header data is before the image data (and vox_offset must be set correctly to allow for this). In a .hdr file, this extended data follows extension and proceeds (potentially) to the end of the file. The format of extended header data is weakly specified. Each extension must be an integer multiple of 16 bytes long. The first 8 bytes of each extension comprise 2 integers: int esize , ecode ; These values may need to be byte-swapped, as indicated by dim[0] for the rest of the header. * esize is the number of bytes that form the extended header data + esize must be a positive integral multiple of 16 + this length includes the 8 bytes of esize and ecode themselves * ecode is a non-negative integer that indicates the format of the extended header data that follows + different ecode values are assigned to different developer groups + at present, the "registered" values for code are = 0 = unknown private format (not recommended!) = 2 = DICOM format (i.e., attribute tags and values) = 4 = AFNI group (i.e., ASCII XML-ish elements) In the interests of interoperability (a primary rationale for NIfTI), groups developing software that uses this extension mechanism are encouraged to document and publicize the format of their extensions. To this end, the NIfTI DFWG will assign even numbered codes upon request to groups submitting at least rudimentary documentation for the format of their extension; at present, the contact is mailto:rwcox@nih.gov. The assigned codes and documentation will be posted on the NIfTI website. All odd values of ecode (and 0) will remain unassigned; at least, until the even ones are used up, when we get to 2,147,483,646. Note that the other contents of the extended header data section are totally unspecified by the NIfTI-1 standard. In particular, if binary data is stored in such a section, its byte order is not necessarily the same as that given by examining dim[0]; it is incumbent on the programs dealing with such data to determine the byte order of binary extended header data. Multiple extended header sections are allowed, each starting with an esize,ecode value pair. The first esize value, as described above, is at bytes #352-355 in the .hdr or .nii file (files start at byte #0). If this value is positive, then the second (esize2) will be found starting at byte #352+esize1 , the third (esize3) at byte #352+esize1+esize2, et cetera. Of course, in a .nii file, the value of vox_offset must be compatible with these extensions. If a malformed file indicates that an extended header data section would run past vox_offset, then the entire extended header section should be ignored. In a .hdr file, if an extended header data section would run past the end-of-file, that extended header data should also be ignored. With the above scheme, a program can successively examine the esize and ecode values, and skip over each extended header section if the program doesn't know how to interpret the data within. Of course, any program can simply ignore all extended header sections simply by jumping straight to the image data using vox_offset. -----------------------------------------------------------------------------*/ /*! \struct nifti1_extender \brief This structure represents a 4-byte string that should follow the binary nifti_1_header data in a NIFTI-1 header file. If the char values are {1,0,0,0}, the file is expected to contain extensions, values of {0,0,0,0} imply the file does not contain extensions. Other sequences of values are not currently defined. */ struct nifti1_extender { char extension[4] ; } ; typedef struct nifti1_extender nifti1_extender ; /*! \struct nifti1_extension \brief Data structure defining the fields of a header extension. */ struct nifti1_extension { int esize ; /*!< size of extension, in bytes (must be multiple of 16) */ int ecode ; /*!< extension code, one of the NIFTI_ECODE_ values */ char * edata ; /*!< raw data, with no byte swapping (length is esize-8) */ } ; typedef struct nifti1_extension nifti1_extension ; /*---------------------------------------------------------------------------*/ /* DATA DIMENSIONALITY (as in ANALYZE 7.5): --------------------------------------- dim[0] = number of dimensions; - if dim[0] is outside range 1..7, then the header information needs to be byte swapped appropriately - ANALYZE supports dim[0] up to 7, but NIFTI-1 reserves dimensions 1,2,3 for space (x,y,z), 4 for time (t), and 5,6,7 for anything else needed. dim[i] = length of dimension #i, for i=1..dim[0] (must be positive) - also see the discussion of intent_code, far below pixdim[i] = voxel width along dimension #i, i=1..dim[0] (positive) - cf. ORIENTATION section below for use of pixdim[0] - the units of pixdim can be specified with the xyzt_units field (also described far below). Number of bits per voxel value is in bitpix, which MUST correspond with the datatype field. The total number of bytes in the image data is dim[1] * ... * dim[dim[0]] * bitpix / 8 In NIFTI-1 files, dimensions 1,2,3 are for space, dimension 4 is for time, and dimension 5 is for storing multiple values at each spatiotemporal voxel. Some examples: - A typical whole-brain FMRI experiment's time series: - dim[0] = 4 - dim[1] = 64 pixdim[1] = 3.75 xyzt_units = NIFTI_UNITS_MM - dim[2] = 64 pixdim[2] = 3.75 | NIFTI_UNITS_SEC - dim[3] = 20 pixdim[3] = 5.0 - dim[4] = 120 pixdim[4] = 2.0 - A typical T1-weighted anatomical volume: - dim[0] = 3 - dim[1] = 256 pixdim[1] = 1.0 xyzt_units = NIFTI_UNITS_MM - dim[2] = 256 pixdim[2] = 1.0 - dim[3] = 128 pixdim[3] = 1.1 - A single slice EPI time series: - dim[0] = 4 - dim[1] = 64 pixdim[1] = 3.75 xyzt_units = NIFTI_UNITS_MM - dim[2] = 64 pixdim[2] = 3.75 | NIFTI_UNITS_SEC - dim[3] = 1 pixdim[3] = 5.0 - dim[4] = 1200 pixdim[4] = 0.2 - A 3-vector stored at each point in a 3D volume: - dim[0] = 5 - dim[1] = 256 pixdim[1] = 1.0 xyzt_units = NIFTI_UNITS_MM - dim[2] = 256 pixdim[2] = 1.0 - dim[3] = 128 pixdim[3] = 1.1 - dim[4] = 1 pixdim[4] = 0.0 - dim[5] = 3 intent_code = NIFTI_INTENT_VECTOR - A single time series with a 3x3 matrix at each point: - dim[0] = 5 - dim[1] = 1 xyzt_units = NIFTI_UNITS_SEC - dim[2] = 1 - dim[3] = 1 - dim[4] = 1200 pixdim[4] = 0.2 - dim[5] = 9 intent_code = NIFTI_INTENT_GENMATRIX - intent_p1 = intent_p2 = 3.0 (indicates matrix dimensions) -----------------------------------------------------------------------------*/ /*---------------------------------------------------------------------------*/ /* DATA STORAGE: ------------ If the magic field is "n+1", then the voxel data is stored in the same file as the header. In this case, the voxel data starts at offset (int)vox_offset into the header file. Thus, vox_offset=352.0 means that the data starts immediately after the NIFTI-1 header. If vox_offset is greater than 352, the NIFTI-1 format does not say much about the contents of the dataset file between the end of the header and the start of the data. FILES: ----- If the magic field is "ni1", then the voxel data is stored in the associated ".img" file, starting at offset 0 (i.e., vox_offset is not used in this case, and should be set to 0.0). When storing NIFTI-1 datasets in pairs of files, it is customary to name the files in the pattern "name.hdr" and "name.img", as in ANALYZE 7.5. When storing in a single file ("n+1"), the file name should be in the form "name.nii" (the ".nft" and ".nif" suffixes are already taken; cf. http://www.icdatamaster.com/n.html ). BYTE ORDERING: ------------- The byte order of the data arrays is presumed to be the same as the byte order of the header (which is determined by examining dim[0]). Floating point types are presumed to be stored in IEEE-754 format. -----------------------------------------------------------------------------*/ /*---------------------------------------------------------------------------*/ /* DETAILS ABOUT vox_offset: ------------------------ In a .nii file, the vox_offset field value is interpreted as the start location of the image data bytes in that file. In a .hdr/.img file pair, the vox_offset field value is the start location of the image data bytes in the .img file. * If vox_offset is less than 352 in a .nii file, it is equivalent to 352 (i.e., image data never starts before byte #352 in a .nii file). * The default value for vox_offset in a .nii file is 352. * In a .hdr file, the default value for vox_offset is 0. * vox_offset should be an integer multiple of 16; otherwise, some programs may not work properly (e.g., SPM). This is to allow memory-mapped input to be properly byte-aligned. Note that since vox_offset is an IEEE-754 32 bit float (for compatibility with the ANALYZE-7.5 format), it effectively has a 24 bit mantissa. All integers from 0 to 2^24 can be represented exactly in this format, but not all larger integers are exactly storable as IEEE-754 32 bit floats. However, unless you plan to have vox_offset be potentially larger than 16 MB, this should not be an issue. (Actually, any integral multiple of 16 up to 2^27 can be represented exactly in this format, which allows for up to 128 MB of random information before the image data. If that isn't enough, then perhaps this format isn't right for you.) In a .img file (i.e., image data stored separately from the NIfTI-1 header), data bytes between #0 and #vox_offset-1 (inclusive) are completely undefined and unregulated by the NIfTI-1 standard. One potential use of having vox_offset > 0 in the .hdr/.img file pair storage method is to make the .img file be a copy of (or link to) a pre-existing image file in some other format, such as DICOM; then vox_offset would be set to the offset of the image data in this file. (It may not be possible to follow the "multiple-of-16 rule" with an arbitrary external file; using the NIfTI-1 format in such a case may lead to a file that is incompatible with software that relies on vox_offset being a multiple of 16.) In a .nii file, data bytes between #348 and #vox_offset-1 (inclusive) may be used to store user-defined extra information; similarly, in a .hdr file, any data bytes after byte #347 are available for user-defined extra information. The (very weak) regulation of this extra header data is described elsewhere. -----------------------------------------------------------------------------*/ /*---------------------------------------------------------------------------*/ /* DATA SCALING: ------------ If the scl_slope field is nonzero, then each voxel value in the dataset should be scaled as y = scl_slope * x + scl_inter where x = voxel value stored y = "true" voxel value Normally, we would expect this scaling to be used to store "true" floating values in a smaller integer datatype, but that is not required. That is, it is legal to use scaling even if the datatype is a float type (crazy, perhaps, but legal). - However, the scaling is to be ignored if datatype is DT_RGB24. - If datatype is a complex type, then the scaling is to be applied to both the real and imaginary parts. The cal_min and cal_max fields (if nonzero) are used for mapping (possibly scaled) dataset values to display colors: - Minimum display intensity (black) corresponds to dataset value cal_min. - Maximum display intensity (white) corresponds to dataset value cal_max. - Dataset values below cal_min should display as black also, and values above cal_max as white. - Colors "black" and "white", of course, may refer to any scalar display scheme (e.g., a color lookup table specified via aux_file). - cal_min and cal_max only make sense when applied to scalar-valued datasets (i.e., dim[0] < 5 or dim[5] = 1). -----------------------------------------------------------------------------*/ /*---------------------------------------------------------------------------*/ /* TYPE OF DATA (acceptable values for datatype field): --------------------------------------------------- Values of datatype smaller than 256 are ANALYZE 7.5 compatible. Larger values are NIFTI-1 additions. These are all multiples of 256, so that no bits below position 8 are set in datatype. But there is no need to use only powers-of-2, as the original ANALYZE 7.5 datatype codes do. The additional codes are intended to include a complete list of basic scalar types, including signed and unsigned integers from 8 to 64 bits, floats from 32 to 128 bits, and complex (float pairs) from 64 to 256 bits. Note that most programs will support only a few of these datatypes! A NIFTI-1 program should fail gracefully (e.g., print a warning message) when it encounters a dataset with a type it doesn't like. -----------------------------------------------------------------------------*/ #undef DT_UNKNOWN /* defined in dirent.h on some Unix systems */ /*! \defgroup NIFTI1_DATATYPES \brief nifti1 datatype codes @{ */ /*--- the original ANALYZE 7.5 type codes ---*/ #define DT_NONE 0 #define DT_UNKNOWN 0 /* what it says, dude */ #define DT_BINARY 1 /* binary (1 bit/voxel) */ #define DT_UNSIGNED_CHAR 2 /* unsigned char (8 bits/voxel) */ #define DT_SIGNED_SHORT 4 /* signed short (16 bits/voxel) */ #define DT_SIGNED_INT 8 /* signed int (32 bits/voxel) */ #define DT_FLOAT 16 /* float (32 bits/voxel) */ #define DT_COMPLEX 32 /* complex (64 bits/voxel) */ #define DT_DOUBLE 64 /* double (64 bits/voxel) */ #define DT_RGB 128 /* RGB triple (24 bits/voxel) */ #define DT_ALL 255 /* not very useful (?) */ /*----- another set of names for the same ---*/ #define DT_UINT8 2 #define DT_INT16 4 #define DT_INT32 8 #define DT_FLOAT32 16 #define DT_COMPLEX64 32 #define DT_FLOAT64 64 #define DT_RGB24 128 /*------------------- new codes for NIFTI ---*/ #define DT_INT8 256 /* signed char (8 bits) */ #define DT_UINT16 512 /* unsigned short (16 bits) */ #define DT_UINT32 768 /* unsigned int (32 bits) */ #define DT_INT64 1024 /* long long (64 bits) */ #define DT_UINT64 1280 /* unsigned long long (64 bits) */ #define DT_FLOAT128 1536 /* long double (128 bits) */ #define DT_COMPLEX128 1792 /* double pair (128 bits) */ #define DT_COMPLEX256 2048 /* long double pair (256 bits) */ #define DT_RGBA32 2304 /* 4 byte RGBA (32 bits/voxel) */ /* @} */ /*------- aliases for all the above codes ---*/ /*! \defgroup NIFTI1_DATATYPE_ALIASES \brief aliases for the nifti1 datatype codes @{ */ /*! unsigned char. */ #define NIFTI_TYPE_UINT8 2 /*! signed short. */ #define NIFTI_TYPE_INT16 4 /*! signed int. */ #define NIFTI_TYPE_INT32 8 /*! 32 bit float. */ #define NIFTI_TYPE_FLOAT32 16 /*! 64 bit complex = 2 32 bit floats. */ #define NIFTI_TYPE_COMPLEX64 32 /*! 64 bit float = double. */ #define NIFTI_TYPE_FLOAT64 64 /*! 3 8 bit bytes. */ #define NIFTI_TYPE_RGB24 128 /*! signed char. */ #define NIFTI_TYPE_INT8 256 /*! unsigned short. */ #define NIFTI_TYPE_UINT16 512 /*! unsigned int. */ #define NIFTI_TYPE_UINT32 768 /*! signed long long. */ #define NIFTI_TYPE_INT64 1024 /*! unsigned long long. */ #define NIFTI_TYPE_UINT64 1280 /*! 128 bit float = long double. */ #define NIFTI_TYPE_FLOAT128 1536 /*! 128 bit complex = 2 64 bit floats. */ #define NIFTI_TYPE_COMPLEX128 1792 /*! 256 bit complex = 2 128 bit floats */ #define NIFTI_TYPE_COMPLEX256 2048 /*! 4 8 bit bytes. */ #define NIFTI_TYPE_RGBA32 2304 /* @} */ /*-------- sample typedefs for complicated types ---*/ #if 0 typedef struct { float r,i; } complex_float ; typedef struct { double r,i; } complex_double ; typedef struct { long double r,i; } complex_longdouble ; typedef struct { unsigned char r,g,b; } rgb_byte ; #endif /*---------------------------------------------------------------------------*/ /* INTERPRETATION OF VOXEL DATA: ---------------------------- The intent_code field can be used to indicate that the voxel data has some particular meaning. In particular, a large number of codes is given to indicate that the the voxel data should be interpreted as being drawn from a given probability distribution. VECTOR-VALUED DATASETS: ---------------------- The 5th dimension of the dataset, if present (i.e., dim[0]=5 and dim[5] > 1), contains multiple values (e.g., a vector) to be stored at each spatiotemporal location. For example, the header values - dim[0] = 5 - dim[1] = 64 - dim[2] = 64 - dim[3] = 20 - dim[4] = 1 (indicates no time axis) - dim[5] = 3 - datatype = DT_FLOAT - intent_code = NIFTI_INTENT_VECTOR mean that this dataset should be interpreted as a 3D volume (64x64x20), with a 3-vector of floats defined at each point in the 3D grid. A program reading a dataset with a 5th dimension may want to reformat the image data to store each voxels' set of values together in a struct or array. This programming detail, however, is beyond the scope of the NIFTI-1 file specification! Uses of dimensions 6 and 7 are also not specified here. STATISTICAL PARAMETRIC DATASETS (i.e., SPMs): -------------------------------------------- Values of intent_code from NIFTI_FIRST_STATCODE to NIFTI_LAST_STATCODE (inclusive) indicate that the numbers in the dataset should be interpreted as being drawn from a given distribution. Most such distributions have auxiliary parameters (e.g., NIFTI_INTENT_TTEST has 1 DOF parameter). If the dataset DOES NOT have a 5th dimension, then the auxiliary parameters are the same for each voxel, and are given in header fields intent_p1, intent_p2, and intent_p3. If the dataset DOES have a 5th dimension, then the auxiliary parameters are different for each voxel. For example, the header values - dim[0] = 5 - dim[1] = 128 - dim[2] = 128 - dim[3] = 1 (indicates a single slice) - dim[4] = 1 (indicates no time axis) - dim[5] = 2 - datatype = DT_FLOAT - intent_code = NIFTI_INTENT_TTEST mean that this is a 2D dataset (128x128) of t-statistics, with the t-statistic being in the first "plane" of data and the degrees-of-freedom parameter being in the second "plane" of data. If the dataset 5th dimension is used to store the voxel-wise statistical parameters, then dim[5] must be 1 plus the number of parameters required by that distribution (e.g., intent_code=NIFTI_INTENT_TTEST implies dim[5] must be 2, as in the example just above). Note: intent_code values 2..10 are compatible with AFNI 1.5x (which is why there is no code with value=1, which is obsolescent in AFNI). OTHER INTENTIONS: ---------------- The purpose of the intent_* fields is to help interpret the values stored in the dataset. Some non-statistical values for intent_code and conventions are provided for storing other complex data types. The intent_name field provides space for a 15 character (plus 0 byte) 'name' string for the type of data stored. Examples: - intent_code = NIFTI_INTENT_ESTIMATE; intent_name = "T1"; could be used to signify that the voxel values are estimates of the NMR parameter T1. - intent_code = NIFTI_INTENT_TTEST; intent_name = "House"; could be used to signify that the voxel values are t-statistics for the significance of 'activation' response to a House stimulus. - intent_code = NIFTI_INTENT_DISPVECT; intent_name = "ToMNI152"; could be used to signify that the voxel values are a displacement vector that transforms each voxel (x,y,z) location to the corresponding location in the MNI152 standard brain. - intent_code = NIFTI_INTENT_SYMMATRIX; intent_name = "DTI"; could be used to signify that the voxel values comprise a diffusion tensor image. If no data name is implied or needed, intent_name[0] should be set to 0. -----------------------------------------------------------------------------*/ /*! default: no intention is indicated in the header. */ #define NIFTI_INTENT_NONE 0 /*-------- These codes are for probability distributions ---------------*/ /* Most distributions have a number of parameters, below denoted by p1, p2, and p3, and stored in - intent_p1, intent_p2, intent_p3 if dataset doesn't have 5th dimension - image data array if dataset does have 5th dimension Functions to compute with many of the distributions below can be found in the CDF library from U Texas. Formulas for and discussions of these distributions can be found in the following books: [U] Univariate Discrete Distributions, NL Johnson, S Kotz, AW Kemp. [C1] Continuous Univariate Distributions, vol. 1, NL Johnson, S Kotz, N Balakrishnan. [C2] Continuous Univariate Distributions, vol. 2, NL Johnson, S Kotz, N Balakrishnan. */ /*----------------------------------------------------------------------*/ /*! [C2, chap 32] Correlation coefficient R (1 param): p1 = degrees of freedom R/sqrt(1-R*R) is t-distributed with p1 DOF. */ /*! \defgroup NIFTI1_INTENT_CODES \brief nifti1 intent codes, to describe intended meaning of dataset contents @{ */ #define NIFTI_INTENT_CORREL 2 /*! [C2, chap 28] Student t statistic (1 param): p1 = DOF. */ #define NIFTI_INTENT_TTEST 3 /*! [C2, chap 27] Fisher F statistic (2 params): p1 = numerator DOF, p2 = denominator DOF. */ #define NIFTI_INTENT_FTEST 4 /*! [C1, chap 13] Standard normal (0 params): Density = N(0,1). */ #define NIFTI_INTENT_ZSCORE 5 /*! [C1, chap 18] Chi-squared (1 param): p1 = DOF. Density(x) proportional to exp(-x/2) * x^(p1/2-1). */ #define NIFTI_INTENT_CHISQ 6 /*! [C2, chap 25] Beta distribution (2 params): p1=a, p2=b. Density(x) proportional to x^(a-1) * (1-x)^(b-1). */ #define NIFTI_INTENT_BETA 7 /*! [U, chap 3] Binomial distribution (2 params): p1 = number of trials, p2 = probability per trial. Prob(x) = (p1 choose x) * p2^x * (1-p2)^(p1-x), for x=0,1,...,p1. */ #define NIFTI_INTENT_BINOM 8 /*! [C1, chap 17] Gamma distribution (2 params): p1 = shape, p2 = scale. Density(x) proportional to x^(p1-1) * exp(-p2*x). */ #define NIFTI_INTENT_GAMMA 9 /*! [U, chap 4] Poisson distribution (1 param): p1 = mean. Prob(x) = exp(-p1) * p1^x / x! , for x=0,1,2,.... */ #define NIFTI_INTENT_POISSON 10 /*! [C1, chap 13] Normal distribution (2 params): p1 = mean, p2 = standard deviation. */ #define NIFTI_INTENT_NORMAL 11 /*! [C2, chap 30] Noncentral F statistic (3 params): p1 = numerator DOF, p2 = denominator DOF, p3 = numerator noncentrality parameter. */ #define NIFTI_INTENT_FTEST_NONC 12 /*! [C2, chap 29] Noncentral chi-squared statistic (2 params): p1 = DOF, p2 = noncentrality parameter. */ #define NIFTI_INTENT_CHISQ_NONC 13 /*! [C2, chap 23] Logistic distribution (2 params): p1 = location, p2 = scale. Density(x) proportional to sech^2((x-p1)/(2*p2)). */ #define NIFTI_INTENT_LOGISTIC 14 /*! [C2, chap 24] Laplace distribution (2 params): p1 = location, p2 = scale. Density(x) proportional to exp(-abs(x-p1)/p2). */ #define NIFTI_INTENT_LAPLACE 15 /*! [C2, chap 26] Uniform distribution: p1 = lower end, p2 = upper end. */ #define NIFTI_INTENT_UNIFORM 16 /*! [C2, chap 31] Noncentral t statistic (2 params): p1 = DOF, p2 = noncentrality parameter. */ #define NIFTI_INTENT_TTEST_NONC 17 /*! [C1, chap 21] Weibull distribution (3 params): p1 = location, p2 = scale, p3 = power. Density(x) proportional to ((x-p1)/p2)^(p3-1) * exp(-((x-p1)/p2)^p3) for x > p1. */ #define NIFTI_INTENT_WEIBULL 18 /*! [C1, chap 18] Chi distribution (1 param): p1 = DOF. Density(x) proportional to x^(p1-1) * exp(-x^2/2) for x > 0. p1 = 1 = 'half normal' distribution p1 = 2 = Rayleigh distribution p1 = 3 = Maxwell-Boltzmann distribution. */ #define NIFTI_INTENT_CHI 19 /*! [C1, chap 15] Inverse Gaussian (2 params): p1 = mu, p2 = lambda Density(x) proportional to exp(-p2*(x-p1)^2/(2*p1^2*x)) / x^3 for x > 0. */ #define NIFTI_INTENT_INVGAUSS 20 /*! [C2, chap 22] Extreme value type I (2 params): p1 = location, p2 = scale cdf(x) = exp(-exp(-(x-p1)/p2)). */ #define NIFTI_INTENT_EXTVAL 21 /*! Data is a 'p-value' (no params). */ #define NIFTI_INTENT_PVAL 22 /*! Data is ln(p-value) (no params). To be safe, a program should compute p = exp(-abs(this_value)). The nifti_stats.c library returns this_value as positive, so that this_value = -log(p). */ #define NIFTI_INTENT_LOGPVAL 23 /*! Data is log10(p-value) (no params). To be safe, a program should compute p = pow(10.,-abs(this_value)). The nifti_stats.c library returns this_value as positive, so that this_value = -log10(p). */ #define NIFTI_INTENT_LOG10PVAL 24 /*! Smallest intent_code that indicates a statistic. */ #define NIFTI_FIRST_STATCODE 2 /*! Largest intent_code that indicates a statistic. */ #define NIFTI_LAST_STATCODE 24 /*---------- these values for intent_code aren't for statistics ----------*/ /*! To signify that the value at each voxel is an estimate of some parameter, set intent_code = NIFTI_INTENT_ESTIMATE. The name of the parameter may be stored in intent_name. */ #define NIFTI_INTENT_ESTIMATE 1001 /*! To signify that the value at each voxel is an index into some set of labels, set intent_code = NIFTI_INTENT_LABEL. The filename with the labels may stored in aux_file. */ #define NIFTI_INTENT_LABEL 1002 /*! To signify that the value at each voxel is an index into the NeuroNames labels set, set intent_code = NIFTI_INTENT_NEURONAME. */ #define NIFTI_INTENT_NEURONAME 1003 /*! To store an M x N matrix at each voxel: - dataset must have a 5th dimension (dim[0]=5 and dim[5]>1) - intent_code must be NIFTI_INTENT_GENMATRIX - dim[5] must be M*N - intent_p1 must be M (in float format) - intent_p2 must be N (ditto) - the matrix values A[i][[j] are stored in row-order: - A[0][0] A[0][1] ... A[0][N-1] - A[1][0] A[1][1] ... A[1][N-1] - etc., until - A[M-1][0] A[M-1][1] ... A[M-1][N-1] */ #define NIFTI_INTENT_GENMATRIX 1004 /*! To store an NxN symmetric matrix at each voxel: - dataset must have a 5th dimension - intent_code must be NIFTI_INTENT_SYMMATRIX - dim[5] must be N*(N+1)/2 - intent_p1 must be N (in float format) - the matrix values A[i][[j] are stored in row-order: - A[0][0] - A[1][0] A[1][1] - A[2][0] A[2][1] A[2][2] - etc.: row-by-row */ #define NIFTI_INTENT_SYMMATRIX 1005 /*! To signify that the vector value at each voxel is to be taken as a displacement field or vector: - dataset must have a 5th dimension - intent_code must be NIFTI_INTENT_DISPVECT - dim[5] must be the dimensionality of the displacment vector (e.g., 3 for spatial displacement, 2 for in-plane) */ #define NIFTI_INTENT_DISPVECT 1006 /* specifically for displacements */ #define NIFTI_INTENT_VECTOR 1007 /* for any other type of vector */ /*! To signify that the vector value at each voxel is really a spatial coordinate (e.g., the vertices or nodes of a surface mesh): - dataset must have a 5th dimension - intent_code must be NIFTI_INTENT_POINTSET - dim[0] = 5 - dim[1] = number of points - dim[2] = dim[3] = dim[4] = 1 - dim[5] must be the dimensionality of space (e.g., 3 => 3D space). - intent_name may describe the object these points come from (e.g., "pial", "gray/white" , "EEG", "MEG"). */ #define NIFTI_INTENT_POINTSET 1008 /*! To signify that the vector value at each voxel is really a triple of indexes (e.g., forming a triangle) from a pointset dataset: - dataset must have a 5th dimension - intent_code must be NIFTI_INTENT_TRIANGLE - dim[0] = 5 - dim[1] = number of triangles - dim[2] = dim[3] = dim[4] = 1 - dim[5] = 3 - datatype should be an integer type (preferably DT_INT32) - the data values are indexes (0,1,...) into a pointset dataset. */ #define NIFTI_INTENT_TRIANGLE 1009 /*! To signify that the vector value at each voxel is a quaternion: - dataset must have a 5th dimension - intent_code must be NIFTI_INTENT_QUATERNION - dim[0] = 5 - dim[5] = 4 - datatype should be a floating point type */ #define NIFTI_INTENT_QUATERNION 1010 /*! Dimensionless value - no params - although, as in _ESTIMATE the name of the parameter may be stored in intent_name. */ #define NIFTI_INTENT_DIMLESS 1011 /*---------- these values apply to GIFTI datasets ----------*/ /*! To signify that the value at each location is from a time series. */ #define NIFTI_INTENT_TIME_SERIES 2001 /*! To signify that the value at each location is a node index, from a complete surface dataset. */ #define NIFTI_INTENT_NODE_INDEX 2002 /*! To signify that the vector value at each location is an RGB triplet, of whatever type. - dataset must have a 5th dimension - dim[0] = 5 - dim[1] = number of nodes - dim[2] = dim[3] = dim[4] = 1 - dim[5] = 3 */ #define NIFTI_INTENT_RGB_VECTOR 2003 /*! To signify that the vector value at each location is a 4 valued RGBA vector, of whatever type. - dataset must have a 5th dimension - dim[0] = 5 - dim[1] = number of nodes - dim[2] = dim[3] = dim[4] = 1 - dim[5] = 4 */ #define NIFTI_INTENT_RGBA_VECTOR 2004 /*! To signify that the value at each location is a shape value, such as the curvature. */ #define NIFTI_INTENT_SHAPE 2005 /* @} */ /*---------------------------------------------------------------------------*/ /* 3D IMAGE (VOLUME) ORIENTATION AND LOCATION IN SPACE: --------------------------------------------------- There are 3 different methods by which continuous coordinates can attached to voxels. The discussion below emphasizes 3D volumes, and the continuous coordinates are referred to as (x,y,z). The voxel index coordinates (i.e., the array indexes) are referred to as (i,j,k), with valid ranges: i = 0 .. dim[1]-1 j = 0 .. dim[2]-1 (if dim[0] >= 2) k = 0 .. dim[3]-1 (if dim[0] >= 3) The (x,y,z) coordinates refer to the CENTER of a voxel. In methods 2 and 3, the (x,y,z) axes refer to a subject-based coordinate system, with +x = Right +y = Anterior +z = Superior. This is a right-handed coordinate system. However, the exact direction these axes point with respect to the subject depends on qform_code (Method 2) and sform_code (Method 3). N.B.: The i index varies most rapidly, j index next, k index slowest. Thus, voxel (i,j,k) is stored starting at location (i + j*dim[1] + k*dim[1]*dim[2]) * (bitpix/8) into the dataset array. N.B.: The ANALYZE 7.5 coordinate system is +x = Left +y = Anterior +z = Superior which is a left-handed coordinate system. This backwardness is too difficult to tolerate, so this NIFTI-1 standard specifies the coordinate order which is most common in functional neuroimaging. N.B.: The 3 methods below all give the locations of the voxel centers in the (x,y,z) coordinate system. In many cases, programs will wish to display image data on some other grid. In such a case, the program will need to convert its desired (x,y,z) values into (i,j,k) values in order to extract (or interpolate) the image data. This operation would be done with the inverse transformation to those described below. N.B.: Method 2 uses a factor 'qfac' which is either -1 or 1; qfac is stored in the otherwise unused pixdim[0]. If pixdim[0]=0.0 (which should not occur), we take qfac=1. Of course, pixdim[0] is only used when reading a NIFTI-1 header, not when reading an ANALYZE 7.5 header. N.B.: The units of (x,y,z) can be specified using the xyzt_units field. METHOD 1 (the "old" way, used only when qform_code = 0): ------------------------------------------------------- The coordinate mapping from (i,j,k) to (x,y,z) is the ANALYZE 7.5 way. This is a simple scaling relationship: x = pixdim[1] * i y = pixdim[2] * j z = pixdim[3] * k No particular spatial orientation is attached to these (x,y,z) coordinates. (NIFTI-1 does not have the ANALYZE 7.5 orient field, which is not general and is often not set properly.) This method is not recommended, and is present mainly for compatibility with ANALYZE 7.5 files. METHOD 2 (used when qform_code > 0, which should be the "normal" case): --------------------------------------------------------------------- The (x,y,z) coordinates are given by the pixdim[] scales, a rotation matrix, and a shift. This method is intended to represent "scanner-anatomical" coordinates, which are often embedded in the image header (e.g., DICOM fields (0020,0032), (0020,0037), (0028,0030), and (0018,0050)), and represent the nominal orientation and location of the data. This method can also be used to represent "aligned" coordinates, which would typically result from some post-acquisition alignment of the volume to a standard orientation (e.g., the same subject on another day, or a rigid rotation to true anatomical orientation from the tilted position of the subject in the scanner). The formula for (x,y,z) in terms of header parameters and (i,j,k) is: [ x ] [ R11 R12 R13 ] [ pixdim[1] * i ] [ qoffset_x ] [ y ] = [ R21 R22 R23 ] [ pixdim[2] * j ] + [ qoffset_y ] [ z ] [ R31 R32 R33 ] [ qfac * pixdim[3] * k ] [ qoffset_z ] The qoffset_* shifts are in the NIFTI-1 header. Note that the center of the (i,j,k)=(0,0,0) voxel (first value in the dataset array) is just (x,y,z)=(qoffset_x,qoffset_y,qoffset_z). The rotation matrix R is calculated from the quatern_* parameters. This calculation is described below. The scaling factor qfac is either 1 or -1. The rotation matrix R defined by the quaternion parameters is "proper" (has determinant 1). This may not fit the needs of the data; for example, if the image grid is i increases from Left-to-Right j increases from Anterior-to-Posterior k increases from Inferior-to-Superior Then (i,j,k) is a left-handed triple. In this example, if qfac=1, the R matrix would have to be [ 1 0 0 ] [ 0 -1 0 ] which is "improper" (determinant = -1). [ 0 0 1 ] If we set qfac=-1, then the R matrix would be [ 1 0 0 ] [ 0 -1 0 ] which is proper. [ 0 0 -1 ] This R matrix is represented by quaternion [a,b,c,d] = [0,1,0,0] (which encodes a 180 degree rotation about the x-axis). METHOD 3 (used when sform_code > 0): ----------------------------------- The (x,y,z) coordinates are given by a general affine transformation of the (i,j,k) indexes: x = srow_x[0] * i + srow_x[1] * j + srow_x[2] * k + srow_x[3] y = srow_y[0] * i + srow_y[1] * j + srow_y[2] * k + srow_y[3] z = srow_z[0] * i + srow_z[1] * j + srow_z[2] * k + srow_z[3] The srow_* vectors are in the NIFTI_1 header. Note that no use is made of pixdim[] in this method. WHY 3 METHODS? -------------- Method 1 is provided only for backwards compatibility. The intention is that Method 2 (qform_code > 0) represents the nominal voxel locations as reported by the scanner, or as rotated to some fiducial orientation and location. Method 3, if present (sform_code > 0), is to be used to give the location of the voxels in some standard space. The sform_code indicates which standard space is present. Both methods 2 and 3 can be present, and be useful in different contexts (method 2 for displaying the data on its original grid; method 3 for displaying it on a standard grid). In this scheme, a dataset would originally be set up so that the Method 2 coordinates represent what the scanner reported. Later, a registration to some standard space can be computed and inserted in the header. Image display software can use either transform, depending on its purposes and needs. In Method 2, the origin of coordinates would generally be whatever the scanner origin is; for example, in MRI, (0,0,0) is the center of the gradient coil. In Method 3, the origin of coordinates would depend on the value of sform_code; for example, for the Talairach coordinate system, (0,0,0) corresponds to the Anterior Commissure. QUATERNION REPRESENTATION OF ROTATION MATRIX (METHOD 2) ------------------------------------------------------- The orientation of the (x,y,z) axes relative to the (i,j,k) axes in 3D space is specified using a unit quaternion [a,b,c,d], where a*a+b*b+c*c+d*d=1. The (b,c,d) values are all that is needed, since we require that a = sqrt(1.0-(b*b+c*c+d*d)) be nonnegative. The (b,c,d) values are stored in the (quatern_b,quatern_c,quatern_d) fields. The quaternion representation is chosen for its compactness in representing rotations. The (proper) 3x3 rotation matrix that corresponds to [a,b,c,d] is [ a*a+b*b-c*c-d*d 2*b*c-2*a*d 2*b*d+2*a*c ] R = [ 2*b*c+2*a*d a*a+c*c-b*b-d*d 2*c*d-2*a*b ] [ 2*b*d-2*a*c 2*c*d+2*a*b a*a+d*d-c*c-b*b ] [ R11 R12 R13 ] = [ R21 R22 R23 ] [ R31 R32 R33 ] If (p,q,r) is a unit 3-vector, then rotation of angle h about that direction is represented by the quaternion [a,b,c,d] = [cos(h/2), p*sin(h/2), q*sin(h/2), r*sin(h/2)]. Requiring a >= 0 is equivalent to requiring -Pi <= h <= Pi. (Note that [-a,-b,-c,-d] represents the same rotation as [a,b,c,d]; there are 2 quaternions that can be used to represent a given rotation matrix R.) To rotate a 3-vector (x,y,z) using quaternions, we compute the quaternion product [0,x',y',z'] = [a,b,c,d] * [0,x,y,z] * [a,-b,-c,-d] which is equivalent to the matrix-vector multiply [ x' ] [ x ] [ y' ] = R [ y ] (equivalence depends on a*a+b*b+c*c+d*d=1) [ z' ] [ z ] Multiplication of 2 quaternions is defined by the following: [a,b,c,d] = a*1 + b*I + c*J + d*K where I*I = J*J = K*K = -1 (I,J,K are square roots of -1) I*J = K J*K = I K*I = J J*I = -K K*J = -I I*K = -J (not commutative!) For example [a,b,0,0] * [0,0,0,1] = [0,0,-b,a] since this expands to (a+b*I)*(K) = (a*K+b*I*K) = (a*K-b*J). The above formula shows how to go from quaternion (b,c,d) to rotation matrix and direction cosines. Conversely, given R, we can compute the fields for the NIFTI-1 header by a = 0.5 * sqrt(1+R11+R22+R33) (not stored) b = 0.25 * (R32-R23) / a => quatern_b c = 0.25 * (R13-R31) / a => quatern_c d = 0.25 * (R21-R12) / a => quatern_d If a=0 (a 180 degree rotation), alternative formulas are needed. See the nifti1_io.c function mat44_to_quatern() for an implementation of the various cases in converting R to [a,b,c,d]. Note that R-transpose (= R-inverse) would lead to the quaternion [a,-b,-c,-d]. The choice to specify the qoffset_x (etc.) values in the final coordinate system is partly to make it easy to convert DICOM images to this format. The DICOM attribute "Image Position (Patient)" (0020,0032) stores the (Xd,Yd,Zd) coordinates of the center of the first voxel. Here, (Xd,Yd,Zd) refer to DICOM coordinates, and Xd=-x, Yd=-y, Zd=z, where (x,y,z) refers to the NIFTI coordinate system discussed above. (i.e., DICOM +Xd is Left, +Yd is Posterior, +Zd is Superior, whereas +x is Right, +y is Anterior , +z is Superior. ) Thus, if the (0020,0032) DICOM attribute is extracted into (px,py,pz), then qoffset_x = -px qoffset_y = -py qoffset_z = pz is a reasonable setting when qform_code=NIFTI_XFORM_SCANNER_ANAT. That is, DICOM's coordinate system is 180 degrees rotated about the z-axis from the neuroscience/NIFTI coordinate system. To transform between DICOM and NIFTI, you just have to negate the x- and y-coordinates. The DICOM attribute (0020,0037) "Image Orientation (Patient)" gives the orientation of the x- and y-axes of the image data in terms of 2 3-vectors. The first vector is a unit vector along the x-axis, and the second is along the y-axis. If the (0020,0037) attribute is extracted into the value (xa,xb,xc,ya,yb,yc), then the first two columns of the R matrix would be [ -xa -ya ] [ -xb -yb ] [ xc yc ] The negations are because DICOM's x- and y-axes are reversed relative to NIFTI's. The third column of the R matrix gives the direction of displacement (relative to the subject) along the slice-wise direction. This orientation is not encoded in the DICOM standard in a simple way; DICOM is mostly concerned with 2D images. The third column of R will be either the cross-product of the first 2 columns or its negative. It is possible to infer the sign of the 3rd column by examining the coordinates in DICOM attribute (0020,0032) "Image Position (Patient)" for successive slices. However, this method occasionally fails for reasons that I (RW Cox) do not understand. -----------------------------------------------------------------------------*/ /* [qs]form_code value: */ /* x,y,z coordinate system refers to: */ /*-----------------------*/ /*---------------------------------------*/ /*! \defgroup NIFTI1_XFORM_CODES \brief nifti1 xform codes to describe the "standard" coordinate system @{ */ /*! Arbitrary coordinates (Method 1). */ #define NIFTI_XFORM_UNKNOWN 0 /*! Scanner-based anatomical coordinates */ #define NIFTI_XFORM_SCANNER_ANAT 1 /*! Coordinates aligned to another file's, or to anatomical "truth". */ #define NIFTI_XFORM_ALIGNED_ANAT 2 /*! Coordinates aligned to Talairach- Tournoux Atlas; (0,0,0)=AC, etc. */ #define NIFTI_XFORM_TALAIRACH 3 /*! MNI 152 normalized coordinates. */ #define NIFTI_XFORM_MNI_152 4 /* @} */ /*---------------------------------------------------------------------------*/ /* UNITS OF SPATIAL AND TEMPORAL DIMENSIONS: ---------------------------------------- The codes below can be used in xyzt_units to indicate the units of pixdim. As noted earlier, dimensions 1,2,3 are for x,y,z; dimension 4 is for time (t). - If dim[4]=1 or dim[0] < 4, there is no time axis. - A single time series (no space) would be specified with - dim[0] = 4 (for scalar data) or dim[0] = 5 (for vector data) - dim[1] = dim[2] = dim[3] = 1 - dim[4] = number of time points - pixdim[4] = time step - xyzt_units indicates units of pixdim[4] - dim[5] = number of values stored at each time point Bits 0..2 of xyzt_units specify the units of pixdim[1..3] (e.g., spatial units are values 1..7). Bits 3..5 of xyzt_units specify the units of pixdim[4] (e.g., temporal units are multiples of 8). This compression of 2 distinct concepts into 1 byte is due to the limited space available in the 348 byte ANALYZE 7.5 header. The macros XYZT_TO_SPACE and XYZT_TO_TIME can be used to mask off the undesired bits from the xyzt_units fields, leaving "pure" space and time codes. Inversely, the macro SPACE_TIME_TO_XYZT can be used to assemble a space code (0,1,2,...,7) with a time code (0,8,16,32,...,56) into the combined value for xyzt_units. Note that codes are provided to indicate the "time" axis units are actually frequency in Hertz (_HZ), in part-per-million (_PPM) or in radians-per-second (_RADS). The toffset field can be used to indicate a nonzero start point for the time axis. That is, time point #m is at t=toffset+m*pixdim[4] for m=0..dim[4]-1. -----------------------------------------------------------------------------*/ /*! \defgroup NIFTI1_UNITS \brief nifti1 units codes to describe the unit of measurement for each dimension of the dataset @{ */ /*! NIFTI code for unspecified units. */ #define NIFTI_UNITS_UNKNOWN 0 /** Space codes are multiples of 1. **/ /*! NIFTI code for meters. */ #define NIFTI_UNITS_METER 1 /*! NIFTI code for millimeters. */ #define NIFTI_UNITS_MM 2 /*! NIFTI code for micrometers. */ #define NIFTI_UNITS_MICRON 3 /** Time codes are multiples of 8. **/ /*! NIFTI code for seconds. */ #define NIFTI_UNITS_SEC 8 /*! NIFTI code for milliseconds. */ #define NIFTI_UNITS_MSEC 16 /*! NIFTI code for microseconds. */ #define NIFTI_UNITS_USEC 24 /*** These units are for spectral data: ***/ /*! NIFTI code for Hertz. */ #define NIFTI_UNITS_HZ 32 /*! NIFTI code for ppm. */ #define NIFTI_UNITS_PPM 40 /*! NIFTI code for radians per second. */ #define NIFTI_UNITS_RADS 48 /* @} */ #undef XYZT_TO_SPACE #undef XYZT_TO_TIME #define XYZT_TO_SPACE(xyzt) ( (xyzt) & 0x07 ) #define XYZT_TO_TIME(xyzt) ( (xyzt) & 0x38 ) #undef SPACE_TIME_TO_XYZT #define SPACE_TIME_TO_XYZT(ss,tt) ( (((char)(ss)) & 0x07) \ | (((char)(tt)) & 0x38) ) /*---------------------------------------------------------------------------*/ /* MRI-SPECIFIC SPATIAL AND TEMPORAL INFORMATION: --------------------------------------------- A few fields are provided to store some extra information that is sometimes important when storing the image data from an FMRI time series experiment. (After processing such data into statistical images, these fields are not likely to be useful.) { freq_dim } = These fields encode which spatial dimension (1,2, or 3) { phase_dim } = corresponds to which acquisition dimension for MRI data. { slice_dim } = Examples: Rectangular scan multi-slice EPI: freq_dim = 1 phase_dim = 2 slice_dim = 3 (or some permutation) Spiral scan multi-slice EPI: freq_dim = phase_dim = 0 slice_dim = 3 since the concepts of frequency- and phase-encoding directions don't apply to spiral scan slice_duration = If this is positive, AND if slice_dim is nonzero, indicates the amount of time used to acquire 1 slice. slice_duration*dim[slice_dim] can be less than pixdim[4] with a clustered acquisition method, for example. slice_code = If this is nonzero, AND if slice_dim is nonzero, AND if slice_duration is positive, indicates the timing pattern of the slice acquisition. The following codes are defined: NIFTI_SLICE_SEQ_INC == sequential increasing NIFTI_SLICE_SEQ_DEC == sequential decreasing NIFTI_SLICE_ALT_INC == alternating increasing NIFTI_SLICE_ALT_DEC == alternating decreasing NIFTI_SLICE_ALT_INC2 == alternating increasing #2 NIFTI_SLICE_ALT_DEC2 == alternating decreasing #2 { slice_start } = Indicates the start and end of the slice acquisition { slice_end } = pattern, when slice_code is nonzero. These values are present to allow for the possible addition of "padded" slices at either end of the volume, which don't fit into the slice timing pattern. If there are no padding slices, then slice_start=0 and slice_end=dim[slice_dim]-1 are the correct values. For these values to be meaningful, slice_start must be non-negative and slice_end must be greater than slice_start. Otherwise, they should be ignored. The following table indicates the slice timing pattern, relative to time=0 for the first slice acquired, for some sample cases. Here, dim[slice_dim]=7 (there are 7 slices, labeled 0..6), slice_duration=0.1, and slice_start=1, slice_end=5 (1 padded slice on each end). slice index SEQ_INC SEQ_DEC ALT_INC ALT_DEC ALT_INC2 ALT_DEC2 6 : n/a n/a n/a n/a n/a n/a n/a = not applicable 5 : 0.4 0.0 0.2 0.0 0.4 0.2 (slice time offset 4 : 0.3 0.1 0.4 0.3 0.1 0.0 doesn't apply to 3 : 0.2 0.2 0.1 0.1 0.3 0.3 slices outside 2 : 0.1 0.3 0.3 0.4 0.0 0.1 the range 1 : 0.0 0.4 0.0 0.2 0.2 0.4 slice_start .. 0 : n/a n/a n/a n/a n/a n/a slice_end) The SEQ slice_codes are sequential ordering (uncommon but not unknown), either increasing in slice number or decreasing (INC or DEC), as illustrated above. The ALT slice codes are alternating ordering. The 'standard' way for these to operate (without the '2' on the end) is for the slice timing to start at the edge of the slice_start .. slice_end group (at slice_start for INC and at slice_end for DEC). For the 'ALT_*2' slice_codes, the slice timing instead starts at the first slice in from the edge (at slice_start+1 for INC2 and at slice_end-1 for DEC2). This latter acquisition scheme is found on some Siemens scanners. The fields freq_dim, phase_dim, slice_dim are all squished into the single byte field dim_info (2 bits each, since the values for each field are limited to the range 0..3). This unpleasantness is due to lack of space in the 348 byte allowance. The macros DIM_INFO_TO_FREQ_DIM, DIM_INFO_TO_PHASE_DIM, and DIM_INFO_TO_SLICE_DIM can be used to extract these values from the dim_info byte. The macro FPS_INTO_DIM_INFO can be used to put these 3 values into the dim_info byte. -----------------------------------------------------------------------------*/ #undef DIM_INFO_TO_FREQ_DIM #undef DIM_INFO_TO_PHASE_DIM #undef DIM_INFO_TO_SLICE_DIM #define DIM_INFO_TO_FREQ_DIM(di) ( ((di) ) & 0x03 ) #define DIM_INFO_TO_PHASE_DIM(di) ( ((di) >> 2) & 0x03 ) #define DIM_INFO_TO_SLICE_DIM(di) ( ((di) >> 4) & 0x03 ) #undef FPS_INTO_DIM_INFO #define FPS_INTO_DIM_INFO(fd,pd,sd) ( ( ( ((char)(fd)) & 0x03) ) | \ ( ( ((char)(pd)) & 0x03) << 2 ) | \ ( ( ((char)(sd)) & 0x03) << 4 ) ) /*! \defgroup NIFTI1_SLICE_ORDER \brief nifti1 slice order codes, describing the acquisition order of the slices @{ */ #define NIFTI_SLICE_UNKNOWN 0 #define NIFTI_SLICE_SEQ_INC 1 #define NIFTI_SLICE_SEQ_DEC 2 #define NIFTI_SLICE_ALT_INC 3 #define NIFTI_SLICE_ALT_DEC 4 #define NIFTI_SLICE_ALT_INC2 5 /* 05 May 2005: RWCox */ #define NIFTI_SLICE_ALT_DEC2 6 /* 05 May 2005: RWCox */ /* @} */ /*---------------------------------------------------------------------------*/ /* UNUSED FIELDS: ------------- Some of the ANALYZE 7.5 fields marked as ++UNUSED++ may need to be set to particular values for compatibility with other programs. The issue of interoperability of ANALYZE 7.5 files is a murky one -- not all programs require exactly the same set of fields. (Unobscuring this murkiness is a principal motivation behind NIFTI-1.) Some of the fields that may need to be set for other (non-NIFTI aware) software to be happy are: extents dbh.h says this should be 16384 regular dbh.h says this should be the character 'r' glmin, } dbh.h says these values should be the min and max voxel glmax } values for the entire dataset It is best to initialize ALL fields in the NIFTI-1 header to 0 (e.g., with calloc()), then fill in what is needed. -----------------------------------------------------------------------------*/ /*---------------------------------------------------------------------------*/ /* MISCELLANEOUS C MACROS -----------------------------------------------------------------------------*/ /*.................*/ /*! Given a nifti_1_header struct, check if it has a good magic number. Returns NIFTI version number (1..9) if magic is good, 0 if it is not. */ #define NIFTI_VERSION(h) \ ( ( (h).magic[0]=='n' && (h).magic[3]=='\0' && \ ( (h).magic[1]=='i' || (h).magic[1]=='+' ) && \ ( (h).magic[2]>='1' && (h).magic[2]<='9' ) ) \ ? (h).magic[2]-'0' : 0 ) /*.................*/ /*! Check if a nifti_1_header struct says if the data is stored in the same file or in a separate file. Returns 1 if the data is in the same file as the header, 0 if it is not. */ #define NIFTI_ONEFILE(h) ( (h).magic[1] == '+' ) /*.................*/ /*! Check if a nifti_1_header struct needs to be byte swapped. Returns 1 if it needs to be swapped, 0 if it does not. */ #define NIFTI_NEEDS_SWAP(h) ( (h).dim[0] < 0 || (h).dim[0] > 7 ) /*.................*/ /*! Check if a nifti_1_header struct contains a 5th (vector) dimension. Returns size of 5th dimension if > 1, returns 0 otherwise. */ #define NIFTI_5TH_DIM(h) ( ((h).dim[0]>4 && (h).dim[5]>1) ? (h).dim[5] : 0 ) /*****************************************************************************/ /*=================*/ #ifdef __cplusplus } #endif /*=================*/ #endif /* _NIFTI_HEADER_ */ nipy-nibabel-d3c26be/doc/source/gettingstarted.rst000066400000000000000000000066411177264777700224440ustar00rootroot00000000000000.. -*- mode: rst -*- .. ex: set sts=4 ts=4 sw=4 et tw=79: ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### # # See COPYING file distributed along with the NiBabel package for the # copyright and license terms. # ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### .. _gettingstarted: *************** Getting Started *************** NiBabel supports an ever growing collection of neuroimaging file formats. Every file format format has its own features and pecularities that need to be taken care of to get the most out of it. To this end, NiBabel offers both high-level format-independent access to neuroimages, as well as an API with various levels of format-specific access to all available information in a particular file format. The following demonstrations show some of NiBabel's capabilities and familiarize oneself with the basic design of the API. When loading an image, NiBabel aims to figure out the image format from the filename. An image in a known format can easily be loaded by simply passing its name to the ``load`` function. First let's get the nibabel example data directory: >>> import os >>> from nibabel.testing import data_path Now we can load an image: >>> import nibabel as nib >>> img = nib.load(os.path.join(data_path, 'example4d.nii.gz')) A NiBabel image knows about its shape: >>> img.shape (128, 96, 24, 2) and its data type: >>> img.get_data_dtype() dtype('int16') and an affine transformation that determines the world-coordinates of the image elements. >>> img.get_affine().shape (4, 4) This information is available without the need to load anything of the main image data into the memory. Of course there is also access to the image data as a NumPy_ array >>> data = img.get_data() >>> data.shape (128, 96, 24, 2) >>> type(data) The complete information embedded in an image header is available via a format-specific header object. >>> hdr = img.get_header() In case of this NIfTI_ file it allows accessing all NIfTI-specific information, e.g. >>> hdr.get_xyzt_units() ('mm', 'sec') Corresponding "setter" methods allow modifying a header, while ensuring its compliance with the file format specifications. In some situations even more flexibility is required and for ultimate experts NiBabel also offers access to the raw header information >>> raw = hdr.structarr >>> raw['xyzt_units'] array(10, dtype=uint8) This lowest level of the API is only for people that know what they are doing and comes without any safety-net. Creating a new image in some file format is also easy. At a minimum it only needs some image data and an image coordinate transformation. >>> import numpy as np >>> data = np.ones((32, 32, 15, 100), dtype=np.int16) >>> img = nib.Nifti1Image(data, np.eye(4)) >>> img.get_data_dtype() dtype('int16') >>> img.get_header().get_xyzt_units() ('unknown', 'unknown') In this case, identity is used as the affine transformation. The image header is initialized from the provided data array (i.e. shape, dtype) and all other values are set to resonable defaults. Saving this new image to a file is trivial. We won't do it here, but it looks like:: img.to_filename(os.path.join('build','test4d.nii.gz')) This short introduction only gave a quick overview of NiBabel's capabilities. Please have a look at the :ref:`api` for more details about supported file formats and their features. .. include:: links_names.txt nipy-nibabel-d3c26be/doc/source/gitwash/000077500000000000000000000000001177264777700203215ustar00rootroot00000000000000nipy-nibabel-d3c26be/doc/source/gitwash/branch_dropdown.png000066400000000000000000000376671177264777700242230ustar00rootroot00000000000000PNG  IHDR7'piCCPICC ProfilexTkA6n"Zkx"IYhE6bk Ed3In6&*Ezd/JZE(ޫ(b-nL~7}ov r4 Ril|Bj A4%UN$As{z[V{wwҶ@G*q Y<ߡ)t9Nyx+=Y"|@5-MS%@H8qR>׋infObN~N>! ?F?aĆ=5`5_M'Tq. VJp8dasZHOLn}&wVQygE0  HPEaP@<14r?#{2u$jtbDA{6=Q<("qCA*Oy\V;噹sM^|vWGyz?W15s-_̗)UKuZ17ߟl;=..s7VgjHUO^gc)1&v!.K `m)m$``/]?[xF QT*d4o(/lșmSqens}nk~8X<R5 vz)Ӗ9R,bRPCRR%eKUbvؙn9BħJeRR~NցoEx pHYs   IDATxEi9'IdADO' z9ܙ!D# I0P3Kf[l M;3vOwW~aHIvio.UTCo+"dEcml"E?%E@PE@ʄx(182:"(@!G .eSE ĬLHP$e͢(@!G fe(bŊrHy"("2={[WE@(ĬLjEcRȡ)"8 :`ӣ"( s&§犀"( 2qt^"( AڸqdggKNN.A(@!2!Pݎsʮ]L2Rre)RTnI4Z"(B &e*G8%7"P+$S-CPD .ecR&x$,;cOMKPE bd(ݱc(QS%E@P4D feIL\i(@#W+?% ,6mʘ^/_~x-(G nLKsQ$ ,FI˖-3&<Ɨ.W\i畊+*{viM(@)<I9%ڼuVٶml߽=E8S6E@[$ X\H2J,)[lї:3uhE xU'@+t;d.-[P@̞S$ #KVKW.L Wӵ5"(B fτ Yɕ\}|]xŇV"2I&+۰iԩl2^vav#d#N^(UVɺuZjRFjNzh/;%dee%͠D۷oKsznO9L /;1Xxnb +~z!Mr墲2$*q&[nիWr䭷*gyf蚞Ew}.;lР{RfiÆ r=?OUL:Ejת9pnw`~{Nxd~ew}jd=䓂p;t sLTՍ~xRby:uEʒ%K^T)]virAw/`>Bzٽ{} ?mڴv wyGڨ2I7བɁv .H6m*gϖ^{Mn69m۶ZMO$^~ >\;8.\P|Myg妛nҥKh{K/&M~p޽U,OYێ*U]_msc/g cǎ!#_}U+vȚkGJB8q؇n"sNQ:t(Txo\xRlYK/$x G}={R;wJCkB <,N(FZ3g ^K|VHq0y.ȑ#_ꫯUW]%͚5#8B "X͛7{W~+tbLÆ m9Xb6mbh{/|r'_Wڵk@c;~wߑ[ ˱W^ ޼y }?|p\ƍg:BKWU6? Huֶ<'AK.:/+sD](@/ݏ.Æ G$ba/_܎-ZȔ)S/~ 7ZƳ|;G+0ygołڰWζV=_Te2.b v BGG3y?;(y~| k֬}֬Y{=}t s \rp=a0.?DG)sذa?[h b*4ƀ9ꨣd` /1O>9JKٖMP:i$lZL6ncYNaѢE¡켤Gx@Xx*Z11]NW\!u-( 0

    "9F+<<_XG'KZog5;R+ٚcsN;Iǘ&-a0ȏgt!뮻jSc1 oRqpFgeG_EsN`KS'9XtoBcb`mϋ;rI'> N P" Lh}acgkSh7l0p<2s]G#yY.| w϶?cJD;Q&<xx2ž6 HyCNPsqJx@y7"K^ Gye=V0 uȥ "rP Xoz#er M^~ߴ {8|Y=A}= sG:9o1@9Ƴ+7^xu]/WopCymLgr1ec(ǟ~ɮ"v>j(hYb(>euͷS47cB.$9e8 -,,9gyBX,pĈ@(Q&eYgMs p2eO Q\n1^_>d +3ʧ?Ƴw|;1Y!ƒwj<V1~Q<'ƌÈ3V["+ bVp&<bAXXj(E`0)d3AzuG C(zZLb9(^k& BVĬ/bC!# sw;PXTXX=1QZx6 a Cµ aG{L)G @p>u1YBxxڽցB(EP Yy6k*+lD7 4ÍX>lx($r%/l)Bsm(x1&! Z#ؿ:E;?ZAhUB[b` ?ﴉX4&0?f lIt :v屰...{X( ڋB[<WQ(XgD!xq便m\l%a /Ed ;ʉ0uxN9~Tv)%m=;e&l%&O:b JH ~'ZA?>z|ǭ (o.x1^ 2q -Ld){CD;Ὗ F=?y.mߏ;'r.ZY픉kc4~‘ 7ڽ(lu(^3pD)3gA ")aq??H(AGݥK#8S$o[~gbx^#O˛YE  \M8-OuޙۍeNCi =E@P ŢHh sYE dS4WO8c&n(+^YP3$ԕĪP[P@Lh&AI!PҀdCA#,e",V WSP2I*@e2q.OF~E@P1+<]qDIIPE 5Y$] $a-_P!vɃBKVE@+LSE@!az("WR&0^k늀">q)d6)E@PQ&[^J"(@ʄ0$LOPkE@P2 ]͕i=UE $4\RRE@HORFU̙3Q:fZjsZM(@(p0q.Bĉ A+ "Hea.'s>Ϝ֖zRF\ymh P )Lמ ڒ> 'M)LThI0 TS ~dٲeI`WٹsgvMM, ޴i#9RnuP\GrrrK<t:/毰ԟ2]|G2d|ouѣwߕ\~m"&3f|3DL3m4KbŊ6 Cx@ʖ-1߁܈ͷȣ>j7N|M)"'tL0~*.k狣ϸ׼ dʔ)&|ʹN:裥٭!-^,gϖݻ˜9sU˖/1iУG4_*]wK{4NG1߁/{nr*/tmOڵe%ˌ-ZhU ɿp"yᇥ|+tӦMK.R%K&!oꫯ ^|<q믥wض}|7ܥ=2S$>AygeRn]믗^{MXȱkfثL ܬ^5^A!x?5sJ#FHfͤtҲ]ZL\8.ާl^'#G/8?vfR(KL' ,*UHdk6/K.@|ҨqcOQ&U2+r,{l߶]8it9KR."q֭Qvl&cƎ=T21xL Odƍ%C5;%9[o2fs 5a0`<H>c)W\pҧO \yrmmV{VVL2RjU!1eԯ__nQ4PnlXLrXXSXi{YP_XS3FYѶm[˃߰a﷗]v^޿4(X˧|y?kS(Ν:ncpR$kc93beWQ& .wBA?o-x!%J&?V3C t옱f[f7c ܢxa^¥\rԠ`;eT;w7cRRVm_|w4*U,mBg\iƌ(p\pT6iFFQZR%Rv-kn}No/yP$M~4-[ӌт,;̸XmfO27}[8-ttR5҇(B͟7O~|~+fq/;#ϟo"+"a&B=΄XyymƏ/O= vw /o 7 dy(3<ӆ 9}";#"qGh1y;/%8CkrMʲ crs$EKL?ۍC[ O?]N0b c"*#QNc~fԑx{Xx{ {93{3{UH8-sڵ/o 7vt5kJ+Y,ܽ>n6J%#ع&mH KV^-r@:Frmٱ2F:͆`$k9oo#G`G3,P&ccN8a PK䷡&?slF܄CI._]KeBypDXc"KCuGpф#p8G*U moL>J3%I=ocIDATX9-wqͱpp^阏p"x&4 Q&oЮGyTnN?ZL &%̬Y/ #+y;/XsgY(͛['aF(!4ŏ,i GG9qП,uD>ƆnǂI~m͢ʯf+}Y5廴(+'%Jڹqƣui7DE̘ܽ> !7:(;ǜ ![j5kAаaCۇ^}}\g/c[ل]^\]ys4 ?c C}wǔQ&`'㈉o0eJw%  AUQ>>8/`fnPHe|!(^/؆X+bC\sUB-$Gi/õϛ6 :ƬC &K;aܲX-j&kըi ,\,L`/X; F)ϦXe5 X5CPV4R^Ь_^s%=WHe";qk,.pCA!nx줴R'G8(bHe`-X;ڍQڦMkU[xKxJX=Wx)G>,Oa1OM11Ka,᥏7wC@ Tgs8K(#K[+ׄth9\΍p@@ LW26[ݽleO2̋q`LK/ԄP Ʋs:$B)Y1{cBxn|1G6[TbRы/h{XD{1yvn9D!-!^²@aI:x3 " %E) X,ѡCeya1`𜼫E 2Y|LBM'BP/W]iP[m#dwѷ,dJռh4&JB" ,dBPhtd?~ "cxMX~#GV"(/}^,D(Oe[\)p#(?7K_12B<%ry? iiR7k"g{)sy/DJnuQ޹P^,,yR3!%lx#@|ax83ibB1NLHPho! pD -rÕ R3 bR( ‚VJ,eEjm{X:)LrWyGA@mO"2Ŀ-zv0#0nfM'sݲc C+@"t>\ g>8E|ʳ@x1d"%%E@P W&vgÛU?攬9PC>~lKXrE@D eLܜ`0ztjQY-eJKבWX!7l>Gז.~PVdo.ij>ZT|gfE=][v%d)oD"ҾIA2m&8rt_%D19k-bOVMҺay߫<>bIx8CI2a|>m1ewm]E.^/!VhnRe~qRSJ:emY?(5 ~ώZ":T_))"+i'16%sdT˷}oϕV_T^b>(#sn_Ⱥ-;euҠF?jZS#t[/+(P>}59}U5i|;glپ;vֺ߸C_nfo)ύ\lQT15F@iӻ_+KS߮wXLPsAKv˲5$g95vȲ[m{C.ꕲdњuOPH;ĵcjˑk0}4WN֣jyTaE^W+e֣Ueyl"Y*su{@FKKm#`:1}6R{_W"h]{m\T*-!233+*Wח*QT~0&ay;_>lTԭRJf-߫8Vzd=HuX#\6(@XV/=|n2$DUPoѠLAV/ePT,%Kx27c 4 s*ұy%pcLNʕޛ7J{o)*+V.e-Wfowt#jHrY7˄Gݐ0U-HuoE@P;AISMdž~[/o{]A %%sCdY% uK8>R,>|2m4+Ԃ3g|=cܹsn$׿T~TXQn>''G;+L/j_P Q{+? &iFV^N=APxt%|С2sL^P?s2"űT}>xqKLo7X;'|ڵK7n,SL Dwmn0|Pϟ/ӧO5ju]g|r 'Xo&MX˞˖-<?!UW]%>޽[(W+]t0yfڵ 6L*UڻARļԨQ#yWyhhBB 8PUۻh/M 6E7Qz1h֬Y`y,6OK(!}/ԩuY6-B}Q~~,<!ʈijǢEA+(ȔV&u֥}J@@2ʮ\~J*UNM2˒%Kc A^f۵kN)2)S̛7Oz衰|\xA 䡠z ;V.+_]{!>'(VZ.תU A2zx,MbMGX#Zyx]%T|8ʇzAދ;B$(7gʏDx}USZDb^+Baopks׽GC=Z:}ժUvڲ`w* a,k/BX>=)~G9#w^2wy ]?ކr6mjP<ՆN|+++zjSNL($}䊉5chE*#ZիW;mpT1exoşJ+@B@M0NFGu<ʆ֯_oqI>}֭_g=nIPE)qR|y;ҦM C?O?ٹ* j_PA#(M翼,&Md%:bQP?4юy-Ëc:3^Wpb=z#FE,UuYN=T KI{feur)0Q}儢ݻ XrT/:̩ 3<3l\dmps<({,bzw#}Am"֡C2Hm']T"\AX9F˖-CϠWOky-O>z8SzGJ@aA`ĉvN8tBT􌇘#aC7/)VԬwj=9&^~ suL[(@!$D9RE Pev] +"z2I>QE@H;RzuJ"(@*N~_{5c:uo³Y"/3^~cv3pyK~l^Xxّ - !CwY7ߴoE owU֮]kʇ"7=gƌ6lX9zhzmӦMv;q'KhvȧU}rԩ[ZK Cmʕ+oav8Xڿ[4o}JoܩsD kРAv71/Gmp;$nΧ(PX6QP!oc1;+W.|xGn:Yξ XӢ8_l:I{#L Ldɒ69O*]J*WKAuMtk[!Xp\wuv_5ppJܕv#@UG)(/epn"H[ejd<O<Ɵ}1cX=& ^ ^"ć@ʆkdh.ڶBAC.X3(z&dE@P. N4Z"(* tm"(F@IE@@Td`kE@H4L(@"$;](@PehD= 1.7 you can ensure that the link is correctly set by using the ``--set-upstream`` option:: git push --set-upstream origin my-new-feature From now on git will know that ``my-new-feature`` is related to the ``my-new-feature`` branch in the github repo. .. _edit-flow: The editing workflow ==================== Overview -------- :: # hack hack git add my_new_file git commit -am 'NF - some message' git push In more detail -------------- #. Make some changes #. See which files have changed with ``git status`` (see `git status`_). You'll see a listing like this one:: # On branch ny-new-feature # Changed but not updated: # (use "git add ..." to update what will be committed) # (use "git checkout -- ..." to discard changes in working directory) # # modified: README # # Untracked files: # (use "git add ..." to include in what will be committed) # # INSTALL no changes added to commit (use "git add" and/or "git commit -a") #. Check what the actual changes are with ``git diff`` (`git diff`_). #. Add any new files to version control ``git add new_file_name`` (see `git add`_). #. To commit all modified files into the local copy of your repo,, do ``git commit -am 'A commit message'``. Note the ``-am`` options to ``commit``. The ``m`` flag just signals that you're going to type a message on the command line. The ``a`` flag |emdash| you can just take on faith |emdash| or see `why the -a flag?`_ |emdash| and the helpful use-case description in the `tangled working copy problem`_. The `git commit`_ manual page might also be useful. #. To push the changes up to your forked repo on github, do a ``git push`` (see `git push`_). Ask for your changes to be reviewed or merged ============================================= When you are ready to ask for someone to review your code and consider a merge: #. Go to the URL of your forked repo, say ``http://github.com/your-user-name/nibabel``. #. Use the 'Switch Branches' dropdown menu near the top left of the page to select the branch with your changes: .. image:: branch_dropdown.png #. Click on the 'Pull request' button: .. image:: pull_button.png Enter a title for the set of changes, and some explanation of what you've done. Say if there is anything you'd like particular attention for - like a complicated change or some code you are not happy with. If you don't think your request is ready to be merged, just say so in your pull request message. This is still a good way of getting some preliminary code review. Some other things you might want to do ====================================== Delete a branch on github ------------------------- :: git checkout master # delete branch locally git branch -D my-unwanted-branch # delete branch on github git push origin :my-unwanted-branch (Note the colon ``:`` before ``test-branch``. See also: http://github.com/guides/remove-a-remote-branch Several people sharing a single repository ------------------------------------------ If you want to work on some stuff with other people, where you are all committing into the same repository, or even the same branch, then just share it via github. First fork nibabel into your account, as from :ref:`forking`. Then, go to your forked repository github page, say ``http://github.com/your-user-name/nibabel`` Click on the 'Admin' button, and add anyone else to the repo as a collaborator: .. image:: pull_button.png Now all those people can do:: git clone git@githhub.com:your-user-name/nibabel.git Remember that links starting with ``git@`` use the ssh protocol and are read-write; links starting with ``git://`` are read-only. Your collaborators can then commit directly into that repo with the usual:: git commit -am 'ENH - much better code' git push origin master # pushes directly into your repo Explore your repository ----------------------- To see a graphical representation of the repository branches and commits:: gitk --all To see a linear list of commits for this branch:: git log You can also look at the `network graph visualizer`_ for your github repo. Finally the :ref:`fancy-log` ``lg`` alias will give you a reasonable text-based graph of the repository. .. _rebase-on-trunk: Rebasing on trunk ----------------- Let's say you thought of some work you'd like to do. You :ref:`update-mirror-trunk` and :ref:`make-feature-branch` called ``cool-feature``. At this stage trunk is at some commit, let's call it E. Now you make some new commits on your ``cool-feature`` branch, let's call them A, B, C. Maybe your changes take a while, or you come back to them after a while. In the meantime, trunk has progressed from commit E to commit (say) G:: A---B---C cool-feature / D---E---F---G trunk At this stage you consider merging trunk into your feature branch, and you remember that this here page sternly advises you not to do that, because the history will get messy. Most of the time you can just ask for a review, and not worry that trunk has got a little ahead. But sometimes, the changes in trunk might affect your changes, and you need to harmonize them. In this situation you may prefer to do a rebase. rebase takes your changes (A, B, C) and replays them as if they had been made to the current state of ``trunk``. In other words, in this case, it takes the changes represented by A, B, C and replays them on top of G. After the rebase, your history will look like this:: A'--B'--C' cool-feature / D---E---F---G trunk See `rebase without tears`_ for more detail. To do a rebase on trunk:: # Update the mirror of trunk git fetch upstream # go to the feature branch git checkout cool-feature # make a backup in case you mess up git branch tmp cool-feature # rebase cool-feature onto trunk git rebase --onto upstream/master upstream/master cool-feature In this situation, where you are already on branch ``cool-feature``, the last command can be written more succinctly as:: git rebase upstream/master When all looks good you can delete your backup branch:: git branch -D tmp If it doesn't look good you may need to have a look at :ref:`recovering-from-mess-up`. If you have made changes to files that have also changed in trunk, this may generate merge conflicts that you need to resolve - see the `git rebase`_ man page for some instructions at the end of the "Description" section. There is some related help on merging in the git user manual - see `resolving a merge`_. .. _recovering-from-mess-up: Recovering from mess-ups ------------------------ Sometimes, you mess up merges or rebases. Luckily, in git it is relatively straightforward to recover from such mistakes. If you mess up during a rebase:: git rebase --abort If you notice you messed up after the rebase:: # reset branch back to the saved point git reset --hard tmp If you forgot to make a backup branch:: # look at the reflog of the branch git reflog show cool-feature 8630830 cool-feature@{0}: commit: BUG: io: close file handles immediately 278dd2a cool-feature@{1}: rebase finished: refs/heads/my-feature-branch onto 11ee694744f2552d 26aa21a cool-feature@{2}: commit: BUG: lib: make seek_gzip_factory not leak gzip obj ... # reset the branch to where it was before the botched rebase git reset --hard cool-feature@{2} .. _rewriting-commit-history: Rewriting commit history ------------------------ .. note:: Do this only for your own feature branches. There's an embarassing typo in a commit you made? Or perhaps the you made several false starts you would like the posterity not to see. This can be done via *interactive rebasing*. Suppose that the commit history looks like this:: git log --oneline eadc391 Fix some remaining bugs a815645 Modify it so that it works 2dec1ac Fix a few bugs + disable 13d7934 First implementation 6ad92e5 * masked is now an instance of a new object, MaskedConstant 29001ed Add pre-nep for a copule of structured_array_extensions. ... and ``6ad92e5`` is the last commit in the ``cool-feature`` branch. Suppose we want to make the following changes: * Rewrite the commit message for ``13d7934`` to something more sensible. * Combine the commits ``2dec1ac``, ``a815645``, ``eadc391`` into a single one. We do as follows:: # make a backup of the current state git branch tmp HEAD # interactive rebase git rebase -i 6ad92e5 This will open an editor with the following text in it:: pick 13d7934 First implementation pick 2dec1ac Fix a few bugs + disable pick a815645 Modify it so that it works pick eadc391 Fix some remaining bugs # Rebase 6ad92e5..eadc391 onto 6ad92e5 # # Commands: # p, pick = use commit # r, reword = use commit, but edit the commit message # e, edit = use commit, but stop for amending # s, squash = use commit, but meld into previous commit # f, fixup = like "squash", but discard this commit's log message # # If you remove a line here THAT COMMIT WILL BE LOST. # However, if you remove everything, the rebase will be aborted. # To achieve what we want, we will make the following changes to it:: r 13d7934 First implementation pick 2dec1ac Fix a few bugs + disable f a815645 Modify it so that it works f eadc391 Fix some remaining bugs This means that (i) we want to edit the commit message for ``13d7934``, and (ii) collapse the last three commits into one. Now we save and quit the editor. Git will then immediately bring up an editor for editing the commit message. After revising it, we get the output:: [detached HEAD 721fc64] FOO: First implementation 2 files changed, 199 insertions(+), 66 deletions(-) [detached HEAD 0f22701] Fix a few bugs + disable 1 files changed, 79 insertions(+), 61 deletions(-) Successfully rebased and updated refs/heads/my-feature-branch. and the history looks now like this:: 0f22701 Fix a few bugs + disable 721fc64 ENH: Sophisticated feature 6ad92e5 * masked is now an instance of a new object, MaskedConstant If it went wrong, recovery is again possible as explained :ref:`above `. .. include:: links.inc nipy-nibabel-d3c26be/doc/source/gitwash/following_latest.rst000066400000000000000000000015021177264777700244250ustar00rootroot00000000000000.. _following-latest: ============================= Following the latest source ============================= These are the instructions if you just want to follow the latest *nibabel* source, but you don't need to do any development for now. The steps are: * :ref:`install-git` * get local copy of the git repository from github * update local copy from time to time Get the local copy of the code ============================== From the command line:: git clone git://github.com/nipy/nibabel.git You now have a copy of the code tree in the new ``nibabel`` directory. Updating the code ================= From time to time you may want to pull down the latest code. Do this with:: cd nibabel git pull The tree in ``nibabel`` will now have the latest changes from the initial repository. .. include:: links.inc nipy-nibabel-d3c26be/doc/source/gitwash/forking_button.png000066400000000000000000000314441177264777700240670ustar00rootroot00000000000000PNG  IHDR]Vl8E pHYs   IDATx]|Tv7ݴMN]&O  X(("}`@z!!@$ I6{wHŐ ww|s,JlG#i7p8t"p8Dn ͛p8tp8Dn ͛p8tp8D۪SMYVܺu jN:H;Ц22{wG(7o#77}Z+6/_18+{22+ߔ'Tnn.\\\z)H~cCEҿ++3^KX,`B`UC(s*Ҁ{/22'7#G>F},\>ë˗ sݿ/^v;s+p[cF5nGd2{VVՍÙ3gh"A0'OFvٱ߹nɊd-ڕzzz:mۆ9s=33ž鯬C~0~Ure$!nm,W#q(gǝ݌XlP844\K7n' USֽ__\] \d 222@h[/Aadr]3\ĻTnJo8aӻ%&52_VN߫nV䭄ha9r0`0vލM6 駟.ڙ٦z$])Fg,Zn.P:٠3Uӕ+17sBo aMM0V9EGի3f S`f Bq]_w34&k%dAG=pS*V999;w.Fc$o0}tNANj̈́B!@<E~=ֹG ~Jk6hubC}@#S1@H³^gȌn1j˕+W" AAA5kؽS6> |oZlY`ݖ>,uh ؽę}&|~4Ú`{a{hi_}UΘ(d]ٳÐD74'Xfm Z`zd ޚ0Ԥ/{q٫!Lq)5(J/1+pũK|K+bէƏ>ƺ9Bc>GSޝfDND?](f[<kcc\wviprr\*씝6vTJ%m㿳b%/Q8`[BLjo?@ ew26؆c޻E'6W  _B8'^m6@m_ϚA'|%=s}]j8HGǦ`wgiSbȜy8|b7r$*&t+|Nc;#p헏P:GJ+.2. Ô)S'|RHc_}=Z6P(QKؘUN|N6ؤlEqbs!ES0nl"\CoBvn>lB{o6IBѽs#-F!#ؾ= D*βă84I!V<.#\iZe?`(l 6 >َ; pOoʼnU %/8. D/8˨㻘vn'[UH+w-_|@l1b9&N(rY-47{=Q/W[n4b`vq=b,bpu&=\Ip`g8ً+V!JJ@Gc?ExF(>1JO 2/s@~λvH4rl.ӻ-,Ĩc#U"~T|bBǽzDؗLrK@硫]+d)J ('Y<3nʲJZLeE;)yc3QiXʊYc,^A>,#El %I_ɎƙHB# <$W|,S. FqF{-.-R=F?zGzys> 2ȭ0.峂dSr%b>\f1eiggg和ܸhME(p]_ ĶC`zP__cgA ~U%%Yt5q˞ՁÈ!kl;HdiLט\.8>n0y: aPK%:`#"DJ.])b#P|cl,:hՂNB"C^~.n,"NG.zc2jb7Xƶň % ^.nJ?DKVfʃ,/S)].`:2= ]EXE>H{ Xt`qܹϟ/={~xxx7Do*|]k=&teAN:mj>:EO![N>EqwpJx CqḬlRR4TƋ k ¯Ɍr тTRF0r,zp9pG%4oo~)dߞn ƅ*X攝D4Ta3'XJB%Qj`.KPˋ9i M&[Yp{yq,Y\0*9a=!aON:`AB,l"mӏWr~ţcah|4$ꔠ`Bo3 {e5;Q#m.擏810I"'S33~^fӘah#18mkSp`rGZ(D}woo5+p_ +9[Kc;91czꅤ$pq>|*OJJ\ uX*:e> Q+ƌ8c1>[f(h^ de 76ѯ=.]a6 y_Bzϡg#3.7 1P-FbM&'c3Иz >5<( /^ Kj(ǸO1wٟ|e=?6M~A q`lѩS'!XYJN&&<9soVC_=똧s-? !:bs". ۿϛ/R􅊔ʫQБ=ˋs ONS.VM>‘tװ}ؿe"_^5^оMNָ.W 6C':ep[ȶ)o۠m]h c'q&iI>7`=p!xhVEφ2HGa{T*{ӾߊVC&&iɲv.p)2br-ˈYk:NgϞ &y @L W?}@+8w4¤sщfF 'ڲ3S9HF@O4)PZMh1Q̞0 pQ!E/G ز`sa&^~fXh4|]D7pTZ͛z/^T 53ĉ,"{e[C}#+N!vr_b\ \*w2l%7=gadaR.^H7n\A ޗ$ - Lj,::Sycr67'nAp_A+Y'A>0|1ާWg`ΆH<'x*A_IS"PNkcoǓf!#&Ǿo,ċt(r3i"m7с{ 55 N\D"R"G"_gRdU2VޖSqI=?r2eȶD]Rhew pMyhZ=#hӓ&6-P*/w;R\\=i&UZg&&3|=)L5@mh`+  =R\V;ӍZˡP J|MKKCHHH_+믿^Ph•ijrJ@J>K gOBC.gGZ-LdyzcW q!pKa1h_vPtE^5km+d4FAwJd`iǝg]7,)H/n@1 7Ȝ!w;CFq{Eƫ-ɭpÇZt+IF zm vAFZXԆAThO";l \vHftoTJ6PSwRrƀMvSfΪ%ҒU# ŋ.,VJ~C4T*R\VKe0fRفٯ*,^l2FF?qd__fޖ"*'ov(JH*VZ`E½<^?olz[wG8 7Z18'{322];aVun 1ǡ" +#3~{.ɍxq9.5s_VMv6Gy~ǘPʹȌ);+G>E|S>4G#-8]GN"IN#-8]GN"IN#-8]GN"IN#-8]GN"IN#-8]GN"IN#-8]GN"IN#-8]GN"IN#-8]GN"IN#-8]GN"IN#-km.G#s8yyyչAs8Bj y.G#P'plur|G6nmp,t9@ju&G#Pgn=8G#Ppҭ y@E9@[:o#pKΊ# [69:lʔ)ӫ:fD}$U-\OhZ #r4՛t.Y?p"ͭHbѦ…xe!-/_]oxDE"QxR5|\ing8]ܢ>d:jpv]9kMDMTMtȼQ Rq!1psqxÔeɦK/m804sayF ,YWcu DMkYaIߢ#GwgSp&"V(OaRa_7`?ķ"lQk\Nȸr+~ك[LW^w CQ#OCj$6l(=㥁Q8}KV}6"öduSLꫛj2dFaǎs4*ծŞp݋xUkشgM3k[KӜ[@)xl&!͟#c ZʧN0k"lV CDҁHt`12^$XL6]1wV7 R~ҟtp vGxcʳh+8f6$w'Ӟ*Y̮Pa܊9<=4/}k |MP[D??|e_ϫO˘0qHsK<1TO=$_jF¾q,^ v2b(Zkǖ}r 4n=26`Q`mBG*s[Ȃ͕'-/@Ett /2Dz%D;yxa` ",DYKTU8k$褰!awU1Hv͌ m}1v0 oÑ/w||}%DϨ=4ƀ^a”W81ra4ޱ O›<`p4]һ>-%t'`!'W'|t59*֯ .!H?1~@S$Dg!'0ok8[2m h  \ Nmؓe1rHsIYvPTѾC!,z >b0Z+q`8-4&5IȒ*i5f^GVB>T0K6z%6.sQ/C1bpONᗅ{`0(wʕЭPk:R6FhBd":Ҥ%زy%y\]4eBDGiK$[HUu1#е-#|֟"ԄHw#Ȉˑκ˩(ɇwסA#?S{h'\}(YQY0F 6p}Q#,|4_`IšP7t8 F- םi._i&Mg@LAPiySpխwm$QMՔ|rU{ KHI%-C1\ˆt˰)W2P Md,a#T:Qx 9ߦZ\s'LfA>[5&Mo£W'Q B " q1't"񮐑QKY˷yyUDC;"ڤB O/;Çggd \'!2<Ύe q1pUzbCå'iV#KxM¬ 4)7֞ z[ѭ[s@v)]BKKS*읤VF6fIVbs&4莽!ȴ6sg sx[9l0p#3ѡl̀ JgAR3 F3dMKdYìuXlr_udMȻ!?f|`IF(ĥg"W$ꎩS?YJڶrlsçtܳk&R0,bE<=;$bTv_F2+ԭ(rxȿoo!+a[I[.`EC/3aĠIDATF6`!vdI#:T ZT=$&{+-O^#XA>c 01x(`61ʠ\g/IkM"݊J/.\EK[4i@_ĥ,훉hZ5T=:df?ʒ47n@{mFL-\-yM4X>'6icTr9lthJGN}gr>\u#O/.d':F6$vgp&70eڹ;j?B;W*s=lɇ#m5Х>d aF~0 ޭ >e"4XPG^Cf1f`D=Ef@@61X?{26CmukhDii/( ;H#$2h)aQz#1hfˉ YKO im,?-(aoak&*"HI+q0<ӔR 5$ ! /Hw"\4~1߯u@9LGAeñ+7KE{KȲ!:ՆaP،ɡе\:1oJݣ`ީoȥcu bBGzBWZ $^!g67: c tf q$&_p=IB-4"{8W趒#zlBZ%RhEk5!Gk4(F'4 ͪe}-.PuKV`s@|^+D=.xێ.#6)Ei* i,<ĢFڡ)Vjq%|;-Phk&v!_ޱ㈊?oSc0HT#[ Tcv$zھ-OFd3[ 7PѷڊS.#!Uqe8pƍ4諔F`#I žHػvñq6RMdÉq*җHXgk1d mmT@R)[X vI2!d0˒yÍpv;0 if" YidD!YӬ3▧PgJȓ{%!rP]PN!CV:X[iAxx2BAvͰoWf:4Ul$+Š"RgCoڦ-4p/HgQacfANDf5.],$ &&ӡ&] 9 B 5$ە_xaI6ƢBKm&=?߹OgQ!xE= :Ǹsss^6'_3Y0I!6€aKm|T[0hj:B4R⥧GgB/AT}۰!IiCۋ+\FlpJUw ]qOҤ" t:Y~, F"/ĨehE@ m:HMh{Q}lD17R4ep&mq+C[D/]V q[xN-lH7ɔ *49v0i{= hN=)B !~2rHXXB=4΂gyXFH8 E +EP _-("Cv|ċT͚ةKHS_Xf&Y8vEI 9h dP]z :.'M;D-ċccwM˓ 歡ƉYrm߁_* ++pCtJߍҰ ,Y{U!aeҲ^4{F&G4Y\XciG%hأTV:@kv i׈Z6e7wع2VڤP߉~©rkbhr\Tn]_fc-jxV4hۊ&sVj\?a$N'WRdt;$dLV;[GYJG~4d%ŚG&F֣t]k#X):j_`pgx!$7Uy`X{ARؙ@c=ca&ůN%ȅ:(h6Wь"H[Oؿ E,3N^'7O¼6'[KUDt ?gc JtA`V>rV:~^O_$ڙ9匉gѧoZNuIUti $3KB;fA4.ApT#z5Act9EY* <HSI_4!4Kװh vb-!3iGךp! hEYqڴ\#It[0vcX=p)>)/)m'dۆ?>b]yOM\1phmO}P/+^5h5p4W]paزO֠&6ȅY*\6dg#UZ,)#a=MpǘIHOeߙ²4b+CflZ [z?? = ^]111 V%߅ ɕTwWVWNt^MŐ@oZ+\_"o_=4w1#ڒ0PxEKwDǚѵ]؏Sm3hڈ'RT*ꀓ™ɂ#n䅕8tyS`QZіᓸ9d2`9+L>MΡ LeMKvGv]+hRQφƒUO6fdUC88~+e=9ܝc[ȍKA !6w沸tƂہ ^Bf;W5H^C?K4 (NidQ8)TӬFnYE,tH樗.Ɓ]tp"W]) rA5*`9ɹ^|PZf>NÛ"nNHf:tc DE)Y~f|JMr+sjQU/QxCub|M. [Г޴"2QJ((/DYYEI?vX0&)<|}lVAlK ZJד_ |-f'DbYt`&wV+|UtKĂ'YwZ:H4* J %ʂnTN@aW;%x1paLͿUSg My::WY:Ҕ*_wY(Ț%pYFrZ<b7ɇ~?MehdE{ix*# hSId3}n÷coK[95w?]sN W9ёӎOQ١܂2V2rWᏠk3t@ -݂ɢX;l :+Jݙ\ڛ\s"Ǵ&&}/o/[^@[f%~5[,A\GFm˲feK'\Vd"kTirMn .Mƿ;8su*$TVY䋑poo kJ U-ro~Z p/gRUkiKJf$h.kj)$\]'q0tJ 7NGA^Ąv} &O Lj_DUXʪӒ(c3|WںhkpYIݮ`e )V2d 3YB^5 )qXE%W[{ {ѿDWҲ4} zTYx|# UC5[:TI/_wrȭpM~XL[,E1w<$!!sJM p8@8G#P>U2V~}<#pA[Ó8@u#-FpA[Ó8@u#Iq8rrIGd-N$IENDB`nipy-nibabel-d3c26be/doc/source/gitwash/forking_hell.rst000066400000000000000000000021461177264777700235210ustar00rootroot00000000000000.. _forking: ========================================== Making your own copy (fork) of nibabel ========================================== You need to do this only once. The instructions here are very similar to the instructions at http://help.github.com/forking/ |emdash| please see that page for more detail. We're repeating some of it here just to give the specifics for the nibabel_ project, and to suggest some default names. Set up and configure a github account ===================================== If you don't have a github account, go to the github page, and make one. You then need to configure your account to allow write access |emdash| see the ``Generating SSH keys`` help on `github help`_. Create your own forked copy of nibabel_ =========================================== #. Log into your github account. #. Go to the nibabel_ github home at `nibabel github`_. #. Click on the *fork* button: .. image:: forking_button.png Now, after a short pause and some 'Hardcore forking action', you should find yourself at the home page for your own forked copy of nibabel_. .. include:: links.inc nipy-nibabel-d3c26be/doc/source/gitwash/git_development.rst000066400000000000000000000003401177264777700242350ustar00rootroot00000000000000.. _git-development: ===================== Git for development ===================== Contents: .. toctree:: :maxdepth: 2 forking_hell set_up_fork configure_git development_workflow maintainer_workflow nipy-nibabel-d3c26be/doc/source/gitwash/git_install.rst000066400000000000000000000011071177264777700233630ustar00rootroot00000000000000.. _install-git: ============= Install git ============= Overview ======== ================ ============= Debian / Ubuntu ``sudo apt-get install git-core`` Fedora ``sudo yum install git-core`` Windows Download and install msysGit_ OS X Use the git-osx-installer_ ================ ============= In detail ========= See the git page for the most recent information. Have a look at the github install help pages available from `github help`_ There are good instructions here: http://book.git-scm.com/2_installing_git.html .. include:: links.inc nipy-nibabel-d3c26be/doc/source/gitwash/git_intro.rst000066400000000000000000000010351177264777700230500ustar00rootroot00000000000000============== Introduction ============== These pages describe a git_ and github_ workflow for the nibabel_ project. There are several different workflows here, for different ways of working with *nibabel*. This is not a comprehensive git reference, it's just a workflow for our own project. It's tailored to the github hosting service. You may well find better or quicker ways of getting stuff done with git, but these should get you started. For general resources for learning git, see :ref:`git-resources`. .. include:: links.inc nipy-nibabel-d3c26be/doc/source/gitwash/git_links.inc000066400000000000000000000070241177264777700230020ustar00rootroot00000000000000.. This (-*- rst -*-) format file contains commonly used link targets and name substitutions. It may be included in many files, therefore it should only contain link targets and name substitutions. Try grepping for "^\.\. _" to find plausible candidates for this list. .. NOTE: reST targets are __not_case_sensitive__, so only one target definition is needed for nipy, NIPY, Nipy, etc... .. git stuff .. _git: http://git-scm.com/ .. _github: http://github.com .. _github help: http://help.github.com .. _msysgit: http://code.google.com/p/msysgit/downloads/list .. _git-osx-installer: http://code.google.com/p/git-osx-installer/downloads/list .. _subversion: http://subversion.tigris.org/ .. _git cheat sheet: http://github.com/guides/git-cheat-sheet .. _pro git book: http://progit.org/ .. _git svn crash course: http://git-scm.com/course/svn.html .. _learn.github: http://learn.github.com/ .. _network graph visualizer: http://github.com/blog/39-say-hello-to-the-network-graph-visualizer .. _git user manual: http://www.kernel.org/pub/software/scm/git/docs/user-manual.html .. _git tutorial: http://www.kernel.org/pub/software/scm/git/docs/gittutorial.html .. _git community book: http://book.git-scm.com/ .. _git ready: http://www.gitready.com/ .. _git casts: http://www.gitcasts.com/ .. _Fernando's git page: http://www.fperez.org/py4science/git.html .. _git magic: http://www-cs-students.stanford.edu/~blynn/gitmagic/index.html .. _git concepts: http://www.eecs.harvard.edu/~cduan/technical/git/ .. _git clone: http://www.kernel.org/pub/software/scm/git/docs/git-clone.html .. _git checkout: http://www.kernel.org/pub/software/scm/git/docs/git-checkout.html .. _git commit: http://www.kernel.org/pub/software/scm/git/docs/git-commit.html .. _git push: http://www.kernel.org/pub/software/scm/git/docs/git-push.html .. _git pull: http://www.kernel.org/pub/software/scm/git/docs/git-pull.html .. _git add: http://www.kernel.org/pub/software/scm/git/docs/git-add.html .. _git status: http://www.kernel.org/pub/software/scm/git/docs/git-status.html .. _git diff: http://www.kernel.org/pub/software/scm/git/docs/git-diff.html .. _git log: http://www.kernel.org/pub/software/scm/git/docs/git-log.html .. _git branch: http://www.kernel.org/pub/software/scm/git/docs/git-branch.html .. _git remote: http://www.kernel.org/pub/software/scm/git/docs/git-remote.html .. _git rebase: http://www.kernel.org/pub/software/scm/git/docs/git-rebase.html .. _git config: http://www.kernel.org/pub/software/scm/git/docs/git-config.html .. _why the -a flag?: http://www.gitready.com/beginner/2009/01/18/the-staging-area.html .. _git staging area: http://www.gitready.com/beginner/2009/01/18/the-staging-area.html .. _tangled working copy problem: http://tomayko.com/writings/the-thing-about-git .. _git management: http://kerneltrap.org/Linux/Git_Management .. _linux git workflow: http://www.mail-archive.com/dri-devel@lists.sourceforge.net/msg39091.html .. _git parable: http://tom.preston-werner.com/2009/05/19/the-git-parable.html .. _git foundation: http://matthew-brett.github.com/pydagogue/foundation.html .. _deleting master on github: http://matthew-brett.github.com/pydagogue/gh_delete_master.html .. _rebase without tears: http://matthew-brett.github.com/pydagogue/rebase_without_tears.html .. _resolving a merge: http://www.kernel.org/pub/software/scm/git/docs/user-manual.html#resolving-a-merge .. _ipython git workflow: http://mail.scipy.org/pipermail/ipython-dev/2010-October/006746.html .. other stuff .. _python: http://www.python.org .. |emdash| unicode:: U+02014 .. vim: ft=rst nipy-nibabel-d3c26be/doc/source/gitwash/git_resources.rst000066400000000000000000000034221177264777700237310ustar00rootroot00000000000000.. _git-resources: ============= git resources ============= Tutorials and summaries ======================= * `github help`_ has an excellent series of how-to guides. * `learn.github`_ has an excellent series of tutorials * The `pro git book`_ is a good in-depth book on git. * A `git cheat sheet`_ is a page giving summaries of common commands. * The `git user manual`_ * The `git tutorial`_ * The `git community book`_ * `git ready`_ |emdash| a nice series of tutorials * `git casts`_ |emdash| video snippets giving git how-tos. * `git magic`_ |emdash| extended introduction with intermediate detail * The `git parable`_ is an easy read explaining the concepts behind git. * `git foundation`_ expands on the `git parable`_. * Fernando Perez' git page |emdash| `Fernando's git page`_ |emdash| many links and tips * A good but technical page on `git concepts`_ * `git svn crash course`_: git for those of us used to subversion_ Advanced git workflow ===================== There are many ways of working with git; here are some posts on the rules of thumb that other projects have come up with: * Linus Torvalds on `git management`_ * Linus Torvalds on `linux git workflow`_ . Summary; use the git tools to make the history of your edits as clean as possible; merge from upstream edits as little as possible in branches where you are doing active development. Manual pages online =================== You can get these on your own machine with (e.g) ``git help push`` or (same thing) ``git push --help``, but, for convenience, here are the online manual pages for some common commands: * `git add`_ * `git branch`_ * `git checkout`_ * `git clone`_ * `git commit`_ * `git config`_ * `git diff`_ * `git log`_ * `git pull`_ * `git push`_ * `git remote`_ * `git status`_ .. include:: links.inc nipy-nibabel-d3c26be/doc/source/gitwash/index.rst000066400000000000000000000003461177264777700221650ustar00rootroot00000000000000.. _using-git: Working with *nibabel* source code ====================================== Contents: .. toctree:: :maxdepth: 2 git_intro git_install following_latest patching git_development git_resources nipy-nibabel-d3c26be/doc/source/gitwash/known_projects.inc000066400000000000000000000027031177264777700240630ustar00rootroot00000000000000.. Known projects .. PROJECTNAME placeholders .. _PROJECTNAME: http://neuroimaging.scipy.org .. _`PROJECTNAME github`: http://github.com/nipy .. _`PROJECTNAME mailing list`: http://projects.scipy.org/mailman/listinfo/nipy-devel .. numpy .. _numpy: hhttp://numpy.scipy.org .. _`numpy github`: http://github.com/numpy/numpy .. _`numpy mailing list`: http://mail.scipy.org/mailman/listinfo/numpy-discussion .. scipy .. _scipy: http://www.scipy.org .. _`scipy github`: http://github.com/scipy/scipy .. _`scipy mailing list`: http://mail.scipy.org/mailman/listinfo/scipy-dev .. nipy .. _nipy: http://nipy.org/nipy .. _`nipy github`: http://github.com/nipy/nipy .. _`nipy mailing list`: http://mail.scipy.org/mailman/listinfo/nipy-devel .. ipython .. _ipython: http://ipython.scipy.org .. _`ipython github`: http://github.com/ipython/ipython .. _`ipython mailing list`: http://mail.scipy.org/mailman/listinfo/IPython-dev .. dipy .. _dipy: http://nipy.org/dipy .. _`dipy github`: http://github.com/Garyfallidis/dipy .. _`dipy mailing list`: http://mail.scipy.org/mailman/listinfo/nipy-devel .. nibabel .. _nibabel: http://nipy.org/nibabel .. _`nibabel github`: http://github.com/nipy/nibabel .. _`nibabel mailing list`: http://mail.scipy.org/mailman/listinfo/nipy-devel .. marsbar .. _marsbar: http://marsbar.sourceforge.net .. _`marsbar github`: http://github.com/matthew-brett/marsbar .. _`MarsBaR mailing list`: https://lists.sourceforge.net/lists/listinfo/marsbar-users nipy-nibabel-d3c26be/doc/source/gitwash/links.inc000066400000000000000000000001611177264777700221320ustar00rootroot00000000000000.. compiling links file .. include:: known_projects.inc .. include:: this_project.inc .. include:: git_links.inc nipy-nibabel-d3c26be/doc/source/gitwash/maintainer_workflow.rst000066400000000000000000000060061177264777700251360ustar00rootroot00000000000000.. _maintainer-workflow: ################### Maintainer workflow ################### This page is for maintainers |emdash| those of us who merge our own or other peoples' changes into the upstream repository. Being as how you're a maintainer, you are completely on top of the basic stuff in :ref:`development-workflow`. The instructions in :ref:`linking-to-upstream` add a remote that has read-only access to the upstream repo. Being a maintainer, you've got read-write access. It's good to have your upstream remote have a scary name, to remind you that it's a read-write remote:: git remote add upstream-rw git@github.com:nipy/nibabel.git git fetch upstream-rw ******************* Integrating changes ******************* Let's say you have some changes that need to go into trunk (``upstream-rw/master``). The changes are in some branch that you are currently on. For example, you are looking at someone's changes like this:: git remote add someone git://github.com/someone/nibabel.git git fetch someone git branch cool-feature --track someone/cool-feature git checkout cool-feature So now you are on the branch with the changes to be incorporated upstream. The rest of this section assumes you are on this branch. A few commits ============= If there are only a few commits, consider rebasing to upstream:: # Fetch upstream changes git fetch upstream-rw # rebase git rebase upstream-rw/master Remember that, if you do a rebase, and push that, you'll have to close any github pull requests manually, because github will not be able to detect the changes have already been merged. A long series of commits ======================== If there are a longer series of related commits, consider a merge instead:: git fetch upstream-rw git merge --no-ff upstream-rw/master The merge will be detected by github, and should close any related pull requests automatically. Note the ``--no-ff`` above. This forces git to make a merge commit, rather than doing a fast-forward, so that these set of commits branch off trunk then rejoin the main history with a merge, rather than appearing to have been made directly on top of trunk. Check the history ================= Now, in either case, you should check that the history is sensible and you have the right commits:: git log --oneline --graph git log -p upstream-rw/master.. The first line above just shows the history in a compact way, with a text representation of the history graph. The second line shows the log of commits excluding those that can be reached from trunk (``upstream-rw/master``), and including those that can be reached from current HEAD (implied with the ``..`` at the end). So, it shows the commits unique to this branch compared to trunk. The ``-p`` option shows the diff for these commits in patch form. Push to trunk ============= :: git push upstream-rw my-new-feature:master This pushes the ``my-new-feature`` branch in this repository to the ``master`` branch in the ``upstream-rw`` repository. .. include:: links.inc nipy-nibabel-d3c26be/doc/source/gitwash/patching.rst000066400000000000000000000076751177264777700226670ustar00rootroot00000000000000================ Making a patch ================ You've discovered a bug or something else you want to change in nibabel_ .. |emdash| excellent! You've worked out a way to fix it |emdash| even better! You want to tell us about it |emdash| best of all! The easiest way is to make a *patch* or set of patches. Here we explain how. Making a patch is the simplest and quickest, but if you're going to be doing anything more than simple quick things, please consider following the :ref:`git-development` model instead. .. _making-patches: Making patches ============== Overview -------- :: # tell git who you are git config --global user.email you@yourdomain.example.com git config --global user.name "Your Name Comes Here" # get the repository if you don't have it git clone git://github.com/nipy/nibabel.git # make a branch for your patching cd nibabel git branch the-fix-im-thinking-of git checkout the-fix-im-thinking-of # hack, hack, hack # Tell git about any new files you've made git add somewhere/tests/test_my_bug.py # commit work in progress as you go git commit -am 'BF - added tests for Funny bug' # hack hack, hack git commit -am 'BF - added fix for Funny bug' # make the patch files git format-patch -M -C master Then, send the generated patch files to the `nibabel mailing list`_ |emdash| where we will thank you warmly. In detail --------- #. Tell git who you are so it can label the commits you've made:: git config --global user.email you@yourdomain.example.com git config --global user.name "Your Name Comes Here" #. If you don't already have one, clone a copy of the nibabel_ repository:: git clone git://github.com/nipy/nibabel.git cd nibabel #. Make a 'feature branch'. This will be where you work on your bug fix. It's nice and safe and leaves you with access to an unmodified copy of the code in the main branch:: git branch the-fix-im-thinking-of git checkout the-fix-im-thinking-of #. Do some edits, and commit them as you go:: # hack, hack, hack # Tell git about any new files you've made git add somewhere/tests/test_my_bug.py # commit work in progress as you go git commit -am 'BF - added tests for Funny bug' # hack hack, hack git commit -am 'BF - added fix for Funny bug' Note the ``-am`` options to ``commit``. The ``m`` flag just signals that you're going to type a message on the command line. The ``a`` flag |emdash| you can just take on faith |emdash| or see `why the -a flag?`_. #. When you have finished, check you have committed all your changes:: git status #. Finally, make your commits into patches. You want all the commits since you branched from the ``master`` branch:: git format-patch -M -C master You will now have several files named for the commits:: 0001-BF-added-tests-for-Funny-bug.patch 0002-BF-added-fix-for-Funny-bug.patch Send these files to the `nibabel mailing list`_. When you are done, to switch back to the main copy of the code, just return to the ``master`` branch:: git checkout master Moving from patching to development =================================== If you find you have done some patches, and you have one or more feature branches, you will probably want to switch to development mode. You can do this with the repository you have. Fork the nibabel_ repository on github |emdash| :ref:`forking`. Then:: # checkout and refresh master branch from main repo git checkout master git pull origin master # rename pointer to main repository to 'upstream' git remote rename origin upstream # point your repo to default read / write to your fork on github git remote add origin git@github.com:your-user-name/nibabel.git # push up any branches you've made and want to keep git push origin the-fix-im-thinking-of Then you can, if you want, follow the :ref:`development-workflow`. .. include:: links.inc nipy-nibabel-d3c26be/doc/source/gitwash/pull_button.png000066400000000000000000000311351177264777700234010ustar00rootroot00000000000000PNG  IHDR~\iu pHYs   IDATx]|ToߔMHH PKT,"S, O}%"]zHR@dw޽fIBB$a&{3s̙3s72p8 G# ?G#p!}p]G#?G#p!}p]G#?G#p!HKKCVVVuNPF C./y>xbpˏUVe͛7׭=Obyyy()6c\,4lYѬ)4,= {$H& 0,n8^CtqѸ˱gEsZzl6~?vu;Oͽyv+gkx G#}كSԩSª8xy$;w}Z*.6.O[B$ɴ r)ɝĻB? Z}|?ìqu'.=IXHG.A0[rgcǎN,YDx_>kƮG όSN3^ǶQX+PmY+ˁ\K_,?~\#GBPN$,"E؟ A~ǧGLVs',o<5#3( fa0`9UI l>`ŒOлa彣p0e3ggx~Zb>1cƠiӦE*(O_˝)ޝ:8G| < 'g>!A>; oxMۍ9gH0taق.IFp̟3W6bά|`xhs &އĶ?EK+X4|ad#,0+VCSȦٳоq?$` 0ot$WRsp-.vx3k;~ŒO >`4|H>Og,O5E 4}LZ'Š&^xz` hXl,CbM8ִvXI:?? $̯?c{+]DJ___L4 ׿h5 &O  ^d g|tU"?5yɟ0pwX&<[?GWirToV|){<3mLAmxs 6'@9l>.#0}H4tŅx-w}__n Ơu~1b{֮҇#`4|(6y{fm^g][l?2wagsxqt'`oqѪ!!CMcZxL8ϦmE)*ue/fJ{ ž{LhϞ=WZˀ8y36 ‘3ݟL?w $ZMsѬ^ tɉ)"NKto+Щw+N7oG@2_ >tł@Y``0<\"aJ)Ϭ &57"&I! Rs=oֱ8) V8ޑxkme: #Hxӧp8ƿRh,@ #膣kw )@Ȥ r-e0gG|)o$b}"1bPddpyC#W.?E'\lǂ\Zز\m4rognYr2y^ /&욟*SY|!ڜi&rE|v9#' eH\|=0i;@F%!_Am62bK ? ( #`H.Ң #ӑݐ`6ֿfO< ͨOzde/mȄ<@soΛXyɒKcs30oOIZM}5 R-AnJiz$HlY3"1j^8A: GZE_ErrV $1W,PߐT?M!1v\w'_w :\db5nMQ^&SZ ,h׮Knq7mP?څ3PBK2}G6IjwMF:,`*Lъ<-r$PjZaY4l/,y&q-[$e]u߾}'ABWՂgyL&%1/H}0 3wSJ;Fc~1{NĿ?\ꂠ8\"`}H`5%zf40>-|ڊyJw-<˖-1}tt ؿ?q7ni#)}ӡd:җ؁hn)U8D_Nҗ"z@vM$Y/ kg߲CC0[mğev= Lg!Kĩ֮#_<*JzPp. ˌA"ө)(5K@0Mm?_@~}'v U8k ~Z(tn@Pu/71fM |_7P>1/fGn, K/)_QWKcAtهK嗰EVG,]0>\!dD6]4}.>_F MX5GfNY {;Ga1 Z*,Rf-Nslff*e0gJ1)#36fKGzܰ W&}9cpNA-[XP&ɹ[u.lNw}M=]gT̚ghSOgϞ`&eؤ) |4xnwH{ n>X'5!ȋQ(0Mз"d]H001\ka/<[`0->BkG8.ТVUo[1㥓l&IUF˾B["^.W".=REIiWiMb6WW/.MDvT~kg ;DY(4(sy#jᓟephn×/?Wx,j[ П|\Ld1q@)2j8ˊ}'`㝑|v ( j:/}Za;,Tw(pDQBU2Z}d.s^_|~j?^4IaA'¯vW>TaS I) ֖4$^+0ܹ^=NѺs ""]tg:ea3YLN˳g/tZ9llv4AAslnf6L4Ծbf"^}ϱS Y9P{“].ã䞠{'śrx)帬V _cO%U8c\LdҗVHe =S9SnLH'?lm|,:Z( cq8@,o]UW8UKi<+{? f˘0`X.pnPⱹWS8nL8ftv\+­=bcNIU:%qK^L<+B-p8!PiX\)p8U,8G|p_>x)G#PeʲpʇWÍp8U,8G|p_>x)G#PeʲpʇWÍp8U,8G|p_>x)G#PeʲpʇWÍp8U,8G|p_>x)G#PeʲpʇWÍp8U,8G|p_>x)G#PeʲpʇWÍp8U,8G|p_>x)G#Peʲpʇ+Kq8@D@YF*I8'#pʇw7^#TY p8#-cKp8*WU}xG#PvGJ#-*>NP{@)#mq57 B"hC<jE@O>ǧ"ӪC:9ш /1g.%O_V0$t3D& S݆WT`3kA-sprNdlg.Ν8x"g/!Eo.0nUՆ+ZjUW*@\=SXXe(^l0T:2hVquSM(lx:}0^su*i 7 ,I&g-51xk/cx2S&2[qyZHAͩ#ɑz[Pw ~!} _lH2pm0q;W۶q6_1\=D"|+`-'B-09Tyy0 "u Aj>{`ƄpmȭWw1XXZM90t$Q6h@<FsxE(٤mҮ/}|%fg7е7IAvAPz^TTKu8L: ځ,{+NZ*(Vw_Bn+oAxbPSĬɊ-ʋB_zeʠhƕ qB뗐Њ$㲞CzegڪZO$<g_b̛F>-rOG`V'%|<|࡮x y-U rYѦfdLYǾy8dAZ>\ IfEnA$_Nͳ/[liQyNxvyC;S[>SXm1dqd4v:mS`- ܈6tAx5nCfy9A7Nnʭ kja&5Rnhۼ6^6䦜ǁh3|zc՘W)0;BHwb9bj4 cuɰhjt/nF蓮!mHPHs`"nfVbl8l#ߠ@ {/|3cGw|g,h42G`Ӯ|l7aCwa\]T߉ 7"9=$FNm:6ݒ!c)v5.gBgNϧV㔃+Pw yF+D_ҝ EzqLhIf/@1[Ix}!⃺uB?m"A VD{lŔycۡtxb]?ca6JZIbvby-z==\dryW)ih__:(\JNESOgL"VtjڹkuImvHtUBe_h^&*oM6hGN>g WCaBU|A _ I+,N,ɉ~ʕF)2\ju~]8kGP^AwԈ9ʇum %O6B\ti-%IT2ꃊr*Cm& o^ f2f쒘pF6r%߾tzfdQ OQ2 hZKwV&v@taa iZV~ jOadtNC},ŏ4<RdL'Sԥ9s>ǡa,Jm{|˨CLN]3>^| vM.\5|xU wnsI,!Τ-gI<4 nۣ 1f4GOJ~F\VD؜A<)IaR$1tX6{y _?x$ ;6\KC=;!keؖpMhBT1X9]l A&-q4 ž|Yj:/; PÓ͂bdٱILMQjb =)7M7@ >G'5j4abwTm |9٠9!mʻ@ w+ۀVJh-7iĽ>;$ \V&·/>:=C+:joxFjobpH;;x'#%nȋJ$9nYioP.eӠ1Ypr>̦ oH ^Bs@jr)l+kl7QWSg]-u9[ӈՑIU.d+)/'Ъ jFw$@20HV~$˛')^ЫI-l}V z'&h`űbi.2b J+W"lR*d f$He bɔ)D{2E= u yS/,oe@t6Gځ+Fk 4UZ됰{-"ikKpq ώ u9yG; bYR~S&@tmļԀMBHygCju/.Ykس4c|:(>*6mBjڐ&lM4X.mv6\[lS)o"jegGʸ4@|d:tjH.*ъ x=ŷj 4$e%z FN8џEgD׎K( _kҥȩF~JeY.i7!%5O߫cm'lŶN6ܔl$ɊfD9hP3;okJ-RY~uʒ{?$Zܶ;۱yՏ$:ڣK;r;zCbwād >vvQ 6at܆BDȗ*XMTcKVGӪ. >,o;~g&M~)?lFRv_;r1gbK5$_5::EuZsZG)&rЊMn.@gT"T:5,JVC`R]Ehi~ 2߶hk'5!h߆k[&xB4v>EMWBb<iR+UŖ)$K'Ϯ3pSb7\8X0: <;+K#;Yv#^;7҆ZtBZш՘Xj,8(G0S[ gbI T&(dt Vn O t…NAF*Qϓtj#+)e& LdȾSx 2K.Ҳ ]?tj rrjCm#-ϡ{.M9d,de8_7,mf$i3O(lI IɆл 5$PER Cg1~wf )kVzփϥ7csb7?ƳSn>yH̫TShj$R:;o .<Ѫfڌ;^EapiWSGJ6#>|nV7ՄԠpǟxL{.鴡)kK~b$|& r's;% '* ;mAӬ?g~ݒ<|}=p)LW|>}LIRT/M}twI4mP{Ċuo" vZ ,7:t`J!6%) E ge4)ZF,{ MX%Ft8W23- ^ y/pQP2ZSyfRC1.6ꈼ>^l$ཹo9"l$Crr#6R $36iXiEG ╭_cYd;̚=3!k-Nr䲘dF #UəPFPBxKI+\;&{&{eTR%}@Y3rr)|wE1`h׬&RF\C1T~4j%3&lgz dQ4#-ߝYzr/! zjI^p8@+ hWp8:youSp8eA[eAp8nW&.p8 -r8jWՀ G,pWOYy9@5@[Հ G,?V#9}nIENDB`nipy-nibabel-d3c26be/doc/source/gitwash/set_up_fork.rst000066400000000000000000000037141177264777700234000ustar00rootroot00000000000000.. _set-up-fork: ================== Set up your fork ================== First you follow the instructions for :ref:`forking`. Overview ======== :: git clone git@github.com:your-user-name/nibabel.git cd nibabel git remote add upstream git://github.com/nipy/nibabel.git In detail ========= Clone your fork --------------- #. Clone your fork to the local computer with ``git clone git@github.com:your-user-name/nibabel.git`` #. Investigate. Change directory to your new repo: ``cd nibabel``. Then ``git branch -a`` to show you all branches. You'll get something like:: * master remotes/origin/master This tells you that you are currently on the ``master`` branch, and that you also have a ``remote`` connection to ``origin/master``. What remote repository is ``remote/origin``? Try ``git remote -v`` to see the URLs for the remote. They will point to your github fork. Now you want to connect to the upstream `nibabel github`_ repository, so you can merge in changes from trunk. .. _linking-to-upstream: Linking your repository to the upstream repo -------------------------------------------- :: cd nibabel git remote add upstream git://github.com/nipy/nibabel.git ``upstream`` here is just the arbitrary name we're using to refer to the main nibabel_ repository at `nibabel github`_. Note that we've used ``git://`` for the URL rather than ``git@``. The ``git://`` URL is read only. This means we that we can't accidentally (or deliberately) write to the upstream repo, and we are only going to use it to merge into our own code. Just for your own satisfaction, show yourself that you now have a new 'remote', with ``git remote -v show``, giving you something like:: upstream git://github.com/nipy/nibabel.git (fetch) upstream git://github.com/nipy/nibabel.git (push) origin git@github.com:your-user-name/nibabel.git (fetch) origin git@github.com:your-user-name/nibabel.git (push) .. include:: links.inc nipy-nibabel-d3c26be/doc/source/gitwash/this_project.inc000066400000000000000000000001761177264777700235150ustar00rootroot00000000000000.. nibabel .. _nibabel: http://nipy.org/nibabel .. _`nibabel mailing list`: http://mail.scipy.org/mailman/listinfo/nipy-devel nipy-nibabel-d3c26be/doc/source/index.rst000066400000000000000000000053521177264777700205210ustar00rootroot00000000000000.. -*- mode: rst -*- .. ex: set sts=4 ts=4 sw=4 et tw=79: ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### # # See COPYING file distributed along with the NiBabel package for the # copyright and license terms. # ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### .. include:: ../../README.rst Documentation ============= * :ref:`User Documentation ` (manual) * :ref:`API Documentation ` (comprehensive reference) * :ref:`Developer Guidelines ` (for those who want to contribute) * :ref:`Development Changelog ` (see what has changed) * :ref:`DICOM concepts ` (details about implementing DICOM reading) * :ref:`genindex` (access by keywords) * :ref:`search` (online and offline full-text search) See also the :ref:`Developer documentation page ` for development discussions, release procedure and more. Authors and Contributors ======================== NiBabel has been written and is maintained by `Matthew Brett`_ and `Michael Hanke`_. The authors are grateful to the following people who have contributed to NiBabel (in rough order of appearance): * `Yaroslav O. Halchenko`_ * Chris Burns * `Gaël Varoquaux`_ * `Stephan Gerhard`_ * Ian Nimmo-Smith * Jarrod Millman * Bertran Thirion * Thomas Ballinger * Cindee Madison * Valentin Haenel * Alexandre Gramfort * Christian Haselgrove * Krish Subramaniam * Yannick Schwartz * Bago Amirbekian * Brendan Moloney * Félix C. Morency License reprise =============== NiBabel is free-software (beer and speech) and covered by the `MIT License`_. This applies to all source code, documentation, examples and snippets inside the source distribution (including this website). Please see the :ref:`appendix of the manual ` for the copyright statement and the full text of the license. Download and Installation ========================= Please find detailed :ref:`download and installation instructions ` in the manual. Support ======= If you have problems installing the software or questions about usage, documentation or something else related to NiBabel, you can post to the NiPy mailing list. :Mailing list: nipy-devel@neuroimaging.scipy.org [subscription_, archive_] It is recommended that all users subscribe to the mailing list. The mailing list is the preferred way to announce changes and additions to the project. The mailing list archive can also be searched using the *mailing list archive search* located in the sidebar of the NiBabel home page. .. _subscription: http://mail.scipy.org/mailman/listinfo/nipy-devel .. _archive: http://mail.scipy.org/pipermail/nipy-devel .. include:: links_names.txt .. toctree:: :hidden: manual devel/index dicom/dicom api nipy-nibabel-d3c26be/doc/source/installation.rst000066400000000000000000000066471177264777700221230ustar00rootroot00000000000000.. -*- mode: rst -*- .. ex: set sts=4 ts=4 sw=4 et tw=79: ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### # # See COPYING file distributed along with the NiBabel package for the # copyright and license terms. # ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### .. _installation: ************ Installation ************ NiBabel is a pure python package at the moment, and it should be easy to get NiBabel running on any system. For the most popular platforms and operating systems there should be packages in the respective native packaging format (DEB, RPM or installers). On other systems you can install NiBabel using ``easy_install`` or by downloading the source package and running the usual ``python setup.py install``. .. This remark below is not yet true; comment to avoid confusion To run all of the tests, you may need some extra data packages - see :ref:`installing-data`. Installer and packages ====================== .. _install_pypi: The python package index ------------------------ NiBabel is available via `pypi`_. If you already have setuptools_ or distribute_ installed, you can run:: easy_install nibabel to download nibabel and its dependencies. Alternatively go to the `nibabel pypi`_ page and select the source distribution you want. Download the distribution, unpack it, and then, from the unpacked directory, run:: python setup.py install or (if you need root permission to install on a unix system):: sudo python setup.py install .. _install_debian: Debian/Ubuntu ------------- NiBabel is available as a `NeuroDebian package`_. Please follow the instructions on the NeuroDebian_ website on how access their repositories. Once this is done, installing NiBabel is:: apt-get update apt-get install python-nibabel .. _NeuroDebian package: http://neuro.debian.net/pkgs/python-nibabel.html Install from source =================== If no installer or package is provided for your platfom, you can install NiBabel from source. Requirements ------------ * Python_ 2.5 or greater * NumPy_ 1.2 or greater * SciPy_ (for full SPM-ANALYZE support) * PyDICOM_ 0.9.5 or greater (for DICOM support) * `Python Imaging Library`_ (for PNG conversion in DICOMFS) * nose_ 0.11 or greater (to run the tests) * sphinx_ (to build the documentation) Get the sources --------------- The latest release is always available from `nibabel pypi`_. Alternatively, you can download a tarball of the latest development snapshot (i.e. the current state of the *master* branch of the NiBabel source code repository) from the `nibabel github`_ page. If you want to have access to the full NiBabel history and the latest development code, do a full clone (aka checkout) of the NiBabel repository:: git clone git://github.com/nipy/nibabel.git or:: git clone http://github.com/nipy/nibabel.git (The first will be faster, the second more likely to work behind a firewall). Installation ------------ Just install the modules by invoking:: sudo python setup.py install If sudo is not configured (or even installed) you might have to use ``su`` instead. Now fire up Python and try importing the module to see if everything is fine. It should look similar to this:: Python 2.5.5 (r255:77872, Apr 21 2010, 08:44:16) [GCC 4.4.3] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> import nibabel >>> .. include:: links_names.txt nipy-nibabel-d3c26be/doc/source/installing_data.rst000066400000000000000000000047601177264777700225510ustar00rootroot00000000000000.. _installing-data: Installing data packages ======================== nibabel includes some machinery for using optional data packages. We use data packages for some of the DICOM tests in nibabel. There are also data packages for standard template images, and other packages for components of nipy, including the main nipy package. For more details on data package design, see :ref:`data-package-design`. We haven't yet made a nice automated way of downloading and installing the packages. For the moment you can find packages for the data and template files at http://nipy.sourceforge.net/data-packages. Data package installation as an administrator --------------------------------------------- The installation procedure, for now, is very basic. For example, let us say that you want the 'nipy-templates' package at http://nipy.sourceforge.net/data-packages/nipy-templates-0.1.tar.gz . You simply download this archive, unpack it, and then run the standard ``python setup.py install`` on it. On a unix system this might look like:: curl -O http://nipy.sourceforge.net/data-packages/nipy-templates-0.1.tar.gz tar zxvf nipy-templates-0.1.tar.gz cd nipy-templates-0.1 sudo python setup.py install On windows, download the file, extract the archive to a folder using the GUI, and then, using the windows shell or similar:: cd c:\path\to\extracted\files python setup.py install Non-administrator data package installation ------------------------------------------- The commands above assume you are installing into the default system directories. If you want to install into a custom directory, then (in python, or ipython, or a text editor) look at the help for ``nipy.utils.data.get_data_path()`` . There are instructions there for pointing your nipy installation to the installed data. On unix ~~~~~~~ For example, say you installed with:: cd nipy-templates-0.1 python setup.py install --prefix=/home/my-user/some-dir Then you may want to do make a file ``~/.nipy/config.ini`` with the following contents:: [DATA] /home/my-user/some-dir/share/nipy On windows ~~~~~~~~~~ Say you installed with (windows shell):: cd nipy-templates-0.1 python setup.py install --prefix=c:\some\path Then first, find out your home directory:: python -c "import os; print os.path.expanduser('~')" Let's say that was ``c:\Documents and Settings\My User``. Then, make a new file called ``c:\Documents and Settings\My User\_nipy\config.ini`` with contents:: [DATA] c:\some\path\share\nipy nipy-nibabel-d3c26be/doc/source/legal.rst000077700000000000000000000000001177264777700221452../../COPYINGustar00rootroot00000000000000nipy-nibabel-d3c26be/doc/source/links_names.txt000066400000000000000000000176771177264777700217410ustar00rootroot00000000000000.. -*- rst -*- .. vim: ft=rst .. This rst format file contains commonly used link targets and name substitutions. It may be included in many files, therefore it should only contain link targets and name substitutions. Try grepping for "^\.\. _" to find plausible candidates for this list. .. NOTE: reST targets are __not_case_sensitive__, so only one target definition is needed for nipy, NIPY, Nipy, etc... .. nibabel .. _nibabel: http://nipy.org/nibabel .. _`nibabel github`: http://github.com/nipy/nibabel .. _`nibabel mailing list`: http://mail.scipy.org/mailman/listinfo/nipy-devel .. _nibabel pypi: http://pypi.python.org/pypi/nibabel .. _nibabel issues: http://github.com/nipy/nibabel/issues .. other related projects .. _nipy community: http://nipy.org .. _nipy: http://nipy.org/nipy .. _`Brain Imaging Center`: http://bic.berkeley.edu/ .. _dipy: http://nipy.org/dipy .. _`dipy github`: http://github.com/Garyfallidis/dipy .. _nibabel: http://nipy.org/nibabel .. _nipy development guidelines: http://nipy.org/devel .. _`nipy github`: http://github.com/nipy/nipy .. _nipy buildbot: http://nipy.bic.berkeley.edu .. Documentation tools .. _graphviz: http://www.graphviz.org/ .. _Sphinx: http://sphinx.pocoo.org/ .. _`Sphinx reST`: http://sphinx.pocoo.org/rest.html .. _reST: http://docutils.sourceforge.net/rst.html .. _docutils: http://docutils.sourceforge.net .. Licenses .. _GPL: http://www.gnu.org/licenses/gpl.html .. _BSD: http://www.opensource.org/licenses/bsd-license.php .. _LGPL: http://www.gnu.org/copyleft/lesser.html .. _MIT License: http://www.opensource.org/licenses/mit-license.php .. Installation .. _pypi: http://pypi.python.org/pypi .. Working process .. _pynifti: http://niftilib.sourceforge.net/pynifti/ .. _nifticlibs: http://nifti.nimh.nih.gov .. _nifti: http://nifti.nimh.nih.gov .. _`nipy sourceforge`: http://nipy.sourceforge.net/ .. _sourceforge: http://nipy.sourceforge.net/ .. _`nipy launchpad`: https://launchpad.net/nipy .. _launchpad: https://launchpad.net/ .. _`nipy trunk`: http://code.launchpad.net/~nipy-developers/nipy/trunk .. _`nipy mailing list`: http://projects.scipy.org/mailman/listinfo/nipy-devel .. _`nipy bugs`: https://bugs.launchpad.net/nipy .. _sourceforge download page: http://sourceforge.net/projects/nipy/files .. Code support stuff .. _pychecker: http://pychecker.sourceforge.net/ .. _pylint: http://www.logilab.org/project/pylint .. _pyflakes: http://divmod.org/trac/wiki/DivmodPyflakes .. _virtualenv: http://pypi.python.org/pypi/virtualenv .. _github: http://github.com .. _flymake: http://flymake.sourceforge.net/ .. _rope: http://rope.sourceforge.net/ .. _pymacs: http://pymacs.progiciels-bpi.ca/pymacs.html .. _ropemacs: http://rope.sourceforge.net/ropemacs.html .. _ECB: http://ecb.sourceforge.net/ .. _emacs_python_mode: http://www.emacswiki.org/cgi-bin/wiki/PythonMode .. _doctest-mode: http://www.cis.upenn.edu/~edloper/projects/doctestmode/ .. _nose: http://somethingaboutorange.com/mrl/projects/nose .. _`python coverage tester`: http://nedbatchelder.com/code/modules/coverage.html .. Other python projects .. _numpy: http://www.scipy.org/NumPy .. _scipy: http://www.scipy.org .. _ipython: http://ipython.scipy.org .. _`ipython github`: http://github.com/ipython/ipython .. _`ipython mailing list`: http://mail.scipy.org/mailman/listinfo/IPython-dev .. _`ipython manual`: http://ipython.scipy.org/doc/manual/html .. _matplotlib: http://matplotlib.sourceforge.net .. _pythonxy: http://www.pythonxy.com .. _EPD: http://www.enthought.com/products/epd.php .. _ETS: http://code.enthought.com/projects/tool-suite.php .. _`Enthought Tool Suite`: http://code.enthought.com/projects/tool-suite.php .. _python: http://www.python.org .. _mayavi: http://mayavi.sourceforge.net/ .. _sympy: http://code.google.com/p/sympy/ .. _networkx: http://networkx.lanl.gov/ .. _setuptools: http://pypi.python.org/pypi/setuptools .. _distribute: http://packages.python.org/distribute .. _datapkg: http://okfn.org/projects/datapkg .. _python imaging library: http://www.pythonware.com .. Python imaging projects .. _PyMVPA: http://www.pymvpa.org .. _BrainVISA: http://brainvisa.info .. _anatomist: http://brainvisa.info .. _pydicom: http://code.google.com/p/pydicom/ .. Not so python imaging projects .. _matlab: http://www.mathworks.com .. _spm: http://www.fil.ion.ucl.ac.uk/spm .. _spm8: http://www.fil.ion.ucl.ac.uk/spm/software/spm8 .. _eeglab: http://sccn.ucsd.edu/eeglab .. _AFNI: http://afni.nimh.nih.gov/afni .. _FSL: http://www.fmrib.ox.ac.uk/fsl .. _FreeSurfer: http://surfer.nmr.mgh.harvard.edu .. _voxbo: http://www.voxbo.org .. _mricron: http://www.cabiatl.com/mricro/mricron .. _slicer: http://www.slicer.org/ .. File formats .. _DICOM: http://medical.nema.org/ .. _`wikipedia DICOM`: http://en.wikipedia.org/wiki/Digital_Imaging_and_Communications_in_Medicine .. _GDCM: http://sourceforge.net/apps/mediawiki/gdcm .. _`DICOM specs`: ftp://medical.nema.org/medical/dicom/2009/ .. _`DICOM object definitions`: ftp://medical.nema.org/medical/dicom/2009/09_03pu3.pdf .. _dcm2nii: http://www.cabiatl.com/mricro/mricron/dcm2nii.html .. _`mricron install`: http://www.cabiatl.com/mricro/mricron/install.html .. _dicom2nrrd: http://www.slicer.org/slicerWiki/index.php/Modules:DicomToNRRD-3.4 .. _Nrrd: http://teem.sourceforge.net/nrrd/format.html .. General software .. _gcc: http://gcc.gnu.org .. _xcode: http://developer.apple.com/TOOLS/xcode .. _mingw: http://www.mingw.org .. _cygwin: http://cygwin.com .. _macports: http://www.macports.org/ .. _VTK: http://www.vtk.org/ .. _ITK: http://www.itk.org/ .. _swig: http://www.swig.org .. version control .. _git: http://git-scm.com .. _mercurial: http://mercurial.selenic.com .. _bzr: http://bazaar.canonical.com .. _subversion: http://subversion.apache.org .. Functional imaging labs .. _`functional imaging laboratory`: http://www.fil.ion.ucl.ac.uk .. _FMRIB: http://www.fmrib.ox.ac.uk .. Other organizations .. _enthought: .. _kitware: http://www.kitware.com .. _NeuroDebian: http://neuro.debian.net .. _nitrc: http://www.nitrc.org .. General information links .. _`wikipedia FMRI`: http://en.wikipedia.org/wiki/Functional_magnetic_resonance_imaging .. _`wikipedia PET`: http://en.wikipedia.org/wiki/Positron_emission_tomography .. _ANALYZE: http://www.grahamwideman.com/gw/brain/analyze/formatdoc.htm .. _NIfTI1: http://nifti.nimh.nih.gov/nifti-1/ .. _MINC: http://wiki.bic.mni.mcgill.ca/index.php/MINC .. _GIFTI: http://www.nitrc.org/projects/gifti .. Mathematical methods .. _`wikipedia ICA`: http://en.wikipedia.org/wiki/Independent_component_analysis .. _`wikipedia PCA`: http://en.wikipedia.org/wiki/Principal_component_analysis .. Mathematical ideas .. _`wikipedia spherical coordinate system`: http://en.wikipedia.org/wiki/Spherical_coordinate_system .. _`mathworld spherical coordinate system`: http://mathworld.wolfram.com/SphericalCoordinates.html .. _`wikipedia affine`: http://en.wikipedia.org/wiki/Affine_transformation .. _`wikipedia linear transform`: http://en.wikipedia.org/wiki/Linear_transformation .. _`wikipedia rotation matrix`: http://en.wikipedia.org/wiki/Rotation_matrix .. _`wikipedia homogenous coordinates`: http://en.wikipedia.org/wiki/Homogeneous_coordinates .. _`wikipedia axis angle`: http://en.wikipedia.org/wiki/Axis_angle .. _`wikipedia Euler angles`: http://en.wikipedia.org/wiki/Euler_angles .. _`Mathworld Euler angles`: http://mathworld.wolfram.com/EulerAngles.html .. _`wikipedia quaternion`: http://en.wikipedia.org/wiki/Quaternion .. _`wikipedia shear matrix`: http://en.wikipedia.org/wiki/Shear_matrix .. _`wikipedia reflection`: http://en.wikipedia.org/wiki/Reflection_(mathematics) .. _`wikipedia direction cosine`: http://en.wikipedia.org/wiki/Direction_cosine .. philosophy .. _0SAGA: http://nipyworld.blogspot.com/2010/11/0saga-software-model.html .. People .. _Matthew Brett: https://cirl.berkeley.edu/mb312/ .. _Yaroslav O. Halchenko: http://www.onerussian.com .. _Michael Hanke: http://mih.voxindeserto.de .. _Gaël Varoquaux: http://gael-varoquaux.info/ .. _Stephan Gerhard: http://www.unidesign.ch nipy-nibabel-d3c26be/doc/source/make.bat000066400000000000000000000056171177264777700202710ustar00rootroot00000000000000@ECHO OFF REM Command file for Sphinx documentation set SPHINXBUILD=sphinx-build set ALLSPHINXOPTS=-d _build/doctrees %SPHINXOPTS% . if NOT "%PAPER%" == "" ( set ALLSPHINXOPTS=-D latex_paper_size=%PAPER% %ALLSPHINXOPTS% ) if "%1" == "" goto help if "%1" == "help" ( :help echo.Please use `make ^` where ^ is one of echo. html to make standalone HTML files 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 over 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 goto end ) if "%1" == "clean" ( for /d %%i in (_build\*) do rmdir /q /s %%i del /q /s _build\* goto end ) if "%1" == "html" ( %SPHINXBUILD% -b html %ALLSPHINXOPTS% _build/html echo. echo.Build finished. The HTML pages are in _build/html. goto end ) if "%1" == "dirhtml" ( %SPHINXBUILD% -b dirhtml %ALLSPHINXOPTS% _build/dirhtml echo. echo.Build finished. The HTML pages are in _build/dirhtml. goto end ) if "%1" == "pickle" ( %SPHINXBUILD% -b pickle %ALLSPHINXOPTS% _build/pickle echo. echo.Build finished; now you can process the pickle files. goto end ) if "%1" == "json" ( %SPHINXBUILD% -b json %ALLSPHINXOPTS% _build/json echo. echo.Build finished; now you can process the JSON files. goto end ) if "%1" == "htmlhelp" ( %SPHINXBUILD% -b htmlhelp %ALLSPHINXOPTS% _build/htmlhelp echo. echo.Build finished; now you can run HTML Help Workshop with the ^ .hhp project file in _build/htmlhelp. goto end ) if "%1" == "qthelp" ( %SPHINXBUILD% -b qthelp %ALLSPHINXOPTS% _build/qthelp echo. echo.Build finished; now you can run "qcollectiongenerator" with the ^ .qhcp project file in _build/qthelp, like this: echo.^> qcollectiongenerator _build\qthelp\nipype.qhcp echo.To view the help file: echo.^> assistant -collectionFile _build\qthelp\nipype.ghc goto end ) if "%1" == "latex" ( %SPHINXBUILD% -b latex %ALLSPHINXOPTS% _build/latex echo. echo.Build finished; the LaTeX files are in _build/latex. goto end ) if "%1" == "changes" ( %SPHINXBUILD% -b changes %ALLSPHINXOPTS% _build/changes echo. echo.The overview file is in _build/changes. goto end ) if "%1" == "linkcheck" ( %SPHINXBUILD% -b linkcheck %ALLSPHINXOPTS% _build/linkcheck echo. echo.Link check complete; look for any errors in the above output ^ or in _build/linkcheck/output.txt. goto end ) if "%1" == "doctest" ( %SPHINXBUILD% -b doctest %ALLSPHINXOPTS% _build/doctest echo. echo.Testing of doctests in the sources finished, look at the ^ results in _build/doctest/output.txt. goto end ) :end nipy-nibabel-d3c26be/doc/source/manual.rst000066400000000000000000000002171177264777700206620ustar00rootroot00000000000000.. _manual: ************** NiBabel Manual ************** .. toctree:: installation gettingstarted installing_data legal changelog nipy-nibabel-d3c26be/doc/source/old/000077500000000000000000000000001177264777700174315ustar00rootroot00000000000000nipy-nibabel-d3c26be/doc/source/old/design.txt000066400000000000000000000222171177264777700214470ustar00rootroot00000000000000.. -*- mode: rst -*- ================================= Images, headers and code design ================================= In which we set out how we are thinking of medical image formats and their commonalities. Headers ======= Headers contain two types of information: #. *howto* data: stuff to tell you how to read the image array data from file. This must include the shape of the image array and the numeric representation (float32, int16), as well as implicit or explicit position of the data relative to the beginning of the data file (offset). It can be complicated; ECAT - for example - can contain more than one frame, and the datatype can be different for each frame. #. *whatis* data: metadata about the meaning of the image array on file. We are interested in the relationship of the voxel positions in the data array to space in the real world. In practice (SPM Analyze, NIfTI, MINC) this can always be represented as an affine relating voxel coordinates to real world coordinates. We may also be interested in what the 'real world' is. Neither MINC (1.x) nor Analyze stores this, but NIfTI can. Howto data ---------- In order to get data out of files, any image reader will need either - the header itself, or selected fields from the header. Different images can make use of different parts of the header, because the images will work with only a specified set of headers - as dictated by the image itself. * in-file data numeric type - ``io_dtype``. This has no necessary relation to the dtype of the data in memory, because scaling factors may be applied. For reading, we may not need this as part of the public interface, we can just use it internally to cast the read memory to an array. Setting this attribute will change the output dtype on writing. ECAT file format can have different dtypes per frame; for reading, we just cast up to a dtype that can hold all the frame dtypes; for writing, we may just write as one type, or disallow writing altogether. * array shape - ``shape``. * byte offset - ``offset`` at which data starts. This is not relevant for the way we currently read MINC files for example - and may not be relevant for ECAT files, in the sense that it may be the offset to only one of the frames in the image, and the frames are of different length. Images ====== We think of an image as being the association of: #. A data array, of at least three dimensions, where the first three dimensions of the array are spatial. #. A transformation mapping the spatial array (voxel) coordinates to some real continuous space (real-world transform). #. A definition of what this space *is* ('scanner', 'mni', etc). .. note:: Why are the first three dimensions spatial? For simplicity, we want the transformation (above) to be spatial. Because the images are always at least 3D, and the transform is spatial, this means that the tranformation is always exactly 3D. We have to know which of the N image dimensions are spatial. For example, if we have a 4D (space and time) image, we need to know which of the 4 dimensions are spatial. We could ask the image to tell us, but the simplest thing is to assert which dimensions are spatial by convention, and obey that convention with our image readers. Right, but why the *first* three dimensions? Of course, it could be the last three dimensions. We chose to use the first three dimensions because that is the convention encoded in the NIfTI standard, at least implicitly, and it will be familiar to users of packages like SPM. Users of Numpy will have a slight preference for the first dimension of an array being the slowest changing on disk, and the instinct that time, rather than space, will usually be the slowest changing dimension on disk, but we didn't want to break the NIfTI and SPM conventions, on the basis of this instinct, because the instinct is difficult to explain to people who don't have it. So, our image likely has:: img.data img.affine img.output_space img.meta img.format where meta is a dictionary and format is an object that implements the image format API - see :ref:`image-formats` This immediately suggests the following interface:: img = Image(data, affine=None, output_space=None, meta=None, format=None, filename=None) The output space is a string img.output_space == 'mni' When there is no known output space, it is ``None``. The ``format`` attribute is part of the bridge pattern. That is, the ``format`` object provides the implementation for things that an image might want to do, or have done to it. The format will differ depending on the input or output type. What might we want to do to an image? We might imagine these methods:: img.load(filename, format=None) # class method img.save(filename=None, format=None) img.as_file(filemaker=None, format=None) and some things that formats generally support like:: img.write_header(filename=None) img.write_data(data=None, filename=None, slicedef=None) ``img.as_file`` returns the image as saved to disk; the image might completely correspond to something on disk, in which case it may return its own filename, or it might not correspond to something on disk, in which case it saves itself to disk with the given format, and returns the filename it has used. Data proxies - and lightweight images ------------------------------------- A particular use-case is where we want to part-load the image, but we do not yet want all the data, as the data can be very large and slow to load, or take up a lot of memory. For that case, the ``data`` attribute is a proxy object, subclassing ndarray, that knows to load itself when the data is accessed. The proxy object implements at least ``.shape``, but otherwise defers to the on-disk version of the array. The ``format`` object deals with this action. That is, the ``data`` object will have a pointer to the ``format`` attribute in some form - perhaps in the form of a ``format.get_data`` method. Of course, this is an optimization, and does not affect the interface for the ``Image`` (although it might affect the interface for ``Format``. Empty image ----------- This is a reminder of Souheil Inati's use-case - the iterative write. Perhaps something like:: empty_image = Image.empty(shape=(64,64,30,150), affine=np.eye(4)) empty_image.set_filespec('some_image.nii.gz') empty_image.write_header() for i in range(150): slicer = (slice(None),)*3 + (i,) data = np.random.normal(size=(64,64,30)) empty_image.write_data(data, slice=slicer) Images and files and filenames ------------------------------ Various image formats can have more than one filename per image. NIfTI is the obvious example because it can be either a single file:: some_image.nii or a pair of files (like Analyze):: some_image.img some_image.hdr SPM Analyze adds an optional extra data file in Matlab ``.mat`` format:: some_image.img some_image.hdr some_image.mat Of course there are rules / rules-of-thumb as to what extensions these various filenames can be. We may want to associate an image with a filename or set of filenames. But we may also want to be able to associate images with file-like objects, such as open files, or anything else that implements a file protocol. The image ``format`` will know what the ``image`` needs in terms of files. For example, a single file NIfTI image will need a single filename or single file-like object, whereas a NIfTI pair will need two files and two file-like objects. Let's call a full specification of what the format needs a *filedef*. For the moment, let's imagine that is a dictionary with keys ``image``, ``header``, and optional ``mat``. The values can be filenames or file-like objects. A *filespec* is some argument or set of arguments that allow us to fully specify a *filedef*. The simple case of a single-file NIfTI image:: img = Image(data, filespec='some_image.nii') img.filedef == {'image': 'some_image.nii', 'header': 'some_image.nii'} In this case, we haven't specified the format, and the Image constructor tries to work out the format from the filespec. Consider:: img = Image(data, filespec='some_image.nii', format=Nifti1SingleFormat) also OK. But:: img = Image(data, filespec='some_image.nii', format=AnalyzeFormat) might raise an error. For SPM analyze format: img = Image(data, filespec='some_image.img', format=AnalyzeFormat) img.filedef == {'image': 'some_image.img', 'header': 'some_image.hdr'} Now, for file-like objects:: fobj = open('some_image.nii') img = Image(data, filespec=fobj) img.filedef == {'image': fobj, 'header': fobj} might work - although the Image constructor would have to be smart enough to work out that this was ``Nifti1SingleFormat``. Or it might be the default. img = Image(data, filespec=fobj, format=AnalyzeFormat) might raise an error, on the lines of:: FormatError('Need image and header file-like objects for Analyze') - or it might just assume that you mean for the image and the header to be the same file. Perhaps that is too implicit. nipy-nibabel-d3c26be/doc/source/old/examples.txt000066400000000000000000000125031177264777700220110ustar00rootroot00000000000000.. -*- mode: rst -*- .. ex: set sts=4 ts=4 sw=4 et tw=79: ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### # # See COPYING file distributed along with the NiBabel package for the # copyright and license terms. # ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ******** Examples ******** The next sections contains some examples showing ways to use NiBabel to read and write imaging data from within Python to be able to process it with some random Python library. All examples assume that you have imported the NiBabel module by invoking: >>> import nibabel as nib and the ``os.path.join`` and ``os.path.split`` commands with: >>> from os.path import join as pjoin, split as psplit and we have made a temporary directory for the files we are going to write: >>> import tempfile >>> tmpdir = tempfile.mkdtemp() and we've got the path to the nifti example data: >>> from nibabel.testing import data_path as example_data_path Loading and saving NIfTI files ============================== First we will open the tiny example NIfTI file that is included in the NiBabel source tarball. No filename extension is necessary as libniftiio determines it automatically: >>> example_4d_fname = pjoin(example_data_path, 'example4d.nii.gz') >>> img = nib.load(example_4d_fname) If you want to save this image as an uncompressed image simply do: >>> # a filename in our temporary directory >>> fname = pjoin(tmpdir, 'something.nii') >>> nib.save(img, fname) NIfTI files from array data =========================== The next code snipped demonstrates how to create a 4d NIfTI image containing gaussian noise. First we need to import the NumPy module >>> import numpy as np Now we generate the noise dataset. Let's generate noise for 100 volumes with 16 slices and a 32x32 inplane matrix. >>> noise = np.random.randn(32, 32, 16, 100) The datatype of the array is by default ``float64``, which can be verified by: >>> noise.dtype dtype('float64') Converting this dataset into a NIfTI image is done by invoking the :class:`~nibabel.Nifti1Image` constructor with the noise dataset as argument: >>> nim = nib.Nifti1Image(noise, np.eye(4)) The relevant header information is extracted from the NumPy array. If you query the header information about the dimensionality of the image, it returns the desired values: >>> print nim.get_header()['dim'] [ 4 32 32 16 100 1 1 1] First value shows the number of dimensions in the datset: 4 (good, that's what we wanted). The following numbers are dataset size on the x, y, z, t, u, v, w axis (NIfTI files can handle up to 7 dimensions). Also the datatype was set appropriately: >>> print nim.get_data_dtype() float64 To save the noise file to disk, we can simply call the :meth:`~nifti.image.NiftiImage.save` method: >>> # a filename in our temporary directory >>> noise_fname = pjoin(tmpdir, 'noise.nii.gz') >>> nib.save(nim, noise_fname) Select ROIs =========== Suppose you want to have the first ten volumes of the noise dataset we have previously created in a separate file. First, we open the file: >>> nim = nib.load(noise_fname) Now we select the first ten volumes and store them to another file, while preserving as much header information as possible >>> nim2 = nib.Nifti1Image(nim.get_data()[..., :10], ... nim.get_affine(), ... nim.get_header()) >>> print nim2.get_header()['dim'] [ 4 32 32 16 10 1 1 1] >>> # a filename in our temporary directory >>> fname = pjoin(tmpdir, 'part.hdr.gz') >>> nib.save(nim2, fname) The :class:`~nifti.image.NiftiImage` constructor takes a dictionary with header information as an optional argument. Settings that are not determined by the array (e.g. size, datatype) are taken from the dictionary and stored to the new NIfTI image. Linear detrending of timeseries (SciPy module is required for this example) =========================================================================== Let's load another 4d NIfTI file and perform a linear detrending, by fitting a straight line to the timeseries of each voxel and substract that fit from the data. Although this might sound complicated at first, thanks to the excellent SciPy module it is just a few lines of code. For this example we will first create a NIfTI image with just a single voxel and 50 timepoints (basically a linear function with some noise): >>> nim = nib.Nifti1Image( ... (np.linspace(0,100) + np.random.randn(50)).reshape(1,1,1,50), ... np.eye(4)) >>> print nim.get_header()['dim'] [ 4 1 1 1 50 1 1 1] Depending on the datatype of the input image the detrending process might change the datatype from integer to float. As operations that change the (binary) size of the NIfTI image are not supported, we need to make a copy of the data and later create a new NIfTI image. Remember that the array has the time axis as its first dimension (in contrast to the NIfTI file where it is the 4th). >>> from scipy import signal >>> data_detrended = signal.detrend(nim.get_data(), axis=0) Finally, create a new NIfTI image using header information from the original source image. >>> nim_detrended = nib.Nifti1Image(data_detrended, ... nim.get_affine(), ... nim.get_header()) nipy-nibabel-d3c26be/doc/source/old/format_design.txt000066400000000000000000000064051177264777700230200ustar00rootroot00000000000000.. -*- rst -*- .. _image-formats: ===================== Images and formats ===================== The Image object contains (*has a*) Format object. The Image and the Format objects form a `bridge pattern `_. In the `wikipedia diagram `_ the Image class plays the role of the Abstraction, and the Format plays the role of the implementor. The Format object provides an interface to the underlying file format. The Image has the following methods: * img.get_data() * img.save(fname) It has attributes: * affine * world * io_dtype * format We get the data with ``get_data()``, rather than via an attribute, to reflect that fact that the data is read-only, and to flag the common case where the data load is delayed until the data is used. The object can decide what it does about data caching between calls of ``get_data()``. Another option is to make the data a cached property or single-shot data descriptor; I prefer using the method call, for simplicity, and to make clear that the data load may take a long time. Example code:: import numpy as np from nibabel import Image from nibabel.formats import Nifti1 from nibabel.ref import mni arr = np.arange(24).reshape(2,3,4) img = Image(data = arr) assert img.affine is None assert img.world is None img.affine = np.eye(4) img.world = mni data = img.get_data() assert data.shape == (2,3,4) assert np.all(data == arr) # The format object is Nifti1 by default. It's also empty assert img.format.fields == Nifti1().fields img.save('some_file.nii') Note the decoupling between the information carried by the format, and the information in the ``img`` instance. The format instance, carries the format, as instantiated by loading from disk, or object creation, and is only updated on ``img.save(fname)``. This is to allow formats that cannot encode either affine or world information. If you want to manipulate fields or other information in the specific format, you probably want to instantiate the format object directly (see below). Format objects ============== The API of the format object encapsulates two things: * the shared interface to underlying image formats that is used by ``Image`` * format-specific attributes and calls The API required by ``Image`` is: * fmt.get_affine() * fmt.set_affine(aff) * fmt.get_world() * fmt.set_world(world) * fmt.get_io_dtype() * fmt.set_io_dtype(dtype) * fmt.read_data() * fmt.write_data(arr) * fmt.to_filename(fname) * fmt.from_filename() The last to save the format to the file(s) given by ``fname``. We may also want the ability to write to sets of file objects, for testing, and for abstraction of the base writing layer. * fmt.to_filemap(fmap) * fmt.from_filemap(fmap) where ``fmap`` is a class, currently called ``FileTuple`` that contains mappings of file meanings (like ``image`` or ``header``) to file objects. With this model, we may often find ourselves using the Format object for format-specific tasks:: from nibabel.formats import Nifti1 fmt = Nifti1.from_filename('some_file.nii') fmt.set_qform(np.eye(4)) fmt.set_sform(np.eye(4) * 2) fmt.fields['descrip'] = 'some information' fmt.to_filename('another_file.nii') nipy-nibabel-d3c26be/doc/source/old/orientation.txt000066400000000000000000000140601177264777700225260ustar00rootroot00000000000000.. _image-orientation: =================== Image orientation =================== Every image in ``nibabel`` has an orientation. The orientation is the relationship between the voxels in the image array, and millimeters in some space. Affines as orientation ---------------------- Orientations are expressed by 4 by 4 affine arrays. 4x4 affine arrays give, in homogenous coordinates, the relationship between the coordinates in the voxel array, and millimeters. Let is say that I have a simple affine like this: >>> import numpy as np >>> aff = np.diag((2, 3, 4, 1)) >>> aff[:3,3] = [10, 11, 12] And I have a voxel coordinate: >>> coord = np.array([3, 2, 1]) then the millimeter coordinate for that voxel is given by: >>> # add extra 1 for homogenous coordinates >>> homogenous_coord = np.concatenate((coord, [1])) >>> mm_coord = np.dot(aff, homogenous_coord)[:3] >>> mm_coord array([16, 17, 16]) Affines and image formats ------------------------- Some image formats (such as nifti) allow storage of affine or affine-like image orientation, and some do not (such as Analyze). Almost all image formats allow you to save an image without any affine information. Most image orientation problems arise for images that do not have full affine information, and we have to guess. Making an affine when there is no stored affine ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ If there is no affine information, we have to make some best-guess affine for the image. In this case, the image is assumed to be saved (fastest to slowest changing) in X, Y, Z dimension order, and we construct a 4x4 affine ``aff`` where ``aff[:3,:3]`` is a diagonal matrix with the X, Y, Z zooms (voxel sizes) as entries - ``diag(aff)``. The translation part of the affine ``aff[:3, 3]`` is such that the central voxel in the image is at 0, 0, 0 mm (this is not completely true for SPM images, with may have encoded a particular voxel as the origiin using the ``origin`` field of the SPM version of the Analyze header). The left-right orientation of the image in this case boils down to whether the first voxel in the image (and in any x line) is the left-most voxel or the right-most voxel. If it is the left-most, the image is said to be in 'neurological' orientation, and if it is the right-most, it's in 'radiological' orientation. These terms only make sense in this case, where there is no affine, and we are assuming X, Y, Z data storage on disk. If we deem the image to be 'neurological' then the guessed affine above will be correct, as a transform from voxel coordinates to mm coordinates. If it is 'radiological', then we need to multiply the 'X' zoom (``aff[0,0]``) by -1, and adjust the X translation (``aff[0,3]``) accordingly. In ``nibabel`` we assume that any image without an affine has been stored in radiological order on disk - and thus the guessed affine needs a left-right flip. This is true for all Analyze-type image formats (Analyze, SPM analyze, nifti). If you want to change this (please don't unless you are absolutely sure what you are doing), the default is encoded in the ``default_x_flip`` class variable where True corresponds to 'radiological' and False corresponds to 'neurological'. If you want to load images that are in neurological disk format, I strongly suggest that, instead of changing this default, you adjust the affine after loading, as in:: img = nibabel.load('some_image.img') aff = img.get_affine() x_flipper = np.diag([-1,1,1,1]) lr_img = nibabel.Nifti1Image(img.get_data, np.dot(x_flipper, aff), img.get_header()) Affines for Analyze, SPM analyze, and NIFTI ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Analyze images can't have an affine, so the above always applies to Analyze images. SPM99 images are unpleasantly confusing, because they may have an affine stored in a 'some_image.mat' file, in a matrix called 'M', but the affine for the image, is given by (from the code above) ``np.dot(x_flipper, M)`` - that is - the affine gives the transformations to be applied before any left-right flipping, where left-right flipping is determined by the ``default_x_flip`` above. Horrible. SPM2 images are a bit more straightforward, in that there may be an affine, again stored in the 'some_image.mat' file, but, if the image has been written in SPM2, or by us, in SPM2 format, then there should be a 'mat' matrix in that file, that has the full affine, which is unaffected by the ``default_x_flip``. However, if we are loading what appears to be an SPM99 image, that only has a mat file with an 'M' matrix, we apply the default flip as above. Whenever we save an SPM99 image, we save an SPM2-like ``.mat`` file, with both the flip-specifying 'mat' matrix, and the pre-flip 'M' matrix, because this is still backwards compatible, and might be less liable to chaos if someone changes the default flip setting. Then, we have nifti, which can store two affines, the ``qform`` and the ``sform``. If the ``sform`` is present, we load that, otherwise, if the ``qform`` is present, we use that. Either of these affines fully specifies orientation, that is, they ignore any settings of ``default_x_flip``. If the nifti has neither a ``qform`` or an ``sform``, we guess at the affine with the algorithm above, and the ``default_x_flip`` comes into play again. Note that, for nifti images without affines, we don't followw the nifti standard. In the nifti standard, if an image does not have an affine, then the affine is deemed to be ``diag([xs, ys, zs, 1])`` where ``xs, ys, zs`` are the X, Y and Z zooms (voxel sizes) respectively. This array has no concept of left-right flipping corresponding to radiological orientation, and assumes the image origin (voxel corresponding to 0, 0, 0 in millimeters) is the first voxel in the image. ``nibabel`` differs from the nifti standard, for images without affines, in using the center of the image as the origin, and flipping left-right by default. We chose this break from the standard because that is what SPM does with non-affine niftis, and because it seemed more sensible, and because it's more consistent with what we do with SPM non-nifti images (not surprisingly). nipy-nibabel-d3c26be/doc/sphinxext/000077500000000000000000000000001177264777700174055ustar00rootroot00000000000000nipy-nibabel-d3c26be/doc/sphinxext/README.txt000066400000000000000000000014671177264777700211130ustar00rootroot00000000000000=================== Sphinx Extensions =================== We've copied these sphinx extensions over from nipy-core. Any edits should be done upstream in nipy-core, not here in nipype! These are a few sphinx extensions we are using to build the nipy documentation. In this file we list where they each come from, since we intend to always push back upstream any modifications or improvements we make to them. It's worth noting that some of these are being carried (as copies) by more than one project. Hopefully once they mature a little more, they will be incorproated back into sphinx itself, so that all projects can use a common base. * From numpy: * docscrape.py * docscrape_sphinx.py * numpydoc.py * From matplotlib: * inheritance_diagram.py * ipython_console_highlighting.py * only_directives.py nipy-nibabel-d3c26be/doc/sphinxext/autosummary.py000066400000000000000000000270261177264777700223540ustar00rootroot00000000000000# emacs: -*- mode: python-mode; py-indent-offset: 4; indent-tabs-mode: nil -*- # vi: set ft=python sts=4 ts=4 sw=4 et: ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ## # # See COPYING file distributed along with the NiBabel package for the # copyright and license terms. # ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ## """ =========== autosummary =========== Sphinx extension that adds an autosummary:: directive, which can be used to generate function/method/attribute/etc. summary lists, similar to those output eg. by Epydoc and other API doc generation tools. An :autolink: role is also provided. autosummary directive --------------------- The autosummary directive has the form:: .. autosummary:: :nosignatures: :toctree: generated/ module.function_1 module.function_2 ... and it generates an output table (containing signatures, optionally) ======================== ============================================= module.function_1(args) Summary line from the docstring of function_1 module.function_2(args) Summary line from the docstring ... ======================== ============================================= If the :toctree: option is specified, files matching the function names are inserted to the toctree with the given prefix: generated/module.function_1 generated/module.function_2 ... Note: The file names contain the module:: or currentmodule:: prefixes. .. seealso:: autosummary_generate.py autolink role ------------- The autolink role functions as ``:obj:`` when the name referred can be resolved to a Python object, and otherwise it becomes simple emphasis. This can be used as the default role to make links 'smart'. """ import sys, os, posixpath, re from docutils.parsers.rst import directives from docutils.statemachine import ViewList from docutils import nodes import sphinx.addnodes, sphinx.roles from sphinx.util import patfilter from docscrape_sphinx import get_doc_object import warnings warnings.warn( "The numpydoc.autosummary extension can also be found as " "sphinx.ext.autosummary in Sphinx >= 0.6, and the version in " "Sphinx >= 0.7 is superior to the one in numpydoc. This numpydoc " "version of autosummary is no longer maintained.", DeprecationWarning, stacklevel=2) def setup(app): app.add_directive('autosummary', autosummary_directive, True, (0, 0, False), toctree=directives.unchanged, nosignatures=directives.flag) app.add_role('autolink', autolink_role) app.add_node(autosummary_toc, html=(autosummary_toc_visit_html, autosummary_toc_depart_noop), latex=(autosummary_toc_visit_latex, autosummary_toc_depart_noop)) app.connect('doctree-read', process_autosummary_toc) #------------------------------------------------------------------------------ # autosummary_toc node #------------------------------------------------------------------------------ class autosummary_toc(nodes.comment): pass def process_autosummary_toc(app, doctree): """ Insert items described in autosummary:: to the TOC tree, but do not generate the toctree:: list. """ env = app.builder.env crawled = {} def crawl_toc(node, depth=1): crawled[node] = True for j, subnode in enumerate(node): try: if (isinstance(subnode, autosummary_toc) and isinstance(subnode[0], sphinx.addnodes.toctree)): env.note_toctree(env.docname, subnode[0]) continue except IndexError: continue if not isinstance(subnode, nodes.section): continue if subnode not in crawled: crawl_toc(subnode, depth+1) crawl_toc(doctree) def autosummary_toc_visit_html(self, node): """Hide autosummary toctree list in HTML output""" raise nodes.SkipNode def autosummary_toc_visit_latex(self, node): """Show autosummary toctree (= put the referenced pages here) in Latex""" pass def autosummary_toc_depart_noop(self, node): pass #------------------------------------------------------------------------------ # .. autosummary:: #------------------------------------------------------------------------------ def autosummary_directive(dirname, arguments, options, content, lineno, content_offset, block_text, state, state_machine): """ Pretty table containing short signatures and summaries of functions etc. autosummary also generates a (hidden) toctree:: node. """ names = [] names += [x.strip().split()[0] for x in content if x.strip() and re.search(r'^[a-zA-Z_]', x.strip()[0])] table, warnings, real_names = get_autosummary(names, state, 'nosignatures' in options) node = table env = state.document.settings.env suffix = env.config.source_suffix all_docnames = env.found_docs.copy() dirname = posixpath.dirname(env.docname) if 'toctree' in options: tree_prefix = options['toctree'].strip() docnames = [] for name in names: name = real_names.get(name, name) docname = tree_prefix + name if docname.endswith(suffix): docname = docname[:-len(suffix)] docname = posixpath.normpath(posixpath.join(dirname, docname)) if docname not in env.found_docs: warnings.append(state.document.reporter.warning( 'toctree references unknown document %r' % docname, line=lineno)) docnames.append(docname) tocnode = sphinx.addnodes.toctree() tocnode['includefiles'] = docnames tocnode['maxdepth'] = -1 tocnode['glob'] = None tocnode['entries'] = [(None, docname) for docname in docnames] tocnode = autosummary_toc('', '', tocnode) return warnings + [node] + [tocnode] else: return warnings + [node] def get_autosummary(names, state, no_signatures=False): """ Generate a proper table node for autosummary:: directive. Parameters ---------- names : list of str Names of Python objects to be imported and added to the table. document : document Docutils document object """ document = state.document real_names = {} warnings = [] prefixes = [''] prefixes.insert(0, document.settings.env.currmodule) table = nodes.table('') group = nodes.tgroup('', cols=2) table.append(group) group.append(nodes.colspec('', colwidth=10)) group.append(nodes.colspec('', colwidth=90)) body = nodes.tbody('') group.append(body) def append_row(*column_texts): row = nodes.row('') for text in column_texts: node = nodes.paragraph('') vl = ViewList() vl.append(text, '') state.nested_parse(vl, 0, node) try: if isinstance(node[0], nodes.paragraph): node = node[0] except IndexError: pass row.append(nodes.entry('', node)) body.append(row) for name in names: try: obj, real_name = import_by_name(name, prefixes=prefixes) except ImportError: warnings.append(document.reporter.warning( 'failed to import %s' % name)) append_row(":obj:`%s`" % name, "") continue real_names[name] = real_name doc = get_doc_object(obj) if doc['Summary']: title = " ".join(doc['Summary']) else: title = "" col1 = u":obj:`%s <%s>`" % (name, real_name) if doc['Signature']: sig = re.sub('^[^(\[]*', '', doc['Signature'].strip()) if '=' in sig: # abbreviate optional arguments sig = re.sub(r', ([a-zA-Z0-9_]+)=', r'[, \1=', sig, count=1) sig = re.sub(r'\(([a-zA-Z0-9_]+)=', r'([\1=', sig, count=1) sig = re.sub(r'=[^,)]+,', ',', sig) sig = re.sub(r'=[^,)]+\)$', '])', sig) # shorten long strings sig = re.sub(r'(\[.{16,16}[^,]*?),.*?\]\)', r'\1, ...])', sig) else: sig = re.sub(r'(\(.{16,16}[^,]*?),.*?\)', r'\1, ...)', sig) # make signature contain non-breaking spaces col1 += u"\\ \u00a0" + unicode(sig).replace(u" ", u"\u00a0") col2 = title append_row(col1, col2) return table, warnings, real_names def import_by_name(name, prefixes=[None]): """ Import a Python object that has the given name, under one of the prefixes. Parameters ---------- name : str Name of a Python object, eg. 'numpy.ndarray.view' prefixes : list of (str or None), optional Prefixes to prepend to the name (None implies no prefix). The first prefixed name that results to successful import is used. Returns ------- obj The imported object name Name of the imported object (useful if `prefixes` was used) """ for prefix in prefixes: try: if prefix: prefixed_name = '.'.join([prefix, name]) else: prefixed_name = name return _import_by_name(prefixed_name), prefixed_name except ImportError: pass raise ImportError def _import_by_name(name): """Import a Python object given its full name""" try: # try first interpret `name` as MODNAME.OBJ name_parts = name.split('.') try: modname = '.'.join(name_parts[:-1]) __import__(modname) return getattr(sys.modules[modname], name_parts[-1]) except (ImportError, IndexError, AttributeError): pass # ... then as MODNAME, MODNAME.OBJ1, MODNAME.OBJ1.OBJ2, ... last_j = 0 modname = None for j in reversed(range(1, len(name_parts)+1)): last_j = j modname = '.'.join(name_parts[:j]) try: __import__(modname) except ImportError: continue if modname in sys.modules: break if last_j < len(name_parts): obj = sys.modules[modname] for obj_name in name_parts[last_j:]: obj = getattr(obj, obj_name) return obj else: return sys.modules[modname] except (ValueError, ImportError, AttributeError, KeyError), e: raise ImportError(e) #------------------------------------------------------------------------------ # :autolink: (smart default role) #------------------------------------------------------------------------------ def autolink_role(typ, rawtext, etext, lineno, inliner, options={}, content=[]): """ Smart linking role. Expands to ":obj:`text`" if `text` is an object that can be imported; otherwise expands to "*text*". """ r = sphinx.roles.xfileref_role('obj', rawtext, etext, lineno, inliner, options, content) pnode = r[0][0] prefixes = [None] #prefixes.insert(0, inliner.document.settings.env.currmodule) try: obj, name = import_by_name(pnode['reftarget'], prefixes) except ImportError: content = pnode[0] r[0][0] = nodes.emphasis(rawtext, content[0].astext(), classes=content['classes']) return r nipy-nibabel-d3c26be/doc/sphinxext/autosummary/000077500000000000000000000000001177264777700217735ustar00rootroot00000000000000nipy-nibabel-d3c26be/doc/sphinxext/autosummary/__init__.py000066400000000000000000000400651177264777700241110ustar00rootroot00000000000000# -*- coding: utf-8 -*- """ sphinx.ext.autosummary ~~~~~~~~~~~~~~~~~~~~~~ Sphinx extension that adds an autosummary:: directive, which can be used to generate function/method/attribute/etc. summary lists, similar to those output eg. by Epydoc and other API doc generation tools. An :autolink: role is also provided. autosummary directive --------------------- The autosummary directive has the form:: .. autosummary:: :nosignatures: :toctree: generated/ module.function_1 module.function_2 ... and it generates an output table (containing signatures, optionally) ======================== ============================================= module.function_1(args) Summary line from the docstring of function_1 module.function_2(args) Summary line from the docstring ... ======================== ============================================= If the :toctree: option is specified, files matching the function names are inserted to the toctree with the given prefix: generated/module.function_1 generated/module.function_2 ... Note: The file names contain the module:: or currentmodule:: prefixes. .. seealso:: autosummary_generate.py autolink role ------------- The autolink role functions as ``:obj:`` when the name referred can be resolved to a Python object, and otherwise it becomes simple emphasis. This can be used as the default role to make links 'smart'. :copyright: Copyright 2007-2009 by the Sphinx team, see AUTHORS. :license: BSD, see LICENSE for details. """ import os import re import sys import inspect import posixpath from os import path from docutils.parsers.rst import directives from docutils.statemachine import ViewList from docutils import nodes from sphinx import addnodes, roles from sphinx.util import patfilter from sphinx.util.compat import Directive # -- autosummary_toc node ------------------------------------------------------ class autosummary_toc(nodes.comment): pass def process_autosummary_toc(app, doctree): """ Insert items described in autosummary:: to the TOC tree, but do not generate the toctree:: list. """ env = app.builder.env crawled = {} def crawl_toc(node, depth=1): crawled[node] = True for j, subnode in enumerate(node): try: if (isinstance(subnode, autosummary_toc) and isinstance(subnode[0], addnodes.toctree)): env.note_toctree(env.docname, subnode[0]) continue except IndexError: continue if not isinstance(subnode, nodes.section): continue if subnode not in crawled: crawl_toc(subnode, depth+1) crawl_toc(doctree) def autosummary_toc_visit_html(self, node): """Hide autosummary toctree list in HTML output.""" raise nodes.SkipNode def autosummary_noop(self, node): pass # -- autosummary_table node ---------------------------------------------------- class autosummary_table(nodes.comment): pass def autosummary_table_visit_html(self, node): """Make the first column of the table non-breaking.""" try: tbody = node[0][0][-1] for row in tbody: col1_entry = row[0] par = col1_entry[0] for j, subnode in enumerate(list(par)): if isinstance(subnode, nodes.Text): new_text = unicode(subnode.astext()) new_text = new_text.replace(u" ", u"\u00a0") par[j] = nodes.Text(new_text) except IndexError: pass # -- autodoc integration ------------------------------------------------------- try: ismemberdescriptor = inspect.ismemberdescriptor isgetsetdescriptor = inspect.isgetsetdescriptor except AttributeError: def ismemberdescriptor(obj): return False isgetsetdescriptor = ismemberdescriptor def get_documenter(obj): """ Get an autodoc.Documenter class suitable for documenting the given object """ import sphinx.ext.autodoc as autodoc if inspect.isclass(obj): if issubclass(obj, Exception): return autodoc.ExceptionDocumenter return autodoc.ClassDocumenter elif inspect.ismodule(obj): return autodoc.ModuleDocumenter elif inspect.ismethod(obj) or inspect.ismethoddescriptor(obj): return autodoc.MethodDocumenter elif (ismemberdescriptor(obj) or isgetsetdescriptor(obj) or inspect.isdatadescriptor(obj)): return autodoc.AttributeDocumenter elif inspect.isroutine(obj): return autodoc.FunctionDocumenter else: return autodoc.DataDocumenter # -- .. autosummary:: ---------------------------------------------------------- class Autosummary(Directive): """ Pretty table containing short signatures and summaries of functions etc. autosummary also generates a (hidden) toctree:: node. """ required_arguments = 0 optional_arguments = 0 final_argument_whitespace = False has_content = True option_spec = { 'toctree': directives.unchanged, 'nosignatures': directives.flag, 'template': directives.unchanged, } def warn(self, msg): self.warnings.append(self.state.document.reporter.warning( msg, line=self.lineno)) def run(self): self.env = env = self.state.document.settings.env self.genopt = {} self.warnings = [] names = [x.strip().split()[0] for x in self.content if x.strip() and re.search(r'^[~a-zA-Z_]', x.strip()[0])] items = self.get_items(names) nodes = self.get_table(items) if 'toctree' in self.options: suffix = env.config.source_suffix all_docnames = env.found_docs.copy() dirname = posixpath.dirname(env.docname) tree_prefix = self.options['toctree'].strip() docnames = [] for name, sig, summary, real_name in items: docname = posixpath.join(tree_prefix, real_name) if docname.endswith(suffix): docname = docname[:-len(suffix)] docname = posixpath.normpath(posixpath.join(dirname, docname)) if docname not in env.found_docs: self.warn('toctree references unknown document %r' % docname) docnames.append(docname) tocnode = addnodes.toctree() tocnode['includefiles'] = docnames tocnode['entries'] = [(None, docname) for docname in docnames] tocnode['maxdepth'] = -1 tocnode['glob'] = None tocnode = autosummary_toc('', '', tocnode) nodes.append(tocnode) return self.warnings + nodes def get_items(self, names): """ Try to import the given names, and return a list of ``[(name, signature, summary_string, real_name), ...]``. """ env = self.state.document.settings.env prefixes = [''] if env.currmodule: prefixes.insert(0, env.currmodule) items = [] max_item_chars = 50 for name in names: display_name = name if name.startswith('~'): name = name[1:] display_name = name.split('.')[-1] try: obj, real_name = import_by_name(name, prefixes=prefixes) except ImportError: self.warn('failed to import %s' % name) items.append((name, '', '', name)) continue # NB. using real_name here is important, since Documenters # handle module prefixes slightly differently documenter = get_documenter(obj)(self, real_name) if not documenter.parse_name(): self.warn('failed to parse name %s' % real_name) items.append((display_name, '', '', real_name)) continue if not documenter.import_object(): self.warn('failed to import object %s' % real_name) items.append((display_name, '', '', real_name)) continue # -- Grab the signature sig = documenter.format_signature() if not sig: sig = '' else: max_chars = max(10, max_item_chars - len(display_name)) sig = mangle_signature(sig, max_chars=max_chars) sig = sig.replace('*', r'\*') # -- Grab the summary doc = list(documenter.process_doc(documenter.get_doc())) while doc and not doc[0].strip(): doc.pop(0) m = re.search(r"^([A-Z][^A-Z]*?\.\s)", " ".join(doc).strip()) if m: summary = m.group(1).strip() elif doc: summary = doc[0].strip() else: summary = '' items.append((display_name, sig, summary, real_name)) return items def get_table(self, items): """ Generate a proper list of table nodes for autosummary:: directive. *items* is a list produced by :meth:`get_items`. """ table_spec = addnodes.tabular_col_spec() table_spec['spec'] = 'LL' table = autosummary_table('') real_table = nodes.table('') table.append(real_table) group = nodes.tgroup('', cols=2) real_table.append(group) group.append(nodes.colspec('', colwidth=10)) group.append(nodes.colspec('', colwidth=90)) body = nodes.tbody('') group.append(body) def append_row(*column_texts): row = nodes.row('') for text in column_texts: node = nodes.paragraph('') vl = ViewList() vl.append(text, '') self.state.nested_parse(vl, 0, node) try: if isinstance(node[0], nodes.paragraph): node = node[0] except IndexError: pass row.append(nodes.entry('', node)) body.append(row) for name, sig, summary, real_name in items: qualifier = 'obj' if 'nosignatures' not in self.options: col1 = ':%s:`%s <%s>`\ %s' % (qualifier, name, real_name, sig) else: col1 = ':%s:`%s <%s>`' % (qualifier, name, real_name) col2 = summary append_row(col1, col2) return [table_spec, table] def mangle_signature(sig, max_chars=30): """Reformat a function signature to a more compact form.""" sig = re.sub(r"^\((.*)\)$", r"\1", sig) + ", " r = re.compile(r"(?P[a-zA-Z0-9_*]+)(?P=.*?)?, ") items = r.findall(sig) args = [name for name, default in items if not default] opts = [name for name, default in items if default] sig = limited_join(", ", args, max_chars=max_chars-2) if opts: if not sig: sig = "[%s]" % limited_join(", ", opts, max_chars=max_chars-4) elif len(sig) < max_chars - 4 - 2 - 3: sig += "[, %s]" % limited_join(", ", opts, max_chars=max_chars-len(sig)-4-2) return u"(%s)" % sig def limited_join(sep, items, max_chars=30, overflow_marker="..."): """ Join a number of strings to one, limiting the length to *max_chars*. If the string overflows this limit, replace the last fitting item by *overflow_marker*. Returns: joined_string """ full_str = sep.join(items) if len(full_str) < max_chars: return full_str n_chars = 0 n_items = 0 for j, item in enumerate(items): n_chars += len(item) + len(sep) if n_chars < max_chars - len(overflow_marker): n_items += 1 else: break return sep.join(list(items[:n_items]) + [overflow_marker]) # -- Importing items ----------------------------------------------------------- def import_by_name(name, prefixes=[None]): """ Import a Python object that has the given *name*, under one of the *prefixes*. The first name that succeeds is used. """ tried = [] for prefix in prefixes: try: if prefix: prefixed_name = '.'.join([prefix, name]) else: prefixed_name = name return _import_by_name(prefixed_name), prefixed_name except ImportError: tried.append(prefixed_name) raise ImportError('no module named %s' % ' or '.join(tried)) def _import_by_name(name): """Import a Python object given its full name.""" try: name_parts = name.split('.') # try first interpret `name` as MODNAME.OBJ modname = '.'.join(name_parts[:-1]) if modname: try: __import__(modname) return getattr(sys.modules[modname], name_parts[-1]) except (ImportError, IndexError, AttributeError): pass # ... then as MODNAME, MODNAME.OBJ1, MODNAME.OBJ1.OBJ2, ... last_j = 0 modname = None for j in reversed(range(1, len(name_parts)+1)): last_j = j modname = '.'.join(name_parts[:j]) try: __import__(modname) except ImportError: continue if modname in sys.modules: break if last_j < len(name_parts): obj = sys.modules[modname] for obj_name in name_parts[last_j:]: obj = getattr(obj, obj_name) return obj else: return sys.modules[modname] except (ValueError, ImportError, AttributeError, KeyError), e: raise ImportError(*e.args) # -- :autolink: (smart default role) ------------------------------------------- def autolink_role(typ, rawtext, etext, lineno, inliner, options={}, content=[]): """ Smart linking role. Expands to ':obj:`text`' if `text` is an object that can be imported; otherwise expands to '*text*'. """ r = roles.xfileref_role('obj', rawtext, etext, lineno, inliner, options, content) pnode = r[0][0] prefixes = [None] #prefixes.insert(0, inliner.document.settings.env.currmodule) try: obj, name = import_by_name(pnode['reftarget'], prefixes) except ImportError: content = pnode[0] r[0][0] = nodes.emphasis(rawtext, content[0].astext(), classes=content['classes']) return r def process_generate_options(app): genfiles = app.config.autosummary_generate ext = app.config.source_suffix if genfiles and not hasattr(genfiles, '__len__'): env = app.builder.env genfiles = [x + ext for x in env.found_docs if os.path.isfile(env.doc2path(x))] if not genfiles: return from sphinx.ext.autosummary.generate import generate_autosummary_docs genfiles = [genfile + (not genfile.endswith(ext) and ext or '') for genfile in genfiles] generate_autosummary_docs(genfiles, builder=app.builder, warn=app.warn, info=app.info, suffix=ext, base_path=app.srcdir) def setup(app): # I need autodoc app.setup_extension('sphinx.ext.autodoc') app.add_node(autosummary_toc, html=(autosummary_toc_visit_html, autosummary_noop), latex=(autosummary_noop, autosummary_noop), text=(autosummary_noop, autosummary_noop)) app.add_node(autosummary_table, html=(autosummary_table_visit_html, autosummary_noop), latex=(autosummary_noop, autosummary_noop), text=(autosummary_noop, autosummary_noop)) app.add_directive('autosummary', Autosummary) app.add_role('autolink', autolink_role) app.connect('doctree-read', process_autosummary_toc) app.connect('builder-inited', process_generate_options) app.add_config_value('autosummary_generate', [], True) nipy-nibabel-d3c26be/doc/sphinxext/autosummary/generate.py000066400000000000000000000252441177264777700241460ustar00rootroot00000000000000# -*- coding: utf-8 -*- """ sphinx.ext.autosummary.generate ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Usable as a library or script to generate automatic RST source files for items referred to in autosummary:: directives. Each generated RST file contains a single auto*:: directive which extracts the docstring of the referred item. Example Makefile rule:: generate: sphinx-autogen source/*.rst source/generated :copyright: Copyright 2007-2010 by the Sphinx team, see AUTHORS. :license: BSD, see LICENSE for details. """ import os import re import sys import optparse import inspect import pydoc from jinja2 import FileSystemLoader, TemplateNotFound from jinja2.sandbox import SandboxedEnvironment from autosummary import import_by_name, get_documenter from sphinx.util import ensuredir from sphinx.jinja2glue import BuiltinTemplateLoader def main(argv=sys.argv): usage = """%prog [OPTIONS] SOURCEFILE ...""" p = optparse.OptionParser(usage.strip()) p.add_option("-o", "--output-dir", action="store", type="string", dest="output_dir", default=None, help="Directory to place all output in") p.add_option("-s", "--suffix", action="store", type="string", dest="suffix", default="rst", help="Default suffix for files (default: %default)") p.add_option("-t", "--templates", action="store", type="string", dest="templates", default=None, help="Custom template directory (default: %default)") options, args = p.parse_args(argv[1:]) if len(args) < 1: p.error('no input files given') generate_autosummary_docs(args, options.output_dir, "." + options.suffix, template_dir=options.templates) def _simple_info(msg): print msg def _simple_warn(msg): print >> sys.stderr, 'WARNING: ' + msg # -- Generating output --------------------------------------------------------- def _is_from_same_file(obj1, obj2): try: return inspect.getsourcefile(obj1) == inspect.getsourcefile(obj2) except TypeError: return False def generate_autosummary_docs(sources, output_dir=None, suffix='.rst', warn=_simple_warn, info=_simple_info, base_path=None, builder=None, template_dir=None): showed_sources = list(sorted(sources)) if len(showed_sources) > 20: showed_sources = showed_sources[:10] + ['...'] + showed_sources[-10:] info('[autosummary] generating autosummary for: %s' % ', '.join(showed_sources)) if output_dir: info('[autosummary] writing to %s' % output_dir) if base_path is not None: sources = [os.path.join(base_path, filename) for filename in sources] # create our own templating environment template_dirs = [os.path.join(os.path.dirname(__file__), template_dir)] if builder is not None: # allow the user to override the templates template_loader = BuiltinTemplateLoader() template_loader.init(builder, dirs=template_dirs) else: if template_dir: template_dirs.insert(0, template_dir) template_loader = FileSystemLoader(template_dirs) template_env = SandboxedEnvironment(loader=template_loader) # read items = find_autosummary_in_files(sources) # remove possible duplicates items = dict([(item, True) for item in items]).keys() # keep track of new files new_files = [] # write for name, path, template_name in sorted(items): if path is None: # The corresponding autosummary:: directive did not have # a :toctree: option continue path = output_dir or os.path.abspath(path) ensuredir(path) try: obj, name = import_by_name(name) except ImportError, e: warn('[autosummary] failed to import %r: %s' % (name, e)) continue fn = os.path.join(path, name + suffix) # skip it if it exists if os.path.isfile(fn): continue new_files.append(fn) f = open(fn, 'w') try: doc = get_documenter(obj) if template_name is not None: template = template_env.get_template(template_name) else: try: template = template_env.get_template('autosummary/%s.rst' % doc.objtype) except TemplateNotFound: template = template_env.get_template('autosummary/base.rst') def get_members(obj, typ, include_public=[]): items = [ # filter by file content !!!! name for name in dir(obj) if get_documenter(getattr(obj, name)).objtype == typ \ and _is_from_same_file(getattr(obj, name), obj) ] public = [x for x in items if x in include_public or not x.startswith('_')] return public, items ns = {} if doc.objtype == 'module': ns['members'] = dir(obj) ns['functions'], ns['all_functions'] = \ get_members(obj, 'function') ns['classes'], ns['all_classes'] = \ get_members(obj, 'class') ns['exceptions'], ns['all_exceptions'] = \ get_members(obj, 'exception') ns['methods'], ns['all_methods'] = \ get_members(obj, 'method') elif doc.objtype == 'class': ns['members'] = dir(obj) ns['methods'], ns['all_methods'] = \ get_members(obj, 'method', ['__init__']) ns['attributes'], ns['all_attributes'] = \ get_members(obj, 'attribute') parts = name.split('.') if doc.objtype in ('method', 'attribute'): mod_name = '.'.join(parts[:-2]) cls_name = parts[-2] obj_name = '.'.join(parts[-2:]) ns['class'] = cls_name else: mod_name, obj_name = '.'.join(parts[:-1]), parts[-1] ns['fullname'] = name ns['module'] = mod_name ns['objname'] = obj_name ns['name'] = parts[-1] ns['objtype'] = doc.objtype ns['underline'] = len(name) * '=' rendered = template.render(**ns) f.write(rendered) finally: f.close() # descend recursively to new files if new_files: generate_autosummary_docs(new_files, output_dir=output_dir, suffix=suffix, warn=warn, info=info, base_path=base_path, builder=builder, template_dir=template_dir) # -- Finding documented entries in files --------------------------------------- def find_autosummary_in_files(filenames): """ Find out what items are documented in source/*.rst. See `find_autosummary_in_lines`. """ documented = [] for filename in filenames: f = open(filename, 'r') lines = f.read().splitlines() documented.extend(find_autosummary_in_lines(lines, filename=filename)) f.close() return documented def find_autosummary_in_docstring(name, module=None, filename=None): """ Find out what items are documented in the given object's docstring. See `find_autosummary_in_lines`. """ try: obj, real_name = import_by_name(name) lines = pydoc.getdoc(obj).splitlines() return find_autosummary_in_lines(lines, module=name, filename=filename) except AttributeError: pass except ImportError, e: print "Failed to import '%s': %s" % (name, e) return [] def find_autosummary_in_lines(lines, module=None, filename=None): """ Find out what items appear in autosummary:: directives in the given lines. Returns a list of (name, toctree, template) where *name* is a name of an object and *toctree* the :toctree: path of the corresponding autosummary directive (relative to the root of the file name), and *template* the value of the :template: option. *toctree* and *template* ``None`` if the directive does not have the corresponding options set. """ autosummary_re = re.compile(r'^\s*\.\.\s+autosummary::\s*') automodule_re = re.compile( r'^\s*\.\.\s+automodule::\s*([A-Za-z0-9_.]+)\s*$') module_re = re.compile( r'^\s*\.\.\s+(current)?module::\s*([a-zA-Z0-9_.]+)\s*$') autosummary_item_re = re.compile(r'^\s+(~?[_a-zA-Z][a-zA-Z0-9_.]*)\s*.*?') toctree_arg_re = re.compile(r'^\s+:toctree:\s*(.*?)\s*$') template_arg_re = re.compile(r'^\s+:template:\s*(.*?)\s*$') documented = [] toctree = None template = None current_module = module in_autosummary = False for line in lines: if in_autosummary: m = toctree_arg_re.match(line) if m: toctree = m.group(1) if filename: toctree = os.path.join(os.path.dirname(filename), toctree) continue m = template_arg_re.match(line) if m: template = m.group(1).strip() continue if line.strip().startswith(':'): continue # skip options m = autosummary_item_re.match(line) if m: name = m.group(1).strip() if name.startswith('~'): name = name[1:] if current_module and \ not name.startswith(current_module + '.'): name = "%s.%s" % (current_module, name) documented.append((name, toctree, template)) continue if not line.strip(): continue in_autosummary = False m = autosummary_re.match(line) if m: in_autosummary = True toctree = None template = None continue m = automodule_re.search(line) if m: current_module = m.group(1).strip() # recurse into the automodule docstring documented.extend(find_autosummary_in_docstring( current_module, filename=filename)) continue m = module_re.match(line) if m: current_module = m.group(2) continue return documented if __name__ == '__main__': main() nipy-nibabel-d3c26be/doc/sphinxext/autosummary/templates/000077500000000000000000000000001177264777700237715ustar00rootroot00000000000000nipy-nibabel-d3c26be/doc/sphinxext/autosummary/templates/autosummary/000077500000000000000000000000001177264777700263575ustar00rootroot00000000000000nipy-nibabel-d3c26be/doc/sphinxext/autosummary/templates/autosummary/base.rst000066400000000000000000000001461177264777700300240ustar00rootroot00000000000000{{ fullname }} {{ underline }} .. currentmodule:: {{ module }} .. auto{{ objtype }}:: {{ objname }} nipy-nibabel-d3c26be/doc/sphinxext/autosummary/templates/autosummary/class.rst000066400000000000000000000002631177264777700302170ustar00rootroot00000000000000{{ fullname }} {{ underline }} .. currentmodule:: {{ module }} .. inheritance-diagram:: {{ objname }} :parts: 1 .. autoclass:: {{ objname }} :members: :undoc-members: nipy-nibabel-d3c26be/doc/sphinxext/autosummary/templates/autosummary/module.rst000066400000000000000000000015221177264777700303760ustar00rootroot00000000000000{{ fullname }} {{ underline }} .. automodule:: {{ fullname }} {% if classes %} .. inheritance-diagram:: {{ fullname }} :parts: 1 {% endif %} {% block functions %} {% if functions or methods %} .. rubric:: Functions .. autosummary:: :toctree: {% for item in functions %} {{ item }} {%- endfor %} {% for item in methods %} {{ item }} {%- endfor %} {% endif %} {% endblock %} {% block classes %} {% if classes %} .. rubric:: Classes .. autosummary:: :toctree: {% for item in classes %} {{ item }} {%- endfor %} {% endif %} {% endblock %} {% block exceptions %} {% if exceptions %} .. rubric:: Exceptions .. autosummary:: :toctree: {% for item in classes %} {{ item }} {%- endfor %} {% endif %} {% endblock %} nipy-nibabel-d3c26be/doc/sphinxext/docscrape.py000066400000000000000000000347511177264777700217340ustar00rootroot00000000000000"""Extract reference documentation from the NumPy source tree. """ import inspect import textwrap import re import pydoc from StringIO import StringIO from warnings import warn class Reader(object): """A line-based string reader. """ def __init__(self, data): """ Parameters ---------- data : str String with lines separated by '\n'. """ if isinstance(data,list): self._str = data else: self._str = data.split('\n') # store string as list of lines self.reset() def __getitem__(self, n): return self._str[n] def reset(self): self._l = 0 # current line nr def read(self): if not self.eof(): out = self[self._l] self._l += 1 return out else: return '' def seek_next_non_empty_line(self): for l in self[self._l:]: if l.strip(): break else: self._l += 1 def eof(self): return self._l >= len(self._str) def read_to_condition(self, condition_func): start = self._l for line in self[start:]: if condition_func(line): return self[start:self._l] self._l += 1 if self.eof(): return self[start:self._l+1] return [] def read_to_next_empty_line(self): self.seek_next_non_empty_line() def is_empty(line): return not line.strip() return self.read_to_condition(is_empty) def read_to_next_unindented_line(self): def is_unindented(line): return (line.strip() and (len(line.lstrip()) == len(line))) return self.read_to_condition(is_unindented) def peek(self,n=0): if self._l + n < len(self._str): return self[self._l + n] else: return '' def is_empty(self): return not ''.join(self._str).strip() class NumpyDocString(object): def __init__(self,docstring): docstring = textwrap.dedent(docstring).split('\n') self._doc = Reader(docstring) self._parsed_data = { 'Signature': '', 'Summary': [''], 'Extended Summary': [], 'Parameters': [], 'Returns': [], 'Raises': [], 'Warns': [], 'Other Parameters': [], 'Attributes': [], 'Methods': [], 'See Also': [], 'Notes': [], 'Warnings': [], 'References': '', 'Examples': '', 'index': {} } self._parse() def __getitem__(self,key): return self._parsed_data[key] def __setitem__(self,key,val): if not key in self._parsed_data: warn("Unknown section %s" % key) else: self._parsed_data[key] = val def _is_at_section(self): self._doc.seek_next_non_empty_line() if self._doc.eof(): return False l1 = self._doc.peek().strip() # e.g. Parameters if l1.startswith('.. index::'): return True l2 = self._doc.peek(1).strip() # ---------- or ========== return l2.startswith('-'*len(l1)) or l2.startswith('='*len(l1)) def _strip(self,doc): i = 0 j = 0 for i,line in enumerate(doc): if line.strip(): break for j,line in enumerate(doc[::-1]): if line.strip(): break return doc[i:len(doc)-j] def _read_to_next_section(self): section = self._doc.read_to_next_empty_line() while not self._is_at_section() and not self._doc.eof(): if not self._doc.peek(-1).strip(): # previous line was empty section += [''] section += self._doc.read_to_next_empty_line() return section def _read_sections(self): while not self._doc.eof(): data = self._read_to_next_section() name = data[0].strip() if name.startswith('..'): # index section yield name, data[1:] elif len(data) < 2: yield StopIteration else: yield name, self._strip(data[2:]) def _parse_param_list(self,content): r = Reader(content) params = [] while not r.eof(): header = r.read().strip() if ' : ' in header: arg_name, arg_type = header.split(' : ')[:2] else: arg_name, arg_type = header, '' desc = r.read_to_next_unindented_line() desc = dedent_lines(desc) params.append((arg_name,arg_type,desc)) return params _name_rgx = re.compile(r"^\s*(:(?P\w+):`(?P[a-zA-Z0-9_.-]+)`|" r" (?P[a-zA-Z0-9_.-]+))\s*", re.X) def _parse_see_also(self, content): """ func_name : Descriptive text continued text another_func_name : Descriptive text func_name1, func_name2, :meth:`func_name`, func_name3 """ items = [] def parse_item_name(text): """Match ':role:`name`' or 'name'""" m = self._name_rgx.match(text) if m: g = m.groups() if g[1] is None: return g[3], None else: return g[2], g[1] raise ValueError("%s is not a item name" % text) def push_item(name, rest): if not name: return name, role = parse_item_name(name) items.append((name, list(rest), role)) del rest[:] current_func = None rest = [] for line in content: if not line.strip(): continue m = self._name_rgx.match(line) if m and line[m.end():].strip().startswith(':'): push_item(current_func, rest) current_func, line = line[:m.end()], line[m.end():] rest = [line.split(':', 1)[1].strip()] if not rest[0]: rest = [] elif not line.startswith(' '): push_item(current_func, rest) current_func = None if ',' in line: for func in line.split(','): push_item(func, []) elif line.strip(): current_func = line elif current_func is not None: rest.append(line.strip()) push_item(current_func, rest) return items def _parse_index(self, section, content): """ .. index: default :refguide: something, else, and more """ def strip_each_in(lst): return [s.strip() for s in lst] out = {} section = section.split('::') if len(section) > 1: out['default'] = strip_each_in(section[1].split(','))[0] for line in content: line = line.split(':') if len(line) > 2: out[line[1]] = strip_each_in(line[2].split(',')) return out def _parse_summary(self): """Grab signature (if given) and summary""" if self._is_at_section(): return summary = self._doc.read_to_next_empty_line() summary_str = " ".join([s.strip() for s in summary]).strip() if re.compile('^([\w., ]+=)?\s*[\w\.]+\(.*\)$').match(summary_str): self['Signature'] = summary_str if not self._is_at_section(): self['Summary'] = self._doc.read_to_next_empty_line() else: self['Summary'] = summary if not self._is_at_section(): self['Extended Summary'] = self._read_to_next_section() def _parse(self): self._doc.reset() self._parse_summary() for (section,content) in self._read_sections(): if not section.startswith('..'): section = ' '.join([s.capitalize() for s in section.split(' ')]) if section in ('Parameters', 'Attributes', 'Methods', 'Returns', 'Raises', 'Warns'): self[section] = self._parse_param_list(content) elif section.startswith('.. index::'): self['index'] = self._parse_index(section, content) elif section == 'See Also': self['See Also'] = self._parse_see_also(content) else: self[section] = content # string conversion routines def _str_header(self, name, symbol='-'): return [name, len(name)*symbol] def _str_indent(self, doc, indent=4): out = [] for line in doc: out += [' '*indent + line] return out def _str_signature(self): if self['Signature']: return [self['Signature'].replace('*','\*')] + [''] else: return [''] def _str_summary(self): if self['Summary']: return self['Summary'] + [''] else: return [] def _str_extended_summary(self): if self['Extended Summary']: return self['Extended Summary'] + [''] else: return [] def _str_param_list(self, name): out = [] if self[name]: out += self._str_header(name) for param,param_type,desc in self[name]: out += ['%s : %s' % (param, param_type)] out += self._str_indent(desc) out += [''] return out def _str_section(self, name): out = [] if self[name]: out += self._str_header(name) out += self[name] out += [''] return out def _str_see_also(self, func_role): if not self['See Also']: return [] out = [] out += self._str_header("See Also") last_had_desc = True for func, desc, role in self['See Also']: if role: link = ':%s:`%s`' % (role, func) elif func_role: link = ':%s:`%s`' % (func_role, func) else: link = "`%s`_" % func if desc or last_had_desc: out += [''] out += [link] else: out[-1] += ", %s" % link if desc: out += self._str_indent([' '.join(desc)]) last_had_desc = True else: last_had_desc = False out += [''] return out def _str_index(self): idx = self['index'] out = [] out += ['.. index:: %s' % idx.get('default','')] for section, references in idx.iteritems(): if section == 'default': continue out += [' :%s: %s' % (section, ', '.join(references))] return out def __str__(self, func_role=''): out = [] out += self._str_signature() out += self._str_summary() out += self._str_extended_summary() for param_list in ('Parameters','Returns','Raises'): out += self._str_param_list(param_list) out += self._str_section('Warnings') out += self._str_see_also(func_role) for s in ('Notes','References','Examples'): out += self._str_section(s) out += self._str_index() return '\n'.join(out) def indent(str,indent=4): indent_str = ' '*indent if str is None: return indent_str lines = str.split('\n') return '\n'.join(indent_str + l for l in lines) def dedent_lines(lines): """Deindent a list of lines maximally""" return textwrap.dedent("\n".join(lines)).split("\n") def header(text, style='-'): return text + '\n' + style*len(text) + '\n' class FunctionDoc(NumpyDocString): def __init__(self, func, role='func', doc=None): self._f = func self._role = role # e.g. "func" or "meth" if doc is None: doc = inspect.getdoc(func) or '' try: NumpyDocString.__init__(self, doc) except ValueError, e: print '*'*78 print "ERROR: '%s' while parsing `%s`" % (e, self._f) print '*'*78 #print "Docstring follows:" #print doclines #print '='*78 if not self['Signature']: func, func_name = self.get_func() try: # try to read signature argspec = inspect.getargspec(func) argspec = inspect.formatargspec(*argspec) argspec = argspec.replace('*','\*') signature = '%s%s' % (func_name, argspec) except TypeError, e: signature = '%s()' % func_name self['Signature'] = signature def get_func(self): func_name = getattr(self._f, '__name__', self.__class__.__name__) if inspect.isclass(self._f): func = getattr(self._f, '__call__', self._f.__init__) else: func = self._f return func, func_name def __str__(self): out = '' func, func_name = self.get_func() signature = self['Signature'].replace('*', '\*') roles = {'func': 'function', 'meth': 'method'} if self._role: if not self._role in roles: print "Warning: invalid role %s" % self._role out += '.. %s:: %s\n \n\n' % (roles.get(self._role,''), func_name) out += super(FunctionDoc, self).__str__(func_role=self._role) return out class ClassDoc(NumpyDocString): def __init__(self,cls,modulename='',func_doc=FunctionDoc,doc=None): if not inspect.isclass(cls): raise ValueError("Initialise using a class. Got %r" % cls) self._cls = cls if modulename and not modulename.endswith('.'): modulename += '.' self._mod = modulename self._name = cls.__name__ self._func_doc = func_doc if doc is None: doc = pydoc.getdoc(cls) NumpyDocString.__init__(self, doc) @property def methods(self): return [name for name,func in inspect.getmembers(self._cls) if not name.startswith('_') and callable(func)] def __str__(self): out = '' out += super(ClassDoc, self).__str__() out += "\n\n" #for m in self.methods: # print "Parsing `%s`" % m # out += str(self._func_doc(getattr(self._cls,m), 'meth')) + '\n\n' # out += '.. index::\n single: %s; %s\n\n' % (self._name, m) return out nipy-nibabel-d3c26be/doc/sphinxext/docscrape_sphinx.py000066400000000000000000000102071177264777700233130ustar00rootroot00000000000000import re, inspect, textwrap, pydoc from docscrape import NumpyDocString, FunctionDoc, ClassDoc class SphinxDocString(NumpyDocString): # string conversion routines def _str_header(self, name, symbol='`'): return ['.. rubric:: ' + name, ''] def _str_field_list(self, name): return [':' + name + ':'] def _str_indent(self, doc, indent=4): out = [] for line in doc: out += [' '*indent + line] return out def _str_signature(self): return [''] if self['Signature']: return ['``%s``' % self['Signature']] + [''] else: return [''] def _str_summary(self): return self['Summary'] + [''] def _str_extended_summary(self): return self['Extended Summary'] + [''] def _str_param_list(self, name): out = [] if self[name]: out += self._str_field_list(name) out += [''] for param,param_type,desc in self[name]: out += self._str_indent(['**%s** : %s' % (param.strip(), param_type)]) out += [''] out += self._str_indent(desc,8) out += [''] return out def _str_section(self, name): out = [] if self[name]: out += self._str_header(name) out += [''] content = textwrap.dedent("\n".join(self[name])).split("\n") out += content out += [''] return out def _str_see_also(self, func_role): out = [] if self['See Also']: see_also = super(SphinxDocString, self)._str_see_also(func_role) out = ['.. seealso::', ''] out += self._str_indent(see_also[2:]) return out def _str_warnings(self): out = [] if self['Warnings']: out = ['.. warning::', ''] out += self._str_indent(self['Warnings']) return out def _str_index(self): idx = self['index'] out = [] if len(idx) == 0: return out out += ['.. index:: %s' % idx.get('default','')] for section, references in idx.iteritems(): if section == 'default': continue elif section == 'refguide': out += [' single: %s' % (', '.join(references))] else: out += [' %s: %s' % (section, ','.join(references))] return out def _str_references(self): out = [] if self['References']: out += self._str_header('References') if isinstance(self['References'], str): self['References'] = [self['References']] out.extend(self['References']) out += [''] return out def __str__(self, indent=0, func_role="obj"): out = [] out += self._str_signature() out += self._str_index() + [''] out += self._str_summary() out += self._str_extended_summary() for param_list in ('Parameters', 'Attributes', 'Methods', 'Returns','Raises'): out += self._str_param_list(param_list) out += self._str_warnings() out += self._str_see_also(func_role) out += self._str_section('Notes') out += self._str_references() out += self._str_section('Examples') out = self._str_indent(out,indent) return '\n'.join(out) class SphinxFunctionDoc(SphinxDocString, FunctionDoc): pass class SphinxClassDoc(SphinxDocString, ClassDoc): pass def get_doc_object(obj, what=None, doc=None): if what is None: if inspect.isclass(obj): what = 'class' elif inspect.ismodule(obj): what = 'module' elif callable(obj): what = 'function' else: what = 'object' if what == 'class': return SphinxClassDoc(obj, '', func_doc=SphinxFunctionDoc, doc=doc) elif what in ('function', 'method'): return SphinxFunctionDoc(obj, '', doc=doc) else: if doc is None: doc = pydoc.getdoc(obj) return SphinxDocString(doc) nipy-nibabel-d3c26be/doc/sphinxext/ipython_console_highlighting.py000066400000000000000000000073571177264777700257340ustar00rootroot00000000000000# emacs: -*- mode: python-mode; py-indent-offset: 4; indent-tabs-mode: nil -*- # vi: set ft=python sts=4 ts=4 sw=4 et: ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ## # # See COPYING file distributed along with the NiBabel package for the # copyright and license terms. # ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ## """reST directive for syntax-highlighting ipython interactive sessions. """ #----------------------------------------------------------------------------- # Needed modules # Standard library import re # Third party from pygments.lexer import Lexer, do_insertions from pygments.lexers.agile import (PythonConsoleLexer, PythonLexer, PythonTracebackLexer) from pygments.token import Comment, Generic from sphinx import highlighting #----------------------------------------------------------------------------- # Global constants line_re = re.compile('.*?\n') #----------------------------------------------------------------------------- # Code begins - classes and functions class IPythonConsoleLexer(Lexer): """ For IPython console output or doctests, such as: .. sourcecode:: ipython In [1]: a = 'foo' In [2]: a Out[2]: 'foo' In [3]: print a foo In [4]: 1 / 0 Notes: - Tracebacks are not currently supported. - It assumes the default IPython prompts, not customized ones. """ name = 'IPython console session' aliases = ['ipython'] mimetypes = ['text/x-ipython-console'] input_prompt = re.compile("(In \[[0-9]+\]: )|( \.\.\.+:)") output_prompt = re.compile("(Out\[[0-9]+\]: )|( \.\.\.+:)") continue_prompt = re.compile(" \.\.\.+:") tb_start = re.compile("\-+") def get_tokens_unprocessed(self, text): pylexer = PythonLexer(**self.options) tblexer = PythonTracebackLexer(**self.options) curcode = '' insertions = [] for match in line_re.finditer(text): line = match.group() input_prompt = self.input_prompt.match(line) continue_prompt = self.continue_prompt.match(line.rstrip()) output_prompt = self.output_prompt.match(line) if line.startswith("#"): insertions.append((len(curcode), [(0, Comment, line)])) elif input_prompt is not None: insertions.append((len(curcode), [(0, Generic.Prompt, input_prompt.group())])) curcode += line[input_prompt.end():] elif continue_prompt is not None: insertions.append((len(curcode), [(0, Generic.Prompt, continue_prompt.group())])) curcode += line[continue_prompt.end():] elif output_prompt is not None: insertions.append((len(curcode), [(0, Generic.Output, output_prompt.group())])) curcode += line[output_prompt.end():] else: if curcode: for item in do_insertions(insertions, pylexer.get_tokens_unprocessed(curcode)): yield item curcode = '' insertions = [] yield match.start(), Generic.Output, line if curcode: for item in do_insertions(insertions, pylexer.get_tokens_unprocessed(curcode)): yield item #----------------------------------------------------------------------------- # Register the extension as a valid pygments lexer highlighting.lexers['ipython'] = IPythonConsoleLexer() nipy-nibabel-d3c26be/doc/sphinxext/math_dollar.py000066400000000000000000000045751177264777700222600ustar00rootroot00000000000000# emacs: -*- mode: python-mode; py-indent-offset: 4; indent-tabs-mode: nil -*- # vi: set ft=python sts=4 ts=4 sw=4 et: ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ## # # See COPYING file distributed along with the NiBabel package for the # copyright and license terms. # ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ## import re def dollars_to_math(source): r""" Replace dollar signs with backticks. More precisely, do a regular expression search. Replace a plain dollar sign ($) by a backtick (`). Replace an escaped dollar sign (\$) by a dollar sign ($). Don't change a dollar sign preceded or followed by a backtick (`$ or $`), because of strings like "``$HOME``". Don't make any changes on lines starting with spaces, because those are indented and hence part of a block of code or examples. This also doesn't replaces dollar signs enclosed in curly braces, to avoid nested math environments, such as :: $f(n) = 0 \text{ if $n$ is prime}$ Thus the above line would get changed to `f(n) = 0 \text{ if $n$ is prime}` """ s = "\n".join(source) if s.find("$") == -1: return # This searches for "$blah$" inside a pair of curly braces -- # don't change these, since they're probably coming from a nested # math environment. So for each match, we replace it with a temporary # string, and later on we substitute the original back. global _data _data = {} def repl(matchobj): global _data s = matchobj.group(0) t = "___XXX_REPL_%d___" % len(_data) _data[t] = s return t s = re.sub(r"({[^{}$]*\$[^{}$]*\$[^{}]*})", repl, s) # matches $...$ dollars = re.compile(r"(?= 1.2 for tests') from .pkg_info import get_pkg_info as _get_pkg_info get_info = lambda : _get_pkg_info(os.path.dirname(__file__)) nipy-nibabel-d3c26be/nibabel/affines.py000066400000000000000000000160311177264777700201700ustar00rootroot00000000000000# emacs: -*- mode: python; py-indent-offset: 4; indent-tabs-mode: nil -*- # vi: set ft=python sts=4 ts=4 sw=4 et: """ Utility routines for working with points and affine transforms """ import numpy as np def apply_affine(aff, pts): """ Apply affine matrix `aff` to points `pts` Returns result of application of `aff` to the *right* of `pts`. The coordinate dimension of `pts` should be the last. For the 3D case, `aff` will be shape (4,4) and `pts` will have final axis length 3 - maybe it will just be N by 3. The return value is the transformed points, in this case:: res = np.dot(aff[:3,:3], pts.T) + aff[:3,3:4] transformed_pts = res.T Notice though, that this routine is more general, in that `aff` can have any shape (N,N), and `pts` can have any shape, as long as the last dimension is for the coordinates, and is therefore length N-1. Parameters ---------- aff : (N, N) array-like Homogenous affine, for 3D points, will be 4 by 4. Contrary to first appearance, the affine will be applied on the left of `pts`. pts : (..., N-1) array-like Points, where the last dimension contains the coordinates of each point. For 3D, the last dimension will be length 3. Returns ------- transformed_pts : (..., N-1) array transformed points Examples -------- >>> aff = np.array([[0,2,0,10],[3,0,0,11],[0,0,4,12],[0,0,0,1]]) >>> pts = np.array([[1,2,3],[2,3,4],[4,5,6],[6,7,8]]) >>> apply_affine(aff, pts) array([[14, 14, 24], [16, 17, 28], [20, 23, 36], [24, 29, 44]]) Just to show that in the simple 3D case, it is equivalent to: >>> (np.dot(aff[:3,:3], pts.T) + aff[:3,3:4]).T array([[14, 14, 24], [16, 17, 28], [20, 23, 36], [24, 29, 44]]) But `pts` can be a more complicated shape: >>> pts = pts.reshape((2,2,3)) >>> apply_affine(aff, pts) array([[[14, 14, 24], [16, 17, 28]], [[20, 23, 36], [24, 29, 44]]]) """ aff = np.asarray(aff) pts = np.asarray(pts) shape = pts.shape pts = pts.reshape((-1, shape[-1])) # rzs == rotations, zooms, shears rzs = aff[:-1,:-1] trans = aff[:-1,-1] res = np.dot(pts, rzs.T) + trans[None,:] return res.reshape(shape) def to_matvec(transform): """Split a transform into its matrix and vector components. The tranformation must be represented in homogeneous coordinates and is split into its rotation matrix and translation vector components. Parameters ---------- transform : array-like NxM transform matrix in homogeneous coordinates representing an affine transformation from an (N-1)-dimensional space to an (M-1)-dimensional space. An example is a 4x4 transform representing rotations and translations in 3 dimensions. A 4x3 matrix can represent a 2-dimensional plane embedded in 3 dimensional space. Returns ------- matrix : (N-1, M-1) array Matrix component of `transform` vector : (M-1,) array Vector compoent of `transform` See Also -------- from_matvec Examples -------- >>> aff = np.diag([2, 3, 4, 1]) >>> aff[:3,3] = [9, 10, 11] >>> to_matvec(aff) (array([[2, 0, 0], [0, 3, 0], [0, 0, 4]]), array([ 9, 10, 11])) """ transform = np.asarray(transform) ndimin = transform.shape[0] - 1 ndimout = transform.shape[1] - 1 matrix = transform[0:ndimin, 0:ndimout] vector = transform[0:ndimin, ndimout] return matrix, vector def from_matvec(matrix, vector=None): """ Combine a matrix and vector into an homogeneous affine Combine a rotation / scaling / shearing matrix and translation vector into a transform in homogeneous coordinates. Parameters ---------- matrix : array-like An NxM array representing the the linear part of the transform. A transform from an M-dimensional space to an N-dimensional space. vector : None or array-like, optional None or an (N,) array representing the translation. None corresponds to an (N,) array of zeros. Returns ------- xform : array An (N+1, M+1) homogenous transform matrix. See Also -------- to_matvec Examples -------- >>> from_matvec(np.diag([2, 3, 4]), [9, 10, 11]) array([[ 2, 0, 0, 9], [ 0, 3, 0, 10], [ 0, 0, 4, 11], [ 0, 0, 0, 1]]) The `vector` argument is optional: >>> from_matvec(np.diag([2, 3, 4])) array([[2, 0, 0, 0], [0, 3, 0, 0], [0, 0, 4, 0], [0, 0, 0, 1]]) """ matrix = np.asarray(matrix) nin, nout = matrix.shape t = np.zeros((nin+1,nout+1), matrix.dtype) t[0:nin, 0:nout] = matrix t[nin, nout] = 1. if not vector is None: t[0:nin, nout] = vector return t def append_diag(aff, steps, starts=()): """ Add diagonal elements `steps` and translations `starts` to affine Typical use is in expanding 4x4 affines to larger dimensions. Nipy is the main consumer because it uses NxM affines, whereas we generally only use 4x4 affines; the routine is here for convenience. Parameters ---------- aff : 2D array N by M affine matrix steps : scalar or sequence diagonal elements to append. starts : scalar or sequence elements to append to last column of `aff`, representing translations corresponding to the `steps`. If empty, expands to a vector of zeros of the same length as `steps` Returns ------- aff_plus : 2D array Now P by Q where L = ``len(steps)`` and P == N+L, Q=N+L Examples -------- >>> aff = np.eye(4) >>> aff[:3,:3] = np.arange(9).reshape((3,3)) >>> append_diag(aff, [9, 10], [99,100]) array([[ 0., 1., 2., 0., 0., 0.], [ 3., 4., 5., 0., 0., 0.], [ 6., 7., 8., 0., 0., 0.], [ 0., 0., 0., 9., 0., 99.], [ 0., 0., 0., 0., 10., 100.], [ 0., 0., 0., 0., 0., 1.]]) """ aff = np.asarray(aff) steps = np.atleast_1d(steps) starts = np.atleast_1d(starts) n_steps = len(steps) if len(starts) == 0: starts = np.zeros(n_steps, dtype=steps.dtype) elif len(starts) != n_steps: raise ValueError('Steps should have same length as starts') old_n_out, old_n_in = aff.shape[0]-1, aff.shape[1]-1 # make new affine aff_plus = np.zeros((old_n_out + n_steps + 1, old_n_in + n_steps + 1), dtype=aff.dtype) # Get stuff from old affine aff_plus[:old_n_out,:old_n_in] = aff[:old_n_out, :old_n_in] aff_plus[:old_n_out,-1] = aff[:old_n_out,-1] # Add new diagonal elements for i, el in enumerate(steps): aff_plus[old_n_out+i, old_n_in+i] = el # Add translations for new affine, plus last 1 aff_plus[old_n_out:,-1] = list(starts) + [1] return aff_plus nipy-nibabel-d3c26be/nibabel/analyze.py000066400000000000000000001006401177264777700202200ustar00rootroot00000000000000# emacs: -*- mode: python-mode; py-indent-offset: 4; indent-tabs-mode: nil -*- # vi: set ft=python sts=4 ts=4 sw=4 et: ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ## # # See COPYING file distributed along with the NiBabel package for the # copyright and license terms. # ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ## ''' Header and image for the basic Mayo Analyze format =========================== The Analyze header format =========================== This is a binary header format and inherits from ``WrapStruct`` Apart from the attributes and methods of WrapStruct: Class attributes are:: .default_x_flip with methods:: .get/set_data_shape .get/set_data_dtype .get/set_zooms .get_base_affine() .get_best_affine() .data_to_fileobj .data_from_fileobj and class methods:: .from_header(hdr) More sophisticated headers can add more methods and attributes. Notes ----- This - basic - analyze header cannot encode full affines (only diagonal affines), and cannot do integer scaling. The inability to store affines means that we have to guess what orientation the image has. Most Analyze images are stored on disk in (fastest-changing to slowest-changing) R->L, P->A and I->S order. That is, the first voxel is the rightmost, most posterior and most inferior voxel location in the image, and the next voxel is one voxel towards the left of the image. Most people refer to this disk storage format as 'radiological', on the basis that, if you load up the data as an array ``img_arr`` where the first axis is the fastest changing, then take a slice in the I->S axis - ``img_arr[:,:,10]`` - then the right part of the brain will be on the left of your displayed slice. Radiologists like looking at images where the left of the brain is on the right side of the image. Conversely, if the image has the voxels stored with the left voxels first - L->R, P->A, I->S, then this would be 'neurological' format. Neurologists like looking at images where the left side of the brain is on the left of the image. When we are guessing at an affine for Analyze, this translates to the problem of whether the affine should consider proceeding within the data down an X line as being from left to right, or right to left. By default we assume that the image is stored in R->L format. We encode this choice in the ``default_x_flip`` flag that can be True or False. True means assume radiological. If the image is 3D, and the X, Y and Z zooms are x, y, and z, then:: if default_x_flip is True:: affine = np.diag((-x,y,z,1)) else: affine = np.diag((x,y,z,1)) In our implementation, there is no way of saving this assumed flip into the header. One way of doing this, that we have not used, is to allow negative zooms, in particular, negative X zooms. We did not do this because the image can be loaded with and without a default flip, so the saved zoom will not constrain the affine. ''' import sys import numpy as np from .volumeutils import (native_code, swapped_code, make_dt_codes, allopen, shape_zoom_affine, array_from_file, seek_tell, apply_read_scaling) from .arraywriters import make_array_writer, get_slope_inter, WriterError from .wrapstruct import WrapStruct from .spatialimages import (HeaderDataError, HeaderTypeError, SpatialImage) from .fileholders import copy_file_map from .batteryrunners import Report from .arrayproxy import ArrayProxy # Sub-parts of standard analyze header from # Mayo dbh.h file header_key_dtd = [ ('sizeof_hdr', 'i4'), ('data_type', 'S10'), ('db_name', 'S18'), ('extents', 'i4'), ('session_error', 'i2'), ('regular', 'S1'), ('hkey_un0', 'S1') ] image_dimension_dtd = [ ('dim', 'i2', (8,)), ('vox_units', 'S4'), ('cal_units', 'S8'), ('unused1', 'i2'), ('datatype', 'i2'), ('bitpix', 'i2'), ('dim_un0', 'i2'), ('pixdim', 'f4', (8,)), ('vox_offset', 'f4'), ('funused1', 'f4'), ('funused2', 'f4'), ('funused3', 'f4'), ('cal_max', 'f4'), ('cal_min', 'f4'), ('compressed', 'i4'), ('verified', 'i4'), ('glmax', 'i4'), ('glmin', 'i4') ] data_history_dtd = [ ('descrip', 'S80'), ('aux_file', 'S24'), ('orient', 'S1'), ('originator', 'S10'), ('generated', 'S10'), ('scannum', 'S10'), ('patient_id', 'S10'), ('exp_date', 'S10'), ('exp_time', 'S10'), ('hist_un0', 'S3'), ('views', 'i4'), ('vols_added', 'i4'), ('start_field', 'i4'), ('field_skip', 'i4'), ('omax', 'i4'), ('omin', 'i4'), ('smax', 'i4'), ('smin', 'i4') ] # Full header numpy dtype combined across sub-fields header_dtype = np.dtype(header_key_dtd + image_dimension_dtd + data_history_dtd) _dtdefs = ( # code, conversion function, equivalent dtype, aliases (0, 'none', np.void), (1, 'binary', np.void), # 1 bit per voxel, needs thought (2, 'uint8', np.uint8), (4, 'int16', np.int16), (8, 'int32', np.int32), (16, 'float32', np.float32), (32, 'complex64', np.complex64), # numpy complex format? (64, 'float64', np.float64), (128, 'RGB', np.dtype([('R','u1'), ('G', 'u1'), ('B', 'u1')])), (255, 'all', np.void)) # Make full code alias bank, including dtype column data_type_codes = make_dt_codes(_dtdefs) class AnalyzeHeader(WrapStruct): ''' Class for basic analyze header Implements zoom-only setting of affine transform, and no image scaling ''' # Copies of module-level definitions template_dtype = header_dtype _data_type_codes = data_type_codes # fields with recoders for their values _field_recoders = {'datatype': data_type_codes} # default x flip default_x_flip = True # data scaling capabilities has_data_slope = False has_data_intercept = False def __init__(self, binaryblock=None, endianness=None, check=True): ''' Initialize header from binary data block Parameters ---------- binaryblock : {None, string} optional binary block to set into header. By default, None, in which case we insert the default empty header block endianness : {None, '<','>', other endian code} string, optional endianness of the binaryblock. If None, guess endianness from the data. check : bool, optional Whether to check content of header in initialization. Default is True. Examples -------- >>> hdr1 = AnalyzeHeader() # an empty header >>> hdr1.endianness == native_code True >>> hdr1.get_data_shape() (0,) >>> hdr1.set_data_shape((1,2,3)) # now with some content >>> hdr1.get_data_shape() (1, 2, 3) We can set the binary block directly via this initialization. Here we get it from the header we have just made >>> binblock2 = hdr1.binaryblock >>> hdr2 = AnalyzeHeader(binblock2) >>> hdr2.get_data_shape() (1, 2, 3) Empty headers are native endian by default >>> hdr2.endianness == native_code True You can pass valid opposite endian headers with the ``endianness`` parameter. Even empty headers can have endianness >>> hdr3 = AnalyzeHeader(endianness=swapped_code) >>> hdr3.endianness == swapped_code True If you do not pass an endianness, and you pass some data, we will try to guess from the passed data. >>> binblock3 = hdr3.binaryblock >>> hdr4 = AnalyzeHeader(binblock3) >>> hdr4.endianness == swapped_code True ''' super(AnalyzeHeader, self).__init__(binaryblock, endianness, check) @classmethod def guessed_endian(klass, hdr): ''' Guess intended endianness from mapping-like ``hdr`` Parameters ---------- hdr : mapping-like hdr for which to guess endianness Returns ------- endianness : {'<', '>'} Guessed endianness of header Examples -------- Zeros header, no information, guess native >>> hdr = AnalyzeHeader() >>> hdr_data = np.zeros((), dtype=header_dtype) >>> AnalyzeHeader.guessed_endian(hdr_data) == native_code True A valid native header is guessed native >>> hdr_data = hdr.structarr.copy() >>> AnalyzeHeader.guessed_endian(hdr_data) == native_code True And, when swapped, is guessed as swapped >>> sw_hdr_data = hdr_data.byteswap(swapped_code) >>> AnalyzeHeader.guessed_endian(sw_hdr_data) == swapped_code True The algorithm is as follows: First, look at the first value in the ``dim`` field; this should be between 0 and 7. If it is between 1 and 7, then this must be a native endian header. >>> hdr_data = np.zeros((), dtype=header_dtype) # blank binary data >>> hdr_data['dim'][0] = 1 >>> AnalyzeHeader.guessed_endian(hdr_data) == native_code True >>> hdr_data['dim'][0] = 6 >>> AnalyzeHeader.guessed_endian(hdr_data) == native_code True >>> hdr_data['dim'][0] = -1 >>> AnalyzeHeader.guessed_endian(hdr_data) == swapped_code True If the first ``dim`` value is zeros, we need a tie breaker. In that case we check the ``sizeof_hdr`` field. This should be 348. If it looks like the byteswapped value of 348, assumed swapped. Otherwise assume native. >>> hdr_data = np.zeros((), dtype=header_dtype) # blank binary data >>> AnalyzeHeader.guessed_endian(hdr_data) == native_code True >>> hdr_data['sizeof_hdr'] = 1543569408 >>> AnalyzeHeader.guessed_endian(hdr_data) == swapped_code True >>> hdr_data['sizeof_hdr'] = -1 >>> AnalyzeHeader.guessed_endian(hdr_data) == native_code True This is overridden by the ``dim``[0] value though: >>> hdr_data['sizeof_hdr'] = 1543569408 >>> hdr_data['dim'][0] = 1 >>> AnalyzeHeader.guessed_endian(hdr_data) == native_code True ''' dim0 = int(hdr['dim'][0]) if dim0 == 0: if hdr['sizeof_hdr'] == 1543569408: return swapped_code return native_code elif 1 <= dim0 <= 7: return native_code return swapped_code @classmethod def default_structarr(klass, endianness=None): ''' Return header data for empty header with given endianness ''' hdr_data = super(AnalyzeHeader, klass).default_structarr(endianness) hdr_data['sizeof_hdr'] = 348 hdr_data['dim'] = 1 hdr_data['dim'][0] = 0 hdr_data['pixdim'] = 1 hdr_data['datatype'] = 16 # float32 hdr_data['bitpix'] = 32 return hdr_data def get_value_label(self, fieldname): ''' Returns label for coded field A coded field is an int field containing codes that stand for discrete values that also have string labels. Parameters ---------- fieldname : str name of header field to get label for Returns ------- label : str label for code value in header field `fieldname` Raises ------ ValueError : if field is not coded Examples -------- >>> hdr = AnalyzeHeader() >>> hdr.get_value_label('datatype') 'float32' ''' if not fieldname in self._field_recoders: raise ValueError('%s not a coded field' % fieldname) code = int(self._structarr[fieldname]) return self._field_recoders[fieldname].label[code] @classmethod def from_header(klass, header=None, check=True): ''' Class method to create header from another header Parameters ---------- header : ``Header`` instance or mapping a header of this class, or another class of header for conversion to this type check : {True, False} whether to check header for integrity Returns ------- hdr : header instance fresh header instance of our own class ''' # own type, return copy if type(header) == klass: obj = header.copy() if check: obj.check_fix() return obj # not own type, make fresh header instance obj = klass(check=check) if header is None: return obj try: # check if there is a specific conversion routine mapping = header.as_analyze_map() except AttributeError: # most basic conversion obj.set_data_dtype(header.get_data_dtype()) obj.set_data_shape(header.get_data_shape()) obj.set_zooms(header.get_zooms()) return obj # header is convertible from a field mapping for key, value in mapping.items(): try: obj[key] = value except (ValueError, KeyError): # the presence of the mapping certifies the fields as # being of the same meaning as for Analyze types pass # set any fields etc that are specific to this format (overriden by # sub-classes) obj._set_format_specifics() # Check for unsupported datatypes orig_code = header.get_data_dtype() try: obj.set_data_dtype(orig_code) except HeaderDataError: raise HeaderDataError('Input header %s has datatype %s but ' 'output header %s does not support it' % (header.__class__, header.get_value_label('datatype'), klass)) if check: obj.check_fix() return obj def _set_format_specifics(self): ''' Utility routine to set format specific header stuff ''' pass def raw_data_from_fileobj(self, fileobj): ''' Read unscaled data array from `fileobj` Parameters ---------- fileobj : file-like Must be open, and implement ``read`` and ``seek`` methods Returns ------- arr : ndarray unscaled data array ''' dtype = self.get_data_dtype() shape = self.get_data_shape() offset = self.get_data_offset() return array_from_file(shape, dtype, fileobj, offset) def data_from_fileobj(self, fileobj): ''' Read scaled data array from `fileobj` Use this routine to get the scaled image data from an image file `fileobj`, given a header `self`. "Scaled" means, with any header scaling factors applied to the raw data in the file. Use `raw_data_from_fileobj` to get the raw data. Parameters ---------- fileobj : file-like Must be open, and implement ``read`` and ``seek`` methods Returns ------- arr : ndarray scaled data array Notes ----- We use the header to get any scale or intercept values to apply to the data. Raw Analyze files don't have scale factors or intercepts, but this routine also works with formats based on Analyze, that do have scaling, such as SPM analyze formats and NIfTI. ''' # read unscaled data data = self.raw_data_from_fileobj(fileobj) # get scalings from header. Value of None means not present in header slope, inter = self.get_slope_inter() slope = 1.0 if slope is None else slope inter = 0.0 if inter is None else inter # Upcast as necessary for big slopes, intercepts return apply_read_scaling(data, slope, inter) def data_to_fileobj(self, data, fileobj): ''' Write `data` to `fileobj`, maybe modifying `self` In writing the data, we match the header to the written data, by setting the header scaling factors. Thus we modify `self` in the process of writing the data. Parameters ---------- data : array-like data to write; should match header defined shape fileobj : file-like object Object with file interface, implementing ``write`` and ``seek`` Examples -------- >>> from nibabel.analyze import AnalyzeHeader >>> hdr = AnalyzeHeader() >>> hdr.set_data_shape((1, 2, 3)) >>> hdr.set_data_dtype(np.float64) >>> from StringIO import StringIO #23dt : BytesIO >>> str_io = StringIO() #23dt : BytesIO >>> data = np.arange(6).reshape(1,2,3) >>> hdr.data_to_fileobj(data, str_io) >>> data.astype(np.float64).tostring('F') == str_io.getvalue() True ''' data = np.asanyarray(data) shape = self.get_data_shape() if data.shape != shape: raise HeaderDataError('Data should be shape (%s)' % ', '.join(str(s) for s in shape)) out_dtype = self.get_data_dtype() try: arr_writer = make_array_writer(data, out_dtype, self.has_data_slope, self.has_data_intercept) except WriterError: msg = sys.exc_info()[1] # python 2 / 3 compatibility raise HeaderTypeError(msg) seek_tell(fileobj, self.get_data_offset()) arr_writer.to_fileobj(fileobj) self.set_slope_inter(*get_slope_inter(arr_writer)) def get_data_dtype(self): ''' Get numpy dtype for data For examples see ``set_data_dtype`` ''' code = int(self._structarr['datatype']) dtype = self._data_type_codes.dtype[code] return dtype.newbyteorder(self.endianness) def set_data_dtype(self, datatype): ''' Set numpy dtype for data from code or dtype or type Examples -------- >>> hdr = AnalyzeHeader() >>> hdr.set_data_dtype(np.uint8) >>> hdr.get_data_dtype() dtype('uint8') >>> hdr.set_data_dtype(np.dtype(np.uint8)) >>> hdr.get_data_dtype() dtype('uint8') >>> hdr.set_data_dtype('implausible') #doctest: +IGNORE_EXCEPTION_DETAIL Traceback (most recent call last): ... HeaderDataError: data dtype "implausible" not recognized >>> hdr.set_data_dtype('none') #doctest: +IGNORE_EXCEPTION_DETAIL Traceback (most recent call last): ... HeaderDataError: data dtype "none" known but not supported >>> hdr.set_data_dtype(np.void) #doctest: +IGNORE_EXCEPTION_DETAIL Traceback (most recent call last): ... HeaderDataError: data dtype "" known but not supported ''' try: code = self._data_type_codes[datatype] except KeyError: raise HeaderDataError( 'data dtype "%s" not recognized' % datatype) dtype = self._data_type_codes.dtype[code] # test for void, being careful of user-defined types if dtype.type is np.void and not dtype.fields: raise HeaderDataError( 'data dtype "%s" known but not supported' % datatype) self._structarr['datatype'] = code self._structarr['bitpix'] = dtype.itemsize * 8 def get_data_shape(self): ''' Get shape of data Examples -------- >>> hdr = AnalyzeHeader() >>> hdr.get_data_shape() (0,) >>> hdr.set_data_shape((1,2,3)) >>> hdr.get_data_shape() (1, 2, 3) Expanding number of dimensions gets default zooms >>> hdr.get_zooms() (1.0, 1.0, 1.0) ''' dims = self._structarr['dim'] ndims = dims[0] if ndims == 0: return 0, return tuple(int(d) for d in dims[1:ndims+1]) def set_data_shape(self, shape): ''' Set shape of data If ``ndims == len(shape)`` then we set zooms for dimensions higher than ``ndims`` to 1.0 Parameters ---------- shape : sequence sequence of integers specifying data array shape ''' dims = self._structarr['dim'] ndims = len(shape) dims[:] = 1 dims[0] = ndims dims[1:ndims+1] = shape # Check that dimensions fit if not np.all(dims[1:ndims+1] == shape): raise HeaderDataError('shape %s does not fit in dim datatype' % (shape,)) self._structarr['pixdim'][ndims+1:] = 1.0 def get_base_affine(self): ''' Get affine from basic (shared) header fields Note that we get the translations from the center of the image. Examples -------- >>> hdr = AnalyzeHeader() >>> hdr.set_data_shape((3, 5, 7)) >>> hdr.set_zooms((3, 2, 1)) >>> hdr.default_x_flip True >>> hdr.get_base_affine() # from center of image array([[-3., 0., 0., 3.], [ 0., 2., 0., -4.], [ 0., 0., 1., -3.], [ 0., 0., 0., 1.]]) ''' hdr = self._structarr dims = hdr['dim'] ndim = dims[0] return shape_zoom_affine(hdr['dim'][1:ndim+1], hdr['pixdim'][1:ndim+1], self.default_x_flip) get_best_affine = get_base_affine def get_zooms(self): ''' Get zooms from header Returns ------- z : tuple tuple of header zoom values Examples -------- >>> hdr = AnalyzeHeader() >>> hdr.get_zooms() (1.0,) >>> hdr.set_data_shape((1,2)) >>> hdr.get_zooms() (1.0, 1.0) >>> hdr.set_zooms((3, 4)) >>> hdr.get_zooms() (3.0, 4.0) ''' hdr = self._structarr dims = hdr['dim'] ndim = dims[0] if ndim == 0: return (1.0,) pixdims = hdr['pixdim'] return tuple(pixdims[1:ndim+1]) def set_zooms(self, zooms): ''' Set zooms into header fields See docstring for ``get_zooms`` for examples ''' hdr = self._structarr dims = hdr['dim'] ndim = dims[0] zooms = np.asarray(zooms) if len(zooms) != ndim: raise HeaderDataError('Expecting %d zoom values for ndim %d' % (ndim, ndim)) if np.any(zooms < 0): raise HeaderDataError('zooms must be positive') pixdims = hdr['pixdim'] pixdims[1:ndim+1] = zooms[:] def as_analyze_map(self): return self def get_data_offset(self): ''' Return offset into data file to read data Examples -------- >>> hdr = AnalyzeHeader() >>> hdr.get_data_offset() 0 >>> hdr['vox_offset'] = 12 >>> hdr.get_data_offset() 12 ''' return int(self._structarr['vox_offset']) def get_slope_inter(self): ''' Get scalefactor and intercept These are not implemented for basic Analyze ''' return None, None def set_slope_inter(self, slope, inter=None): ''' Set slope and / or intercept into header Set slope and intercept for image data, such that, if the image data is ``arr``, then the scaled image data will be ``(arr * slope) + inter`` In this case, for Analyze images, we can't store the slope or the intercept, so this method only checks that `slope` is None or 1.0, and that `inter` is None or 0. Parameters ---------- slope : None or float If float, value must be 1.0 or we raise a ``HeaderTypeError`` inter : None or float, optional If float, value must be 0.0 or we raise a ``HeaderTypeError`` ''' if (slope is None or slope == 1.0) and (inter is None or inter == 0): return raise HeaderTypeError('Cannot set slope != 1 or intercept != 0 ' 'for Analyze headers') @classmethod def _get_checks(klass): ''' Return sequence of check functions for this class ''' return (klass._chk_sizeof_hdr, klass._chk_datatype, klass._chk_bitpix, klass._chk_pixdims) ''' Check functions in format expected by BatteryRunner class ''' @staticmethod def _chk_sizeof_hdr(hdr, fix=False): rep = Report(HeaderDataError) if hdr['sizeof_hdr'] == 348: return hdr, rep rep.problem_level = 30 rep.problem_msg = 'sizeof_hdr should be 348' if fix: hdr['sizeof_hdr'] = 348 rep.fix_msg = 'set sizeof_hdr to 348' return hdr, rep @classmethod def _chk_datatype(klass, hdr, fix=False): rep = Report(HeaderDataError) code = int(hdr['datatype']) try: dtype = klass._data_type_codes.dtype[code] except KeyError: rep.problem_level = 40 rep.problem_msg = 'data code %d not recognized' % code else: if dtype.itemsize == 0: rep.problem_level = 40 rep.problem_msg = 'data code %d not supported' % code else: return hdr, rep if fix: rep.fix_msg = 'not attempting fix' return hdr, rep @classmethod def _chk_bitpix(klass, hdr, fix=False): rep = Report(HeaderDataError) code = int(hdr['datatype']) try: dt = klass._data_type_codes.dtype[code] except KeyError: rep.problem_level = 10 rep.problem_msg = 'no valid datatype to fix bitpix' if fix: rep.fix_msg = 'no way to fix bitpix' return hdr, rep bitpix = dt.itemsize * 8 if bitpix == hdr['bitpix']: return hdr, rep rep.problem_level = 10 rep.problem_msg = 'bitpix does not match datatype' if fix: hdr['bitpix'] = bitpix # inplace modification rep.fix_msg = 'setting bitpix to match datatype' return hdr, rep @staticmethod def _chk_pixdims(hdr, fix=False): rep = Report(HeaderDataError) pixdims = hdr['pixdim'] spat_dims = pixdims[1:4] if not np.any(spat_dims <= 0): return hdr, rep neg_dims = spat_dims < 0 zero_dims = spat_dims == 0 pmsgs = [] fmsgs = [] if np.any(zero_dims): level = 30 pmsgs.append('pixdim[1,2,3] should be non-zero') if fix: spat_dims[zero_dims] = 1 fmsgs.append('setting 0 dims to 1') if np.any(neg_dims): level = 35 pmsgs.append('pixdim[1,2,3] should be positive') if fix: spat_dims = np.abs(spat_dims) fmsgs.append('setting to abs of pixdim values') rep.problem_level = level rep.problem_msg = ' and '.join(pmsgs) if fix: pixdims[1:4] = spat_dims rep.fix_msg = ' and '.join(fmsgs) return hdr, rep class AnalyzeImage(SpatialImage): header_class = AnalyzeHeader files_types = (('image','.img'), ('header','.hdr')) _compressed_exts = ('.gz', '.bz2') ImageArrayProxy = ArrayProxy def get_header(self): ''' Return header ''' return self._header def get_data_dtype(self): return self._header.get_data_dtype() def set_data_dtype(self, dtype): self._header.set_data_dtype(dtype) @classmethod def from_file_map(klass, file_map): ''' class method to create image from mapping in `file_map `` ''' hdr_fh, img_fh = klass._get_fileholders(file_map) hdrf = hdr_fh.get_prepare_fileobj(mode='rb') header = klass.header_class.from_fileobj(hdrf) if hdr_fh.fileobj is None: # was filename hdrf.close() hdr_copy = header.copy() imgf = img_fh.fileobj if imgf is None: imgf = img_fh.filename data = klass.ImageArrayProxy(imgf, hdr_copy) # Initialize without affine to allow header to pass through unmodified img = klass(data, None, header, file_map=file_map) # set affine from header though img._affine = header.get_best_affine() img._load_cache = {'header': hdr_copy, 'affine': img._affine.copy(), 'file_map': copy_file_map(file_map)} return img @staticmethod def _get_fileholders(file_map): """ Return fileholder for header and image Allows single-file image types to return one fileholder for both types. For Analyze there are two fileholders, one for the header, one for the image. """ return file_map['header'], file_map['image'] def _write_header(self, header_file, header, slope, inter): ''' Utility routine to write header Parameters ---------- header_file : file-like file-like object implementing ``write``, open for writing header : header object slope : None or float slope for data scaling inter : None or float intercept for data scaling ''' header.set_slope_inter(slope, inter) header.write_to(header_file) def to_file_map(self, file_map=None): ''' Write image to `file_map` or contained ``self.file_map`` Parameters ---------- file_map : None or mapping, optional files mapping. If None (default) use object's ``file_map`` attribute instead ''' if file_map is None: file_map = self.file_map data = self.get_data() self.update_header() hdr = self.get_header() out_dtype = self.get_data_dtype() arr_writer = make_array_writer(data, out_dtype, hdr.has_data_slope, hdr.has_data_intercept) hdr_fh, img_fh = self._get_fileholders(file_map) # Check if hdr and img refer to same file; this can happen with odd # analyze images but most often this is because it's a single nifti file hdr_img_same = hdr_fh.same_file_as(img_fh) hdrf = hdr_fh.get_prepare_fileobj(mode='wb') if hdr_img_same: imgf = hdrf else: imgf = img_fh.get_prepare_fileobj(mode='wb') slope, inter = get_slope_inter(arr_writer) self._write_header(hdrf, hdr, slope, inter) # Write image shape = hdr.get_data_shape() if data.shape != shape: raise HeaderDataError('Data should be shape (%s)' % ', '.join(str(s) for s in shape)) seek_tell(imgf, hdr.get_data_offset()) arr_writer.to_fileobj(imgf) if hdr_fh.fileobj is None: # was filename hdrf.close() if not hdr_img_same: if img_fh.fileobj is None: # was filename imgf.close() self._header = hdr self.file_map = file_map def update_header(self): ''' Harmonize header with image data and affine >>> data = np.zeros((2,3,4)) >>> affine = np.diag([1.0,2.0,3.0,1.0]) >>> img = AnalyzeImage(data, affine) >>> hdr = img.get_header() >>> img.shape (2, 3, 4) >>> img.update_header() >>> hdr.get_data_shape() (2, 3, 4) >>> hdr.get_zooms() (1.0, 2.0, 3.0) ''' hdr = self._header # We need to update the header if the data shape has changed. It's a # bit difficult to change the data shape using the standard API, but # maybe it happened if not self._data is None and hdr.get_data_shape() != self._data.shape: hdr.set_data_shape(self._data.shape) # If the affine is not None, and it is different from the main affine in # the header, update the heaader if self._affine is None: return if np.allclose(self._affine, hdr.get_best_affine()): return RZS = self._affine[:3, :3] vox = np.sqrt(np.sum(RZS * RZS, axis=0)) hdr['pixdim'][1:4] = vox load = AnalyzeImage.load save = AnalyzeImage.instance_to_filename nipy-nibabel-d3c26be/nibabel/arrayproxy.py000066400000000000000000000040301177264777700207710ustar00rootroot00000000000000# emacs: -*- mode: python-mode; py-indent-offset: 4; indent-tabs-mode: nil -*- # vi: set ft=python sts=4 ts=4 sw=4 et: ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ## # # See COPYING file distributed along with the NiBabel package for the # copyright and license terms. # ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ## """ Array proxy base class The API is - at minimum: * The object has an attribute ``shape`` * that the object returns the data array from ``np.asarray(obj)`` * that modifying no object outside ``obj`` will affect the result of ``np.asarray(obj)``. Specifically, if you pass a header into the the __init__, then modifying the original header will not affect the result of the array return. You might also want to implement ``state_stamper`` """ from .volumeutils import allopen class ArrayProxy(object): """ The array proxy allows us to freeze the passed fileobj and header such that it returns the expected data array. This fairly generic implementation allows us to deal with Analyze and its variants, including Nifti1, and with the MGH format, apparently. It requires a ``header`` object with methods: * copy * get_data_shape * data_from_fileobj Other image types might need to implement their own implementation of this API. See :mod:`minc` for an example. """ def __init__(self, file_like, header): self.file_like = file_like self.header = header.copy() self._data = None self._shape = header.get_data_shape() @property def shape(self): return self._shape def __array__(self): ''' Cached read of data from file ''' if self._data is None: self._data = self._read_data() return self._data def _read_data(self): fileobj = allopen(self.file_like) data = self.header.data_from_fileobj(fileobj) if isinstance(self.file_like, basestring): # filename fileobj.close() return data nipy-nibabel-d3c26be/nibabel/arraywriters.py000066400000000000000000000536411177264777700213230ustar00rootroot00000000000000""" Array writer objects Array writers have init signature:: def __init__(self, array, out_dtype=None) and methods * scaling_needed() - returns True if array requires scaling for write *.finite_range() - returns min, max of self.array * to_fileobj(fileobj, offset=None, order='F') They have attributes: * array * out_dtype They are designed to write arrays to a fileobj with reasonable memory efficiency. Array writers may be able to scale the array or apply an intercept, or do something else to make sense of conversions between float and int, or between larger ints and smaller. """ import numpy as np from .casting import (int_to_float, as_int, int_abs, type_info, floor_exact, best_float) from .volumeutils import finite_range, array_to_file class WriterError(Exception): pass class ScalingError(WriterError): pass class ArrayWriter(object): def __init__(self, array, out_dtype=None, calc_scale=True): """ Initialize array writer Parameters ---------- array : array-like array-like object out_dtype : None or dtype dtype with which `array` will be written. For this class, `out_dtype`` needs to be the same as the dtype of the input `array` or a swapped version of the same. \*\*kwargs : keyword arguments Examples -------- >>> arr = np.array([0, 255], np.uint8) >>> aw = ArrayWriter(arr) >>> aw = ArrayWriter(arr, np.int8) #doctest: +IGNORE_EXCEPTION_DETAIL Traceback (most recent call last): ... WriterError: Scaling needed but cannot scale """ self._array = np.asanyarray(array) arr_dtype = self._array.dtype if out_dtype is None: out_dtype = arr_dtype else: out_dtype = np.dtype(out_dtype) self._out_dtype = out_dtype self._finite_range = None if self.scaling_needed(): raise WriterError("Scaling needed but cannot scale") def scaling_needed(self): """ Checks if scaling is needed for input array Raises WriterError if no scaling possible. The rules are in the code, but: * If numpy will cast, return False (no scaling needed) * If input or output is an object or structured type, raise * If input is complex, raise * If the output is float, return False * If there is no finite value in the input array, or the input array is all 0, return False (the writer will strip the non-finite values) * By now we are casting to (u)int. If the input type is a float, return True (we do need scaling) * Now input and output types are (u)ints. If the min and max in the data are within range of the output type, return False * Otherwise return True """ data = self._array arr_dtype = data.dtype out_dtype = self._out_dtype # There's a bug in np.can_cast (at least up to and including 1.6.1) such # that any structured output type passes. Check for this first. if 'V' in (arr_dtype.kind, out_dtype.kind): if arr_dtype == out_dtype: return False raise WriterError('Cannot cast to or from non-numeric types') if np.can_cast(arr_dtype, out_dtype): return False # Direct casting for complex output from any numeric type if out_dtype.kind == 'c': return False if arr_dtype.kind == 'c': raise WriterError('Cannot cast complex types to non-complex') # Direct casting for float output from any non-complex numeric type if out_dtype.kind == 'f': return False # Now we need to look at the data for special cases mn, mx = self.finite_range() # this is cached if (mn, mx) in ((0, 0), (np.inf, -np.inf)): # Data all zero, or no data is finite return False # Floats -> (u)ints always need scaling if arr_dtype.kind == 'f': return True # (u)int input, (u)int output assert arr_dtype.kind in 'iu' and out_dtype.kind in 'iu' info = np.iinfo(out_dtype) # No scaling needed if data already fits in output type # But note - we need to convert to ints, to avoid conversion to float # during comparisons, and therefore int -> float conversions which are # not exact. Only a problem for uint64 though. We need as_int here to # work around a numpy 1.4.1 bug in uint conversion if as_int(mn) >= as_int(info.min) and as_int(mx) <= as_int(info.max): return False return True @property def array(self): """ Return array from arraywriter """ return self._array @property def out_dtype(self): """ Return `out_dtype` from arraywriter """ return self._out_dtype def finite_range(self): """ Return (maybe cached) finite range of data array """ if self._finite_range is None: self._finite_range = finite_range(self._array) return self._finite_range def _writing_range(self): """ Finite range for thresholding on write """ if self._out_dtype.kind in 'iu' and self._array.dtype.kind == 'f': mn, mx = self.finite_range() if (mn, mx) == (np.inf, -np.inf): # no finite data mn, mx = 0, 0 return mn, mx return None, None def to_fileobj(self, fileobj, order='F', nan2zero=True): """ Write array into `fileobj` Parameters ---------- fileobj : file-like object order : {'F', 'C'} order (Fortran or C) to which to write array nan2zero : {True, False}, optional Whether to set NaN values to 0 when writing integer output. Defaults to True. If False, NaNs get converted with numpy ``astype``, and the behavior is undefined. Ignored for floating point output. """ mn, mx = self._writing_range() array_to_file(self._array, fileobj, self._out_dtype, offset=None, mn=mn, mx=mx, order=order, nan2zero=nan2zero) class SlopeArrayWriter(ArrayWriter): """ ArrayWriter that can use scalefactor for writing arrays The scalefactor allows the array writer to write floats to int output types, and rescale larger ints to smaller. It can therefore lose precision. It extends the ArrayWriter class with attribute: * slope and methods: * reset() - reset slope to default (not adapted to self.array) * calc_scale() - calculate slope to best write self.array """ def __init__(self, array, out_dtype=None, calc_scale=True, scaler_dtype=np.float32): """ Initialize array writer Parameters ---------- array : array-like array-like object out_dtype : None or dtype dtype with which `array` will be written. For this class, `out_dtype`` needs to be the same as the dtype of the input `array` or a swapped version of the same. calc_scale : {True, False}, optional Whether to calculate scaling for writing `array` on initialization. If False, then you can calculate this scaling with ``obj.calc_scale()`` - see examples scaler_dtype : dtype-like, optional specifier for numpy dtype for scaling Examples -------- >>> arr = np.array([0, 254], np.uint8) >>> aw = SlopeArrayWriter(arr) >>> aw.slope 1.0 >>> aw = SlopeArrayWriter(arr, np.int8) >>> aw.slope 2.0 >>> aw = SlopeArrayWriter(arr, np.int8, calc_scale=False) >>> aw.slope 1.0 >>> aw.calc_scale() >>> aw.slope 2.0 """ self._array = np.asanyarray(array) arr_dtype = self._array.dtype if out_dtype is None: out_dtype = arr_dtype else: out_dtype = np.dtype(out_dtype) self._out_dtype = out_dtype self.scaler_dtype = np.dtype(scaler_dtype) self.reset() if calc_scale: self.calc_scale() def reset(self): """ Set object to values before any scaling calculation """ self.slope = 1.0 self._finite_range = None self._scale_calced = False def _get_slope(self): return self._slope def _set_slope(self, val): self._slope = np.squeeze(self.scaler_dtype.type(val)) slope = property(_get_slope, _set_slope, None, 'get/set slope') def calc_scale(self, force=False): """ Calculate / set scaling for floats/(u)ints to (u)ints """ # If we've run already, return unless told otherwise if not force and self._scale_calced: return self.reset() if not self.scaling_needed(): return self._do_scaling() self._scale_calced = True def to_fileobj(self, fileobj, order='F', nan2zero=True): """ Write array into `fileobj` Parameters ---------- fileobj : file-like object order : {'F', 'C'} order (Fortran or C) to which to write array nan2zero : {True, False}, optional Whether to set NaN values to 0 when writing integer output. Defaults to True. If False, NaNs get converted with numpy ``astype``, and the behavior is undefined. Ignored for floating point output. """ mn, mx = self._writing_range() array_to_file(self._array, fileobj, self._out_dtype, offset=None, divslope=self.slope, mn=mn, mx=mx, order=order, nan2zero=nan2zero) def _do_scaling(self): arr = self._array out_dtype = self._out_dtype assert out_dtype.kind in 'iu' mn, mx = self.finite_range() if arr.dtype.kind == 'f': # Float to (u)int scaling self._range_scale() return # (u)int to (u)int info = np.iinfo(out_dtype) out_max, out_min = info.max, info.min # If left as int64, uint64, comparisons will default to floats, and # these are inexact for > 2**53 - so convert to int if (as_int(mx) <= as_int(out_max) and as_int(mn) >= as_int(out_min)): # already in range return # (u)int to (u)int scaling self._iu2iu() def _iu2iu(self): # (u)int to (u)int scaling mn, mx = self.finite_range() if self._out_dtype.kind == 'u': # We're checking for a sign flip. This can only work for uint # output, because, for int output, the abs min of the type is # greater than the abs max, so the data either fit into the range # (tested for in _do_scaling), or this test can't pass # Need abs that deals with max neg ints. abs problem only arises # when all the data is set to max neg integer value imax = np.iinfo(self._out_dtype).max if mx <= 0 and int_abs(mn) <= imax: # sign flip enough? # -1.0 * arr will be in scaler_dtype precision self.slope = -1.0 return self._range_scale() def _range_scale(self): """ Calculate scaling based on data range and output type """ mn, mx = self.finite_range() # These can be floats or integers out_dtype = self._out_dtype info = type_info(out_dtype) t_mn_mx = info['min'], info['max'] big_float = best_float() if out_dtype.kind == 'f': # But we want maximum precision for the calculations. Casting will # not lose precision because min/max are of fp type. t_min, t_max = np.array(t_mn_mx, dtype = big_float) else: # (u)int t_min, t_max = [int_to_float(v, big_float) for v in t_mn_mx] if self._out_dtype.kind == 'u': if mn < 0 and mx > 0: raise WriterError('Cannot scale negative and positive ' 'numbers to uint without intercept') if mx <= 0: # All input numbers <= 0 self.slope = mn / t_max else: # All input numbers > 0 self.slope = mx / t_max return # Scaling to int. We need the bigger slope of (mn/t_min) and # (mx/t_max). If the mn or the max is the wrong side of 0, that # will make these negative and so they won't worry us mx_slope = mx / t_max mn_slope = mn / t_min self.slope = np.max([mx_slope, mn_slope]) class SlopeInterArrayWriter(SlopeArrayWriter): """ Array writer that can use slope and intercept to scale array The writer can subtract an intercept, and divided by a slope, in order to be able to convert floating point values into a (u)int range, or to convert larger (u)ints to smaller. It extends the ArrayWriter class with attributes: * inter * slope and methods: * reset() - reset inter, slope to default (not adapted to self.array) * calc_scale() - calculate inter, slope to best write self.array """ def __init__(self, array, out_dtype=None, calc_scale=True, scaler_dtype=np.float32): """ Initialize array writer Parameters ---------- array : array-like array-like object out_dtype : None or dtype dtype with which `array` will be written. For this class, `out_dtype`` needs to be the same as the dtype of the input `array` or a swapped version of the same. calc_scale : {True, False}, optional Whether to calculate scaling for writing `array` on initialization. If False, then you can calculate this scaling with ``obj.calc_scale()`` - see examples scaler_dtype : dtype-like, optional specifier for numpy dtype for slope, intercept Examples -------- >>> arr = np.array([0, 255], np.uint8) >>> aw = SlopeInterArrayWriter(arr) >>> aw.slope, aw.inter (1.0, 0.0) >>> aw = SlopeInterArrayWriter(arr, np.int8) >>> (aw.slope, aw.inter) == (1.0, 128) True >>> aw = SlopeInterArrayWriter(arr, np.int8, calc_scale=False) >>> aw.slope, aw.inter (1.0, 0.0) >>> aw.calc_scale() >>> (aw.slope, aw.inter) == (1.0, 128) True """ super(SlopeInterArrayWriter, self).__init__(array, out_dtype, calc_scale, scaler_dtype) def reset(self): """ Set object to values before any scaling calculation """ super(SlopeInterArrayWriter, self).reset() self.inter = 0.0 def _get_inter(self): return self._inter def _set_inter(self, val): self._inter = np.squeeze(self.scaler_dtype.type(val)) inter = property(_get_inter, _set_inter, None, 'get/set inter') def to_fileobj(self, fileobj, order='F', nan2zero=True): """ Write array into `fileobj` Parameters ---------- fileobj : file-like object order : {'F', 'C'} order (Fortran or C) to which to write array nan2zero : {True, False}, optional Whether to set NaN values to 0 when writing integer output. Defaults to True. If False, NaNs get converted with numpy ``astype``, and the behavior is undefined. Ignored for floating point output. """ mn, mx = self._writing_range() array_to_file(self._array, fileobj, self._out_dtype, offset=None, intercept=self.inter, divslope=self.slope, mn=mn, mx=mx, order=order, nan2zero=nan2zero) def _iu2iu(self): # (u)int to (u)int mn, mx = [as_int(v) for v in self.finite_range()] # range may be greater than the largest integer for this type. # as_int needed to work round numpy 1.4.1 int casting bug out_dtype = self._out_dtype t_min, t_max = np.iinfo(out_dtype).min, np.iinfo(out_dtype).max type_range = as_int(t_max) - as_int(t_min) mn2mx = mx - mn if mn2mx <= type_range: # might offset be enough? if t_min == 0: # uint output - take min to 0 # decrease offset with floor_exact, meaning mn >= t_min after # subtraction. But we may have pushed the data over t_max, # which we check below inter = floor_exact(mn - t_min, self.scaler_dtype) else: # int output - take midpoint to 0 # ceil below increases inter, pushing scale up to 0.5 towards # -inf, because ints have abs min == abs max + 1 midpoint = mn + as_int(np.ceil(mn2mx / 2.0)) # Floor exact decreases inter, so pulling scaled values more # positive. This may make mx - inter > t_max inter = floor_exact(midpoint, self.scaler_dtype) # Need to check still in range after floor_exact-ing int_inter = as_int(inter) assert mn - int_inter >= t_min if mx - int_inter <= t_max: self.inter = inter return # Try slope options (sign flip) and then range scaling super(SlopeInterArrayWriter, self)._iu2iu() def _range_scale(self): """ Calculate scaling, intercept based on data range and output type """ mn, mx = self.finite_range() # Values of self.array.dtype type out_dtype = self._out_dtype if mx == mn: # Only one number in array self.inter = mn return # Straight mx-mn can overflow. big_float = best_float() # usually longdouble except in win 32 if mn.dtype.kind == 'f': # Already floats # float64 and below cast correctly to longdouble. Longdouble needs # no casting mn2mx = np.diff(np.array([mn, mx], dtype=big_float)) else: # max possible (u)int range is 2**64-1 (int64, uint64) # int_to_float covers this range. On windows longdouble is the same # as double so mn2mx will be 2**64 - thus overestimating slope # slightly. Casting to int needed to allow mx-mn to be larger than # the largest (u)int value mn2mx = int_to_float(as_int(mx) - as_int(mn), big_float) if out_dtype.kind == 'f': # Type range, these are also floats info = type_info(out_dtype) t_mn_mx = info['min'], info['max'] else: t_mn_mx = np.iinfo(out_dtype).min, np.iinfo(out_dtype).max t_mn_mx= [int_to_float(v, big_float) for v in t_mn_mx] # We want maximum precision for the calculations. Casting will # not lose precision because min/max are of fp type. assert [v.dtype.kind for v in t_mn_mx] == ['f', 'f'] scaled_mn2mx = np.diff(np.array(t_mn_mx, dtype = big_float)) slope = mn2mx / scaled_mn2mx self.inter = mn - t_mn_mx[0] * slope self.slope = slope if not np.all(np.isfinite([self.slope, self.inter])): raise ScalingError("Slope / inter not both finite") def get_slope_inter(writer): """ Return slope, intercept from array writer object Parameters ---------- writer : ArrayWriter instance Returns ------- slope : scalar slope in `writer` or 1.0 if not present inter : scalar intercept in `writer` or 0.0 if not present Examples -------- >>> arr = np.arange(10) >>> get_slope_inter(ArrayWriter(arr)) (1.0, 0.0) >>> get_slope_inter(SlopeArrayWriter(arr)) (1.0, 0.0) >>> get_slope_inter(SlopeInterArrayWriter(arr)) (1.0, 0.0) """ try: slope = writer.slope except AttributeError: slope = 1.0 try: inter = writer.inter except AttributeError: inter = 0.0 return slope, inter def make_array_writer(data, out_type, has_slope=True, has_intercept=True, **kwargs): """ Make array writer instance for array `data` and output type `out_type` Parameters ---------- data : array-like array for which to create array writer out_type : dtype-like input to numpy dtype to specify array writer output type has_slope : {True, False} If True, array write can use scaling to adapt the array to `out_type` has_intercept : {True, False} If True, array write can use intercept to adapt the array to `out_type` \*\*kwargs : other keyword arguments to pass to the arraywriter class, if it accepts them. Returns ------- writer : arraywriter instance Instance of array writer, with class adapted to `has_intercept` and `has_slope`. Examples -------- >>> aw = make_array_writer(np.arange(10), np.uint8, True, True) >>> type(aw) == SlopeInterArrayWriter True >>> aw = make_array_writer(np.arange(10), np.uint8, True, False) >>> type(aw) == SlopeArrayWriter True >>> aw = make_array_writer(np.arange(10), np.uint8, False, False) >>> type(aw) == ArrayWriter True """ data = np.asarray(data) if has_intercept == True and has_slope == False: raise ValueError('Cannot handle intercept without slope') if has_intercept: return SlopeInterArrayWriter(data, out_type, **kwargs) if has_slope: return SlopeArrayWriter(data, out_type, **kwargs) return ArrayWriter(data, out_type) nipy-nibabel-d3c26be/nibabel/batteryrunners.py000066400000000000000000000223221177264777700216440ustar00rootroot00000000000000# emacs: -*- mode: python-mode; py-indent-offset: 4; indent-tabs-mode: nil -*- # vi: set ft=python sts=4 ts=4 sw=4 et: ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ## # # See COPYING file distributed along with the NiBabel package for the # copyright and license terms. # ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ## ''' Battery runner classes and Report classes These classes / objects are for generic checking / fixing batteries The ``BatteryRunner`` class will run a series of checks on a single object. A check is a callable, of signature ``func(obj, fix=False)`` which returns a tuple ``(obj, Report)`` for ``func(obj, False)`` or ``func(obj, True)``, where the obj may be a modified object, or a different object, if ``fix==True``. To run checks only, and return problem report objects: >>> def chk(obj, fix=False): # minimal check ... return obj, Report() >>> btrun = BatteryRunner((chk,)) >>> reports = btrun.check_only('a string') To run checks and fixes, returning fixed object and problem report sequence, with possible fix messages: >>> fixed_obj, report_seq = btrun.check_fix('a string') Reports are iterable things, where the elements in the iterations are ``Problems``, with attributes ``error``, ``problem_level``, ``problem_msg``, and possibly empty ``fix_msg``. The ``problem_level`` is an integer, giving the level of problem, from 0 (no problem) to 50 (very bad problem). The levels follow the log levels from the logging module (e.g 40 equivalent to "error" level, 50 to "critical"). The ``error`` can be one of ``None`` if no error to suggest, or an Exception class that the user might consider raising for this sitation. The ``problem_msg`` and ``fix_msg`` are human readable strings that should explain what happened. ======================= More about ``checks`` ======================= Checks are callables returning objects and reports, like ``chk`` below, such that:: obj, report = chk(obj, fix=False) obj, report = chk(obj, fix=True) For example, for the Analyze header, we need to check the datatype:: def chk_datatype(hdr, fix=True): rep = Report(hdr, HeaderDataError) code = int(hdr['datatype']) try: dtype = AnalyzeHeader._data_type_codes.dtype[code] except KeyError: rep.problem_level = 40 rep.problem_msg = 'data code not recognized' else: if dtype.type is np.void: rep.problem_level = 40 rep.problem_msg = 'data code not supported' else: return hdr, rep if fix: rep.fix_problem_msg = 'not attempting fix' return hdr, rep or the bitpix:: def chk_bitpix(hdr, fix=True): rep = Report(HeaderDataError) code = int(hdr['datatype']) try: dt = AnalyzeHeader._data_type_codes.dtype[code] except KeyError: rep.problem_level = 10 rep.problem_msg = 'no valid datatype to fix bitpix' return hdr, rep bitpix = dt.itemsize * 8 if bitpix == hdr['bitpix']: return hdr, rep rep.problem_level = 10 rep.problem_msg = 'bitpix does not match datatype') if fix: hdr['bitpix'] = bitpix # inplace modification rep.fix_msg = 'setting bitpix to match datatype' return hdr, ret or the pixdims:: def chk_pixdims(hdr, fix=True): rep = Report(hdr, HeaderDataError) if not np.any(hdr['pixdim'][1:4] < 0): return hdr, rep rep.problem_level = 40 rep.problem_msg = 'pixdim[1,2,3] should be positive' if fix: hdr['pixdim'][1:4] = np.abs(hdr['pixdim'][1:4]) rep.fix_msg = 'setting to abs of pixdim values' return hdr, rep ''' class BatteryRunner(object): ''' Class to run set of checks ''' def __init__(self, checks): ''' Initialize instance from sequence of `checks` Parameters ---------- checks : sequence sequence of checks, where checks are callables matching signature ``obj, rep = chk(obj, fix=False)``. Checks are run in the order they are passed. Examples -------- >>> def chk(obj, fix=False): # minimal check ... return obj, Report() >>> btrun = BatteryRunner((chk,)) ''' self._checks = checks def check_only(self, obj): ''' Run checks on `obj` returning reports Parameters ---------- obj : anything object on which to run checks Returns ------- reports : sequence sequence of report objects reporting on result of running checks (withou fixes) on `obj` ''' reports = [] for check in self._checks: obj, rep = check(obj, False) reports.append(rep) return reports def check_fix(self, obj): ''' Run checks, with fixes, on `obj` returning `obj`, reports Parameters ---------- obj : anything object on which to run checks, fixes Returns ------- obj : anything possibly modified or replaced `obj`, after fixes reports : sequence sequence of reports on checks, fixes ''' reports = [] for check in self._checks: obj, report = check(obj, True) reports.append(report) return obj, reports def __len__(self): return len(self._checks) class Report(object): def __init__(self, error=Exception, problem_level=0, problem_msg='', fix_msg=''): ''' Initialize report with values Parameters ---------- error : None or Exception Error to raise if raising error for this check. If None, no error can be raised for this check (it was probably normal). problem_level : int level of problem. From 0 (no problem) to 50 (severe problem). If the report originates from a fix, then this is the level of the problem remaining after the fix. Default is 0 problem_msg : string String describing problem detected. Default is '' fix_msg : string String describing any fix applied. Default is ''. Examples -------- >>> rep = Report() >>> rep.problem_level 0 >>> rep = Report(TypeError, 10) >>> rep.problem_level 10 ''' self.error = error self.problem_level = problem_level self.problem_msg = problem_msg self.fix_msg = fix_msg def __getstate__(self): """ State that defines object Returns ------- tup : tuple """ return self.error, self.problem_level, self.problem_msg, self.fix_msg def __eq__(self, other): ''' are two BatteryRunner-like objects equal? Parameters ---------- other : object report-like object to test equality Examples -------- >>> rep = Report(problem_level=10) >>> rep2 = Report(problem_level=10) >>> rep == rep2 True >>> rep3 = Report(problem_level=20) >>> rep == rep3 False ''' return self.__getstate__() == other.__getstate__() def __ne__(self, other): """ are two BatteryRunner-like objects not equal? See docstring for __eq__ """ return not self == other def __str__(self): ''' Printable string for object ''' return self.__dict__.__str__() @property def message(self): ''' formatted message string, including fix message if present ''' if self.fix_msg: return '; '.join((self.problem_msg, self.fix_msg)) return self.problem_msg def log_raise(self, logger, error_level=40): ''' Log problem, raise error if problem >= `error_level` Parameters ---------- logger : log log object, implementing ``log`` method error_level : int, optional If ``self.problem_level`` >= `error_level`, raise error ''' logger.log(self.problem_level, self.message) if self.problem_level and self.problem_level >= error_level: if self.error: raise self.error(self.problem_msg) def write_raise(self, stream, error_level=40, log_level=30): ''' Write report to `stream` Parameters ---------- stream : file-like implementing ``write`` method error_level : int, optional level at which to raise error for problem detected in ``self`` log_level : int, optional Such that if `log_level` is >= ``self.problem_level`` we write the report to `stream`, otherwise we write nothing. ''' if self.problem_level >= log_level: stream.write('Level %s: %s\n' % (self.problem_level, self.message)) if self.problem_level and self.problem_level >= error_level: if self.error: raise self.error(self.problem_msg) nipy-nibabel-d3c26be/nibabel/benchmarks/000077500000000000000000000000001177264777700203175ustar00rootroot00000000000000nipy-nibabel-d3c26be/nibabel/benchmarks/__init__.py000066400000000000000000000000311177264777700224220ustar00rootroot00000000000000# Benchmarks for nibabel nipy-nibabel-d3c26be/nibabel/benchmarks/bench_load_save.py000066400000000000000000000032401177264777700237640ustar00rootroot00000000000000""" Benchmarks for load and save of image arrays Run benchmarks with:: import nibabel as nib nib.bench() If you have doctests enabled by default in nose (with a noserc file or environment variable), and you have a numpy version <= 1.6.1, this will also run the doctests, let's hope they pass. """ import sys import numpy as np from ..py3k import BytesIO from .. import Nifti1Image from numpy.testing import measure def bench_load_save(): rng = np.random.RandomState(20111001) repeat = 4 img_shape = (128, 128, 64) arr = rng.normal(size=img_shape) img = Nifti1Image(arr, np.eye(4)) sio = BytesIO() img.file_map['image'].fileobj = sio hdr = img.get_header() sys.stdout.flush() print "\nImage load save" print "----------------" hdr.set_data_dtype(np.float32) mtime = measure('img.to_file_map()', repeat) print '%30s %6.2f' % ('Save float64 to float32', mtime) mtime = measure('img.from_file_map(img.file_map)', repeat) print '%30s %6.2f' % ('Load from float32', mtime) hdr.set_data_dtype(np.int16) mtime = measure('img.to_file_map()', repeat) print '%30s %6.2f' % ('Save float64 to int16', mtime) mtime = measure('img.from_file_map(img.file_map)', repeat) print '%30s %6.2f' % ('Load from int16', mtime) arr = np.random.random_integers(low=-1000,high=-1000, size=img_shape) arr = arr.astype(np.int16) img = Nifti1Image(arr, np.eye(4)) sio = BytesIO() img.file_map['image'].fileobj = sio hdr = img.get_header() hdr.set_data_dtype(np.float32) mtime = measure('img.to_file_map()', repeat) print '%30s %6.2f' % ('Save Int16 to float32', mtime) sys.stdout.flush() nipy-nibabel-d3c26be/nibabel/casting.py000066400000000000000000000541121177264777700202070ustar00rootroot00000000000000""" Utilties for casting numpy values in various ways Most routines work round some numpy oddities in floating point precision and casting. Others work round numpy casting to and from python ints """ from platform import processor, machine import numpy as np class CastingError(Exception): pass def float_to_int(arr, int_type, nan2zero=True, infmax=False): """ Convert floating point array `arr` to type `int_type` * Rounds numbers to nearest integer * Clips values to prevent overflows when casting * Converts NaN to 0 (for `nan2zero`==True Casting floats to integers is delicate because the result is undefined and platform specific for float values outside the range of `int_type`. Define ``shared_min`` to be the minimum value that can be exactly represented in both the float type of `arr` and `int_type`. Define `shared_max` to be the equivalent maximum value. To avoid undefined results we threshold `arr` at ``shared_min`` and ``shared_max``. Parameters ---------- arr : array-like Array of floating point type int_type : object Numpy integer type nan2zero : {True, False, None} Whether to convert NaN value to zero. Default is True. If False, and NaNs are present, raise CastingError. If None, do not check for NaN values and pass through directly to the ``astype`` casting mechanism. In this last case, the resulting value is undefined. infmax : {False, True} If True, set np.inf values in `arr` to be `int_type` integer maximum value, -np.inf as `int_type` integer minimum. If False, set +/- infs to be ``shared_min``, ``shared_max`` as defined above. Therefore False gives faster conversion at the expense of infs that are further from infinity. Returns ------- iarr : ndarray of type `int_type` Examples -------- >>> float_to_int([np.nan, np.inf, -np.inf, 1.1, 6.6], np.int16) array([ 0, 32767, -32768, 1, 7], dtype=int16) Notes ----- Numpy relies on the C library to cast from float to int using the standard ``astype`` method of the array. Quoting from section F4 of the C99 standard: If the floating value is infinite or NaN or if the integral part of the floating value exceeds the range of the integer type, then the "invalid" floating-point exception is raised and the resulting value is unspecified. Hence we threshold at ``shared_min`` and ``shared_max`` to avoid casting to values that are undefined. See: http://en.wikipedia.org/wiki/C99 . There are links to the C99 standard from that page. """ arr = np.asarray(arr) flt_type = arr.dtype.type int_type = np.dtype(int_type).type # Deal with scalar as input; fancy indexing needs 1D shape = arr.shape arr = np.atleast_1d(arr) mn, mx = shared_range(flt_type, int_type) if nan2zero is None: seen_nans = False else: nans = np.isnan(arr) seen_nans = np.any(nans) if nan2zero == False and seen_nans: raise CastingError('NaNs in array, nan2zero is False') iarr = np.clip(np.rint(arr), mn, mx).astype(int_type) if seen_nans: iarr[nans] = 0 if not infmax: return iarr.reshape(shape) ii = np.iinfo(int_type) iarr[arr == np.inf] = ii.max if ii.min != int(mn): iarr[arr == -np.inf] = ii.min return iarr.reshape(shape) # Cache range values _SHARED_RANGES = {} def shared_range(flt_type, int_type): """ Min and max in float type that are >=min, <=max in integer type This is not as easy as it sounds, because the float type may not be able to exactly represent the max or min integer values, so we have to find the next exactly representable floating point value to do the thresholding. Parameters ---------- flt_type : dtype specifier A dtype specifier referring to a numpy floating point type. For example, ``f4``, ``np.dtype('f4')``, ``np.float32`` are equivalent. int_type : dtype specifier A dtype specifier referring to a numpy integer type. For example, ``i4``, ``np.dtype('i4')``, ``np.int32`` are equivalent Returns ------- mn : object Number of type `flt_type` that is the minumum value in the range of `int_type`, such that ``mn.astype(int_type)`` >= min of `int_type` mx : object Number of type `flt_type` that is the maximum value in the range of `int_type`, such that ``mx.astype(int_type)`` <= max of `int_type` Examples -------- >>> shared_range(np.float32, np.int32) == (-2147483648.0, 2147483520.0) True >>> shared_range('f4', 'i4') == (-2147483648.0, 2147483520.0) True """ flt_type = np.dtype(flt_type).type int_type = np.dtype(int_type).type key = (flt_type, int_type) # Used cached value if present try: return _SHARED_RANGES[key] except KeyError: pass ii = np.iinfo(int_type) fi = np.finfo(flt_type) mn = ceil_exact(ii.min, flt_type) if mn == -np.inf: mn = fi.min mx = floor_exact(ii.max, flt_type) if mx == np.inf: mx = fi.max _SHARED_RANGES[key] = (mn, mx) return mn, mx # ---------------------------------------------------------------------------- # Routines to work out the next lowest representable integer in floating point # types. # ---------------------------------------------------------------------------- try: _float16 = np.float16 except AttributeError: # float16 not present in np < 1.6 _float16 = None class FloatingError(Exception): pass def on_powerpc(): """ True if we are running on a Power PC platform Has to deal with older Macs and IBM POWER7 series among others """ return processor() == 'powerpc' or machine().startswith('ppc') def type_info(np_type): """ Return dict with min, max, nexp, nmant, width for numpy type `np_type` Type can be integer in which case nexp and nmant are None. Parameters ---------- np_type : numpy type specifier Any specifier for a numpy dtype Returns ------- info : dict with fields ``min`` (minimum value), ``max`` (maximum value), ``nexp`` (exponent width), ``nmant`` (significand precision not including implicit first digit), ``minexp`` (minimum exponent), ``maxexp`` (maximum exponent), ``width`` (width in bytes). (``nexp``, ``nmant``, ``minexp``, ``maxexp``) are None for integer types. Both ``min`` and ``max`` are of type `np_type`. Raises ------ FloatingError : for floating point types we don't recognize Notes ----- You might be thinking that ``np.finfo`` does this job, and it does, except for PPC long doubles (http://projects.scipy.org/numpy/ticket/2077) and float96 on Windows compiled with Mingw. This routine protects against such errors in ``np.finfo`` by only accepting values that we know are likely to be correct. """ dt = np.dtype(np_type) np_type = dt.type width = dt.itemsize try: # integer type info = np.iinfo(dt) except ValueError: pass else: return dict(min=np_type(info.min), max=np_type(info.max), minexp=None, maxexp=None, nmant=None, nexp=None, width=width) info = np.finfo(dt) # Trust the standard IEEE types nmant, nexp = info.nmant, info.nexp ret = dict(min=np_type(info.min), max=np_type(info.max), nmant=nmant, nexp=nexp, minexp=info.minexp, maxexp=info.maxexp, width=width) if np_type in (_float16, np.float32, np.float64, np.complex64, np.complex128): return ret info_64 = np.finfo(np.float64) if dt.kind == 'c': assert np_type is np.longcomplex vals = (nmant, nexp, width / 2) else: assert np_type is np.longdouble vals = (nmant, nexp, width) if vals in ((112, 15, 16), # binary128 (info_64.nmant, info_64.nexp, 8), # float64 (63, 15, 12), (63, 15, 16)): # Intel extended 80 return ret # these are OK without modification # The remaining types are longdoubles with bad finfo values. Some we # correct, others we wait to hear of errors. # We start with float64 as basis ret = type_info(np.float64) if vals in ((52, 15, 12), # windows float96 (52, 15, 16)): # windows float128? # On windows 32 bit at least, float96 is Intel 80 storage but operating # at float64 precision. The finfo values give nexp == 15 (as for intel # 80) but in calculations nexp in fact appears to be 11 as for float64 ret.update(dict(width=width)) return ret # Oh dear, we don't recognize the type information. Try some known types # and then give up. At this stage we're expecting exotic longdouble or their # complex equivalent. if not np_type in (np.longdouble, np.longcomplex) or width not in (16, 32): raise FloatingError('We had not expected type %s' % np_type) if (vals == (1, 1, 16) and on_powerpc() and _check_maxexp(np.longdouble, 1024)): # double pair on PPC. The _check_nmant routine does not work for this # type, hence the powerpc platform check instead ret.update(dict(nmant = 106, width=width)) elif (_check_nmant(np.longdouble, 52) and _check_maxexp(np.longdouble, 11)): # Got float64 despite everything pass elif (_check_nmant(np.longdouble, 112) and _check_maxexp(np.longdouble, 16384)): # binary 128, but with some busted type information. np.longcomplex # seems to break here too, so we need to use np.longdouble and # complexify two = np.longdouble(2) # See: http://matthew-brett.github.com/pydagogue/floating_point.html max_val = (two ** 113 - 1) / (two ** 112) * two ** 16383 if np_type is np.longcomplex: max_val += 0j ret = dict(min = -max_val, max= max_val, nmant = 112, nexp = 15, minexp = -16382, maxexp = 16384, width = width) else: # don't recognize the type raise FloatingError('We had not expected long double type %s ' 'with info %s' % (np_type, info)) return ret def _check_nmant(np_type, nmant): """ True if fp type `np_type` seems to have `nmant` significand digits Note 'digits' does not include implicit digits. And in fact if there are no implicit digits, the `nmant` number is one less than the actual digits. Assumes base 2 representation. Parameters ---------- np_type : numpy type specifier Any specifier for a numpy dtype nmant : int Number of digits to test against Returns ------- tf : bool True if `nmant` is the correct number of significand digits, false otherwise """ np_type = np.dtype(np_type).type max_contig = np_type(2 ** (nmant + 1)) # maximum of contiguous integers tests = max_contig + np.array([-2, -1, 0, 1, 2], dtype=np_type) return np.all(tests - max_contig == [-2, -1, 0, 0, 2]) def _check_maxexp(np_type, maxexp): """ True if fp type `np_type` seems to have `maxexp` maximum exponent We're testing "maxexp" as returned by numpy. This value is set to one greater than the maximum power of 2 that `np_type` can represent. Assumes base 2 representation. Very crude check Parameters ---------- np_type : numpy type specifier Any specifier for a numpy dtype maxexp : int Maximum exponent to test against Returns ------- tf : bool True if `maxexp` is the correct maximum exponent, False otherwise. """ dt = np.dtype(np_type) np_type = dt.type two = np_type(2).reshape((1,)) # to avoid upcasting return (np.isfinite(two ** (maxexp - 1)) and not np.isfinite(two ** maxexp)) def as_int(x, check=True): """ Return python integer representation of number This is useful because the numpy int(val) mechanism is broken for large values in np.longdouble. It is also useful to work around a numpy 1.4.1 bug in conversion of uints to python ints. This routine will still raise an OverflowError for values that are outside the range of float64. Parameters ---------- x : object integer, unsigned integer or floating point value check : {True, False} If True, raise error for values that are not integers Returns ------- i : int Python integer Examples -------- >>> as_int(2.0) 2 >>> as_int(-2.0) -2 >>> as_int(2.1) #doctest: +IGNORE_EXCEPTION_DETAIL Traceback (most recent call last): ... FloatingError: Not an integer: 2.1 >>> as_int(2.1, check=False) 2 """ x = np.array(x) if x.dtype.kind in 'iu': # This works around a nasty numpy 1.4.1 bug such that: # >>> int(np.uint32(2**32-1) # -1 return int(str(x)) ix = int(x) if ix == x: return ix fx = np.floor(x) if check and fx != x: raise FloatingError('Not an integer: %s' % x) if not fx.dtype.type == np.longdouble: return int(x) # Subtract float64 chunks until we have all of the number. If the int is too # large, it will overflow ret = 0 while fx != 0: f64 = np.float64(fx) fx -= f64 ret += int(f64) return ret def int_to_float(val, flt_type): """ Convert integer `val` to floating point type `flt_type` Why is this so complicated? At least in numpy <= 1.6.1, numpy longdoubles do not correctly convert to ints, and ints do not correctly convert to longdoubles. Specifically, in both cases, the values seem to go through float64 conversion on the way, so to convert better, we need to split into float64s and sum up the result. Parameters ---------- val : int Integer value flt_type : object numpy floating point type Returns ------- f : numpy scalar of type `flt_type` """ if not flt_type is np.longdouble: return flt_type(val) faval = np.longdouble(0) while val != 0: f64 = np.float64(val) faval += f64 val -= int(f64) return faval def floor_exact(val, flt_type): """ Return nearest exact integer <= `val` in float type `flt_type` Parameters ---------- val : int We have to pass val as an int rather than the floating point type because large integers cast as floating point may be rounded by the casting process. flt_type : numpy type numpy float type. Returns ------- floor_val : object value of same floating point type as `val`, that is the nearest exact integer in this type such that `floor_val` <= `val`. Thus if `val` is exact in `flt_type`, `floor_val` == `val`. Examples -------- Obviously 2 is within the range of representable integers for float32 >>> floor_exact(2, np.float32) 2.0 As is 2**24-1 (the number of significand digits is 23 + 1 implicit) >>> floor_exact(2**24-1, np.float32) == 2**24-1 True But 2**24+1 gives a number that float32 can't represent exactly >>> floor_exact(2**24+1, np.float32) == 2**24 True As for the numpy floor function, negatives floor towards -inf >>> floor_exact(-2**24-1, np.float32) == -2**24-2 True """ val = int(val) flt_type = np.dtype(flt_type).type sign = 1 if val > 0 else -1 try: # int_to_float deals with longdouble safely fval = int_to_float(val, flt_type) except OverflowError: return sign * np.inf if not np.isfinite(fval): return fval info = type_info(flt_type) diff = val - as_int(fval) if diff >= 0: # floating point value <= val return fval # Float casting made the value go up biggest_gap = 2**(floor_log2(val) - info['nmant']) assert biggest_gap > 1 fval -= flt_type(biggest_gap) return fval def ceil_exact(val, flt_type): """ Return nearest exact integer >= `val` in float type `flt_type` Parameters ---------- val : int We have to pass val as an int rather than the floating point type because large integers cast as floating point may be rounded by the casting process. flt_type : numpy type numpy float type. Returns ------- ceil_val : object value of same floating point type as `val`, that is the nearest exact integer in this type such that `floor_val` >= `val`. Thus if `val` is exact in `flt_type`, `ceil_val` == `val`. Examples -------- Obviously 2 is within the range of representable integers for float32 >>> ceil_exact(2, np.float32) 2.0 As is 2**24-1 (the number of significand digits is 23 + 1 implicit) >>> ceil_exact(2**24-1, np.float32) == 2**24-1 True But 2**24+1 gives a number that float32 can't represent exactly >>> ceil_exact(2**24+1, np.float32) == 2**24+2 True As for the numpy ceil function, negatives ceil towards inf >>> ceil_exact(-2**24-1, np.float32) == -2**24 True """ return -floor_exact(-val, flt_type) def int_abs(arr): """ Absolute values of array taking care of max negative int values Parameters ---------- arr : array-like Returns ------- abs_arr : array array the same shape as `arr` in which all negative numbers have been changed to positive numbers with the magnitude. Examples -------- This kind of thing is confusing in base numpy: >>> import numpy as np >>> np.abs(np.int8(-128)) -128 ``int_abs`` fixes that: >>> int_abs(np.int8(-128)) 128 >>> int_abs(np.array([-128, 127], dtype=np.int8)) array([128, 127], dtype=uint8) >>> int_abs(np.array([-128, 127], dtype=np.float32)) array([ 128., 127.], dtype=float32) """ arr = np.array(arr, copy=False) dt = arr.dtype if dt.kind == 'u': return arr if dt.kind != 'i': return np.absolute(arr) out = arr.astype(np.dtype(dt.str.replace('i', 'u'))) return np.choose(arr < 0, (arr, arr * -1), out=out) def floor_log2(x): """ floor of log2 of abs(`x`) Embarrassingly, from http://en.wikipedia.org/wiki/Binary_logarithm Parameters ---------- x : int Returns ------- L : None or int floor of base 2 log of `x`. None if `x` == 0. Examples -------- >>> floor_log2(2**9+1) 9 >>> floor_log2(-2**9+1) 8 >>> floor_log2(0.5) -1 >>> floor_log2(0) is None True """ ip = 0 rem = abs(x) if rem > 1: while rem>=2: ip += 1 rem //= 2 return ip elif rem == 0: return None while rem < 1: ip -= 1 rem *= 2 return ip def best_float(): """ Floating point type with best precision This is nearly always np.longdouble, except on Windows, where np.longdouble is Intel80 storage, but with float64 precision for calculations. In that case we return float64 on the basis it's the fastest and smallest at the highest precision. Returns ------- best_type : numpy type floating point type with highest precision """ if (type_info(np.longdouble)['nmant'] > type_info(np.float64)['nmant'] and machine() != 'sparc64'): # sparc has crazy-slow float128 return np.longdouble return np.float64 def have_binary128(): """ True if we have a binary128 IEEE longdouble """ ti = type_info(np.longdouble) return (ti['nmant'], ti['maxexp']) == (112, 16384) def ok_floats(): """ Return floating point types sorted by precision Remove longdouble if it has no higher precision than float64 """ floats = sorted(np.sctypes['float'], key=lambda f : type_info(f)['nmant']) if best_float() != np.longdouble and np.longdouble in floats: floats.remove(np.longdouble) return floats OK_FLOATS = ok_floats() def able_int_type(values): """ Find the smallest integer numpy type to contain sequence `values` Prefers uint to int if minimum is >= 0 Parameters ---------- values : sequence sequence of integer values Returns ------- itype : None or numpy type numpy integer type or None if no integer type holds all `values` Examples -------- >>> able_int_type([0, 1]) == np.uint8 True >>> able_int_type([-1, 1]) == np.int8 True """ if any([v % 1 for v in values]): return None mn = min(values) mx = max(values) if mn >= 0: for ityp in np.sctypes['uint']: if mx <= np.iinfo(ityp).max: return ityp for ityp in np.sctypes['int']: info = np.iinfo(ityp) if mn >= info.min and mx <= info.max: return ityp return None def ulp(val=np.float64(1.0)): """ Return gap between `val` and nearest representable number of same type This is the value of a unit in the last place (ULP), and is similar in meaning to the MATLAB eps function. Parameters ---------- val : scalar, optional scalar value of any numpy type. Default is 1.0 (float64) Returns ------- ulp_val : scalar gap between `val` and nearest representable number of same type Notes ----- The wikipedia article on machine epsilon points out that the term *epsilon* can be used in the sense of a unit in the last place (ULP), or as the maximum relative rounding error. The MATLAB ``eps`` function uses the ULP meaning, but this function is ``ulp`` rather than ``eps`` to avoid confusion between different meanings of *eps*. """ val = np.array(val) if not np.isfinite(val): return np.nan if val.dtype.kind in 'iu': return 1 aval = np.abs(val) info = type_info(val.dtype) fl2 = floor_log2(aval) if fl2 is None or fl2 < info['minexp']: # subnormal fl2 = info['minexp'] # 'nmant' value does not include implicit first bit return 2**(fl2 - info['nmant']) nipy-nibabel-d3c26be/nibabel/checkwarns.py000066400000000000000000000037431177264777700207130ustar00rootroot00000000000000# emacs: -*- mode: python-mode; py-indent-offset: 4; indent-tabs-mode: nil -*- # vi: set ft=python sts=4 ts=4 sw=4 et: ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ## # # See COPYING file distributed along with the NiBabel package for the # copyright and license terms. # ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ## ''' Contexts for *with* statement allowing checks for warnings When we give up 2.5 compatibility we can use python's own ``tests.test_support.check_warnings`` ''' from __future__ import with_statement import warnings class ErrorWarnings(object): """ Context manager to check for warnings as errors. Usually used with ``assert_raises`` in the with block Examples -------- >>> with ErrorWarnings(): ... try: ... warnings.warn('Message', UserWarning) ... except UserWarning: ... print 'I consider myself warned' I consider myself warned Notes ----- The manager will raise a RuntimeError if another warning filter gets put on top of the one it has just added. """ def __init__(self): self.added = None def __enter__(self): warnings.simplefilter('error') self.added = warnings.filters[0] def __exit__(self, exc, value, tb): if warnings.filters[0] != self.added: raise RuntimeError('Somone has done something to the filters') warnings.filters.pop(0) return False # allow any exceptions to propagate class IgnoreWarnings(ErrorWarnings): """ Context manager to ignore warnings Examples -------- >>> with IgnoreWarnings(): ... warnings.warn('Message', UserWarning) (and you get no warning) Notes ----- The manager will raise a RuntimeError if another warning filter gets put on top of the one it has just added. """ def __enter__(self): warnings.simplefilter('ignore') self.added = warnings.filters[0] nipy-nibabel-d3c26be/nibabel/data.py000066400000000000000000000272331177264777700174740ustar00rootroot00000000000000# emacs: -*- mode: python; py-indent-offset: 4; indent-tabs-mode: nil -*- # vi: set ft=python sts=4 ts=4 sw=4 et: """ Utilities to find files from NIPY data packages """ import os from os.path import join as pjoin import glob import sys import ConfigParser from distutils.version import LooseVersion from .environment import get_nipy_user_dir, get_nipy_system_dir DEFAULT_INSTALL_HINT = ('If you have the package, have you set the ' 'path to the package correctly?') class DataError(OSError): pass class Datasource(object): ''' Simple class to add base path to relative path ''' def __init__(self, base_path): ''' Initialize datasource Parameters ---------- base_path : str path to prepend to all relative paths Examples -------- >>> from os.path import join as pjoin >>> repo = Datasource(pjoin('a', 'path')) >>> fname = repo.get_filename('somedir', 'afile.txt') >>> fname == pjoin('a', 'path', 'somedir', 'afile.txt') True ''' self.base_path = base_path def get_filename(self, *path_parts): ''' Prepend base path to `*path_parts` We make no check whether the returned path exists. Parameters ---------- *path_parts : sequence of strings Returns ------- fname : str result of ``os.path.join(*path_parts), with ``self.base_path`` prepended ''' return pjoin(self.base_path, *path_parts) def list_files(self, relative=True): ''' Recursively list the files in the data source directory. Parameters ---------- relative: bool, optional If True, path returned are relative to the base paht of the data source. Returns ------- file_list: list of strings List of the paths of all the files in the data source. ''' out_list = list() for base, dirs, files in os.walk(self.base_path): if relative: base = base[len(self.base_path)+1:] for filename in files: out_list.append(pjoin(base, filename)) return out_list class VersionedDatasource(Datasource): ''' Datasource with version information in config file ''' def __init__(self, base_path, config_filename=None): ''' Initialize versioned datasource We assume that there is a configuration file with version information in datasource directory tree. The configuration file contains an entry like:: [DEFAULT] version = 0.3 The version should have at least a major and a minor version number in the form above. Parameters ---------- base_path : str path to prepend to all relative paths config_filaname : None or str relative path to configuration file containing version ''' Datasource.__init__(self, base_path) if config_filename is None: config_filename = 'config.ini' self.config = ConfigParser.SafeConfigParser() cfg_file = self.get_filename(config_filename) readfiles = self.config.read(cfg_file) if not readfiles: raise DataError('Could not read config file %s' % cfg_file) try: self.version = self.config.get('DEFAULT', 'version') except ConfigParser.Error: raise DataError('Could not get version from %s' % cfg_file) version_parts = self.version.split('.') self.major_version = int(version_parts[0]) self.minor_version = int(version_parts[1]) self.version_no = float('%d.%d' % (self.major_version, self.minor_version)) def _cfg_value(fname, section='DATA', value='path'): """ Utility function to fetch value from config file """ configp = ConfigParser.ConfigParser() readfiles = configp.read(fname) if not readfiles: return '' try: return configp.get(section, value) except ConfigParser.Error: return '' def get_data_path(): ''' Return specified or guessed locations of NIPY data files The algorithm is to return paths, extracted from strings, where strings are found in the following order: #. The contents of environment variable ``NIPY_DATA_PATH`` #. Any section = ``DATA``, key = ``path`` value in a ``config.ini`` file in your nipy user directory (found with ``get_nipy_user_dir()``) #. Any section = ``DATA``, key = ``path`` value in any files found with a ``sorted(glob.glob(os.path.join(sys_dir, '*.ini')))`` search, where ``sys_dir`` is found with ``get_nipy_system_dir()`` #. If ``sys.prefix`` is ``/usr``, we add ``/usr/local/share/nipy``. We need this because Python 2.6 in Debian / Ubuntu does default installs to ``/usr/local``. #. The result of ``get_nipy_user_dir()`` Therefore, any paths found in ``NIPY_DATA_PATH`` will be searched before paths found in the user directory ``config.ini`` Parameters ---------- None Returns ------- paths : sequence of paths Examples -------- >>> pth = get_data_path() Notes ----- We have to add ``/usr/local/share/nipy`` if sys.prefix is ``/usr``, because Debian has patched distutils in Python 2.6 to do default distutils installs there: * http://www.debian.org/doc/packaging-manuals/python-policy/ap-packaging_tools.html#s-distutils * http://www.mail-archive.com/debian-python@lists.debian.org/msg05084.html ''' paths = [] try: var = os.environ['NIPY_DATA_PATH'] except KeyError: pass else: if var: paths = var.split(os.path.pathsep) np_cfg = pjoin(get_nipy_user_dir(), 'config.ini') np_etc = get_nipy_system_dir() config_files = sorted(glob.glob(pjoin(np_etc, '*.ini'))) for fname in [np_cfg] + config_files: var = _cfg_value(fname) if var: paths += var.split(os.path.pathsep) paths.append(pjoin(sys.prefix, 'share', 'nipy')) if sys.prefix == '/usr': paths.append(pjoin('/usr/local', 'share', 'nipy')) paths.append(pjoin(get_nipy_user_dir())) return paths def find_data_dir(root_dirs, *names): ''' Find relative path given path prefixes to search We raise a DataError if we can't find the relative path Parameters ---------- root_dirs : sequence of strings sequence of paths in which to search for data directory *names : sequence of strings sequence of strings naming directory to find. The name to search for is given by ``os.path.join(*names)`` Returns ------- data_dir : str full path (root path added to `*names` above) ''' ds_relative = pjoin(*names) for path in root_dirs: pth = pjoin(path, ds_relative) if os.path.isdir(pth): return pth raise DataError('Could not find datasource "%s" in data path "%s"' % (ds_relative, os.path.pathsep.join(root_dirs))) def make_datasource(pkg_def, **kwargs): ''' Return datasource defined by `pkg_def` as found in `data_path` `data_path` is the only allowed keyword argument. `pkg_def` is a dictionary with at least one key - 'relpath'. 'relpath' is a relative path with unix forward slash separators. The relative path to the data is found with:: names = pkg_def['name'].split('/') rel_path = os.path.join(names) We search for this relative path in the list of paths given by `data_path`. By default `data_path` is given by ``get_data_path()`` in this module. If we can't find the relative path, raise a DataError Parameters ---------- pkg_def : dict dict containing at least the key 'relpath'. 'relpath' is the data path of the package relative to `data_path`. It is in unix path format (using forward slashes as directory separators). `pkg_def` can also contain optional keys 'name' (the name of the package), and / or a key 'install hint' that we use in the returned error message from trying to use the resulting datasource data_path : sequence of strings or None, optional sequence of paths in which to search for data. If None (the default), then use ``get_data_path()`` Returns ------- datasource : ``VersionedDatasource`` An initialized ``VersionedDatasource`` instance ''' if any(key for key in kwargs if key != 'data_path'): raise ValueError('Unexpected keyword argument(s)') data_path = kwargs.get('data_path') if data_path is None: data_path = get_data_path() unix_relpath = pkg_def['relpath'] names = unix_relpath.split('/') try: pth = find_data_dir(data_path, *names) except DataError: exception = sys.exc_info()[1] # Python 2 and 3 compatibility pth = [pjoin(this_data_path, *names) for this_data_path in data_path] pkg_hint = pkg_def.get('install hint', DEFAULT_INSTALL_HINT) msg = ('%s; Is it possible you have not installed a data package?' % exception) if 'name' in pkg_def: msg += '\n\nYou may need the package "%s"' % pkg_def['name'] if not pkg_hint is None: msg += '\n\n%s' % pkg_hint raise DataError(msg) return VersionedDatasource(pth) class Bomber(object): ''' Class to raise an informative error when used ''' def __init__(self, name, msg): self.name = name self.msg = msg def __getattr__(self, attr_name): ''' Raise informative error accessing not-found attributes ''' raise DataError( 'Trying to access attribute "%s" ' 'of non-existent data "%s"\n\n%s\n' % (attr_name, self.name, self.msg)) def datasource_or_bomber(pkg_def, **options): ''' Return a viable datasource or a Bomber This is to allow module level creation of datasource objects. We create the objects, so that, if the data exist, and are the correct version, the objects are valid datasources, otherwise, they raise an error on access, warning about the lack of data or the version numbers. The parameters are as for ``make_datasource`` in this module. Parameters ---------- pkg_def : dict dict containing at least key 'relpath'. Can optioanlly have keys 'name' (package name), 'install hint' (for helpful error messages) and 'min version' giving the minimum necessary version string for the package. data_path : sequence of strings or None, optional Returns ------- ds : datasource or ``Bomber`` instance ''' unix_relpath = pkg_def['relpath'] version = pkg_def.get('min version') pkg_hint = pkg_def.get('install hint', DEFAULT_INSTALL_HINT) names = unix_relpath.split('/') sys_relpath = os.path.sep.join(names) try: ds = make_datasource(pkg_def, **options) except DataError: exception = sys.exc_info()[1] # python 2 and 3 compatibility return Bomber(sys_relpath, exception) # check version if (version is None or LooseVersion(ds.version) >= LooseVersion(version)): return ds if 'name' in pkg_def: pkg_name = pkg_def['name'] else: pkg_name = 'data at ' + unix_relpath msg = ('%(name)s is version %(pkg_version)s but we need ' 'version >= %(req_version)s\n\n%(pkg_hint)s' % dict(name=pkg_name, pkg_version=ds.version, req_version=version, pkg_hint=pkg_hint)) return Bomber(sys_relpath, DataError(msg)) nipy-nibabel-d3c26be/nibabel/dft.py000066400000000000000000000431751177264777700173430ustar00rootroot00000000000000# emacs: -*- mode: python-mode; py-indent-offset: 4; indent-tabs-mode: nil -*- # vi: set ft=python sts=4 ts=4 sw=4 et: ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ## # # See COPYING file distributed along with the NiBabel package for the # copyright and license terms. # ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ## # Copyright (C) 2011 Christian Haselgrove from __future__ import with_statement import os from os.path import join as pjoin import tempfile import getpass import logging import warnings import sqlite3 import numpy from .py3k import BytesIO from .nifti1 import Nifti1Header # Shield optional dicom import from .optpkg import optional_package dicom, have_dicom, _ = optional_package('dicom') logger = logging.getLogger('nibabel.dft') class DFTError(Exception): "base class for DFT exceptions" class CachingError(DFTError): "error while caching" class VolumeError(DFTError): "unsupported volume parameter" class InstanceStackError(DFTError): "bad series of instance numbers" def __init__(self, series, i, si): self.series = series self.i = i self.si = si return def __str__(self): fmt = 'expecting instance number %d, got %d' return fmt % (self.i+1, self.si.instance_number) class _Study(object): def __init__(self, d): self.uid = d['uid'] self.date = d['date'] self.time = d['time'] self.comments = d['comments'] self.patient_name = d['patient_name'] self.patient_id = d['patient_id'] self.patient_birth_date = d['patient_birth_date'] self.patient_sex = d['patient_sex'] self.series = None return def __getattribute__(self, name): val = object.__getattribute__(self, name) if name == 'series' and val is None: val = [] with _db_nochange() as c: c.execute("SELECT * FROM series WHERE study = ?", (self.uid, )) cols = [ el[0] for el in c.description ] for row in c: d = dict(zip(cols, row)) val.append(_Series(d)) self.series = val return val def patient_name_or_uid(self): if self.patient_name == '': return self.uid return self.patient_name class _Series(object): def __init__(self, d): self.uid = d['uid'] self.study = d['study'] self.number = d['number'] self.description = d['description'] self.rows = d['rows'] self.columns = d['columns'] self.bits_allocated = d['bits_allocated'] self.bits_stored = d['bits_stored'] self.storage_instances = None return def __getattribute__(self, name): val = object.__getattribute__(self, name) if name == 'storage_instances' and val is None: val = [] with _db_nochange() as c: query = """SELECT * FROM storage_instance WHERE series = ? ORDER BY instance_number""" c.execute(query, (self.uid, )) cols = [ el[0] for el in c.description ] for row in c: d = dict(zip(cols, row)) val.append(_StorageInstance(d)) self.storage_instances = val return val def as_png(self, index=None, scale_to_slice=True): import PIL.Image if index is None: index = len(self.storage_instances) / 2 d = self.storage_instances[index].dicom() data = d.pixel_array.copy() if self.bits_allocated != 16: raise VolumeError, 'unsupported bits allocated' if self.bits_stored != 12: raise VolumeError, 'unsupported bits stored' data = data / 16 if scale_to_slice: min = data.min() max = data.max() data = data * 255 / (max - min) data = data.astype(numpy.uint8) im = PIL.Image.fromstring('L', (self.rows, self.columns), data.tostring()) s = BytesIO() im.save(s, 'PNG') return s.getvalue() def png_size(self, index=None, scale_to_slice=True): return len(self.as_png(index=index, scale_to_slice=scale_to_slice)) def as_nifti(self): if len(self.storage_instances) < 2: raise VolumeError, 'too few slices' d = self.storage_instances[0].dicom() if self.bits_allocated != 16: raise VolumeError, 'unsupported bits allocated' if self.bits_stored != 12: raise VolumeError, 'unsupported bits stored' data = numpy.ndarray((len(self.storage_instances), self.rows, self.columns), dtype=numpy.int16) for (i, si) in enumerate(self.storage_instances): if i + 1 != si.instance_number: raise InstanceStackError(self, i, si) logger.info('reading %d/%d' % (i+1, len(self.storage_instances))) d = self.storage_instances[i].dicom() data[i, :, :] = d.pixel_array d1 = self.storage_instances[0].dicom() dn = self.storage_instances[-1].dicom() pdi = d1.PixelSpacing[0] pdj = d1.PixelSpacing[0] pdk = d1.SpacingBetweenSlices cosi = d1.ImageOrientationPatient[0:3] cosi[0] = -1 * cosi[0] cosi[1] = -1 * cosi[1] cosj = d1.ImageOrientationPatient[3:6] cosj[0] = -1 * cosj[0] cosj[1] = -1 * cosj[1] pos_1 = numpy.array(d1.ImagePositionPatient) pos_1[0] = -1 * pos_1[0] pos_1[1] = -1 * pos_1[1] pos_n = numpy.array(dn.ImagePositionPatient) pos_n[0] = -1 * pos_n[0] pos_n[1] = -1 * pos_n[1] cosk = pos_n - pos_1 cosk = cosk / numpy.linalg.norm(cosk) m = ((pdi * cosi[0], pdj * cosj[0], pdk * cosk[0], pos_1[0]), (pdi * cosi[1], pdj * cosj[1], pdk * cosk[1], pos_1[1]), (pdi * cosi[2], pdj * cosj[2], pdk * cosk[2], pos_1[2]), ( 0, 0, 0, 1)) m = numpy.array(m) hdr = Nifti1Header(endianness='<') hdr.set_intent(0) hdr.set_qform(m, 1) hdr.set_xyzt_units(2, 8) hdr.set_data_dtype(numpy.int16) hdr.set_data_shape((self.columns, self.rows, len(self.storage_instances))) s = BytesIO() hdr.write_to(s) return s.getvalue() + data.tostring() def nifti_size(self): return 352 + 2 * len(self.storage_instances) * self.columns * self.rows class _StorageInstance(object): def __init__(self, d): self.uid = d['uid'] self.instance_number = d['instance_number'] self.series = d['series'] self.files = None return def __getattribute__(self, name): val = object.__getattribute__(self, name) if name == 'files' and val is None: with _db_nochange() as c: query = """SELECT directory, name FROM file WHERE storage_instance = ? ORDER BY directory, name""" c.execute(query, (self.uid, )) val = [ '%s/%s' % tuple(row) for row in c ] self.files = val return val def dicom(self): return dicom.read_file(self.files[0]) class _db_nochange: """context guard for read-only database access""" def __enter__(self): self.c = DB.cursor() return self.c def __exit__(self, type, value, traceback): if type is None: self.c.close() DB.rollback() return class _db_change: """context guard for database access requiring a commit""" def __enter__(self): self.c = DB.cursor() return self.c def __exit__(self, type, value, traceback): if type is None: self.c.close() DB.commit() else: DB.rollback() return def _get_subdirs(base_dir, files_dict=None, followlinks=False): dirs = [] # followlinks keyword not available for python 2.5. kwargs = {} if not followlinks else {'followlinks': True} for (dirpath, dirnames, filenames) in os.walk(base_dir, **kwargs): abs_dir = os.path.realpath(dirpath) if abs_dir in dirs: raise CachingError, 'link cycle detected under %s' % base_dir dirs.append(abs_dir) if files_dict is not None: files_dict[abs_dir] = filenames return dirs def update_cache(base_dir, followlinks=False): mtimes = {} files_by_dir = {} dirs = _get_subdirs(base_dir, files_by_dir, followlinks) for d in dirs: os.stat(d) mtimes[d] = os.stat(d).st_mtime with _db_nochange() as c: c.execute("SELECT path, mtime FROM directory") db_mtimes = dict(c) c.execute("SELECT uid FROM study") studies = [ row[0] for row in c ] c.execute("SELECT uid FROM series") series = [ row[0] for row in c ] c.execute("SELECT uid FROM storage_instance") storage_instances = [ row[0] for row in c ] with _db_change() as c: for dir in sorted(mtimes.keys()): if dir in db_mtimes and mtimes[dir] <= db_mtimes[dir]: continue logger.debug('updating %s' % dir) _update_dir(c, dir, files_by_dir[dir], studies, series, storage_instances) if dir in db_mtimes: query = "UPDATE directory SET mtime = ? WHERE path = ?" c.execute(query, (mtimes[dir], dir)) else: query = "INSERT INTO directory (path, mtime) VALUES (?, ?)" c.execute(query, (dir, mtimes[dir])) return def get_studies(base_dir=None, followlinks=False): if base_dir is not None: update_cache(base_dir, followlinks) if base_dir is None: with _db_nochange() as c: c.execute("SELECT * FROM study") studies = [] cols = [ el[0] for el in c.description ] for row in c: d = dict(zip(cols, row)) studies.append(_Study(d)) return studies query = """SELECT study FROM series WHERE uid IN (SELECT series FROM storage_instance WHERE uid IN (SELECT storage_instance FROM file WHERE directory = ?))""" with _db_nochange() as c: study_uids = {} for dir in _get_subdirs(base_dir, followlinks=followlinks): c.execute(query, (dir, )) for row in c: study_uids[row[0]] = None studies = [] for uid in study_uids: c.execute("SELECT * FROM study WHERE uid = ?", (uid, )) cols = [ el[0] for el in c.description ] d = dict(zip(cols, c.fetchone())) studies.append(_Study(d)) return studies def _update_dir(c, dir, files, studies, series, storage_instances): logger.debug('Updating directory %s' % dir) c.execute("SELECT name, mtime FROM file WHERE directory = ?", (dir, )) db_mtimes = dict(c) for fname in db_mtimes: if fname not in files: logger.debug(' remove %s' % fname) c.execute("DELETE FROM file WHERE directory = ? AND name = ?", (dir, fname)) for fname in files: mtime = os.lstat('%s/%s' % (dir, fname)).st_mtime if fname in db_mtimes and mtime <= db_mtimes[fname]: logger.debug(' okay %s' % fname) else: logger.debug(' update %s' % fname) si_uid = _update_file(c, dir, fname, studies, series, storage_instances) if fname not in db_mtimes: query = """INSERT INTO file (directory, name, mtime, storage_instance) VALUES (?, ?, ?, ?)""" c.execute(query, (dir, fname, mtime, si_uid)) else: query = """UPDATE file SET mtime = ?, storage_instance = ? WHERE directory = ? AND name = ?""" c.execute(query, (mtime, si_uid, dir, fname)) return def _update_file(c, path, fname, studies, series, storage_instances): try: do = dicom.read_file('%s/%s' % (path, fname)) except dicom.filereader.InvalidDicomError: logger.debug(' not a DICOM file') return None try: study_comments = do.StudyComments except AttributeError: study_comments = '' try: logger.debug(' storage instance %s' % str(do.SOPInstanceUID)) if str(do.StudyInstanceUID) not in studies: query = """INSERT INTO study (uid, date, time, comments, patient_name, patient_id, patient_birth_date, patient_sex) VALUES (?, ?, ?, ?, ?, ?, ?, ?)""" params = (str(do.StudyInstanceUID), do.StudyDate, do.StudyTime, study_comments, do.PatientsName, do.PatientID, do.PatientsBirthDate, do.PatientsSex) c.execute(query, params) studies.append(str(do.StudyInstanceUID)) if str(do.SeriesInstanceUID) not in series: query = """INSERT INTO series (uid, study, number, description, rows, columns, bits_allocated, bits_stored) VALUES (?, ?, ?, ?, ?, ?, ?, ?)""" params = (str(do.SeriesInstanceUID), str(do.StudyInstanceUID), do.SeriesNumber, do.SeriesDescription, do.Rows, do.Columns, do.BitsAllocated, do.BitsStored) c.execute(query, params) series.append(str(do.SeriesInstanceUID)) if str(do.SOPInstanceUID) not in storage_instances: query = """INSERT INTO storage_instance (uid, instance_number, series) VALUES (?, ?, ?)""" params = (str(do.SOPInstanceUID), do.InstanceNumber, str(do.SeriesInstanceUID)) c.execute(query, params) storage_instances.append(str(do.SOPInstanceUID)) except AttributeError, data: logger.debug(' %s' % str(data)) return None return str(do.SOPInstanceUID) def clear_cache(): with _db_change() as c: c.execute("DELETE FROM file") c.execute("DELETE FROM directory") c.execute("DELETE FROM storage_instance") c.execute("DELETE FROM series") c.execute("DELETE FROM study") return CREATE_QUERIES = ( """CREATE TABLE study (uid TEXT NOT NULL PRIMARY KEY, date TEXT NOT NULL, time TEXT NOT NULL, comments TEXT NOT NULL, patient_name TEXT NOT NULL, patient_id TEXT NOT NULL, patient_birth_date TEXT NOT NULL, patient_sex TEXT NOT NULL)""", """CREATE TABLE series (uid TEXT NOT NULL PRIMARY KEY, study TEXT NOT NULL REFERENCES study, number TEXT NOT NULL, description TEXT NOT NULL, rows INTEGER NOT NULL, columns INTEGER NOT NULL, bits_allocated INTEGER NOT NULL, bits_stored INTEGER NOT NULL)""", """CREATE TABLE storage_instance (uid TEXT NOT NULL PRIMARY KEY, instance_number INTEGER NOT NULL, series TEXT NOT NULL references series)""", """CREATE TABLE directory (path TEXT NOT NULL PRIMARY KEY, mtime INTEGER NOT NULL)""", """CREATE TABLE file (directory TEXT NOT NULL REFERENCES directory, name TEXT NOT NULL, mtime INTEGER NOT NULL, storage_instance TEXT DEFAULT NULL REFERENCES storage_instance, PRIMARY KEY (directory, name))""") DB_FNAME = pjoin(tempfile.gettempdir(), 'dft.%s.sqlite' % getpass.getuser()) DB = None def _init_db(verbose=True): """ Initialize database """ if verbose: logger.info('db filename: ' + DB_FNAME) global DB DB = sqlite3.connect(DB_FNAME, check_same_thread=False) with _db_change() as c: c.execute("SELECT COUNT(*) FROM sqlite_master WHERE type = 'table'") if c.fetchone()[0] == 0: logger.debug('create') for q in CREATE_QUERIES: c.execute(q) if os.name == 'nt': warnings.warn('dft needs FUSE which is not available for windows') else: _init_db() # eof nipy-nibabel-d3c26be/nibabel/ecat.py000066400000000000000000001033401177264777700174710ustar00rootroot00000000000000# emacs: -*- mode: python-mode; py-indent-offset: 4; indent-tabs-mode: nil -*- # vi: set ft=python sts=4 ts=4 sw=4 et: ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ## # # See COPYING file distributed along with the NiBabel package for the # copyright and license terms. # ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ## import warnings import numpy as np from .volumeutils import (native_code, swapped_code, make_dt_codes, array_from_file) from .spatialimages import SpatialImage, ImageDataError from .arraywriters import make_array_writer MAINHDRSZ = 502 main_header_dtd = [ ('magic_number', '14S'), ('original_filename', '32S'), ('sw_version', np.uint16), ('system_type', np.uint16), ('file_type', np.uint16), ('serial_number', '10S'), ('scan_start_time',np.uint32), ('isotope_name', '8S'), ('isotope_halflife', np.float32), ('radiopharmaceutical','32S'), ('gantry_tilt', np.float32), ('gantry_rotation',np.float32), ('bed_elevation',np.float32), ('intrinsic_tilt', np.float32), ('wobble_speed',np.uint16), ('transm_source_type',np.uint16), ('distance_scanned',np.float32), ('transaxial_fov',np.float32), ('angular_compression', np.uint16), ('coin_samp_mode',np.uint16), ('axial_samp_mode',np.uint16), ('ecat_calibration_factor',np.float32), ('calibration_unitS', np.uint16), ('calibration_units_type',np.uint16), ('compression_code',np.uint16), ('study_type','12S'), ('patient_id','16S'), ('patient_name','32S'), ('patient_sex','1S'), ('patient_dexterity','1S'), ('patient_age',np.float32), ('patient_height',np.float32), ('patient_weight',np.float32), ('patient_birth_date',np.uint32), ('physician_name','32S'), ('operator_name','32S'), ('study_description','32S'), ('acquisition_type',np.uint16), ('patient_orientation',np.uint16), ('facility_name', '20S'), ('num_planes',np.uint16), ('num_frames',np.uint16), ('num_gates',np.uint16), ('num_bed_pos',np.uint16), ('init_bed_position',np.float32), ('bed_position','15f'), ('plane_separation',np.float32), ('lwr_sctr_thres',np.uint16), ('lwr_true_thres',np.uint16), ('upr_true_thres',np.uint16), ('user_process_code','10S'), ('acquisition_mode',np.uint16), ('bin_size',np.float32), ('branching_fraction',np.float32), ('dose_start_time',np.uint32), ('dosage',np.float32), ('well_counter_corr_factor', np.float32), ('data_units', '32S'), ('septa_state',np.uint16), ('fill', '12S') ] hdr_dtype = np.dtype(main_header_dtd) subheader_dtd = [ ('data_type', np.uint16), ('num_dimensions', np.uint16), ('x_dimension', np.uint16), ('y_dimension', np.uint16), ('z_dimension', np.uint16), ('x_offset', np.float32), ('y_offset', np.float32), ('z_offset', np.float32), ('recon_zoom', np.float32), ('scale_factor', np.float32), ('image_min', np.int16), ('image_max', np.int16), ('x_pixel_size', np.float32), ('y_pixel_size', np.float32), ('z_pixel_size', np.float32), ('frame_duration', np.uint32), ('frame_start_time', np.uint32), ('filter_code', np.uint16), ('x_resolution', np.float32), ('y_resolution', np.float32), ('z_resolution', np.float32), ('num_r_elements', np.float32), ('num_angles', np.float32), ('z_rotation_angle', np.float32), ('decay_corr_fctr', np.float32), ('corrections_applied', np.uint32), ('gate_duration', np.uint32), ('r_wave_offset', np.uint32), ('num_accepted_beats', np.uint32), ('filter_cutoff_frequency', np.float32), ('filter_resolution', np.float32), ('filter_ramp_slope', np.float32), ('filter_order', np.uint16), ('filter_scatter_fraction', np.float32), ('filter_scatter_slope', np.float32), ('annotation', '40S'), ('mt_1_1', np.float32), ('mt_1_2', np.float32), ('mt_1_3', np.float32), ('mt_2_1', np.float32), ('mt_2_2', np.float32), ('mt_2_3', np.float32), ('mt_3_1', np.float32), ('mt_3_2', np.float32), ('mt_3_3', np.float32), ('rfilter_cutoff', np.float32), ('rfilter_resolution', np.float32), ('rfilter_code', np.uint16), ('rfilter_order', np.uint16), ('zfilter_cutoff', np.float32), ('zfilter_resolution',np.float32), ('zfilter_code', np.uint16), ('zfilter_order', np.uint16), ('mt_4_1', np.float32), ('mt_4_2', np.float32), ('mt_4_3', np.float32), ('scatter_type', np.uint16), ('recon_type', np.uint16), ('recon_views', np.uint16), ('fill', '174S'), ('fill2', '96S')] subhdr_dtype = np.dtype(subheader_dtd) # Ecat Data Types _dtdefs = ( # code, name, equivalent dtype (1, 'ECAT7_BYTE', np.uint8), (2, 'ECAT7_VAXI2', np.int16), (3, 'ECAT7_VAXI4', np.float32), (4, 'ECAT7_VAXR4', np.float32), (5, 'ECAT7_IEEER4', np.float32), (6, 'ECAT7_SUNI2', np.uint16), (7, 'ECAT7_SUNI4', np.int32)) data_type_codes = make_dt_codes(_dtdefs) # Matrix File Types ft_defs = ( # code, name (0, 'ECAT7_UNKNOWN'), (1, 'ECAT7_2DSCAN'), (2, 'ECAT7_IMAGE16'), (3, 'ECAT7_ATTEN'), (4, 'ECAT7_2DNORM'), (5, 'ECAT7_POLARMAP'), (6, 'ECAT7_VOLUME8'), (7, 'ECAT7_VOLUME16'), (8, 'ECAT7_PROJ'), (9, 'ECAT7_PROJ16'), (10, 'ECAT7_IMAGE8'), (11, 'ECAT7_3DSCAN'), (12, 'ECAT7_3DSCAN8'), (13, 'ECAT7_3DNORM'), (14, 'ECAT7_3DSCANFIT')) patient_orient_defs = ( #code, description (0, 'ECAT7_Feet_First_Prone'), (1, 'ECAT7_Head_First_Prone'), (2, 'ECAT7_Feet_First_Supine'), (3, 'ECAT7_Head_First_Supine'), (4, 'ECAT7_Feet_First_Decubitus_Right'), (5, 'ECAT7_Head_First_Decubitus_Right'), (6, 'ECAT7_Feet_First_Decubitus_Left'), (7, 'ECAT7_Head_First_Decubitus_Left'), (8, 'ECAT7_Unknown_Orientation')) #Indexes from the patient_orient_defs structure defined above for the #neurological and radiological viewing conventions patient_orient_radiological = [0, 2, 4, 6] patient_orient_neurological = [1, 3, 5, 7] class EcatHeader(object): """Class for basic Ecat PET header Sub-parts of standard Ecat File main header matrix list which lists the information for each frame collected (can have 1 to many frames) subheaders specific to each frame with possibly-variable sized data blocks This just reads the main Ecat Header, it does not load the data or read the mlist or any sub headers """ _dtype = hdr_dtype _ft_defs = ft_defs _patient_orient_defs = patient_orient_defs def __init__(self, fileobj=None, endianness=None): """Initialize Ecat header from file object Parameters ---------- fileobj : {None, string} optional binary block to set into header, By default, None in which case we insert default empty header block endianness : {None, '<', '>', other endian code}, optional endian code of binary block, If None, guess endianness from the data """ if fileobj is None: self._header_data = self._empty_headerdata(endianness) return hdr = np.ndarray(shape=(), dtype=self._dtype, buffer=fileobj) if endianness is None: endianness = self._guess_endian(hdr) if endianness != native_code: dt = self._dtype.newbyteorder(endianness) hdr = np.ndarray(shape=(), dtype=dt, buffer=fileobj) self._header_data = hdr.copy() return def get_header(self): """returns header """ return self @property def binaryblock(self): return self._header_data.tostring() @property def endianness(self): if self._header_data.dtype.isnative: return native_code return swapped_code def _guess_endian(self, hdr): """Guess endian from MAGIC NUMBER value of header data """ if not hdr['sw_version'] == 74: return swapped_code else: return native_code @classmethod def from_fileobj(klass, fileobj, endianness=None): """Return /read header with given or guessed endian code Parameters ---------- fileobj : file-like object Needs to implement ``read`` method endianness : None or endian code, optional Code specifying endianness of data to be read Returns ------- hdr : EcatHeader object EcatHeader object initialized from data in file object Examples -------- """ raw_str = fileobj.read(klass._dtype.itemsize) return klass(raw_str, endianness) def write_to(self, fileobj): fileobj.write(self.binaryblock) def _empty_headerdata(self,endianness=None): """Return header data for empty header with given endianness""" #hdr_data = super(EcatHeader, self)._empty_headerdata(endianness) dt = self._dtype if not endianness is None: dt = dt.newbyteorder(endianness) hdr_data = np.zeros((), dtype=dt) hdr_data['magic_number'] = 'MATRIX72' hdr_data['sw_version'] = 74 hdr_data['num_frames']= 0 hdr_data['file_type'] = 0 # Unknown hdr_data['ecat_calibration_factor'] = 1.0 # scale factor return hdr_data def get_data_dtype(self): """ Get numpy dtype for data from header""" raise NotImplementedError("dtype is only valid from subheaders") def copy(self): return self.__class__( self.binaryblock, self.endianness) def __eq__(self, other): """ checks for equality between two headers""" self_end = self.endianness self_bb = self.binaryblock if self_end == other.endianness: return self_bb == other.binaryblock other_bb = other._header_data.byteswap().tostring() return self_bb == other_bb def __ne__(self, other): ''' equality between two headers defined by ``header_data`` For examples, see ``__eq__`` method docstring ''' return not self == other def __getitem__(self, item): ''' Return values from header data Examples -------- >>> hdr = EcatHeader() >>> hdr['magic_number'] #23dt next : bytes 'MATRIX72' ''' return self._header_data[item].item() def __setitem__(self, item, value): ''' Set values in header data Examples -------- >>> hdr = EcatHeader() >>> hdr['num_frames'] = 2 >>> hdr['num_frames'] 2 ''' self._header_data[item] = value def get_patient_orient(self): """ gets orientation of patient based on code stored in header, not always reliable""" orient_code = dict(self._patient_orient_defs) code = self._header_data['patient_orientation'].item() if not orient_code.has_key(code): raise KeyError('Ecat Orientation CODE %d not recognized'%code) return orient_code[code] def get_filetype(self): """ gets type of ECAT Matrix File from code stored in header""" ft_codes = dict(self._ft_defs) code = self._header_data['file_type'].item() if not ft_codes.has_key(code): raise KeyError('Ecat Filetype CODE %d not recognized'%code) return ft_codes[code] def __iter__(self): return iter(self.keys()) def keys(self): ''' Return keys from header data''' return list(self._dtype.names) def values(self): ''' Return values from header data''' data = self._header_data return [data[key] for key in self._dtype.names] def items(self): ''' Return items from header data''' return zip(self.keys(), self.values()) class EcatMlist(object): def __init__(self,fileobj, hdr): """ gets list of frames and subheaders in pet file Parameters ----------- fileobj : ECAT file .v fileholder or file object with read, seek methods Returns ------- mlist : numpy recarray nframes X 4 columns 1 - Matrix identifier. 2 - subheader record number 3 - Last record number of matrix data block. 4 - Matrix status: 1 - exists - rw 2 - exists - ro 3 - matrix deleted """ self.hdr = hdr self._mlist = self.get_mlist(fileobj) def get_mlist(self, fileobj): fileobj.seek(512) dat=fileobj.read(128*32) dt = np.dtype([('matlist',np.int32)]) if not self.hdr.endianness is native_code: dt = dt.newbyteorder(self.hdr.endianness) nframes = self.hdr['num_frames'] mlist = np.zeros((nframes,4), dtype='uint32') record_count = 0 done = False while not done: #mats['matlist'][0,1] == 2: mats = np.recarray(shape=(32,4), dtype=dt, buf=dat) if not (mats['matlist'][0,0] + mats['matlist'][0,3]) == 31: mlist = [] return mlist nrecords = mats['matlist'][0,3] mlist[record_count:nrecords+record_count,:] = mats['matlist'][1:nrecords+1,:] record_count+= nrecords if mats['matlist'][0,1] == 2 or mats['matlist'][0,1] == 0: done = True else: # Find next subheader tmp = int(mats['matlist'][0,1]-1)#cast to int fileobj.seek(0) fileobj.seek(tmp*512) dat = fileobj.read(128*32) return mlist def get_frame_order(self): """Returns the order of the frames stored in the file Sometimes Frames are not stored in the file in chronological order, this can be used to extract frames in correct order Returns ------- id_dict: dict mapping frame number -> [mlist_row, mlist_id] (where mlist id is value in the first column of the mlist matrix ) Examples -------- >>> import os >>> import nibabel as nib >>> nibabel_dir = os.path.dirname(nib.__file__) >>> from nibabel import ecat >>> ecat_file = os.path.join(nibabel_dir,'tests','data','tinypet.v') >>> img = ecat.load(ecat_file) >>> mlist = img.get_mlist() >>> mlist.get_frame_order() {0: [0, 16842758]} """ mlist = self._mlist ids = mlist[:, 0].copy() n_valid = np.sum(ids > 0) ids[ids <=0] = ids.max() + 1 # put invalid frames at end after sort valid_order = np.argsort(ids) if not all(valid_order == sorted(valid_order)): #raise UserWarning if Frames stored out of order warnings.warn_explicit('Frames stored out of order;'\ 'true order = %s\n'\ 'frames will be accessed in order '\ 'STORED, NOT true order'%(valid_order), UserWarning,'ecat', 0) id_dict = {} for i in range(n_valid): id_dict[i] = [valid_order[i], ids[valid_order[i]]] return id_dict def get_series_framenumbers(self): """ Returns framenumber of data as it was collected, as part of a series; not just the order of how it was stored in this or across other files For example, if the data is split between multiple files this should give you the true location of this frame as collected in the series (Frames are numbered starting at ONE (1) not Zero) Returns ------- frame_dict: dict mapping order_stored -> frame in series where frame in series counts from 1; [1,2,3,4...] Examples -------- >>> import os >>> import nibabel as nib >>> nibabel_dir = os.path.dirname(nib.__file__) >>> from nibabel import ecat >>> ecat_file = os.path.join(nibabel_dir,'tests','data','tinypet.v') >>> img = ecat.load(ecat_file) >>> mlist = img.get_mlist() >>> mlist.get_series_framenumbers() {0: 1} """ frames_order = self.get_frame_order() nframes = self.hdr['num_frames'] mlist_nframes = len(frames_order) trueframenumbers = np.arange(nframes - mlist_nframes, nframes) frame_dict = {} try: for frame_stored, (true_order, _) in frames_order.items(): #frame as stored in file -> true number in series frame_dict[frame_stored] = trueframenumbers[true_order]+1 return frame_dict except: raise IOError('Error in header or mlist order unknown') class EcatSubHeader(object): _subhdrdtype = subhdr_dtype _data_type_codes = data_type_codes def __init__(self, hdr, mlist, fileobj): """parses the subheaders in the ecat (.v) file there is one subheader for each frame in the ecat file Parameters ----------- hdr : EcatHeader mlist : EcatMlist fileobj : ECAT file .v fileholder or file object with read, seek methods """ self._header = hdr self.endianness = hdr.endianness self._mlist = mlist self.fileobj = fileobj self.subheaders = self._get_subheaders() def _get_subheaders(self): """retreive all subheaders and return list of subheader recarrays """ subheaders = [] header = self._header endianness = self.endianness dt = self._subhdrdtype if not self.endianness is native_code: dt = self._subhdrdtype.newbyteorder(self.endianness) if self._header['num_frames'] > 1: for item in self._mlist._mlist: if item[1] == 0: break self.fileobj.seek(0) offset = (int(item[1])-1)*512 self.fileobj.seek(offset) tmpdat = self.fileobj.read(512) sh = (np.recarray(shape=(), dtype=dt, buf=tmpdat)) subheaders.append(sh.copy()) else: self.fileobj.seek(0) offset = (int(self._mlist._mlist[0][1])-1)*512 self.fileobj.seek(offset) tmpdat = self.fileobj.read(512) sh = (np.recarray(shape=(), dtype=dt, buf=tmpdat)) subheaders.append(sh) return subheaders def get_shape(self, frame=0): """ returns shape of given frame""" subhdr = self.subheaders[frame] x = subhdr['x_dimension'].item() y = subhdr['y_dimension'].item() z = subhdr['z_dimension'].item() return (x,y,z) def get_nframes(self): """returns number of frames""" mlist = self._mlist framed = mlist.get_frame_order() return len(framed) def _check_affines(self): """checks if all affines are equal across frames""" nframes = self.get_nframes() if nframes == 1: return True affs = [self.get_frame_affine(i) for i in range(nframes)] if affs: i = iter(affs) first = i.next() for item in i: if not np.all(first == item): return False return True def get_frame_affine(self,frame=0): """returns best affine for given frame of data""" subhdr = self.subheaders[frame] x_off = subhdr['x_offset'] y_off = subhdr['y_offset'] z_off = subhdr['z_offset'] zooms = self.get_zooms(frame=frame) dims = self.get_shape(frame) # get translations from center of image origin_offset = (np.array(dims)-1) / 2.0 aff = np.diag(zooms) aff[:3,-1] = -origin_offset * zooms[:-1] + np.array([x_off,y_off,z_off]) return aff def get_zooms(self,frame=0): """returns zooms ...pixdims""" subhdr = self.subheaders[frame] x_zoom = subhdr['x_pixel_size'] * 10 y_zoom = subhdr['y_pixel_size'] * 10 z_zoom = subhdr['z_pixel_size'] * 10 return (x_zoom, y_zoom, z_zoom, 1) def _get_data_dtype(self, frame): dtcode = self.subheaders[frame]['data_type'].item() return self._data_type_codes.dtype[dtcode] def _get_frame_offset(self, frame=0): mlist = self._mlist._mlist offset = (mlist[frame][1]) * 512 return int(offset) def _get_oriented_data(self, raw_data, orientation=None): ''' Get data oriented following ``patient_orientation`` header field. If the ``orientation`` parameter is given, return data according to this orientation. :param raw_data: Numpy array containing the raw data :param orientation: None (default), 'neurological' or 'radiological' :rtype: Numpy array containing the oriented data ''' if orientation is None: orientation = self._header['patient_orientation'] elif orientation == 'neurological': orientation = patient_orient_neurological[0] elif orientation == 'radiological': orientation = patient_orient_radiological[0] else: raise ValueError('orientation should be None,\ neurological or radiological') if orientation in patient_orient_neurological: raw_data = raw_data[::-1, ::-1, ::-1] elif orientation in patient_orient_radiological: raw_data = raw_data[::, ::-1, ::-1] return raw_data def raw_data_from_fileobj(self, frame=0, orientation=None): ''' Get raw data from file object. :param frame: Time frame index from where to fetch data :param orientation: None (default), 'neurological' or 'radiological' :rtype: Numpy array containing (possibly oriented) raw data .. seealso:: data_from_fileobj ''' dtype = self._get_data_dtype(frame) if not self._header.endianness is native_code: dtype=dtype.newbyteorder(self._header.endianness) shape = self.get_shape(frame) offset = self._get_frame_offset(frame) fid_obj = self.fileobj raw_data = array_from_file(shape, dtype, fid_obj, offset=offset) raw_data = self._get_oriented_data(raw_data, orientation) return raw_data def data_from_fileobj(self, frame=0, orientation=None): ''' Read scaled data from file for a given frame :param frame: Time frame index from where to fetch data :param orientation: None (default), 'neurological' or 'radiological' :rtype: Numpy array containing (possibly oriented) raw data .. seealso:: raw_data_from_fileobj ''' header = self._header subhdr = self.subheaders[frame] raw_data = self.raw_data_from_fileobj(frame, orientation) data = raw_data * header['ecat_calibration_factor'] data = data * subhdr['scale_factor'] return data class EcatImage(SpatialImage): """This class returns a list of Ecat images, with one image(hdr/data) per frame """ _header = EcatHeader header_class = _header _subheader = EcatSubHeader _mlist = EcatMlist files_types = (('image', '.v'), ('header', '.v')) class ImageArrayProxy(object): ''' Ecat implemention of array proxy protocol The array proxy allows us to freeze the passed fileobj and header such that it returns the expected data array. ''' def __init__(self, subheader): self._subheader = subheader self._data = None x, y, z = subheader.get_shape() nframes = subheader.get_nframes() self.shape = (x, y, z, nframes) def __array__(self): ''' Cached read of data from file This reads ALL FRAMES into one array, can be memory expensive use subheader.data_from_fileobj(frame) for less memory intensive reads ''' if self._data is None: self._data = np.empty(self.shape) frame_mapping = self._subheader._mlist.get_frame_order() for i in sorted(frame_mapping): self._data[:,:,:,i] = self._subheader.data_from_fileobj(frame_mapping[i][0]) return self._data def __init__(self, data, affine, header, subheader, mlist , extra = None, file_map = None): """ Initialize Image The image is a combination of (array, affine matrix, header, subheader, mlist) with optional meta data in `extra`, and filename / file-like objects contained in the `file_map`. Parameters ---------- data : None or array-like image data affine : None or (4,4) array-like homogeneous affine giving relationship between voxel coords and world coords. header : None or header instance meta data for this image format subheader : None or subheader instance meta data for each sub-image for frame in the image mlist : None or mlist instance meta data with array giving offset and order of data in file extra : None or mapping, optional metadata associated with this image that cannot be stored in header or subheader file_map : mapping, optional mapping giving file information for this image format Examples -------- >>> import os >>> import nibabel as nib >>> nibabel_dir = os.path.dirname(nib.__file__) >>> from nibabel import ecat >>> ecat_file = os.path.join(nibabel_dir,'tests','data','tinypet.v') >>> img = ecat.load(ecat_file) >>> frame0 = img.get_frame(0) >>> frame0.shape (10, 10, 3) >>> data4d = img.get_data() >>> data4d.shape (10, 10, 3, 1) """ self._subheader = subheader self._mlist = mlist self._data = data if not affine is None: # Check that affine is array-like 4,4. Maybe this is too strict at # this abstract level, but so far I think all image formats we know # do need 4,4. affine = np.asarray(affine) if not affine.shape == (4,4): raise ValueError('Affine should be shape 4,4') self._affine = affine if extra is None: extra = {} self.extra = extra self._header = header if file_map is None: file_map = self.__class__.make_file_map() self.file_map = file_map def _set_header(self, header): self._header = header def get_data(self): """returns scaled data for all frames in a numpy array returns as a 4D array """ if self._data is None: raise ImageDataError('No data in this image') return np.asanyarray(self._data) def get_affine(self): if not self._subheader._check_affines(): warnings.warn('Affines different across frames, loading affine from FIRST frame', UserWarning ) return self._affine def get_frame_affine(self, frame): """returns 4X4 affine""" return self._subheader.get_frame_affine(frame=frame) def get_frame(self,frame, orientation=None): ''' Get full volume for a time frame :param frame: Time frame index from where to fetch data :param orientation: None (default), 'neurological' or 'radiological' :rtype: Numpy array containing (possibly oriented) raw data ''' return self._subheader.data_from_fileobj(frame, orientation) def get_data_dtype(self,frame): subhdr = self._subheader dt = subhdr._get_data_dtype(frame) return dt @property def shape(self): x,y,z = self._subheader.get_shape() nframes = self._subheader.get_nframes() return(x, y, z, nframes) def get_mlist(self): """ get access to the mlist """ return self._mlist def get_subheaders(self): """get access to subheaders""" return self._subheader @classmethod def from_filespec(klass, filespec): return klass.from_filename(filespec) @staticmethod def _get_fileholders(file_map): """ returns files specific to header and image of the image for ecat .v this is the same image file Returns ------- header : file holding header data image : file holding image data """ return file_map['header'], file_map['image'] @classmethod def from_file_map(klass, file_map): """class method to create image from mapping specified in file_map""" hdr_file, img_file = klass._get_fileholders(file_map) #note header and image are in same file hdr_fid = hdr_file.get_prepare_fileobj(mode = 'rb') header = klass._header.from_fileobj(hdr_fid) hdr_copy = header.copy() ### LOAD MLIST mlist = klass._mlist(hdr_fid, hdr_copy) ### LOAD SUBHEADERS subheaders = klass._subheader(hdr_copy, mlist, hdr_fid) ### LOAD DATA ## Class level ImageArrayProxy data = klass.ImageArrayProxy(subheaders) ## Get affine if not subheaders._check_affines(): warnings.warn('Affines different across frames, loading affine from FIRST frame', UserWarning ) aff = subheaders.get_frame_affine() img = klass(data, aff, header, subheaders, mlist, extra=None, file_map = file_map) return img def _get_empty_dir(self): ''' Get empty directory entry of the form [numAvail, nextDir, previousDir, numUsed] ''' return np.array([31, 2, 0, 0], dtype=np.uint32) def _write_data(self, data, stream, pos, dtype=None, endianness=None): ''' Write data to ``stream`` using an array_writer :param data: Numpy array containing the dat :param stream: The file-like object to write the data to :param pos: The position in the stream to write the data to :param endianness: Endianness code of the data to write ''' if dtype is None: dtype = data.dtype if endianness is None: endianness = native_code stream.seek(pos) writer = make_array_writer( data.newbyteorder(endianness), dtype).to_fileobj(stream) def to_file_map(self, file_map=None): ''' Write ECAT7 image to `file_map` or contained ``self.file_map`` The format consist of: - A main header (512L) with dictionary entries in the form [numAvail, nextDir, previousDir, numUsed] - For every frame (3D volume in 4D data) - A subheader (size = frame_offset) - Frame data (3D volume) ''' if file_map is None: file_map = self.file_map data = self.get_data() hdr = self.get_header() mlist = self.get_mlist()._mlist subheaders = self.get_subheaders() dir_pos = 512L entry_pos = dir_pos + 16L #528L current_dir = self._get_empty_dir() hdr_fh, img_fh = self._get_fileholders(file_map) hdrf = hdr_fh.get_prepare_fileobj(mode='wb') imgf = hdrf #Write main header hdr.write_to(hdrf) #Write every frames for index in xrange(0, self.get_header()['num_frames']): #Move to subheader offset frame_offset = subheaders._get_frame_offset(index) - 512 imgf.seek(frame_offset) #Write subheader subhdr = subheaders.subheaders[index] imgf.write(subhdr.tostring()) #Seek to the next image block pos = imgf.tell() imgf.seek(pos + 2) #Get frame and its data type image = self._subheader.raw_data_from_fileobj(index) dtype = image.dtype #Write frame images self._write_data(image, imgf, pos+2, endianness='>') #Move to dictionnary offset and write dictionnary entry self._write_data(mlist[index], imgf, entry_pos, np.uint32, endianness='>') entry_pos = entry_pos + 16L current_dir[0] = current_dir[0] - 1 current_dir[3] = current_dir[3] + 1 #Create a new directory is previous one is full if current_dir[0] == 0: #self._write_dir(current_dir, imgf, dir_pos) self._write_data(current_dir, imgf, dir_pos) current_dir = self._get_empty_dir() current_dir[3] = dir_pos / 512L dir_pos = mlist[index][2] + 1 entry_pos = dir_pos + 16L tmp_avail = current_dir[0] tmp_used = current_dir[3] #Fill directory with empty data until directory is full while current_dir[0] > 0: entry_pos = dir_pos + 16L + (16L * current_dir[3]) self._write_data(np.array([0,0,0,0]), imgf, entry_pos, np.uint32) current_dir[0] = current_dir[0] - 1 current_dir[3] = current_dir[3] + 1 current_dir[0] = tmp_avail current_dir[3] = tmp_used #Write directory index self._write_data(current_dir, imgf, dir_pos, endianness='>') @classmethod def from_image(klass, img): raise NotImplementedError("Ecat images can only be generated "\ "from file objects") @classmethod def load(klass, filespec): return klass.from_filename(filespec) load = EcatImage.load nipy-nibabel-d3c26be/nibabel/environment.py000066400000000000000000000042001177264777700211140ustar00rootroot00000000000000# emacs: -*- mode: python; py-indent-offset: 4; indent-tabs-mode: nil -*- # vi: set ft=python sts=4 ts=4 sw=4 et: ''' Settings from the system environment relevant to NIPY ''' import os from os.path import join as pjoin def get_home_dir(): """Return the closest possible equivalent to a 'home' directory. The path may not exist; code using this routine should not expect the directory to exist. Parameters ---------- None Returns ------- home_dir : string best guess at location of home directory """ return os.path.expanduser('~') def get_nipy_user_dir(): """Get the NIPY user directory This uses the logic in `get_home_dir` to find the home directory and the adds either .nipy or _nipy to the end of the path. We check first in environment variable ``NIPY_USER_DIR``, otherwise returning the default of ``/.nipy`` (Unix) or ``/_nipy`` (Windows) The path may well not exist; code using this routine should not expect the directory to exist. Parameters ---------- None Returns ------- nipy_dir : string path to user's NIPY configuration directory Examples -------- >>> pth = get_nipy_user_dir() """ try: return os.path.abspath(os.environ['NIPY_USER_DIR']) except KeyError: pass home_dir = get_home_dir() if os.name == 'posix': sdir = '.nipy' else: sdir = '_nipy' return pjoin(home_dir, sdir) def get_nipy_system_dir(): ''' Get systemwide NIPY configuration file directory On posix systems this will be ``/etc/nipy``. On Windows, the directory is less useful, but by default it will be ``C:\etc\nipy`` The path may well not exist; code using this routine should not expect the directory to exist. Parameters ---------- None Returns ------- nipy_dir : string path to systemwide NIPY configuration directory Examples -------- >>> pth = get_nipy_system_dir() ''' if os.name == 'nt': return r'C:\etc\nipy' if os.name == 'posix': return '/etc/nipy' nipy-nibabel-d3c26be/nibabel/eulerangles.py000066400000000000000000000320441177264777700210650ustar00rootroot00000000000000# emacs: -*- mode: python-mode; py-indent-offset: 4; indent-tabs-mode: nil -*- # vi: set ft=python sts=4 ts=4 sw=4 et: ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ## # # See COPYING file distributed along with the NiBabel package for the # copyright and license terms. # ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ## ''' Module implementing Euler angle rotations and their conversions See: * http://en.wikipedia.org/wiki/Rotation_matrix * http://en.wikipedia.org/wiki/Euler_angles * http://mathworld.wolfram.com/EulerAngles.html See also: *Representing Attitude with Euler Angles and Quaternions: A Reference* (2006) by James Diebel. A cached PDF link last found here: http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.110.5134 Euler's rotation theorem tells us that any rotation in 3D can be described by 3 angles. Let's call the 3 angles the *Euler angle vector* and call the angles in the vector :math:`alpha`, :math:`beta` and :math:`gamma`. The vector is [ :math:`alpha`, :math:`beta`. :math:`gamma` ] and, in this description, the order of the parameters specifies the order in which the rotations occur (so the rotation corresponding to :math:`alpha` is applied first). In order to specify the meaning of an *Euler angle vector* we need to specify the axes around which each of the rotations corresponding to :math:`alpha`, :math:`beta` and :math:`gamma` will occur. There are therefore three axes for the rotations :math:`alpha`, :math:`beta` and :math:`gamma`; let's call them :math:`i` :math:`j`, :math:`k`. Let us express the rotation :math:`alpha` around axis `i` as a 3 by 3 rotation matrix `A`. Similarly :math:`beta` around `j` becomes 3 x 3 matrix `B` and :math:`gamma` around `k` becomes matrix `G`. Then the whole rotation expressed by the Euler angle vector [ :math:`alpha`, :math:`beta`. :math:`gamma` ], `R` is given by:: R = np.dot(G, np.dot(B, A)) See http://mathworld.wolfram.com/EulerAngles.html The order :math:`G B A` expresses the fact that the rotations are performed in the order of the vector (:math:`alpha` around axis `i` = `A` first). To convert a given Euler angle vector to a meaningful rotation, and a rotation matrix, we need to define: * the axes `i`, `j`, `k` * whether a rotation matrix should be applied on the left of a vector to be transformed (vectors are column vectors) or on the right (vectors are row vectors). * whether the rotations move the axes as they are applied (intrinsic rotations) - compared the situation where the axes stay fixed and the vectors move within the axis frame (extrinsic) * the handedness of the coordinate system See: http://en.wikipedia.org/wiki/Rotation_matrix#Ambiguities We are using the following conventions: * axes `i`, `j`, `k` are the `z`, `y`, and `x` axes respectively. Thus an Euler angle vector [ :math:`alpha`, :math:`beta`. :math:`gamma` ] in our convention implies a :math:`alpha` radian rotation around the `z` axis, followed by a :math:`beta` rotation around the `y` axis, followed by a :math:`gamma` rotation around the `x` axis. * the rotation matrix applies on the left, to column vectors on the right, so if `R` is the rotation matrix, and `v` is a 3 x N matrix with N column vectors, the transformed vector set `vdash` is given by ``vdash = np.dot(R, v)``. * extrinsic rotations - the axes are fixed, and do not move with the rotations. * a right-handed coordinate system The convention of rotation around ``z``, followed by rotation around ``y``, followed by rotation around ``x``, is known (confusingly) as "xyz", pitch-roll-yaw, Cardan angles, or Tait-Bryan angles. ''' import math import numpy as np _FLOAT_EPS_4 = np.finfo(float).eps * 4.0 def euler2mat(z=0, y=0, x=0): ''' Return matrix for rotations around z, y and x axes Uses the z, then y, then x convention above Parameters ---------- z : scalar Rotation angle in radians around z-axis (performed first) y : scalar Rotation angle in radians around y-axis x : scalar Rotation angle in radians around x-axis (performed last) Returns ------- M : array shape (3,3) Rotation matrix giving same rotation as for given angles Examples -------- >>> zrot = 1.3 # radians >>> yrot = -0.1 >>> xrot = 0.2 >>> M = euler2mat(zrot, yrot, xrot) >>> M.shape (3, 3) The output rotation matrix is equal to the composition of the individual rotations >>> M1 = euler2mat(zrot) >>> M2 = euler2mat(0, yrot) >>> M3 = euler2mat(0, 0, xrot) >>> composed_M = np.dot(M3, np.dot(M2, M1)) >>> np.allclose(M, composed_M) True You can specify rotations by named arguments >>> np.all(M3 == euler2mat(x=xrot)) True When applying M to a vector, the vector should column vector to the right of M. If the right hand side is a 2D array rather than a vector, then each column of the 2D array represents a vector. >>> vec = np.array([1, 0, 0]).reshape((3,1)) >>> v2 = np.dot(M, vec) >>> vecs = np.array([[1, 0, 0],[0, 1, 0]]).T # giving 3x2 array >>> vecs2 = np.dot(M, vecs) Rotations are counter-clockwise. >>> zred = np.dot(euler2mat(z=np.pi/2), np.eye(3)) >>> np.allclose(zred, [[0, -1, 0],[1, 0, 0], [0, 0, 1]]) True >>> yred = np.dot(euler2mat(y=np.pi/2), np.eye(3)) >>> np.allclose(yred, [[0, 0, 1],[0, 1, 0], [-1, 0, 0]]) True >>> xred = np.dot(euler2mat(x=np.pi/2), np.eye(3)) >>> np.allclose(xred, [[1, 0, 0],[0, 0, -1], [0, 1, 0]]) True Notes ----- The direction of rotation is given by the right-hand rule (orient the thumb of the right hand along the axis around which the rotation occurs, with the end of the thumb at the positive end of the axis; curl your fingers; the direction your fingers curl is the direction of rotation). Therefore, the rotations are counterclockwise if looking along the axis of rotation from positive to negative. ''' Ms = [] if z: cosz = math.cos(z) sinz = math.sin(z) Ms.append(np.array( [[cosz, -sinz, 0], [sinz, cosz, 0], [0, 0, 1]])) if y: cosy = math.cos(y) siny = math.sin(y) Ms.append(np.array( [[cosy, 0, siny], [0, 1, 0], [-siny, 0, cosy]])) if x: cosx = math.cos(x) sinx = math.sin(x) Ms.append(np.array( [[1, 0, 0], [0, cosx, -sinx], [0, sinx, cosx]])) if Ms: return reduce(np.dot, Ms[::-1]) return np.eye(3) def mat2euler(M, cy_thresh=None): ''' Discover Euler angle vector from 3x3 matrix Uses the conventions above. Parameters ---------- M : array-like, shape (3,3) cy_thresh : None or scalar, optional threshold below which to give up on straightforward arctan for estimating x rotation. If None (default), estimate from precision of input. Returns ------- z : scalar y : scalar x : scalar Rotations in radians around z, y, x axes, respectively Notes ----- If there was no numerical error, the routine could be derived using Sympy expression for z then y then x rotation matrix, which is:: [ cos(y)*cos(z), -cos(y)*sin(z), sin(y)], [cos(x)*sin(z) + cos(z)*sin(x)*sin(y), cos(x)*cos(z) - sin(x)*sin(y)*sin(z), -cos(y)*sin(x)], [sin(x)*sin(z) - cos(x)*cos(z)*sin(y), cos(z)*sin(x) + cos(x)*sin(y)*sin(z), cos(x)*cos(y)] with the obvious derivations for z, y, and x z = atan2(-r12, r11) y = asin(r13) x = atan2(-r23, r33) Problems arise when cos(y) is close to zero, because both of:: z = atan2(cos(y)*sin(z), cos(y)*cos(z)) x = atan2(cos(y)*sin(x), cos(x)*cos(y)) will be close to atan2(0, 0), and highly unstable. The ``cy`` fix for numerical instability below is from: *Graphics Gems IV*, Paul Heckbert (editor), Academic Press, 1994, ISBN: 0123361559. Specifically it comes from EulerAngles.c by Ken Shoemake, and deals with the case where cos(y) is close to zero: See: http://www.graphicsgems.org/ The code appears to be licensed (from the website) as "can be used without restrictions". ''' M = np.asarray(M) if cy_thresh is None: try: cy_thresh = np.finfo(M.dtype).eps * 4 except ValueError: cy_thresh = _FLOAT_EPS_4 r11, r12, r13, r21, r22, r23, r31, r32, r33 = M.flat # cy: sqrt((cos(y)*cos(z))**2 + (cos(x)*cos(y))**2) cy = math.sqrt(r33*r33 + r23*r23) if cy > cy_thresh: # cos(y) not close to zero, standard form z = math.atan2(-r12, r11) # atan2(cos(y)*sin(z), cos(y)*cos(z)) y = math.atan2(r13, cy) # atan2(sin(y), cy) x = math.atan2(-r23, r33) # atan2(cos(y)*sin(x), cos(x)*cos(y)) else: # cos(y) (close to) zero, so x -> 0.0 (see above) # so r21 -> sin(z), r22 -> cos(z) and z = math.atan2(r21, r22) y = math.atan2(r13, cy) # atan2(sin(y), cy) x = 0.0 return z, y, x def euler2quat(z=0, y=0, x=0): ''' Return quaternion corresponding to these Euler angles Uses the z, then y, then x convention above Parameters ---------- z : scalar Rotation angle in radians around z-axis (performed first) y : scalar Rotation angle in radians around y-axis x : scalar Rotation angle in radians around x-axis (performed last) Returns ------- quat : array shape (4,) Quaternion in w, x, y z (real, then vector) format Notes ----- We can derive this formula in Sympy using: 1. Formula giving quaternion corresponding to rotation of theta radians about arbitrary axis: http://mathworld.wolfram.com/EulerParameters.html 2. Generated formulae from 1.) for quaternions corresponding to theta radians rotations about ``x, y, z`` axes 3. Apply quaternion multiplication formula - http://en.wikipedia.org/wiki/Quaternions#Hamilton_product - to formulae from 2.) to give formula for combined rotations. ''' z = z/2.0 y = y/2.0 x = x/2.0 cz = math.cos(z) sz = math.sin(z) cy = math.cos(y) sy = math.sin(y) cx = math.cos(x) sx = math.sin(x) return np.array([ cx*cy*cz - sx*sy*sz, cx*sy*sz + cy*cz*sx, cx*cz*sy - sx*cy*sz, cx*cy*sz + sx*cz*sy]) def quat2euler(q): ''' Return Euler angles corresponding to quaternion `q` Parameters ---------- q : 4 element sequence w, x, y, z of quaternion Returns ------- z : scalar Rotation angle in radians around z-axis (performed first) y : scalar Rotation angle in radians around y-axis x : scalar Rotation angle in radians around x-axis (performed last) Notes ----- It's possible to reduce the amount of calculation a little, by combining parts of the ``quat2mat`` and ``mat2euler`` functions, but the reduction in computation is small, and the code repetition is large. ''' # delayed import to avoid cyclic dependencies import nibabel.quaternions as nq return mat2euler(nq.quat2mat(q)) def euler2angle_axis(z=0, y=0, x=0): ''' Return angle, axis corresponding to these Euler angles Uses the z, then y, then x convention above Parameters ---------- z : scalar Rotation angle in radians around z-axis (performed first) y : scalar Rotation angle in radians around y-axis x : scalar Rotation angle in radians around x-axis (performed last) Returns ------- theta : scalar angle of rotation vector : array shape (3,) axis around which rotation occurs Examples -------- >>> theta, vec = euler2angle_axis(0, 1.5, 0) >>> print(theta) 1.5 >>> np.allclose(vec, [0, 1, 0]) True ''' # delayed import to avoid cyclic dependencies import nibabel.quaternions as nq return nq.quat2angle_axis(euler2quat(z, y, x)) def angle_axis2euler(theta, vector, is_normalized=False): ''' Convert angle, axis pair to Euler angles Parameters ---------- theta : scalar angle of rotation vector : 3 element sequence vector specifying axis for rotation. is_normalized : bool, optional True if vector is already normalized (has norm of 1). Default False Returns ------- z : scalar y : scalar x : scalar Rotations in radians around z, y, x axes, respectively Examples -------- >>> z, y, x = angle_axis2euler(0, [1, 0, 0]) >>> np.allclose((z, y, x), 0) True Notes ----- It's possible to reduce the amount of calculation a little, by combining parts of the ``angle_axis2mat`` and ``mat2euler`` functions, but the reduction in computation is small, and the code repetition is large. ''' # delayed import to avoid cyclic dependencies import nibabel.quaternions as nq M = nq.angle_axis2mat(theta, vector, is_normalized) return mat2euler(M) nipy-nibabel-d3c26be/nibabel/externals/000077500000000000000000000000001177264777700202075ustar00rootroot00000000000000nipy-nibabel-d3c26be/nibabel/externals/__init__.py000066400000000000000000000000001177264777700223060ustar00rootroot00000000000000nipy-nibabel-d3c26be/nibabel/externals/netcdf.py000066400000000000000000001003021177264777700220200ustar00rootroot00000000000000# emacs: -*- mode: python-mode; py-indent-offset: 4; indent-tabs-mode: nil -*- # vi: set ft=python sts=4 ts=4 sw=4 et: ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ## # # See COPYING file distributed along with the NiBabel package for the # copyright and license terms. # ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ## """ NetCDF reader/writer module. This module is used to read and create NetCDF files. NetCDF files are accessed through the `netcdf_file` object. Data written to and from NetCDF files are contained in `netcdf_variable` objects. Attributes are given as member variables of the `netcdf_file` and `netcdf_variable` objects. Notes ----- NetCDF files are a self-describing binary data format. The file contains metadata that describes the dimensions and variables in the file. More details about NetCDF files can be found `here `_. There are three main sections to a NetCDF data structure: 1. Dimensions 2. Variables 3. Attributes The dimensions section records the name and length of each dimension used by the variables. The variables would then indicate which dimensions it uses and any attributes such as data units, along with containing the data values for the variable. It is good practice to include a variable that is the same name as a dimension to provide the values for that axes. Lastly, the attributes section would contain additional information such as the name of the file creator or the instrument used to collect the data. When writing data to a NetCDF file, there is often the need to indicate the 'record dimension'. A record dimension is the unbounded dimension for a variable. For example, a temperature variable may have dimensions of latitude, longitude and time. If one wants to add more temperature data to the NetCDF file as time progresses, then the temperature variable should have the time dimension flagged as the record dimension. This module implements the Scientific.IO.NetCDF API to read and create NetCDF files. The same API is also used in the PyNIO and pynetcdf modules, allowing these modules to be used interchangeably when working with NetCDF files. The major advantage of this module over other modules is that it doesn't require the code to be linked to the NetCDF C libraries. The code is based on the `NetCDF file format specification `_. A NetCDF file is a self-describing binary format, with a header followed by data. The header contains metadata describing dimensions, variables and the position of the data in the file, so access can be done in an efficient manner without loading unnecessary data into memory. We use the ``mmap`` module to create Numpy arrays mapped to the data on disk, for the same purpose. The structure of a NetCDF file is as follows: C D F Record data refers to data where the first axis can be expanded at will. All record variables share a same dimension at the first axis, and they are stored at the end of the file per record, ie A[0], B[0], ..., A[1], B[1], ..., etc, so that new data can be appended to the file without changing its original structure. Non-record data are padded to a 4n bytes boundary. Record data are also padded, unless there is exactly one record variable in the file, in which case the padding is dropped. All data is stored in big endian byte order. The Scientific.IO.NetCDF API allows attributes to be added directly to instances of ``netcdf_file`` and ``netcdf_variable``. To differentiate between user-set attributes and instance attributes, user-set attributes are automatically stored in the ``_attributes`` attribute by overloading ``__setattr__``. This is the reason why the code sometimes uses ``obj.__dict__['key'] = value``, instead of simply ``obj.key = value``; otherwise the key would be inserted into userspace attributes. In addition, the NetCDF file header contains the position of the data in the file, so access can be done in an efficient manner without loading unnecessary data into memory. It uses the ``mmap`` module to create Numpy arrays mapped to the data on disk, for the same purpose. Examples -------- To create a NetCDF file: Make a temporary file for testing: >>> import os >>> from tempfile import mkdtemp >>> tmp_pth = mkdtemp() >>> fname = os.path.join(tmp_pth, 'test.nc') Then: >>> f = netcdf_file(fname, 'w') >>> f.history = 'Created for a test' >>> f.createDimension('time', 10) >>> time = f.createVariable('time', 'i', ('time',)) >>> time[:] = range(10) >>> time.units = 'days since 2008-01-01' >>> f.close() Note the assignment of ``range(10)`` to ``time[:]``. Exposing the slice of the time variable allows for the data to be set in the object, rather than letting ``range(10)`` overwrite the ``time`` variable. To read the NetCDF file we just created: >>> f = netcdf_file(fname, 'r') >>> f.history #23dt next : bytes 'Created for a test' >>> time = f.variables['time'] >>> time.units #23dt next : bytes 'days since 2008-01-01' >>> print time.shape (10,) >>> print time[-1] 9 >>> f.close() Delete our temporary directory and file: >>> del f, time # needed for windows unlink >>> os.unlink(fname) >>> os.rmdir(tmp_pth) """ #TODO: # * properly implement ``_FillValue``. # * implement Jeff Whitaker's patch for masked variables. # * fix character variables. # * implement PAGESIZE for Python 2.6? #The Scientific.IO.NetCDF API allows attributes to be added directly to #instances of ``netcdf_file`` and ``netcdf_variable``. To differentiate #between user-set attributes and instance attributes, user-set attributes #are automatically stored in the ``_attributes`` attribute by overloading #``__setattr__``. This is the reason why the code sometimes uses #``obj.__dict__['key'] = value``, instead of simply ``obj.key = value``; #otherwise the key would be inserted into userspace attributes. __all__ = ['netcdf_file'] from operator import mul from mmap import mmap, ACCESS_READ import numpy as np from ..py3k import asbytes, asstr from numpy import fromstring, ndarray, dtype, empty, array, asarray from numpy import little_endian as LITTLE_ENDIAN ABSENT = asbytes('\x00\x00\x00\x00\x00\x00\x00\x00') ZERO = asbytes('\x00\x00\x00\x00') NC_BYTE = asbytes('\x00\x00\x00\x01') NC_CHAR = asbytes('\x00\x00\x00\x02') NC_SHORT = asbytes('\x00\x00\x00\x03') NC_INT = asbytes('\x00\x00\x00\x04') NC_FLOAT = asbytes('\x00\x00\x00\x05') NC_DOUBLE = asbytes('\x00\x00\x00\x06') NC_DIMENSION = asbytes('\x00\x00\x00\n') NC_VARIABLE = asbytes('\x00\x00\x00\x0b') NC_ATTRIBUTE = asbytes('\x00\x00\x00\x0c') TYPEMAP = { NC_BYTE: ('b', 1), NC_CHAR: ('c', 1), NC_SHORT: ('h', 2), NC_INT: ('i', 4), NC_FLOAT: ('f', 4), NC_DOUBLE: ('d', 8) } REVERSE = { ('b', 1): NC_BYTE, ('B', 1): NC_CHAR, ('c', 1): NC_CHAR, ('h', 2): NC_SHORT, ('i', 4): NC_INT, ('f', 4): NC_FLOAT, ('d', 8): NC_DOUBLE, # these come from asarray(1).dtype.char and asarray('foo').dtype.char, # used when getting the types from generic attributes. ('l', 4): NC_INT, ('S', 1): NC_CHAR } class netcdf_file(object): """ A file object for NetCDF data. A `netcdf_file` object has two standard attributes: `dimensions` and `variables`. The values of both are dictionaries, mapping dimension names to their associated lengths and variable names to variables, respectively. Application programs should never modify these dictionaries. All other attributes correspond to global attributes defined in the NetCDF file. Global file attributes are created by assigning to an attribute of the `netcdf_file` object. Parameters ---------- filename : string or file-like string -> filename mode : {'r', 'w'}, optional read-write mode, default is 'r' mmap : None or bool, optional Whether to mmap `filename` when reading. Default is True when `filename` is a file name, False when `filename` is a file-like object version : {1, 2}, optional version of netcdf to read / write, where 1 means *Classic format* and 2 means *64-bit offset format*. Default is 1. See `here `_ for more info. """ def __init__(self, filename, mode='r', mmap=None, version=1): """Initialize netcdf_file from fileobj (str or file-like). Parameters ---------- filename : string or file-like string -> filename mode : {'r', 'w'}, optional read-write mode, default is 'r' mmap : None or bool, optional Whether to mmap `filename` when reading. Default is True when `filename` is a file name, False when `filename` is a file-like object version : {1, 2}, optional version of netcdf to read / write, where 1 means *Classic format* and 2 means *64-bit offset format*. Default is 1. See http://www.unidata.ucar.edu/software/netcdf/docs/netcdf/Which-Format.html#Which-Format """ if hasattr(filename, 'seek'): # file-like self.fp = filename self.filename = 'None' if mmap is None: mmap = False elif mmap and not hasattr(filename, 'fileno'): raise ValueError('Cannot use file object for mmap') else: # maybe it's a string self.filename = filename self.fp = open(self.filename, '%sb' % mode) if mmap is None: mmap = True self.use_mmap = mmap self.version_byte = version if not mode in 'rw': raise ValueError("Mode must be either 'r' or 'w'.") self.mode = mode self.dimensions = {} self.variables = {} self._dims = [] self._recs = 0 self._recsize = 0 self._attributes = {} if mode == 'r': self._read() def __setattr__(self, attr, value): # Store user defined attributes in a separate dict, # so we can save them to file later. try: self._attributes[attr] = value except AttributeError: pass self.__dict__[attr] = value def close(self): """Closes the NetCDF file.""" try: if self.fp.closed: return except AttributeError: # gzip files don't have closed attr pass try: self.flush() finally: self.fp.close() __del__ = close def createDimension(self, name, length): """ Adds a dimension to the Dimension section of the NetCDF data structure. Note that this function merely adds a new dimension that the variables can reference. The values for the dimension, if desired, should be added as a variable using `createVariable`, referring to this dimension. Parameters ---------- name : str Name of the dimension (Eg, 'lat' or 'time'). length : int Length of the dimension. See Also -------- createVariable """ self.dimensions[name] = length self._dims.append(name) def createVariable(self, name, type, dimensions): """ Create an empty variable for the `netcdf_file` object, specifying its data type and the dimensions it uses. Parameters ---------- name : str Name of the new variable. type : dtype or str Data type of the variable. dimensions : sequence of str List of the dimension names used by the variable, in the desired order. Returns ------- variable : netcdf_variable The newly created ``netcdf_variable`` object. This object has also been added to the `netcdf_file` object as well. See Also -------- createDimension Notes ----- Any dimensions to be used by the variable should already exist in the NetCDF data structure or should be created by `createDimension` prior to creating the NetCDF variable. """ shape = tuple([self.dimensions[dim] for dim in dimensions]) shape_ = tuple([dim or 0 for dim in shape]) # replace None with 0 for numpy if isinstance(type, basestring): type = dtype(type) typecode, size = type.char, type.itemsize if (typecode, size) not in REVERSE: raise ValueError("NetCDF 3 does not support type %s" % type) dtype_ = '>%s' % typecode if size > 1: dtype_ += str(size) data = empty(shape_, dtype=dtype_) self.variables[name] = netcdf_variable(data, typecode, size, shape, dimensions) return self.variables[name] def flush(self): """ Perform a sync-to-disk flush if the `netcdf_file` object is in write mode. See Also -------- sync : Identical function """ if hasattr(self, 'mode') and self.mode is 'w': self._write() sync = flush def _write(self): self.fp.write(asbytes('CDF')) self.fp.write(array(self.version_byte, '>b').tostring()) # Write headers and data. self._write_numrecs() self._write_dim_array() self._write_gatt_array() self._write_var_array() def _write_numrecs(self): # Get highest record count from all record variables. for var in self.variables.values(): if var.isrec and len(var.data) > self._recs: self.__dict__['_recs'] = len(var.data) self._pack_int(self._recs) def _write_dim_array(self): if self.dimensions: self.fp.write(NC_DIMENSION) self._pack_int(len(self.dimensions)) for name in self._dims: self._pack_string(name) length = self.dimensions[name] self._pack_int(length or 0) # replace None with 0 for record dimension else: self.fp.write(ABSENT) def _write_gatt_array(self): self._write_att_array(self._attributes) def _write_att_array(self, attributes): if attributes: self.fp.write(NC_ATTRIBUTE) self._pack_int(len(attributes)) for name, values in attributes.items(): self._pack_string(name) self._write_values(values) else: self.fp.write(ABSENT) def _write_var_array(self): if self.variables: self.fp.write(NC_VARIABLE) self._pack_int(len(self.variables)) # Sort variables non-recs first, then recs. We use a DSU # since some people use pupynere with Python 2.3.x. deco = [ (v._shape and not v.isrec, k) for (k, v) in self.variables.items() ] deco.sort() variables = [ k for (unused, k) in deco ][::-1] # Set the metadata for all variables. for name in variables: self._write_var_metadata(name) # Now that we have the metadata, we know the vsize of # each record variable, so we can calculate recsize. self.__dict__['_recsize'] = sum([ var._vsize for var in self.variables.values() if var.isrec]) # Set the data for all variables. for name in variables: self._write_var_data(name) else: self.fp.write(ABSENT) def _write_var_metadata(self, name): var = self.variables[name] self._pack_string(name) self._pack_int(len(var.dimensions)) for dimname in var.dimensions: dimid = self._dims.index(dimname) self._pack_int(dimid) self._write_att_array(var._attributes) nc_type = REVERSE[var.typecode(), var.itemsize()] self.fp.write(asbytes(nc_type)) if not var.isrec: vsize = var.data.size * var.data.itemsize vsize += -vsize % 4 else: # record variable try: vsize = var.data[0].size * var.data.itemsize except IndexError: vsize = 0 rec_vars = len([var for var in self.variables.values() if var.isrec]) if rec_vars > 1: vsize += -vsize % 4 self.variables[name].__dict__['_vsize'] = vsize self._pack_int(vsize) # Pack a bogus begin, and set the real value later. self.variables[name].__dict__['_begin'] = self.fp.tell() self._pack_begin(0) def _write_var_data(self, name): var = self.variables[name] # Set begin in file header. the_beguine = self.fp.tell() self.fp.seek(var._begin) self._pack_begin(the_beguine) self.fp.seek(the_beguine) # Write data. if not var.isrec: self.fp.write(var.data.tostring()) count = var.data.size * var.data.itemsize self.fp.write(asbytes('0') * (var._vsize - count)) else: # record variable # Handle rec vars with shape[0] < nrecs. if self._recs > len(var.data): shape = (self._recs,) + var.data.shape[1:] var.data.resize(shape) pos0 = pos = self.fp.tell() for rec in var.data: # Apparently scalars cannot be converted to big endian. If we # try to convert a ``=i4`` scalar to, say, '>i4' the dtype # will remain as ``=i4``. if not rec.shape and (rec.dtype.byteorder == '<' or (rec.dtype.byteorder == '=' and LITTLE_ENDIAN)): rec = rec.byteswap() self.fp.write(rec.tostring()) # Padding count = rec.size * rec.itemsize self.fp.write(asbytes('0') * (var._vsize - count)) pos += self._recsize self.fp.seek(pos) self.fp.seek(pos0 + var._vsize) def _write_values(self, values): if hasattr(values, 'dtype'): nc_type = REVERSE[values.dtype.char, values.dtype.itemsize] else: types = [ (int, NC_INT), (long, NC_INT), (float, NC_FLOAT), (basestring, NC_CHAR), ] try: sample = values[0] except TypeError: sample = values for class_, nc_type in types: if isinstance(sample, class_): break typecode, size = TYPEMAP[nc_type] dtype_ = '>%s' % typecode values = asarray(values, dtype=dtype_) self.fp.write(asbytes(nc_type)) if values.dtype.char == 'S': nelems = values.itemsize else: nelems = values.size self._pack_int(nelems) if not values.shape and (values.dtype.byteorder == '<' or (values.dtype.byteorder == '=' and LITTLE_ENDIAN)): values = values.byteswap() self.fp.write(values.tostring()) count = values.size * values.itemsize self.fp.write(asbytes('0') * (-count % 4)) # pad def _read(self): # Check magic bytes and version magic = self.fp.read(3) if not magic == asbytes('CDF'): raise TypeError("Error: %s is not a valid NetCDF 3 file" % self.filename) self.__dict__['version_byte'] = fromstring(self.fp.read(1), '>b')[0] # Read file headers and set data. self._read_numrecs() self._read_dim_array() self._read_gatt_array() self._read_var_array() def _read_numrecs(self): self.__dict__['_recs'] = self._unpack_int() def _read_dim_array(self): header = self.fp.read(4) if not header in [ZERO, NC_DIMENSION]: raise ValueError("Unexpected header.") count = self._unpack_int() for dim in range(count): name = asstr(self._unpack_string()) length = self._unpack_int() or None # None for record dimension self.dimensions[name] = length self._dims.append(name) # preserve order def _read_gatt_array(self): for k, v in self._read_att_array().items(): self.__setattr__(k, v) def _read_att_array(self): header = self.fp.read(4) if not header in [ZERO, NC_ATTRIBUTE]: raise ValueError("Unexpected header.") count = self._unpack_int() attributes = {} for attr in range(count): name = asstr(self._unpack_string()) attributes[name] = self._read_values() return attributes def _read_var_array(self): header = self.fp.read(4) if not header in [ZERO, NC_VARIABLE]: raise ValueError("Unexpected header.") begin = 0 dtypes = {'names': [], 'formats': []} rec_vars = [] count = self._unpack_int() for var in range(count): (name, dimensions, shape, attributes, typecode, size, dtype_, begin_, vsize) = self._read_var() # http://www.unidata.ucar.edu/software/netcdf/docs/netcdf.html # Note that vsize is the product of the dimension lengths # (omitting the record dimension) and the number of bytes # per value (determined from the type), increased to the # next multiple of 4, for each variable. If a record # variable, this is the amount of space per record. The # netCDF "record size" is calculated as the sum of the # vsize's of all the record variables. # # The vsize field is actually redundant, because its value # may be computed from other information in the header. The # 32-bit vsize field is not large enough to contain the size # of variables that require more than 2^32 - 4 bytes, so # 2^32 - 1 is used in the vsize field for such variables. if shape and shape[0] is None: # record variable rec_vars.append(name) # The netCDF "record size" is calculated as the sum of # the vsize's of all the record variables. self.__dict__['_recsize'] += vsize if begin == 0: begin = begin_ dtypes['names'].append(name) dtypes['formats'].append(str(shape[1:]) + dtype_) # Handle padding with a virtual variable. if typecode in 'bch': actual_size = reduce(mul, (1,) + shape[1:]) * size padding = -actual_size % 4 if padding: dtypes['names'].append('_padding_%d' % var) dtypes['formats'].append('(%d,)>b' % padding) # Data will be set later. data = None else: # not a record variable # Calculate size to avoid problems with vsize (above) a_size = reduce(mul, shape, 1) * size if self.use_mmap: mm = mmap(self.fp.fileno(), begin_+a_size, access=ACCESS_READ) data = ndarray.__new__(ndarray, shape, dtype=dtype_, buffer=mm, offset=begin_, order=0) else: pos = self.fp.tell() self.fp.seek(begin_) data = fromstring(self.fp.read(a_size), dtype=dtype_) data.shape = shape self.fp.seek(pos) # Add variable. self.variables[name] = netcdf_variable( data, typecode, size, shape, dimensions, attributes) if rec_vars: # Remove padding when only one record variable. if len(rec_vars) == 1: dtypes['names'] = dtypes['names'][:1] dtypes['formats'] = dtypes['formats'][:1] # Build rec array. if self.use_mmap: mm = mmap(self.fp.fileno(), begin+self._recs*self._recsize, access=ACCESS_READ) rec_array = ndarray.__new__(ndarray, (self._recs,), dtype=dtypes, buffer=mm, offset=begin, order=0) else: pos = self.fp.tell() self.fp.seek(begin) rec_array = fromstring(self.fp.read(self._recs*self._recsize), dtype=dtypes) rec_array.shape = (self._recs,) self.fp.seek(pos) for var in rec_vars: self.variables[var].__dict__['data'] = rec_array[var] def _read_var(self): name = asstr(self._unpack_string()) dimensions = [] shape = [] dims = self._unpack_int() for i in range(dims): dimid = self._unpack_int() dimname = self._dims[dimid] dimensions.append(dimname) dim = self.dimensions[dimname] shape.append(dim) dimensions = tuple(dimensions) shape = tuple(shape) attributes = self._read_att_array() nc_type = self.fp.read(4) vsize = self._unpack_int() begin = [self._unpack_int, self._unpack_int64][self.version_byte-1]() typecode, size = TYPEMAP[nc_type] dtype_ = '>%s' % typecode return name, dimensions, shape, attributes, typecode, size, dtype_, begin, vsize def _read_values(self): nc_type = self.fp.read(4) n = self._unpack_int() typecode, size = TYPEMAP[nc_type] count = n*size values = self.fp.read(int(count)) self.fp.read(-count % 4) # read padding if typecode is not 'c': values = fromstring(values, dtype='>%s' % typecode) if values.shape == (1,): values = values[0] else: values = values.rstrip(asbytes('\x00')) return values def _pack_begin(self, begin): if self.version_byte == 1: self._pack_int(begin) elif self.version_byte == 2: self._pack_int64(begin) def _pack_int(self, value): self.fp.write(array(value, '>i').tostring()) _pack_int32 = _pack_int def _unpack_int(self): return int(fromstring(self.fp.read(4), '>i')[0]) _unpack_int32 = _unpack_int def _pack_int64(self, value): self.fp.write(array(value, '>q').tostring()) def _unpack_int64(self): return fromstring(self.fp.read(8), '>q')[0] def _pack_string(self, s): count = len(s) self._pack_int(count) self.fp.write(asbytes(s)) self.fp.write(asbytes('0') * (-count % 4)) # pad def _unpack_string(self): count = self._unpack_int() s = self.fp.read(count).rstrip(asbytes('\x00')) self.fp.read(-count % 4) # read padding return s class netcdf_variable(object): """ A data object for the `netcdf` module. `netcdf_variable` objects are constructed by calling the method `netcdf_file.createVariable` on the `netcdf_file` object. `netcdf_variable` objects behave much like array objects defined in numpy, except that their data resides in a file. Data is read by indexing and written by assigning to an indexed subset; the entire array can be accessed by the index ``[:]`` or (for scalars) by using the methods `getValue` and `assignValue`. `netcdf_variable` objects also have attribute `shape` with the same meaning as for arrays, but the shape cannot be modified. There is another read-only attribute `dimensions`, whose value is the tuple of dimension names. All other attributes correspond to variable attributes defined in the NetCDF file. Variable attributes are created by assigning to an attribute of the `netcdf_variable` object. Parameters ---------- data : array_like The data array that holds the values for the variable. Typically, this is initialized as empty, but with the proper shape. typecode : dtype character code Desired data-type for the data array. size : int Desired element size for the data array. shape : sequence of ints The shape of the array. This should match the lengths of the variable's dimensions. dimensions : sequence of strings The names of the dimensions used by the variable. Must be in the same order of the dimension lengths given by `shape`. attributes : dict, optional Attribute values (any type) keyed by string names. These attributes become attributes for the netcdf_variable object. Attributes ---------- dimensions : list of str List of names of dimensions used by the variable object. isrec, shape Properties See also -------- isrec, shape """ def __init__(self, data, typecode, size, shape, dimensions, attributes=None): self.data = data self._typecode = typecode self._size = size self._shape = shape self.dimensions = dimensions self._attributes = attributes or {} for k, v in self._attributes.items(): self.__dict__[k] = v def __setattr__(self, attr, value): # Store user defined attributes in a separate dict, # so we can save them to file later. try: self._attributes[attr] = value except AttributeError: pass self.__dict__[attr] = value def isrec(self): """Returns whether the variable has a record dimension or not. A record dimension is a dimension along which additional data could be easily appended in the netcdf data structure without much rewriting of the data file. This attribute is a read-only property of the `netcdf_variable`. """ return self.data.shape and not self._shape[0] isrec = property(isrec) def shape(self): """Returns the shape tuple of the data variable. This is a read-only attribute and can not be modified in the same manner of other numpy arrays. """ return self.data.shape shape = property(shape) def getValue(self): """ Retrieve a scalar value from a `netcdf_variable` of length one. Raises ------ ValueError If the netcdf variable is an array of length greater than one, this exception will be raised. """ return self.data.item() def assignValue(self, value): """ Assign a scalar value to a `netcdf_variable` of length one. Parameters ---------- value : scalar Scalar value (of compatible type) to assign to a length-one netcdf variable. This value will be written to file. Raises ------ ValueError If the input is not a scalar, or if the destination is not a length-one netcdf variable. """ self.data.itemset(value) def typecode(self): """ Return the typecode of the variable. Returns ------- typecode : char The character typecode of the variable (eg, 'i' for int). """ return self._typecode def itemsize(self): """ Return the itemsize of the variable. Returns ------- itemsize : int The element size of the variable (eg, 8 for float64). """ return self._size def __getitem__(self, index): return self.data[index] def __setitem__(self, index, data): # Expand data for record vars? if self.isrec: if isinstance(index, tuple): rec_index = index[0] else: rec_index = index if isinstance(rec_index, slice): recs = (rec_index.start or 0) + len(data) else: recs = rec_index + 1 if recs > len(self.data): shape = (recs,) + self._shape[1:] self.data.resize(shape) self.data[index] = data NetCDFFile = netcdf_file NetCDFVariable = netcdf_variable nipy-nibabel-d3c26be/nibabel/externals/tests/000077500000000000000000000000001177264777700213515ustar00rootroot00000000000000nipy-nibabel-d3c26be/nibabel/externals/tests/__init__.py000066400000000000000000000000411177264777700234550ustar00rootroot00000000000000# Make externals tests a package nipy-nibabel-d3c26be/nibabel/externals/tests/data/000077500000000000000000000000001177264777700222625ustar00rootroot00000000000000nipy-nibabel-d3c26be/nibabel/externals/tests/data/example_1.nc000066400000000000000000000033101177264777700244540ustar00rootroot00000000000000CDF latlon leveltime sourceFictional Model Output temp  long_name temperatureunitscelsius rh  long_namerelative humidity valid_range?lat units degrees_northlon units degrees_east(level units millibarstime unitshours since 1996-1-1(2<`tR||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||?>L>>L>>L>???333=>====??333?L?L=>L>L>L>L??333?L?fff?fff=>L>>>>?333?L?fff?fff=>L>>>>?333?fff?fff nipy-nibabel-d3c26be/nibabel/externals/tests/test_netcdf.py000066400000000000000000000072731177264777700242360ustar00rootroot00000000000000''' Tests for netcdf ''' import os from os.path import join as pjoin, dirname import shutil import tempfile from glob import glob import numpy as np from ...py3k import BytesIO, asbytes from ..netcdf import netcdf_file from nose.tools import assert_true, assert_false, assert_equal, assert_raises TEST_DATA_PATH = pjoin(dirname(__file__), 'data') N_EG_ELS = 11 # number of elements for example variable VARTYPE_EG = 'b' # var type for example variable def make_simple(*args, **kwargs): f = netcdf_file(*args, **kwargs) f.history = 'Created for a test' f.createDimension('time', N_EG_ELS) time = f.createVariable('time', VARTYPE_EG, ('time',)) time[:] = np.arange(N_EG_ELS) time.units = 'days since 2008-01-01' f.flush() return f def gen_for_simple(ncfileobj): ''' Generator for example fileobj tests ''' yield assert_equal, ncfileobj.history, asbytes('Created for a test') time = ncfileobj.variables['time'] yield assert_equal, time.units, asbytes('days since 2008-01-01') yield assert_equal, time.shape, (N_EG_ELS,) yield assert_equal, time[-1], N_EG_ELS-1 def test_read_write_files(): # test round trip for example file cwd = os.getcwd() try: tmpdir = tempfile.mkdtemp() os.chdir(tmpdir) f = make_simple('simple.nc', 'w') f.close() # To read the NetCDF file we just created:: f = netcdf_file('simple.nc') # Using mmap is the default yield assert_true, f.use_mmap for testargs in gen_for_simple(f): yield testargs f.close() # Now without mmap f = netcdf_file('simple.nc', mmap=False) # Using mmap is the default yield assert_false, f.use_mmap for testargs in gen_for_simple(f): yield testargs f.close() # To read the NetCDF file we just created, as file object, no # mmap. When n * n_bytes(var_type) is not divisible by 4, this # raised an error in pupynere 1.0.12 and scipy rev 5893, because # calculated vsize was rounding up in units of 4 - see # http://www.unidata.ucar.edu/software/netcdf/docs/netcdf.html fobj = open('simple.nc', 'rb') f = netcdf_file(fobj) # by default, don't use mmap for file-like yield assert_false, f.use_mmap for testargs in gen_for_simple(f): yield testargs f.close() except: os.chdir(cwd) shutil.rmtree(tmpdir) raise os.chdir(cwd) shutil.rmtree(tmpdir) def test_read_write_sio(): eg_sio1 = BytesIO() f1 = make_simple(eg_sio1, 'w') str_val = eg_sio1.getvalue() f1.close() eg_sio2 = BytesIO(str_val) f2 = netcdf_file(eg_sio2) for testargs in gen_for_simple(f2): yield testargs f2.close() # Test that error is raised if attempting mmap for sio eg_sio3 = BytesIO(str_val) yield assert_raises, ValueError, netcdf_file, eg_sio3, 'r', True # Test 64-bit offset write / read eg_sio_64 = BytesIO() f_64 = make_simple(eg_sio_64, 'w', version=2) str_val = eg_sio_64.getvalue() f_64.close() eg_sio_64 = BytesIO(str_val) f_64 = netcdf_file(eg_sio_64) for testargs in gen_for_simple(f_64): yield testargs yield assert_equal, f_64.version_byte, 2 # also when version 2 explicitly specified eg_sio_64 = BytesIO(str_val) f_64 = netcdf_file(eg_sio_64, version=2) for testargs in gen_for_simple(f_64): yield testargs yield assert_equal, f_64.version_byte, 2 def test_read_example_data(): # read any example data files for fname in glob(pjoin(TEST_DATA_PATH, '*.nc')): f = netcdf_file(fname, 'r') f = netcdf_file(fname, 'r', mmap=False) nipy-nibabel-d3c26be/nibabel/fileholders.py000066400000000000000000000062531177264777700210620ustar00rootroot00000000000000# emacs: -*- mode: python-mode; py-indent-offset: 4; indent-tabs-mode: nil -*- # vi: set ft=python sts=4 ts=4 sw=4 et: ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ## # # See COPYING file distributed along with the NiBabel package for the # copyright and license terms. # ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ## ''' Fileholder class ''' from copy import copy from .volumeutils import allopen class FileHolderError(Exception): pass class FileHolder(object): ''' class to contain filename, fileobj and file position ''' def __init__(self, filename=None, fileobj=None, pos=0): ''' Initialize FileHolder instance Parameters ---------- filename : str, optional filename. Default is None fileobj : file-like object, optional Should implement at least 'seek' (for the purposes for this class). Default is None pos : int, optional position in filename or fileobject at which to start reading or writing data; defaults to 0 ''' self.filename = filename self.fileobj = fileobj self.pos = pos def get_prepare_fileobj(self, *args, **kwargs): ''' Return fileobj if present, or return fileobj from filename Set position to that given in self.pos Parameters ---------- *args : tuple positional arguments to file open. Ignored if there is a defined ``self.fileobj``. These might include the mode, such as 'rb' **kwargs : dict named arguments to file open. Ignored if there is a defined ``self.fileobj`` Returns ------- fileobj : file-like object object has position set (via ``fileobj.seek()``) to ``self.pos`` ''' if self.fileobj is not None: obj = self.fileobj obj.seek(self.pos) elif self.filename is not None: obj = allopen(self.filename, *args, **kwargs) if self.pos != 0: obj.seek(self.pos) else: raise FileHolderError('No filename or fileobj present') return obj def same_file_as(self, other): """ Test if `self` refers to same files / fileobj as `other` Parameters ---------- other : object object with `filename` and `fileobj` attributes Returns ------- tf : bool True if `other` has the same filename (or both have None) and the same fileobj (or both have None """ return ((self.filename == other.filename) and (self.fileobj == other.fileobj)) def copy_file_map(file_map): ''' Copy mapping of fileholders given by `file_map` Parameters ---------- file_map : mapping mapping of ``FileHolder`` instances Returns ------- fm_copy : dict Copy of `file_map`, using shallow copy of ``FileHolder``\s ''' fm_copy = {} for key, fh in file_map.items(): fm_copy[key] = copy(fh) return fm_copy nipy-nibabel-d3c26be/nibabel/filename_parser.py000066400000000000000000000233031177264777700217110ustar00rootroot00000000000000# emacs: -*- mode: python-mode; py-indent-offset: 4; indent-tabs-mode: nil -*- # vi: set ft=python sts=4 ts=4 sw=4 et: ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ## # # See COPYING file distributed along with the NiBabel package for the # copyright and license terms. # ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ## ''' Create filename pairs, triplets etc, with expected extensions ''' import os class TypesFilenamesError(Exception): pass def types_filenames(template_fname, types_exts, trailing_suffixes=('.gz', '.bz2'), enforce_extensions=True, match_case=False): ''' Return filenames with standard extensions from template name The typical case is returning image and header filenames for an Analyze image, that expects and 'image' file type, with, extension ``.img``, and a 'header' file type, with extension ``.hdr``. Parameters ---------- template_fname : str template filename from which to construct output dict of filenames, with given `types_exts` type to extension mapping. If ``self.enforce_extensions`` is True, then filename must have one of the defined extensions from the types list. If ``self.enforce_extensions`` is False, then the other filenames are guessed at by adding extensions to the base filename. Ignored suffixes (from `trailing_suffixes`) append themselves to the end of all the filenames. types_exts : sequence of sequences sequence of (name, extension) str sequences defining type to extension mapping. trailing_suffixes : sequence of strings, optional suffixes that should be ignored when looking for extensions - default is ``('.gz', '.bz2')`` enforce_extensions : {True, False}, optional If True, raise an error when attempting to set value to type which has the wrong extension match_case : bool, optional If True, match case of extensions and trailing suffixes when searching in `template_fname`, otherwise do case-insensitive match. Returns ------- types_fnames : dict dict with types as keys, and generated filenames as values. The types are given by the first elements of the tuples in `types_exts`. Examples -------- >>> types_exts = (('t1','.ext1'),('t2', '.ext2')) >>> tfns = types_filenames('/path/test.ext1', types_exts) >>> tfns == {'t1': '/path/test.ext1', 't2': '/path/test.ext2'} True Bare file roots without extensions get them added >>> tfns = types_filenames('/path/test', types_exts) >>> tfns == {'t1': '/path/test.ext1', 't2': '/path/test.ext2'} True With enforce_extensions == False, allow first type to have any extension. >>> tfns = types_filenames('/path/test.funny', types_exts, ... enforce_extensions=False) >>> tfns == {'t1': '/path/test.funny', 't2': '/path/test.ext2'} True ''' if not isinstance(template_fname, basestring): raise TypesFilenamesError('Need file name as input ' 'to set_filenames') if template_fname.endswith('.'): template_fname = template_fname[:-1] filename, found_ext, ignored, guessed_name = \ parse_filename(template_fname, types_exts, trailing_suffixes, match_case) # Flag cases where we just set the input name directly direct_set_name = None if enforce_extensions: if guessed_name is None: # no match - maybe there was no extension atall or the # wrong extension. In either case we raise an error if found_ext: # an extension, but the wrong one raise TypesFilenamesError( 'File extension "%s" was not in expected list: %s' % (found_ext, [e for t, e in types_exts])) elif ignored: # there was no extension, but an ignored suffix # This is a special case like 'test.gz' (where .gz # is ignored). It's confusing to change # this to test.img.gz, or test.gz.img, so error raise TypesFilenamesError( 'Confusing ignored suffix %s without extension' % ignored) # if we've got to here, we have a guessed name and a found # extension. else: # not enforcing extensions. If there's an extension, we set the # filename directly from input, for the first types_exts type # only. Also, if there was no extension, but an ignored suffix # ('test.gz' type case), we set the filename directly. # Otherwise (no extension, no ignored suffix), we stay with the # default, which is to add the default extensions according to # type. if found_ext or ignored: direct_set_name = types_exts[0][0] tfns = {} # now we have an extension case matching problem. For example, if # we've found .IMG as the extension, we want .HDR as the matching # one. Let's only do this when the extension is all upper or all # lower case. proc_ext = lambda s : s if found_ext: if found_ext == found_ext.upper(): proc_ext = lambda s : s.upper() elif found_ext == found_ext.lower(): proc_ext = lambda s : s.lower() for name, ext in types_exts: if name == direct_set_name: tfns[name] = template_fname continue fname = filename if ext: fname += proc_ext(ext) if ignored: fname += ignored tfns[name] = fname return tfns def parse_filename(filename, types_exts, trailing_suffixes, match_case=False): ''' Splits filename into tuple of (fileroot, extension, trailing_suffix, guessed_name) Parameters ---------- filename : str filename in which to search for type extensions types_exts : sequence of sequences sequence of (name, extension) str sequences defining type to extension mapping. trailing_suffixes : sequence of strings suffixes that should be ignored when looking for extensions match_case : bool, optional If True, match case of extensions and trailing suffixes when searching in `filename`, otherwise do case-insensitive match. Returns ------- pth : str path with any matching extensions or trailing suffixes removed ext : str If there were any matching extensions, in `types_exts` return that; otherwise return extension derived from ``os.path.splitext``. trailing : str If there were any matching `trailing_suffixes` return that matching suffix, otherwise '' guessed_type : str If we found a matching extension in `types_exts` return the corresponding ``type`` Examples -------- >>> types_exts = (('t1', 'ext1'),('t2', 'ext2')) >>> parse_filename('/path/fname.funny', types_exts, ()) ('/path/fname', '.funny', None, None) >>> parse_filename('/path/fnameext2', types_exts, ()) ('/path/fname', 'ext2', None, 't2') >>> parse_filename('/path/fnameext2', types_exts, ('.gz',)) ('/path/fname', 'ext2', None, 't2') >>> parse_filename('/path/fnameext2.gz', types_exts, ('.gz',)) ('/path/fname', 'ext2', '.gz', 't2') ''' ignored = None if match_case: endswith = _endswith else: endswith = _iendswith for ext in trailing_suffixes: if endswith(filename, ext): extpos = -len(ext) ignored = filename[extpos:] filename = filename[:extpos] break guessed_name = None found_ext = None tem = dict(types_exts) for name, ext in types_exts: if ext and endswith(filename, ext): extpos = -len(ext) found_ext = filename[extpos:] filename = filename[:extpos] guessed_name = name break else: filename, found_ext = os.path.splitext(filename) return (filename, found_ext, ignored, guessed_name) def _endswith(whole, end): return whole.endswith(end) def _iendswith(whole, end): return whole.lower().endswith(end.lower()) def splitext_addext(filename, addexts=('.gz', '.bz2'), match_case=False): ''' Split ``/pth/fname.ext.gz`` into ``/pth/fname, .ext, .gz`` where ``.gz`` may be any of passed `addext` trailing suffixes. Parameters ---------- filename : str filename that may end in any or none of `addexts` match_case : bool, optional If True, match case of `addexts` and `filename`, otherwise do case-insensitive match. Returns ------- froot : str Root of filename - e.g. ``/pth/fname`` in example above ext : str Extension, where extension is not in `addexts` - e.g. ``.ext`` in example above addext : str Any suffixes appearing in `addext` occuring at end of filename Examples -------- >>> splitext_addext('fname.ext.gz') ('fname', '.ext', '.gz') >>> splitext_addext('fname.ext') ('fname', '.ext', '') >>> splitext_addext('fname.ext.foo', ('.foo', '.bar')) ('fname', '.ext', '.foo') ''' if match_case: endswith = _endswith else: endswith = _iendswith for ext in addexts: if endswith(filename, ext): extpos = -len(ext) addext = filename[extpos:] filename = filename[:extpos] break else: addext = '' return os.path.splitext(filename) + (addext,) nipy-nibabel-d3c26be/nibabel/freesurfer/000077500000000000000000000000001177264777700203525ustar00rootroot00000000000000nipy-nibabel-d3c26be/nibabel/freesurfer/__init__.py000066400000000000000000000002611177264777700224620ustar00rootroot00000000000000"""Reading functions for freesurfer files """ from io import read_geometry, read_morph_data, \ read_annot, read_label from mghformat import load, save, MGHImage nipy-nibabel-d3c26be/nibabel/freesurfer/io.py000066400000000000000000000147441177264777700213450ustar00rootroot00000000000000from __future__ import with_statement import numpy as np def _fread3(fobj): """Read a 3-byte int from an open binary file object Parameters ---------- fobj : file File descriptor Returns ------- n : int A 3 byte int """ b1, b2, b3 = np.fromfile(fobj, ">u1", 3) return (b1 << 16) + (b2 << 8) + b3 def _fread3_many(fobj, n): """Read 3-byte ints from an open binary file object. Parameters ---------- fobj : file File descriptor Returns ------- out : 1D array An array of 3 byte int """ b1, b2, b3 = np.fromfile(fobj, ">u1", 3 * n).reshape(-1, 3).astype(np.int).T return (b1 << 16) + (b2 << 8) + b3 def read_geometry(filepath): """Read a triangular format Freesurfer surface mesh. Parameters ---------- filepath : str Path to surface file Returns ------- coords : numpy array nvtx x 3 array of vertex (x, y, z) coordinates faces : numpy array nfaces x 3 array of defining mesh triangles """ with open(filepath, "rb") as fobj: magic = _fread3(fobj) if magic == 16777215: # Quad file nvert = _fread3(fobj) nquad = _fread3(fobj) coords = np.fromfile(fobj, ">i2", nvert * 3).astype(np.float) coords = coords.reshape(-1, 3) / 100.0 quads = _fread3_many(fobj, nquad * 4) quads = quads.reshape(nquad, 4) # # Face splitting follows # faces = np.zeros((2 * nquad, 3), dtype=np.int) nface = 0 for quad in quads: if (quad[0] % 2) == 0: faces[nface] = quad[0], quad[1], quad[3] nface += 1 faces[nface] = quad[2], quad[3], quad[1] nface += 1 else: faces[nface] = quad[0], quad[1], quad[2] nface += 1 faces[nface] = quad[0], quad[2], quad[3] nface += 1 elif magic == 16777214: # Triangle file create_stamp = fobj.readline() _ = fobj.readline() vnum = np.fromfile(fobj, ">i4", 1)[0] fnum = np.fromfile(fobj, ">i4", 1)[0] coords = np.fromfile(fobj, ">f4", vnum * 3).reshape(vnum, 3) faces = np.fromfile(fobj, ">i4", fnum * 3).reshape(fnum, 3) else: raise ValueError("File does not appear to be a Freesurfer surface") coords = coords.astype(np.float) # XXX: due to mayavi bug on mac 32bits return coords, faces def read_morph_data(filepath): """Read a Freesurfer morphometry data file. This function reads in what Freesurfer internally calls "curv" file types, (e.g. ?h. curv, ?h.thickness), but as that has the potential to cause confusion where "curv" also refers to the surface curvature values, we refer to these files as "morphometry" files with PySurfer. Parameters ---------- filepath : str Path to morphometry file Returns ------- curv : numpy array Vector representation of surface morpometry values """ with open(filepath, "rb") as fobj: magic = _fread3(fobj) if magic == 16777215: vnum = np.fromfile(fobj, ">i4", 3)[0] curv = np.fromfile(fobj, ">f4", vnum) else: vnum = magic _ = _fread3(fobj) curv = np.fromfile(fobj, ">i2", vnum) / 100 return curv def read_annot(filepath, orig_ids=False): """Read in a Freesurfer annotation from a .annot file. Parameters ---------- filepath : str Path to annotation file orig_ids : bool Whether to return the vertex ids as stored in the annotation file or the positional colortable ids Returns ------- labels : n_vtx numpy array Annotation id at each vertex ctab : numpy array RGBA + label id colortable array """ with open(filepath, "rb") as fobj: dt = ">i4" vnum = np.fromfile(fobj, dt, 1)[0] data = np.fromfile(fobj, dt, vnum * 2).reshape(vnum, 2) labels = data[:, 1] ctab_exists = np.fromfile(fobj, dt, 1)[0] if not ctab_exists: raise Exception('Color table not found in annotation file') n_entries = np.fromfile(fobj, dt, 1)[0] if n_entries > 0: length = np.fromfile(fobj, dt, 1)[0] orig_tab = np.fromfile(fobj, '>c', length) orig_tab = orig_tab[:-1] names = list() ctab = np.zeros((n_entries, 5), np.int) for i in xrange(n_entries): name_length = np.fromfile(fobj, dt, 1)[0] name = np.fromfile(fobj, "|S%d" % name_length, 1)[0] names.append(name) ctab[i, :4] = np.fromfile(fobj, dt, 4) ctab[i, 4] = (ctab[i, 0] + ctab[i, 1] * (2 ** 8) + ctab[i, 2] * (2 ** 16) + ctab[i, 3] * (2 ** 24)) else: ctab_version = -n_entries if ctab_version != 2: raise Exception('Color table version not supported') n_entries = np.fromfile(fobj, dt, 1)[0] ctab = np.zeros((n_entries, 5), np.int) length = np.fromfile(fobj, dt, 1)[0] _ = np.fromfile(fobj, "|S%d" % length, 1)[0] # Orig table path entries_to_read = np.fromfile(fobj, dt, 1)[0] names = list() for i in xrange(entries_to_read): _ = np.fromfile(fobj, dt, 1)[0] # Structure name_length = np.fromfile(fobj, dt, 1)[0] name = np.fromfile(fobj, "|S%d" % name_length, 1)[0] names.append(name) ctab[i, :4] = np.fromfile(fobj, dt, 4) ctab[i, 4] = (ctab[i, 0] + ctab[i, 1] * (2 ** 8) + ctab[i, 2] * (2 ** 16)) ctab[:, 3] = 255 if not orig_ids: ord = np.argsort(ctab[:, -1]) labels = ord[np.searchsorted(ctab[ord, -1], labels)] return labels, ctab, names def read_label(filepath): """Load in a Freesurfer .label file. Parameters ---------- filepath : str Path to label file Returns ------- label_array : numpy array Array with indices of vertices included in label """ label_array = np.loadtxt(filepath, dtype=np.int, skiprows=2, usecols=[0]) return label_array nipy-nibabel-d3c26be/nibabel/freesurfer/mghformat.py000066400000000000000000000445561177264777700227260ustar00rootroot00000000000000# emacs: -*- mode: python-mode; py-indent-offset: 4; indent-tabs-mode: nil -*- # vi: set ft=python sts=4 ts=4 sw=4 et: ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ## # # See COPYING file distributed along with the NiBabel package for the # copyright and license terms. # ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ## ''' Header reading / writing functions for mgh image format Author: Krish Subramaniam ''' from os.path import splitext import numpy as np from nibabel.volumeutils import allopen, array_to_file, array_from_file, \ Recoder from nibabel.spatialimages import HeaderDataError, ImageFileError, SpatialImage from nibabel.fileholders import FileHolder, copy_file_map from nibabel.filename_parser import types_filenames, TypesFilenamesError from nibabel.arrayproxy import ArrayProxy # mgh header # See http://surfer.nmr.mgh.harvard.edu/fswiki/FsTutorial/MghFormat DATA_OFFSET = 284 # Note that mgh data is strictly big endian ( hence the > sign ) header_dtd = [ ('version', '>i4'), ('dims', '>i4', (4,)), ('type', '>i4'), ('dof', '>i4'), ('goodRASFlag', '>i2'), ('delta', '>f4', (3,)), ('Mdc', '>f4', (3, 3)), ('Pxyz_c', '>f4', (3,)) ] # Optional footer. Also has more stuff after this, optionally footer_dtd = [ ('mrparms', '>f4', (4,)) ] header_dtype = np.dtype(header_dtd) footer_dtype = np.dtype(footer_dtd) hf_dtype = np.dtype(header_dtd + footer_dtd) # caveat: Note that it's ambiguous to get the code given the bytespervoxel # caveat 2: Note that the bytespervox you get is in str ( not an int) _dtdefs = ( # code, conversion function, dtype, bytes per voxel (0, 'uint8', '>u1', '1', 'MRI_UCHAR', np.uint8, np.dtype(np.uint8), np.dtype(np.uint8).newbyteorder('>')), (4, 'int16', '>i2', '2', 'MRI_SHORT', np.int16, np.dtype(np.int16), np.dtype(np.int16).newbyteorder('>')), (1, 'int32', '>i4', '4', 'MRI_INT', np.int32, np.dtype(np.int32), np.dtype(np.int32).newbyteorder('>')), (3, 'float', '>f4', '4', 'MRI_FLOAT', np.float32, np.dtype(np.float32), np.dtype(np.float32).newbyteorder('>'))) # make full code alias bank, including dtype column data_type_codes = Recoder(_dtdefs, fields=('code', 'label', 'dtype', 'bytespervox', 'mritype', 'np_dtype1', 'np_dtype2', 'numpy_dtype')) class MGHError(Exception): """Exception for MGH format related problems. To be raised whenever MGH is not happy, or we are not happy with MGH. """ pass class MGHHeader(object): ''' The header also consists of the footer data which MGH places after the data chunk. ''' # Copies of module-level definitions template_dtype = hf_dtype _hdrdtype = header_dtype _ftrdtype = footer_dtype _data_type_codes = data_type_codes def __init__(self, binaryblock=None, check=True): ''' Initialize header from binary data block Parameters ---------- binaryblock : {None, string} optional binary block to set into header. By default, None, in which case we insert the default empty header block check : bool, optional Whether to check content of header in initialization. Default is True. ''' if binaryblock is None: self._header_data = self._empty_headerdata() return # check size if len(binaryblock) != self.template_dtype.itemsize: raise HeaderDataError('Binary block is wrong size') hdr = np.ndarray(shape=(), dtype=self.template_dtype, buffer=binaryblock) #if goodRASFlag, discard delta, Mdc and c_ras stuff if int(hdr['goodRASFlag']) < 0: hdr = self._set_affine_default(hdr) self._header_data = hdr.copy() if check: self.check_fix() return def __str__(self): ''' Print the MGH header object information ''' txt = [] txt.append(str(self.__class__)) txt.append('Dims: ' + str(self.get_data_shape())) code = int(self._header_data['type']) txt.append('MRI Type: ' + self._data_type_codes.mritype[code]) txt.append('goodRASFlag: ' + str(self._header_data['goodRASFlag'])) txt.append('delta: ' + str(self._header_data['delta'])) txt.append('Mdc: ') txt.append(str(self._header_data['Mdc'])) txt.append('Pxyz_c: ' + str(self._header_data['Pxyz_c'])) txt.append('mrparms: ' + str(self._header_data['mrparms'])) return '\n'.join(txt) def __getitem__(self, item): ''' Return values from header data ''' return self._header_data[item] def __setitem__(self, item, value): ''' Set values in header data ''' self._header_data[item] = value def __iter__(self): return iter(self.keys()) def keys(self): ''' Return keys from header data''' return list(self.template_dtype.names) def values(self): ''' Return values from header data''' data = self._header_data return [data[key] for key in self.template_dtype.names] def items(self): ''' Return items from header data''' return zip(self.keys(), self.values()) @classmethod def from_header(klass, header=None, check=True): ''' Class method to create MGH header from another MGH header ''' # own type, return copy if type(header) == klass: obj = header.copy() if check: obj.check_fix() return obj # not own type, make fresh header instance obj = klass(check=check) return obj @classmethod def from_fileobj(klass, fileobj, check=True): ''' classmethod for loading a MGH fileobject ''' # We need the following hack because MGH data stores header information # after the data chunk too. We read the header initially, deduce the # dimensions from the header, skip over and then read the footer # information hdr_str = fileobj.read(klass._hdrdtype.itemsize) hdr_str_to_np = np.ndarray(shape=(), dtype=klass._hdrdtype, buffer=hdr_str) if not np.all(hdr_str_to_np['dims']): raise MGHError('Dimensions of the data should be non-zero') tp = int(hdr_str_to_np['type']) fileobj.seek(DATA_OFFSET + \ int(klass._data_type_codes.bytespervox[tp]) * \ np.prod(hdr_str_to_np['dims'])) ftr_str = fileobj.read(klass._ftrdtype.itemsize) return klass(hdr_str + ftr_str, check) @property def binaryblock(self): ''' binary block of data as string Returns ------- binaryblock : string string giving binary data block ''' return self._header_data.tostring() def copy(self): ''' Return copy of header ''' return self.__class__(self.binaryblock, check=False) pass def check_fix(self): ''' Pass. maybe for now''' pass def get_affine(self): ''' Get the affine transform from the header information. MGH format doesn't store the transform directly. Instead it's gleaned from the zooms ( delta ), direction cosines ( Mdc ), RAS centers ( Pxyz_c ) and the dimensions. ''' hdr = self._header_data d = np.diag(hdr['delta']) pcrs_c = hdr['dims'][:3] / 2.0 Mdc = hdr['Mdc'].T pxyz_0 = hdr['Pxyz_c'] - np.dot(Mdc, np.dot(d, pcrs_c)) M = np.eye(4, 4) M[0:3, 0:3] = np.dot(Mdc, d) M[0:3, 3] = pxyz_0.T return M def get_vox2ras(self): '''return the get_affine() ''' return self.get_affine() def get_ras2vox(self): '''return the inverse get_affine() ''' return np.linalg.inv(self.get_affine()) def get_data_dtype(self): ''' Get numpy dtype for MGH data For examples see ``set_data_dtype`` ''' code = int(self._header_data['type']) dtype = self._data_type_codes.numpy_dtype[code] return dtype def set_data_dtype(self, datatype): ''' Set numpy dtype for data from code or dtype or type ''' try: code = self._data_type_codes[datatype] except KeyError: raise MGHError('datatype dtype "%s" not recognized' % datatype) self._header_data['type'] = code def get_zooms(self): ''' Get zooms from header Returns ------- z : tuple tuple of header zoom values ''' hdr = self._header_data zooms = hdr['delta'] return tuple(zooms[:]) def set_zooms(self, zooms): ''' Set zooms into header fields See docstring for ``get_zooms`` for examples ''' hdr = self._header_data zooms = np.asarray(zooms) if len(zooms) != len(hdr['delta']): raise HeaderDataError('Expecting %d zoom values for ndim' % hdr['delta']) if np.any(zooms < 0): raise HeaderDataError('zooms must be positive') delta = hdr['delta'] delta[:] = zooms[:] def get_data_shape(self): ''' Get shape of data ''' dims = self._header_data['dims'][:] # If last dimension (nframes) is 1, remove it because # we want to maintain 3D and it's redundant if int(dims[-1]) == 1: dims = dims[:-1] return tuple(int(d) for d in dims) def set_data_shape(self, shape): ''' Set shape of data Parameters ---------- shape : sequence sequence of integers specifying data array shape ''' dims = self._header_data['dims'] # If len(dims) is 3, add a dimension. MGH header always # needs 4 dimensions. if len(shape) == 3: shape = list(shape) shape.append(1) shape = tuple(shape) dims[:] = shape self._header_data['delta'][:] = 1.0 def get_data_bytespervox(self): ''' Get the number of bytes per voxel of the data ''' return int(self._data_type_codes.bytespervox[ \ int(self._header_data['type'])]) def get_data_size(self): ''' Get the number of bytes the data chunk occupies. ''' return self.get_data_bytespervox() * np.prod(self._header_data['dims']) def get_data_offset(self): ''' Return offset into data file to read data ''' return DATA_OFFSET def get_footer_offset(self): ''' Return offset where the footer resides. Occurs immediately after the data chunk. ''' return self.get_data_offset() + self.get_data_size() def data_from_fileobj(self, fileobj): ''' Read data array from `fileobj` Parameters ---------- fileobj : file-like Must be open, and implement ``read`` and ``seek`` methods Returns ------- arr : ndarray data array ''' dtype = self.get_data_dtype() shape = self.get_data_shape() offset = self.get_data_offset() return array_from_file(shape, dtype, fileobj, offset) def _empty_headerdata(self): ''' Return header data for empty header ''' dt = self.template_dtype hdr_data = np.zeros((), dtype=dt) hdr_data['version'] = 1 hdr_data['dims'][:] = np.array([1, 1, 1, 1]) hdr_data['type'] = 3 hdr_data['goodRASFlag'] = 1 hdr_data['delta'][:] = np.array([1, 1, 1]) hdr_data['Mdc'][0][:] = np.array([-1, 0, 0]) # x_ras hdr_data['Mdc'][1][:] = np.array([0, 0, -1]) # y_ras hdr_data['Mdc'][2][:] = np.array([0, 1, 0]) # z_ras hdr_data['Pxyz_c'] = np.array([0, 0, 0]) # c_ras hdr_data['mrparms'] = np.array([0, 0, 0, 0]) return hdr_data def _set_format_specifics(self): ''' Set MGH specific header stuff''' self._header_data['version'] = 1 def _set_affine_default(self, hdr): ''' If goodRASFlag is 0, return the default delta, Mdc and Pxyz_c ''' hdr['delta'][:] = np.array([1, 1, 1]) hdr['Mdc'][0][:] = np.array([-1, 0, 0]) # x_ras hdr['Mdc'][1][:] = np.array([0, 0, -1]) # y_ras hdr['Mdc'][2][:] = np.array([0, 1, 0]) # z_ras hdr['Pxyz_c'][:] = np.array([0, 0, 0]) # c_ras return hdr def writehdr_to(self, fileobj): ''' Write header to fileobj Write starts at the beginning. Parameters ---------- fileobj : file-like object Should implement ``write`` and ``seek`` method Returns ------- None ''' hdr_nofooter = np.ndarray((), dtype=self._hdrdtype, buffer=self.binaryblock) # goto the very beginning of the file-like obj fileobj.seek(0) fileobj.write(hdr_nofooter.tostring()) def writeftr_to(self, fileobj): ''' Write footer to fileobj Footer data is located after the data chunk. So move there and write. Parameters ---------- fileobj : file-like object Should implement ``write`` and ``seek`` method Returns ------- None ''' ftr_loc_in_hdr = len(self.binaryblock) - self._ftrdtype.itemsize ftr_nd = np.ndarray((), dtype=self._ftrdtype, buffer=self.binaryblock, offset=ftr_loc_in_hdr) fileobj.seek(self.get_footer_offset()) fileobj.write(ftr_nd.tostring()) class MGHImage(SpatialImage): header_class = MGHHeader files_types = (('image', '.mgh'),) _compressed_exts = (('.gz',)) ImageArrayProxy = ArrayProxy def get_header(self): ''' Return the MGH header given the MGHImage''' return self._header @classmethod def filespec_to_file_map(klass, filespec): """ Check for compressed .mgz format, then .mgh format """ if splitext(filespec)[1] == '.mgz': return dict(image=FileHolder(filename=filespec)) return super(MGHImage, klass).filespec_to_file_map(filespec) @classmethod def from_file_map(klass, file_map): '''Load image from `file_map` Parameters ---------- file_map : None or mapping, optional files mapping. If None (default) use object's ``file_map`` attribute instead ''' mghf = file_map['image'].get_prepare_fileobj('rb') header = klass.header_class.from_fileobj(mghf) affine = header.get_affine() hdr_copy = header.copy() data = klass.ImageArrayProxy(mghf, hdr_copy) img = klass(data, affine, header, file_map=file_map) img._load_cache = {'header': hdr_copy, 'affine': affine.copy(), 'file_map': copy_file_map(file_map)} return img def to_file_map(self, file_map=None): ''' Write image to `file_map` or contained ``self.file_map`` Parameters ---------- file_map : None or mapping, optional files mapping. If None (default) use object's ``file_map`` attribute instead ''' if file_map is None: file_map = self.file_map data = self.get_data() self.update_header() hdr = self.get_header() mghf = file_map['image'].get_prepare_fileobj('wb') self._write_header(mghf, hdr) self._write_data(mghf, data, hdr) self._write_footer(mghf, hdr) # if the file_map points to a filename, close it if file_map['image'].fileobj is None: # was filename mghf.close() self._header = hdr self.file_map = file_map def _write_header(self, mghfile, header): ''' Utility routine to write header Parameters ---------- mghfile : file-like file-like object implementing ``write``, open for writing header : header object ''' header.writehdr_to(mghfile) def _write_data(self, mghfile, data, header): ''' Utility routine to write image Parameters ---------- mghfile : file-like file-like object implementing ``seek`` or ``tell``, and ``write`` data : array-like array to write header : analyze-type header object header ''' shape = header.get_data_shape() if data.shape != shape: raise HeaderDataError('Data should be shape (%s)' % ', '.join(str(s) for s in shape)) offset = header.get_data_offset() out_dtype = header.get_data_dtype() array_to_file(data, mghfile, out_dtype, offset) def _write_footer(self, mghfile, header): ''' Utility routine to write header. This write the footer data which occurs after the data chunk in mgh file Parameters ---------- mghfile : file-like file-like object implementing ``write``, open for writing header : header object ''' header.writeftr_to(mghfile) def get_affine(self): ''' Return the affine transform''' return self._header.get_vox2ras() def update_header(self): ''' Harmonize header with image data and affine ''' hdr = self._header if not self._data is None: hdr.set_data_shape(self._data.shape) if not self._affine is None: # for more information, go through save_mgh.m in FreeSurfer dist MdcD = self._affine[:3, :3] delta = np.sqrt(np.sum(MdcD * MdcD, axis=0)) Mdc = MdcD / np.tile(delta, (3, 1)) Pcrs_c = np.array([0, 0, 0, 1], dtype=np.float) Pcrs_c[:3] = np.array([self._data.shape[0], self._data.shape[1], self._data.shape[2]], dtype=np.float) / 2.0 Pxyz_c = np.dot(self._affine, Pcrs_c) hdr['delta'][:] = delta hdr['Mdc'][:, :] = Mdc.T hdr['Pxyz_c'][:] = Pxyz_c[:3] load = MGHImage.load save = MGHImage.instance_to_filename nipy-nibabel-d3c26be/nibabel/freesurfer/tests/000077500000000000000000000000001177264777700215145ustar00rootroot00000000000000nipy-nibabel-d3c26be/nibabel/freesurfer/tests/__init__.py000066400000000000000000000000001177264777700236130ustar00rootroot00000000000000nipy-nibabel-d3c26be/nibabel/freesurfer/tests/test_io.py000066400000000000000000000036541177264777700235440ustar00rootroot00000000000000import os from os.path import join as pjoin from nose.tools import assert_true import numpy as np from numpy.testing import assert_equal from .. import read_geometry, read_morph_data, read_annot, read_label have_freesurfer = True if 'SUBJECTS_DIR' not in os.environ: # Test suite relies on the definition of SUBJECTS_DIR have_freesurfer = False freesurfer_test = np.testing.dec.skipif(not have_freesurfer, 'SUBJECTS_DIR not set') if have_freesurfer: subj_dir = os.environ["SUBJECTS_DIR"] subject_id = 'fsaverage' data_path = pjoin(subj_dir, subject_id) @freesurfer_test def test_geometry(): """Test IO of .surf""" surf_path = pjoin(data_path, "surf", "%s.%s" % ("lh", "inflated")) coords, faces = read_geometry(surf_path) assert_equal(0, faces.min()) assert_equal(coords.shape[0], faces.max() + 1) # Test quad with sphere surf_path = pjoin(data_path, "surf", "%s.%s" % ("lh", "sphere")) coords, faces = read_geometry(surf_path) assert_equal(0, faces.min()) assert_equal(coords.shape[0], faces.max() + 1) @freesurfer_test def test_morph_data(): """Test IO of morphometry data file (eg. curvature).""" curv_path = pjoin(data_path, "surf", "%s.%s" % ("lh", "curv")) curv = read_morph_data(curv_path) assert_true(-1.0 < curv.min() < 0) assert_true(0 < curv.max() < 1.0) @freesurfer_test def test_annot(): """Test IO of .annot""" annots = ['aparc', 'aparc.a2005s'] for a in annots: annot_path = pjoin(data_path, "label", "%s.%s.annot" % ("lh", a)) labels, ctab, names = read_annot(annot_path) assert_true(labels.shape == (163842, )) assert_true(ctab.shape == (len(names), 5)) @freesurfer_test def test_label(): """Test IO of .label""" label_path = pjoin(data_path, "label", "lh.BA1.label") label = read_label(label_path) # XXX : test more assert_true(np.all(label > 0)) nipy-nibabel-d3c26be/nibabel/freesurfer/tests/test_mghformat.py000066400000000000000000000120051177264777700251070ustar00rootroot00000000000000# emacs: -*- mode: python-mode; py-indent-offset: 4; indent-tabs-mode: nil -*- # vi: set ft=python sts=4 ts=4 sw=4 et: ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ## # # See COPYING file distributed along with the NiBabel package for the # copyright and license terms. # ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ## '''Tests for mghformat reading writing''' from __future__ import with_statement import os import numpy as np from .. import load, save, MGHImage from ..mghformat import MGHError from ...tmpdirs import InTemporaryDirectory from ...testing import data_path from numpy.testing import assert_equal, assert_array_equal, \ assert_array_almost_equal, assert_almost_equal, assert_raises # sample voxel to ras matrix v2r = np.array([[1, 2, 3, -13], [2, 3, 1, -11.5], [3, 1, 2, -11.5], [0, 0, 0, 1]], dtype=np.float32) def test_read_mgh(): # test.mgz was generated by the following command # mri_volsynth --dim 3 4 5 2 --vol test.mgz # --cdircos 1 2 3 --rdircos 2 3 1 --sdircos 3 1 2 # mri_volsynth is a FreeSurfer command mgz_path = os.path.join(data_path, 'test.mgz') mgz = load(mgz_path) # header h = mgz.get_header() assert_equal(h['version'], 1) assert_equal(h['type'], 3) assert_equal(h['dof'], 0) assert_equal(h['goodRASFlag'], 1) assert_array_equal(h['dims'], [3, 4, 5, 2]) assert_array_almost_equal(h['mrparms'], [2.0, 0.0, 0.0, 0.0]) assert_array_almost_equal(h.get_vox2ras(), v2r) # data. will be different for your own mri_volsynth invocation v = mgz.get_data() assert_almost_equal(v[1, 2, 3, 0], -0.3047, 4) assert_almost_equal(v[1, 2, 3, 1], 0.0018, 4) def test_write_mgh(): # write our data to a tmp file v = np.arange(120) v = v.reshape((5, 4, 3, 2)).astype(np.float32) # form a MGHImage object using data and vox2ras matrix img = MGHImage(v, v2r) with InTemporaryDirectory(): save(img, 'tmpsave.mgz') # read from the tmp file and see if it checks out mgz = load('tmpsave.mgz') h = mgz.get_header() dat = mgz.get_data() # Delete loaded image to allow file deletion by windows del mgz # header assert_equal(h['version'], 1) assert_equal(h['type'], 3) assert_equal(h['dof'], 0) assert_equal(h['goodRASFlag'], 1) assert_array_equal(h['dims'], [5, 4, 3, 2]) assert_array_almost_equal(h['mrparms'], [0.0, 0.0, 0.0, 0.0]) assert_array_almost_equal(h.get_vox2ras(), v2r) # data assert_almost_equal(dat, v, 7) def test_write_noaffine_mgh(): # now just save the image without the vox2ras transform # and see if it uses the default values to save v = np.ones((7, 13, 3, 22)).astype(np.uint8) # form a MGHImage object using data # and the default affine matrix (Note the "None") img = MGHImage(v, None) with InTemporaryDirectory(): save(img, 'tmpsave.mgz') # read from the tmp file and see if it checks out mgz = load('tmpsave.mgz') h = mgz.get_header() # Delete loaded image to allow file deletion by windows del mgz # header assert_equal(h['version'], 1) assert_equal(h['type'], 0) # uint8 for mgh assert_equal(h['dof'], 0) assert_equal(h['goodRASFlag'], 1) assert_array_equal(h['dims'], [7, 13, 3, 22]) assert_array_almost_equal(h['mrparms'], [0.0, 0.0, 0.0, 0.0]) # important part -- whether default affine info is stored ex_mdc = np.array([[-1, 0, 0], [0, 0, -1], [0, 1, 0]], dtype=np.float32) assert_array_almost_equal(h['Mdc'], ex_mdc) ex_pxyzc = np.array([0, 0, 0], dtype=np.float32) assert_array_almost_equal(h['Pxyz_c'], ex_pxyzc) def bad_dtype_mgh(): ''' This function raises an MGHError exception because uint16 is not a valid MGH datatype. ''' # try to write an unsigned short and make sure it # raises MGHError v = np.ones((7, 13, 3, 22)).astype(np.uint16) # form a MGHImage object using data # and the default affine matrix (Note the "None") img = MGHImage(v, None) with TemporaryDirectory() as tmpdir: save(img, os.path.join(tmpdir, 'tmpsave.mgz')) # read from the tmp file and see if it checks out mgz = load(os.path.join(tmpdir, 'tmpsave.mgz')) def test_bad_dtype_mgh(): # Now test the above function assert_raises(MGHError, bad_dtype_mgh) def test_filename_exts(): # Test acceptable filename extensions v = np.ones((7, 13, 3, 22)).astype(np.uint8) # form a MGHImage object using data # and the default affine matrix (Note the "None") img = MGHImage(v, None) # Check if these extensions allow round trip for ext in ('.mgh', '.mgz', '.mgh.gz'): with InTemporaryDirectory(): fname = 'tmpname' + ext save(img, fname) # read from the tmp file and see if it checks out img_back = load(fname) assert_array_equal(img_back.get_data(), v) del img_back nipy-nibabel-d3c26be/nibabel/funcs.py000066400000000000000000000144041177264777700176750ustar00rootroot00000000000000 # emacs: -*- mode: python-mode; py-indent-offset: 4; indent-tabs-mode: nil -*- # vi: set ft=python sts=4 ts=4 sw=4 et: ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ## # # See COPYING file distributed along with the NiBabel package for the # copyright and license terms. # ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ## ''' Processor functions for images ''' import numpy as np from .orientations import (io_orientation, inv_ornt_aff, flip_axis, apply_orientation, OrientationError) from .loadsave import load def squeeze_image(img): ''' Return image, remove axes length 1 at end of image shape For example, an image may have shape (10,20,30,1,1). In this case squeeze will result in an image with shape (10,20,30). See doctests for further description of behavior. Parameters ---------- img : ``SpatialImage`` Returns ------- squeezed_img : ``SpatialImage`` Copy of img, such that data, and data shape have been squeezed, for dimensions > 3rd, and at the end of the shape list Examples -------- >>> import nibabel as nf >>> shape = (10,20,30,1,1) >>> data = np.arange(np.prod(shape)).reshape(shape) >>> affine = np.eye(4) >>> img = nf.Nifti1Image(data, affine) >>> img.shape (10, 20, 30, 1, 1) >>> img2 = squeeze_image(img) >>> img2.shape (10, 20, 30) If the data are 3D then last dimensions of 1 are ignored >>> shape = (10,1,1) >>> data = np.arange(np.prod(shape)).reshape(shape) >>> img = nf.ni1.Nifti1Image(data, affine) >>> img.shape (10, 1, 1) >>> img2 = squeeze_image(img) >>> img2.shape (10, 1, 1) Only *final* dimensions of 1 are squeezed >>> shape = (1, 1, 5, 1, 2, 1, 1) >>> data = data.reshape(shape) >>> img = nf.ni1.Nifti1Image(data, affine) >>> img.shape (1, 1, 5, 1, 2, 1, 1) >>> img2 = squeeze_image(img) >>> img2.shape (1, 1, 5, 1, 2) ''' klass = img.__class__ shape = img.shape slen = len(shape) if slen < 4: return klass.from_image(img) for bdim in shape[3::][::-1]: if bdim == 1: slen -= 1 else: break if slen == len(shape): return klass.from_image(img) shape = shape[:slen] data = img.get_data() data = data.reshape(shape) return klass(data, img.get_affine(), img.get_header(), img.extra) def concat_images(images, check_affines=True): ''' Concatenate images in list to single image, along last dimension Parameters ---------- images : sequence sequence of ``SpatialImage`` or of filenames\s check_affines : {True, False}, optional If True, then check that all the affines for `images` are nearly the same, raising a ``ValueError`` otherwise. Default is True Returns ------- concat_img : ``SpatialImage`` New image resulting from concatenating `images` across last dimension ''' n_imgs = len(images) img0 = images[0] is_filename = False if not hasattr(img0, 'get_data'): img0 = load(img0) is_filename = True i0shape = img0.shape affine = img0.get_affine() header = img0.get_header() out_shape = (n_imgs, ) + i0shape out_data = np.empty(out_shape) for i, img in enumerate(images): if is_filename: img = load(img) if check_affines: if not np.all(img.get_affine() == affine): raise ValueError('Affines do not match') out_data[i] = img.get_data() out_data = np.rollaxis(out_data, 0, len(i0shape)+1) klass = img0.__class__ return klass(out_data, affine, header) def four_to_three(img): ''' Create 3D images from 4D image by slicing over last axis Parameters ---------- img : image 4D image instance of some class with methods ``get_data``, ``get_header`` and ``get_affine``, and a class constructor allowing Klass(data, affine, header) Returns ------- imgs : list list of 3D images ''' arr = img.get_data() header = img.get_header() affine = img.get_affine() image_maker = img.__class__ if arr.ndim != 4: raise ValueError('Expecting four dimensions') imgs = [] for i in range(arr.shape[3]): arr3d = arr[..., i] img3d = image_maker(arr3d, affine, header) imgs.append(img3d) return imgs def as_closest_canonical(img, enforce_diag=False): ''' Return `img` with data reordered to be closest to canonical Canonical order is the ordering of the output axes. Parameters ---------- img : ``spatialimage`` enforce_diag : {False, True}, optional If True, before transforming image, check if the resulting image affine will be close to diagonal, and if not, raise an error Returns ------- canonical_img : ``spatialimage`` Version of `img` where the underlying array may have been reordered and / or flipped so that axes 0,1,2 are those axes in the input data that are, respectively, closest to the output axis orientation. We modify the affine accordingly. If `img` is already has the correct data ordering, we just return `img` unmodified. ''' aff = img.get_affine() ornt = io_orientation(aff) if np.all(ornt == [[0, 1], [1,1], [2,1]]): # canonical already # however, the affine may not be diagonal if enforce_diag and not _aff_is_diag(aff): raise OrientationError('Transformed affine is not diagonal') return img shape = img.shape t_aff = inv_ornt_aff(ornt, shape) out_aff = np.dot(aff, t_aff) # check if we are going to end up with something diagonal if enforce_diag and not _aff_is_diag(aff): raise OrientationError('Transformed affine is not diagonal') # we need to transform the data arr = img.get_data() t_arr = apply_orientation(arr, ornt) return img.__class__(t_arr, out_aff, img.get_header()) def _aff_is_diag(aff): ''' Utility function returning True if affine is nearly diagonal ''' rzs_aff = aff[:3, :3] return np.allclose(rzs_aff, np.diag(np.diag(rzs_aff))) nipy-nibabel-d3c26be/nibabel/gifti/000077500000000000000000000000001177264777700173045ustar00rootroot00000000000000nipy-nibabel-d3c26be/nibabel/gifti/__init__.py000066400000000000000000000012711177264777700214160ustar00rootroot00000000000000# emacs: -*- mode: python-mode; py-indent-offset: 4; indent-tabs-mode: nil -*- # vi: set ft=python sts=4 ts=4 sw=4 et: ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ## # # See COPYING file distributed along with the NiBabel package for the # copyright and license terms. # ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ## """GIfTI format IO .. currentmodule:: nibabel.gifti .. autosummary:: :toctree: ../generated giftiio gifti """ from .giftiio import read, write from .gifti import (GiftiMetaData, GiftiNVPairs, GiftiLabelTable, GiftiLabel, GiftiCoordSystem, data_tag, GiftiDataArray, GiftiImage) nipy-nibabel-d3c26be/nibabel/gifti/gifti.py000066400000000000000000000370051177264777700207650ustar00rootroot00000000000000# emacs: -*- mode: python-mode; py-indent-offset: 4; indent-tabs-mode: nil -*- # vi: set ft=python sts=4 ts=4 sw=4 et: ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ## # # See COPYING file distributed along with the NiBabel package for the # copyright and license terms. # ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ## import sys from StringIO import StringIO if sys.version_info[0] >= 3: from io import BytesIO else: BytesIO = StringIO import numpy as np from ..nifti1 import data_type_codes, xform_codes, intent_codes from .util import (array_index_order_codes, gifti_encoding_codes, gifti_endian_codes, KIND2FMT) class GiftiMetaData(object): """ A list of GiftiNVPairs in stored in the list self.data """ def __init__(self, nvpair = None): self.data = [] if not nvpair is None: self.data.append(nvpair) @classmethod def from_dict(klass, data_dict): meda = klass() for k,v in data_dict.items(): nv = GiftiNVPairs(k, v) meda.data.append(nv) return meda def get_metadata(self): """ Returns metadata as dictionary """ self.data_as_dict = {} for ele in self.data: self.data_as_dict[ele.name] = ele.value return self.data_as_dict def to_xml(self): if len(self.data) == 0: return "\n" res = "\n" for ele in self.data: nvpair = """ \t \t \n""" % (ele.name, ele.value) res = res + nvpair res = res + "\n" return res def print_summary(self): print self.get_metadata() class GiftiNVPairs(object): name = str value = str def __init__(self, name = '', value = ''): self.name = name self.value = value class GiftiLabelTable(object): def __init__(self): self.labels = [] def get_labels_as_dict(self): self.labels_as_dict = {} for ele in self.labels: self.labels_as_dict[ele.key] = ele.label return self.labels_as_dict def to_xml(self): if len(self.labels) == 0: return "\n" res = "\n" for ele in self.labels: col = '' if not ele.red is None: col += ' Red="%s"' % str(ele.red) if not ele.green is None: col += ' Green="%s"' % str(ele.green) if not ele.blue is None: col += ' Blue="%s"' % str(ele.blue) if not ele.alpha is None: col += ' Alpha="%s"' % str(ele.alpha) lab = """\t\n""" % \ (str(ele.key), col, ele.label) res = res + lab res = res + "\n" return res def print_summary(self): print self.get_labels_as_dict() class GiftiLabel(object): key = int label = str # rgba # freesurfer examples seem not to conform # to datatype "NIFTI_TYPE_RGBA32" because they # are floats, not unsigned 32-bit integers red = float green = float blue = float alpha = float def __init__(self, key = 0, label = '', red = None,\ green = None, blue = None, alpha = None): self.key = key self.label = label self.red = red self.green = green self.blue = blue self.alpha = alpha def get_rgba(self): """ Returns RGBA as tuple """ return (self.red, self.green, self.blue, self.alpha) class GiftiCoordSystem(object): dataspace = int xformspace = int xform = np.ndarray # 4x4 numpy array def __init__(self, dataspace = 0, xformspace = 0, xform = None): self.dataspace = dataspace self.xformspace = xformspace if xform is None: # create identity matrix self.xform = np.identity(4) else: self.xform = xform def to_xml(self): if self.xform is None: return "\n" res = (""" \t \t\n""" % (xform_codes.niistring[self.dataspace], xform_codes.niistring[self.xformspace])) e = BytesIO() np.savetxt(e, self.xform, '%10.6f') e.seek(0) res = res + "\n" res = res + e.read().decode() e.close() res = res + "\n" res = res + "\n" return res def print_summary(self): print 'Dataspace: ', xform_codes.niistring[self.dataspace] print 'XFormSpace: ', xform_codes.niistring[self.xformspace] print 'Affine Transformation Matrix: \n', self.xform def data_tag(dataarray, encoding, datatype, ordering): """ Creates the data tag depending on the required encoding """ import base64 import zlib ord = array_index_order_codes.npcode[ordering] enclabel = gifti_encoding_codes.label[encoding] if enclabel == 'ASCII': c = BytesIO() # np.savetxt(c, dataarray, format, delimiter for columns) np.savetxt(c, dataarray, datatype, ' ') c.seek(0) da = c.read() elif enclabel == 'B64BIN': da = base64.encodestring(dataarray.tostring(ord)) elif enclabel == 'B64GZ': # first compress comp = zlib.compress(dataarray.tostring(ord)) da = base64.encodestring(comp) da = da.decode() elif enclabel == 'External': raise NotImplementedError("In what format are the external files?") else: da = '' return ""+da+"\n" class GiftiDataArray(object): # These are for documentation only; we don't use these class variables intent = int datatype = int ind_ord = int num_dim = int dims = list encoding = int endian = int ext_fname = str ext_offset = str data = np.ndarray coordsys = GiftiCoordSystem meta = GiftiMetaData def __init__(self, data=None): self.data = data self.dims = [] self.meta = GiftiMetaData() self.coordsys = GiftiCoordSystem() self.ext_fname = '' self.ext_offset = '' @classmethod def from_array(klass, darray, intent, datatype = None, encoding = "GIFTI_ENCODING_B64GZ", endian = sys.byteorder, coordsys = None, ordering = "C", meta = None): """ Creates a new Gifti data array Parameters ---------- darray : ndarray NumPy data array intent : string NIFTI intent code, see nifti1.intent_codes datatype : None or string, optional NIFTI data type codes, see nifti1.data_type_codes If None, the datatype of the NumPy array is taken. encoding : string, optionaal Encoding of the data, see util.gifti_encoding_codes; default: GIFTI_ENCODING_B64GZ endian : string, optional The Endianness to store the data array. Should correspond to the machine endianness. default: system byteorder coordsys : GiftiCoordSystem, optional If None, a identity transformation is taken. ordering : string, optional The ordering of the array. see util.array_index_order_codes; default: RowMajorOrder - C ordering meta : None or dict, optional A dictionary for metadata information. If None, gives empty dict. Returns ------- da : instance of our own class """ if meta is None: meta = {} cda = klass(darray) cda.num_dim = len(darray.shape) cda.dims = list(darray.shape) if datatype == None: cda.datatype = data_type_codes.code[darray.dtype] else: cda.datatype = data_type_codes.code[datatype] cda.intent = intent_codes.code[intent] cda.encoding = gifti_encoding_codes.code[encoding] cda.endian = gifti_endian_codes.code[endian] if not coordsys is None: cda.coordsys = coordsys cda.ind_ord = array_index_order_codes.code[ordering] cda.meta = GiftiMetaData.from_dict(meta) return cda def to_xml(self): # fix endianness to machine endianness self.endian = gifti_endian_codes.code[sys.byteorder] result = "" result += self.to_xml_open() # write metadata if not self.meta is None: result += self.meta.to_xml() # write coord sys if not self.coordsys is None: result += self.coordsys.to_xml() # write data array depending on the encoding dt_kind = data_type_codes.dtype[self.datatype].kind result += data_tag(self.data, gifti_encoding_codes.specs[self.encoding], KIND2FMT[dt_kind], self.ind_ord) result = result + self.to_xml_close() return result def to_xml_open(self): out = """\n""" di = "" for i, n in enumerate(self.dims): di = di + '\tDim%s=\"%s\"\n' % (str(i), str(n)) return out % (intent_codes.niistring[self.intent], \ data_type_codes.niistring[self.datatype], \ array_index_order_codes.label[self.ind_ord], \ str(self.num_dim), \ str(di), \ gifti_encoding_codes.specs[self.encoding], \ gifti_endian_codes.giistring[self.endian], \ self.ext_fname, self.ext_offset, ) def to_xml_close(self): return "\n" def print_summary(self): print 'Intent: ', intent_codes.niistring[self.intent] print 'DataType: ', data_type_codes.niistring[self.datatype] print 'ArrayIndexingOrder: ', array_index_order_codes.label[self.ind_ord] print 'Dimensionality: ', self.num_dim print 'Dimensions: ', self.dims print 'Encoding: ', gifti_encoding_codes.specs[self.encoding] print 'Endian: ', gifti_endian_codes.giistring[self.endian] print 'ExternalFileName: ', self.ext_fname print 'ExternalFileOffset: ', self.ext_offset if not self.coordsys == None: print '----' print 'Coordinate System:' print self.coordsys.print_summary() def get_metadata(self): """ Returns metadata as dictionary """ return self.meta.get_metadata() class GiftiImage(object): numDA = int version = str filename = str def __init__(self, meta = None, labeltable = None, darrays = None, version = "1.0"): if darrays is None: darrays = [] self.darrays = darrays if meta is None: self.meta = GiftiMetaData() else: self.meta = meta if labeltable is None: self.labeltable = GiftiLabelTable() else: self.labeltable = labeltable self.numDA = len(self.darrays) self.version = version # @classmethod # def from_array(cls): # pass #def GiftiImage_fromarray(data, intent = GiftiIntentCode.NIFTI_INTENT_NONE, encoding=GiftiEncoding.GIFTI_ENCODING_B64GZ, endian = GiftiEndian.GIFTI_ENDIAN_LITTLE): # """ Returns a GiftiImage from a Numpy array with a given intent code and # encoding """ # @classmethod # def from_vertices_and_triangles(cls): # pass # def from_vertices_and_triangles(cls, vertices, triangles, coordsys = None, \ # encoding = GiftiEncoding.GIFTI_ENCODING_B64GZ,\ # endian = GiftiEndian.GIFTI_ENDIAN_LITTLE): # """ Returns a GiftiImage from two numpy arrays representing the vertices # and the triangles. Additionally defining the coordinate system and encoding """ def get_labeltable(self): return self.labeltable def set_labeltable(self, labeltable): """ Set the labeltable for this GiftiImage Parameters ---------- labeltable : GiftiLabelTable """ if isinstance(labeltable, GiftiLabelTable): self.labeltable = labeltable else: print "Not a valid GiftiLabelTable instance" def get_metadata(self): return self.meta def set_metadata(self, meta): """ Set the metadata for this GiftiImage Parameters ---------- meta : GiftiMetaData Returns ------- None """ if isinstance(meta, GiftiMetaData): self.meta = meta print "New Metadata set. Be aware of changing coordinate transformation!" else: print "Not a valid GiftiMetaData instance" def add_gifti_data_array(self, dataarr): """ Adds a data array to the GiftiImage Parameters ---------- dataarr : GiftiDataArray """ if isinstance(dataarr, GiftiDataArray): self.darrays.append(dataarr) self.numDA += 1 else: print "dataarr paramater must be of tzpe GiftiDataArray" def remove_gifti_data_array(self, ith): """ Removes the ith data array element from the GiftiImage """ self.darrays.pop(ith) self.numDA -= 1 def remove_gifti_data_array_by_intent(self, intent): """ Removes all the data arrays with the given intent type """ intent2remove = intent_codes.code[intent] for dele in self.darrays: if dele.intent == intent2remove: self.darrays.remove(dele) self.numDA -= 1 def getArraysFromIntent(self, intent): """ Returns a a list of GiftiDataArray elements matching the given intent """ it = intent_codes.code[intent] return [x for x in self.darrays if x.intent == it] def print_summary(self): print '----start----' print 'Source filename: ', self.filename print 'Number of data arrays: ', self.numDA print 'Version: ', self.version if not self.meta == None: print '----' print 'Metadata:' print self.meta.print_summary() if not self.labeltable == None: print '----' print 'Labeltable:' print self.labeltable.print_summary() for i, da in enumerate(self.darrays): print '----' print 'DataArray %s:' % i print da.print_summary() print '----end----' def to_xml(self): """ Return XML corresponding to image content """ res = """ \n""" % (self.version, str(self.numDA)) if not self.meta is None: res += self.meta.to_xml() if not self.labeltable is None: res += self.labeltable.to_xml() for dar in self.darrays: res += dar.to_xml() res += "" return res nipy-nibabel-d3c26be/nibabel/gifti/giftiio.py000066400000000000000000000040161177264777700213110ustar00rootroot00000000000000# emacs: -*- mode: python-mode; py-indent-offset: 4; indent-tabs-mode: nil -*- # vi: set ft=python sts=4 ts=4 sw=4 et: ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ## # # See COPYING file distributed along with the NiBabel package for the # copyright and license terms. # ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ## # General Gifti Input - Output to and from the filesystem # Stephan Gerhard, Oktober 2010 ############## import os import codecs from . import parse_gifti_fast as gfp def read(filename): """ Load a Gifti image from a file Parameters ---------- filename : string The Gifti file to open, it has usually ending .gii Returns ------- img : GiftiImage Returns a GiftiImage """ if not os.path.isfile(filename): raise IOError("No such file or directory: '%s'" % filename) return gfp.parse_gifti_file(filename) def write(image, filename): """ Save the current image to a new file Parameters ---------- image : GiftiImage A GiftiImage instance to store filename : string Filename to store the Gifti file to Returns ------- None Notes ----- We write all files with utf-8 encoding, and specify this at the top of the XML file with the ``encoding`` attribute. The Gifti spec suggests using the following suffixes to your filename when saving each specific type of data: .gii Generic GIFTI File .coord.gii Coordinates .func.gii Functional .label.gii Labels .rgba.gii RGB or RGBA .shape.gii Shape .surf.gii Surface .tensor.gii Tensors .time.gii Time Series .topo.gii Topology The Gifti file is stored in endian convention of the current machine. """ # Our giftis are always utf-8 encoded - see GiftiImage.to_xml f = codecs.open(filename, 'wb', encoding='utf-8') f.write(image.to_xml()) f.close() nipy-nibabel-d3c26be/nibabel/gifti/parse_gifti_fast.py000066400000000000000000000315411177264777700231730ustar00rootroot00000000000000# emacs: -*- mode: python-mode; py-indent-offset: 4; indent-tabs-mode: nil -*- # vi: set ft=python sts=4 ts=4 sw=4 et: ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ## # # See COPYING file distributed along with the NiBabel package for the # copyright and license terms. # ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ## import base64 import sys import zlib from StringIO import StringIO from xml.parsers.expat import ParserCreate, ExpatError import numpy as np from ..nifti1 import data_type_codes, xform_codes, intent_codes from . import gifti as gi from .util import (array_index_order_codes, gifti_encoding_codes, gifti_endian_codes) DEBUG_PRINT = False def read_data_block(encoding, endian, ordering, datatype, shape, data): """ Tries to unzip, decode, parse the funny string data """ ord = array_index_order_codes.npcode[ordering] enclabel = gifti_encoding_codes.label[encoding] if enclabel == 'ASCII': # GIFTI_ENCODING_ASCII c = StringIO(data) da = np.loadtxt(c) da = da.astype(data_type_codes.type[datatype]) # independent of the endianness return da elif enclabel == 'B64BIN': # GIFTI_ENCODING_B64BIN dec = base64.decodestring(data.encode('ascii')) dt = data_type_codes.type[datatype] sh = tuple(shape) newarr = np.fromstring(dec, dtype = dt) if len(newarr.shape) != len(sh): newarr = newarr.reshape(sh, order = ord) elif enclabel == 'B64GZ': # GIFTI_ENCODING_B64GZ # convert to bytes array for python 3.2 # http://diveintopython3.org/strings.html#byte-arrays dec = base64.decodestring(data.encode('ascii')) zdec = zlib.decompress(dec) dt = data_type_codes.type[datatype] sh = tuple(shape) newarr = np.fromstring(zdec, dtype = dt) if len(newarr.shape) != len(sh): newarr = newarr.reshape(sh, order = ord) elif enclabel == 'External': # GIFTI_ENCODING_EXTBIN raise NotImplementedError("In what format are the external files?") else: return 0 # check if we need to byteswap required_byteorder = gifti_endian_codes.byteorder[endian] if (required_byteorder in ('big', 'little') and required_byteorder != sys.byteorder): newarr = newarr.byteswap() return newarr class Outputter(object): def __init__(self): self.initialize() def initialize(self): """ Initialize outputter """ # finite state machine stack self.fsm_state = [] # temporary constructs self.nvpair = None self.da = None self.coordsys = None self.lata = None self.label = None self.meta_global = None self.meta_da = None self.count_da = True # where to write CDATA: self.write_to = None self.img = None # Collecting char buffer fragments self._char_blocks = None def StartElementHandler(self, name, attrs): self.flush_chardata() if DEBUG_PRINT: print 'Start element:\n\t', repr(name), attrs if name == 'GIFTI': # create gifti image self.img = gi.GiftiImage() if 'Version' in attrs: self.img.version = attrs['Version'] if 'NumberOfDataArrays' in attrs: self.img.numDA = int(attrs['NumberOfDataArrays']) self.count_da = False self.fsm_state.append('GIFTI') elif name == 'MetaData': self.fsm_state.append('MetaData') # if this metadata tag is first, create self.img.meta if len(self.fsm_state) == 2: self.meta_global = gi.GiftiMetaData() else: # otherwise, create darray.meta self.meta_da = gi.GiftiMetaData() elif name == 'MD': self.nvpair = gi.GiftiNVPairs() self.fsm_state.append('MD') elif name == 'Name': if self.nvpair == None: raise ExpatError else: self.write_to = 'Name' elif name == 'Value': if self.nvpair == None: raise ExpatError else: self.write_to = 'Value' elif name == 'LabelTable': self.lata = gi.GiftiLabelTable() self.fsm_state.append('LabelTable') elif name == 'Label': self.label = gi.GiftiLabel() if "Index" in attrs: self.label.key = int(attrs["Index"]) if "Key" in attrs: self.label.key = int(attrs["Key"]) if "Red" in attrs: self.label.red = float(attrs["Red"]) if "Green" in attrs: self.label.green = float(attrs["Green"]) if "Blue" in attrs: self.label.blue = float(attrs["Blue"]) if "Alpha" in attrs: self.label.alpha = float(attrs["Alpha"]) self.write_to = 'Label' elif name == 'DataArray': self.da = gi.GiftiDataArray() if "Intent" in attrs: self.da.intent = intent_codes.code[attrs["Intent"]] if "DataType" in attrs: self.da.datatype = data_type_codes.code[attrs["DataType"]] if "ArrayIndexingOrder" in attrs: self.da.ind_ord = array_index_order_codes.code[attrs["ArrayIndexingOrder"]] if "Dimensionality" in attrs: self.da.num_dim = int(attrs["Dimensionality"]) for i in range(self.da.num_dim): di = "Dim%s" % str(i) if di in attrs: self.da.dims.append(int(attrs[di])) # dimensionality has to correspond to the number of DimX given assert len(self.da.dims) == self.da.num_dim if "Encoding" in attrs: self.da.encoding = gifti_encoding_codes.code[attrs["Encoding"]] if "Endian" in attrs: self.da.endian = gifti_endian_codes.code[attrs["Endian"]] if "ExternalFileName" in attrs: self.da.ext_fname = attrs["ExternalFileName"] if "ExternalFileOffset" in attrs: self.da.ext_offset = attrs["ExternalFileOffset"] self.img.darrays.append(self.da) self.fsm_state.append('DataArray') elif name == 'CoordinateSystemTransformMatrix': self.coordsys = gi.GiftiCoordSystem() self.img.darrays[-1].coordsys = self.coordsys self.fsm_state.append('CoordinateSystemTransformMatrix') elif name == 'DataSpace': if self.coordsys == None: raise ExpatError else: self.write_to = 'DataSpace' elif name == 'TransformedSpace': if self.coordsys == None: raise ExpatError else: self.write_to = 'TransformedSpace' elif name == 'MatrixData': if self.coordsys == None: raise ExpatError else: self.write_to = 'MatrixData' elif name == 'Data': self.write_to = 'Data' def EndElementHandler(self, name): self.flush_chardata() if DEBUG_PRINT: print 'End element:\n\t', repr(name) if name == 'GIFTI': # remove last element of the list self.fsm_state.pop() # assert len(self.fsm_state) == 0 elif name == 'MetaData': self.fsm_state.pop() if len(self.fsm_state) == 1: # only Gifti there, so this was a closing global # metadata tag self.img.meta = self.meta_global self.meta_global = None else: self.img.darrays[-1].meta = self.meta_da self.meta_da = None elif name == 'MD': self.fsm_state.pop() if not self.meta_global is None and self.meta_da == None: self.meta_global.data.append(self.nvpair) elif not self.meta_da is None and self.meta_global == None: self.meta_da.data.append(self.nvpair) # remove reference self.nvpair = None elif name == 'LabelTable': self.fsm_state.pop() # add labeltable self.img.labeltable = self.lata self.lata = None elif name == 'DataArray': if self.count_da: self.img.numDA += 1 self.fsm_state.pop() elif name == 'CoordinateSystemTransformMatrix': self.fsm_state.pop() self.coordsys = None elif name == 'DataSpace': self.write_to = None elif name == 'TransformedSpace': self.write_to = None elif name == 'MatrixData': self.write_to = None elif name == 'Name': self.write_to = None elif name == 'Value': self.write_to = None elif name == 'Data': self.write_to = None elif name == 'Label': self.lata.labels.append(self.label) self.label = None self.write_to = None def CharacterDataHandler(self, data): """ Collect character data chunks pending collation The parser breaks the data up into chunks of size depending on the buffer_size of the parser. A large bit of character data, with standard parser buffer_size (such as 8K) can easily span many calls to this function. We thus collect the chunks and process them when we hit start or end tags. """ if self._char_blocks is None: self._char_blocks = [] self._char_blocks.append(data) def flush_chardata(self): """ Collate and process collected character data """ if self._char_blocks is None: return # Just join the strings to get the data. Maybe there are some memory # optimizations we could do by passing the list of strings to the # read_data_block function. data = ''.join(self._char_blocks) # Reset the char collector self._char_blocks = None # Process data if self.write_to == 'Name': data = data.strip() self.nvpair.name = data elif self.write_to == 'Value': data = data.strip() self.nvpair.value = data elif self.write_to == 'DataSpace': data = data.strip() self.coordsys.dataspace = xform_codes.code[data] elif self.write_to == 'TransformedSpace': data = data.strip() self.coordsys.xformspace = xform_codes.code[data] elif self.write_to == 'MatrixData': # conversion to numpy array c = StringIO(data) self.coordsys.xform = np.loadtxt(c) c.close() elif self.write_to == 'Data': da_tmp = self.img.darrays[-1] da_tmp.data = read_data_block(da_tmp.encoding, da_tmp.endian, \ da_tmp.ind_ord, da_tmp.datatype, \ da_tmp.dims, data) # update the endianness according to the # current machine setting self.endian = gifti_endian_codes.code[sys.byteorder] elif self.write_to == 'Label': self.label.label = data.strip() @property def pending_data(self): " True if there is character data pending for processing " return not self._char_blocks is None def parse_gifti_file(fname, buffer_size = None): """ Parse gifti file named `fname`, return image Parameters ---------- fname : str filename of gifti file buffer_size: None or int, optional size of read buffer. None gives default of 35000000 unless on python < 2.6, in which case it is read only in the parser. In that case values other than None cause a ValueError on execution Returns ------- img : gifti image """ if buffer_size is None: buffer_sz_val = 35000000 else: buffer_sz_val = buffer_size datasource = open(fname,'rb') parser = ParserCreate() parser.buffer_text = True try: parser.buffer_size = buffer_sz_val except AttributeError: if not buffer_size is None: raise ValueError('Cannot set buffer size for parser') HANDLER_NAMES = ['StartElementHandler', 'EndElementHandler', 'CharacterDataHandler'] out = Outputter() for name in HANDLER_NAMES: setattr(parser, name, getattr(out, name)) try: parser.ParseFile(datasource) except ExpatError: print 'An expat error occured while parsing the Gifti file.' # Reality check for pending data assert out.pending_data is False # update filename out.img.filename = fname return out.img nipy-nibabel-d3c26be/nibabel/gifti/tests/000077500000000000000000000000001177264777700204465ustar00rootroot00000000000000nipy-nibabel-d3c26be/nibabel/gifti/tests/__init__.py000066400000000000000000000000001177264777700225450ustar00rootroot00000000000000nipy-nibabel-d3c26be/nibabel/gifti/tests/data/000077500000000000000000000000001177264777700213575ustar00rootroot00000000000000nipy-nibabel-d3c26be/nibabel/gifti/tests/data/ascii.gii000066400000000000000000000054761177264777700231550ustar00rootroot00000000000000 1.000000 0.000000 0.000000 0.000000 0.000000 1.000000 0.000000 0.000000 0.000000 0.000000 1.000000 0.000000 0.000000 0.000000 0.000000 1.000000 -16.072010 -66.187515 21.266994 -16.705893 -66.054337 21.232786 -17.614349 -65.401642 21.071466 0 1 2 nipy-nibabel-d3c26be/nibabel/gifti/tests/data/base64bin.gii000066400000000000000000000040011177264777700236210ustar00rootroot00000000000000 1.000000 0.000000 0.000000 0.000000 0.000000 1.000000 0.000000 0.000000 0.000000 0.000000 1.000000 0.000000 0.000000 0.000000 0.000000 1.000000 5ywbQ7+UB0NDncRC+VYMQ5QMPkPbfpJCIlwdQ836REPyUKdCNXYrQ8ZvCUMh8ZxCwosUQ5MiwkJv 7YNC/un2QtTv3kLYtoRCFk8HQ4ZJSkOkhhFCFEgyQz6YIkNSARdCYhwyQ4+T5kIvuGRC2tAOQ26k pUIqLfhB 1.000000 0.000000 0.000000 0.000000 0.000000 1.000000 0.000000 0.000000 0.000000 0.000000 1.000000 0.000000 0.000000 0.000000 0.000000 1.000000 AhkAAANGAAACZAAABTcAAAJkAAADRgAAAmQAAAU3AACDEQAAA0YAAEIGAAAFNwAAgxEAAANkAAAC ZAAABGQAAAJkAAADZAAAAmQAAARkAAACGQAAA2QAAMUNAAAEZAAAYwQAAAJGAACILwAABGQAAIgv AAACRgAA nipy-nibabel-d3c26be/nibabel/gifti/tests/data/gzipbase64.gii000077500000000000000000025576671177264777700240660ustar00rootroot00000000000000 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 nipy-nibabel-d3c26be/nibabel/gifti/tests/data/label.gii000066400000000000000000032241771177264777700231500ustar00rootroot00000000000000 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 1 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 1 0 0 0 0 1 1 1 0 1 0 0 0 0 2 0 1 1 0 0 0 1 1 0 0 0 2 2 2 2 2 0 0 0 2 0 0 1 1 0 0 0 0 0 0 0 0 2 0 0 0 0 0 2 0 1 2 2 2 0 0 1 0 0 0 0 2 0 0 2 2 2 0 2 0 2 0 0 2 2 1 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 1 0 1 1 1 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 1 0 1 1 0 0 0 0 0 1 0 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 2 0 0 0 0 2 0 2 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 2 2 0 0 0 0 0 0 0 2 2 2 0 0 0 0 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 2 0 2 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 2 2 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 2 2 0 0 2 2 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 1 1 1 0 0 0 0 0 1 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 0 0 0 2 0 0 0 0 2 2 0 2 0 0 0 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 2 2 0 0 1 0 0 0 0 0 0 0 1 1 1 0 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 2 2 0 0 0 0 2 2 0 0 0 0 0 0 0 0 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 1 1 0 0 0 1 1 2 2 2 0 0 1 0 0 0 0 1 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 2 1 2 2 2 0 2 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 2 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 2 2 2 0 1 1 2 2 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 2 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 2 2 2 2 2 2 2 1 1 1 2 2 2 2 1 1 0 1 2 2 0 2 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 2 2 2 0 2 0 2 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 2 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 2 0 0 2 0 2 2 2 2 0 0 2 0 0 0 0 2 2 2 1 2 0 2 2 2 2 2 2 2 0 0 1 0 0 2 2 2 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 2 2 2 2 2 0 0 0 0 0 0 2 2 0 0 0 2 2 0 0 2 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 2 2 2 0 0 0 0 0 0 0 1 1 2 0 2 0 1 0 0 0 0 0 0 0 2 0 0 0 0 2 2 2 2 2 2 2 0 2 0 0 0 0 2 0 0 0 0 0 0 0 2 0 0 0 2 2 0 2 2 2 2 0 2 2 0 0 0 2 2 0 2 2 2 0 2 0 0 0 0 0 0 0 1 2 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 2 0 0 0 0 2 2 0 0 0 2 0 2 0 2 0 0 0 0 0 0 0 0 2 2 2 0 0 0 2 0 2 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 2 0 0 1 1 0 0 0 1 1 0 0 0 2 2 2 0 0 0 0 0 0 0 2 2 2 2 2 0 2 2 2 2 2 2 2 2 2 2 2 0 0 0 0 0 0 0 2 2 2 0 2 0 0 0 0 0 0 0 0 0 2 2 2 0 0 0 0 0 0 2 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 2 2 0 0 0 0 0 0 0 2 0 0 2 0 0 0 0 0 0 0 2 2 2 0 0 2 2 2 0 0 2 0 2 2 2 2 2 0 0 0 1 0 0 1 0 0 0 2 0 0 2 0 0 0 0 0 0 0 0 2 2 2 0 2 0 0 0 0 0 0 0 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 2 0 0 0 0 0 0 0 2 2 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 2 2 2 2 2 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 2 2 2 0 0 0 2 2 2 2 2 0 0 0 0 2 2 2 2 2 2 0 0 2 2 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 0 0 0 0 0 0 0 0 0 0 2 2 0 0 2 2 2 0 0 0 2 2 2 2 2 2 2 2 0 0 0 0 0 0 0 0 2 2 0 2 2 2 2 2 2 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 2 2 2 2 2 0 0 0 0 2 2 2 2 2 0 0 0 0 0 0 2 0 0 0 0 0 0 2 2 0 2 0 0 0 0 0 0 2 1 0 0 0 0 1 1 1 1 1 1 2 1 2 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 0 0 0 2 2 2 2 2 2 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 2 2 0 0 0 2 0 0 1 1 0 0 0 2 2 0 0 0 0 0 0 0 0 0 2 2 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 2 2 2 2 2 0 2 2 2 2 2 2 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 1 1 0 0 0 0 1 1 1 1 0 0 0 1 1 1 1 1 1 1 1 0 0 1 1 0 1 1 0 1 1 0 1 1 1 1 1 0 0 1 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 2 2 0 2 2 0 0 0 0 2 2 2 2 0 0 0 0 2 2 2 2 0 0 2 2 0 0 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 0 0 0 0 0 0 0 2 2 2 2 0 1 0 2 0 0 0 0 0 0 2 2 2 2 2 2 2 0 0 0 0 0 0 2 2 0 1 2 2 2 1 1 0 0 0 2 0 0 0 2 2 2 2 0 0 0 0 0 0 2 2 2 2 0 0 0 0 0 0 0 0 0 0 2 2 0 0 0 2 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 2 2 2 0 0 2 2 1 0 2 0 0 0 0 0 1 1 0 0 1 1 1 1 1 1 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 2 2 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 1 0 0 0 0 0 0 0 1 1 0 2 1 2 2 2 0 2 2 2 0 0 0 0 0 0 0 2 0 2 2 0 0 0 0 0 0 0 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 2 2 2 0 0 0 0 2 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 2 2 2 1 1 1 1 1 0 0 0 0 0 0 0 1 0 1 0 1 1 0 0 0 0 0 1 1 1 1 1 1 2 2 2 2 0 2 0 0 1 1 0 0 0 0 0 0 0 0 0 0 1 2 0 0 0 0 0 2 1 0 1 1 0 1 1 0 0 0 0 0 0 0 1 1 0 0 0 0 1 1 1 0 0 0 1 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 2 0 0 2 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 0 2 2 2 0 0 0 0 0 0 0 2 2 2 2 2 2 0 0 0 2 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 2 0 2 2 2 0 2 2 0 0 0 2 2 2 2 0 2 0 0 2 0 2 2 0 0 2 2 0 2 2 2 2 0 0 0 0 0 0 1 0 0 2 0 0 2 0 0 0 2 0 0 2 0 2 0 0 0 0 0 0 2 2 0 0 0 2 2 0 2 2 2 0 0 0 0 2 2 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 1 0 1 0 0 1 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 0 1 0 0 1 0 0 1 1 1 0 2 0 0 0 0 1 0 0 0 1 0 0 0 2 2 2 2 2 2 0 2 2 0 0 0 2 0 2 0 2 0 0 0 2 2 0 0 0 0 0 0 1 0 0 0 0 2 2 2 2 0 2 2 0 0 0 2 2 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 1 2 2 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 1 1 2 0 0 0 1 0 0 0 0 0 0 1 1 1 1 2 0 2 0 0 0 1 1 1 1 1 0 2 2 1 1 1 1 2 0 0 1 0 0 1 0 0 1 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 0 0 0 0 0 0 2 2 2 2 2 2 2 2 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 2 2 2 2 2 0 1 0 0 2 2 2 0 0 2 0 0 0 2 2 2 2 0 2 2 2 2 0 0 2 2 2 0 0 2 1 0 2 2 2 0 0 1 0 0 0 1 1 0 0 1 1 0 2 0 0 0 2 2 0 0 0 0 0 2 2 2 2 0 0 0 0 0 0 0 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 2 2 2 1 0 0 0 2 0 1 0 1 1 0 0 0 0 2 0 0 2 0 0 2 2 2 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 2 2 2 2 2 0 0 0 0 0 2 2 2 2 2 2 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 2 1 2 2 2 2 1 1 1 1 0 1 1 2 0 0 1 2 2 2 2 2 1 1 1 2 2 0 0 0 2 0 0 2 0 0 0 0 0 0 0 0 2 2 0 0 0 0 0 0 0 0 0 2 2 1 0 0 0 0 0 0 1 1 0 1 0 0 0 1 1 0 0 0 0 0 1 0 0 0 2 0 0 0 0 0 2 2 2 2 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 1 1 0 2 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 0 0 0 1 0 0 0 0 1 1 1 1 0 1 1 0 0 0 1 0 1 0 0 1 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 1 0 0 1 0 1 0 0 0 1 0 0 0 0 1 1 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 2 2 2 0 0 2 2 0 0 0 0 0 0 0 2 2 0 0 0 0 0 2 0 2 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 2 2 2 2 0 0 0 0 0 0 0 0 0 0 2 2 0 2 0 2 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 2 2 0 0 2 2 2 2 2 2 2 2 2 2 2 2 2 1 2 2 2 2 2 0 0 1 2 0 0 2 0 2 2 2 0 2 2 1 2 2 1 1 0 1 1 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 2 0 2 2 2 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 2 2 0 0 0 0 0 0 0 0 0 0 2 2 2 2 2 0 2 2 0 0 0 0 0 0 0 0 0 0 0 0 2 2 2 2 0 2 2 2 2 0 0 0 0 2 2 2 0 2 2 2 2 0 0 2 2 0 2 1 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 2 0 0 0 0 2 2 2 0 2 0 0 0 0 2 0 0 0 2 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 2 2 2 2 1 2 2 1 1 0 0 1 2 0 1 1 2 0 2 2 1 2 2 2 2 2 0 2 1 2 2 0 0 0 0 0 0 0 2 0 0 0 1 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 2 2 0 0 0 2 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 2 0 2 0 0 0 0 1 1 1 1 1 1 0 0 0 0 0 1 1 2 2 2 2 0 0 0 0 0 0 0 1 1 1 0 0 0 1 1 1 1 0 0 0 1 1 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 1 1 0 1 0 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 2 2 0 0 0 0 0 0 2 0 0 0 0 0 0 2 2 0 0 0 0 0 0 0 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 2 2 2 2 2 2 2 2 2 0 0 2 0 0 0 0 0 0 2 0 0 0 0 0 0 2 0 0 0 0 0 0 2 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 2 2 2 2 0 2 2 2 2 2 2 0 2 1 0 0 2 2 2 2 2 0 1 1 0 2 0 2 2 0 2 2 2 0 0 0 0 0 2 2 2 1 0 0 0 0 1 0 0 0 2 0 0 1 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 2 0 0 2 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 2 2 0 0 2 2 2 0 2 2 2 2 2 2 2 2 2 2 0 0 1 1 1 1 1 0 0 0 0 1 1 1 1 1 2 1 1 0 0 0 1 0 2 2 2 2 2 2 2 2 0 2 1 2 0 2 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 2 0 1 0 1 0 1 0 0 0 0 0 0 0 1 0 1 1 0 0 2 2 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 0 0 0 0 0 0 0 0 2 2 2 0 0 0 0 0 0 0 0 0 1 0 1 1 0 2 2 0 0 0 0 2 1 1 0 2 0 0 0 1 1 1 0 1 1 1 1 0 0 0 1 1 0 0 0 1 1 0 1 1 1 1 0 1 0 0 0 0 1 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 0 1 1 0 0 1 1 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 1 1 1 1 1 1 1 0 1 1 1 1 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 2 2 0 2 0 0 0 0 0 0 0 0 2 0 2 2 0 0 0 2 2 2 0 0 2 2 2 2 2 0 2 0 0 0 0 0 0 0 0 0 0 0 0 2 2 2 2 2 2 2 0 0 2 0 0 0 0 0 2 2 2 0 0 2 0 0 0 0 0 2 0 0 0 2 2 2 2 2 2 0 0 2 2 0 0 0 0 0 0 0 0 2 2 2 0 0 2 0 0 0 0 0 0 2 2 0 0 2 2 2 0 0 0 0 0 0 0 2 0 0 2 0 0 0 0 2 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 2 2 0 2 2 2 0 0 0 0 0 0 0 0 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 2 0 0 2 0 2 0 2 2 2 2 0 2 0 0 0 2 0 0 0 0 2 0 2 2 2 2 2 2 1 0 2 2 0 2 0 0 0 2 0 0 2 0 2 2 2 2 2 0 2 0 0 0 0 0 2 2 2 2 0 2 2 2 0 0 2 2 2 2 0 2 2 2 1 0 0 0 0 0 0 0 0 2 2 2 2 0 0 0 0 0 0 0 0 0 2 2 0 0 0 0 0 0 2 2 2 2 2 0 0 0 0 2 0 0 0 0 0 0 0 1 0 0 2 2 0 0 0 0 1 0 0 0 0 0 0 2 2 2 0 2 0 0 0 0 0 0 0 0 0 0 0 2 1 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 2 0 2 0 0 0 0 0 2 0 2 0 0 0 2 2 2 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 2 2 2 2 1 1 2 2 2 2 2 1 1 1 1 0 0 1 1 1 0 1 1 1 1 1 2 2 0 1 2 2 0 0 1 1 0 1 2 0 2 2 2 0 0 2 2 0 0 0 0 0 0 0 0 0 2 0 0 0 1 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 1 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 2 2 0 0 1 0 0 0 0 0 1 1 1 0 2 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 1 1 1 0 0 0 0 0 0 0 0 1 1 1 1 0 0 2 0 0 2 0 0 0 0 0 0 0 0 0 2 0 0 0 0 1 0 0 0 0 0 1 1 1 0 0 0 0 0 1 0 0 1 0 0 0 1 1 0 1 0 0 0 0 1 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 1 1 0 1 1 1 0 0 0 1 1 0 0 1 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 1 1 1 1 1 0 0 0 0 1 0 0 1 0 0 1 1 1 1 0 1 1 1 1 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 2 0 0 0 0 0 0 0 0 0 2 2 0 0 0 2 2 0 2 2 2 2 0 0 0 2 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 0 2 0 2 2 0 2 0 0 0 0 0 0 0 2 2 0 0 0 0 0 0 2 2 2 2 2 2 0 2 2 2 2 0 0 2 2 2 2 2 2 2 2 2 2 0 0 0 2 2 2 2 2 2 2 2 2 0 2 2 2 0 0 0 0 0 0 0 2 2 2 2 2 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 2 2 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 2 0 0 0 0 0 1 0 2 2 2 0 0 0 0 0 0 2 2 0 2 2 2 0 0 0 0 0 0 2 2 2 2 2 2 2 2 2 0 2 2 2 0 2 2 0 2 2 2 2 2 2 2 2 0 0 0 2 2 0 2 2 2 2 0 2 2 0 0 0 2 2 2 2 0 1 0 0 0 2 0 0 2 2 0 1 0 0 2 2 1 1 0 0 0 0 2 0 0 0 0 2 2 2 2 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 2 2 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 2 0 0 0 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 2 2 2 0 0 0 2 0 0 0 0 2 2 2 2 2 1 2 2 0 2 2 2 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 2 2 2 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 1 1 1 0 0 1 1 0 0 0 0 0 0 0 0 1 0 0 0 0 2 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 2 0 0 0 0 1 0 0 0 0 2 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 2 2 0 0 0 0 0 0 0 0 2 2 2 0 0 0 0 0 2 0 0 2 0 0 0 0 0 0 2 2 0 0 0 0 0 0 0 2 2 0 0 1 1 0 0 0 0 0 1 0 0 2 0 0 0 0 1 0 0 1 1 1 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 1 1 1 0 1 1 1 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 1 1 0 1 0 0 0 0 1 1 0 0 0 0 0 1 1 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 1 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 2 0 0 0 0 0 0 2 0 0 0 0 0 2 2 2 2 0 0 0 2 2 2 2 2 0 0 0 0 0 0 0 0 0 0 0 2 2 2 2 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 2 2 0 0 0 0 0 0 0 0 0 0 0 0 2 2 0 0 0 2 2 2 2 2 2 2 2 2 0 0 0 0 0 0 0 2 0 0 0 0 2 2 2 2 2 2 2 2 0 0 0 2 2 2 2 0 0 0 0 0 2 2 0 2 0 0 0 0 0 0 0 0 0 0 2 0 1 0 0 0 0 0 0 0 0 2 2 0 0 0 0 0 0 2 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 2 2 0 2 2 0 2 2 2 2 2 0 0 2 2 2 2 0 0 0 0 2 2 0 0 2 2 2 0 2 0 0 2 0 0 2 2 2 0 0 0 0 2 2 2 2 0 0 0 0 0 0 0 2 2 2 2 0 0 2 2 0 0 0 0 2 0 2 2 2 2 2 2 2 0 0 0 0 2 0 2 0 0 0 0 0 0 2 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 2 2 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 2 0 0 2 0 2 0 0 2 0 0 0 2 2 2 0 0 1 0 0 0 0 0 0 2 2 0 0 0 0 0 0 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 0 0 0 0 0 0 2 1 1 1 2 0 0 0 0 0 0 0 0 0 0 0 2 1 0 0 0 0 0 1 1 2 2 0 0 0 0 1 0 2 0 1 0 2 0 0 1 0 0 1 1 2 1 0 2 0 0 0 0 1 1 2 0 0 0 1 0 0 0 1 1 0 0 0 1 2 0 0 0 0 2 2 1 1 1 0 2 0 0 0 1 1 1 0 0 0 0 0 1 0 0 2 0 0 1 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 1 0 0 0 0 1 2 0 2 2 2 0 0 0 2 2 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 2 2 0 0 0 0 0 2 2 0 2 0 0 0 1 0 0 0 0 1 1 1 0 1 1 1 1 0 0 1 1 1 1 1 0 0 1 0 1 0 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 1 0 0 1 1 1 1 0 1 1 0 0 0 0 0 1 0 1 0 1 1 1 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 1 0 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 1 1 1 1 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 2 0 2 0 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 2 0 0 0 0 2 0 0 2 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 2 2 0 0 0 0 0 0 0 0 0 0 2 2 0 0 0 0 0 2 0 0 0 0 0 2 2 2 2 0 0 0 0 2 2 2 2 0 2 2 2 2 2 0 0 2 2 2 0 0 0 0 0 0 2 2 2 0 2 0 0 0 0 0 0 0 2 2 2 2 2 2 2 2 2 0 0 0 1 0 2 2 0 2 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 2 2 0 0 0 2 0 0 0 0 0 2 2 0 0 0 0 0 0 2 2 0 2 2 0 0 0 0 0 2 2 2 2 2 2 2 0 0 0 2 2 2 0 0 0 0 2 2 2 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 2 2 2 2 2 2 0 0 0 0 0 2 2 2 2 2 0 0 0 0 2 2 0 0 0 0 0 2 0 0 2 0 0 0 0 0 2 0 2 2 0 0 0 0 0 0 2 0 0 2 0 0 0 0 0 0 0 0 0 2 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 2 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 2 0 0 0 0 0 0 2 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 2 2 2 0 0 0 0 0 2 2 0 2 2 2 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 2 0 2 0 1 0 0 0 0 0 0 0 2 1 0 1 1 1 1 1 1 1 1 0 1 2 1 1 0 1 1 0 0 2 1 0 1 1 1 1 0 0 0 0 0 0 0 1 1 0 0 1 0 1 1 0 1 2 2 2 0 1 0 0 0 1 2 0 0 0 0 0 0 0 0 2 0 0 0 0 2 2 0 0 0 0 0 0 0 2 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 2 2 0 0 0 2 0 0 2 2 2 2 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 1 0 2 0 0 0 1 1 1 1 1 1 1 1 1 0 0 0 1 1 0 1 1 1 1 1 0 1 1 1 0 1 1 1 1 1 0 0 0 0 0 1 1 1 1 1 1 1 0 0 1 0 0 1 1 1 1 0 0 1 0 0 0 0 0 0 0 0 1 0 1 1 1 1 1 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 1 0 1 1 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 2 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 1 1 0 0 0 0 2 0 0 1 0 1 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 0 0 0 0 2 0 0 0 0 0 2 2 0 2 2 2 0 0 0 0 0 0 0 0 2 2 2 0 0 0 2 0 2 2 0 0 0 2 2 2 0 0 2 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 2 0 0 0 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 0 0 2 2 2 2 0 0 2 2 0 0 2 2 0 0 2 2 2 2 2 0 2 2 0 0 2 2 2 2 2 0 0 2 2 0 0 2 2 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 2 2 2 2 2 0 0 0 0 0 0 2 2 2 0 0 0 2 2 2 2 2 0 0 0 0 0 0 2 2 2 0 0 0 2 2 2 0 0 0 0 0 0 0 0 0 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 0 0 0 0 0 0 0 2 2 2 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 2 2 2 0 0 0 2 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 2 2 2 2 2 0 0 2 2 0 0 0 0 2 0 0 0 0 2 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 1 1 1 0 2 1 1 0 1 1 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 0 0 0 1 1 1 1 1 0 1 0 2 1 2 2 2 1 0 0 1 0 0 2 2 2 0 0 1 0 0 0 0 0 2 2 0 0 0 2 2 2 0 1 1 0 0 0 0 0 0 2 2 0 2 0 1 2 2 2 1 0 0 0 0 0 0 0 0 2 2 2 2 2 2 0 0 1 1 0 0 0 2 2 2 2 0 0 2 0 0 0 2 2 2 0 0 2 0 0 0 2 2 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 0 2 2 2 0 0 0 0 0 1 1 1 1 1 0 0 0 1 1 1 0 0 0 0 1 1 1 1 1 1 1 1 0 0 1 1 0 0 1 1 1 1 0 0 0 1 0 0 1 1 1 0 0 0 0 0 1 1 1 1 1 0 0 1 0 0 1 1 1 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 2 2 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 1 0 0 0 0 2 0 0 1 0 1 0 0 0 0 0 0 2 2 0 0 0 2 2 0 0 0 2 2 2 2 2 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 2 2 2 0 0 0 0 0 0 0 0 2 0 0 0 0 2 0 0 2 0 0 2 0 2 0 2 0 2 2 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 2 2 2 0 0 0 0 0 0 0 0 2 2 0 0 2 0 0 0 0 0 2 2 2 2 2 2 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 2 2 0 0 0 0 0 0 0 2 2 0 0 0 0 2 0 0 0 0 0 2 0 0 0 0 0 0 2 0 0 0 0 0 0 2 2 2 2 0 0 2 0 0 0 0 0 0 0 0 1 0 0 0 1 1 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 0 0 0 0 1 1 0 0 1 1 1 1 0 0 0 1 0 1 1 1 1 1 1 1 0 0 0 1 1 1 1 1 1 0 0 1 0 2 0 1 1 1 1 1 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 2 2 2 2 2 2 2 1 0 0 0 0 0 2 2 2 2 1 0 0 0 0 1 1 0 0 2 2 1 2 2 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 2 2 2 2 0 0 0 0 0 0 0 0 2 1 0 2 0 0 0 0 2 0 2 0 0 0 0 0 0 0 0 0 2 2 2 0 0 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 1 0 0 0 2 2 2 2 0 0 2 0 2 2 2 0 0 1 2 2 0 0 0 0 1 0 1 1 1 1 1 0 0 1 1 1 2 0 1 2 2 1 1 2 1 1 1 1 1 1 0 1 0 1 2 2 2 1 1 1 0 0 1 1 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 1 1 1 1 0 0 0 1 1 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 0 0 2 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 2 2 0 0 2 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 2 2 0 0 0 0 0 2 2 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 2 0 0 0 0 2 2 0 2 2 2 2 0 0 2 2 2 0 0 2 2 0 2 0 0 0 0 2 0 0 2 0 0 0 2 0 0 0 0 2 2 0 0 0 0 2 2 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 2 2 0 2 2 0 2 0 0 0 2 0 0 0 0 0 0 0 0 2 2 2 2 1 1 0 0 0 0 2 2 0 0 2 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 2 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 1 1 0 0 1 0 0 0 1 0 0 0 1 0 0 0 0 1 1 1 0 0 0 1 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 1 0 0 1 1 0 0 0 1 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 1 0 1 1 2 0 0 0 0 0 1 1 1 0 1 2 0 0 0 1 1 1 1 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 0 0 0 0 1 1 0 1 1 0 0 0 1 1 1 2 2 2 2 2 2 1 1 1 0 1 0 1 1 0 0 1 0 1 2 0 1 1 1 1 0 0 0 0 0 0 2 0 0 0 2 0 2 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 2 0 0 0 2 0 0 0 0 2 2 2 2 2 2 2 0 0 0 2 2 2 0 0 0 0 0 0 0 0 2 2 2 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 1 0 0 2 2 2 0 0 0 0 0 0 1 1 1 2 0 0 1 0 1 1 1 1 1 1 1 1 0 2 1 1 1 1 1 0 1 0 1 1 0 0 0 0 0 1 1 1 0 1 1 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0 0 1 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 2 0 0 0 0 0 0 2 2 2 2 0 0 0 0 0 0 0 0 0 2 2 0 0 0 0 0 0 0 0 0 0 2 2 2 2 0 2 2 2 2 0 2 2 2 0 0 0 0 0 2 0 0 0 0 0 0 2 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 2 2 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 2 2 0 0 0 0 0 0 2 0 0 2 2 2 0 0 0 2 0 1 0 0 2 2 2 2 2 0 0 0 0 2 0 0 0 0 0 0 0 0 0 2 2 0 0 0 0 0 2 2 2 2 2 2 0 2 2 2 2 0 2 2 0 0 2 0 0 0 2 0 2 2 2 2 0 0 0 0 0 0 0 2 2 0 0 0 0 0 0 0 0 0 0 0 0 2 2 2 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 1 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 1 1 0 0 0 2 0 0 1 0 0 0 0 0 2 2 0 1 1 1 1 0 0 0 0 0 0 0 0 1 1 1 0 1 0 0 0 0 2 2 0 0 0 1 2 0 2 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 1 1 0 0 0 0 2 2 0 0 2 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 1 1 1 2 1 1 1 0 0 1 1 1 1 1 1 2 2 1 2 2 0 1 0 0 0 1 1 2 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 1 1 1 1 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 2 0 0 0 0 0 0 0 1 2 2 2 2 0 0 1 2 1 0 2 2 2 0 0 0 0 0 0 2 2 2 2 0 0 0 0 0 0 0 0 0 0 0 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 1 1 0 0 2 2 0 0 0 0 0 0 0 0 2 2 0 0 0 0 0 0 0 0 0 0 0 2 2 2 0 0 0 0 0 0 0 2 0 0 2 2 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 2 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 2 2 2 2 0 2 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 2 0 0 0 2 0 0 2 0 0 0 0 0 2 2 2 2 2 2 2 0 0 2 0 0 0 0 0 1 0 0 0 0 0 0 2 0 0 0 2 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 2 0 0 0 0 0 2 0 0 0 1 1 1 1 1 0 0 0 2 2 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 1 1 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 1 0 0 1 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 1 0 0 0 0 0 2 0 0 0 0 0 0 2 0 0 0 0 1 1 1 1 0 1 1 0 0 0 0 0 1 0 1 0 0 0 0 0 0 1 1 1 1 1 1 0 0 0 1 1 1 0 1 1 0 0 0 0 0 0 0 0 0 1 2 0 0 0 0 0 0 0 2 0 0 0 0 0 2 2 0 2 2 0 2 0 0 2 0 0 0 0 1 0 0 1 0 0 0 0 0 2 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 2 2 2 2 2 0 0 0 0 2 2 0 0 0 0 0 0 0 0 0 0 0 2 2 2 2 2 2 2 0 0 1 1 0 0 1 2 2 0 0 0 0 0 0 1 1 2 2 2 2 2 1 2 2 1 1 1 2 2 1 1 1 2 2 2 2 1 1 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 1 1 0 0 1 1 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 1 0 0 0 0 0 1 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 2 2 2 2 0 0 2 0 0 2 1 2 2 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 2 0 0 0 0 0 0 1 0 2 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 2 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 2 0 0 2 0 2 2 2 0 0 2 0 0 0 0 0 2 2 2 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 2 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 2 2 2 0 2 0 0 0 0 0 0 2 2 2 2 2 2 0 0 0 0 2 0 2 2 0 0 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 2 2 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 2 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 2 2 0 0 0 2 0 0 0 2 2 0 0 0 0 2 0 0 0 2 2 0 2 0 0 0 0 0 0 2 0 0 0 2 0 0 0 0 2 0 0 0 0 0 2 0 0 0 2 2 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 0 2 0 0 0 0 0 0 0 0 0 0 0 2 2 2 0 2 0 1 1 1 0 0 0 0 0 0 0 0 0 0 2 1 0 0 2 2 0 0 0 0 1 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 1 0 1 0 0 0 0 0 0 1 1 0 0 2 0 0 0 0 1 0 0 2 2 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 2 0 0 0 0 1 0 1 0 2 0 1 0 2 0 0 2 2 1 1 1 0 1 0 0 1 1 0 0 1 1 1 1 1 0 1 1 1 1 2 1 0 0 2 2 0 0 0 0 0 0 0 0 0 0 0 0 2 2 0 0 0 0 2 2 2 2 2 2 2 0 0 0 0 2 2 2 0 0 1 0 0 0 0 0 2 2 2 2 2 0 0 0 0 0 0 0 0 0 2 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 2 2 2 0 0 0 0 0 0 0 0 2 2 2 0 0 0 0 0 0 2 2 0 0 0 0 0 0 0 2 2 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 1 0 2 2 2 2 2 2 2 0 0 0 0 0 0 0 0 1 2 1 0 0 0 0 2 2 2 0 0 2 0 0 2 2 1 2 2 1 0 2 2 0 0 1 2 2 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 2 2 2 2 2 2 2 2 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 0 0 1 1 2 2 1 1 1 0 2 2 0 0 0 0 2 0 0 1 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 2 2 2 2 2 0 0 0 2 2 2 2 2 0 0 0 0 2 2 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 2 2 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 2 0 0 0 0 0 0 2 2 0 2 0 0 0 2 0 0 0 0 0 0 1 0 1 1 0 2 2 2 2 0 0 0 0 0 1 0 0 0 0 0 0 2 2 0 0 0 0 0 0 2 2 0 0 0 0 0 0 0 0 2 2 0 1 2 2 0 0 0 0 0 0 1 2 2 0 2 2 2 2 2 0 0 0 0 0 2 2 2 2 0 0 0 2 2 2 1 1 1 1 0 0 0 2 2 2 0 0 0 0 0 2 2 1 1 0 2 2 2 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 1 1 0 0 0 0 2 2 0 0 0 1 1 0 0 0 2 2 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 2 2 0 1 1 1 1 0 0 1 1 0 0 0 0 0 0 1 0 0 0 0 0 0 2 1 1 1 0 0 2 2 1 0 0 0 0 0 2 2 2 2 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 2 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 2 0 0 2 2 0 1 1 0 0 1 1 2 1 0 0 0 0 0 1 1 1 0 0 0 1 1 0 1 0 0 0 1 0 0 0 0 1 0 0 0 0 0 1 1 1 1 1 0 0 0 1 1 1 1 1 1 0 1 1 0 0 0 0 0 0 0 1 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 0 0 0 0 0 2 0 0 0 0 2 2 2 2 0 0 0 0 0 0 0 0 0 2 2 2 2 0 0 0 2 2 2 0 0 2 2 0 0 0 0 0 2 2 0 0 1 2 2 0 0 1 1 0 1 2 2 0 2 0 2 2 2 0 0 0 2 2 2 2 0 0 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 2 2 0 1 1 2 0 0 1 2 0 2 2 2 0 2 0 2 2 1 1 2 1 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 1 0 2 0 0 0 0 0 0 2 2 2 2 0 0 0 0 0 1 1 1 1 0 0 0 2 2 2 0 1 2 2 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 2 2 2 2 2 2 0 2 2 2 0 0 0 0 2 2 2 0 0 0 2 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 2 0 0 0 0 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 2 2 2 0 0 0 2 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 2 0 0 2 2 2 2 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 2 2 0 2 2 2 2 0 0 0 0 0 0 2 0 2 2 2 2 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 0 2 2 2 0 0 0 2 0 0 0 0 0 0 0 0 2 2 0 2 2 0 0 0 0 0 0 0 0 0 2 2 2 0 0 0 0 0 1 1 1 0 0 2 2 0 2 2 2 2 2 2 0 0 1 1 2 2 2 2 0 0 1 1 0 0 0 2 2 0 1 2 2 2 2 2 2 1 1 0 0 0 0 2 2 2 0 0 0 0 1 1 1 0 0 2 2 1 0 0 0 0 0 2 1 1 0 0 0 2 2 1 0 2 2 2 2 0 0 0 0 1 1 1 0 2 0 0 0 0 0 0 2 0 0 0 0 2 2 1 0 0 0 0 2 2 0 2 0 0 2 0 0 0 0 0 2 1 1 1 1 0 0 1 1 0 0 0 0 1 1 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 1 1 0 0 0 0 0 1 1 0 0 0 0 0 1 1 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 2 0 2 0 2 1 1 2 0 0 1 1 0 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 2 2 0 1 2 2 0 2 0 0 0 0 0 0 0 0 0 0 2 0 0 0 2 0 0 0 0 0 0 0 0 2 0 0 2 2 2 2 0 0 0 0 0 0 0 0 0 0 1 2 2 0 2 2 2 2 2 2 2 0 0 0 0 0 0 0 2 2 2 2 0 0 0 0 0 0 0 0 0 2 0 2 2 2 0 0 0 0 0 2 0 2 0 0 2 0 0 2 0 0 2 2 1 2 0 2 0 0 2 2 2 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 2 0 2 0 2 2 2 0 0 0 0 0 0 0 1 1 2 2 0 0 0 1 0 0 0 0 0 0 0 2 2 2 2 0 0 0 0 0 0 2 2 2 0 2 2 2 0 0 0 2 2 2 2 2 2 0 2 0 0 2 2 2 2 0 2 2 2 2 2 2 2 2 2 0 0 2 2 1 2 2 2 2 2 2 1 0 0 2 2 2 0 0 0 0 0 0 0 0 0 0 2 2 2 2 0 0 2 0 0 2 2 2 0 2 0 0 0 0 0 0 0 0 0 2 2 2 0 0 0 0 0 2 2 2 2 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 2 2 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 0 0 0 0 2 2 0 0 0 0 0 0 0 0 0 0 0 0 2 2 2 0 0 0 0 0 0 0 1 0 2 2 0 0 0 0 0 0 0 0 0 0 1 0 0 0 2 2 0 0 0 0 0 1 0 2 2 0 0 0 0 1 0 0 2 2 2 0 2 0 0 0 0 0 0 0 0 0 2 2 2 0 2 0 0 0 0 2 0 0 0 0 0 0 0 0 2 1 2 0 0 1 0 0 2 1 0 0 0 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 2 1 1 1 1 1 2 0 0 2 0 2 0 2 0 2 1 0 0 2 2 0 0 2 2 1 1 0 1 1 1 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 2 2 2 2 0 1 1 0 0 0 2 0 0 0 0 0 0 0 2 2 2 0 0 0 2 2 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 2 0 2 0 0 2 2 2 2 0 0 0 0 1 1 1 0 2 0 0 0 2 0 2 2 2 2 0 2 2 2 2 0 2 1 0 1 1 0 1 1 1 1 1 1 1 1 1 2 0 1 1 1 1 1 0 0 0 0 0 2 2 1 0 2 2 0 2 0 2 2 0 0 0 1 0 2 2 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 2 2 2 2 2 2 2 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 2 0 0 0 0 0 0 0 0 2 2 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 2 0 0 0 2 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 2 2 0 2 2 2 2 0 0 2 2 1 2 0 2 2 2 2 2 2 1 2 2 2 2 2 2 1 1 2 2 2 2 1 0 2 1 2 2 0 0 0 0 0 0 2 2 2 0 1 0 0 0 2 2 1 0 0 2 2 0 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 2 0 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 2 0 2 2 0 2 0 0 0 0 0 0 0 0 0 2 2 2 0 0 0 0 2 2 2 0 2 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 2 2 0 0 2 0 0 0 0 0 0 2 2 2 2 0 2 2 2 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 2 0 1 1 1 2 0 0 2 2 2 1 2 2 2 2 2 1 0 0 0 2 2 2 2 0 0 0 2 2 2 2 2 1 1 1 1 1 0 1 0 0 2 1 1 1 1 1 1 1 0 0 0 0 2 2 0 0 0 2 0 0 2 2 2 1 1 1 1 1 1 1 1 0 0 1 0 0 1 1 0 0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 1 0 0 1 0 1 1 1 1 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 2 2 2 2 0 1 0 0 0 0 0 1 0 0 0 2 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 1 0 0 1 1 0 0 0 0 1 1 0 1 0 0 0 0 0 0 2 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 2 0 1 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 1 1 1 1 1 1 1 0 0 0 0 0 0 0 2 2 2 2 2 2 2 0 0 0 1 1 1 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 2 2 2 2 2 0 2 2 0 0 2 2 2 2 2 0 0 0 0 0 0 0 2 2 2 2 0 0 0 0 2 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 1 1 1 1 1 1 1 0 0 0 0 0 0 1 1 1 1 1 0 0 0 0 0 1 1 1 1 0 0 0 0 0 1 1 1 0 0 0 0 0 0 1 0 0 0 0 0 1 1 0 0 0 1 1 0 0 0 0 0 0 2 2 0 0 0 1 1 0 0 1 0 1 1 2 1 2 0 0 0 0 0 0 0 0 0 0 0 0 2 2 2 0 0 0 2 2 0 2 2 2 2 2 2 2 0 0 0 0 0 2 2 2 2 2 1 1 2 1 2 2 0 2 2 2 2 2 2 2 2 1 0 0 0 0 0 2 2 2 0 0 1 1 0 0 0 0 2 0 2 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 2 0 0 2 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 1 0 0 0 0 0 0 1 1 0 0 1 0 2 0 0 0 0 0 2 2 0 0 0 0 1 0 2 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 2 2 0 0 0 0 0 2 2 2 2 0 2 2 0 0 0 0 2 0 0 0 0 0 0 2 2 0 0 0 2 2 2 0 0 0 0 2 2 0 0 0 0 0 0 2 0 0 0 0 0 0 2 0 0 0 0 0 0 0 1 1 0 0 0 0 1 0 0 2 2 0 2 0 0 1 0 1 2 2 2 2 1 2 2 2 2 2 2 2 0 0 0 0 1 2 2 1 1 0 2 2 2 2 1 2 2 2 0 0 0 0 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 0 1 0 0 0 0 2 2 1 0 2 0 0 1 0 2 2 0 2 2 0 2 0 0 0 1 1 1 1 1 0 2 1 1 0 0 1 1 1 1 1 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 1 0 0 2 0 1 1 0 1 0 1 0 2 2 2 0 0 0 0 0 0 0 0 0 2 2 2 2 0 0 0 0 0 2 0 0 0 0 0 0 0 2 2 2 0 0 2 2 0 0 0 0 0 0 0 1 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0 0 0 0 1 1 1 0 0 1 1 1 0 0 0 1 0 0 2 0 0 2 2 2 2 1 2 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 2 2 2 2 2 2 2 2 2 2 0 2 1 0 0 2 2 2 0 1 2 0 1 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 1 0 0 1 1 0 2 0 2 0 0 2 2 2 2 2 2 2 2 0 0 0 0 2 2 0 0 0 0 0 0 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 0 0 0 1 1 0 0 0 0 0 0 0 0 1 1 0 0 0 0 1 0 2 2 2 0 0 0 1 0 0 0 2 0 0 1 1 2 0 0 0 0 0 0 0 0 0 0 2 2 2 2 1 0 0 0 0 0 0 2 2 2 2 2 0 0 0 0 0 2 2 2 2 2 2 0 0 0 0 0 0 2 2 2 0 2 2 2 2 0 1 2 2 1 1 0 2 2 2 0 0 0 2 0 0 0 0 2 2 2 0 0 0 0 0 0 0 0 2 2 2 2 0 0 0 2 0 2 2 2 2 2 2 2 0 0 0 0 2 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 2 0 0 0 0 1 0 0 0 1 1 1 1 1 0 1 0 0 0 0 1 0 0 0 2 2 0 2 0 0 0 0 0 0 1 0 0 0 0 0 2 0 0 0 0 0 2 0 0 0 2 0 0 2 2 2 2 0 0 0 0 2 2 0 0 0 2 0 1 2 2 2 1 0 2 2 2 0 0 0 0 2 2 2 2 0 1 0 2 0 2 2 1 1 0 0 1 1 1 1 1 1 2 1 0 0 2 2 1 1 1 1 0 0 1 1 1 2 1 1 1 1 1 1 1 0 0 1 0 0 0 0 0 2 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 1 0 0 1 1 0 0 0 1 1 1 0 0 0 0 1 1 0 0 1 0 1 0 0 2 2 2 1 0 2 2 1 0 0 0 0 2 0 1 0 2 0 2 2 2 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 0 0 1 1 1 1 1 0 0 1 1 0 0 0 0 1 1 1 1 1 1 1 0 1 2 2 2 2 2 0 2 2 2 2 0 0 1 1 0 0 1 1 2 0 0 0 0 0 0 1 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 0 1 1 2 2 2 0 0 1 1 0 0 0 1 1 0 0 1 0 0 0 0 0 0 0 0 1 0 1 0 1 1 0 0 1 0 0 0 2 0 0 0 1 2 0 2 2 2 0 2 2 0 0 0 0 0 2 0 2 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 2 0 0 0 0 0 0 0 0 0 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 2 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 1 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 2 0 1 1 2 0 0 2 1 1 1 1 2 2 0 0 0 0 0 0 0 0 0 0 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 2 0 0 0 0 0 2 0 2 0 2 2 0 0 0 0 0 2 2 2 0 0 0 2 2 2 2 2 2 0 0 0 0 0 0 0 2 2 2 0 0 0 0 0 0 2 2 0 0 0 2 0 2 0 0 2 0 0 0 0 0 2 0 0 2 2 0 0 0 0 0 0 2 2 2 0 0 0 0 0 0 0 2 0 2 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 2 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 2 0 0 0 0 0 0 2 2 0 0 0 0 0 0 0 0 0 0 0 0 2 2 0 2 0 0 2 0 0 0 2 2 0 2 2 0 0 0 0 0 0 0 2 2 2 2 2 0 0 0 0 0 2 2 2 2 2 2 1 2 2 2 2 2 0 0 0 2 2 2 0 1 2 2 2 2 0 1 1 0 2 2 1 1 1 1 1 1 1 2 1 1 1 0 0 0 0 0 2 1 2 0 0 0 2 2 2 2 2 2 1 0 1 1 2 2 2 2 2 2 1 1 1 1 0 2 2 0 1 0 2 1 1 2 2 2 2 1 0 0 1 0 0 1 0 0 0 0 0 0 1 1 1 0 0 0 0 0 1 1 0 0 0 0 1 1 1 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 0 0 0 0 1 1 1 1 0 1 1 1 0 1 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 1 0 2 2 1 1 1 0 0 0 2 2 2 2 2 0 1 0 0 0 1 0 0 0 0 0 0 0 2 2 2 2 1 0 0 0 1 1 1 1 0 0 0 0 0 0 1 0 1 1 1 1 1 1 1 0 0 0 0 1 0 1 1 1 1 0 0 1 1 0 1 2 2 2 2 2 2 0 2 0 2 2 2 2 2 0 0 0 0 2 0 1 2 0 2 0 0 0 0 0 1 1 1 1 2 2 0 0 1 0 2 0 1 0 0 2 0 1 1 1 0 1 0 0 0 2 1 0 0 0 1 1 0 0 0 0 0 2 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 0 2 0 0 0 0 1 1 1 1 1 1 1 0 0 0 0 0 1 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 1 1 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 2 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 2 2 0 0 0 0 0 0 0 2 2 2 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 0 2 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 0 0 0 2 2 2 2 2 2 2 2 2 2 0 0 0 2 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 1 1 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 2 2 2 2 2 0 0 0 0 2 2 2 2 2 2 2 0 2 2 2 0 2 2 2 2 0 0 2 0 0 2 2 2 2 2 0 0 2 2 2 2 2 2 2 2 2 0 2 2 2 2 0 2 2 2 2 0 2 2 2 2 2 2 0 0 2 0 0 2 0 0 1 1 1 2 2 2 2 0 0 0 2 2 2 2 2 0 0 1 2 2 2 2 2 2 2 2 2 2 2 2 2 0 1 2 2 0 2 2 2 2 2 1 1 0 1 0 2 2 2 2 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 0 0 0 2 2 1 2 2 2 1 0 1 0 2 2 2 2 2 1 1 1 0 0 1 0 2 2 2 2 1 1 1 1 0 0 0 0 0 0 2 1 1 1 1 1 1 1 1 1 0 1 1 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 1 1 1 1 0 0 0 1 0 0 1 1 0 1 0 0 0 1 1 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 0 1 0 0 0 0 0 0 1 1 1 1 1 1 0 0 0 0 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 1 0 0 0 0 1 1 0 0 0 1 0 0 0 0 1 0 1 0 2 2 1 1 1 0 0 0 0 0 0 1 1 0 0 0 2 0 0 0 0 2 0 0 0 0 0 1 1 0 0 0 0 1 1 1 1 0 0 0 0 0 0 1 1 1 1 1 1 0 1 0 0 0 0 0 2 2 2 2 2 2 2 2 2 2 2 2 2 2 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 1 2 0 0 1 0 1 0 2 1 2 2 2 1 2 2 2 1 2 2 2 2 1 1 1 1 1 2 1 1 2 1 2 2 0 1 1 1 1 0 1 1 1 1 0 0 0 1 0 0 0 0 0 2 2 2 2 2 0 2 2 0 0 0 0 0 0 0 0 0 0 2 0 0 0 2 2 2 0 0 0 0 0 0 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 2 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 2 2 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 2 2 2 2 0 0 0 0 0 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 2 2 2 0 0 0 0 2 2 2 2 2 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 1 0 2 0 0 0 0 0 2 2 2 0 0 0 2 2 0 0 0 0 2 2 0 2 2 2 2 2 0 2 2 2 2 2 0 0 2 2 2 2 2 2 2 0 2 2 2 2 2 0 0 0 0 0 2 2 2 2 2 2 0 0 2 2 0 0 0 2 2 2 2 0 0 0 0 0 2 2 0 2 2 0 0 0 0 0 0 2 2 2 2 0 0 0 0 0 1 1 2 2 2 2 2 2 1 2 2 2 2 2 0 0 2 2 2 2 2 2 2 1 2 2 2 2 2 2 2 1 1 1 1 1 0 1 1 1 1 2 2 0 0 0 0 0 1 1 1 0 0 0 0 2 0 0 1 0 0 0 1 1 0 1 2 2 2 2 2 2 1 0 2 1 1 1 1 1 1 0 1 1 1 1 0 1 1 0 0 1 1 1 1 1 0 0 0 1 0 1 1 1 0 1 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 1 1 1 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 1 0 0 0 0 1 0 0 1 1 0 0 0 1 1 1 1 0 0 0 0 0 1 1 1 0 0 0 0 1 0 1 0 1 1 1 1 1 0 0 1 1 0 0 1 1 0 1 1 1 0 1 1 1 2 2 2 2 2 2 2 2 2 0 0 2 0 2 0 0 0 0 0 2 0 0 0 0 0 0 1 1 1 1 1 1 0 0 1 2 1 2 2 2 0 0 1 1 1 1 2 0 2 1 1 2 0 2 2 0 2 1 1 1 0 0 0 0 0 0 0 0 1 0 0 1 1 1 0 1 1 0 1 1 1 2 2 2 2 2 2 0 1 1 1 1 1 0 1 2 1 2 2 0 0 0 2 0 0 0 2 2 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 1 1 1 1 1 1 1 0 0 0 0 0 0 0 1 0 2 1 1 0 0 2 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 2 0 0 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 2 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 2 2 2 0 0 2 2 2 0 0 0 0 0 0 0 0 0 0 2 2 2 2 2 0 0 2 2 0 0 2 0 2 0 2 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 2 2 0 0 0 0 0 2 2 2 2 2 0 0 0 2 0 0 2 2 2 2 2 2 0 2 2 2 0 0 0 0 2 2 0 2 2 2 0 2 0 0 0 0 0 0 0 0 2 0 0 0 2 0 0 0 0 0 0 0 0 0 0 1 1 0 2 0 1 0 1 0 0 2 2 2 0 2 1 1 1 1 1 1 1 0 2 1 0 0 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1 0 0 0 0 1 1 1 0 0 0 0 0 0 0 1 0 1 1 1 0 0 0 0 0 0 0 0 1 1 1 0 0 0 1 1 0 0 0 1 0 0 0 0 0 1 0 0 0 1 0 0 1 0 1 0 1 1 0 1 1 1 1 1 1 1 1 1 0 1 1 1 0 0 1 0 1 1 0 0 1 0 0 1 0 1 1 0 0 0 1 1 1 1 0 0 0 0 2 2 0 2 2 2 2 0 0 2 2 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 2 2 1 2 2 2 2 2 2 0 0 0 2 2 1 1 1 0 0 0 0 0 2 2 2 1 0 2 1 1 1 1 0 0 1 1 1 1 1 1 1 0 0 1 1 0 0 0 1 1 1 1 1 1 1 0 2 0 0 1 1 1 1 0 0 1 0 0 0 0 0 2 1 0 0 0 0 2 2 2 2 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 1 0 1 1 1 0 1 1 0 0 1 1 0 0 1 1 1 1 1 0 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 1 0 0 1 1 1 0 0 0 2 2 2 2 2 0 2 0 0 0 0 0 2 2 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 2 2 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 2 2 0 0 0 0 0 0 0 0 0 0 2 2 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 0 0 0 0 0 0 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 2 2 0 0 0 2 0 0 0 0 0 0 2 0 0 2 2 2 0 0 0 0 1 2 2 2 2 2 2 0 0 2 0 0 0 0 2 0 0 0 0 0 0 2 2 2 0 2 0 0 0 0 0 2 2 2 0 0 0 0 0 0 0 0 0 0 2 2 2 0 0 0 0 0 2 0 0 0 0 0 2 2 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 2 0 2 1 1 0 2 2 2 2 0 1 1 1 1 1 1 1 1 0 2 1 1 1 1 1 1 1 0 0 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 1 0 1 0 0 0 1 1 0 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 1 0 1 1 0 1 0 0 1 0 0 0 0 0 0 0 0 1 1 0 1 0 1 0 1 1 0 0 1 1 0 1 0 1 1 0 0 0 1 1 0 0 1 1 1 0 0 0 0 0 0 0 0 0 2 0 0 2 2 2 2 2 2 0 0 0 0 2 2 0 2 0 0 0 2 2 0 0 0 0 1 1 2 0 0 0 0 0 2 2 0 1 1 2 1 0 1 1 1 1 1 0 1 1 1 0 1 1 1 1 1 1 1 1 1 0 0 0 1 1 0 1 0 0 1 1 0 0 2 2 0 0 0 0 0 0 2 2 0 2 2 2 2 0 0 0 0 0 0 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 1 1 1 1 1 1 1 1 0 0 0 1 0 0 0 0 0 1 1 0 1 1 1 1 1 1 1 1 1 1 1 0 1 1 0 0 1 0 1 1 1 1 1 0 0 0 0 0 0 1 1 0 1 0 1 0 0 1 1 0 0 0 0 0 2 0 2 2 2 2 1 1 0 2 0 0 1 0 0 1 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 0 0 2 2 2 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 2 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 2 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 2 2 2 2 2 2 2 2 2 2 1 1 1 0 2 2 2 1 0 0 0 0 0 2 0 0 2 2 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 2 2 2 2 0 2 2 1 1 1 1 2 2 1 1 1 1 2 2 2 1 1 1 1 0 2 0 0 0 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 1 0 0 0 1 0 0 0 0 1 0 0 0 0 0 2 1 0 0 1 0 0 0 0 0 1 1 0 0 1 1 0 0 1 1 1 0 1 0 0 0 1 1 1 1 1 1 1 0 0 0 1 0 0 1 0 0 1 1 1 0 0 0 0 1 2 0 2 0 0 2 2 2 2 2 2 2 2 2 2 0 0 0 0 0 0 0 2 2 0 0 0 0 0 2 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 2 0 2 2 2 2 0 1 0 0 0 0 0 0 2 1 1 1 1 1 1 1 1 1 1 1 1 1 2 2 1 1 1 1 1 1 2 2 1 1 1 1 1 0 0 0 0 1 1 1 1 0 2 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 1 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 0 1 0 1 1 1 0 0 1 1 1 1 1 0 0 1 1 0 1 1 1 1 1 0 0 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 2 2 1 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 2 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 0 2 2 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 2 2 0 0 0 2 2 2 0 2 2 2 0 0 0 1 0 0 0 0 0 0 1 2 2 2 0 0 2 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 1 1 0 1 1 0 2 0 2 1 2 1 1 1 0 0 0 2 1 0 0 2 2 1 2 1 1 1 1 1 1 1 1 1 1 0 1 1 1 0 0 0 1 0 0 0 0 0 1 1 1 1 1 1 1 1 1 0 0 0 0 1 1 1 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 1 0 0 0 1 0 1 1 1 1 1 0 0 0 0 0 0 0 1 0 0 0 1 0 1 1 1 1 1 1 1 1 1 1 0 0 1 0 0 0 0 0 2 2 2 2 2 2 2 0 0 0 2 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 2 0 0 0 0 0 1 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 1 0 0 1 1 1 1 1 0 0 0 0 0 0 2 2 0 0 0 0 0 2 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 0 0 0 0 0 0 0 1 0 0 0 1 0 1 1 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 2 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 1 0 0 0 0 0 1 0 0 0 1 1 1 1 1 1 1 1 1 0 0 1 1 1 1 1 1 1 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 1 0 0 0 1 2 2 0 0 0 2 0 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 2 0 0 0 0 0 2 2 2 0 0 0 0 0 0 0 0 2 2 2 0 0 0 0 2 2 0 0 0 2 0 0 0 2 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 1 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 2 0 0 0 0 0 0 0 0 1 1 1 1 0 0 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 2 2 0 0 2 2 2 2 1 2 2 1 1 1 1 2 1 1 1 1 0 1 0 1 1 1 1 1 2 2 2 2 2 1 1 1 1 1 1 1 1 0 1 0 1 1 1 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 1 1 0 0 0 0 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 1 0 0 0 2 0 1 0 0 0 0 2 0 0 0 0 0 0 2 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 1 1 0 1 0 1 0 0 0 0 0 0 0 0 2 2 2 2 2 0 2 2 2 2 2 2 0 0 0 2 0 0 0 2 0 0 0 2 0 0 0 2 2 2 0 0 2 0 0 0 2 2 2 0 2 0 0 0 0 0 0 2 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 1 0 0 2 0 2 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 0 0 1 0 1 1 0 1 0 0 0 0 0 0 0 0 1 0 0 1 1 0 1 1 0 0 0 0 1 1 1 1 1 1 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 1 1 1 0 1 1 0 0 1 0 0 0 0 1 1 1 1 0 0 0 1 1 0 1 1 1 1 1 1 0 0 0 1 1 1 0 0 2 0 0 0 1 1 1 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 2 2 2 0 0 0 0 0 0 0 0 0 0 2 2 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 2 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 1 0 0 0 1 1 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 1 0 1 1 1 1 1 1 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0 1 1 0 0 0 1 0 0 0 0 0 0 0 2 2 2 0 0 0 0 0 0 0 0 0 2 1 1 1 0 2 2 2 2 2 1 1 1 1 1 0 1 0 1 2 2 1 1 1 1 1 1 1 1 2 2 1 2 2 2 2 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 1 1 1 1 0 0 0 0 1 1 1 1 1 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 1 1 0 0 2 0 0 0 0 0 1 0 0 0 0 1 1 0 0 0 0 1 0 0 0 1 1 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 2 0 0 0 0 0 1 1 1 0 0 1 1 0 0 0 0 0 1 1 1 0 0 0 1 0 0 0 0 2 0 0 0 2 2 2 2 2 2 2 2 0 2 2 2 2 2 2 2 2 0 2 2 2 0 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 2 2 2 0 0 0 0 2 0 0 2 2 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 1 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 0 0 0 1 0 1 1 1 1 0 0 1 1 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 1 0 0 1 1 1 0 1 0 0 0 0 0 0 1 0 1 1 0 0 1 1 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 0 0 0 0 0 0 0 0 0 2 2 0 2 0 2 2 0 0 0 0 0 0 0 0 2 2 0 0 2 2 0 0 2 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 1 1 1 0 0 1 0 0 0 1 1 1 1 1 0 0 0 0 0 1 1 1 1 0 0 1 1 1 0 0 1 0 0 0 0 0 0 0 0 0 1 1 1 0 1 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 0 0 1 0 1 0 0 1 0 0 0 0 0 1 1 1 1 1 0 0 0 0 0 0 0 0 1 1 1 1 1 1 0 0 0 1 1 1 0 0 1 1 1 1 0 2 0 0 1 0 0 1 2 0 0 1 0 0 0 1 0 0 0 2 0 0 0 1 1 0 0 1 0 0 1 0 1 1 1 0 1 0 0 1 1 1 1 0 0 2 2 1 1 0 1 0 1 0 0 0 2 2 2 1 1 0 2 2 2 0 1 1 1 2 2 2 0 0 0 0 0 0 1 1 1 1 2 2 2 2 0 1 1 1 1 1 0 0 0 0 0 1 0 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 1 1 0 0 1 1 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 1 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 2 0 0 1 1 1 0 1 1 1 0 1 1 0 0 1 0 0 1 1 0 2 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 2 2 2 2 2 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 2 2 2 0 0 0 2 2 0 2 0 2 2 2 2 2 2 2 2 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 0 0 0 0 0 0 0 0 2 2 2 2 2 2 2 2 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 2 0 0 0 2 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 1 1 0 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 1 1 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 1 0 0 0 0 1 0 0 0 0 1 0 0 1 0 0 0 1 0 0 0 0 0 1 1 1 1 0 1 1 1 1 0 1 1 1 1 1 1 0 0 0 1 1 0 1 0 0 1 0 1 1 0 0 0 0 0 1 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 2 0 0 0 0 2 2 2 2 0 0 0 0 2 2 0 0 0 0 0 0 0 0 0 0 0 0 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 1 0 0 0 1 1 0 0 0 0 0 1 0 0 0 0 0 1 1 0 0 0 1 1 0 0 0 0 0 0 1 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 1 1 1 1 0 0 1 1 0 0 0 0 0 0 0 1 1 1 1 1 0 0 0 0 0 0 0 1 1 1 0 1 1 1 1 1 1 0 0 1 1 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 1 1 1 1 2 2 2 0 0 0 0 0 0 0 0 1 1 0 0 1 1 2 0 1 0 0 0 0 0 1 0 0 2 0 1 0 0 2 0 0 1 0 0 0 0 2 0 0 0 0 0 2 1 0 1 0 0 0 2 2 2 0 1 0 2 0 0 1 2 0 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 1 0 0 1 2 2 2 1 1 1 0 0 0 1 1 0 0 0 1 1 1 1 1 1 1 0 1 1 0 0 0 0 0 1 1 0 0 1 1 1 0 0 0 0 0 0 0 1 0 0 1 1 1 1 0 0 0 0 0 1 1 1 0 0 0 0 0 1 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 0 0 0 1 0 0 0 0 0 0 1 1 1 0 0 0 1 0 1 0 1 0 0 0 1 0 0 2 2 0 1 1 1 1 0 0 0 0 2 2 2 0 0 0 0 0 0 2 0 1 1 0 1 0 0 0 2 0 1 0 0 0 0 0 0 0 1 1 0 1 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 2 2 0 2 0 2 0 0 0 0 0 0 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 0 0 2 0 2 0 0 0 0 0 0 0 0 0 2 0 0 0 0 2 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 2 2 2 2 0 0 0 0 0 0 0 0 2 0 0 2 0 0 2 2 0 2 2 0 2 0 0 1 0 0 0 0 0 0 0 0 0 0 1 1 2 0 0 0 0 0 0 0 0 1 0 0 0 0 2 2 0 0 0 2 2 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 2 2 2 2 0 0 0 0 0 0 2 2 0 0 0 0 0 0 0 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 1 1 1 0 1 0 1 1 1 1 1 1 1 1 1 0 1 0 1 1 1 0 1 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 1 1 1 0 1 1 1 1 0 0 0 0 0 1 1 0 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 2 0 0 0 2 0 0 2 2 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 1 0 0 0 1 0 0 0 0 1 0 0 0 0 1 1 0 1 0 1 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 1 1 1 1 0 1 1 0 0 0 1 1 1 0 0 0 0 0 1 0 0 2 2 2 2 0 0 0 0 1 2 0 0 0 0 0 0 1 1 2 2 2 2 1 1 0 0 1 1 2 2 2 2 2 2 2 2 0 2 2 2 2 2 2 2 2 0 0 0 1 2 2 2 1 0 1 0 0 0 0 0 0 0 1 0 0 2 2 2 1 1 1 0 0 0 0 0 2 1 0 0 2 0 1 0 0 0 0 1 0 0 1 2 2 2 0 1 1 1 0 0 0 1 1 0 2 1 0 1 0 2 2 2 0 1 1 2 0 1 0 1 0 0 0 0 1 1 0 0 0 0 1 1 1 0 0 0 0 0 0 1 1 1 0 0 0 1 1 0 1 1 0 0 0 1 1 1 1 1 1 1 1 1 0 0 0 0 0 1 0 1 0 0 0 0 1 1 1 0 0 0 1 1 1 1 1 1 0 0 0 0 0 2 0 0 2 2 1 0 0 0 1 1 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 2 0 0 0 0 0 2 2 2 0 0 0 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 0 0 0 2 2 0 2 0 0 0 0 2 0 0 0 2 2 2 0 0 0 0 0 0 0 0 0 0 0 2 0 2 0 0 0 0 2 2 2 2 2 0 0 2 0 0 0 0 0 0 0 0 1 0 0 0 1 1 0 0 0 2 2 2 2 2 2 2 2 2 2 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 1 1 1 0 1 1 1 0 0 0 0 0 0 0 0 1 0 1 1 0 1 1 1 0 0 1 1 0 0 1 1 1 1 1 0 1 1 1 1 1 1 1 0 0 1 1 0 0 0 0 0 1 1 1 0 0 1 1 0 0 0 0 1 0 0 0 0 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 1 1 1 1 1 1 0 0 0 0 1 1 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 2 2 2 2 0 0 0 0 2 2 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 1 1 1 0 0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 1 1 1 1 0 1 1 0 0 1 1 1 0 0 0 0 0 0 0 0 0 1 0 2 2 0 0 0 1 1 0 2 2 0 0 0 0 0 2 1 1 0 0 0 0 0 0 2 0 0 0 0 2 2 2 2 2 2 2 2 2 1 1 0 0 0 2 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 2 1 1 0 0 0 0 0 0 0 0 2 2 1 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 1 0 0 0 0 0 2 0 2 2 0 0 0 0 0 0 0 2 2 0 0 0 0 0 1 1 0 2 0 0 0 0 0 0 1 0 0 0 0 1 1 0 0 0 1 1 0 0 0 0 0 1 1 1 0 0 0 0 0 1 1 0 0 0 0 0 0 1 1 0 0 0 1 1 1 1 0 0 0 0 0 0 0 1 1 1 0 1 0 1 1 1 1 0 1 0 1 0 1 1 0 0 0 1 1 1 0 1 1 1 1 0 0 0 0 0 0 1 0 0 1 1 1 0 1 1 0 0 2 0 0 0 0 1 2 1 0 2 2 2 0 0 0 0 0 0 2 2 0 0 2 0 2 2 2 2 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 2 2 2 2 2 2 2 2 2 0 0 2 2 2 2 0 0 0 0 0 0 0 2 2 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 1 1 1 1 0 1 1 1 1 1 0 1 1 1 1 0 0 1 1 1 0 0 0 0 0 0 1 1 0 0 0 1 1 1 1 1 0 1 1 0 0 0 0 1 1 0 0 0 0 0 1 1 0 0 0 0 0 0 0 1 1 1 1 1 0 0 0 0 0 1 0 0 1 0 0 1 1 1 1 0 0 0 0 0 0 0 1 1 0 0 0 0 1 1 0 0 0 0 0 1 0 1 1 0 0 1 0 1 1 0 1 1 1 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 0 0 0 0 0 0 2 2 0 0 2 2 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 1 1 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 2 0 1 0 0 2 1 0 0 1 0 0 0 0 2 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 2 1 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 1 1 1 1 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 2 0 1 0 0 2 0 0 0 0 0 0 0 1 1 1 1 0 0 1 1 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 1 0 1 1 1 0 1 1 1 1 1 0 0 1 0 1 0 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 0 0 1 1 0 0 1 1 1 1 1 1 0 1 1 1 1 1 0 0 0 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 2 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 2 0 0 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 0 0 0 0 0 0 0 2 2 2 2 2 0 0 2 0 0 0 0 0 0 0 0 2 2 2 2 0 0 0 2 0 0 0 0 2 2 2 2 2 2 2 2 2 0 0 0 0 0 0 0 0 1 0 0 0 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 0 1 1 1 0 1 1 1 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 2 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 1 1 0 1 1 1 0 0 1 1 1 0 0 0 0 1 1 1 1 0 0 1 1 0 0 0 1 1 1 0 0 1 1 1 1 0 0 0 0 1 0 0 0 0 1 1 1 1 1 0 1 0 0 0 0 0 1 1 1 1 1 1 0 1 1 1 1 0 0 0 0 0 0 1 0 1 0 0 1 1 1 1 1 1 1 1 0 0 0 1 1 1 1 1 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 2 2 2 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 0 1 1 0 0 0 0 0 0 0 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 1 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 1 0 0 0 0 0 1 1 0 0 0 0 1 1 0 0 0 0 0 1 1 1 0 0 1 1 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 2 0 0 0 2 0 0 0 0 0 0 0 0 0 0 1 1 2 2 2 2 2 2 2 2 2 0 0 0 0 0 0 1 0 2 0 0 0 2 2 2 0 0 0 0 0 0 2 0 0 0 0 2 0 0 0 0 0 0 0 0 0 2 2 2 2 0 0 0 0 0 0 0 1 1 1 1 0 1 1 0 0 0 0 0 0 2 2 0 0 0 0 0 0 2 2 2 0 0 2 1 1 1 1 1 0 0 1 1 1 1 0 0 0 0 0 1 0 0 1 1 1 0 1 1 0 0 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 0 1 1 1 1 0 1 0 1 0 0 0 0 0 1 0 1 1 1 1 0 1 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 2 0 0 2 2 0 0 0 2 2 2 2 2 2 2 2 2 2 2 2 2 2 0 2 2 0 0 0 0 0 0 0 2 0 0 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 0 2 0 0 0 2 1 0 0 0 2 2 2 1 1 1 1 1 2 0 1 0 0 1 0 1 0 1 1 1 1 1 1 1 0 0 0 1 1 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 2 2 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 1 0 1 1 0 0 0 0 1 0 1 1 0 1 1 0 1 1 0 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 1 1 1 1 0 0 0 1 1 1 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 1 1 1 1 1 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 0 0 0 0 0 0 0 0 2 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 2 2 0 0 0 2 0 2 2 0 0 2 2 0 0 0 0 0 0 0 0 0 0 2 0 0 2 2 2 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 1 0 0 1 1 1 1 1 0 0 1 1 0 0 1 1 1 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 1 0 0 1 1 1 1 1 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 2 1 1 0 0 0 0 0 0 2 2 0 2 2 0 0 2 2 2 2 0 0 0 2 2 2 0 0 0 2 2 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 2 1 1 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 1 1 1 1 1 1 1 0 1 0 0 0 0 2 1 0 1 1 1 0 0 1 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 1 1 0 1 1 1 0 0 0 0 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 0 1 1 1 1 1 1 0 1 0 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 2 0 0 0 0 0 0 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 0 0 0 2 0 0 2 0 2 2 2 0 0 0 2 0 2 0 2 2 2 2 2 0 0 0 0 0 0 2 2 0 0 0 0 0 0 2 2 0 1 0 0 0 1 0 1 1 1 1 1 1 1 1 0 1 0 1 1 1 0 0 1 1 1 0 1 1 1 0 1 1 0 1 0 0 0 0 0 0 2 0 2 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 2 0 1 2 1 1 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 2 2 0 0 0 0 2 2 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 0 1 0 0 0 0 0 0 0 0 1 1 0 0 0 1 0 0 1 0 1 0 0 1 1 0 0 0 1 1 0 1 0 0 1 1 1 0 1 1 1 1 1 0 1 0 1 1 0 0 0 0 0 1 1 0 0 0 0 1 1 0 1 0 1 0 0 0 0 0 0 0 0 1 1 0 1 1 0 1 1 1 1 0 0 0 0 0 1 1 0 0 0 1 1 1 1 1 0 0 0 0 1 0 0 0 0 1 0 1 1 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 2 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 0 0 0 0 2 0 0 0 0 2 0 2 2 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 2 2 2 2 2 0 0 0 0 0 0 0 0 0 0 0 2 2 2 2 2 2 0 0 2 0 0 0 0 0 0 0 2 2 2 2 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 1 1 0 0 0 0 0 0 0 1 1 1 1 0 0 0 1 1 1 1 1 0 0 1 1 1 1 1 1 0 0 0 0 0 0 1 1 0 1 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 2 0 0 0 0 0 0 1 2 2 2 0 2 2 1 1 2 2 2 2 2 2 2 0 0 0 0 1 0 2 2 2 2 2 0 0 2 0 2 0 0 0 0 0 2 0 0 0 0 2 1 0 0 0 0 0 1 1 1 1 0 2 2 2 2 1 1 0 0 0 2 2 2 2 2 2 2 2 1 1 1 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 1 1 1 0 1 0 0 0 0 1 1 1 0 0 0 0 2 2 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 2 2 0 0 0 0 1 2 0 0 0 0 0 2 2 2 2 0 0 2 2 2 2 2 2 2 2 0 0 2 2 2 0 0 0 0 0 0 0 0 0 0 0 2 2 2 2 2 2 0 0 2 0 0 0 0 0 0 2 2 2 0 0 0 0 0 2 0 0 0 2 0 2 2 2 2 0 0 2 2 2 2 0 0 0 1 1 1 1 0 2 2 2 1 1 0 1 0 1 1 1 2 2 2 1 1 1 2 1 1 1 1 1 1 1 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 2 2 0 0 0 0 0 0 0 2 0 0 0 0 0 2 0 0 2 2 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 1 1 1 1 1 1 0 0 0 0 0 0 1 1 1 0 0 0 0 0 1 1 1 1 0 0 0 0 1 0 0 0 0 1 0 0 1 0 0 0 0 1 1 1 1 1 1 0 0 0 1 1 1 1 1 0 1 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 0 2 0 0 0 0 1 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 2 2 0 0 1 2 0 2 0 0 2 2 2 2 0 0 0 0 0 0 0 0 0 0 0 2 0 2 0 0 0 0 0 0 2 0 0 0 0 1 0 1 0 2 0 2 2 0 0 0 0 0 0 0 1 1 0 2 2 2 0 1 0 0 2 0 0 0 2 2 2 2 0 0 0 0 0 2 0 0 0 0 0 0 0 1 1 1 1 1 1 0 0 1 1 1 1 0 0 0 0 1 1 1 1 1 1 0 1 1 0 0 0 1 1 1 1 1 1 1 1 1 0 0 0 0 1 1 1 1 1 1 1 1 1 1 0 0 0 1 1 1 1 0 0 0 0 0 0 1 1 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 2 2 2 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 1 0 0 0 0 0 1 2 2 2 2 1 0 0 0 0 0 0 0 0 2 2 0 0 2 2 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 1 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 1 0 0 1 1 0 1 1 0 1 0 1 1 1 1 1 0 0 1 1 0 0 1 1 1 1 1 1 1 1 1 1 0 0 1 1 1 1 1 0 1 0 0 1 1 0 1 0 0 0 1 0 0 0 0 0 0 0 0 2 0 2 2 0 0 0 0 0 0 0 2 2 2 0 0 0 0 0 0 0 2 2 0 0 2 2 2 0 0 0 0 0 0 0 0 0 2 0 0 2 2 2 2 2 2 0 0 0 0 0 2 2 2 0 0 2 0 0 2 2 2 2 2 2 2 2 0 2 2 2 2 0 0 0 0 0 0 0 0 0 2 2 2 2 0 2 0 2 2 2 2 1 2 2 2 1 1 1 1 2 2 2 2 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 0 2 2 0 0 2 0 2 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 1 0 0 0 0 0 0 0 0 1 0 0 1 1 0 1 1 1 0 1 1 1 0 0 0 0 0 1 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 1 1 0 0 0 0 1 1 0 1 1 1 0 0 1 1 1 1 1 0 0 1 1 1 1 0 1 1 1 1 1 0 0 0 0 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 1 2 0 2 1 1 2 2 2 2 2 1 2 2 2 2 1 1 1 1 0 0 0 2 2 2 2 2 2 2 2 0 2 2 2 2 2 2 2 2 0 0 0 0 0 2 2 2 0 0 0 2 2 2 0 0 0 0 0 1 1 1 1 1 0 0 0 2 2 0 0 0 1 1 0 0 0 0 2 0 0 2 2 2 0 2 0 0 0 0 0 0 0 2 0 0 0 0 0 1 0 2 2 0 0 0 2 0 2 1 1 0 0 1 0 0 0 0 0 1 1 1 1 1 1 1 1 1 0 0 0 1 0 0 1 1 1 0 0 1 1 1 1 0 0 1 1 1 1 1 0 1 1 1 1 1 1 1 0 0 0 2 2 2 2 2 2 2 2 2 0 0 2 2 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 2 2 2 2 2 2 0 0 0 0 0 0 0 0 2 2 0 0 0 0 1 1 1 0 0 0 2 2 0 0 0 0 1 1 0 0 0 0 2 2 2 0 0 0 0 0 0 2 2 2 2 2 2 0 0 0 1 1 0 0 0 0 0 2 1 1 0 0 1 0 0 2 1 0 0 1 0 0 0 2 1 1 1 1 1 1 0 0 0 1 0 0 0 1 1 0 0 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 1 2 2 2 0 2 0 2 2 2 1 1 0 0 2 2 0 0 0 2 2 2 2 0 0 0 2 2 0 0 0 2 2 2 2 2 2 2 0 0 2 2 2 2 2 2 2 2 2 2 0 2 0 0 0 2 2 2 0 2 2 2 2 0 0 2 2 2 1 0 1 0 1 0 0 0 2 2 2 2 0 1 1 2 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 2 1 1 1 1 0 0 2 1 1 0 1 2 1 0 0 0 1 2 1 1 1 1 1 2 2 2 1 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 1 1 1 1 1 2 2 2 2 1 2 2 1 1 1 1 1 1 0 0 1 1 1 1 1 1 1 1 0 2 2 2 1 1 1 1 1 0 2 2 2 2 2 2 2 0 2 2 2 0 2 2 2 0 1 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 2 2 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 2 0 0 0 0 0 1 0 1 0 0 0 1 1 1 0 1 0 1 1 0 0 0 1 1 0 1 0 0 1 1 1 1 0 0 1 1 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 2 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 2 2 2 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 2 0 0 2 0 2 2 2 2 2 0 2 1 2 2 0 0 0 0 2 2 0 0 0 0 1 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 2 2 2 2 2 0 1 2 2 2 0 0 0 2 0 0 0 1 0 0 0 0 0 0 0 0 0 0 2 2 0 1 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 1 1 1 1 1 2 1 1 1 0 0 0 0 1 1 1 1 0 1 1 1 1 1 1 1 0 1 1 1 0 1 1 1 0 2 2 0 2 0 0 0 0 0 2 0 0 0 0 0 0 0 0 1 1 1 0 1 0 0 2 0 2 0 2 0 0 0 0 0 1 0 0 0 0 0 1 1 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 2 2 0 0 0 0 0 0 0 0 2 2 2 2 2 2 2 2 0 0 0 2 2 2 2 0 0 0 0 0 0 2 2 0 2 0 1 0 2 0 1 0 0 0 0 2 2 0 0 0 0 0 0 0 0 2 2 2 2 2 0 0 0 1 1 1 0 0 0 0 0 0 0 1 1 1 2 2 2 0 0 0 0 0 0 1 1 1 1 1 1 2 0 0 0 2 2 2 2 1 0 0 0 0 1 1 1 0 0 2 0 0 1 0 1 1 1 1 1 1 1 0 0 1 1 1 0 0 1 1 1 1 1 1 1 0 0 1 1 1 1 1 1 1 0 0 1 1 1 0 0 0 1 1 1 1 1 1 1 1 1 0 1 0 0 1 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 2 0 2 0 0 0 2 2 0 0 0 2 2 0 0 0 2 0 0 0 0 0 0 0 0 0 2 2 2 0 0 0 0 0 0 2 2 2 2 2 0 0 2 2 2 2 2 2 2 2 2 0 2 2 2 2 0 2 0 0 2 0 0 2 0 2 2 2 2 0 0 0 0 1 0 0 0 0 0 1 0 0 1 0 2 0 2 0 2 2 0 0 2 2 2 0 0 2 2 0 2 1 2 2 2 1 1 0 2 1 1 0 1 0 1 2 2 1 2 2 1 1 2 2 1 1 1 1 2 2 1 1 1 0 1 1 0 0 2 2 2 2 1 1 1 0 0 0 0 1 1 1 0 2 2 0 1 1 1 0 0 2 1 0 0 0 0 1 2 2 1 1 1 1 1 1 0 2 0 2 2 0 0 2 0 0 2 2 2 2 0 0 0 0 2 0 0 2 2 0 0 0 0 0 0 2 2 2 0 0 0 0 0 2 2 2 2 2 0 0 0 2 2 2 2 0 0 2 2 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 2 0 2 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 1 1 0 1 1 0 0 0 0 0 1 1 1 0 0 0 1 1 1 1 1 1 0 0 1 0 1 1 1 1 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 1 0 2 2 0 0 2 0 0 1 1 1 1 1 1 0 0 0 0 0 2 1 0 0 0 2 0 0 0 0 0 0 0 0 0 0 2 2 2 2 2 2 0 0 0 0 0 0 0 2 0 0 0 2 2 0 0 0 2 0 2 0 2 0 0 0 0 0 0 0 2 2 0 1 2 2 2 0 1 1 0 0 1 1 0 0 0 1 0 0 0 1 0 0 1 1 1 1 0 1 0 1 0 1 1 1 0 0 1 0 0 0 0 1 1 0 0 1 1 1 1 1 2 2 0 0 1 0 0 0 0 0 2 0 0 1 1 1 1 2 1 1 1 1 1 1 2 2 0 0 0 0 1 1 1 0 0 0 0 0 1 1 0 0 0 1 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 2 0 0 0 0 1 0 0 1 2 0 0 0 2 0 0 2 2 2 2 0 0 0 0 0 0 0 2 2 2 2 2 0 0 2 2 2 2 2 0 2 2 2 2 2 2 0 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 0 2 2 2 0 2 2 2 1 0 1 0 0 0 0 2 2 1 0 0 0 0 0 0 0 0 2 2 2 2 2 0 0 0 0 1 1 2 0 0 0 0 1 1 1 0 0 0 0 1 0 1 1 1 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 0 0 0 1 1 1 1 1 1 1 1 0 1 0 0 0 0 0 0 1 1 1 0 0 1 1 1 0 0 0 2 0 0 0 0 0 0 0 2 0 0 0 2 0 0 0 0 0 0 0 2 2 2 2 0 2 0 0 0 2 2 2 2 2 2 2 2 2 2 0 2 0 0 2 2 0 2 2 2 2 2 2 2 2 2 0 0 2 2 0 2 0 0 0 1 1 1 1 2 1 1 1 2 2 2 2 1 2 2 1 1 1 1 1 1 1 1 1 1 1 2 1 1 0 0 2 2 2 2 0 2 1 1 1 1 2 2 2 0 1 1 1 0 1 0 2 2 1 1 1 1 1 0 0 0 0 0 1 1 1 1 0 0 2 2 1 0 0 2 0 2 1 2 2 1 1 0 2 1 0 0 2 2 0 0 1 2 0 2 0 0 0 1 0 0 0 0 0 0 0 0 0 0 2 0 0 2 2 0 2 2 2 0 2 0 0 2 2 2 2 0 0 0 2 0 0 0 0 2 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 1 1 0 0 2 2 0 2 2 0 0 0 0 2 0 0 0 2 2 1 1 2 2 1 2 2 0 0 0 1 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 1 1 0 0 0 0 0 0 0 1 0 1 1 0 0 0 0 0 0 0 0 0 1 0 0 0 1 1 0 0 1 0 0 1 1 0 0 0 0 2 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 1 0 1 0 1 0 2 0 2 0 2 0 0 0 0 0 0 0 2 0 0 0 0 2 2 0 0 0 0 0 0 0 0 0 1 2 0 0 0 2 2 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 2 1 1 0 0 2 2 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 1 2 2 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 2 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 1 0 0 0 2 2 0 0 2 2 0 0 0 0 0 0 1 0 1 1 1 1 1 1 2 0 2 1 1 1 1 1 1 1 1 2 2 2 0 1 1 1 1 0 0 0 0 0 1 0 0 0 1 1 1 1 1 1 1 0 0 1 1 0 2 0 0 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 1 1 1 1 2 0 1 1 1 0 1 1 0 0 0 0 0 2 0 0 1 1 0 0 0 0 0 0 2 0 0 1 0 2 0 0 0 1 1 1 1 0 0 0 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 1 1 1 1 1 1 0 0 2 0 1 1 1 0 0 0 0 0 0 0 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 0 2 2 0 0 0 0 0 0 2 2 2 2 2 2 2 2 2 2 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 1 1 0 1 1 1 0 1 1 1 1 0 1 1 0 1 0 1 0 0 0 1 0 0 1 0 0 0 1 0 0 0 2 2 2 2 2 0 0 0 0 0 2 2 0 0 2 0 0 0 2 2 2 2 2 2 2 2 2 2 0 2 2 2 2 2 2 2 0 2 2 0 0 0 2 2 2 2 2 0 0 2 2 2 0 2 2 2 2 2 2 2 2 2 0 0 2 0 0 2 2 2 0 0 2 2 2 2 2 0 1 0 0 0 0 0 1 1 1 2 2 2 2 1 1 0 1 1 1 1 1 1 1 0 0 0 0 0 0 1 1 1 1 0 0 2 0 0 0 0 1 1 1 2 1 1 1 1 1 1 1 1 2 1 2 2 2 0 0 0 0 0 0 0 0 0 0 2 2 2 2 0 0 0 0 0 1 1 2 0 0 0 2 2 2 0 0 1 2 0 0 1 0 0 0 2 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 2 2 2 0 0 0 0 0 0 0 0 2 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 2 1 0 0 0 0 2 2 2 0 0 2 0 1 0 0 0 1 2 2 0 0 1 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 0 0 1 1 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 1 0 1 1 0 0 0 0 0 1 1 1 1 1 1 1 1 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 2 2 0 0 2 0 0 0 0 2 2 0 0 0 0 0 1 0 0 0 0 1 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 2 0 0 0 2 0 1 1 1 0 0 0 0 0 2 2 0 0 2 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 2 2 2 2 2 0 0 0 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 0 0 0 1 1 0 0 0 0 0 0 0 1 1 0 1 1 1 1 1 1 0 0 0 0 0 0 2 2 2 1 2 0 1 1 1 1 1 1 0 0 2 0 0 0 0 1 1 1 1 1 1 0 1 0 1 1 1 2 2 0 0 0 0 0 1 1 1 1 1 1 0 0 0 0 0 0 0 2 2 0 0 0 1 1 1 1 1 0 0 0 0 0 0 0 1 0 1 1 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 2 0 0 2 2 0 2 2 2 0 0 2 0 0 0 2 2 2 0 2 2 2 0 0 0 2 2 2 2 2 2 2 2 2 2 2 0 2 0 2 2 2 0 0 0 0 0 0 2 1 1 1 1 1 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 1 0 0 0 0 1 1 1 1 1 1 0 0 1 0 1 1 0 1 0 0 0 0 1 0 0 1 0 0 0 1 1 1 2 0 0 0 1 0 0 0 1 1 1 1 1 1 1 0 1 0 2 0 0 0 0 0 0 1 1 0 0 0 0 0 2 0 0 0 2 2 2 2 2 2 2 2 2 2 2 2 2 0 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 0 2 2 2 2 2 2 2 2 2 0 0 2 2 0 2 2 0 0 2 2 2 2 2 2 2 2 2 2 2 0 0 2 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 0 1 2 0 0 0 1 1 0 1 1 0 0 0 1 0 0 0 0 1 0 0 1 1 0 0 0 2 2 0 1 1 1 0 0 0 0 0 0 0 2 2 0 0 0 0 0 0 0 0 0 0 0 2 0 0 2 0 2 2 0 0 2 2 0 1 0 0 0 0 0 0 0 1 0 1 0 0 1 1 1 0 0 0 0 0 0 0 0 0 1 2 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 2 2 2 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 2 0 0 1 1 1 2 0 1 1 1 2 2 2 2 1 1 1 0 0 1 0 0 0 0 0 0 0 1 1 1 1 1 0 0 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 1 0 0 0 1 1 0 0 0 1 0 0 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 1 1 0 0 1 1 1 1 1 0 0 0 1 1 0 0 2 2 0 0 1 2 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 2 0 0 0 0 0 0 0 2 0 2 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 2 0 0 0 0 0 0 0 0 0 0 2 2 0 0 0 0 2 2 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 1 1 0 2 0 1 1 0 2 0 0 1 1 1 1 1 1 1 0 0 0 0 2 2 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 1 0 0 2 0 0 0 0 0 0 0 2 2 2 0 0 0 2 2 2 0 0 0 0 0 0 0 2 0 2 0 2 0 2 0 0 0 0 0 2 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 2 2 2 0 2 0 0 0 2 0 0 0 0 2 0 2 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 1 1 1 1 1 0 0 0 0 1 1 0 2 0 0 0 0 2 2 0 1 1 1 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 2 2 0 0 1 1 1 1 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 1 1 1 1 0 0 0 0 0 1 2 0 0 0 0 0 0 0 2 0 0 0 0 2 2 0 2 2 2 2 0 0 0 0 2 0 0 2 2 2 2 2 2 2 2 2 2 2 2 0 0 0 2 0 0 2 2 2 2 2 2 0 2 2 2 0 0 0 2 2 2 2 0 2 2 2 0 0 2 2 0 0 0 0 0 0 0 2 2 1 1 1 0 1 1 0 1 1 2 2 2 0 0 2 0 2 1 1 1 0 0 0 1 0 0 0 1 1 0 0 0 0 0 2 1 0 0 0 0 0 0 0 0 0 0 0 0 2 2 2 2 0 2 2 0 0 0 1 0 0 0 0 0 2 0 2 2 2 0 0 0 0 0 0 0 0 0 0 0 0 2 2 0 1 1 1 0 0 0 0 0 0 2 2 2 2 2 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 1 0 1 0 2 2 2 0 1 1 0 0 0 2 2 0 0 2 0 2 0 0 0 2 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 2 2 0 2 0 0 0 1 1 1 0 0 1 0 0 0 1 1 0 1 1 1 1 1 1 1 0 1 1 1 0 1 0 0 1 1 0 1 1 1 1 1 1 1 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 1 1 1 1 0 0 0 0 0 0 1 0 1 1 0 0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 2 0 0 0 0 0 0 0 0 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 1 0 0 0 0 1 1 1 1 0 0 2 2 0 0 0 1 1 1 1 1 1 1 1 0 0 1 1 1 1 0 0 2 0 1 0 0 1 1 0 1 1 1 0 0 0 0 0 0 2 2 1 0 0 2 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 2 0 0 0 0 0 0 0 0 2 2 0 2 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 2 2 0 0 0 0 0 0 2 0 0 0 0 0 0 2 0 0 0 0 0 0 2 0 2 2 2 2 2 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 1 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 2 0 0 0 2 0 0 2 0 0 0 0 0 2 0 2 0 0 0 0 2 0 2 2 0 0 0 0 0 2 2 2 0 0 0 2 2 2 2 2 2 0 2 2 2 0 0 2 2 2 2 2 0 0 0 0 2 2 2 2 2 2 0 0 0 0 0 2 0 0 0 0 1 0 1 2 0 1 2 2 2 0 0 0 0 0 2 1 1 1 2 2 2 1 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 2 0 0 0 1 1 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 2 0 2 0 0 0 0 2 0 0 0 2 1 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 2 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 2 0 0 0 0 0 0 0 0 1 0 0 1 0 1 1 0 0 0 1 1 1 1 2 2 1 1 1 1 1 2 2 2 2 1 0 2 0 2 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 0 0 1 1 1 1 1 1 1 1 1 1 0 1 0 0 0 0 0 0 1 1 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 1 1 2 1 1 1 1 0 0 1 1 1 1 1 1 1 0 0 0 1 1 0 0 0 1 1 0 0 0 1 0 0 2 0 0 0 0 2 2 0 0 0 0 2 0 0 0 0 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 1 0 0 0 0 0 0 0 0 2 0 0 0 2 0 1 1 1 1 2 0 0 0 0 1 1 0 2 0 0 1 1 1 1 1 1 0 2 1 0 0 1 1 0 0 0 0 2 2 2 2 0 0 0 0 0 0 2 2 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 2 0 0 0 0 0 0 0 0 2 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 2 2 2 0 0 0 0 0 0 2 2 2 0 1 1 1 1 1 1 1 0 0 1 1 0 2 2 1 0 0 1 1 0 0 0 2 1 0 0 2 2 2 0 0 0 0 0 0 0 0 2 0 0 0 0 0 2 0 0 0 1 1 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 2 0 0 0 0 0 0 0 2 2 2 2 2 0 0 0 2 0 0 0 2 0 2 2 0 0 2 2 0 2 0 2 0 0 0 0 2 0 2 2 0 0 0 2 0 0 0 0 0 0 2 2 0 0 0 2 2 2 2 0 1 2 2 2 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 1 0 0 0 0 0 1 1 2 2 0 0 0 1 0 0 0 0 0 1 1 0 1 0 0 0 2 2 2 1 0 0 1 1 0 0 0 0 0 0 0 2 0 0 0 0 0 1 0 0 0 2 2 2 1 0 0 2 0 0 0 0 0 2 0 0 0 0 0 0 0 0 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 0 0 0 1 1 0 2 1 1 2 2 1 0 0 0 0 0 0 0 2 2 2 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 0 1 1 1 1 1 1 1 1 0 0 1 1 1 1 1 0 0 0 0 0 1 1 0 0 0 0 0 2 0 0 1 0 0 1 1 1 1 1 1 1 1 0 0 0 1 1 1 1 1 1 0 1 2 0 0 0 0 2 2 2 2 0 0 0 2 2 2 0 2 0 0 0 0 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 2 1 2 2 2 2 0 1 1 1 1 1 0 1 1 1 2 2 2 0 0 0 0 0 1 1 2 2 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 0 0 0 0 2 2 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 0 0 0 0 0 0 0 0 0 2 2 2 2 0 0 0 0 0 0 0 0 2 2 0 0 0 0 0 1 0 1 1 0 0 0 0 2 2 0 2 2 2 2 1 0 0 2 2 1 1 0 2 2 2 2 0 0 0 0 1 0 0 2 2 2 2 0 0 2 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 2 2 2 0 2 0 2 2 0 0 0 0 0 0 0 0 0 0 0 2 0 2 0 0 0 2 2 2 2 2 2 0 2 2 0 0 2 2 2 2 2 2 2 2 0 2 2 2 2 2 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 2 2 1 1 1 0 0 1 2 2 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 0 0 0 2 0 0 0 0 0 0 1 0 0 0 0 0 1 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 2 0 2 0 0 2 0 1 1 1 1 1 1 0 0 1 0 1 1 1 1 1 1 0 0 0 2 0 0 0 0 0 0 2 0 0 2 2 2 1 0 0 0 0 2 2 0 0 0 0 0 0 2 2 2 0 2 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 1 1 0 1 1 1 1 1 1 1 1 1 0 0 0 1 1 1 0 0 0 0 0 0 0 0 1 1 1 1 0 2 1 2 1 0 0 0 0 0 0 2 0 0 0 1 1 1 2 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 1 1 1 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 1 1 1 0 0 1 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 0 1 0 1 1 0 1 1 1 1 1 0 2 0 2 0 0 2 0 0 0 2 2 2 0 2 2 2 0 2 2 2 2 2 2 0 2 2 2 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 1 1 1 0 1 1 2 2 2 2 1 0 1 1 1 0 1 1 0 1 2 2 1 0 0 0 0 0 1 0 2 0 2 2 2 2 0 0 0 2 0 0 0 0 0 0 2 2 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 2 0 0 0 0 2 2 2 2 0 0 0 0 0 0 2 2 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 0 0 0 2 2 2 2 2 2 2 0 2 2 2 0 0 0 0 0 0 2 0 2 0 0 2 2 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 1 0 0 0 0 2 2 0 0 0 0 0 0 0 0 0 0 2 2 1 2 2 2 2 2 2 2 2 2 2 2 2 0 0 0 0 1 1 2 2 2 2 2 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 1 1 1 1 0 0 1 1 0 0 0 0 2 0 0 0 0 0 0 1 1 1 1 0 0 0 2 2 0 0 2 2 1 0 0 0 0 2 2 0 2 0 0 0 0 0 0 0 2 2 0 0 2 2 0 0 2 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 0 0 1 1 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 1 1 0 1 1 2 2 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 2 2 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 2 2 0 1 1 0 0 0 2 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 1 1 1 1 1 1 0 1 1 0 1 0 1 0 0 0 0 1 0 1 1 1 1 0 0 1 0 0 0 1 1 1 1 1 1 1 0 0 0 1 1 1 1 0 0 1 1 2 2 1 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 0 0 1 1 1 1 0 1 1 1 1 0 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 2 2 2 2 0 0 0 1 0 0 2 2 2 2 2 0 1 1 1 1 1 1 1 0 1 1 0 0 0 1 1 0 1 0 1 1 1 1 0 1 1 1 1 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 2 2 0 0 2 0 2 0 0 0 0 0 2 2 2 2 0 0 0 0 0 0 0 0 0 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 2 2 2 0 1 0 1 1 2 2 2 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 0 2 1 1 1 1 1 2 2 2 0 0 0 0 2 2 0 2 0 0 0 0 0 0 0 2 0 0 0 2 2 2 0 0 0 0 0 0 0 2 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 2 0 0 2 0 2 2 2 2 0 0 2 2 2 0 2 0 0 0 0 2 2 0 0 0 0 0 0 2 0 2 2 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 2 2 2 0 0 0 0 0 0 0 2 0 0 0 2 2 2 2 0 2 2 1 1 2 2 2 2 2 2 2 2 2 0 2 1 1 2 2 2 2 1 1 1 2 1 1 0 1 0 1 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 0 1 0 0 0 2 0 0 0 1 1 1 0 0 0 0 2 0 0 0 0 0 0 0 2 2 2 2 2 0 0 2 0 2 0 0 0 2 2 0 0 0 0 2 2 2 0 2 2 0 0 2 0 0 2 2 0 0 0 0 0 0 0 0 0 2 0 2 2 2 0 0 0 0 0 0 0 2 2 0 1 0 0 0 1 1 0 2 2 1 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 2 2 1 1 0 0 0 0 2 2 2 2 2 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 2 2 2 2 2 2 2 2 0 2 2 2 2 2 2 2 2 2 2 1 0 0 0 0 0 0 0 1 1 1 0 0 1 0 1 1 0 0 0 0 0 0 0 2 0 0 0 0 1 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 1 1 0 0 0 0 1 0 1 1 1 1 1 1 0 0 1 1 1 0 0 0 0 0 1 1 0 0 0 1 0 1 0 0 0 1 1 1 1 1 1 1 0 0 1 1 1 1 1 0 0 0 1 1 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 1 0 0 1 1 1 1 0 0 0 0 1 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 1 0 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 2 0 0 0 0 0 0 0 0 0 0 1 1 0 1 0 0 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 1 1 1 2 2 2 2 2 2 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 2 2 2 1 1 0 2 0 0 0 0 0 0 0 0 0 2 0 0 0 0 2 2 2 2 2 0 2 2 2 2 2 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 2 2 0 0 0 0 0 0 0 0 2 2 2 2 0 0 0 0 0 0 0 0 2 0 0 0 0 2 2 2 0 0 0 0 0 0 0 0 0 0 0 2 2 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 2 0 0 0 0 0 2 2 2 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 2 2 2 0 0 0 0 0 1 2 2 2 2 2 0 0 0 0 0 0 2 0 0 0 1 1 2 0 2 2 2 2 2 0 1 2 2 2 2 1 1 1 0 0 0 1 1 1 1 0 0 0 0 1 1 0 0 0 2 0 0 0 0 0 0 0 0 1 0 0 1 1 1 1 0 2 1 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 2 0 1 2 0 0 1 1 2 0 2 0 1 2 0 2 0 0 2 0 0 0 2 0 0 2 2 0 1 2 2 2 2 2 2 2 0 1 0 0 0 2 0 0 0 0 0 0 1 1 0 0 0 1 1 1 2 0 0 0 0 2 0 0 1 0 1 1 1 2 2 2 2 2 2 0 0 0 0 0 2 2 2 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 2 2 2 2 0 0 0 0 0 2 0 2 2 0 0 0 0 0 0 2 1 1 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 1 0 1 1 1 0 1 0 0 0 0 1 0 0 0 1 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 1 1 0 1 0 0 1 1 1 0 0 0 0 1 1 1 1 0 1 1 1 1 0 0 0 0 0 0 0 0 0 1 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 2 2 0 0 0 0 0 1 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 2 2 2 2 2 0 0 0 0 2 2 0 0 1 0 0 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 2 2 2 2 2 2 0 2 2 2 2 2 0 0 0 0 0 0 0 0 2 0 2 2 0 0 0 0 0 2 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 0 0 2 2 0 0 2 0 2 2 0 0 2 0 0 0 0 0 2 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 2 2 2 0 0 0 1 1 2 2 2 0 0 0 2 2 1 1 0 2 2 2 1 1 2 0 0 1 1 1 1 0 0 0 2 2 2 2 0 0 1 2 2 2 2 0 0 0 1 1 1 1 1 1 1 0 0 0 2 0 0 0 0 2 0 0 0 0 0 0 2 2 2 1 1 1 0 0 0 0 0 1 0 0 0 0 0 1 1 0 0 1 1 0 0 0 2 0 1 0 2 0 0 0 0 0 0 0 0 2 2 0 0 2 2 2 0 2 0 0 2 0 0 2 2 2 2 1 1 1 1 0 2 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 1 1 0 0 0 0 0 0 0 0 0 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 2 2 0 0 2 2 0 0 0 2 2 2 2 2 2 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 2 2 2 2 2 2 1 1 0 0 0 0 2 2 2 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 1 1 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 1 0 1 0 1 1 0 0 1 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 0 0 0 0 1 1 0 0 1 1 1 0 0 0 1 0 0 0 0 1 1 1 1 0 0 1 0 0 0 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 0 0 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 0 0 0 2 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 0 1 0 1 1 1 1 1 1 1 0 0 0 0 2 0 2 2 2 0 0 0 0 0 2 0 0 0 0 2 0 2 2 2 2 0 0 2 2 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 0 0 0 0 0 0 2 2 2 2 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 2 0 0 0 2 2 2 0 0 0 1 1 2 2 2 0 0 1 2 0 0 1 0 0 0 0 2 2 2 1 1 2 0 2 2 1 1 1 1 2 0 0 0 0 2 2 2 0 0 1 2 2 2 1 1 0 2 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 2 0 2 2 0 2 0 2 0 0 1 1 1 1 1 1 1 1 1 0 1 1 1 0 0 0 0 1 1 1 0 0 0 0 0 0 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 2 0 2 2 0 0 0 0 0 0 0 2 2 2 2 2 1 1 0 0 0 0 0 0 0 0 0 2 2 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 1 1 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 1 0 1 0 1 0 1 1 0 0 0 0 1 1 1 1 1 1 1 0 0 0 0 2 2 2 0 0 0 0 0 0 0 0 2 2 2 2 1 1 2 2 1 1 1 1 0 2 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 2 2 2 2 2 2 0 0 2 0 0 2 2 2 2 2 0 0 2 0 0 0 0 2 2 0 0 0 0 2 2 0 0 0 0 0 0 2 0 0 2 0 2 2 2 2 0 0 0 0 0 0 0 0 0 0 0 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 2 0 2 0 0 0 0 0 2 2 2 0 0 0 1 1 2 1 1 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 2 0 2 0 0 0 1 1 1 1 1 0 0 2 2 0 0 0 0 0 0 0 1 2 0 0 0 0 0 0 1 1 2 1 1 1 1 1 1 1 2 2 0 1 2 0 0 1 1 1 2 0 0 2 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 1 0 0 0 0 0 2 2 0 0 0 2 0 0 0 0 2 0 0 0 0 0 0 0 2 2 0 0 0 2 0 0 0 2 0 0 0 0 0 0 0 0 1 1 0 1 1 1 2 0 0 0 1 1 1 1 1 0 1 1 0 0 1 1 1 1 1 0 1 0 0 1 0 0 1 1 1 1 1 0 0 0 0 0 1 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 2 2 0 0 0 0 0 0 0 0 0 2 1 1 0 0 0 2 0 2 0 0 0 0 2 0 0 1 1 0 0 0 1 0 0 0 1 0 0 0 0 0 0 1 1 0 0 0 1 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 1 1 1 1 0 0 0 0 0 0 1 0 0 0 0 1 1 1 1 0 0 1 1 0 0 0 0 0 0 0 1 0 1 1 1 1 0 0 1 0 1 1 1 1 0 0 0 1 1 1 1 1 1 0 0 1 1 0 2 0 0 0 1 1 1 1 1 0 0 0 0 0 2 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 1 1 0 1 0 0 0 0 1 0 1 0 0 0 0 0 0 1 1 0 0 1 1 1 1 0 0 1 0 0 0 0 0 2 2 2 0 0 0 0 0 0 0 2 0 2 2 2 2 2 2 2 0 2 2 2 1 1 0 1 0 1 1 1 1 1 1 1 1 1 1 2 2 2 1 1 1 1 1 1 1 1 1 1 0 0 0 0 2 2 2 2 2 2 2 2 2 2 0 0 0 0 2 2 2 2 2 2 0 0 0 0 2 2 2 2 0 0 0 0 0 0 0 0 0 2 2 2 0 0 2 0 0 0 2 0 2 0 0 0 0 0 0 0 0 0 0 2 2 0 0 0 0 0 0 2 2 2 2 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 2 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 0 2 0 0 0 0 0 0 0 0 2 0 0 0 0 0 1 2 0 0 0 0 0 2 1 0 0 0 0 0 0 0 2 0 0 0 0 2 0 0 0 0 0 2 0 0 0 2 2 0 0 0 0 2 0 0 0 1 1 0 0 0 1 1 2 1 1 0 1 1 1 1 2 2 0 0 0 0 0 1 2 0 0 1 0 0 1 1 1 1 1 1 1 1 1 2 2 0 1 0 1 0 2 1 0 1 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 2 0 2 2 0 2 0 2 0 0 0 0 0 0 0 0 0 1 0 1 0 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 1 1 1 1 0 0 0 0 0 1 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 2 2 0 0 0 2 2 0 2 2 1 1 1 0 0 0 2 0 2 0 0 0 2 2 2 2 2 1 0 2 2 2 2 0 0 2 2 0 1 1 1 1 0 0 0 0 0 0 0 2 2 1 1 0 0 0 0 0 0 0 2 2 2 0 0 0 0 2 1 0 0 0 1 0 0 0 0 0 0 0 2 1 1 0 2 2 0 1 1 0 1 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 0 1 1 0 1 1 1 1 0 0 0 0 0 1 0 0 0 0 0 0 1 1 1 0 0 0 0 0 1 1 0 0 0 0 1 0 1 1 1 1 1 1 0 0 0 0 0 0 0 0 2 2 0 0 0 2 2 2 2 2 2 0 2 2 0 0 2 2 2 2 2 0 0 0 0 0 0 2 0 1 1 1 1 0 1 0 1 1 0 1 1 1 1 1 2 0 1 1 1 1 1 1 1 2 2 1 1 1 1 2 0 0 0 0 0 0 2 0 2 0 1 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 2 2 0 0 0 0 0 0 2 0 2 0 0 0 0 0 0 0 0 0 2 2 0 0 0 0 2 2 2 2 2 1 1 1 1 2 2 0 0 0 0 1 1 0 1 1 0 0 2 0 0 0 0 0 1 1 1 1 1 1 0 0 0 0 0 1 1 1 1 1 1 2 2 2 0 1 1 2 2 0 2 0 0 2 2 2 2 2 2 2 2 0 0 0 0 2 2 0 0 2 1 1 1 1 1 1 0 1 0 0 1 1 1 1 1 1 1 0 1 1 1 0 1 1 0 0 0 2 2 2 0 0 0 0 0 0 2 2 2 2 2 2 0 0 0 0 0 0 0 0 0 0 0 2 2 0 0 0 2 0 0 0 2 2 2 2 2 0 0 0 2 2 2 2 0 2 2 2 2 2 2 0 2 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 2 0 0 0 0 0 0 1 1 1 1 0 1 2 0 0 0 0 0 0 0 0 2 1 1 2 2 2 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 1 1 1 0 0 2 0 1 1 1 1 1 1 2 0 0 0 0 0 0 1 0 0 0 2 2 0 1 0 1 1 1 1 0 0 0 2 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 2 2 0 2 2 0 0 0 0 0 1 1 0 1 1 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 2 0 0 0 0 0 2 2 0 0 2 2 0 0 0 1 1 1 0 0 0 0 2 2 2 2 1 2 0 0 2 0 2 1 1 1 1 2 2 2 2 1 1 1 1 0 0 0 0 0 1 1 1 0 0 0 0 2 0 0 0 2 0 0 0 0 1 1 0 0 0 0 0 0 1 1 0 0 0 1 1 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 1 0 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0 0 0 2 0 0 0 2 2 2 0 0 2 2 2 0 0 0 1 2 2 0 0 2 0 0 0 0 0 2 2 2 0 0 0 0 0 1 1 1 2 2 2 2 0 0 1 1 2 1 2 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 2 0 2 2 2 1 2 2 0 0 2 0 0 0 0 0 0 2 0 1 1 0 0 0 2 1 1 1 1 2 2 0 2 2 0 0 0 0 1 0 0 0 0 2 0 0 0 0 0 0 0 0 2 2 2 0 0 0 0 2 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 2 2 1 1 1 1 1 1 1 0 2 1 2 2 1 2 2 2 2 2 2 2 0 0 2 2 2 2 2 0 0 0 2 2 1 1 0 0 0 1 1 1 1 0 0 0 0 2 2 2 2 1 1 1 2 2 2 1 1 1 1 1 0 1 0 1 0 0 0 0 2 2 0 0 0 0 0 0 0 0 0 2 2 2 0 0 0 0 0 2 2 0 0 2 0 2 0 0 0 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 0 0 0 1 2 0 0 0 0 2 2 0 0 0 1 1 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 2 0 0 1 0 0 0 1 0 0 2 0 0 0 0 0 2 0 2 0 0 0 0 1 1 0 0 0 1 0 1 0 2 1 2 1 1 1 0 0 0 0 0 0 0 0 0 0 0 2 2 2 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 1 1 1 1 1 1 1 1 1 0 0 1 1 0 0 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 2 2 0 1 0 0 0 0 0 0 0 0 0 0 0 0 2 2 0 2 2 2 2 0 1 1 0 0 2 1 1 2 2 2 2 0 1 1 1 1 1 0 0 2 2 2 0 2 2 2 2 0 0 0 0 2 2 0 0 0 2 2 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 1 1 1 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 2 2 2 0 0 0 2 2 0 0 2 0 0 0 0 0 2 0 0 1 0 1 1 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 1 0 1 1 1 1 1 2 0 1 1 1 1 0 0 0 0 0 0 2 0 0 2 0 0 0 0 2 2 0 0 0 0 0 0 0 1 0 0 0 0 1 2 2 2 0 0 1 1 1 0 0 1 0 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 2 2 0 1 1 1 1 0 1 1 1 1 0 1 1 1 1 1 0 1 2 1 1 1 2 1 2 2 0 1 2 0 0 2 2 2 2 1 1 1 2 1 1 1 1 1 0 0 2 1 2 1 1 2 2 1 1 1 1 1 0 0 0 0 0 2 1 0 0 0 0 0 2 0 0 0 0 0 0 0 0 2 2 2 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 1 1 1 0 1 1 0 1 1 1 0 1 1 1 1 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 0 2 2 2 2 0 0 1 1 0 2 2 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 1 1 0 0 0 0 0 1 1 1 0 0 2 2 0 1 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 0 0 1 1 1 0 0 0 0 0 0 1 1 0 0 1 1 0 0 0 0 2 2 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 2 2 2 1 1 1 1 1 1 1 1 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 2 0 2 2 0 1 1 1 1 1 1 1 0 2 2 2 2 2 2 2 2 1 1 1 2 1 0 0 2 2 1 2 0 0 2 1 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 1 1 0 0 0 0 0 1 0 0 0 0 1 1 0 0 0 0 0 1 1 0 2 0 0 0 0 0 0 0 0 2 2 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0 2 1 0 0 1 0 0 1 1 1 0 0 0 0 0 0 1 1 1 0 0 0 1 1 0 0 0 0 1 1 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 1 0 0 2 0 0 0 0 2 2 2 2 2 2 2 2 2 2 2 0 0 2 2 0 0 0 0 1 1 0 1 1 0 0 2 2 2 0 1 1 1 0 1 1 0 2 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 0 0 0 1 1 0 0 2 2 1 1 1 1 1 1 2 1 1 2 2 2 2 2 2 1 2 2 2 2 2 2 1 1 2 0 0 1 2 2 1 1 1 1 1 0 0 2 2 0 2 1 0 0 2 2 2 1 1 1 0 1 1 0 1 1 1 1 0 1 1 1 1 1 1 1 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 2 2 2 0 2 0 0 0 1 2 2 2 2 1 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 1 1 1 0 2 2 2 2 0 0 0 1 2 2 2 2 2 1 0 0 0 2 2 2 2 2 2 2 0 0 0 2 2 0 0 0 0 0 0 0 2 2 2 2 2 2 0 0 0 0 0 2 2 0 0 0 1 0 0 2 2 0 0 0 0 0 2 0 2 1 0 0 2 0 0 0 0 0 0 1 1 0 1 1 0 0 0 0 0 0 1 1 1 0 0 0 0 1 0 1 1 1 1 0 0 0 0 0 0 0 1 2 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0 1 1 1 1 1 0 1 1 0 0 0 1 1 1 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 2 0 2 1 0 0 2 2 2 2 2 0 0 0 0 0 0 1 1 1 1 1 1 0 1 1 1 0 0 1 1 1 0 0 0 0 0 0 0 0 0 2 1 0 0 0 0 0 0 0 0 0 0 0 0 2 2 2 2 2 2 1 1 2 2 2 2 2 2 2 2 2 1 1 1 1 1 0 0 0 2 0 1 0 1 2 2 1 1 2 2 2 2 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 1 0 1 1 1 1 1 1 1 0 0 0 0 0 1 0 2 1 1 0 0 0 0 0 2 0 0 2 0 1 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 2 0 0 0 0 1 1 1 2 0 2 0 2 2 1 1 0 0 0 0 1 1 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 1 0 0 0 2 1 0 1 1 1 1 1 1 1 2 2 1 0 0 0 0 0 0 0 0 0 1 0 0 0 2 1 1 0 0 2 2 2 2 0 0 0 0 1 1 0 2 2 0 0 0 0 1 1 2 2 2 2 2 2 0 0 2 2 2 2 2 2 2 0 2 2 2 2 0 0 0 0 1 1 1 2 2 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 2 2 2 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 2 0 0 0 0 1 0 0 0 0 2 0 0 0 0 0 1 0 0 0 0 2 0 0 0 0 0 0 0 2 2 0 0 0 0 0 2 2 2 0 2 0 0 2 2 2 2 0 0 0 0 0 1 2 0 0 1 0 0 0 0 2 2 2 2 0 0 0 1 2 2 0 0 0 0 0 1 2 2 0 0 0 2 0 0 0 2 0 0 1 1 0 2 2 0 0 0 0 0 0 2 2 0 2 0 0 0 0 0 0 2 0 2 0 1 2 0 0 0 0 0 0 0 0 0 0 2 2 2 2 0 0 0 1 0 0 0 0 1 1 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 1 1 0 0 0 0 1 0 0 0 0 2 2 0 0 1 2 0 0 2 0 0 0 1 2 2 2 1 1 1 0 1 1 1 1 1 1 0 1 0 1 0 1 1 1 1 1 0 0 1 0 0 0 0 1 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 2 2 2 1 0 0 2 2 2 0 2 2 2 2 0 2 1 1 1 1 2 0 2 2 2 2 2 2 1 0 0 0 2 0 2 2 2 0 2 2 2 0 0 0 2 2 0 2 1 0 1 2 2 1 0 0 0 2 0 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 1 0 0 0 0 0 0 1 0 0 1 1 0 1 1 1 0 0 0 0 0 1 1 1 1 0 0 0 1 1 1 1 0 0 0 1 2 0 0 0 0 0 0 0 0 1 1 2 0 2 0 0 2 0 0 0 0 0 0 0 0 0 0 0 2 2 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 1 0 0 2 2 2 1 0 0 0 0 2 0 0 0 0 0 0 1 2 2 2 2 0 0 1 0 2 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 1 1 1 0 1 0 1 1 0 2 2 0 1 1 2 1 2 0 1 1 1 0 1 0 0 0 2 2 2 2 1 0 0 2 2 2 1 1 1 1 1 0 1 0 1 1 1 1 2 1 1 1 1 2 2 2 2 1 1 1 2 2 2 0 0 0 0 0 1 1 1 2 0 2 2 2 0 0 0 0 0 0 0 2 2 0 0 2 2 2 2 2 2 2 2 0 2 2 2 2 2 0 0 0 0 2 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 2 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 2 0 2 0 0 0 0 0 0 0 0 0 0 0 2 2 0 0 0 0 0 0 2 0 0 0 0 0 1 0 0 0 0 0 2 2 0 0 0 0 2 2 0 2 0 0 0 0 0 2 0 0 0 0 0 0 2 1 1 0 0 0 0 0 2 2 2 2 0 0 0 0 0 1 2 2 0 0 2 0 0 0 1 2 2 2 2 1 2 0 1 0 0 0 0 0 1 1 1 0 2 0 0 0 0 0 2 0 0 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 1 1 1 0 1 1 0 0 0 0 2 2 0 1 1 0 0 0 2 2 0 0 1 0 0 0 0 0 0 0 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 2 0 2 2 0 2 1 1 1 1 1 1 1 1 0 2 2 2 2 2 2 2 2 2 2 2 1 1 1 2 1 1 1 0 0 2 1 2 0 2 0 0 0 2 0 2 2 1 0 0 0 0 2 0 0 2 0 0 0 0 0 0 0 0 0 2 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 2 2 0 0 0 0 0 0 0 0 2 0 0 2 2 2 2 0 0 0 0 0 0 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 1 1 0 0 0 1 1 1 1 1 1 1 1 0 1 1 1 0 0 0 1 0 1 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 2 0 0 0 0 0 2 0 0 1 1 2 0 1 1 1 2 0 0 0 0 0 0 0 0 0 0 0 1 1 2 2 0 0 0 0 0 1 1 1 0 0 0 0 0 2 2 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 1 1 1 1 0 1 1 1 1 1 1 0 1 0 1 1 2 1 1 1 1 1 1 2 1 1 0 0 1 1 1 1 2 2 2 2 2 2 2 1 1 1 1 1 0 2 2 2 1 1 1 1 1 1 2 1 1 1 1 2 2 2 2 2 2 2 2 2 0 2 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 2 0 0 0 0 0 0 0 0 2 0 1 1 0 0 2 0 0 0 0 2 0 2 0 0 0 0 0 0 0 0 0 2 0 0 0 2 2 2 0 0 0 0 0 2 0 0 0 2 0 0 0 0 1 1 1 2 0 0 0 0 0 0 0 0 1 2 0 0 0 0 0 0 0 0 0 2 0 1 1 0 2 2 0 0 0 2 2 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 1 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 1 1 1 0 0 0 1 0 0 0 0 0 0 1 1 0 0 1 0 0 0 0 0 0 0 0 0 0 1 2 2 2 2 1 1 0 2 2 2 2 2 2 2 2 2 2 1 0 0 0 0 0 0 2 2 0 0 2 2 2 0 0 2 0 0 0 0 0 0 0 0 0 2 1 0 0 0 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 2 0 0 0 0 0 0 0 2 0 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 1 0 0 0 1 0 1 1 0 0 1 1 1 1 1 0 0 0 1 0 0 0 1 1 0 1 0 0 1 1 0 0 1 0 0 0 1 0 0 1 0 1 1 1 1 0 0 1 1 1 1 1 1 1 1 1 1 1 2 2 0 2 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 1 2 0 0 0 1 0 0 0 2 0 0 0 0 1 1 0 1 1 1 0 0 0 2 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 2 2 1 2 2 2 2 2 2 1 0 2 1 1 1 1 1 1 1 1 2 2 2 1 1 0 2 2 1 1 1 1 0 2 0 2 2 2 2 1 1 1 1 1 1 1 1 1 2 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 2 0 2 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 1 2 0 0 0 0 2 0 2 0 0 2 2 2 0 0 0 0 2 2 1 1 0 2 0 0 2 0 0 0 0 0 0 0 0 0 0 2 2 2 0 2 0 0 2 0 0 0 0 2 2 0 0 0 2 0 2 2 0 0 2 0 0 0 1 2 2 2 0 0 0 0 2 2 1 1 2 0 1 1 1 1 1 1 0 0 1 1 1 1 0 2 0 0 2 0 1 1 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 1 0 2 2 2 2 0 1 1 2 0 2 2 0 2 2 2 1 1 2 2 2 2 2 2 0 0 2 2 0 2 2 2 0 2 2 0 0 1 0 2 2 2 2 2 2 0 2 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 2 0 0 2 2 2 2 0 0 0 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 1 0 0 0 1 0 0 1 0 0 1 1 1 1 1 1 1 0 0 1 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 0 0 1 1 1 2 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 2 2 2 0 0 0 1 1 2 0 0 0 0 0 0 0 0 2 0 1 0 0 0 0 0 1 1 1 0 0 0 1 2 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 0 2 1 1 1 1 1 1 1 1 1 1 0 2 2 2 2 2 2 2 2 1 0 0 2 2 2 1 0 1 2 1 1 1 2 1 1 1 1 1 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 1 1 0 0 0 2 0 0 0 0 0 0 0 0 0 0 1 1 2 0 0 0 0 0 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 0 0 0 0 0 0 1 1 0 1 1 0 0 0 0 0 0 0 2 2 2 0 0 0 0 1 0 0 0 0 2 2 0 0 0 0 2 2 2 0 0 0 0 0 2 1 2 2 2 0 0 0 0 0 0 0 2 2 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 2 1 0 0 0 0 0 0 2 2 0 0 0 0 0 0 0 2 2 0 0 0 2 2 2 0 0 0 2 2 2 2 2 0 2 2 2 0 0 2 2 2 2 0 0 0 0 0 0 1 0 0 0 0 0 1 1 0 2 2 0 1 0 0 2 2 2 0 0 0 0 1 1 1 1 1 1 0 1 2 2 0 0 0 0 1 0 0 2 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 2 0 2 2 1 1 2 2 0 0 0 2 2 2 2 2 2 2 0 1 0 0 0 2 0 0 0 2 2 2 2 2 0 1 2 2 2 0 0 2 1 2 0 0 0 0 0 2 2 2 2 2 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 1 1 0 1 1 1 1 1 1 0 1 1 0 1 0 0 1 1 1 1 0 1 0 2 2 2 2 2 0 0 0 1 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 2 0 0 0 2 0 0 0 1 1 1 1 0 0 0 0 0 0 1 1 1 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 1 0 0 2 2 2 2 2 2 2 2 2 2 2 1 0 1 1 1 1 1 1 1 1 0 0 0 1 1 1 1 2 1 0 2 1 1 1 2 0 2 2 1 1 2 2 1 0 1 0 0 1 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 2 2 0 0 2 2 0 2 0 2 0 1 1 0 0 0 0 0 0 0 0 0 0 1 1 0 0 2 0 0 0 0 0 0 0 0 2 2 2 2 0 0 0 0 0 2 2 0 0 0 1 0 0 2 2 2 0 0 2 2 2 2 0 0 0 0 1 1 1 0 0 0 0 0 0 1 1 1 1 1 0 1 2 0 2 2 1 1 0 1 1 1 1 1 1 1 2 0 0 0 1 0 0 1 1 1 1 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 2 2 1 0 0 0 0 0 0 2 2 0 0 0 0 0 0 2 2 0 0 0 0 2 0 0 0 0 0 0 0 0 0 1 1 1 2 0 2 0 0 2 0 2 2 2 0 0 0 0 2 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 2 0 0 0 0 0 0 0 0 2 0 0 0 0 0 2 0 0 0 2 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 1 1 1 1 1 1 0 1 1 1 0 0 0 0 0 0 1 1 0 0 0 1 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 0 2 0 0 0 0 1 1 1 1 1 0 0 2 2 2 0 0 0 0 0 0 1 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 2 2 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 2 2 2 0 0 0 2 2 0 0 0 0 0 0 1 1 1 1 0 2 0 2 2 2 1 1 1 0 2 2 2 2 1 1 1 1 1 0 2 2 0 1 0 0 1 1 0 2 1 1 1 1 1 1 0 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 2 0 0 0 0 1 0 1 1 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 1 1 1 0 0 0 0 0 0 0 1 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 0 0 0 0 0 0 0 0 0 0 1 0 0 2 0 0 2 0 0 0 2 1 1 0 0 0 0 1 2 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 2 0 0 0 0 0 1 0 0 2 2 2 2 0 2 2 0 0 0 0 0 2 0 0 0 0 0 0 2 1 1 0 0 0 2 2 0 1 1 0 0 1 1 1 0 0 1 1 1 0 0 0 0 1 1 0 1 1 1 1 1 1 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 2 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 2 2 2 2 2 0 2 0 0 0 0 2 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 2 0 0 0 0 0 0 0 0 0 0 2 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 1 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 1 1 1 1 1 0 0 0 0 0 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 1 1 0 0 1 1 1 1 0 0 0 1 1 1 1 0 1 0 1 1 0 0 0 0 1 1 0 0 1 1 1 1 0 1 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 1 1 1 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 2 2 0 0 0 0 1 1 1 0 0 0 0 1 0 2 2 0 0 0 2 2 0 0 0 0 0 0 0 2 2 2 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 1 0 2 2 0 0 0 1 0 2 2 0 0 0 0 1 2 2 2 1 1 1 1 1 1 1 1 2 2 2 1 1 1 1 0 0 0 2 2 2 1 1 1 1 1 0 2 1 0 1 0 0 0 0 0 0 1 0 0 0 2 0 1 1 0 1 1 1 1 1 0 0 1 1 0 1 0 0 0 0 0 0 0 1 1 0 0 1 0 0 0 0 1 0 0 0 1 1 0 1 1 1 1 1 0 1 1 1 1 1 1 0 0 1 1 1 0 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 2 0 2 0 0 0 0 0 0 1 0 0 0 2 0 0 0 0 0 0 0 2 0 0 1 0 0 0 0 0 2 1 0 0 0 2 0 0 0 1 1 1 1 1 0 0 2 0 0 0 0 1 1 2 0 1 0 0 2 2 2 0 0 0 1 2 2 0 2 0 0 0 1 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 2 0 2 2 0 1 1 1 1 0 1 1 2 0 0 0 0 0 1 1 1 1 2 0 0 1 1 1 1 0 1 1 1 1 1 1 1 0 0 1 1 1 1 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 2 0 0 0 0 2 2 0 0 0 0 0 0 2 2 0 2 2 0 2 2 0 0 0 2 2 2 0 0 0 2 2 0 0 2 2 2 2 0 0 0 2 2 0 0 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 2 0 2 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 2 0 0 0 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 0 0 1 0 0 0 0 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 0 0 1 0 0 1 1 0 1 1 0 2 0 0 0 1 0 0 0 0 0 0 0 0 0 0 2 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 2 1 1 0 0 0 2 0 0 0 0 2 0 0 0 1 1 1 2 0 2 2 2 0 0 0 1 2 0 0 0 0 2 1 1 2 2 2 2 2 2 2 2 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 2 0 0 0 0 0 0 1 2 2 0 2 2 0 1 1 1 1 0 0 0 0 0 2 1 1 1 0 1 1 0 0 0 0 0 0 0 2 2 0 1 1 1 1 0 0 0 0 0 0 0 1 1 0 0 0 1 1 1 1 1 1 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 1 0 0 0 0 1 0 1 1 0 0 1 0 1 1 1 0 0 0 1 0 1 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 0 0 0 0 0 0 0 0 2 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 1 0 0 0 0 0 2 1 0 0 1 1 1 0 1 0 2 0 0 0 1 1 0 1 1 1 1 2 0 0 0 0 0 1 1 2 2 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 1 0 0 0 0 1 1 1 1 0 0 1 1 1 1 1 1 1 1 1 0 0 1 1 1 1 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 2 0 0 2 0 0 0 0 0 0 0 0 0 2 2 0 0 0 2 0 0 2 2 0 2 2 2 2 2 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 2 0 0 0 0 0 0 0 2 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 2 2 2 0 0 0 0 0 0 0 0 0 2 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 2 2 0 2 2 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 1 0 1 0 0 0 0 1 1 1 0 1 1 1 1 0 1 0 0 1 1 0 1 1 1 1 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 2 0 0 0 0 0 0 2 0 2 0 2 2 2 0 0 1 2 2 0 2 1 1 2 0 0 0 0 2 0 0 2 2 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 2 0 0 0 0 0 0 0 2 0 2 0 1 1 1 2 1 1 1 1 1 0 0 0 0 1 1 1 1 1 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 0 0 1 0 1 1 0 0 1 1 1 1 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 2 2 0 0 0 1 1 1 0 0 0 0 0 0 0 0 2 1 1 0 2 2 2 0 2 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 1 1 1 0 0 1 1 1 0 1 0 1 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 1 1 1 1 0 1 0 0 1 1 0 1 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 2 0 0 0 0 2 2 2 0 2 0 0 2 0 0 2 0 0 0 0 2 2 0 0 0 0 0 0 2 2 2 2 0 0 2 0 0 0 0 0 0 0 0 0 0 0 2 2 2 2 2 2 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 2 0 0 0 0 1 1 0 0 0 0 2 2 2 2 2 2 0 2 2 0 2 0 2 2 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 1 0 0 1 1 1 0 0 1 0 0 0 0 0 0 1 1 0 0 1 1 1 0 0 0 1 1 1 1 1 1 1 0 0 0 0 1 0 0 1 0 1 1 1 0 1 1 1 1 1 1 1 1 1 0 1 1 0 0 0 1 1 1 1 1 1 1 1 1 0 1 1 1 0 0 1 1 1 0 1 0 0 0 1 1 1 1 0 0 0 0 0 0 1 1 0 1 2 2 2 2 2 2 2 2 2 0 0 0 0 0 0 0 2 2 2 0 0 0 0 0 0 1 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 2 0 2 2 0 0 1 1 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 2 1 2 2 0 0 2 2 0 0 0 0 2 0 0 1 1 1 1 0 2 0 0 0 0 0 2 2 2 2 2 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 2 2 0 0 0 0 1 1 1 1 1 1 1 0 1 1 0 0 2 0 1 0 0 1 0 0 0 1 1 1 1 1 1 1 0 0 1 1 1 1 1 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 1 1 0 0 1 1 1 1 1 1 1 1 1 1 1 1 0 0 1 0 1 0 0 0 1 1 1 1 1 1 1 1 1 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 2 0 2 0 0 0 0 2 0 0 0 0 0 0 1 2 2 0 2 0 0 0 0 0 0 0 0 0 0 0 2 2 0 0 1 1 1 0 1 1 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 0 0 1 1 0 1 0 0 0 0 1 1 1 1 1 1 1 1 1 0 0 0 0 1 1 1 0 1 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 0 2 2 2 2 0 0 0 2 2 2 0 0 0 2 2 0 0 0 0 0 2 2 2 0 0 2 2 0 0 0 0 0 0 0 2 2 2 0 0 2 0 2 2 0 0 0 0 0 0 0 0 0 2 0 2 2 0 2 2 2 2 2 2 2 0 2 0 0 0 0 2 2 2 2 0 0 0 2 0 0 0 0 0 0 2 2 2 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 2 0 0 0 0 2 2 0 0 0 0 0 0 2 0 0 2 0 0 0 0 0 0 0 1 1 2 0 0 0 0 0 0 0 0 1 1 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 1 1 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 1 1 1 1 0 1 1 1 0 1 1 1 1 1 1 0 0 0 0 0 0 0 1 1 1 0 1 0 1 1 0 0 1 1 1 1 1 1 1 2 2 2 1 1 0 2 1 0 2 0 0 0 0 0 1 0 2 2 2 2 0 0 2 0 0 2 0 0 0 0 2 0 1 0 0 0 0 0 0 2 1 1 0 0 0 1 0 0 0 0 0 0 2 2 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 0 0 2 2 2 0 0 1 1 1 0 0 2 0 0 1 0 2 2 2 0 0 0 2 2 2 0 0 0 1 0 1 1 0 0 0 2 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 1 0 1 1 1 1 0 0 0 0 0 0 0 1 1 0 1 1 0 0 0 0 1 1 0 0 0 0 0 0 1 1 1 1 0 0 1 1 1 1 0 0 0 0 1 0 1 0 0 0 0 0 1 0 0 0 0 0 1 1 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 0 0 1 1 1 1 0 1 0 0 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 2 2 2 0 0 0 0 0 0 0 0 0 0 2 2 0 2 2 0 0 1 0 0 0 0 0 0 0 2 2 0 0 0 0 0 0 0 0 0 2 2 0 0 0 0 0 0 0 2 2 0 0 0 0 0 0 0 0 0 0 1 1 0 1 0 0 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 1 1 1 1 0 0 1 0 0 1 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 2 0 0 0 2 2 0 2 0 0 0 0 2 0 2 2 0 0 2 2 2 2 2 0 0 0 2 0 0 2 0 2 0 0 0 0 2 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 0 0 0 1 0 2 0 0 0 0 0 0 2 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 2 0 0 0 0 1 1 0 0 1 0 0 0 0 0 0 0 1 1 1 1 0 0 1 0 1 1 0 0 0 1 1 1 0 1 1 1 1 1 1 1 0 1 1 1 1 0 0 1 1 0 0 1 1 0 1 0 0 0 0 0 0 1 0 0 0 1 0 1 1 1 1 1 1 1 0 1 1 0 1 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 1 0 1 1 1 1 1 1 2 0 0 0 1 2 2 2 0 0 2 2 0 0 0 0 0 0 0 2 2 1 0 0 0 0 0 0 0 0 0 0 2 2 0 0 1 0 0 0 0 2 2 0 1 1 0 2 2 2 2 0 2 2 2 2 2 0 0 0 1 1 1 0 0 2 0 1 1 2 2 1 1 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 0 1 1 0 0 0 0 0 1 1 1 0 0 0 1 1 0 0 0 0 0 1 1 1 0 0 1 0 0 0 1 1 1 0 0 0 1 1 1 1 0 1 0 0 1 1 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 0 0 1 1 1 1 1 1 1 1 0 0 0 1 1 1 1 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 2 0 2 2 1 0 0 1 0 0 0 0 2 1 1 1 1 2 2 1 1 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 1 1 2 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 1 0 0 0 0 0 1 1 0 0 0 0 0 0 0 1 1 1 1 1 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 1 1 0 1 1 0 0 0 1 1 1 1 0 0 0 0 0 0 2 0 2 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 2 2 0 0 0 0 0 0 2 0 2 2 2 0 2 0 0 0 2 2 0 0 0 0 0 0 2 2 2 2 0 2 2 0 2 0 2 2 2 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 1 1 1 1 0 0 0 0 0 1 1 0 0 0 0 0 1 1 1 1 1 1 0 0 0 0 1 1 1 1 1 0 0 1 1 0 1 0 1 1 1 1 0 1 0 0 0 1 0 0 0 0 1 1 1 1 1 0 0 0 0 1 1 0 0 1 0 0 0 1 0 0 0 0 1 1 1 1 1 1 0 1 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 0 2 2 0 2 0 2 2 2 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 2 0 2 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 2 0 0 1 1 2 2 0 0 1 2 1 0 0 1 2 0 0 0 0 0 1 0 2 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 0 0 0 0 0 0 1 1 1 1 0 1 1 1 1 1 1 1 0 0 0 1 0 1 0 0 0 0 0 0 0 0 1 0 1 1 1 1 1 1 1 0 0 1 0 0 0 1 0 0 1 0 0 0 0 0 1 1 0 0 1 1 1 1 1 1 0 0 0 1 1 1 1 1 1 1 0 0 0 0 1 0 1 1 1 1 0 0 1 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 0 0 1 1 0 0 0 0 0 1 1 1 1 1 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 1 1 1 0 0 0 1 0 1 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 1 1 0 1 1 0 0 0 0 2 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 2 2 0 2 2 2 0 2 0 0 0 0 2 0 0 2 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 1 0 0 0 1 1 0 0 1 0 0 0 0 0 1 1 0 0 0 1 0 1 0 1 1 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 1 0 0 0 0 0 0 1 1 0 1 1 1 0 1 1 1 1 1 1 1 1 1 0 1 1 1 1 0 0 0 0 0 0 0 1 0 0 0 0 0 1 1 1 1 1 1 1 1 1 0 1 2 2 2 0 0 1 1 1 1 2 0 1 0 0 0 0 1 0 2 0 0 0 0 0 0 0 0 2 0 0 0 0 0 2 2 0 0 0 0 2 0 0 0 0 0 0 2 2 2 0 0 0 0 0 0 1 2 2 2 2 0 0 0 0 0 0 0 0 0 0 0 2 1 0 2 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 1 1 1 2 0 1 1 1 0 0 0 2 2 0 0 0 0 1 1 0 0 0 1 0 0 0 2 2 2 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 1 1 1 0 0 0 0 0 1 1 1 1 1 1 1 0 0 0 0 0 0 1 1 1 1 1 0 0 0 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 1 1 1 0 1 1 1 0 1 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 1 1 1 1 1 1 1 1 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 1 1 1 0 1 1 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 1 0 0 0 0 0 0 1 1 1 1 0 0 0 1 1 1 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 1 0 1 1 1 1 1 0 0 0 0 1 1 1 1 1 1 1 1 0 0 1 1 1 1 1 1 0 0 0 0 1 1 0 0 1 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 2 2 0 2 2 0 2 0 2 0 0 2 2 0 0 0 2 2 2 2 0 0 0 0 0 2 0 0 0 2 2 0 0 0 0 0 0 0 0 0 0 0 2 2 0 0 0 0 0 0 2 0 0 2 2 0 0 0 0 2 0 2 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 1 1 1 1 1 0 0 1 1 1 0 0 0 1 1 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 2 1 1 1 0 0 1 1 1 0 1 1 1 1 0 0 0 0 1 1 1 1 1 1 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 2 0 0 0 0 0 0 2 2 2 2 0 2 0 0 0 0 0 0 2 2 2 0 0 0 0 0 0 0 2 2 2 2 0 0 0 0 0 0 0 0 0 0 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 1 0 0 1 1 1 1 1 1 0 0 2 0 0 0 0 0 1 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 1 0 0 0 0 1 1 1 1 1 1 1 1 1 0 0 1 1 1 0 1 1 0 0 0 1 1 1 1 1 1 1 1 0 0 0 0 1 1 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 1 0 0 0 0 0 1 1 1 1 1 1 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 1 1 1 1 1 1 1 1 1 1 0 1 0 0 0 1 1 0 0 0 0 0 0 1 1 1 1 1 1 0 1 0 0 0 0 1 1 1 1 0 1 0 0 0 0 0 0 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 2 1 1 0 0 0 1 0 1 1 1 1 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 1 0 1 1 1 1 1 0 0 0 0 1 0 1 1 1 1 1 0 0 0 1 0 1 1 1 1 1 1 1 0 1 1 1 1 1 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 2 2 2 2 0 0 2 2 2 0 0 0 0 2 2 0 2 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 2 2 0 0 0 0 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 2 2 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 0 0 0 0 1 0 1 1 1 1 1 0 0 0 1 0 1 1 1 0 1 1 1 1 1 0 1 1 1 1 1 1 1 1 0 0 1 0 0 1 1 1 1 1 0 2 1 1 0 0 0 0 0 0 0 2 1 1 1 0 1 1 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 2 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 0 0 0 0 0 2 0 2 2 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 2 2 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 2 2 2 0 0 1 0 2 2 0 0 0 0 0 0 0 2 0 1 0 0 0 0 0 0 0 2 0 1 2 0 0 0 0 2 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 1 1 1 1 0 0 1 1 1 1 0 0 1 0 0 0 0 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 1 1 0 0 0 1 0 0 0 1 1 1 0 1 1 1 1 1 1 1 0 0 1 1 1 1 1 1 1 1 1 0 0 1 0 1 0 0 0 0 0 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 2 2 2 2 2 0 1 0 0 0 0 0 0 0 0 0 1 1 0 0 2 0 0 0 0 0 0 1 0 1 1 1 1 1 1 0 0 1 0 0 0 1 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 0 1 1 0 1 1 1 1 1 1 1 0 1 1 1 1 1 0 0 0 0 0 0 0 2 2 0 0 0 0 2 2 2 0 0 0 0 0 2 2 0 0 0 2 2 2 2 0 0 0 0 0 0 0 2 2 2 0 0 0 0 0 0 0 2 0 0 0 2 0 0 0 0 0 0 0 2 2 2 0 0 0 0 0 0 0 2 0 0 0 0 0 0 2 0 2 2 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 1 1 0 0 1 0 0 1 1 1 1 1 0 0 1 1 0 1 0 1 1 1 1 0 0 1 0 0 2 2 0 1 1 0 2 0 1 1 1 1 1 0 1 0 1 0 0 1 1 1 0 1 1 1 1 0 0 0 0 0 0 2 1 0 1 1 0 0 0 0 2 0 2 0 0 0 2 0 0 0 0 0 0 2 2 2 0 0 0 0 0 0 2 0 2 2 0 0 0 0 0 0 0 0 2 2 2 0 2 2 2 2 2 2 0 2 2 2 2 0 0 0 0 0 2 0 0 0 1 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 1 1 1 0 0 0 1 1 0 2 1 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 1 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 1 1 0 0 1 1 1 1 1 0 0 0 0 0 0 0 0 1 1 1 0 0 0 1 0 1 1 1 1 1 1 1 1 1 0 0 0 1 1 0 0 1 0 0 1 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 2 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 1 1 1 0 2 0 0 0 1 1 1 0 0 2 2 2 0 1 1 0 0 0 0 0 0 0 0 0 1 1 1 0 2 0 1 0 2 2 0 1 1 1 1 1 0 2 0 1 1 1 1 1 1 2 2 0 0 2 2 0 1 1 1 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 2 0 0 0 2 0 2 2 0 0 0 0 2 2 2 2 2 2 2 0 0 2 2 0 0 0 2 2 2 2 2 2 2 0 0 2 2 2 0 2 0 0 2 0 0 0 0 0 0 0 0 2 0 2 2 2 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 2 2 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 1 0 1 1 0 1 1 0 0 1 0 0 0 0 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 2 1 0 1 1 1 1 1 1 1 1 1 1 1 0 0 1 1 1 0 0 0 0 0 2 0 2 0 2 1 1 2 1 1 1 1 1 1 1 2 0 0 2 0 2 2 2 0 0 0 0 0 0 2 2 0 2 2 2 2 0 0 0 0 2 2 0 0 0 2 0 2 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 2 0 2 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 0 0 0 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 1 0 0 0 0 1 1 0 0 0 0 0 0 0 2 2 2 0 2 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 1 1 0 0 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 2 0 0 0 0 0 0 0 2 2 0 2 2 2 2 2 0 0 0 0 0 0 0 0 0 0 2 0 0 2 2 0 2 2 0 0 0 0 2 2 0 0 0 0 0 1 1 0 0 2 2 2 0 0 0 1 0 0 2 0 0 1 1 0 0 0 0 0 0 1 2 0 2 0 0 0 0 0 1 1 1 1 0 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 2 0 0 0 0 0 0 0 2 2 2 2 2 2 2 2 2 2 0 0 0 0 0 2 2 0 2 2 0 0 0 0 0 0 0 2 2 0 2 0 0 0 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 2 0 2 2 0 0 0 0 0 0 0 0 0 2 0 1 1 1 0 1 1 1 1 0 0 0 1 0 1 1 1 1 1 1 1 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 0 0 0 2 1 1 1 0 0 1 0 1 1 1 1 0 1 0 0 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 0 0 1 0 0 0 0 0 0 2 0 0 2 2 2 2 0 0 0 0 0 0 2 2 2 0 0 0 0 0 0 2 0 0 0 0 2 0 0 2 0 2 2 0 0 0 0 0 0 0 2 2 0 0 0 0 2 0 0 2 0 0 0 0 0 0 2 0 2 2 2 2 0 0 0 0 1 1 1 1 0 2 0 0 0 0 0 0 0 0 0 2 2 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 1 1 0 0 0 1 1 1 1 0 1 1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 1 1 2 1 1 0 2 1 1 1 0 0 0 0 0 0 2 2 2 0 0 0 0 0 1 1 1 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 1 1 0 1 1 1 1 1 0 0 0 0 0 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 2 2 0 1 1 1 1 0 0 2 2 2 2 2 2 2 0 2 0 0 2 2 2 0 1 1 0 2 2 0 2 2 0 0 0 1 1 1 0 0 2 0 0 1 1 1 0 0 0 2 1 1 1 0 0 0 0 0 0 1 1 1 1 1 1 1 2 2 2 1 1 1 1 1 1 1 1 1 1 1 0 0 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 2 2 2 0 0 0 2 2 2 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 2 2 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 2 0 0 0 0 2 0 0 0 2 0 2 0 0 0 0 0 0 2 0 0 0 0 0 0 2 2 0 0 0 0 0 0 1 1 0 1 1 1 1 0 0 1 1 0 0 1 1 1 1 1 1 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 0 0 0 0 1 0 1 0 0 1 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 2 0 1 1 2 2 0 0 0 1 0 2 2 0 0 2 2 0 0 2 2 0 0 0 0 0 1 0 0 1 2 0 0 0 0 0 0 0 2 2 0 0 0 0 0 0 0 0 0 2 2 2 2 2 0 0 0 2 2 2 0 0 0 0 2 0 0 0 0 0 0 0 0 2 2 0 0 0 0 0 0 2 2 2 2 2 0 0 2 0 0 0 0 1 1 1 0 0 0 2 0 0 0 1 1 1 0 0 2 2 2 1 1 0 0 0 2 1 2 0 0 0 0 0 0 1 1 1 0 0 0 0 0 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 1 1 1 1 1 0 0 0 0 0 1 0 0 2 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 1 1 1 1 1 0 0 0 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 1 1 1 0 1 0 0 0 1 0 1 1 0 1 1 2 0 0 0 1 1 0 0 0 0 1 2 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 2 2 2 0 0 2 2 2 2 0 2 2 2 2 0 0 2 2 0 0 2 2 0 1 1 0 0 2 2 2 1 2 1 0 2 2 0 0 0 0 2 1 1 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 2 2 2 0 2 2 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 2 2 2 0 0 0 0 0 2 0 0 0 0 2 2 0 0 0 0 0 2 0 0 0 0 0 0 1 1 2 2 2 2 2 0 0 1 1 1 1 0 1 0 1 1 1 1 1 0 0 1 0 1 1 1 1 0 1 1 1 0 0 0 1 1 1 1 1 0 0 1 1 1 1 0 1 1 0 0 0 0 0 0 1 0 1 0 1 1 0 2 1 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0 0 1 1 0 0 2 0 0 2 0 2 0 0 0 0 2 2 0 0 2 2 0 0 0 0 0 0 0 0 0 0 0 2 2 2 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 0 2 2 2 2 0 1 0 0 0 0 2 0 0 0 1 0 2 0 0 0 1 0 2 1 0 2 2 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 1 1 1 1 1 0 1 1 0 0 1 1 1 1 2 2 1 1 1 0 2 2 2 1 1 1 1 0 0 0 1 1 2 1 1 1 0 0 0 1 0 0 0 0 0 0 1 1 0 0 1 1 1 1 1 0 1 1 1 1 1 0 1 2 0 0 0 0 0 1 2 2 2 0 0 0 0 0 0 0 0 1 0 0 0 1 1 0 0 2 0 1 0 0 2 2 0 1 0 1 2 2 2 0 0 0 0 1 0 0 2 2 2 0 0 0 0 0 0 0 0 0 0 2 1 0 2 2 1 0 0 2 2 0 1 1 0 0 0 0 0 0 0 0 1 1 1 1 2 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 2 2 2 2 2 2 0 0 0 0 0 0 0 2 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 0 0 0 2 0 0 0 0 0 0 0 0 2 2 2 0 0 2 0 0 0 0 0 0 0 0 0 2 2 0 0 0 0 0 0 0 2 2 0 0 0 1 1 0 0 0 0 0 0 0 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 1 0 1 1 1 1 1 0 1 1 1 1 0 1 1 0 0 0 0 0 1 1 0 0 0 0 2 0 1 0 1 0 0 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 2 2 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 2 2 2 0 0 0 0 0 0 0 2 2 2 0 0 1 0 1 2 2 0 0 0 0 0 0 2 2 0 0 1 0 0 0 0 0 0 2 2 0 0 2 2 0 0 1 1 1 1 0 0 0 0 1 1 0 0 0 2 1 0 2 2 2 2 2 1 1 2 2 2 1 0 0 0 2 2 2 1 0 0 0 1 1 1 1 1 0 0 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 1 1 0 0 0 0 0 0 0 2 2 2 0 2 2 2 2 0 2 2 0 0 2 2 1 0 0 2 2 2 2 1 0 0 2 2 2 2 0 0 0 0 0 2 0 0 0 0 0 2 2 2 2 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 2 2 0 0 1 0 0 0 0 0 1 1 1 1 1 1 1 1 2 0 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 0 0 2 0 2 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 2 2 2 0 0 0 2 2 2 2 2 0 2 2 2 0 0 0 2 2 2 2 2 2 2 2 2 0 2 2 2 2 2 2 2 2 2 2 2 2 2 0 0 2 2 2 2 0 0 2 0 0 0 2 2 2 2 2 2 2 2 2 0 0 2 0 0 0 0 0 0 0 2 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 2 2 0 0 1 0 0 1 1 0 0 1 1 0 1 1 0 1 1 1 1 1 0 1 0 0 0 1 1 1 0 0 0 0 0 0 1 1 1 1 1 1 0 0 0 0 0 0 0 1 1 1 0 0 1 1 0 0 0 1 2 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 1 1 1 1 0 0 1 0 0 0 0 0 1 1 1 1 0 0 2 2 2 2 0 1 2 2 2 2 2 0 0 0 0 0 2 2 2 0 0 2 0 0 0 0 2 2 0 0 2 0 0 0 0 0 0 2 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 2 0 2 0 0 0 2 0 2 2 2 0 0 2 0 0 0 0 2 2 0 1 2 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 2 2 2 2 2 2 2 0 1 1 1 1 1 1 1 1 1 2 2 2 0 0 1 1 1 0 1 1 0 0 0 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 1 1 0 0 0 0 0 1 1 1 0 0 0 0 0 1 2 2 2 2 2 0 2 2 2 0 0 0 0 0 0 2 0 1 1 1 1 0 0 0 2 2 2 0 1 1 0 0 0 0 0 2 0 0 0 0 1 1 1 0 2 2 1 0 0 0 2 0 2 2 2 2 2 2 2 0 0 0 2 0 0 0 0 0 0 0 1 2 2 2 2 0 0 2 0 0 0 2 0 2 0 0 0 1 1 1 1 1 0 1 1 1 1 1 1 1 1 0 1 1 1 2 2 2 2 2 2 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 2 2 2 2 2 2 2 2 2 2 2 0 0 0 2 2 0 2 2 0 2 0 2 2 0 0 0 0 0 2 2 2 2 2 2 2 2 2 0 2 0 0 0 0 0 2 0 2 0 0 0 0 2 0 0 0 0 0 0 0 2 0 0 0 0 0 2 0 2 0 0 0 0 1 0 0 0 0 0 2 2 0 0 0 0 0 0 0 1 1 1 0 0 0 0 1 1 1 1 1 0 0 1 0 1 0 0 1 0 1 1 1 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 2 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 2 2 0 2 0 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 2 2 0 0 0 0 0 0 0 0 0 0 0 0 2 2 2 0 0 2 2 2 0 2 0 0 0 0 0 0 0 0 0 0 0 0 2 2 2 2 2 2 0 0 0 0 0 0 0 0 2 2 0 0 2 2 2 2 0 2 2 2 1 1 1 1 1 1 1 0 2 2 2 2 2 0 0 1 1 0 1 1 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 1 1 1 1 0 0 1 0 0 0 1 0 0 2 0 0 0 0 0 0 0 0 0 1 0 1 1 2 1 2 0 0 2 0 0 0 0 2 2 2 1 1 1 1 0 2 2 0 0 0 2 2 0 0 0 2 2 0 2 2 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 1 0 1 1 1 2 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 0 2 2 0 0 0 2 2 0 2 2 0 2 2 0 2 0 0 0 2 2 2 2 0 0 0 0 0 2 0 2 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 2 0 1 1 0 1 1 1 1 1 1 1 1 1 0 0 0 1 1 0 1 1 1 0 1 1 1 0 1 1 1 0 1 1 1 1 1 1 0 1 1 0 0 0 1 1 1 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 2 2 2 0 0 0 0 0 2 2 2 2 2 2 2 2 0 2 0 0 0 0 2 2 2 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 2 0 0 0 0 0 0 0 2 0 2 0 0 2 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 2 2 2 0 0 2 0 0 0 2 2 2 0 0 0 0 2 0 0 0 0 0 0 2 0 2 2 0 0 2 2 0 2 0 2 0 0 0 0 2 2 2 0 2 2 2 2 0 2 2 0 0 2 2 0 2 2 2 1 1 1 1 1 1 1 1 0 0 0 0 2 2 1 1 1 1 0 0 0 0 0 0 1 0 0 0 1 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 0 0 1 0 1 1 1 1 0 0 0 0 0 1 1 1 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 2 1 1 0 0 2 2 2 2 2 2 2 2 0 1 1 0 0 2 2 2 2 0 2 2 2 2 2 2 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 2 0 0 0 2 0 0 2 2 0 0 2 0 2 0 2 0 2 0 0 2 2 0 0 0 0 2 2 0 2 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 1 1 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 1 1 0 1 1 1 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 1 0 0 0 0 2 2 2 2 2 0 2 2 0 2 2 2 2 2 2 2 2 0 0 0 0 1 2 2 2 2 2 2 2 2 2 0 0 0 2 2 2 2 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 2 2 0 0 2 0 2 0 0 2 0 0 0 0 0 2 0 0 0 2 0 0 0 0 0 0 2 2 2 2 2 0 0 0 2 0 0 0 0 2 0 0 0 0 0 0 0 2 2 0 0 0 0 0 0 2 2 0 2 0 0 0 0 0 0 2 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 2 0 0 0 2 2 2 2 2 0 0 2 0 0 0 0 0 0 2 0 0 0 0 0 2 2 2 2 0 0 0 2 2 2 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 1 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 1 1 0 0 0 1 1 0 0 0 1 0 0 0 1 1 0 0 2 0 1 2 1 1 0 0 2 2 2 0 0 0 0 2 0 0 0 0 0 0 2 0 0 2 2 2 2 2 2 0 2 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 2 2 2 2 0 0 2 0 2 2 2 0 0 2 0 2 2 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 0 1 0 0 0 0 1 1 1 0 1 0 1 0 1 0 1 0 0 1 0 1 1 1 1 1 0 0 1 0 1 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 2 2 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 1 0 2 1 0 0 0 0 0 0 0 0 0 2 2 2 2 2 2 2 2 1 2 2 0 2 2 0 0 2 0 2 0 2 0 2 0 0 0 0 2 0 2 0 0 0 0 0 0 0 0 0 2 2 2 0 0 2 2 2 0 0 0 0 0 2 2 0 0 0 0 0 0 0 0 0 0 2 2 2 2 0 2 2 2 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 2 0 2 2 2 0 0 0 0 0 2 2 2 0 0 0 2 2 0 2 0 0 0 2 0 2 1 1 1 1 1 1 1 1 1 1 0 0 0 1 0 1 0 0 0 1 1 1 0 0 0 0 1 1 1 1 1 1 0 0 1 1 0 0 1 1 1 1 0 1 0 1 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 1 0 0 0 1 1 0 0 0 0 0 0 0 1 1 0 0 0 1 0 0 0 0 1 1 1 1 1 0 0 0 2 0 0 0 2 0 0 0 0 2 0 0 0 0 2 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 0 2 2 0 2 2 2 0 0 2 2 2 0 0 2 2 2 2 2 2 2 0 2 2 2 2 2 2 2 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 1 1 0 1 1 0 1 1 1 1 1 1 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 2 0 1 0 0 0 0 0 0 0 0 2 1 1 1 0 0 1 0 0 1 1 0 0 1 0 0 2 2 2 2 2 0 2 2 2 2 2 0 0 2 2 2 2 2 2 0 0 2 0 0 2 0 2 2 2 0 0 2 2 0 0 2 2 2 0 0 2 0 2 0 0 0 0 0 0 0 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 2 2 0 0 0 0 0 2 2 2 2 0 0 0 0 0 0 0 0 0 0 2 0 0 1 1 1 1 1 1 1 1 0 1 1 0 0 0 0 1 1 1 1 1 1 0 0 1 1 1 1 1 1 1 0 0 1 1 1 1 1 1 0 0 1 0 0 0 1 1 1 1 1 1 1 1 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 2 2 0 0 2 0 0 2 2 2 2 2 2 2 0 2 2 0 2 2 2 2 2 0 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 2 2 2 2 2 0 2 0 0 0 0 2 2 0 0 0 0 0 0 0 0 0 0 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 2 2 0 0 0 0 2 2 0 0 0 2 2 0 0 2 0 0 0 0 0 2 2 2 0 2 2 2 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 2 2 2 2 0 0 0 0 2 0 1 1 0 0 2 0 2 0 0 0 2 2 0 0 2 2 2 2 0 0 0 0 1 1 0 1 1 0 1 1 1 0 1 1 1 1 1 0 0 0 0 0 1 1 1 0 1 0 0 1 0 0 0 1 1 0 0 1 1 1 1 1 0 1 1 0 0 0 0 0 0 0 0 0 1 0 1 1 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 0 0 0 2 2 2 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 1 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 0 0 0 0 0 0 0 0 1 0 0 1 1 0 0 0 0 0 0 0 0 0 1 0 1 0 0 2 2 2 1 1 1 1 0 0 2 0 0 0 0 0 0 0 0 0 0 2 2 0 0 2 2 2 2 2 0 0 0 0 2 2 0 0 2 0 2 2 2 2 2 2 2 2 2 2 0 0 0 0 0 0 0 0 2 2 2 2 0 0 0 0 0 0 0 2 2 2 0 2 2 0 2 0 2 0 0 0 0 0 0 0 2 0 2 0 0 0 0 2 0 0 2 2 0 0 0 0 0 0 0 2 2 2 0 0 0 2 0 0 0 0 0 2 2 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 2 2 0 2 2 1 1 1 1 1 1 1 0 0 2 2 2 2 2 0 0 0 0 0 2 2 0 0 0 0 0 0 0 2 0 0 0 2 2 2 2 2 0 0 0 0 1 1 1 1 0 0 1 1 1 1 1 1 1 1 0 1 1 1 1 1 0 0 0 0 0 0 0 0 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 0 0 1 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 2 2 0 2 0 0 0 0 0 0 2 0 0 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 1 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 1 1 1 1 0 1 0 1 1 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 2 2 1 0 0 0 0 0 2 0 0 0 0 0 0 0 2 0 0 0 2 0 2 2 2 2 0 0 0 0 0 0 2 0 0 0 2 2 2 2 2 0 0 0 2 0 0 0 2 2 2 0 2 0 2 0 2 2 0 0 0 0 2 2 2 2 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 2 2 0 0 0 0 2 2 2 0 0 2 0 0 0 0 0 2 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 2 2 2 2 2 0 0 0 2 2 1 1 2 2 2 2 2 2 2 2 2 1 1 0 0 0 2 1 0 0 0 0 0 0 0 0 0 1 1 1 0 1 0 1 1 1 1 1 1 1 0 0 0 1 1 1 1 1 0 0 1 1 0 0 1 1 0 0 1 1 1 1 1 0 0 0 0 0 1 0 0 0 1 1 1 1 1 1 1 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 1 0 0 1 1 0 0 0 1 0 0 1 1 0 1 1 0 0 0 1 0 1 1 0 0 0 0 0 0 0 0 2 0 0 0 0 2 2 0 2 2 2 2 0 0 2 2 2 2 2 2 0 0 2 2 0 2 2 2 0 0 0 0 2 0 0 2 0 0 0 2 2 2 2 2 2 2 0 0 0 0 0 0 0 0 2 2 2 0 0 0 0 0 0 0 0 2 0 0 0 0 0 2 2 2 2 2 2 0 0 2 2 0 0 0 0 2 2 2 0 0 0 2 2 2 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 2 2 2 2 2 2 2 1 1 2 2 2 2 0 0 0 0 0 0 1 1 1 1 2 2 0 1 0 0 0 1 0 0 0 0 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 0 0 1 0 0 1 1 0 1 0 0 1 1 1 1 1 1 1 0 0 0 0 0 1 0 0 0 1 1 1 0 0 0 1 0 0 1 0 1 1 1 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 1 1 0 0 0 0 0 0 2 0 0 2 2 2 0 0 2 2 0 0 0 2 0 2 0 0 2 0 2 0 0 0 2 2 2 0 2 0 0 0 0 2 2 2 2 2 0 0 0 2 2 0 0 0 0 0 0 0 0 2 2 2 2 2 2 0 0 0 2 0 2 0 2 0 0 2 0 0 0 2 0 2 0 0 0 0 2 2 2 0 0 0 0 0 0 0 0 2 0 2 2 0 2 0 0 2 0 2 0 0 0 0 2 2 0 2 0 0 2 2 0 0 2 2 1 2 2 2 2 2 1 0 0 0 0 2 2 0 0 1 1 0 1 0 0 1 0 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 0 0 0 0 0 1 0 0 0 0 0 0 1 1 0 0 0 0 0 1 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 2 2 0 0 0 0 0 0 2 2 2 2 0 0 2 2 2 2 2 2 0 0 0 0 0 2 2 2 0 0 0 0 0 0 2 2 0 0 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 2 0 2 2 0 0 0 0 2 0 2 2 2 2 0 2 0 0 0 0 0 0 0 2 2 2 2 0 0 0 0 0 0 0 0 2 2 0 0 0 0 0 2 2 2 0 0 0 0 0 2 2 2 2 0 0 2 2 2 2 2 2 2 0 0 0 1 0 2 2 0 0 0 0 0 2 0 0 0 0 2 2 2 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 1 1 1 0 0 0 0 1 1 1 0 0 0 0 0 1 1 0 0 0 1 0 0 1 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 1 0 0 1 1 0 0 0 0 0 1 1 1 1 1 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 1 0 1 0 0 0 0 0 0 0 0 0 1 0 0 2 0 0 0 0 2 2 0 0 0 2 2 0 0 2 0 0 0 2 2 2 2 2 2 0 2 2 0 0 0 0 0 0 2 0 0 0 2 2 2 0 0 0 0 0 2 0 0 0 0 2 0 0 0 0 0 0 0 0 2 2 2 2 0 2 2 0 2 2 2 2 0 0 2 2 0 0 0 2 0 0 0 2 2 0 0 0 0 0 0 0 2 2 2 2 0 2 2 0 2 2 2 0 0 0 2 0 2 0 0 0 0 0 0 2 2 2 2 2 0 0 0 1 0 0 2 0 0 1 0 0 1 1 1 1 0 0 0 1 1 0 0 0 1 1 0 0 1 1 0 0 1 0 0 1 1 1 1 0 1 1 1 0 1 1 1 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 1 1 1 1 1 1 1 1 1 0 1 1 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 1 1 1 0 1 1 0 1 1 1 0 0 0 0 0 0 0 0 0 0 2 2 2 2 2 0 0 0 0 2 0 0 0 0 2 0 0 0 0 0 0 0 2 2 2 2 2 2 0 0 2 2 0 0 2 2 2 2 0 0 0 0 0 0 0 0 0 2 2 2 0 0 2 0 0 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 2 2 2 0 2 2 0 2 2 2 0 0 0 0 2 2 0 2 2 0 0 0 0 0 0 1 0 1 0 0 1 1 1 1 1 1 1 1 1 0 0 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 1 1 1 1 1 0 1 1 1 0 1 0 0 1 0 1 1 0 1 1 0 0 0 1 1 0 0 0 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 2 2 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 2 2 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 2 0 2 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 2 2 0 0 0 0 0 0 0 0 0 0 0 0 2 2 0 0 0 0 0 0 0 2 2 2 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 0 0 1 0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 1 1 1 1 0 0 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 2 2 0 0 0 0 2 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 2 2 2 0 0 2 2 2 0 0 0 0 0 0 2 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 0 0 0 0 2 0 0 2 2 2 0 0 0 0 1 2 2 2 0 0 0 0 1 1 1 0 0 1 0 1 0 0 1 1 1 1 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 1 0 1 1 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 2 0 0 0 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 2 0 0 0 0 2 2 2 0 0 0 2 0 2 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 0 0 0 0 0 2 2 2 2 0 0 0 0 0 0 0 2 2 0 0 2 0 2 2 0 2 0 2 2 0 0 0 2 0 2 0 0 0 0 0 0 0 0 1 0 0 1 1 0 0 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 1 0 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 2 2 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 2 2 0 0 0 0 0 0 2 0 2 2 0 0 0 2 2 2 0 0 0 0 0 0 2 2 2 2 0 0 0 0 2 0 0 2 0 1 0 0 0 0 0 1 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 2 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 2 2 0 0 0 0 0 0 0 0 2 2 2 0 0 0 0 0 0 0 0 0 0 2 0 0 2 2 2 2 2 2 0 0 0 0 0 2 2 2 2 0 2 0 0 0 0 0 0 0 0 0 2 0 0 0 0 1 0 0 0 0 2 2 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 2 0 0 0 2 2 2 0 0 2 2 0 0 0 2 2 0 2 0 0 0 0 2 0 0 0 0 0 2 2 2 0 0 0 0 2 0 0 0 0 0 0 2 0 0 0 2 2 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 0 0 0 2 2 0 0 0 0 1 0 2 2 0 1 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 2 2 2 2 0 0 0 0 0 0 2 0 0 0 2 2 2 2 2 2 0 2 2 2 2 2 0 0 0 2 2 0 2 0 0 2 0 0 0 0 0 0 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 2 0 0 0 0 0 2 2 2 0 0 2 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 2 2 2 2 2 0 0 2 0 2 2 2 2 2 2 0 0 0 0 0 2 2 2 2 2 2 2 2 2 2 2 2 0 2 2 0 0 0 0 0 0 2 2 2 0 0 0 2 2 0 0 2 2 2 2 2 2 2 0 0 2 2 2 2 2 2 2 0 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 0 0 2 0 0 0 1 1 0 0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 2 2 0 2 0 0 0 2 2 2 0 2 2 2 2 0 0 2 0 0 0 0 0 0 0 0 2 0 0 0 2 2 2 0 2 2 0 2 2 2 2 2 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 1 0 0 1 0 1 1 0 0 1 0 0 1 2 2 2 2 0 0 2 2 2 0 2 2 2 0 0 2 0 0 0 0 0 2 0 0 0 2 2 2 2 2 2 2 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 2 2 2 0 2 2 2 0 0 2 0 0 0 0 0 0 0 0 0 0 0 2 2 2 2 2 2 0 2 0 2 2 2 0 2 2 2 2 0 0 2 0 2 0 0 0 2 0 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 0 0 0 2 0 2 0 0 0 0 0 0 0 0 2 0 2 2 2 2 2 2 2 2 2 2 0 nipy-nibabel-d3c26be/nibabel/gifti/tests/data/rh.aparc.annot.gii000066400000000000000000001355061177264777700246770ustar00rootroot00000000000000 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 nipy-nibabel-d3c26be/nibabel/gifti/tests/data/rh.shape.curv.gii000066400000000000000000023446311177264777700245540ustar00rootroot00000000000000 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 nipy-nibabel-d3c26be/nibabel/gifti/tests/test_gifti.py000066400000000000000000000022311177264777700231570ustar00rootroot00000000000000""" Testing gifti objects """ import numpy as np from ...nifti1 import data_type_codes, intent_codes from ..gifti import GiftiImage, GiftiDataArray from numpy.testing import (assert_array_almost_equal, assert_array_equal) from nose.tools import assert_true, assert_equal, assert_raises def test_gifti_image(): # Check that we're not modifying the default empty list in the default # arguments. gi = GiftiImage() assert_equal(gi.darrays, []) arr = np.zeros((2,3)) gi.darrays.append(arr) # Now check we didn't overwrite the default arg gi = GiftiImage() assert_equal(gi.darrays, []) def test_dataarray(): for dt_code in data_type_codes.value_set(): data_type = data_type_codes.type[dt_code] if data_type is np.void: # not supported continue arr = np.zeros((10,3), dtype=data_type) da = GiftiDataArray.from_array(arr, 'triangle') assert_equal(da.datatype, data_type_codes[arr.dtype]) bs_arr = arr.byteswap().newbyteorder() da = GiftiDataArray.from_array(bs_arr, 'triangle') assert_equal(da.datatype, data_type_codes[arr.dtype]) nipy-nibabel-d3c26be/nibabel/gifti/tests/test_giftiio.py000066400000000000000000000151121177264777700235110ustar00rootroot00000000000000# emacs: -*- mode: python-mode; py-indent-offset: 4; indent-tabs-mode: nil -*- # vi: set ft=python sts=4 ts=4 sw=4 et: ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ## # # See COPYING file distributed along with the NiBabel package for the # copyright and license terms. # ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ## from __future__ import with_statement from os.path import join as pjoin, dirname import numpy as np from ... import gifti as gi from ...nifti1 import xform_codes from ...tmpdirs import InTemporaryDirectory from numpy.testing import assert_array_equal, assert_array_almost_equal from nose.tools import (assert_true, assert_false, assert_equal, assert_raises) IO_DATA_PATH = pjoin(dirname(__file__), 'data') DATA_FILE1 = pjoin(IO_DATA_PATH, 'ascii.gii') DATA_FILE2 = pjoin(IO_DATA_PATH, 'gzipbase64.gii') DATA_FILE3 = pjoin(IO_DATA_PATH, 'label.gii') DATA_FILE4 = pjoin(IO_DATA_PATH, 'rh.shape.curv.gii') DATA_FILE5 = pjoin(IO_DATA_PATH, 'base64bin.gii') DATA_FILE6 = pjoin(IO_DATA_PATH, 'rh.aparc.annot.gii') datafiles = [DATA_FILE1, DATA_FILE2, DATA_FILE3, DATA_FILE4, DATA_FILE5, DATA_FILE6] numda = [2, 1, 1, 1, 2, 1] DATA_FILE1_darr1 = np.array( [[-16.07201 , -66.187515, 21.266994], [-16.705893, -66.054337, 21.232786], [-17.614349, -65.401642, 21.071466]]) DATA_FILE1_darr2 = np.array( [0,1,2] ) DATA_FILE2_darr1 = np.array([[ 0.43635699], [ 0.270017 ], [ 0.133239 ], [ 0.35054299], [ 0.26538199], [ 0.32122701], [ 0.23495001], [ 0.26671499], [ 0.306851 ], [ 0.36302799]], dtype=np.float32) DATA_FILE3_darr1 = np.array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0]) DATA_FILE4_darr1 = np.array([[-0.57811606], [-0.53871965], [-0.44602534], [-0.56532663], [-0.51392376], [-0.43225467], [-0.54646534], [-0.48011276], [-0.45624232], [-0.31101292]], dtype=np.float32) DATA_FILE6_darr1 = np.array([9182740, 9182740, 9182740], dtype=np.float32) DATA_FILE5_darr1 = np.array([[ 155.17539978, 135.58103943, 98.30715179], [ 140.33973694, 190.0491333 , 73.24776459], [ 157.3598938 , 196.97969055, 83.65809631], [ 171.46174622, 137.43661499, 78.4709549 ], [ 148.54592896, 97.06752777, 65.96373749], [ 123.45701599, 111.46841431, 66.3571167 ], [ 135.30892944, 202.28720093, 36.38148499], [ 178.28155518, 162.59469604, 37.75128937], [ 178.11087036, 115.28820038, 57.17986679], [ 142.81582642, 82.82115173, 31.02205276]], dtype=np.float32) DATA_FILE5_darr2 = np.array([[ 6402, 17923, 25602], [14085, 25602, 17923], [25602, 14085, 4483], [17923, 1602, 14085], [ 4483, 25603, 25602], [25604, 25602, 25603], [25602, 25604, 6402], [25603, 3525, 25604], [ 1123, 17922, 12168], [25604, 12168, 17922]], dtype=np.int32) def test_read_ordering(): # DATA_FILE1 has an expected darray[0].data shape of (3,3). However if we # read another image first (DATA_FILE2) then the shape is wrong # Read an image img2 = gi.read(DATA_FILE2) assert_equal(img2.darrays[0].data.shape, (143479, 1)) # Read image for which we know output shape img = gi.read(DATA_FILE1) assert_equal(img.darrays[0].data.shape, (3,3)) def test_metadata(): for i, dat in enumerate(datafiles): img = gi.read(dat) me = img.get_metadata() medat = me.get_metadata() assert_equal(numda[i], img.numDA) assert_equal(img.version,'1.0') def test_dataarray1(): img = gi.read(DATA_FILE1) assert_array_almost_equal(img.darrays[0].data, DATA_FILE1_darr1) assert_array_almost_equal(img.darrays[1].data, DATA_FILE1_darr2) me=img.darrays[0].meta.get_metadata() assert_true('AnatomicalStructurePrimary' in me) assert_true('AnatomicalStructureSecondary' in me) assert_equal(me['AnatomicalStructurePrimary'], 'CortexLeft') assert_array_almost_equal(img.darrays[0].coordsys.xform, np.eye(4,4)) assert_equal(xform_codes.niistring[img.darrays[0].coordsys.dataspace],'NIFTI_XFORM_TALAIRACH') assert_equal(xform_codes.niistring[img.darrays[0].coordsys.xformspace],'NIFTI_XFORM_TALAIRACH') def test_dataarray2(): img2 = gi.read(DATA_FILE2) assert_array_almost_equal(img2.darrays[0].data[:10], DATA_FILE2_darr1) def test_dataarray3(): img3 = gi.read(DATA_FILE3) assert_array_almost_equal(img3.darrays[0].data[30:50], DATA_FILE3_darr1) def test_dataarray4(): img4 = gi.read(DATA_FILE4) assert_array_almost_equal(img4.darrays[0].data[:10], DATA_FILE4_darr1) def test_dataarray5(): img3 = gi.read(DATA_FILE5) assert_array_almost_equal(img3.darrays[0].data, DATA_FILE5_darr1) assert_array_almost_equal(img3.darrays[1].data, DATA_FILE5_darr2) def test_readwritedata(): img = gi.read(DATA_FILE2) with InTemporaryDirectory(): gi.write(img, 'test.gii') img2 = gi.read('test.gii') assert_equal(img.numDA,img2.numDA) assert_array_almost_equal(img.darrays[0].data, img2.darrays[0].data) def test_newmetadata(): img = gi.GiftiImage() attr = gi.GiftiNVPairs(name = 'mykey', value = 'val1') newmeta = gi.GiftiMetaData(attr) img.set_metadata(newmeta) myme = img.meta.get_metadata() assert_true('mykey' in myme) newmeta = gi.GiftiMetaData.from_dict( {'mykey1' : 'val2'} ) img.set_metadata(newmeta) myme = img.meta.get_metadata() assert_true('mykey1' in myme) assert_false('mykey' in myme) def test_getbyintent(): img = gi.read(DATA_FILE1) da = img.getArraysFromIntent("NIFTI_INTENT_POINTSET") assert_equal(len(da), 1) da = img.getArraysFromIntent("NIFTI_INTENT_TRIANGLE") assert_equal(len(da), 1) da = img.getArraysFromIntent("NIFTI_INTENT_CORREL") assert_equal(len(da), 0) assert_equal(da, []) def test_labeltable(): img = gi.read(DATA_FILE6) assert_array_almost_equal(img.darrays[0].data[:3], DATA_FILE6_darr1) assert_equal(len(img.labeltable.labels), 36) labeldict = img.labeltable.get_labels_as_dict() assert_true(labeldict.has_key(660700)) assert_equal(labeldict[660700], u'entorhinal') assert_equal(img.labeltable.labels[1].key, 2647065) assert_equal(img.labeltable.labels[1].red, 0.0980392) assert_equal(img.labeltable.labels[1].green, 0.392157) assert_equal(img.labeltable.labels[1].blue, 0.156863) assert_equal(img.labeltable.labels[1].alpha, 1) nipy-nibabel-d3c26be/nibabel/gifti/util.py000066400000000000000000000026121177264777700206340ustar00rootroot00000000000000# emacs: -*- mode: python-mode; py-indent-offset: 4; indent-tabs-mode: nil -*- # vi: set ft=python sts=4 ts=4 sw=4 et: ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ## # # See COPYING file distributed along with the NiBabel package for the # copyright and license terms. # ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ## from ..volumeutils import Recoder # Translate dtype.kind char codes to XML text output strings KIND2FMT = { 'i': '%i', 'u': '%i', 'f': '%10.6f', 'c': '%10.6f', 'V': ''} array_index_order_codes = Recoder(((1, "RowMajorOrder", 'C'), (2, "ColumnMajorOrder", 'F')), fields = ('code', 'label', 'npcode')) gifti_encoding_codes = Recoder( ((0, "undef", "GIFTI_ENCODING_UNDEF", "undef"), (1, "ASCII", "GIFTI_ENCODING_ASCII", "ASCII"), (2, "B64BIN", "GIFTI_ENCODING_B64BIN", "Base64Binary" ), (3, "B64GZ", "GIFTI_ENCODING_B64GZ", "GZipBase64Binary"), (4, "External", "GIFTI_ENCODING_EXTBIN", "ExternalFileBinary"), ), fields = ('code', 'label', 'giistring', 'specs')) gifti_endian_codes = Recoder( ((0, "GIFTI_ENDIAN_UNDEF", "Undef", "undef"), (1, "GIFTI_ENDIAN_BIG", "BigEndian", "big"), (2, "GIFTI_ENDIAN_LITTLE", "LittleEndian", "little"), ), fields = ('code', 'giistring', 'specs', 'byteorder')) nipy-nibabel-d3c26be/nibabel/imageclasses.py000066400000000000000000000042721177264777700212210ustar00rootroot00000000000000# emacs: -*- mode: python-mode; py-indent-offset: 4; indent-tabs-mode: nil -*- # vi: set ft=python sts=4 ts=4 sw=4 et: ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ## # # See COPYING file distributed along with the NiBabel package for the # copyright and license terms. # ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ## ''' Define supported image classes and names ''' from .analyze import AnalyzeImage from .spm99analyze import Spm99AnalyzeImage from .spm2analyze import Spm2AnalyzeImage from .nifti1 import Nifti1Pair, Nifti1Image from .minc import MincImage from .freesurfer import MGHImage from .volumeutils import Recoder # If we don't have scipy, then we cannot write SPM format files try: import scipy.io except ImportError: have_scipy = False else: have_scipy = True # mapping of names to classes and class functionality class_map = { 'analyze': {'class': AnalyzeImage, 'ext': '.img', 'has_affine': False, 'rw': True}, 'spm99analyze': {'class': Spm99AnalyzeImage, 'ext': '.img', 'has_affine': True, 'rw': have_scipy}, 'spm2analyze': {'class': Spm2AnalyzeImage, 'ext': '.img', 'has_affine': True, 'rw': have_scipy}, 'nifti_pair': {'class': Nifti1Pair, 'ext': '.img', 'has_affine': True, 'rw': True}, 'nifti_single': {'class': Nifti1Image, 'ext': '.nii', 'has_affine': True, 'rw': True}, 'minc': {'class': MincImage, 'ext': '.mnc', 'has_affine': True, 'rw': False}, 'mgh':{'class': MGHImage, 'ext': '.mgh', 'has_affine': True, 'rw':True}, 'mgz':{'class': MGHImage, 'ext': '.mgz', 'has_affine': True, 'rw':True}} # mapping of extensions to default image class names ext_map = Recoder(( ('nifti_single', '.nii'), ('nifti_pair', '.img', '.hdr'), ('minc', '.mnc'), ('mgh', '.mgh'), ('mgz', '.mgz'))) nipy-nibabel-d3c26be/nibabel/imageglobals.py000066400000000000000000000023111177264777700211770ustar00rootroot00000000000000# emacs: -*- mode: python-mode; py-indent-offset: 4; indent-tabs-mode: nil -*- # vi: set ft=python sts=4 ts=4 sw=4 et: ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ## # # See COPYING file distributed along with the NiBabel package for the # copyright and license terms. # ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ## """ Defaults for images and headers error_level is the problem level (see BatteryRunners) at which an error will be raised, by the batteryrunners ``log_raise`` method. Thus a level of 0 will result in an error for any problem at all, and a level of 50 will mean no errors will be raised (unless someone's put some strange problem_level > 50 code in). ``logger`` is the default logger (python log instance) To set the log level (log message appears for problem of level >= log level), use e.g. ``logger.level = 40``. As for most loggers, if ``logger.level == 0`` then a default log level is used - use ``logger.getEffectiveLevel()`` to see what that default is. Use ``logger.level = 1`` to see all messages. """ import logging error_level = 40 logger = logging.getLogger('nibabel.global') logger.addHandler(logging.StreamHandler()) nipy-nibabel-d3c26be/nibabel/info.py000066400000000000000000000101411177264777700175040ustar00rootroot00000000000000""" This file contains defines parameters for nibabel that we use to fill settings in setup.py, the nibabel top-level docstring, and for building the docs. In setup.py in particular, we exec this file, so it cannot import nibabel """ # nibabel version information. An empty _version_extra corresponds to a # full release. '.dev' as a _version_extra string means this is a development # version _version_major = 1 _version_minor = 2 _version_micro = 2 #_version_extra = 'dev' _version_extra = '' # Format expected by setup.py and doc/source/conf.py: string of form "X.Y.Z" __version__ = "%s.%s.%s%s" % (_version_major, _version_minor, _version_micro, _version_extra) CLASSIFIERS = ["Development Status :: 3 - Alpha", "Environment :: Console", "Intended Audience :: Science/Research", "License :: OSI Approved :: MIT License", "Operating System :: OS Independent", "Programming Language :: Python", "Topic :: Scientific/Engineering"] description = 'Access a multitude of neuroimaging data formats' # Note: this long_description is actually a copy/paste from the top-level # README.rst, so that it shows up nicely on PyPI. So please remember to edit # it only in one place and sync it correctly. long_description = """ ======= NiBabel ======= This package provides read and write access to some common medical and neuroimaging file formats, including: ANALYZE_ (plain, SPM99, SPM2), GIFTI_, NIfTI1_, MINC_, MGH_ and ECAT_ as well as PAR/REC. There is some very limited support for DICOM_. NiBabel is the successor of PyNIfTI_. .. _ANALYZE: http://www.grahamwideman.com/gw/brain/analyze/formatdoc.htm .. _NIfTI1: http://nifti.nimh.nih.gov/nifti-1/ .. _MINC: http://wiki.bic.mni.mcgill.ca/index.php/MINC .. _PyNIfTI: http://niftilib.sourceforge.net/pynifti/ .. _GIFTI: http://www.nitrc.org/projects/gifti .. _MGH: http://surfer.nmr.mgh.harvard.edu/fswiki/FsTutorial/MghFormat .. _ECAT: http://xmedcon.sourceforge.net/Docs/Ecat .. _DICOM: http://medical.nema.org/ The various image format classes give full or selective access to header (meta) information and access to the image data is made available via NumPy arrays. Website ======= Current information can always be found at the NIPY nibabel website:: http://nipy.org/nibabel Mailing Lists ============= Please see the developer's list here:: http://mail.scipy.org/mailman/listinfo/nipy-devel Code ==== You can find our sources and single-click downloads: * `Main repository`_ on Github. * Documentation_ for all releases and current development tree. * Download as a tar/zip file the `current trunk`_. * Downloads of all `available releases`_. .. _main repository: http://github.com/nipy/nibabel .. _Documentation: http://nipy.org/nibabel .. _current trunk: http://github.com/nipy/nibabel/archives/master .. _available releases: http://github.com/nipy/nibabel/downloads License ======= Nibabel is licensed under the terms of the MIT license. Some code included with nibabel is licensed under the BSD license. Please the COPYING file in the nibabel distribution. """ # versions for dependencies NUMPY_MIN_VERSION='1.2' PYDICOM_MIN_VERSION='0.9.5' # Main setup parameters NAME = 'nibabel' MAINTAINER = "Matthew Brett and Michael Hanke" MAINTAINER_EMAIL = "nipy-devel@neuroimaging.scipy.org" DESCRIPTION = description LONG_DESCRIPTION = long_description URL = "http://nipy.org/nibabel" DOWNLOAD_URL = "http://github.com/nipy/nibabel/archives/master" LICENSE = "MIT license" CLASSIFIERS = CLASSIFIERS AUTHOR = "Matthew Brett, Michael Hanke, Stephan Gerhard" AUTHOR_EMAIL = "nipy-devel@neuroimaging.scipy.org" PLATFORMS = "OS Independent" MAJOR = _version_major MINOR = _version_minor MICRO = _version_micro ISRELEASE = _version_extra == '' VERSION = __version__ PROVIDES = ["nibabel"] REQUIRES = ["numpy (>=%s)" % NUMPY_MIN_VERSION] nipy-nibabel-d3c26be/nibabel/loadsave.py000066400000000000000000000116701177264777700203570ustar00rootroot00000000000000# emacs: -*- mode: python-mode; py-indent-offset: 4; indent-tabs-mode: nil -*- # vi: set ft=python sts=4 ts=4 sw=4 et: ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ## # # See COPYING file distributed along with the NiBabel package for the # copyright and license terms. # ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ## # module imports from .py3k import asbytes from .filename_parser import types_filenames, splitext_addext from . import volumeutils as vu from . import spm2analyze as spm2 from . import nifti1 from .freesurfer import MGHImage from .fileholders import FileHolderError from .spatialimages import ImageFileError from .imageclasses import class_map, ext_map def load(filename): ''' Load file given filename, guessing at file type Parameters ---------- filename : string specification of file to load Returns ------- img : ``SpatialImage`` Image of guessed type ''' froot, ext, trailing = splitext_addext(filename, ('.gz', '.bz2')) try: img_type = ext_map[ext] except KeyError: raise ImageFileError('Cannot work out file type of "%s"' % filename) if ext in ('.nii', '.mnc', '.mgh', '.mgz'): klass = class_map[img_type]['class'] else: # might be nifti pair or analyze of some sort files_types = (('image','.img'), ('header','.hdr')) filenames = types_filenames(filename, files_types) hdr = nifti1.Nifti1Header.from_fileobj( vu.allopen(filenames['header']), check=False) if hdr['magic'] in (asbytes('ni1'), asbytes('n+1')): # allow goofy nifti single magic for pair klass = nifti1.Nifti1Pair else: klass = spm2.Spm2AnalyzeImage return klass.from_filename(filename) def save(img, filename): ''' Save an image to file adapting format to `filename` Parameters ---------- img : ``SpatialImage`` image to save filename : str filename (often implying filenames) to which to save `img`. Returns ------- None ''' try: img.to_filename(filename) except ImageFileError: pass else: return froot, ext, trailing = splitext_addext(filename, ('.gz', '.bz2')) img_type = ext_map[ext] klass = class_map[img_type]['class'] converted = klass.from_image(img) converted.to_filename(filename) def read_img_data(img, prefer='scaled'): """ Read data from image associated with files Parameters ---------- img : ``SpatialImage`` Image with valid image file in ``img.file_map``. Unlike the ``img.get_data()`` method, this function returns the data read from the image file, as specified by the *current* image header and *current* image files. prefer : str, optional Can be 'scaled' - in which case we return the data with the scaling suggested by the format, or 'unscaled', in which case we return, if we can, the raw data from the image file, without the scaling applied. Returns ------- arr : ndarray array as read from file, given parameters in header Notes ----- Summary: please use the ``get_data`` method of `img` instead of this function unless you are sure what you are doing. In general, you will probably prefer ``prefer='scaled'``, because this gives the data as the image format expects to return it. Use `prefer` == 'unscaled' with care; the modified Analyze-type formats such as SPM formats, and nifti1, specify that the image data array is given by the raw data on disk, multiplied by a scalefactor and maybe with the addition of a constant. This function, with ``unscaled`` returns the data on the disk, without these format-specific scalings applied. Please use this funciton only if you absolutely need the unscaled data, and the magnitude of the data, as given by the scalefactor, is not relevant to your application. The Analyze-type formats have a single scalefactor +/- offset per image on disk. If you do not care about the absolute values, and will be removing the mean from the data, then the unscaled values will have preserved intensity ratios compared to the mean-centered scaled data. However, this is not necessarily true of other formats with more complicated scaling - such as MINC. """ image_fileholder = img.file_map['image'] try: fileobj = image_fileholder.get_prepare_fileobj() except FileHolderError: raise ImageFileError('No image file specified for this image') if prefer not in ('scaled', 'unscaled'): raise ValueError('Invalid string "%s" for "prefer"' % prefer) hdr = img.get_header() if prefer == 'unscaled': try: return hdr.raw_data_from_fileobj(fileobj) except AttributeError: pass return hdr.data_from_fileobj(fileobj) nipy-nibabel-d3c26be/nibabel/minc.py000066400000000000000000000204521177264777700175050ustar00rootroot00000000000000# emacs: -*- mode: python-mode; py-indent-offset: 4; indent-tabs-mode: nil -*- # vi: set ft=python sts=4 ts=4 sw=4 et: ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ## # # See COPYING file distributed along with the NiBabel package for the # copyright and license terms. # ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ## import numpy as np from .externals.netcdf import netcdf_file from .py3k import asbytes, asstr from .spatialimages import SpatialImage _dt_dict = { ('b','unsigned'): np.uint8, ('b','signed__'): np.int8, ('c','unsigned'): 'S1', ('h','unsigned'): np.uint16, ('h','signed__'): np.int16, ('i','unsigned'): np.uint32, ('i','signed__'): np.int32, } # See http://www.bic.mni.mcgill.ca/software/minc/minc1_format/node15.html _default_dir_cos = { 'xspace': [1,0,0], 'yspace': [0,1,0], 'zspace': [0,0,1]} class MincError(Exception): pass class MincFile(object): ''' Class to wrap MINC file Although it has some of the same methods as a ``Header``, we use this only when reading a MINC file, to pull out useful header information, and for the method of reading the data out ''' def __init__(self, mincfile): self._mincfile = mincfile self._image = mincfile.variables['image'] self._dim_names = self._image.dimensions # The code below will error with vector_dimensions. See: # http://www.bic.mni.mcgill.ca/software/minc/minc1_format/node3.html # http://www.bic.mni.mcgill.ca/software/minc/prog_guide/node11.html self._dims = [self._mincfile.variables[s] for s in self._dim_names] # We don't currently support irregular spacing # http://www.bic.mni.mcgill.ca/software/minc/minc1_format/node15.html for dim in self._dims: if dim.spacing != asbytes('regular__'): raise ValueError('Irregular spacing not supported') self._spatial_dims = [name for name in self._dim_names if name.endswith('space')] def get_data_dtype(self): typecode = self._image.typecode() if typecode == 'f': dtt = np.dtype(np.float32) elif typecode == 'd': dtt = np.dtype(np.float64) else: signtype = asstr(self._image.signtype) dtt = _dt_dict[(typecode, signtype)] return np.dtype(dtt).newbyteorder('>') def get_data_shape(self): return self._image.data.shape def get_zooms(self): return tuple( [float(dim.step) for dim in self._dims]) def get_affine(self): nspatial = len(self._spatial_dims) rot_mat = np.eye(nspatial) steps = np.zeros((nspatial,)) starts = np.zeros((nspatial,)) dim_names = list(self._dim_names) # for indexing in loop for i, name in enumerate(self._spatial_dims): dim = self._dims[dim_names.index(name)] try: dir_cos = dim.direction_cosines except AttributeError: dir_cos = _default_dir_cos[name] rot_mat[:, i] = dir_cos steps[i] = dim.step starts[i] = dim.start origin = np.dot(rot_mat, starts) aff = np.eye(nspatial+1) aff[:nspatial, :nspatial] = rot_mat * steps aff[:nspatial, nspatial] = origin return aff def _get_valid_range(self): ''' Return valid range for image data The valid range can come from the image 'valid_range' or image 'valid_min' and 'valid_max', or, failing that, from the data type range ''' ddt = self.get_data_dtype() info = np.iinfo(ddt.type) try: valid_range = self._image.valid_range except AttributeError: try: valid_range = [self._image.valid_min, self._image.valid_max] except AttributeError: valid_range = [info.min, info.max] if valid_range[0] < info.min or valid_range[1] > info.max: raise ValueError('Valid range outside input ' 'data type range') return np.asarray(valid_range, dtype=np.float) def _normalize(self, data): """ Scale image data with recorded scalefactors http://www.bic.mni.mcgill.ca/software/minc/prog_guide/node13.html MINC normalization uses "image-min" and "image-max" variables to map the data from the valid range of the image to the range specified by "image-min" and "image-max". The "image-max" and "image-min" are variables that describe the "max" and "min" of image over some dimensions of "image". The usual case is that "image" has dimensions ["zspace", "yspace", "xspace"] and "image-max" has dimensions ["zspace"]. """ ddt = self.get_data_dtype() if ddt.type in np.sctypes['float']: return data # the MINC standard appears to allow the following variables to # be undefined. # http://www.bic.mni.mcgill.ca/software/minc/minc1_format/node16.html # It wasn't immediately obvious what the defaults were. image_max = self._mincfile.variables['image-max'] image_min = self._mincfile.variables['image-min'] if image_max.dimensions != image_min.dimensions: raise MincError('"image-max" and "image-min" do not ' 'have the same dimensions') nscales = len(image_max.dimensions) if image_max.dimensions != self._dim_names[:nscales]: raise MincError('image-max and image dimensions ' 'do not match') dmin, dmax = self._get_valid_range() if nscales == 0: imax = np.asarray(image_max) imin = np.asarray(image_min) sc = (imax-imin) / (dmax-dmin) return np.clip(data, dmin, dmax) * sc + (imin - dmin * sc) out_data = np.empty(data.shape, np.float) def _norm_slice(sdef): imax = image_max[sdef] imin = image_min[sdef] in_data = np.clip(data[sdef], dmin, dmax) sc = (imax-imin) / (dmax-dmin) return in_data * sc + (imin - dmin * sc) if nscales == 1: for i in range(data.shape[0]): out_data[i] = _norm_slice(i) elif nscales == 2: for i in range(data.shape[0]): for j in range(data.shape[1]): out_data[i, j] = _norm_slice((i,j)) else: raise MincError('More than two scaling dimensions') return out_data def get_scaled_data(self): dtype = self.get_data_dtype() data = np.asarray(self._image.data).view(dtype) return self._normalize(data) class MincImage(SpatialImage): ''' Class for MINC images The MINC image class uses the default header type, rather than a specific MINC header type - and reads the relevant information from the MINC file on load. ''' files_types = (('image', '.mnc'),) _compressed_exts = ('.gz', '.bz2') class ImageArrayProxy(object): ''' Minc implemention of array proxy protocol The array proxy allows us to freeze the passed fileobj and header such that it returns the expected data array. ''' def __init__(self, minc_file): self.minc_file = minc_file self._data = None self.shape = minc_file.get_data_shape() def __array__(self): ''' Cached read of data from file ''' if self._data is None: self._data = self.minc_file.get_scaled_data() return self._data @classmethod def from_file_map(klass, file_map): fobj = file_map['image'].get_prepare_fileobj() minc_file = MincFile(netcdf_file(fobj)) affine = minc_file.get_affine() if affine.shape != (4, 4): raise MincError('Image does not have 3 spatial dimensions') data_dtype = minc_file.get_data_dtype() shape = minc_file.get_data_shape() zooms = minc_file.get_zooms() header = klass.header_class(data_dtype, shape, zooms) data = klass.ImageArrayProxy(minc_file) return MincImage(data, affine, header, extra=None, file_map=file_map) load = MincImage.load nipy-nibabel-d3c26be/nibabel/nicom/000077500000000000000000000000001177264777700173075ustar00rootroot00000000000000nipy-nibabel-d3c26be/nibabel/nicom/__init__.py000066400000000000000000000015471177264777700214270ustar00rootroot00000000000000# emacs: -*- mode: python-mode; py-indent-offset: 4; indent-tabs-mode: nil -*- # vi: set ft=python sts=4 ts=4 sw=4 et: ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ## # # See COPYING file distributed along with the NiBabel package for the # copyright and license terms. # ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ## """DICOM reader .. currentmodule:: nibabel.nicom .. autosummary:: :toctree: ../generated csareader dicomreaders dicomwrappers dwiparams structreader """ import warnings warnings.warn('The DICOM readers are highly experimental, unstable,' ' and only work for Siemens time-series at the moment\n' 'Please use with caution. We would be grateful for your ' 'help in improving them', UserWarning, stacklevel=2) nipy-nibabel-d3c26be/nibabel/nicom/csareader.py000066400000000000000000000152401177264777700216140ustar00rootroot00000000000000''' CSA header reader from SPM spec ''' import numpy as np from ..py3k import ZEROB, asbytes, asstr from .structreader import Unpacker # DICOM VR code to Python type _CONVERTERS = { 'FL': float, # float 'FD': float, # double 'DS': float, # decimal string 'SS': int, # signed short 'US': int, # unsigned short 'SL': int, # signed long 'UL': int, # unsigned long 'IS': int, # integer string } class CSAError(Exception): pass class CSAReadError(CSAError): pass def get_csa_header(dcm_data, csa_type='image'): ''' Get CSA header information from DICOM header Return None if the header does not contain CSA information of the specified `csa_type` Parameters ---------- dcm_data : dicom.Dataset DICOM dataset. Needs only implement the tag fetch with ``dcm_data[group, element]`` syntax csa_type : {'image', 'series'}, optional Type of CSA field to read; default is 'image' Returns ------- csa_info : None or dict Parsed CSA field of `csa_type` or None, if we cannot find the CSA information. ''' csa_type = csa_type.lower() if csa_type == 'image': element_no = 0x1010 label = 'Image' elif csa_type == 'series': element_no = 0x1020 label = 'Series' else: raise ValueError('Invalid CSA header type "%s"' % csa_type) try: tag = dcm_data[0x29, element_no] except KeyError: return None if tag.name != '[CSA %s Header Info]' % label: return None return read(tag.value) def read(csa_str): ''' Read CSA header from string `csa_str` Parameters ---------- csa_str : str byte string containing CSA header information Returns ------- header : dict header information as dict, where `header` has fields (at least) ``type, n_tags, tags``. ``header['tags']`` is also a dictionary with one key, value pair for each tag in the header. ''' csa_len = len(csa_str) csa_dict = {'tags': {}} hdr_id = csa_str[:4] up_str = Unpacker(csa_str, endian='<') if hdr_id == asbytes('SV10'): # CSA2 hdr_type = 2 up_str.ptr = 4 # omit the SV10 csa_dict['unused0'] = up_str.read(4) else: # CSA1 hdr_type = 1 csa_dict['type'] = hdr_type csa_dict['n_tags'], csa_dict['check'] = up_str.unpack('2I') if not 0 < csa_dict['n_tags'] <= 128: raise CSAReadError('Number of tags `t` should be ' '0 < t <= 128') for tag_no in range(csa_dict['n_tags']): name, vm, vr, syngodt, n_items, last3 = \ up_str.unpack('64si4s3i') vr = nt_str(vr) name = nt_str(name) tag = {'n_items': n_items, 'vm': vm, # value multiplicity 'vr': vr, # value representation 'syngodt': syngodt, 'last3': last3, 'tag_no': tag_no} if vm == 0: n_values = n_items else: n_values = vm # data converter converter = _CONVERTERS.get(vr) # CSA1 specific length modifier if tag_no == 1: tag0_n_items = n_items assert n_items < 100 items = [] for item_no in range(n_items): x0,x1,x2,x3 = up_str.unpack('4i') ptr = up_str.ptr if hdr_type == 1: # CSA1 - odd length calculation item_len = x0 - tag0_n_items if item_len < 0 or (ptr + item_len) > csa_len: if item_no < vm: items.append('') break else: # CSA2 item_len = x1 if (ptr + item_len) > csa_len: raise CSAReadError('Item is too long, ' 'aborting read') if item_no >= n_values: assert item_len == 0 continue item = nt_str(up_str.read(item_len)) if converter: # we may have fewer real items than are given in # n_items, but we don't know how many - assume that # we've reached the end when we hit an empty item if item_len == 0: n_values = item_no continue item = converter(item) items.append(item) # go to 4 byte boundary plus4 = item_len % 4 if plus4 != 0: up_str.ptr += (4-plus4) tag['items'] = items csa_dict['tags'][name] = tag return csa_dict def get_scalar(csa_dict, tag_name): try: items = csa_dict['tags'][tag_name]['items'] except KeyError: return None if len(items) == 0: return None return items[0] def get_vector(csa_dict, tag_name, n): try: items = csa_dict['tags'][tag_name]['items'] except KeyError: return None if len(items) == 0: return None if len(items) != n: raise ValueError('Expecting %d vector' % n) return np.array(items) def is_mosaic(csa_dict): ''' Return True if the data is of Mosaic type Parameters ---------- csa_dict : dict dict containing read CSA data Returns ------- tf : bool True if the `dcm_data` appears to be of Siemens mosaic type, False otherwise ''' if csa_dict is None: return False if get_acq_mat_txt(csa_dict) is None: return False n_o_m = get_n_mosaic(csa_dict) return not (n_o_m is None) and n_o_m != 0 def get_n_mosaic(csa_dict): return get_scalar(csa_dict, 'NumberOfImagesInMosaic') def get_acq_mat_txt(csa_dict): return get_scalar(csa_dict, 'AcquisitionMatrixText') def get_slice_normal(csa_dict): return get_vector(csa_dict, 'SliceNormalVector', 3) def get_b_matrix(csa_dict): vals = get_vector(csa_dict, 'B_matrix', 6) if vals is None: return # the 6 vector is the upper triangle of the symmetric B matrix inds = np.array([0, 1, 2, 1, 3, 4, 2, 4, 5]) B = np.array(vals)[inds] return B.reshape(3,3) def get_b_value(csa_dict): return get_scalar(csa_dict, 'B_value') def get_g_vector(csa_dict): return get_vector(csa_dict, 'DiffusionGradientDirection', 3) def get_ice_dims(csa_dict): dims = get_scalar(csa_dict, 'ICE_Dims') if dims is None: return None return dims.split('_') def nt_str(s): ''' Strip string to first null Parameters ---------- s : str Returns ------- sdash : str s stripped to first occurence of null (0) ''' zero_pos = s.find(ZEROB) if zero_pos == -1: return s return asstr(s[:zero_pos]) nipy-nibabel-d3c26be/nibabel/nicom/dicomreaders.py000066400000000000000000000147051177264777700223310ustar00rootroot00000000000000from os.path import join as pjoin import glob import numpy as np from .dicomwrappers import (wrapper_from_data, wrapper_from_file) class DicomReadError(Exception): pass DPCS_TO_TAL = np.diag([-1, -1, 1, 1]) def mosaic_to_nii(dcm_data): ''' Get Nifti file from Siemens Parameters ---------- dcm_data : ``dicom.DataSet`` DICOM header / image as read by ``dicom`` package Returns ------- img : ``Nifti1Image`` Nifti image object ''' import nibabel as nib dcm_w = wrapper_from_data(dcm_data) if not dcm_w.is_mosaic: raise DicomReadError('data does not appear to be in mosaic format') data = dcm_w.get_data() aff = np.dot(DPCS_TO_TAL, dcm_w.get_affine()) return nib.Nifti1Image(data, aff) def read_mosaic_dwi_dir(dicom_path, globber='*.dcm'): return read_mosaic_dir(dicom_path, globber, check_is_dwi=True) def read_mosaic_dir(dicom_path, globber='*.dcm', check_is_dwi=False): ''' Read all Siemens mosaic DICOMs in directory, return arrays, params Parameters ---------- dicom_path : str path containing mosaic DICOM images globber : str, optional glob to apply within `dicom_path` to select DICOM files. Default is ``*.dcm`` check_is_dwi : bool, optional If True, raises an error if we don't find DWI information in the DICOM headers. Returns ------- data : 4D array data array with last dimension being acquisition. If there were N acquisitions, each of shape (X, Y, Z), `data` will be shape (X, Y, Z, N) affine : (4,4) array affine relating 3D voxel space in data to RAS world space b_values : (N,) array b values for each acquisition. nan if we did not find diffusion information for these images. unit_gradients : (N, 3) array gradient directions of unit length for each acquisition. (nan, nan, nan) if we did not find diffusion information. ''' full_globber = pjoin(dicom_path, globber) filenames = sorted(glob.glob(full_globber)) b_values = [] gradients = [] arrays = [] if len(filenames) == 0: raise IOError('Found no files with "%s"' % full_globber) for fname in filenames: dcm_w = wrapper_from_file(fname) # Because the routine sorts by filename, it only makes sense to use this # order for mosaic images. Slice by slice dicoms need more sensible # sorting if not dcm_w.is_mosaic: raise DicomReadError('data does not appear to be in mosaic format') arrays.append(dcm_w.get_data()[...,None]) q = dcm_w.q_vector if q is None: # probably not diffusion if check_is_dwi: raise DicomReadError('Could not find diffusion ' 'information reading file "%s"; ' ' is it possible this is not ' 'a _raw_ diffusion directory? ' 'Could it be a processed dataset ' 'like ADC etc?' % fname) b = np.nan g = np.ones((3,)) + np.nan else: b = np.sqrt(np.sum(q * q)) # vector norm g = q / b b_values.append(b) gradients.append(g) affine = np.dot(DPCS_TO_TAL, dcm_w.get_affine()) return (np.concatenate(arrays, -1), affine, np.array(b_values), np.array(gradients)) def slices_to_series(wrappers): ''' Sort sequence of slice wrappers into series This follows the SPM model fairly closely Parameters ---------- wrappers : sequence sequence of ``Wrapper`` objects for sorting into volumes Returns ------- series : sequence sequence of sequences of wrapper objects, where each sequence is wrapper objects comprising a series, sorted into slice order ''' # first pass volume_lists = [wrappers[0:1]] for dw in wrappers[1:]: for vol_list in volume_lists: if dw.is_same_series(vol_list[0]): vol_list.append(dw) break else: # no match in current volume lists volume_lists.append([dw]) print 'We appear to have %d Series' % len(volume_lists) # second pass out_vol_lists = [] for vol_list in volume_lists: if len(vol_list) > 1: vol_list.sort(_slice_sorter) zs = [s.slice_indicator for s in vol_list] if len(set(zs)) < len(zs): # not unique zs # third pass out_vol_lists += _third_pass(vol_list) continue out_vol_lists.append(vol_list) print 'We have %d volumes after second pass' % len(out_vol_lists) # final pass check for vol_list in out_vol_lists: zs = [s.slice_indicator for s in vol_list] diffs = np.diff(zs) if not np.allclose(diffs, np.mean(diffs)): raise DicomReadError('Largeish slice gaps - missing DICOMs?') return out_vol_lists def _slice_sorter(s1, s2): return cmp(s1.slice_indicator, s2.slice_indicator) def _instance_sorter(s1, s2): return cmp(s1.instance_number, s2.instance_number) def _third_pass(wrappers): ''' What we do when there are not unique zs in a slice set ''' inos = [s.instance_number for s in wrappers] msg_fmt = ('Plausibly matching slices, but where some have ' 'the same apparent slice location, and %s; ' '- slices are probably unsortable') if None in inos: raise DicomReadError(msg_fmt % 'some or all slices with ' 'missing InstanceNumber') if len(set(inos)) < len(inos): raise DicomReadError(msg_fmt % 'some or all slices with ' 'the sane InstanceNumber') # sort by instance number wrappers.sort(_instance_sorter) # start loop, in which we start a new volume, each time we see a z # we've seen already in the current volume dw = wrappers[0] these_zs = [dw.slice_indicator] vol_list = [dw] out_vol_lists = [vol_list] for dw in wrappers[1:]: z = dw.slice_indicator if not z in these_zs: # same volume vol_list.append(dw) these_zs.append(z) continue # new volumne vol_list.sort(_slice_sorter) vol_list = [dw] these_zs = [z] out_vol_lists.append(vol_list) vol_list.sort(_slice_sorter) return out_vol_lists nipy-nibabel-d3c26be/nibabel/nicom/dicomwrappers.py000066400000000000000000000544141177264777700225500ustar00rootroot00000000000000''' Classes to wrap DICOM objects and files The wrappers encapsulate the capabilities of the different DICOM formats. They also allow dictionary-like access to named fields. For calculated attributes, we return None where needed data is missing. It seemed strange to raise an error during attribute processing, other than an AttributeError - breaking the 'properties manifesto'. So, any processing that needs to raise an error, should be in a method, rather than in a property, or property-like thing. ''' import operator import numpy as np from . import csareader as csar from .dwiparams import B2q, nearest_pos_semi_def from ..volumeutils import allopen from ..onetime import setattr_on_read as one_time class WrapperError(Exception): pass def wrapper_from_file(file_like, *args, **kwargs): ''' Create DICOM wrapper from `file_like` object Parameters ---------- file_like : object filename string or file-like object, pointing to a valid DICOM file readable by ``pydicom`` *args : positional **kwargs : keyword args to ``dicom.read_file`` command. ``force=True`` might be a likely keyword argument. Returns ------- dcm_w : ``dicomwrappers.Wrapper`` or subclass DICOM wrapper corresponding to DICOM data type ''' import dicom fobj = allopen(file_like) dcm_data = dicom.read_file(fobj, *args, **kwargs) return wrapper_from_data(dcm_data) def wrapper_from_data(dcm_data): ''' Create DICOM wrapper from DICOM data object Parameters ---------- dcm_data : ``dicom.dataset.Dataset`` instance or similar Object allowing attribute access, with DICOM attributes. Probably a dataset as read by ``pydicom``. Returns ------- dcm_w : ``dicomwrappers.Wrapper`` or subclass DICOM wrapper corresponding to DICOM data type ''' csa = csar.get_csa_header(dcm_data) if csa is None: return Wrapper(dcm_data) if not csar.is_mosaic(csa): return SiemensWrapper(dcm_data, csa) return MosaicWrapper(dcm_data, csa) class Wrapper(object): ''' Class to wrap general DICOM files Methods: * get_affine() * get_data() * get_pixel_array() * is_same_series(other) * __getitem__ : return attributes from `dcm_data` * get(key[, default]) - as usual given __getitem__ above Attributes and things that look like attributes: * dcm_data : object * image_shape : tuple * image_orient_patient : (3,2) array * slice_normal : (3,) array * rotation_matrix : (3,3) array * voxel_sizes : tuple length 3 * image_position : sequence length 3 * slice_indicator : float * series_signature : tuple ''' is_csa = False is_mosaic = False b_matrix = None q_vector = None def __init__(self, dcm_data=None): ''' Initialize wrapper Parameters ---------- dcm_data : None or object, optional object should allow attribute access. Usually this will be a ``dicom.dataset.Dataset`` object resulting from reading a DICOM file. If None, just make an empty dict. ''' if dcm_data is None: dcm_data = {} self.dcm_data = dcm_data @one_time def image_shape(self): ''' The array shape as it will be returned by ``get_data()`` ''' shape = (self.get('Rows'), self.get('Columns')) if None in shape: return None return shape @one_time def image_orient_patient(self): ''' Note that this is _not_ LR flipped ''' iop = self.get('ImageOrientationPatient') if iop is None: return None # Values are python Decimals in pydicom 0.9.7 iop = np.array((map(float, iop))) return np.array(iop).reshape(2,3).T @one_time def slice_normal(self): iop = self.image_orient_patient if iop is None: return None return np.cross(*iop.T[:]) @one_time def rotation_matrix(self): ''' Return rotation matrix between array indices and mm Note that we swap the two columns of the 'ImageOrientPatient' when we create the rotation matrix. This is takes into account the slightly odd ij transpose construction of the DICOM orientation fields - see doc/theory/dicom_orientaiton.rst. ''' iop = self.image_orient_patient s_norm = self.slice_normal if None in (iop, s_norm): return None R = np.eye(3) # np.fliplr(iop) gives matrix F in # doc/theory/dicom_orientation.rst The fliplr accounts for the # fact that the first column in ``iop`` refers to changes in # column index, and the second to changes in row index. R[:,:2] = np.fliplr(iop) R[:,2] = s_norm # check this is in fact a rotation matrix assert np.allclose(np.eye(3), np.dot(R, R.T), atol=1e-6) return R @one_time def voxel_sizes(self): ''' voxel sizes for array as returned by ``get_data()`` ''' # pix space gives (row_spacing, column_spacing). That is, the # mm you move when moving from one row to the next, and the mm # you move when moving from one column to the next pix_space = self.get('PixelSpacing') if pix_space is None: return None zs = self.get('SpacingBetweenSlices') if zs is None: zs = self.get('SliceThickness') if zs is None: zs = 1 # Protect from python decimals in pydicom 0.9.7 zs = float(zs) pix_space = map(float, pix_space) return tuple(pix_space + [zs]) @one_time def image_position(self): ''' Return position of first voxel in data block Parameters ---------- None Returns ------- img_pos : (3,) array position in mm of voxel (0,0) in image array ''' ipp = self.get('ImagePositionPatient') if ipp is None: return None # Values are python Decimals in pydicom 0.9.7 return np.array(map(float, ipp)) @one_time def slice_indicator(self): ''' A number that is higher for higher slices in Z Comparing this number between two adjacent slices should give a difference equal to the voxel size in Z. See doc/theory/dicom_orientation for description ''' ipp = self.image_position s_norm = self.slice_normal if None in (ipp, s_norm): return None return np.inner(ipp, s_norm) @one_time def instance_number(self): ''' Just because we use this a lot for sorting ''' return self.get('InstanceNumber') @one_time def series_signature(self): ''' Signature for matching slices into series We use `signature` in ``self.is_same_series(other)``. Returns ------- signature : dict with values of 2-element sequences, where first element is value, and second element is function to compare this value with another. This allows us to pass things like arrays, that might need to be ``allclose`` instead of equal ''' # dictionary with value, comparison func tuple signature = {} eq = operator.eq for key in ('SeriesInstanceUID', 'SeriesNumber', 'ImageType', 'SequenceName', 'EchoNumbers'): signature[key] = (self.get(key), eq) signature['image_shape'] = (self.image_shape, eq) signature['iop'] = (self.image_orient_patient, none_or_close) signature['vox'] = (self.voxel_sizes, none_or_close) return signature def __getitem__(self, key): ''' Return values from DICOM object''' try: return getattr(self.dcm_data, key) except AttributeError: raise KeyError('%s not defined in dcm_data' % key) def get(self, key, default=None): return getattr(self.dcm_data, key, default) def get_affine(self): ''' Return mapping between voxel and DICOM coordinate system Parameters ---------- None Returns ------- aff : (4,4) affine Affine giving transformation between voxels in data array and mm in the DICOM patient coordinate system. ''' # rotation matrix already accounts for the ij transpose in the # DICOM image orientation patient transform. So. column 0 is # direction cosine for changes in row index, column 1 is # direction cosine for changes in column index orient = self.rotation_matrix # therefore, these voxel sizes are in the right order (row, # column, slice) vox = self.voxel_sizes ipp = self.image_position if None in (orient, vox, ipp): raise WrapperError('Not enough information for affine') aff = np.eye(4) aff[:3,:3] = orient * np.array(vox) aff[:3,3] = ipp return aff def get_pixel_array(self): ''' Return unscaled pixel array from DICOM ''' try: return self['pixel_array'] except KeyError: raise WrapperError('Cannot find data in DICOM') def get_data(self): ''' Get scaled image data from DICOMs We return the data as DICOM understands it, first dimension is rows, second dimension is columns Returns ------- data : array array with data as scaled from any scaling in the DICOM fields. ''' return self._scale_data(self.get_pixel_array()) def is_same_series(self, other): ''' Return True if `other` appears to be in same series Parameters ---------- other : object object with ``series_signature`` attribute that is a mapping. Usually it's a ``Wrapper`` or sub-class instance. Returns ------- tf : bool True if `other` might be in the same series as `self`, False otherwise. ''' # compare signature dictionaries. The dictionaries each contain # comparison rules, we prefer our own when we have them. If a # key is not present in either dictionary, assume the value is # None. my_sig = self.series_signature your_sig = other.series_signature my_keys = set(my_sig) your_keys = set(your_sig) # we have values in both signatures for key in my_keys.intersection(your_keys): v1, func = my_sig[key] v2, _ = your_sig[key] if not func(v1, v2): return False # values present in one or the other but not both for keys, sig in ((my_keys - your_keys, my_sig), (your_keys - my_keys, your_sig)): for key in keys: v1, func = sig[key] if not func(v1, None): return False return True def _scale_data(self, data): scale = self.get('RescaleSlope', 1) offset = self.get('RescaleIntercept', 0) # a little optimization. If we are applying either the scale or # the offset, we need to allow upcasting to float. if scale != 1: if offset == 0: return data * scale return data * scale + offset if offset != 0: return data + offset return data class SiemensWrapper(Wrapper): ''' Wrapper for Siemens format DICOMs Adds attributes: * csa_header : mapping * b_matrix : (3,3) array * q_vector : (3,) array ''' is_csa = True def __init__(self, dcm_data=None, csa_header=None): ''' Initialize Siemens wrapper The Siemens-specific information is in the `csa_header`, either passed in here, or read from the input `dcm_data`. Parameters ---------- dcm_data : None or object, optional object should allow attribute access. If `csa_header` is None, it should also be possible to extract a CSA header from `dcm_data`. Usually this will be a ``dicom.dataset.Dataset`` object resulting from reading a DICOM file. If None, we just make an empty dict. csa_header : None or mapping, optional mapping giving values for Siemens CSA image sub-header. If None, we try and read the CSA information from `dcm_data`. If this fails, we fall back to an empty dict. ''' if dcm_data is None: dcm_data = {} self.dcm_data = dcm_data if csa_header is None: csa_header = csar.get_csa_header(dcm_data) if csa_header is None: csa_header = {} self.csa_header = csa_header @one_time def slice_normal(self): slice_normal = csar.get_slice_normal(self.csa_header) if not slice_normal is None: return np.array(slice_normal) iop = self.image_orient_patient if iop is None: return None return np.cross(*iop.T[:]) @one_time def series_signature(self): ''' Add ICE dims from CSA header to signature ''' signature = super(SiemensWrapper, self).series_signature ice = csar.get_ice_dims(self.csa_header) if not ice is None: ice = ice[:6] + ice[8:9] signature['ICE_Dims'] = (ice, lambda x, y: x == y) return signature @one_time def b_matrix(self): ''' Get DWI B matrix referring to voxel space Parameters ---------- None Returns ------- B : (3,3) array or None B matrix in *voxel* orientation space. Returns None if this is not a Siemens header with the required information. We return None if this is a b0 acquisition ''' hdr = self.csa_header # read B matrix as recorded in CSA header. This matrix refers to # the space of the DICOM patient coordinate space. B = csar.get_b_matrix(hdr) if B is None: # may be not diffusion or B0 image bval_requested = csar.get_b_value(hdr) if bval_requested is None: return None if bval_requested != 0: raise csar.CSAError('No B matrix and b value != 0') return np.zeros((3,3)) # rotation from voxels to DICOM PCS, inverted to give the rotation # from DPCS to voxels. Because this is an orthonormal matrix, its # transpose is its inverse R = self.rotation_matrix.T # because B results from V dot V.T, the rotation B is given by R dot # V dot V.T dot R.T == R dot B dot R.T B_vox = np.dot(R, np.dot(B, R.T)) # fix presumed rounding errors in the B matrix by making it positive # semi-definite. return nearest_pos_semi_def(B_vox) @one_time def q_vector(self): ''' Get DWI q vector referring to voxel space Parameters ---------- None Returns ------- q: (3,) array Estimated DWI q vector in *voxel* orientation space. Returns None if this is not (detectably) a DWI ''' B = self.b_matrix if B is None: return None # We've enforced more or less positive semi definite with the # b_matrix routine return B2q(B, tol=1e-8) class MosaicWrapper(SiemensWrapper): ''' Class for Siemens mosaic format data Mosaic format is a way of storing a 3D image in a 2D slice - and it's as simple as you'd imagine it would be - just storing the slices in a mosaic similar to a light-box print. We need to allow for this when getting the data and (because of an idiosyncrasy in the way Siemens stores the images) calculating the position of the first voxel. Adds attributes: * n_mosaic : int * mosaic_size : float ''' is_mosaic = True def __init__(self, dcm_data=None, csa_header=None, n_mosaic=None): ''' Initialize Siemens Mosaic wrapper The Siemens-specific information is in the `csa_header`, either passed in here, or read from the input `dcm_data`. Parameters ---------- dcm_data : None or object, optional object should allow attribute access. If `csa_header` is None, it should also be possible for to extract a CSA header from `dcm_data`. Usually this will be a ``dicom.dataset.Dataset`` object resulting from reading a DICOM file. If None, just make an empty dict. csa_header : None or mapping, optional mapping giving values for Siemens CSA image sub-header. n_mosaic : None or int, optional number of images in mosaic. If None, try to get this number from `csa_header`. If this fails, raise an error ''' SiemensWrapper.__init__(self, dcm_data, csa_header) if n_mosaic is None: try: n_mosaic = csar.get_n_mosaic(self.csa_header) except KeyError: pass if n_mosaic is None or n_mosaic == 0: raise WrapperError('No valid mosaic number in CSA ' 'header; is this really ' 'Siemens mosiac data?') self.n_mosaic = n_mosaic self.mosaic_size = np.ceil(np.sqrt(n_mosaic)) @one_time def image_shape(self): ''' Return image shape as returned by ``get_data()`` ''' # reshape pixel slice array back from mosaic rows = self.get('Rows') cols = self.get('Columns') if None in (rows, cols): return None mosaic_size = self.mosaic_size return (int(rows / mosaic_size), int(cols / mosaic_size), self.n_mosaic) @one_time def image_position(self): ''' Return position of first voxel in data block Adjusts Siemens mosaic position vector for bug in mosaic format position. See ``dicom_mosaic`` in doc/theory for details. Parameters ---------- None Returns ------- img_pos : (3,) array position in mm of voxel (0,0,0) in Mosaic array ''' ipp = super(MosaicWrapper, self).image_position # mosaic image size md_rows, md_cols = (self.get('Rows'), self.get('Columns')) iop = self.image_orient_patient pix_spacing = self.get('PixelSpacing') if None in (ipp, md_rows, md_cols, iop, pix_spacing): return None # PixelSpacing values are python Decimal in pydicom 0.9.7 pix_spacing = np.array(map(float, pix_spacing)) # size of mosaic array before rearranging to 3D. md_rc = np.array([md_rows, md_cols]) # size of slice array after reshaping to 3D rd_rc = md_rc / self.mosaic_size # apply algorithm for undoing mosaic translation error - see # ``dicom_mosaic`` doc vox_trans_fixes = (md_rc - rd_rc) / 2 # flip IOP field to refer to rows then columns index change - # see dicom_orientation doc Q = np.fliplr(iop) * pix_spacing return ipp + np.dot(Q, vox_trans_fixes[:,None]).ravel() def get_data(self): ''' Get scaled image data from DICOMs Resorts data block from mosaic to 3D Returns ------- data : array array with data as scaled from any scaling in the DICOM fields. Notes ----- The apparent image in the DICOM file is a 2D array that consists of blocks, that are the output 2D slices. Let's call the original array the *slab*, and the contained slices *slices*. The slices are of pixel dimension ``n_slice_rows`` x ``n_slice_cols``. The slab is of pixel dimension ``n_slab_rows`` x ``n_slab_cols``. Because the arrangement of blocks in the slab is defined as being square, the number of blocks per slab row and slab column is the same. Let ``n_blocks`` be the number of blocks contained in the slab. There is also ``n_slices`` - the number of slices actually collected, some number <= ``n_blocks``. We have the value ``n_slices`` from the 'NumberOfImagesInMosaic' field of the Siemens private (CSA) header. ``n_row_blocks`` and ``n_col_blocks`` are therefore given by ``ceil(sqrt(n_slices))``, and ``n_blocks`` is ``n_row_blocks ** 2``. Also ``n_slice_rows == n_slab_rows / n_row_blocks``, etc. Using these numbers we can therefore reconstruct the slices from the 2D DICOM pixel array. ''' shape = self.image_shape if shape is None: raise WrapperError('No valid information for image shape') n_slice_rows, n_slice_cols, n_mosaic = shape n_slab_rows = self.mosaic_size n_blocks = n_slab_rows ** 2 data = self.get_pixel_array() v4=data.reshape(n_slab_rows, n_slice_rows, n_slab_rows, n_slice_cols) # move the mosaic dims to the end v4=v4.transpose((1,3,0,2)) # pool mosaic-generated dims v3=v4.reshape((n_slice_rows, n_slice_cols, n_blocks)) # delete any padding slices v3 = v3[...,:n_mosaic] return self._scale_data(v3) def none_or_close(val1, val2, rtol=1e-5, atol=1e-6): ''' Match if `val1` and `val2` are both None, or are close Parameters ---------- val1 : None or array-like val2 : None or array-like rtol : float, optional Relative tolerance; see ``np.allclose`` atol : float, optional Absolute tolerance; see ``np.allclose`` Returns ------- tf : bool True iff (both `val1` and `val2` are None) or (`val1` and `val2` are close arrays, as detected by ``np.allclose`` with parameters `rtol` and `atal`). Examples -------- >>> none_or_close(None, None) True >>> none_or_close(1, None) False >>> none_or_close(None, 1) False >>> none_or_close([1,2], [1,2]) True >>> none_or_close([0,1], [0,2]) False ''' if (val1, val2) == (None, None): return True if None in (val1, val2): return False return np.allclose(val1, val2, rtol, atol) nipy-nibabel-d3c26be/nibabel/nicom/dwiparams.py000066400000000000000000000070721177264777700216560ustar00rootroot00000000000000''' Process diffusion imaging parameters * ``q`` is a vector in Q space * ``b`` is a b value * ``g`` is the unit vector along the direction of q (the gradient direction) Thus: b = norm(q) g = q / norm(q) (``norm(q)`` is the Euclidean norm of ``q``) The B matrix ``B`` is a symmetric positive semi-definite matrix. If ``q_est`` is the closest q vector equivalent to the B matrix, then: B ~ (q_est . q_est.T) / norm(q_est) ''' import numpy as np import numpy.linalg as npl def B2q(B, tol=None): ''' Estimate q vector from input B matrix `B` We assume the input `B` is symmetric positive definite. Because the solution is a square root, the sign of the returned vector is arbitrary. We set the vector to have a positive x component by convention. Parameters ---------- B : (3,3) array-like B matrix - symmetric. We do not check the symmetry. tol : None or float absolute tolerance below which to consider eigenvalues of the B matrix to be small enough not to worry about them being negative, in check for positive semi-definite-ness. None (default) results in a fairly tight numerical threshold proportional the maximum eigenvalue Returns ------- q : (3,) vector Estimated q vector from B matrix `B` ''' B = np.asarray(B) w, v = npl.eig(B) if tol is None: tol = np.abs(w.max() * np.finfo(w.dtype).eps) non_trivial = np.abs(w) > tol if np.any(w[non_trivial] < 0): raise ValueError('B not positive semi-definite') inds = np.argsort(w)[::-1] max_ind = inds[0] vector = v[:,max_ind] # because the factor is a sqrt, the sign of the vector is arbitrary. # We arbitrarily set it to have a positive x value. if vector[0] < 0: vector *= -1 return vector * w[max_ind] def nearest_pos_semi_def(B): ''' Least squares positive semi-definite tensor estimation Reference: Niethammer M, San Jose Estepar R, Bouix S, Shenton M, Westin CF. On diffusion tensor estimation. Conf Proc IEEE Eng Med Biol Soc. 2006;1:2622-5. PubMed PMID: 17946125; PubMed Central PMCID: PMC2791793. Parameters ---------- B : (3,3) array-like B matrix - symmetric. We do not check the symmetry. Returns ------- npds : (3,3) array Estimated nearest positive semi-definite array to matrix `B`. Examples -------- >>> B = np.diag([1, 1, -1]) >>> nearest_pos_semi_def(B) array([[ 0.75, 0. , 0. ], [ 0. , 0.75, 0. ], [ 0. , 0. , 0. ]]) ''' B = np.asarray(B) vals, vecs = npl.eigh(B) # indices of eigenvalues in descending order inds = np.argsort(vals)[::-1] vals = vals[inds] cardneg = np.sum(vals < 0) if cardneg == 0: return B if cardneg == 3: return np.zeros((3,3)) lam1a, lam2a, lam3a = vals scalers = np.zeros((3,)) if cardneg == 2: b112 = np.max([0,lam1a+(lam2a+lam3a)/3.]) scalers[0] = b112 elif cardneg == 1: lam1b=lam1a+0.25*lam3a lam2b=lam2a+0.25*lam3a if lam1b >= 0 and lam2b >= 0: scalers[:2] = lam1b, lam2b else: # one of the lam1b, lam2b is < 0 if lam2b < 0: b111=np.max([0,lam1a+(lam2a+lam3a)/3.]) scalers[0] = b111 if lam1b < 0: b221=np.max([0,lam2a+(lam1a+lam3a)/3.]) scalers[1] = b221 # resort the scalers to match the original vecs scalers = scalers[np.argsort(inds)] return np.dot(vecs, np.dot(np.diag(scalers), vecs.T)) nipy-nibabel-d3c26be/nibabel/nicom/structreader.py000066400000000000000000000070451177264777700223760ustar00rootroot00000000000000''' Stream-like reader for packed data ''' from struct import Struct _ENDIAN_CODES = '@=<>!' class Unpacker(object): ''' Class to unpack values from buffer object The buffer object is usually a string. Caches compiled :mod:`struct` format strings so that repeated unpacking with the same format string should be faster than using ``struct.unpack`` directly. Examples -------- >>> a = '1234567890' #23dt : bytes >>> upk = Unpacker(a) >>> upk.unpack('2s') #23dt next : bytes ('12',) >>> upk.unpack('2s') #23dt next : bytes ('34',) >>> upk.ptr 4 >>> upk.read(3) #23dt next : bytes '567' >>> upk.ptr 7 ''' def __init__(self, buf, ptr=0, endian=None): ''' Initialize unpacker Parameters ---------- buf : buffer object implementing buffer protocol (e.g. str) ptr : int, optional offset at which to begin reads from `buf` endian : None or str, optional endian code to prepend to format, as for ``unpack`` endian codes. None (the default) corresponds to the default behavior of ``struct`` - assuming system endian unless you specify the byte order specifically in the format string passed to ``unpack`` ''' self.buf = buf self.ptr = ptr self.endian = endian self._cache = {} def unpack(self, fmt): ''' Unpack values from contained buffer Unpacks values from ``self.buf`` and updates ``self.ptr`` to the position after the read data. Parameters ---------- fmt : str format string as for ``unpack`` Returns ------- values : tuple values as unpacked from ``self.buf`` according to `fmt` ''' # try and get a struct corresponding to the format string from # the cache pkst = self._cache.get(fmt) if pkst is None: # struct not in cache # if we've not got a default endian, or the format has an # explicit endianness, then we make a new struct directly # from the format string if self.endian is None or fmt[0] in _ENDIAN_CODES: pkst = Struct(fmt) else: # we're going to modify the endianness with our # default. endian_fmt = self.endian + fmt pkst = Struct(endian_fmt) # add an entry in the cache for the modified format # string as well as (below) the unmodified format # string, in case we get a format string with the same # endianness as default, but specified explicitly. self._cache[endian_fmt] = pkst self._cache[fmt] = pkst values = pkst.unpack_from(self.buf, self.ptr) self.ptr += pkst.size return values def read(self, n_bytes=-1): ''' Return byte string of length `n_bytes` at current position Returns sub-string from ``self.buf`` and updates ``self.ptr`` to the position after the read data. Parameters ---------- n_bytes : int, optional number of bytes to read. Can be -1 (the default) in which case we return all the remaining bytes in ``self.buf`` Returns ------- s : byte string ''' start = self.ptr if n_bytes == -1: end = len(self.buf) else: end = start + n_bytes self.ptr = end return self.buf[start:end] nipy-nibabel-d3c26be/nibabel/nicom/tests/000077500000000000000000000000001177264777700204515ustar00rootroot00000000000000nipy-nibabel-d3c26be/nibabel/nicom/tests/__init__.py000066400000000000000000000000521177264777700225570ustar00rootroot00000000000000# init to allow relative imports in tests nipy-nibabel-d3c26be/nibabel/nicom/tests/data/000077500000000000000000000000001177264777700213625ustar00rootroot00000000000000nipy-nibabel-d3c26be/nibabel/nicom/tests/data/csa2_b0.bin000066400000000000000000000264501177264777700232740ustar00rootroot00000000000000SV10SMEchoLinePosition10a4d=15eb  MRC35119 8  ISM M 64 EchoColumnPositiona=  #a_pSgKXZ][d! 1mmjhP.+Ybfo qll?BISM M 64 EchoPartitionPosition  }rrctuyv wxsrtjp FryISM M 32 UsedChannelMask  UL M M 4095 Actual3DImaPartNumberN~^asiDghvOISICE_Dims LOMMX_1_1_1_1_1_1_48_1_1_1_1_201B_value %!sW%#  RH:- N$ "RGenPat$$10aISM M 0 Filter1Kuoclw\ifbn (nljlnqdbow8 4pjntyfmfk01 EygoLISFilter2 t|u wvISProtocolSliceNumber ;).   \  ) 8ISM M 0 RealDwellTimepukefo  %|prlqndh7 $9{uvnmne mrtISM M 2800 PixelFileyx~P$ WF %m  UNPixelFileNamem=``UNSliceMeasurementDuration[?9 U !n(!nDSM M 40.00000000SequenceMask0g[H5^UL M M 134217732AcquisitionMatrixTextenPat$$10a50$5eb$MRC35119b051fac(hESHM M 128p*128MeasuredFourierLines6)tISM M 0 FlowEncodingDirectionouM>D$(BISFlowVenc#+hhJO&%  &FDPhaseEncodingDirectionPositiveN27245#".ISM M 1 NumberOfImagesInMosaicK>)_, $Am{jgGUS M M 48 DiffusionGradientDirection@Q CR*FDImageGroup!n(!n;^US SliceNormalVectorfH5^:RM!GenPat$$10a5FDM M 0.00000000 M 0.00523632 M 0.99998629DiffusionDirectionality($7" |V U hgNCSM M DIRECTIONALTimeAfterStart """hgNDSM M 6.48750000FlipAngle se"" EEDSSequenceName ""SEEhgNSHRepetitionTimehgN hgNseqDSEchoTime < DSNumberOfAveragesRAD.bSehgNDSVoxelThicknessDSVoxelPhaseFOVEvLDSVoxelReadoutFOVEvLDSVoxelPositionSagEvLDSVoxelPositionCorEvLDSVoxelPositionTraEvLDSVoxelNormalSagEvLDSVoxelNormalCorEvLDSVoxelNormalTraEvLDSVoxelInPlaneRotEvLDSImagePositionPatientEvLDSImageOrientationPatientEvLDSPixelSpacingEvLDSSliceLocationEvLDSSliceThicknessEvLDSSpectrumTextRegionLabelEvLSHComp_AlgorithmEvLISComp_BlendedEvLISComp_ManualAdjustedEvLISComp_AutoParamEvLLTComp_AdjustedParamEvLLTComp_JobIDEvLLTFMRIStimulInfoEvLISFlowEncodingDirectionStringEvLSHRepetitionTimeEffectiveEvLDSCsiImagePositionPatientEvLDSCsiImageOrientationPatientEvLDSCsiPixelSpacingEvLDSCsiSliceLocationEvLDSCsiSliceThicknessEvLDSOriginalSeriesNumberEvLISOriginalImageNumberEvLISImaAbsTablePositionEvLSLM M 0 M 0 M -1252 NonPlanarImageEvLUS M M 0 MoCoQMeasureEvLUS LQAlgorithmEvLSHSlicePosition_PCSEvLFDMM-805.00000000M-825.01911853 M -75.09764090RBMoCoTransEvLFDRBMoCoRotEvLFDMultistepIndexEvLISM M 0 ImaRelTablePositionEvLISM M 0 M 0 M 0 ImaCoilStringEvLLOM M T:HEA;HEPRFSWDDataTypeEvLSHM M predictedGSWDDataTypeEvLSHM M predictedNormalizeManipulatedEvLISImaPATModeTextEvLLOMMp2B_matrixEvLFDBandwidthPerPixelPhaseEncodeEvLFDM M 19.05500000FMRIStimulLevelEvLFDMosaicRefAcqTimesEvLFD0MM6487.49999999M6350.00000001M6212.49999999M6072.50000001M5935.00000000M5797.49999999M5660.00000000M5522.49999999M5382.50000001M5245.00000000M5107.50000001M4970.00000000M4829.99999999M4692.50000000M4554.99999999M4417.50000001M4280.00000000M4140.00000001M4002.50000000M3864.99999999M3727.50000001M3587.49999999M3450.00000001M3312.50000000M3174.99999999M3037.50000001M2897.49999999M2760.00000001M2622.50000000M2484.99999999M2347.50000000M2207.49999999M2070.00000001M1932.50000000M1795.00000001M1655.00000000M1517.49999999M1380.00000000M1242.49999999M1105.00000001 M 965.00000000 M 827.50000001 M 690.00000000 M 552.49999999 M 412.50000001 M 274.99999999 M 137.50000001 M 0.00000000AutoInlineImageFilterEnabledEvLISQCDataEvLFDnipy-nibabel-d3c26be/nibabel/nicom/tests/data/csa2_b1000.bin000066400000000000000000000271301177264777700235110ustar00rootroot00000000000000SV10SMEchoLinePosition10a4d=15eb  MRC35119 8  ISM M 64 EchoColumnPositiona=  #a_pSgKXZ][d! 1mmjhP.+Ybfo qll?BISM M 64 EchoPartitionPosition  }rrctuyv wxsrtjp FryISM M 32 UsedChannelMask  UL M M 4095 Actual3DImaPartNumberN~^asiDghvOISICE_Dims LOMMX_1_1_1_2_1_1_48_1_1_1_1_201B_value %!sW%#  RH:- N$ "RGenPat$$10aISM M 1000 Filter1Kuoclw\ifbn (nljlnqdbow8 4pjntyfmfk01 EygoLISFilter2 t|u wvISProtocolSliceNumber ;).   \  ) 8ISM M 0 RealDwellTimepukefo  %|prlqndh7 $9{uvnmne mrtISM M 2800 PixelFileyx~P$ WF %m  UNPixelFileNamem=``UNSliceMeasurementDuration[?9 U !n(!nDSM M 40.00000000SequenceMask0g[H5^UL M M 134217732AcquisitionMatrixTextenPat$$10a50$5eb$MRC35119b051fac(hESHM M 128p*128MeasuredFourierLines6)tISM M 0 FlowEncodingDirectionouM>D$(BISFlowVenc#+hhJO&%  &FDPhaseEncodingDirectionPositiveN27245#".ISM M 1 NumberOfImagesInMosaicK>)_, $Am{jgGUS M M 48 DiffusionGradientDirection@Q CR*FDM M 0.99997449 M 0.00505012 M -0.00505012ImageGroup!n(!n;^US SliceNormalVectorfH5^:RM!GenPat$$10a5FDM M 0.00000000 M 0.00523632 M 0.99998629DiffusionDirectionality($7" |V U hgNCSM M DIRECTIONALTimeAfterStart """hgNDSM M 19.74000000FlipAngle se"" EEDSSequenceName ""SEEhgNSHRepetitionTimehgN hgNseqDSEchoTime < DSNumberOfAveragesRAD.bSehgNDSVoxelThicknessDSVoxelPhaseFOVEvLDSVoxelReadoutFOVEvLDSVoxelPositionSagEvLDSVoxelPositionCorEvLDSVoxelPositionTraEvLDSVoxelNormalSagEvLDSVoxelNormalCorEvLDSVoxelNormalTraEvLDSVoxelInPlaneRotEvLDSImagePositionPatientEvLDSImageOrientationPatientEvLDSPixelSpacingEvLDSSliceLocationEvLDSSliceThicknessEvLDSSpectrumTextRegionLabelEvLSHComp_AlgorithmEvLISComp_BlendedEvLISComp_ManualAdjustedEvLISComp_AutoParamEvLLTComp_AdjustedParamEvLLTComp_JobIDEvLLTFMRIStimulInfoEvLISFlowEncodingDirectionStringEvLSHRepetitionTimeEffectiveEvLDSCsiImagePositionPatientEvLDSCsiImageOrientationPatientEvLDSCsiPixelSpacingEvLDSCsiSliceLocationEvLDSCsiSliceThicknessEvLDSOriginalSeriesNumberEvLISOriginalImageNumberEvLISImaAbsTablePositionEvLSLM M 0 M 0 M -1252 NonPlanarImageEvLUS M M 0 MoCoQMeasureEvLUS LQAlgorithmEvLSHSlicePosition_PCSEvLFDMM-805.00000000M-825.01911853 M -75.09764090RBMoCoTransEvLFDRBMoCoRotEvLFDMultistepIndexEvLISM M 0 ImaRelTablePositionEvLISM M 0 M 0 M 0 ImaCoilStringEvLLOM M T:HEA;HEPRFSWDDataTypeEvLSHM M predictedGSWDDataTypeEvLSHM M predictedNormalizeManipulatedEvLISImaPATModeTextEvLLOMMp2B_matrixEvLFDM M 992.00000000 M 5.00000000 M -5.00000000 M 1.00000000 M -1.00000000 M 1.00000000BandwidthPerPixelPhaseEncodeEvLFDM M 19.05500000FMRIStimulLevelEvLFDMosaicRefAcqTimesEvLFD0MM6489.99999999M6350.00000001M6212.49999999M6075.00000001M5937.50000000M5799.99999999M5660.00000000M5522.49999999M5385.00000001M5247.50000000M5107.50000001M4970.00000000M4832.49999999M4695.00000001M4557.50000000M4417.50000001M4280.00000000M4142.49999999M4005.00000000M3867.49999999M3727.50000001M3590.00000000M3452.50000001M3315.00000000M3174.99999999M3037.50000001M2899.99999999M2762.50000001M2625.00000000M2484.99999999M2347.50000000M2209.99999999M2072.50000001M1932.50000000M1795.00000001M1657.50000000M1519.99999999M1382.50000001M1242.49999999M1105.00000001 M 967.50000000 M 829.99999999 M 692.50000000 M 552.49999999 M 415.00000001 M 277.50000000 M 140.00000001 M 0.00000000AutoInlineImageFilterEnabledEvLISQCDataEvLFDnipy-nibabel-d3c26be/nibabel/nicom/tests/data/csa2_zero_len.bin.gz000066400000000000000000000225401177264777700252230ustar00rootroot00000000000000dOcsa2_zero_len.bin]KGr.]-/16 9JGROKڰ ?Wt6|0OtFueJufETFcZD{(Ѱ8G7zXtItWr'b$t; IQVV}? ]BlGtoz;>9(vŰ?O(sx7^aUϱLXd7@O:Q1λbE;o_OJO&Sҹ*$:KIq>,>ANNn~qݿc>??ӣI)3_T_beOth ahߏ~E_>2W2_Gyu캭|-.v&5.x2 `<ޞ^kSdq Io?0: g?dR82I;İ={e\"[\mJfTR+Qяs/h(-ٸ赋nqY ?t1b[t ,̎/LBևQgK{Yukݖo}uNO=ZpL"I( e $ӅƱwﴘeiv{T=2$Mxp?_ϯR踀9Iޭ2%4?w%餔gRf_2wGǘ`R =X&4`<Rw:^a|' >2 )FoOQ)-WI)t_c7Ԧd*x[?^+דRޫX&X&Mvnv.]O~?85?gR~[%-LB;ŕ6o!p>|RU|e5Ip9SSiq9J R~bBjklI);'7HLrv>mWLң Q=/Nf0D2)0<$ze:0\ʭ~/q{j+R^eدLB8]AqyL!-tSIN[nF0߽_7\Q~a7I;$QyRi2 {ηNg؞ ?ɿ#>S,}3w^`pR{iM!_~|A9͎9`wb0s8U{/LBҺ%IfG#>֣671)|lE,D/[X&ykN3₩2+{[Z>غ[?Ƴp\JpaLqJem.)p~9.fM4Z;;,-^b@:ɟID,1a1kÕ9VT1$JXN,IE*2JZ-5bjPtan)¾>搩%y.. ~ovvwԏGaAۈhi̩k߾ۇ$I %Uw'^޽,U 2;~Bi r_Vܿvw϶'%qu~hT KQYj@RfRΜ2SxXsK ԥ٣7ufeGSJ!6~nJgZ14)3Z"4im=b(=Jfk#6ڰYYV}>r2Ǒ8lR?!.?vZ(Upx$T-HO;=GU6z-^2mwtOJN*놳@BvjX]t 8WWzi5]O6 fbyڦ SWC$Im02a27uJiuc(u Lgq`ޡ8" uk/yFҵ.n\s#Xִ=5 Zټyj#@OYkj&Wʬyjz~;pnýbp2&\s[+&\j%\.HExG!ʬp\f1y-nGLlﱫib4z]!XE}pFA j  G;:٭<+yQտl2x`~,{?/Q'tMs67i/{rPjlŪGu~9LaWƊz3ffflm홛a\][A;:1U6$w[ǝ`PLe @(_7̿j V?u5 Jo.7}ӏ|{O]xHe<~///ݛ)ez6$Ɇ>`n4mMN;s ZL;X7kT\{^@79pXlItjhnLwP7w;KNsN]R/WXҮkg7vpM&X׌7&7 |ַL H57;w4Y4{}ﺠ{nOslU9]UnNT-YцKêrK6omQnO{e2ĊU?ȗV}9v6xIzN|+cݕ3k ]mB%p@&u}ܥ6%٩sY]dr՘[qԢ?ez^~:k{^)fV͛{kY{qGݛy{\,49XwkcA{i~okřgEI_ˏm6Zbp\ZE;wk2 TTdg~a0Ƨ W)n>ޝ-իɅw݇6BLn54J/ 5_4uNT\-usש~6빾nܡS}Hmxk1# |ac4X`,LAg3ԠhY4 @S0h4, Pk4,FH`n4,FHih4,FHih4,FHih4,FHҲrl"ݾ?#nزr}劳P$RƵ+w}dIyvpO;g}-P.4{ŇiĦ)-fe q*Ғ(vqq@fvnpw>2FYHF(=Ѯrsk+m110=;?%b:ܼ`*b.xlTƸ[ 8l ]-l1$ā°؊Pl[-b `ctBϦ5[`K/b°@l![?l%1uɒV 24MmQ>›a+Jl۔6IfI2Uʛ8F3pOMMCM}MMU?h -}pnLj9hu} Venº1Bf@lm([뇭.\[e0bV,|fiH)Ĉ7;n3K5.\T#Kԅk u/5"M\TYmN*ɀ""""Xp]T=Z>ຈ\"qo8"pw3g 1Uv(z^; uQSMuQSuQS,.j.t]Ln6[+pL).vQSd 7 \7\7\7łMMGR.n nceD&"eFS2p]T3p]Tp]T#p] G\9U R̼"┬u2-wSt)֐%)NL0ةfة&ةF)\;U.vj n1őS.v )KccҌ*\= \=\=\=ł뢧EO !\T άLEOARdF3pSuSMuSuS,.~-p]\^qde?UNWkt*s@+!va&F*\CU.j .fbYo)6ΰLbbXf8SX+p]U3p]Up]U#p] G\`*J47P%00O@,[5vAB EPTGQE,EC05`qSTLTdnH_TJPA~TTdqMPIO ,5vaSJO=~SStnnzJ9 Eazc ƈ@° d v )ce>k 3%)z\le#i,OQwOLNA 9SGN9,9 $& a$eJe)b)Dd]uarSM7~qSrSXfNvsS6M-$D̨ & Pb |)#p7",)̈;Ff duL!DL*@^ By)?^ X^*3&DqK*!ZJ: i) Z h)𣥀ۚ;থ0#22 `X)S9}FifNf PV |X)c,+UILJѪiۉ*R D,4UsIR2!)%H)ɒR cq!L憻dH)2:0hI)JJIRJRҏ,)e)LgI)ZJd8)q Ba*Ucm '%C9)II?NJqRL&蓞L9)YI6 . @NJrR҇~$I!v7!ݜDDs_PrLk=.9)IPNJpRҏ~d9)+ˑnN _ 0yO2d9)IPNJpRҏ~d9)e6\9)P{F284d0)%I)JJIRJRҏ)EyF1IK7):6czͽϐR`c)#2 %)%H)GJIљ[I!DϸKe '%C`ӄK܂9)IPNJpRҏ~8)ht"Wf5CAKB;z/4om '%C9)II?NJ6z׆mWkߣ*^]*3_M+|12/)3_J9]e iEuehW 7/.m7W?4vHvH \qm5)pQƂ#v|,l!:It 8$JjW]] 4hA/(GTy̐ %V´C{;o=@д qBӒ=iQ:KiY5fd$k@eL/GZ&˴%2Yhɲ@RBq-eÅqC -e]$1dYd)^!? -ez^eLM@dZ&8-e&h,G-enh,۳U]!XY!XY!XY!XY!XY!XY!XY!XYq(+>VV|8ZYqheʊG++>VV||(+>VV|8ZYqheʊG++>VV||JSV|8ZYqheʊG++>VV|5^KIYZˏ(ZL螠s?٤DOW z]'[̦"'[JsVS636A!`j5|׼O:P`ZQJ#s4.ͱ;.:Cd̛OU07pcx2F) 4JeS5>"р t ^/ŝ8gN$綠z;5,k4<X3_LB8?ghi{L[Z\Kچ/!B47w6eIt>{M_EF1ߢ=>qܪiXNKKlkɹ7gMbxN |X1:~:|f9AW a;d.p#3'磄j3x'wh0<.״3f}uNSǴ5Z"a%SS_8CE\؆"wFi{-b8itUn\s9gc8}ICN=M~`  q͖,6`p̦4+4[5/Upijeaug)H/8jF3|hXŲ=6jhNJ8M@Y9vr(0Cj"Vy0`ܿl& X6)zO0=jg[@޺ g %ΥQkGcہZ)!}nh3e*:?y!<-!-Vec\H7, 26u?ܳzoAl[maXJ?v~Uߘ-wpT̖ `C62)]^2otMFmxnLƂ,fuzT"Y9tjb;C|P;UZy֨Uz秵r7kx ˾ 5 լzi^s煭HX8ӹ[Dywחf2 _6XVk;->l\bG1fȋ jjJFMֽee+<]e+-N‘9DoȼcyrRi5fU%M#uYӘ0L&As5MBÏ FK~ahRh!G yM{q %1`y4MZ%kWU"O/jG׫ǀ "mM?p AmoMzW;6݃6iC_= ?4V|0 z ϶׸i_< %H? 'A5!*'OoS$+_cx1/xߗ)X:5i!Dpgf]Tno 0%@ ec?x!ծΩ L g B8G7<" 8_=]i5f-؇0t`Κ_T]A$_3ߕ8n0g§ŢL>= q\|G/b4zt 2y,F-@ëUvykDTJ~%F\#_݇eAzZo'Ľ}q/A x4^5ǦmXɃp?`rjLLB:dfcd!fg3Fc vL%2#gU,7`A@bo:3V9$7>/qe"+c%Xσ l7Ǟ){F8UPib m_kH8"=}$=?v0Q]KX4Y">'˫5Z`CIUuGؙ6TTGʮ}EnPoIj@\Hm5OC~LQq&s;Ol MO8)kYlt\0O}SnCݏ~N?M~լzڊ¡  +vV8+]pgؤ? y`t'7^S!ZA;LYvz1}İsC:iO&̞TbDڝ20{5mQ]w-W+fjtpO"ɆSB?Wn*lPxnlsph3[mn@ꇇzI$v;(oDR͞v; 3|8 yK%8r9ZT 87A\q_Sv dp3%om1I(GcO U>D`MA̳ 6Kd!*)tsNy0-oZ?OUOH.%%y-Vځ$Ż(n_A3ȃ;yy E 1"DeČ% 1_1P5[պ@ngNR+$:QS5?L2.zZ@[BKUo r|m(1:^~G;bbU"]iO9?O%s$o.W`e'*v'^6^:]{3/4B3AC;ǀg[ Gws޺+#Fт~=i!QN#c0ęٯ½8颊*}x1d| q xI&%څkګ_,xsOhq5q 4qJ?0^ ^ǂ0=8 蝗{4m'ӆf>B`TF_B؜W 祧iE&a<vz>-_W~pxnipy-nibabel-d3c26be/nibabel/nicom/tests/data/siemens_dwi_0.dcm.gz000066400000000000000000000455711177264777700252270ustar00rootroot00000000000000 LLsiemens_dwi_0.dcm\kpue& $ezŔmc)[&"lRrjX+;1qdM؉q֝d<$?$3?O'N͞{wX,K"K>~{=],t h(.K;PwG#x) xCy'FӔj0yi04iXB^s 4QPj Ppg( =4=@r!Ep\$;^ ԅn@F49&@ Ddt&8ODcėdtvfafv&0^&ѐ tA .x^Icf<0SPk/ԅGjl^N]mp>hJ2)ƘiKN- hƫ沖ud uGx%P<9"3Iո/kw3bHy!+.tէsє <ץR)sC@Л+JʜC|ߡF3?rP~c9y>6}=Ƴ}O3g,ϳ~3ߑ nNiqN:0}èݍ ɸ{,N' aFIXH-RPɟX\< )jFV/}> P<[ya$A3;"Oj Z=CZVϚϡ]&@oU[ҮFnyY[È\crpҪUܱ{,g0:5QL(aٶReigH t%(>o ki/:LM&#Ч ئ"p$%]3ғ|Aލ]!M)FPqUIZHhTppL&RH 3$up!==&װ^<'oO^~d%}.}.GG0}9FyAG]kv;^V~}uWIzIq7~o~Zo5>O ~ֻ>Pӑj^W6{_Uӿ87/zo/ iϾz8>ŧ㿎3*FN@%CYoTP~U@`7kck y'y7Pc@u7T1:p,@1 >v#?Z" ꤕqJoNJX]Xesgs̢r!ե9vF.fi~Vi2淟~KeZeO>qم]/*e%9)-jm7 p?zge uŅA ξN9! 1WWDDP y9yYr+ͻ]E1+յO ýΞ3WƋO_t 0x$Q߷O g3t4gu o#cM2>bPż(Õ@!KW{c>> c:8 4 NTsvqN(jN'QEc@ez!5>}antkY~t0}"uL(s2;/ulúٴHy%!-eAJ'ꚍs 9 ̤R)Jb%{Ǜe5;(;xcdNJFa(k+x <F_>@hA N0:NB[З~4m7t@0Ix.P (s;:<0FIx?k"gz.AK`eRT)%AJ#?;ppuw E$xAdgLܲ>hC[$i6DV-7 ~FMSH -Rk9W-8f_3M ίfTYL(6$G2~34;ќ-bRٍhIdAHIhf# ~VB:MK=i襶h (V]JY;-,M4!%_H-T^η 9QΈ6mӌ rE3g+t42D}z{FfB mӼ_Y۴Cs2&RdIi%צj;޶,-a+5y*I]lu@Vݵ뀦kS ǬNR_-3>u,VChKsbE$jm/h3eh˴70B(a5nEV]lWL ):+|ӝ>ePHӬGN*Jڴ2~{}ڥ 'XVxYH;+ݫ'(2>վHLWv6ãNWieO3Vɕ%X Q\.nNTM3|Mh3-k" D}h16OEm(L 0ZRFbFJ[[=~K_ `r\˫Θ.=^0|*YL[3\ةf9!ș R`[i|l=׻=Skдb~,'!.YHslj*gU9C3)~,۲gm (^ c8{|e7*>^/g۞1{|4gEc>[|z'ُO~{|k ؏O[| ǰ߶=ChG_+XymmѬv~4U:x P)9φr~xھs۔Q9'"qsĖidž9VMEhg(VJE#nEz:qOjegD)L Ƨ]<+ccԅejvuyf3^Ki4R%Bxt)aH|T1KyQ;voqwvvdÛzhgA`T[ѩT 9\hJ$mZT*rfl, XZjƒ݌jFDcH?/4O;?)>0kۑ:q}ĜJ>35/j8P[0hp56Uv IKgrz9de3 iݔX+`+)-^Boomx|*,+9cY{bXb 4D@ PbLM=x5ѷ?ڥiu Z-  h|# &|({ߡ$~zNUEֻA]ڥǵo6mC %, qu[ql"K2~!s93)Exlyzz%E/ vZ5*Tr%A]2Ldv?ye44-s.$T!G/vLR,sx+㡍MVv'SR+Jdc}}Yqf{)>@Q9s~KqҺWV,dxx44vm>| s޿y|-yo] Z]9g||C8yP1K,hWoo ~m9ut?M>`g|hәmK(R۬m bn`4 +`=ݦx0I>MK Vkw^<94 φC@3m=趗>?lGt UF-ɳ~8[âcR)$V9>oS`K~Ip 6ʌ,R뭌)^pnI&s:VX,)gH~FkNGƏucyN7!?UQo$g6rr3Јp<L/Ƶ3ZO#ÍVGtvrP>},kfOEPmL9FԐٶgѶV,>?ƶk9/w^+gcD4y7xir8X, !EN eQi!#r+g;'bIUȴh& Yq!'Uݩ5(z)R4aTf91)f;yzx4SdOJ h,N4 (ᯠ`Պ[<Ғ-&fCwTt܇Kǧ&g3)Y{pm_ņ-+NQh,W"?rpUO/c%% G,Cja~!))eOxqͼtQ}ܮuLE#3$Kr$jZԊؾ IpMnkSIl@ oM^*,e /qNR4/uBqnK;Wa gQ|؋u[©8Ȟ& #U `;oL[hXqxAZUi{o@߅AUH-4sF l,@!u;J,>j +1J 0nvYaopjrFIa#oj\|}D^9lW5mV(;;OٰshJf-tfjzS<eq V`Sv쮷YPHI Ij6Lw_`x%r1M{t5I>:NRP6xk|3Wl.6}](Qhcf+2wx~$S7Њ8pJ*VU郅t(QwCe- aEB),iSbbiUIkpmm/r(MkKυw5 q $.ͧ \֧ޅ̤mY˗aUj/J"{+p%X<0Cw]^(in%ED.ʃfxa σQj}pS6zɴ^< gZikP<̈́# +޷.%/Cx&^}oܰIobL Ҿ :˰:YgQ6Yq['6,sfSLۗ򖸪nYRl voZs"^[A4x,zrςDPZ@lכ%%m.zIu,Bԡ(U՝O\_z˙^6R&?;҃rUҺf2nuvE[uXI:@$:pV'ۃ7]rTF"G~#i*nwsEs֛mNI*a­*|3DJ#%^vޑʛow%JU~Ԁx@Gȅ9OsXxnk/Ⱥ%F&{t͑#eP啰?u x}a Lx&ۛؾN5HCcV(FVk^ex%}K8|gn<0eSY=yju鴶b=\".$3ş+DqԼz6緁uu}ȵT9-H{Dѝ&m**g34\S []A1&O'#M2 錾:ږdb-l8a|Xm?qS J ?*,'V^gKi3 vg MJ+R. &s+?L 8O` nozּ/H?pi3Z[6 \ M{ed/Zm8^TaY$Ned0y'|-ō~z{sKdz;]K .tyX:Oa(UJޞݎLǿ9Znv%)ӲbwU(ig;ԤI0deX~2E{mn 'j)`V4&ƽ m?nSo//R]]_qt_K,qfoOG)6ʙ8Jvwa%@jZb=2Vwuy~v9gG5"m˫1Tۥ>G͜/mi&}&m&A|ve~=#*.xnrx2yz:݀qү+$6fS[\K*=C{C3䭲S~y,V4JAxQ0o[A@-(EJސ~\# d{ۀ`WghyƗĖ:RγuZa?r7bgyRcզE.P $O5<T$CtL@{NR-j7ϣEkȞKoE۷gc?;anӇk= X} Q"+3CdM̽6TϘ<ìrv1bwTۋ[+4hSy{GNy4kA'>0}7?<(b[ {o>'\X6󮯮o̦KfOjekm׳׉`0v%~3*:Iͨ\:Wf:~MM06W (g֤/[crs /ۺ&; ŷٝ"_Ζ^axӗ[΋)nyL?Loo`@h\rwOfۘ,$Eʿ@w?% _߲7B,i %OvhՅ WɃl}0$3J^?-R?[V۶%B:FGUtmneI8m"`Bj]S?w>-zZGyHŞ*}H\jf&ogؕ^p`Oy ə:f*w#Q+U'c$ ED[ t2t$QhG!tS70g*VIk V my7k@šIK*JEجqh=aj c<6n ]iP-8nK*-4%w&3y;jA5I)˧'DHi'?gq/Ϸq6.ߗ J *ϖ$qurlJQ(xqnaDԦϮ͖soxJtM{+uɂo/~e4.).␾k^igE}$B} V^{/^4W͎etjc?M}~vhOm, !>$8TU-Ut l^9J%X]:fiP9ϋҁMJP7J/9Gؤ%"\,Cf4c9p߾{Ef:k+̟Wv0Pc\up7xTv4T^_U)m+JCP ׳Ǚ|/@h2tz[0tA!RaBS넪2$T ӡ:Pz1dղjuQ-CBUTmJnb {w"CZ%)1TnoI&&5vJ)RM]^i8Mڿ"P˱$4I!,LCnRĦ$TN'thx'Pr ./TY9$LjS:FYHۢA)> "Rj`2j~kWj&ǓfGNVbaP ck2N`$Q̺ kٓ on`!yn24 Hc-E%9*`l,1;FV NC5i4N[F15 & NbeLe* ]E7xa}Lf9i(j I|7-7Xi6y5E,l/@,:̠չr>-hSJBLj#/[+|Ƣ ,F҂[@փ]'Z#oAqb٪YWM`ۥ(|+@FRlE Z?Id> 5i|i(f¥` 'VĻ%gSQϊG%`\8Uz=?7Ւ`~ߏ]c8W!(*uR)kq](sK ݊a)X|KGLVo>ĖDe"\x \~0 opLާQ@!VZdJC:Ȗ<144[FS%uNepMhVYp4:Դ^Gڄ bDssP 2o'|>cG<}Oޛ#xbMQ! ƍl#rmtALTl3v5.sA7;D^T,:~5fW {oY3uis~0af )PAVߞ9oOwMCu#RM&X: -G~*͡Q%gik\#-Fe;,! Q޾BjTHgIԼvkm_w4^p+*L% & h?`*^aGV߻aU>;p\\vxDj p&nu$QeGM/p tsY/?!.׫Ģz n=h* )7 fͼ:%٩rۤ\͝ :߯6NޕᣚO>]Rš׳]@@m4ݦ&nE4rQJuў7UIӎ;3hyH[԰ yx5]ޅܙ 놜K=z8j:pBv 5B G3·-YVcW_7MbW ^ _8iz}'"MDtKCDȡM&rhS0.f: "5eئPܴ'Tn*7[kT|'4*mღ[ &&&ii 6-a;m'ںںںF1: h mǡV2zmېېېlW o) ܶ6 )))7Uc|,܆ g %%% Ic [pb~h=Ѷжжvh۶m#B2Mv^Qn'܎܎܎$qnKS-Pč2@u?Frx qnqn8ay2AT"x4m:`Qnp(eynlOntMR"( RvG)ͣ p(e3~2p(eekRvG)ͣ p(e3~2p(ebAG)qfp; BRI44GDN{JړTR9RIH%#TL*Mȡ/S2Jiت!HioNI{rJ*)r9 مaQJxӛSҞqJ*)bN AmpJF)M|LVZoNI{rJ*)r9' !{SJړRR9JI(%TL) GՀn>چvioFI{2J*(ra&_(-6cJ8sۓe3L`hI(Bw6/X$!*Q,7 "eklϏwH"x_r A[e8gSo[U}Bh{lAiF4AiDF4AIԂ2昦T%j,'IL=IIMOhzd#)\DxU$$1$'I4=II֓)#J&uXXO2μRy;$$&'I49IrAxXN џN$&I45IIMM,Rh<,' Cx;Uh~[MjDS$$$QI jH1o3e ($1$&&I41II4Mi5nkI#+m(3RĔ$$Ѥ$&%ZJ$Z2Ҭ$)%I4)IIIMJ)C6XJ*-ҧ*1$$I4%I)IVTϤ(-”;uvF8;i(9JT$$є$$ZIҤ%[8\I2i]q7V4є$$i4%IJ0Ih;6641$$i4%I)IV_SC7VJr%J3MYl%Ic*IMIhJFST$IftBJ愷IVqV4є$$i4%IJKV)$Sk9Eb+ISIhJFS4j%I b2J2%$8$iL%I)IMIhJ$I2W),%SBJtD41$&%i4)III,f۰L )I3DqWƖ4Ѥ$&%iH)Oiu<Ӻ#d8&SRS9"rFE䬊99~N|<!cC1 gJBl8Ć(:φPu8v Ć#P$u8ry6K~3XP, U,dbw$[K$[Kc$[KlU,_lU, (*9\U4XU,bIXU,$[KlU,#lU,L$[KlU,W%[KM)VŒ@XR(TK?VŒBX?%٪X&K*a p_':Љ'N489tɡ NhprDC'"( hvDCC':Љ`N4;t!ء h1:Љ`N4;t!ء hvDCC':ЉB':Љ`N4;t!ء hvDCC':gЉ`N4;t!ء hvDCC'2pγ{:TgݽpSAôrK䁟Mjق/ #۵]ftL`YYb?En~ YzC@q3Lgi$lHMJgu)ޤϤӾѬ R:IiI !:)Dr4؎L2>OgR*Isa 7)3)p&eyPxrRa&Ϩli ToU.KǪm rŬ {EZ6WtE~Ehn^fLvk"O|woE V51rI4&%TZ[#s=EZuؓcz6c ;nX_=*]K+`1=]?%Uߗˉg>Wv6 ڈk| X3]wGv͡h[,鯿z"o [DVLksi|igk:L?s'hڎQXe7OĪ,M=cMɲ ǼiK_{5_g7@,v&1 _zgo7C6|=G#keO΍Zums}iSŭ힮4օK.i/_֮\իWk׮i׵7nh7oޔ0N}3~}=)>Wc .Fvrr={LOO?T{^ϴ?\/X3~/j9l7;}W_}}7|}w}}?O?$Yєml/ka$%o.KScorQ5ż.WhK.\1_{ Õw_ʥ7rooۅ[x{{ךOy]*EM%1b=y˯}%yTo_W*WV.'sշkVT-g5[4]lUtdV{#y]=~ O6U?rWqaiDm2Ni/^}>x`eiV^kolfI:qҭ7p=Kr5n omk^[ý?kGV<34r1qoW_~Gs7wlჽ'>nﻇ퓧\ucMY>t;޹vڇǽy>>>~ X++ґ»K.T@si£O'莝[kmPU'__)S'1[íOS~PTi>V_Yʪ#'_sSwYȧx _:my?oQdFO3YRF&G3Fy^Q/#]<҅ -?N؃m\u{OmW_/_{_(s13~mtr#KN3zM~7{ C7+jf&;|~~/jN)Q_MPK繝F>w'H__{ ='?ԯħ ׺]Wo&75ߜxMv_#olklmow n7QVVmVU+ުnJq.6gok+xyV\U6@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @{pH kWnÔ nipy-nibabel-d3c26be/nibabel/nicom/tests/data/siemens_dwi_1000.dcm.gz000066400000000000000000000456771177264777700254570ustar00rootroot00000000000000 LLsiemens_dwi_1000.dcm\kpue $e_+ 'KAE d׬%W1qzm؉qZd2?әθ34NX=.X, $#Z}s=b m GC1秷_ۅ~r{>>(MQThݐf MS`|,iZ1iX(0,r(p y쐅:R7C1l@Ѣ_Q P>ʅQr;A B;Q0Pm6T4=w&G3x" &\G''ٙٙLx!6 FC@% &z~XАk' ԃFGrl\N=kk ﳄ)y Nf c>gxr'}=BK,уd4$!ǚ~I{<=D=&%UKYAxTx.sz=\IQ<;>xܗ %kۇ((~6}yƳy K^M"+PȠzmADD{77iHO#Q$>z7_Hƽ#gq(>_L@ŹOƬ\L-bN#I2q_p]})Asc h=b=Ir cx:@#)R=5|PRz~m9)~Vv NS̫5͊|#`iƀ׃sW YKx'ha<Fб!bBͬ 0F50N ND*&98lHu')G8#hDx1Lgj2v2o6 # H!Axgc^nl$dRhG>-jEnR>MDBsPmӹ{{CG( Rʕ; ;!Bp7ˣh&n)O-F.~ϟg,qi$a]G `.nP:^Ԇa/iޫ?3£ _ϯgG!X_'0Ï/h?%t蟒Dh^>἖ﱿ'};kNX'Z'Z k|k>#!|Z|Z~C-j@ }-ok¡oi̛xNǹ9kZja-Ƴ~yoo?Cƙ ?pzi0D~l)orVAhmu8B|g&=C} ?)4$ln2wB#~eNIGLՒ p$u=z½b_Ͽ=L as7˹O ?g.Pw'r\IcGez!??첛7YX \p0}huLs ;~lZxzIJcpE?)D ^kX:IZR67w\߅\o΁ rv}Uq=zkdN=)ՌRȆT_KhWwh?`sy:%,>eoAwBk}h݌vQtV v]oӜjhƗT3V@C}0 5̡>ּr֦%r9ZeII#?w:Jq3Hk? vz͕wuIWuTIm<?,-U %)`EYAlw7֏F{k\D4X4 EhIU_:0CosHSv1j6ZK #c^xL<=Yէ[Y1+l{lZS*#{A݂nз 8c8g|i(8#>/:x3>sG9۰l/8gˋXg˳3>ZKsd#>8c#>u C9G|2Ni~I#> 8c'MS D)/2A5sttFpGs |oF 9 a%:}dѾKB^YvX4nccb/[[?3J*/E7Ƒǧ5RS=xNk[=GTRjL8hpXƸe\_uV',frdj+#%?VOHRKԒt Obܵn[LDJgS*YAkF[|vsN6Om'?,!X ߬ 4Oup+WV. j)o05?a}iۺ_Jq|mqZhڱ]9'_lJcQ3Mi,9(H _`M#[=^Z2q,v&;5VN 4mvs+IxYI&>_o_as` y)AA_#[^@3 H~HhDpe&ۑ[3l4Z`:Mm}+qpF[ǔrX]:Mmߖ6kQ:pJ3fcӮ4! ZYXr\6,:XGu#ho^kotr֧څiO栒?X[QFM4od}5hs:>Չ ]?40;ɥK^7Yʞzr6ݭ!mlm?ZN۶ּ0ڸʛ+UݚZ$a~k{FlխظTI b fM>F,)2ןs{~dH4`O2~ UKkkry}}c)}ؙ=FԶ*}}7[]DaQ?o$@zJ*Iw|8$ '>~c2~/OLpmkk^˥~șBo? ]`y kR/_wiϕ' 'J/۹DOs%ޝofdK|ʯPC] f^7qF)htkF1f9Yp/>)^مJFq_\f5;+bBOg8ckqR.\r 0ewzeZN4O {;fCt1 D.Fi'0`^I7XAX#ɇPGI #oo2&ϳ %J0qmlUlr0RfGU]Џx* 9ZBiZŪj7}ew0ꮷ~LE!Q~\Cs6%mlS BR B4*pMy9V>yke `l*JӚ0Rsa]ab!"?s7;TV;>k2La*\VS)Ԗ^X|;en-8g2y. %>l͝C?ȅ1^xPm pFkRp~ݣk7Om˹<62X BǨ, W1LO7 Wa[Lk÷$X1PHeXQIMVܖx|enl@y;%[G[gݛbVeĜHVME8\`*&%hI <Y,}w;og#X$VK5A)6$:<+u5JUu#4.^rױͪ԰ώl.:v8z [f]?&~V>:B#'}FP4w#\ &smmwM_%HZo-FA\Q?eSR9繤JpJ" .3H݇rw[~]R'Fj@< #BRu),A.PfklbztI z0+uV9elL8%$HLB:/<0yv fX"ǡ8_1vx67Ra= KmĉWIjZ %;pyva[,O.~ >n!&u+?L 8-` nozּ/H?}pi3Z[6 \ M{eȔd#/ZlM8^TaY$Ned[3y<5 %Ke]?~HR3<ƿayzNb@# iB/b)O{/Won޾Ʒë˛, %qSy#@Wzr;|5]\k٩LRUv.`nemFS.&=aIY(r](m⧓Yф& ZM-vCtL{8#:7|qt_v[/pfo16ʙ8Jvwl%@jZb=0Vwuy>fG5"m˫C6Tۥ>E͜;8^.ѫTݱdMjM:6f{d*F*TUo2Oyz:݀qϝ+$6fS[\K,=C{}筲JmY"=ӯPiJσOliU3߶ (,[P>W/*>oFHq54p/-u'S~,kn ܻ&uz]҉H))jD@"]Kg"sJha=7/0OĮj{[8dOάV7eZ9=:$\($Z0$  ~B'<6p#y֮1iO[km埶"mV7樜T[65&k~#?crѕ  ϋrOs[:pm2͝T|zBvb}!|gm#on3u@DdA"W''fnGzPE?v?$6=?7[μ1=5Շ<' |`6^]Q^_N.rO5>}sdW=ħNv݋ٱ? S`}짩O<"~z+o1ƒH_ }>hAO?LLURuMW ݰMuaQbu:1 hU8hr`*AVj?~ɹP<&.z_75ŚK b n7-XX/ge>LC^{A^Nx؏{j̻ _{Z'T$jՉ*EX!SU;jzjSBuU߹]}-i&H9v{K41YwTM"nEMiEQZ%I aaE%t"6u&p:}Ӱ ;%sL0vwy1:0i&1e$U1*$Bm ~H ^QUkcPlt='XRC58lG55sTSôna'̓y]354u,ru,Tv!8UrX m༵ɫ. df{dAa49nExOXP`V;yh-$ Z0mXf1T:jyw%SVͺ/b.uDX2b+cѢE"QXIlK Gih6.^3h>Xb$(@=zu~R8*㼠qх;~ù*oAYpU4K:MY\Bi#]V [*>`z.$/o`%yKg"l/>fPWA䙍z6*u-lBʜѡz>Z&Ld#yN='yjAyM4^qr0yӳb$T/ UI3`t8*3mD6"́bq4hi0ܜrѮx.f^ȋP/qY3 ?)z& ~=/kf0L!W7JP|n+]0{P݈nӱ .,uptCˑxsl~aYښ)W@ ⬑sY9 }P47i5/ZM(܊J"O^z S[dorvo0I /cа#G+ol*J]|ih&c;Y o"vd+fITzQS˛0{(/aO*ަ[g+ ǰbeJM52Y3NIv6C)Woys/~[fxג gWoQM'.)[.CvܶL nnS7M"TtTFcnDefҸc Z'-jXz</BXuCNܥCU 5zI8!wj[,|׫/nBZ&+X4 I&mj C6CȡMЦa\',tAJEpk n˰MaprpS9ZܶRG;Vn4`6-tܦ6l~F[?m]m]m]mm@zuP~+m!!!7x*S7Am]m; n@M9M9M9JK[e 6lM8@0V! t ~a6np]vhrhrhrh;bm۶lbM&;(; n@99I ܖZ%U!RI44GDN&@RIH%#TTR14 ?N(a sJz rqJ*)S].M)4)px7sJz rqJ*)Shx'QJ?t#;=Yƚ9$H d(tWa1E- rrh(Rɯy!ɉ 'ϐZhz8gSo[U}Bi5QSZzӔԚ2OI&h)Mv~e-O?"JJKORZzғZR&2qdb%%NЌYQZ(-=Ei)JK()+ʔIҦQPZz$jAH3LS*VtfJZD֓$$zzI'ZO&(˝zoSJD֓$$zzI'ZO&T"7aN`=;vKQrI''$j9ɿڠh<,'OYRjDTDOM=5I$QI4%rҲi'$&$zjIV4Cnդ`fNKPd1I"I'&$zb$MdRqZJ g[L&$$ѓDOJ=)IRLח,% גtm,%ID)I$ѓDOJX K6XJ*-ҧ*$SDOI=%IJeErN g-:YIJ)I$j%IfoJr%H%MYI҈J)I$j%I$ ;6޶⊻4$STOIR=%IJkj*XIR$I0$iD%I$STOIR$ 2 @ +I&icYI҈J)I$j%IH@% +W 浌"H$$zJ)IV"V&H.($BI2(.JFTTOIR=%I$U+Ig(.SSXJ<hd)I#JI'%zR$Gi36,%BJQܕ$(%zRl>3i< 0AU >AU V2ukV҂bib%[K %QZ*%Q2xJU nV2=2V2DU +V2xQU ޔlU, K%bIU .lU,)KeSendb&٪X'٪X,|ɡ NhprDC':Љ'N489t!:Љ`N4;t!ء hvDCC':Љ3 hvDCC':Љ`N4;t!ء h)-t!ء hvDCC':Љ`N4;t!ء q hvDCC':Љ`N4;t!! n=nQu5{s|>yޫNxА`AwtF>m4A V_tIS6iz>ɍ-2ԯDn%/ *}AdS "C}Jd_R" / M"Lmk 6C}l 2@e07@e@ dB9b8fXZXB ̾@6KKK(ci)b %`2`,-E,Lf_ % XE,Lf_ %QM`,"P&/ ƒ(b %`2`,"P&/ ƒ(b %`2`,"P&/ ƒΔ`,"P&/ ƒ*b %`2`,oN{pA6MUuҩ!2|[ځX(slXUEɲessSxMmHܰP457ݼ0+5yqd>NjDs:}nYa|uTGHT."fLg;|>9+Q+rNm%s|;ەa֥[evkPycI.A}kv0I_EJGL%G3gzx:[-kd:r +%^f516L!ÙaMY:/ܬ}pV4 6ﲍ̩}4Ha?A~l| aicڍjgoG{ތI>N W v.;ɪ$},:=S;=m7jOӳ]%HWkzIA]3![mv+v| mgջ٪r'YzuRJ2KZLhͧ?pZ}f60.*Icmv9ys+6_b̻ҳbKwb9|oU)͜j ?`b*e=*7ܦ3,O{^v} G,[orZlGݵsN/iy8|9I2{ x{emͼ(Ѻs;!|DvTm 7_oR^4!xm=EˀKi.<qHoom;j*efk ))O2=eE=EUJ+8OSӞZЧJtr9gΆ!Zvͳy L=|vw4O㏾-Uj_=snP9s$23yw-GM"曇'bUa01adYc5%Oy{5_g7vO,v2Or 6tnl0;AnPbu_5Xwh?ou]ta.d\tɸ|q70^j\vX__7_nܸqøy-vꋗ?g{a9&ix_nh'''ƳgόO>Oϟ>ύ/_FE?vv/ꫯoo駟D?۲lglXqٿ,KgԚ(쨜nFcI҅+k^XZaν]]yFM z;W|o}0Pai$;b_,#o2os yx\v6uͩջM2]o/9ވyL}\ᓧ{r|\U\X9QusDZWj7;˫W߸v>XYą奕WL7Si]t :\Œ\[{z}/;ڥ/z1Vpnӄ<= (.\]՗_tQ-y`ɣaW3x|wuh\=n{p=n?u압eHݥ J9N㧏pٓitGN^~z|/ ̈́W^h_Ã'~`dQTi|ĭzqy嵕a~i`B>NlimˣOysڈx269*a24eEE[;Nc9%cH/]'rޘs 9qUGyh'^(^";_ F-o6i:q6C/z0f~mޏU܁io|k_乄7LUw‹>3HSffػ"/]5j/kpm߰R\رNn!/Ķ%KSUc}yngϝԲ8;'mim}nLu++iwn:՛ r}7y6^{*Zo1kX|[m[teK}UU٪nU[vc y{Ɗ8^ּU-Vo|Ƽ@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ v erܬnipy-nibabel-d3c26be/nibabel/nicom/tests/data_pkgs.py000066400000000000000000000006311177264777700227600ustar00rootroot00000000000000''' Data packages for DICOM testing ''' from ... import data as nibd PUBLIC_PKG_DEF = dict( relpath = 'nipy/dicom/public', name = 'nipy-dicom-public', version = '0.1') PRIVATE_PKG_DEF = dict( relpath = 'nipy/dicom/private', name = 'nipy-dicom-private', version = '0.1') PUBLIC_DS = nibd.datasource_or_bomber(PUBLIC_PKG_DEF) PRIVATE_DS = nibd.datasource_or_bomber(PRIVATE_PKG_DEF) nipy-nibabel-d3c26be/nibabel/nicom/tests/test_csareader.py000066400000000000000000000065011177264777700240150ustar00rootroot00000000000000""" Testing Siemens CSA header reader """ from os.path import join as pjoin import gzip import numpy as np from .. import csareader as csa from .. import dwiparams as dwp from nose.tools import assert_true, assert_false, \ assert_equal, assert_raises from numpy.testing import assert_array_equal, assert_array_almost_equal from .test_dicomwrappers import (have_dicom, dicom_test, IO_DATA_PATH, DATA) CSA2_B0 = open(pjoin(IO_DATA_PATH, 'csa2_b0.bin'), 'rb').read() CSA2_B1000 = open(pjoin(IO_DATA_PATH, 'csa2_b1000.bin'), 'rb').read() CSA2_0len = gzip.open(pjoin(IO_DATA_PATH, 'csa2_zero_len.bin.gz'), 'rb').read() @dicom_test def test_csa_header_read(): hdr = csa.get_csa_header(DATA, 'image') assert_equal(hdr['n_tags'],83) assert_equal(csa.get_csa_header(DATA,'series')['n_tags'],65) assert_raises(ValueError, csa.get_csa_header, DATA,'xxxx') assert_true(csa.is_mosaic(hdr)) def test_csas0(): for csa_str in (CSA2_B0, CSA2_B1000): csa_info = csa.read(csa_str) assert_equal(csa_info['type'], 2) assert_equal(csa_info['n_tags'], 83) tags = csa_info['tags'] assert_equal(len(tags), 83) n_o_m = tags['NumberOfImagesInMosaic'] assert_equal(n_o_m['items'], [48]) csa_info = csa.read(CSA2_B1000) b_matrix = csa_info['tags']['B_matrix'] assert_equal(len(b_matrix['items']), 6) b_value = csa_info['tags']['B_value'] assert_equal(b_value['items'], [1000]) def test_csa_len0(): # We did get a failure for item with item_len of 0 - gh issue #92 csa_info = csa.read(CSA2_0len) assert_equal(csa_info['type'], 2) assert_equal(csa_info['n_tags'], 44) tags = csa_info['tags'] assert_equal(len(tags), 44) def test_csa_params(): for csa_str in (CSA2_B0, CSA2_B1000): csa_info = csa.read(csa_str) n_o_m = csa.get_n_mosaic(csa_info) assert_equal(n_o_m, 48) snv = csa.get_slice_normal(csa_info) assert_equal(snv.shape, (3,)) assert_true(np.allclose(1, np.sqrt((snv * snv).sum()))) amt = csa.get_acq_mat_txt(csa_info) assert_equal(amt, '128p*128') csa_info = csa.read(CSA2_B0) b_matrix = csa.get_b_matrix(csa_info) assert_equal(b_matrix, None) b_value = csa.get_b_value(csa_info) assert_equal(b_value, 0) g_vector = csa.get_g_vector(csa_info) assert_equal(g_vector, None) csa_info = csa.read(CSA2_B1000) b_matrix = csa.get_b_matrix(csa_info) assert_equal(b_matrix.shape, (3,3)) # check (by absence of error) that the B matrix is positive # semi-definite. q = dwp.B2q(b_matrix) b_value = csa.get_b_value(csa_info) assert_equal(b_value, 1000) g_vector = csa.get_g_vector(csa_info) assert_equal(g_vector.shape, (3,)) assert_true( np.allclose(1, np.sqrt((g_vector * g_vector).sum()))) def test_ice_dims(): ex_dims0 = ['X', '1', '1', '1', '1', '1', '1', '48', '1', '1', '1', '1', '201'] ex_dims1 = ['X', '1', '1', '1', '2', '1', '1', '48', '1', '1', '1', '1', '201'] for csa_str, ex_dims in ((CSA2_B0, ex_dims0), (CSA2_B1000, ex_dims1)): csa_info = csa.read(csa_str) assert_equal(csa.get_ice_dims(csa_info), ex_dims) assert_equal(csa.get_ice_dims({}), None) nipy-nibabel-d3c26be/nibabel/nicom/tests/test_dicomreaders.py000066400000000000000000000021741177264777700245270ustar00rootroot00000000000000""" Testing reading DICOM files """ import numpy as np from .. import dicomreaders as didr from .test_dicomwrappers import (dicom_test, EXPECTED_AFFINE, EXPECTED_PARAMS, IO_DATA_PATH, DATA) from nose.tools import assert_true, assert_false, \ assert_equal, assert_raises from numpy.testing import assert_array_equal, assert_array_almost_equal @dicom_test def test_read_dwi(): img = didr.mosaic_to_nii(DATA) arr = img.get_data() assert_equal(arr.shape, (128,128,48)) assert_array_almost_equal(img.get_affine(), EXPECTED_AFFINE) @dicom_test def test_read_dwis(): data, aff, bs, gs = didr.read_mosaic_dwi_dir(IO_DATA_PATH, '*.dcm.gz') assert_equal(data.ndim, 4) assert_array_almost_equal(aff, EXPECTED_AFFINE) assert_array_almost_equal(bs, (0, EXPECTED_PARAMS[0])) assert_array_almost_equal(gs, (np.zeros((3,)) + np.nan, EXPECTED_PARAMS[1])) assert_raises(IOError, didr.read_mosaic_dwi_dir, 'improbable') nipy-nibabel-d3c26be/nibabel/nicom/tests/test_dicomwrappers.py000066400000000000000000000117261177264777700247500ustar00rootroot00000000000000""" Testing DICOM wrappers """ from os.path import join as pjoin, dirname import gzip import numpy as np try: import dicom except ImportError: have_dicom = False else: have_dicom = True dicom_test = np.testing.dec.skipif(not have_dicom, 'could not import pydicom') from .. import dicomwrappers as didw from .. import dicomreaders as didr from nose.tools import assert_true, assert_false, \ assert_equal, assert_raises from numpy.testing import assert_array_equal, assert_array_almost_equal IO_DATA_PATH = pjoin(dirname(__file__), 'data') DATA_FILE = pjoin(IO_DATA_PATH, 'siemens_dwi_1000.dcm.gz') if have_dicom: DATA = dicom.read_file(gzip.open(DATA_FILE)) else: DATA = None DATA_FILE_B0 = pjoin(IO_DATA_PATH, 'siemens_dwi_0.dcm.gz') # This affine from our converted image was shown to match our image # spatially with an image from SPM DICOM conversion. We checked the # matching with SPM check reg. We have flipped the first and second # rows to allow for rows, cols tranpose in current return compared to # original case. EXPECTED_AFFINE = np.array( [[ -1.796875, 0, 0, 115], [0, -1.79684984, -0.01570896, 135.028779], [0, -0.00940843750, 2.99995887, -78.710481], [0, 0, 0, 1]])[:,[1,0,2,3]] # from Guys and Matthew's SPM code, undoing SPM's Y flip, and swapping # first two values in vector, to account for data rows, cols difference. EXPECTED_PARAMS = [992.05050247, (0.00507649, 0.99997450, -0.005023611)] @dicom_test def test_wrappers(): # test direct wrapper calls # first with empty data for maker, kwargs in ((didw.Wrapper,{}), (didw.SiemensWrapper, {}), (didw.MosaicWrapper, {'n_mosaic':10})): dw = maker(**kwargs) assert_equal(dw.get('InstanceNumber'), None) assert_equal(dw.get('AcquisitionNumber'), None) assert_raises(KeyError, dw.__getitem__, 'not an item') assert_raises(didw.WrapperError, dw.get_data) assert_raises(didw.WrapperError, dw.get_affine) for klass in (didw.Wrapper, didw.SiemensWrapper): dw = klass() assert_false(dw.is_mosaic) for maker in (didw.wrapper_from_data, didw.Wrapper, didw.SiemensWrapper, didw.MosaicWrapper ): dw = maker(DATA) assert_equal(dw.get('InstanceNumber'), 2) assert_equal(dw.get('AcquisitionNumber'), 2) assert_raises(KeyError, dw.__getitem__, 'not an item') for maker in (didw.MosaicWrapper, didw.wrapper_from_data): assert_true(dw.is_mosaic) @dicom_test def test_wrapper_from_data(): # test wrapper from data, wrapper from file for dw in (didw.wrapper_from_data(DATA), didw.wrapper_from_file(DATA_FILE)): assert_equal(dw.get('InstanceNumber'), 2) assert_equal(dw.get('AcquisitionNumber'), 2) assert_raises(KeyError, dw.__getitem__, 'not an item') assert_true(dw.is_mosaic) assert_array_almost_equal( np.dot(didr.DPCS_TO_TAL, dw.get_affine()), EXPECTED_AFFINE) @dicom_test def test_dwi_params(): dw = didw.wrapper_from_data(DATA) b_matrix = dw.b_matrix assert_equal(b_matrix.shape, (3,3)) q = dw.q_vector b = np.sqrt(np.sum(q * q)) # vector norm g = q / b assert_array_almost_equal(b, EXPECTED_PARAMS[0]) assert_array_almost_equal(g, EXPECTED_PARAMS[1]) @dicom_test def test_vol_matching(): # make the Siemens wrapper, check it compares True against itself dw_siemens = didw.wrapper_from_data(DATA) assert_true(dw_siemens.is_mosaic) assert_true(dw_siemens.is_csa) assert_true(dw_siemens.is_same_series(dw_siemens)) # make plain wrapper, compare against itself dw_plain = didw.Wrapper(DATA) assert_false(dw_plain.is_mosaic) assert_false(dw_plain.is_csa) assert_true(dw_plain.is_same_series(dw_plain)) # specific vs plain wrapper compares False, because the Siemens # wrapper has more non-empty information assert_false(dw_plain.is_same_series(dw_siemens)) # and this should be symmetric assert_false(dw_siemens.is_same_series(dw_plain)) # we can even make an empty wrapper. This compares True against # itself but False against the others dw_empty = didw.Wrapper() assert_true(dw_empty.is_same_series(dw_empty)) assert_false(dw_empty.is_same_series(dw_plain)) assert_false(dw_plain.is_same_series(dw_empty)) # Just to check the interface, make a pretend signature-providing # object. class C(object): series_signature = {} assert_true(dw_empty.is_same_series(C())) @dicom_test def test_slice_indicator(): dw_0 = didw.wrapper_from_file(DATA_FILE_B0) dw_1000 = didw.wrapper_from_data(DATA) z = dw_0.slice_indicator assert_false(z is None) assert_equal(z, dw_1000.slice_indicator) dw_empty = didw.Wrapper() assert_true(dw_empty.slice_indicator is None) nipy-nibabel-d3c26be/nibabel/nicom/tests/test_dwiparams.py000066400000000000000000000014651177264777700240570ustar00rootroot00000000000000""" Testing diffusion parameter processing """ import numpy as np from ..dwiparams import B2q from nose.tools import assert_true, assert_false, \ assert_equal, assert_raises from numpy.testing import assert_array_equal, assert_array_almost_equal def test_b2q(): # conversion of b matrix to q q = np.array([1,2,3]) s = np.sqrt(np.sum(q * q)) # vector norm B = np.outer(q, q) assert_array_almost_equal(q*s, B2q(B)) q = np.array([1,2,3]) # check that the sign of the vector as positive x convention B = np.outer(-q, -q) assert_array_almost_equal(q*s, B2q(B)) q = np.array([-1, 2, 3]) B = np.outer(q, q) assert_array_almost_equal(-q*s, B2q(B)) B = np.eye(3) * -1 assert_raises(ValueError, B2q, B) # no error if we up the tolerance q = B2q(B, tol=1) nipy-nibabel-d3c26be/nibabel/nicom/tests/test_structreader.py000066400000000000000000000034201177264777700245700ustar00rootroot00000000000000""" Testing Siemens CSA header reader """ import sys import struct from ...py3k import asbytes from ..structreader import Unpacker from nose.tools import (assert_true, assert_false, assert_equal, assert_raises) from numpy.testing import assert_array_equal, assert_array_almost_equal def test_unpacker(): s = asbytes('1234\x00\x01') le_int, = struct.unpack('h', asbytes('\x00\x01')) if sys.byteorder == 'little': native_int = le_int swapped_int = be_int native_code = '<' swapped_code = '>' else: native_int = be_int swapped_int = le_int native_code = '>' swapped_code = '<' up_str = Unpacker(s, endian='<') assert_equal(up_str.read(4), asbytes('1234')) up_str.ptr = 0 assert_equal(up_str.unpack('4s'), (asbytes('1234'),)) assert_equal(up_str.unpack('h'), (le_int,)) up_str = Unpacker(s, endian='>') assert_equal(up_str.unpack('4s'), (asbytes('1234'),)) assert_equal(up_str.unpack('h'), (be_int,)) # now test conflict of endian up_str = Unpacker(s, ptr=4, endian='>') assert_equal(up_str.unpack('h'), (be_int,)) up_str.ptr = 4 assert_equal(up_str.unpack('@h'), (native_int,)) # test -1 for read up_str.ptr = 2 assert_equal(up_str.read(), asbytes('34\x00\x01')) # past end assert_equal(up_str.read(), asbytes('')) # with n_bytes up_str.ptr = 2 assert_equal(up_str.read(2), asbytes('34')) assert_equal(up_str.read(2), asbytes('\x00\x01')) nipy-nibabel-d3c26be/nibabel/nifti1.py000066400000000000000000002013441177264777700177520ustar00rootroot00000000000000# emacs: -*- mode: python-mode; py-indent-offset: 4; indent-tabs-mode: nil -*- # vi: set ft=python sts=4 ts=4 sw=4 et: ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ## # # See COPYING file distributed along with the NiBabel package for the # copyright and license terms. # ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ## ''' Header reading / writing functions for nifti1 image format ''' import warnings import numpy as np import numpy.linalg as npl from .py3k import ZEROB, ints2bytes, asbytes, asstr from .volumeutils import Recoder, make_dt_codes, endian_codes from .spatialimages import HeaderDataError, ImageFileError from .batteryrunners import Report from .quaternions import fillpositive, quat2mat, mat2quat from . import analyze # module import from .spm99analyze import SpmAnalyzeHeader from .casting import have_binary128 # Needed for quaternion calculation FLOAT32_EPS_3 = -np.finfo(np.float32).eps * 3 # nifti1 flat header definition for Analyze-like first 348 bytes # first number in comments indicates offset in file header in bytes header_dtd = [ ('sizeof_hdr', 'i4'), # 0; must be 348 ('data_type', 'S10'), # 4; unused ('db_name', 'S18'), # 14; unused ('extents', 'i4'), # 32; unused ('session_error', 'i2'), # 36; unused ('regular', 'S1'), # 38; unused ('dim_info', 'u1'), # 39; MRI slice ordering code ('dim', 'i2', (8,)), # 40; data array dimensions ('intent_p1', 'f4'), # 56; first intent parameter ('intent_p2', 'f4'), # 60; second intent parameter ('intent_p3', 'f4'), # 64; third intent parameter ('intent_code', 'i2'),# 68; NIFTI intent code ('datatype', 'i2'), # 70; it's the datatype ('bitpix', 'i2'), # 72; number of bits per voxel ('slice_start', 'i2'),# 74; first slice index ('pixdim', 'f4', (8,)), # 76; grid spacings (units below) ('vox_offset', 'f4'), # 108; offset to data in image file ('scl_slope', 'f4'), # 112; data scaling slope ('scl_inter', 'f4'), # 116; data scaling intercept ('slice_end', 'i2'), # 120; last slice index ('slice_code', 'u1'), # 122; slice timing order ('xyzt_units', 'u1'), # 123; inits of pixdim[1..4] ('cal_max', 'f4'), # 124; max display intensity ('cal_min', 'f4'), # 128; min display intensity ('slice_duration', 'f4'), # 132; time for 1 slice ('toffset', 'f4'), # 136; time axis shift ('glmax', 'i4'), # 140; unused ('glmin', 'i4'), # 144; unused ('descrip', 'S80'), # 148; any text ('aux_file', 'S24'), # 228; auxiliary filename ('qform_code', 'i2'), # 252; xform code ('sform_code', 'i2'), # 254; xform code ('quatern_b', 'f4'), # 256; quaternion b param ('quatern_c', 'f4'), # 260; quaternion c param ('quatern_d', 'f4'), # 264; quaternion d param ('qoffset_x', 'f4'), # 268; quaternion x shift ('qoffset_y', 'f4'), # 272; quaternion y shift ('qoffset_z', 'f4'), # 276; quaternion z shift ('srow_x', 'f4', (4,)), # 280; 1st row affine transform ('srow_y', 'f4', (4,)), # 296; 2nd row affine transform ('srow_z', 'f4', (4,)), # 312; 3rd row affine transform ('intent_name', 'S16'), # 328; name or meaning of data ('magic', 'S4') # 344; must be 'ni1\0' or 'n+1\0' ] # Full header numpy dtype header_dtype = np.dtype(header_dtd) # datatypes not in analyze format, with codes if have_binary128(): # Only enable 128 bit floats if we really have IEEE binary 128 longdoubles _float128t = np.longdouble _complex256t = np.longcomplex else: _float128t = np.void _complex256t = np.void _dtdefs = ( # code, label, dtype definition, niistring (0, 'none', np.void, ""), (1, 'binary', np.void, ""), (2, 'uint8', np.uint8, "NIFTI_TYPE_UINT8"), (4, 'int16', np.int16, "NIFTI_TYPE_INT16"), (8, 'int32', np.int32, "NIFTI_TYPE_INT32"), (16, 'float32', np.float32, "NIFTI_TYPE_FLOAT32"), (32, 'complex64', np.complex64, "NIFTI_TYPE_COMPLEX64"), (64, 'float64', np.float64, "NIFTI_TYPE_FLOAT64"), (128, 'RGB', np.dtype([('R','u1'), ('G', 'u1'), ('B', 'u1')]), "NIFTI_TYPE_RGB24"), (255, 'all', np.void, ''), (256, 'int8', np.int8, "NIFTI_TYPE_INT8"), (512, 'uint16', np.uint16, "NIFTI_TYPE_UINT16"), (768, 'uint32', np.uint32, "NIFTI_TYPE_UINT32"), (1024,'int64', np.int64, "NIFTI_TYPE_INT64"), (1280, 'uint64', np.uint64, "NIFTI_TYPE_UINT64"), (1536, 'float128', _float128t, "NIFTI_TYPE_FLOAT128"), (1792, 'complex128', np.complex128, "NIFTI_TYPE_COMPLEX128"), (2048, 'complex256', _complex256t, "NIFTI_TYPE_COMPLEX256"), (2304, 'RGBA', np.dtype([('R','u1'), ('G', 'u1'), ('B', 'u1'), ('A', 'u1')]), "NIFTI_TYPE_RGBA32"), ) # Make full code alias bank, including dtype column data_type_codes = make_dt_codes(_dtdefs) # Transform (qform, sform) codes xform_codes = Recoder(( # code, label, niistring (0, 'unknown', "NIFTI_XFORM_UNKNOWN"), (1, 'scanner', "NIFTI_XFORM_SCANNER_ANAT"), (2, 'aligned', "NIFTI_XFORM_ALIGNED_ANAT"), (3, 'talairach', "NIFTI_XFORM_TALAIRACH"), (4, 'mni', "NIFTI_XFORM_MNI_152")), fields=('code', 'label', 'niistring')) # unit codes unit_codes = Recoder(( # code, label (0, 'unknown'), (1, 'meter'), (2, 'mm'), (3, 'micron'), (8, 'sec'), (16, 'msec'), (24, 'usec'), (32, 'hz'), (40, 'ppm'), (48, 'rads')), fields=('code', 'label')) slice_order_codes = Recoder(( # code, label (0, 'unknown'), (1, 'sequential increasing', 'seq inc'), (2, 'sequential decreasing', 'seq dec'), (3, 'alternating increasing', 'alt inc'), (4, 'alternating decreasing', 'alt dec'), (5, 'alternating increasing 2', 'alt inc 2'), (6, 'alternating decreasing 2', 'alt dec 2')), fields=('code', 'label')) intent_codes = Recoder(( # code, label, parameters description tuple (0, 'none', (), "NIFTI_INTENT_NONE"), (2, 'correlation',('p1 = DOF',), "NIFTI_INTENT_CORREL"), (3, 't test', ('p1 = DOF',), "NIFTI_INTENT_TTEST"), (4, 'f test', ('p1 = numerator DOF', 'p2 = denominator DOF'), "NIFTI_INTENT_FTEST"), (5, 'z score', (), "NIFTI_INTENT_ZSCORE"), (6, 'chi2', ('p1 = DOF',), "NIFTI_INTENT_CHISQ"), # two parameter beta distribution (7, 'beta', ('p1=a', 'p2=b'), "NIFTI_INTENT_BETA"), # Prob(x) = (p1 choose x) * p2^x * (1-p2)^(p1-x), for x=0,1,...,p1 (8, 'binomial', ('p1 = number of trials', 'p2 = probability per trial'), "NIFTI_INTENT_BINOM"), # 2 parameter gamma # Density(x) proportional to # x^(p1-1) * exp(-p2*x) (9, 'gamma', ('p1 = shape, p2 = scale', 2), "NIFTI_INTENT_GAMMA"), (10, 'poisson', ('p1 = mean',), "NIFTI_INTENT_POISSON"), (11, 'normal', ('p1 = mean', 'p2 = standard deviation',), "NIFTI_INTENT_NORMAL"), (12, 'non central f test', ('p1 = numerator DOF', 'p2 = denominator DOF', 'p3 = numerator noncentrality parameter',), "NIFTI_INTENT_FTEST_NONC"), (13, 'non central chi2', ('p1 = DOF', 'p2 = noncentrality parameter',), "NIFTI_INTENT_CHISQ_NONC"), (14, 'logistic', ('p1 = location', 'p2 = scale',), "NIFTI_INTENT_LOGISTIC"), (15, 'laplace', ('p1 = location', 'p2 = scale'), "NIFTI_INTENT_LAPLACE"), (16, 'uniform', ('p1 = lower end', 'p2 = upper end'), "NIFTI_INTENT_UNIFORM"), (17, 'non central t test', ('p1 = DOF', 'p2 = noncentrality parameter'), "NIFTI_INTENT_TTEST_NONC"), (18, 'weibull', ('p1 = location', 'p2 = scale, p3 = power'), "NIFTI_INTENT_WEIBULL"), # p1 = 1 = 'half normal' distribution # p1 = 2 = Rayleigh distribution # p1 = 3 = Maxwell-Boltzmann distribution. (19, 'chi', ('p1 = DOF',), "NIFTI_INTENT_CHI"), (20, 'inverse gaussian', ('pi = mu', 'p2 = lambda'), "NIFTI_INTENT_INVGAUSS"), (21, 'extreme value 1', ('p1 = location', 'p2 = scale'), "NIFTI_INTENT_EXTVAL"), (22, 'p value', (), "NIFTI_INTENT_PVAL"), (23, 'log p value', (), "NIFTI_INTENT_LOGPVAL"), (24, 'log10 p value', (), "NIFTI_INTENT_LOG10PVAL"), (1001, 'estimate', (), "NIFTI_INTENT_ESTIMATE"), (1002, 'label', (), "NIFTI_INTENT_LABEL"), (1003, 'neuroname', (), "NIFTI_INTENT_NEURONAME"), (1004, 'general matrix', ('p1 = M', 'p2 = N'), "NIFTI_INTENT_GENMATRIX"), (1005, 'symmetric matrix', ('p1 = M',), "NIFTI_INTENT_SYMMATRIX"), (1006, 'displacement vector', (), "NIFTI_INTENT_DISPVECT"), (1007, 'vector', (), "NIFTI_INTENT_VECTOR"), (1008, 'pointset', (), "NIFTI_INTENT_POINTSET"), (1009, 'triangle', (), "NIFTI_INTENT_TRIANGLE"), (1010, 'quaternion', (), "NIFTI_INTENT_QUATERNION"), (1011, 'dimensionless', (), "NIFTI_INTENT_DIMLESS"), (2001, 'time series', (), "NIFTI_INTENT_TIME_SERIES", "NIFTI_INTENT_TIMESERIES"), # this mis-spell occurs in the wild (2002, 'node index', (), "NIFTI_INTENT_NODE_INDEX"), (2003, 'rgb vector', (), "NIFTI_INTENT_RGB_VECTOR"), (2004, 'rgba vector', (), "NIFTI_INTENT_RGBA_VECTOR"), (2005, 'shape', (), "NIFTI_INTENT_SHAPE")), fields=('code', 'label', 'parameters', 'niistring')) class Nifti1Extension(object): """Baseclass for NIfTI1 header extensions. This class is sufficient to handle very simple text-based extensions, such as `comment`. More sophisticated extensions should/will be supported by dedicated subclasses. """ def __init__(self, code, content): """ Parameters ---------- code : int|str Canonical extension code as defined in the NIfTI standard, given either as integer or corresponding label (see :data:`~nibabel.nifti1.extension_codes`) content : str Extension content as read from the NIfTI file header. This content is converted into a runtime representation. """ try: self._code = extension_codes.code[code] except KeyError: # XXX or fail or at least complain? self._code = code self._content = self._unmangle(content) def _unmangle(self, value): """Convert the extension content into its runtime representation. The default implementation does nothing at all. Parameters ---------- value : str Extension content as read from file. Returns ------- The same object that was passed as `value`. Notes ----- Subclasses should reimplement this method to provide the desired unmangling procedure and may return any type of object. """ return value def _mangle(self, value): """Convert the extension content into NIfTI file header representation. The default implementation does nothing at all. Parameters ---------- value : str Extension content in runtime form. Returns ------- str Notes ----- Subclasses should reimplement this method to provide the desired mangling procedure. """ return value def get_code(self): """Return the canonical extension type code.""" return self._code def get_content(self): """Return the extension content in its runtime representation.""" return self._content def get_sizeondisk(self): """Return the size of the extension in the NIfTI file. """ # need raw value size plus 8 bytes for esize and ecode size = len(self._mangle(self._content)) size += 8 # extensions size has to be a multiple of 16 bytes size += 16 - (size % 16) return size def __repr__(self): try: code = extension_codes.label[self._code] except KeyError: # deal with unknown codes code = self._code s = "Nifti1Extension('%s', '%s')" % (code, self._content) return s def __eq__(self, other): return (self._code, self._content) == (other._code, other._content) def __ne__(self, other): return not self == other def write_to(self, fileobj, byteswap): ''' Write header extensions to fileobj Write starts at fileobj current file position. Parameters ---------- fileobj : file-like object Should implement ``write`` method byteswap : boolean Flag if byteswapping the data is required. Returns ------- None ''' extstart = fileobj.tell() rawsize = self.get_sizeondisk() # write esize and ecode first extinfo = np.array((rawsize, self._code), dtype=np.int32) if byteswap: extinfo = extinfo.byteswap() fileobj.write(extinfo.tostring()) # followed by the actual extension content # XXX if mangling upon load is implemented, it should be reverted here fileobj.write(self._mangle(self._content)) # be nice and zero out remaining part of the extension till the # next 16 byte border fileobj.write(ZEROB * (extstart + rawsize - fileobj.tell())) # NIfTI header extension type codes (ECODE) # see nifti1_io.h for a complete list of all known extensions and # references to their description or contacts of the respective # initiators extension_codes = Recoder(( (0, "ignore", Nifti1Extension), (2, "dicom", Nifti1Extension), (4, "afni", Nifti1Extension), (6, "comment", Nifti1Extension), (8, "xcede", Nifti1Extension), (10, "jimdiminfo", Nifti1Extension), (12, "workflow_fwds", Nifti1Extension), (14, "freesurfer", Nifti1Extension), (16, "pypickle", Nifti1Extension) ), fields=('code', 'label', 'handler')) class Nifti1Extensions(list): """Simple extension collection, implemented as a list-subclass. """ def count(self, ecode): """Returns the number of extensions matching a given *ecode*. Parameters ---------- code : int | str The ecode can be specified either literal or as numerical value. """ count = 0 code = extension_codes.code[ecode] for e in self: if e.get_code() == code: count += 1 return count def get_codes(self): """Return a list of the extension code of all available extensions""" return [e.get_code() for e in self] def get_sizeondisk(self): """Return the size of the complete header extensions in the NIfTI file. """ return np.sum([e.get_sizeondisk() for e in self]) def __repr__(self): s = "Nifti1Extensions(%s)" \ % ', '.join([str(e) for e in self]) return s def __cmp__(self, other): return cmp(list(self), list(other)) def write_to(self, fileobj, byteswap): ''' Write header extensions to fileobj Write starts at fileobj current file position. Parameters ---------- fileobj : file-like object Should implement ``write`` method byteswap : boolean Flag if byteswapping the data is required. Returns ------- None ''' for e in self: e.write_to(fileobj, byteswap) @classmethod def from_fileobj(klass, fileobj, size, byteswap): '''Read header extensions from a fileobj Parameters ---------- fileobj : file-like object We begin reading the extensions at the current file position size : int Number of bytes to read. If negative, fileobj will be read till its end. byteswap : boolean Flag if byteswapping the read data is required. Returns ------- An extension list. This list might be empty in case not extensions were present in fileobj. ''' # make empty extension list extensions = klass() # assume the file pointer is at the beginning of any extensions. # read until the whole header is parsed (each extension is a multiple # of 16 bytes) or in case of a separate header file till the end # (break inside the body) while size >= 16 or size < 0: # the next 8 bytes should have esize and ecode ext_def = fileobj.read(8) # nothing was read and instructed to read till the end # -> assume all extensions where parsed and break if not len(ext_def) and size < 0: break # otherwise there should be a full extension header if not len(ext_def) == 8: raise HeaderDataError('failed to read extension header') ext_def = np.fromstring(ext_def, dtype=np.int32) if byteswap: ext_def = ext_def.byteswap() # be extra verbose ecode = ext_def[1] esize = ext_def[0] if esize % 16: raise HeaderDataError( 'extension size is not a multiple of 16 bytes') # read extension itself; esize includes the 8 bytes already read evalue = fileobj.read(int(esize - 8)) if not len(evalue) == esize - 8: raise HeaderDataError('failed to read extension content') # note that we read a full extension size -= esize # store raw extension content, but strip trailing NULL chars evalue = evalue.rstrip(ZEROB) # 'extension_codes' also knows the best implementation to handle # a particular extension type try: ext = extension_codes.handler[ecode](ecode, evalue) except KeyError: # unknown extension type # XXX complain or fail or go with a generic extension ext = Nifti1Extension(ecode, evalue) extensions.append(ext) return extensions class Nifti1Header(SpmAnalyzeHeader): ''' Class for NIFTI1 header The NIFTI1 header has many more coded fields than the simpler Analyze variants. Nifti1 headers also have extensions. Nifti allows the header to be a separate file, as part of a nifti image / header pair, or to precede the data in a single file. The object needs to know which type it is, in order to manage the voxel offset pointing to the data, extension reading, and writing the correct magic string. This class handles the header-preceding-data case. ''' # Copies of module level definitions template_dtype = header_dtype _data_type_codes = data_type_codes # fields with recoders for their values _field_recoders = {'datatype': data_type_codes, 'qform_code': xform_codes, 'sform_code': xform_codes, 'intent_code': intent_codes, 'slice_code': slice_order_codes} # data scaling capabilities has_data_slope = True has_data_intercept = True # Extension class; should implement __call__ for contruction, and # ``from_fileobj`` for reading from file exts_klass = Nifti1Extensions # Signal whether this is single (header + data) file is_single = True def __init__(self, binaryblock=None, endianness=None, check=True, extensions=()): ''' Initialize header from binary data block and extensions ''' super(Nifti1Header, self).__init__(binaryblock, endianness, check) self.extensions = self.exts_klass(extensions) def copy(self): ''' Return copy of header Take reference to extensions as well as copy of header contents ''' return self.__class__( self.binaryblock, self.endianness, False, self.extensions) @classmethod def from_fileobj(klass, fileobj, endianness=None, check=True): raw_str = fileobj.read(klass.template_dtype.itemsize) hdr = klass(raw_str, endianness, check) # Read next 4 bytes to see if we have extensions. The nifti standard # has this as a 4 byte string; if the first value is not zero, then we # have extensions. extension_status = fileobj.read(4) if len(extension_status) < 4 or extension_status[0] == ZEROB: return hdr # If this is a detached header file read to end if not klass.is_single: extsize = -1 else: # otherwise read until the beginning of the data extsize = hdr._structarr['vox_offset'] - fileobj.tell() byteswap = endian_codes['native'] != hdr.endianness hdr.extensions = klass.exts_klass.from_fileobj(fileobj, extsize, byteswap) return hdr def write_to(self, fileobj): # First check that vox offset is large enough if self.is_single: vox_offset = self._structarr['vox_offset'] min_vox_offset = 352 + self.extensions.get_sizeondisk() if vox_offset < min_vox_offset: raise HeaderDataError('vox offset of %d, but need at least %d' % (vox_offset, min_vox_offset)) super(Nifti1Header, self).write_to(fileobj) if len(self.extensions) == 0: # If single file, write required 0 stream to signal no extensions if self.is_single: fileobj.write(ZEROB * 4) return # Signal there are extensions that follow fileobj.write(ints2bytes([1, 0, 0, 0])) byteswap = endian_codes['native'] != self.endianness self.extensions.write_to(fileobj, byteswap) def get_best_affine(self): ''' Select best of available transforms ''' hdr = self._structarr if hdr['sform_code'] != 0: return self.get_sform() if hdr['qform_code'] != 0: return self.get_qform() return self.get_base_affine() @classmethod def default_structarr(klass, endianness=None): ''' Create empty header binary block with given endianness ''' hdr_data = super(Nifti1Header, klass).default_structarr(endianness) if klass.is_single: hdr_data['magic'] = 'n+1' hdr_data['vox_offset'] = 352 else: hdr_data['magic'] = 'ni1' hdr_data['vox_offset'] = 0 return hdr_data def get_data_shape(self): ''' Get shape of data Examples -------- >>> hdr = Nifti1Header() >>> hdr.get_data_shape() (0,) >>> hdr.set_data_shape((1,2,3)) >>> hdr.get_data_shape() (1, 2, 3) Expanding number of dimensions gets default zooms >>> hdr.get_zooms() (1.0, 1.0, 1.0) Notes ----- Allows for freesurfer hack for large vectors described in https://github.com/nipy/nibabel/issues/100 and http://code.google.com/p/fieldtrip/source/browse/trunk/external/freesurfer/save_nifti.m?spec=svn5022&r=5022#77 ''' shape = super(Nifti1Header, self).get_data_shape() # Apply freesurfer hack for vector if shape != (-1, 1, 1): # Normal case return shape vec_len = int(self._structarr['glmin']) if vec_len == 0: raise HeaderDataError('-1 in dim[1] but 0 in glmin; inconsistent ' 'freesurfer type header?') return (vec_len, 1, 1) def set_data_shape(self, shape): ''' Set shape of data If ``ndims == len(shape)`` then we set zooms for dimensions higher than ``ndims`` to 1.0 Parameters ---------- shape : sequence sequence of integers specifying data array shape Notes ----- Applies freesurfer hack for large vectors described in https://github.com/nipy/nibabel/issues/100 and http://code.google.com/p/fieldtrip/source/browse/trunk/external/freesurfer/save_nifti.m?spec=svn5022&r=5022#77 ''' # Apply freesurfer hack for vector hdr = self._structarr shape = tuple(shape) if (len(shape) == 3 and shape[1:] == (1, 1) and shape[0] > np.iinfo(hdr['dim'].dtype.base).max): # Freesurfer case try: hdr['glmin'] = shape[0] except OverflowError: overflow = True else: overflow = hdr['glmin'] != shape[0] if overflow: raise HeaderDataError('shape[0] %s does not fit in glmax datatype' % shape[0]) warnings.warn('Using large vector Freesurfer hack; header will ' 'not be compatible with SPM or FSL', stacklevel=2) shape = (-1, 1, 1) super(Nifti1Header, self).set_data_shape(shape) def get_qform_quaternion(self): ''' Compute quaternion from b, c, d of quaternion Fills a value by assuming this is a unit quaternion ''' hdr = self._structarr bcd = [hdr['quatern_b'], hdr['quatern_c'], hdr['quatern_d']] # Adjust threshold to fact that source data was float32 return fillpositive(bcd, FLOAT32_EPS_3) def get_qform(self, coded=False): """ Return 4x4 affine matrix from qform parameters in header Parameters ---------- coded : bool, optional If True, return {affine or None}, and qform code. If False, just return affine. {affine or None} means, return None if qform code == 0, and affine otherwise. Returns ------- affine : None or (4,4) ndarray If `coded` is False, always return affine reconstructed from qform quaternion. If `coded` is True, return None if qform code is 0, else return the affine. code : int Qform code. Only returned if `coded` is True. """ hdr = self._structarr code = hdr['qform_code'] if code == 0 and coded: return None, 0 quat = self.get_qform_quaternion() R = quat2mat(quat) vox = hdr['pixdim'][1:4].copy() if np.any(vox) < 0: raise HeaderDataError('pixdims[1,2,3] should be positive') qfac = hdr['pixdim'][0] if qfac not in (-1, 1): raise HeaderDataError('qfac (pixdim[0]) should be 1 or -1') vox[-1] *= qfac S = np.diag(vox) M = np.dot(R, S) out = np.eye(4) out[0:3, 0:3] = M out[0:3, 3] = [hdr['qoffset_x'], hdr['qoffset_y'], hdr['qoffset_z']] if coded: return out, code return out def set_qform(self, affine, code=None, strip_shears=True): ''' Set qform header values from 4x4 affine Parameters ---------- hdr : nifti1 header affine : None or 4x4 array affine transform to write into sform. If None, only set code. code : None, string or integer String or integer giving meaning of transform in *affine*. The default is None. If code is None, then: * If affine is None, `code`-> 0 * If affine not None and sform code in header == 0, `code`-> 2 (aligned) * If affine not None and sform code in header != 0, `code`-> sform code in header strip_shears : bool, optional Whether to strip shears in `affine`. If True, shears will be silently stripped. If False, the presence of shears will raise a ``HeaderDataError`` Notes ----- The qform transform only encodes translations, rotations and zooms. If there are shear components to the `affine` transform, and `strip_shears` is True (the default), the written qform gives the closest approximation where the rotation matrix is orthogonal. This is to allow quaternion representation. The orthogonal representation enforces orthogonal axes. Examples -------- >>> hdr = Nifti1Header() >>> int(hdr['qform_code']) # gives 0 - unknown 0 >>> affine = np.diag([1,2,3,1]) >>> np.all(hdr.get_qform() == affine) False >>> hdr.set_qform(affine) >>> np.all(hdr.get_qform() == affine) True >>> int(hdr['qform_code']) # gives 2 - aligned 2 >>> hdr.set_qform(affine, code='talairach') >>> int(hdr['qform_code']) 3 >>> hdr.set_qform(affine, code=None) >>> int(hdr['qform_code']) 3 >>> hdr.set_qform(affine, code='scanner') >>> int(hdr['qform_code']) 1 >>> hdr.set_qform(None) >>> int(hdr['qform_code']) 0 ''' hdr = self._structarr old_code = hdr['qform_code'] if code is None: if affine is None: code = 0 elif old_code == 0: code = 2 # aligned else: code = old_code else: # code set code = self._field_recoders['qform_code'][code] hdr['qform_code'] = code if affine is None: return affine = np.asarray(affine) if not affine.shape == (4, 4): raise TypeError('Need 4x4 affine as input') trans = affine[:3, 3] RZS = affine[:3, :3] zooms = np.sqrt(np.sum(RZS * RZS, axis=0)) R = RZS / zooms # Set qfac to make R determinant positive if npl.det(R) > 0: qfac = 1 else: qfac = -1 R[:, -1] *= -1 # Make R orthogonal (to allow quaternion representation) # The orthogonal representation enforces orthogonal axes # (a subtle requirement of the NIFTI format qform transform) # Transform below is polar decomposition, returning the closest # orthogonal matrix PR, to input R P, S, Qs = npl.svd(R) PR = np.dot(P, Qs) if not strip_shears and not np.allclose(PR, R): raise HeaderDataError("Shears in affine and `strip_shears` is " "False") # Convert to quaternion quat = mat2quat(PR) # Set into header hdr['qoffset_x'], hdr['qoffset_y'], hdr['qoffset_z'] = trans hdr['pixdim'][0] = qfac hdr['pixdim'][1:4] = zooms hdr['quatern_b'], hdr['quatern_c'], hdr['quatern_d'] = quat[1:] def get_sform(self, coded=False): """ Return 4x4 affine matrix from sform parameters in header Parameters ---------- coded : bool, optional If True, return {affine or None}, and sform code. If False, just return affine. {affine or None} means, return None if sform code == 0, and affine otherwise. Returns ------- affine : None or (4,4) ndarray If `coded` is False, always return affine from sform fields. If `coded` is True, return None if sform code is 0, else return the affine. code : int Sform code. Only returned if `coded` is True. """ hdr = self._structarr code = hdr['sform_code'] if code == 0 and coded: return None, 0 out = np.eye(4) out[0, :] = hdr['srow_x'][:] out[1, :] = hdr['srow_y'][:] out[2, :] = hdr['srow_z'][:] if coded: return out, code return out def set_sform(self, affine, code=None): ''' Set sform transform from 4x4 affine Parameters ---------- hdr : nifti1 header affine : None or 4x4 array affine transform to write into sform. If None, only set `code` code : None, string or integer String or integer giving meaning of transform in *affine*. The default is None. If code is None, then: * If affine is None, `code`-> 0 * If affine not None and sform code in header == 0, `code`-> 2 (aligned) * If affine not None and sform code in header != 0, `code`-> sform code in header Examples -------- >>> hdr = Nifti1Header() >>> int(hdr['sform_code']) # gives 0 - unknown 0 >>> affine = np.diag([1,2,3,1]) >>> np.all(hdr.get_sform() == affine) False >>> hdr.set_sform(affine) >>> np.all(hdr.get_sform() == affine) True >>> int(hdr['sform_code']) # gives 2 - aligned 2 >>> hdr.set_sform(affine, code='talairach') >>> int(hdr['sform_code']) 3 >>> hdr.set_sform(affine, code=None) >>> int(hdr['sform_code']) 3 >>> hdr.set_sform(affine, code='scanner') >>> int(hdr['sform_code']) 1 >>> hdr.set_sform(None) >>> int(hdr['sform_code']) 0 ''' hdr = self._structarr old_code = hdr['sform_code'] if code is None: if affine is None: code = 0 elif old_code == 0: code = 2 # aligned else: code = old_code else: # code set code = self._field_recoders['sform_code'][code] hdr['sform_code'] = code if affine is None: return affine = np.asarray(affine) hdr['srow_x'][:] = affine[0, :] hdr['srow_y'][:] = affine[1, :] hdr['srow_z'][:] = affine[2, :] def get_slope_inter(self): ''' Get data scaling (slope) and DC offset (intercept) from header data Parameters ---------- self : header object Should have fields (keys) * scl_slope - slope * scl_inter - intercept Returns ------- slope : None or float scaling (slope). None if there is no valid scaling from these fields inter : None or float offset (intercept). None if there is no valid scaling or if offset is not finite. Examples -------- >>> hdr = Nifti1Header() >>> hdr.get_slope_inter() (1.0, 0.0) >>> hdr['scl_slope'] = 0 >>> hdr.get_slope_inter() (None, None) >>> hdr['scl_slope'] = np.nan >>> hdr.get_slope_inter() (None, None) >>> hdr['scl_slope'] = 1 >>> hdr['scl_inter'] = 1 >>> hdr.get_slope_inter() (1.0, 1.0) >>> hdr['scl_inter'] = np.inf >>> hdr.get_slope_inter() (1.0, None) ''' # Note that we are returning float (float64) scalefactors and # intercepts, although they are stored as np.float32. scale = float(self['scl_slope']) dc_offset = float(self['scl_inter']) if scale == 0 or not np.isfinite(scale): return None, None if not np.isfinite(dc_offset): dc_offset = None return scale, dc_offset def set_slope_inter(self, slope, inter=0.0): ''' Set slope and / or intercept into header Set slope and intercept for image data, such that, if the image data is ``arr``, then the scaled image data will be ``(arr * slope) + inter`` Parameters ---------- slope : None or float If None, implies `slope` of 0. When the slope is set to 0 or a not-finite value, ``get_slope_inter`` returns (None, None), i.e. `inter` is ignored unless there is a valid value for `slope`. inter : None or float, optional intercept. None implies inter value of 0. ''' if slope is None: slope = 0.0 if inter is None: inter = 0.0 self._structarr['scl_slope'] = slope self._structarr['scl_inter'] = inter def get_dim_info(self): ''' Gets nifti MRI slice etc dimension information Returns ------- freq : {None,0,1,2} Which data array axis is freqency encode direction phase : {None,0,1,2} Which data array axis is phase encode direction slice : {None,0,1,2} Which data array axis is slice encode direction where ``data array`` is the array returned by ``get_data`` Because nifti1 files are natively Fortran indexed: 0 is fastest changing in file 1 is medium changing in file 2 is slowest changing in file ``None`` means the axis appears not to be specified. Examples -------- See set_dim_info function ''' hdr = self._structarr info = int(hdr['dim_info']) freq = info & 3 phase = (info >> 2) & 3 slice = (info >> 4) & 3 return (freq-1 if freq else None, phase-1 if phase else None, slice-1 if slice else None) def set_dim_info(self, freq=None, phase=None, slice=None): ''' Sets nifti MRI slice etc dimension information Parameters ---------- hdr : nifti1 header freq : {None, 0, 1, 2} axis of data array refering to freqency encoding phase : {None, 0, 1, 2} axis of data array refering to phase encoding slice : {None, 0, 1, 2} axis of data array refering to slice encoding ``None`` means the axis is not specified. Examples -------- >>> hdr = Nifti1Header() >>> hdr.set_dim_info(1, 2, 0) >>> hdr.get_dim_info() (1, 2, 0) >>> hdr.set_dim_info(freq=1, phase=2, slice=0) >>> hdr.get_dim_info() (1, 2, 0) >>> hdr.set_dim_info() >>> hdr.get_dim_info() (None, None, None) >>> hdr.set_dim_info(freq=1, phase=None, slice=0) >>> hdr.get_dim_info() (1, None, 0) Notes ----- This is stored in one byte in the header ''' for inp in (freq, phase, slice): if inp not in (None, 0, 1, 2): raise HeaderDataError('Inputs must be in [None, 0, 1, 2]') info = 0 if not freq is None: info = info | ((freq+1) & 3) if not phase is None: info = info | (((phase+1) & 3) << 2) if not slice is None: info = info | (((slice+1) & 3) << 4) self._structarr['dim_info'] = info def get_intent(self, code_repr='label'): ''' Get intent code, parameters and name Parameters ---------- code_repr : string string giving output form of intent code representation. Default is 'label'; use 'code' for integer representation. Returns ------- code : string or integer intent code, or string describing code parameters : tuple parameters for the intent name : string intent name Examples -------- >>> hdr = Nifti1Header() >>> hdr.set_intent('t test', (10,), name='some score') >>> hdr.get_intent() ('t test', (10.0,), 'some score') >>> hdr.get_intent('code') (3, (10.0,), 'some score') ''' hdr = self._structarr recoder = self._field_recoders['intent_code'] code = int(hdr['intent_code']) if code_repr == 'code': label = code elif code_repr == 'label': label = recoder.label[code] else: raise TypeError('repr can be "label" or "code"') n_params = len(recoder.parameters[code]) params = (float(hdr['intent_p%d' % (i+1)]) for i in range(n_params)) name = asstr(np.asscalar(hdr['intent_name'])) return label, tuple(params), name def set_intent(self, code, params=(), name=''): ''' Set the intent code, parameters and name If parameters are not specified, assumed to be all zero. Each intent code has a set number of parameters associated. If you specify any parameters, then it will need to be the correct number (e.g the "f test" intent requires 2). However, parameters can also be set in the file data, so we also allow not setting any parameters (empty parameter tuple). Parameters ---------- code : integer or string code specifying nifti intent params : list, tuple of scalars parameters relating to intent (see intent_codes) defaults to (). Unspecified parameters are set to 0.0 name : string intent name (description). Defaults to '' Returns ------- None Examples -------- >>> hdr = Nifti1Header() >>> hdr.set_intent(0) # unknown code >>> hdr.set_intent('z score') >>> hdr.get_intent() ('z score', (), '') >>> hdr.get_intent('code') (5, (), '') >>> hdr.set_intent('t test', (10,), name='some score') >>> hdr.get_intent() ('t test', (10.0,), 'some score') >>> hdr.set_intent('f test', (2, 10), name='another score') >>> hdr.get_intent() ('f test', (2.0, 10.0), 'another score') >>> hdr.set_intent('f test') >>> hdr.get_intent() ('f test', (0.0, 0.0), '') ''' hdr = self._structarr icode = intent_codes.code[code] p_descr = intent_codes.parameters[code] if len(params) and len(params) != len(p_descr): raise HeaderDataError('Need params of form %s, or empty' % (p_descr,)) all_params = [0] * 3 all_params[:len(params)] = params[:] for i, param in enumerate(all_params): hdr['intent_p%d' % (i+1)] = param hdr['intent_code'] = icode hdr['intent_name'] = name def get_slice_duration(self): ''' Get slice duration Returns ------- slice_duration : float time to acquire one slice Examples -------- >>> hdr = Nifti1Header() >>> hdr.set_dim_info(slice=2) >>> hdr.set_slice_duration(0.3) >>> print "%0.1f" % hdr.get_slice_duration() 0.3 Notes ----- The Nifti1 spec appears to require the slice dimension to be defined for slice_duration to have meaning. ''' _, _, slice_dim = self.get_dim_info() if slice_dim is None: raise HeaderDataError('Slice dimension must be set ' 'for duration to be valid') return float(self._structarr['slice_duration']) def set_slice_duration(self, duration): ''' Set slice duration Parameters ---------- duration : scalar time to acquire one slice Examples -------- See ``get_slice_duration`` ''' _, _, slice_dim = self.get_dim_info() if slice_dim is None: raise HeaderDataError('Slice dimension must be set ' 'for duration to be valid') self._structarr['slice_duration'] = duration def get_n_slices(self): ''' Return the number of slices ''' hdr = self._structarr _, _, slice_dim = self.get_dim_info() if slice_dim is None: raise HeaderDataError('Slice dimension not set in header ' 'dim_info') shape = self.get_data_shape() try: slice_len = shape[slice_dim] except IndexError: raise HeaderDataError('Slice dimension index (%s) outside ' 'shape tuple (%s)' % (slice_dim, shape)) return slice_len def get_slice_times(self): ''' Get slice times from slice timing information Returns ------- slice_times : tuple Times of acquisition of slices, where 0 is the beginning of the acquisition, ordered by position in file. nifti allows slices at the top and bottom of the volume to be excluded from the standard slice timing specification, and calls these "padding slices". We give padding slices ``None`` as a time of acquisition Examples -------- >>> hdr = Nifti1Header() >>> hdr.set_dim_info(slice=2) >>> hdr.set_data_shape((1, 1, 7)) >>> hdr.set_slice_duration(0.1) >>> hdr['slice_code'] = slice_order_codes['sequential increasing'] >>> slice_times = hdr.get_slice_times() >>> np.allclose(slice_times, [0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6]) True ''' hdr = self._structarr slice_len = self.get_n_slices() duration = self.get_slice_duration() slabel = self.get_value_label('slice_code') if slabel == 'unknown': raise HeaderDataError('Cannot get slice times when ' 'Slice code is "unknown"') slice_start, slice_end = (int(hdr['slice_start']), int(hdr['slice_end'])) if slice_start < 0: raise HeaderDataError('slice_start should be >= 0') if slice_end == 0: slice_end = slice_len-1 n_timed = slice_end - slice_start + 1 if n_timed < 1: raise HeaderDataError('slice_end should be > slice_start') st_order = self._slice_time_order(slabel, n_timed) times = st_order * duration return ((None,)*slice_start + tuple(times) + (None,)*(slice_len-slice_end-1)) def set_slice_times(self, slice_times): ''' Set slice times into *hdr* Parameters ---------- slice_times : tuple tuple of slice times, one value per slice tuple can include None to indicate no slice time for that slice Examples -------- >>> hdr = Nifti1Header() >>> hdr.set_dim_info(slice=2) >>> hdr.set_data_shape([1, 1, 7]) >>> hdr.set_slice_duration(0.1) >>> times = [None, 0.2, 0.4, 0.1, 0.3, 0.0, None] >>> hdr.set_slice_times(times) >>> hdr.get_value_label('slice_code') 'alternating decreasing' >>> int(hdr['slice_start']) 1 >>> int(hdr['slice_end']) 5 ''' # Check if number of slices matches header hdr = self._structarr slice_len = self.get_n_slices() if slice_len != len(slice_times): raise HeaderDataError('Number of slice times does not ' 'match number of slices') # Extract Nones at beginning and end. Check for others for ind, time in enumerate(slice_times): if time is not None: slice_start = ind break else: raise HeaderDataError('Not all slice times can be None') for ind, time in enumerate(slice_times[::-1]): if time is not None: slice_end = slice_len-ind-1 break timed = slice_times[slice_start:slice_end+1] for time in timed: if time is None: raise HeaderDataError('Cannot have None in middle ' 'of slice time vector') # Find slice duration, check times are compatible with single # duration tdiffs = np.diff(np.sort(timed)) if not np.allclose(np.diff(tdiffs), 0): raise HeaderDataError('Slice times not compatible with ' 'single slice duration') duration = np.mean(tdiffs) # To slice time order st_order = np.round(np.array(timed) / duration) # Check if slice times fit known schemes n_timed = len(timed) so_recoder = self._field_recoders['slice_code'] labels = so_recoder.value_set('label') labels.remove('unknown') for label in labels: if np.all(st_order == self._slice_time_order( label, n_timed)): break else: raise HeaderDataError('slice ordering of %s fits ' 'with no known scheme' % st_order) # Set values into header hdr['slice_start'] = slice_start hdr['slice_end'] = slice_end hdr['slice_duration'] = duration hdr['slice_code'] = slice_order_codes.code[label] def _slice_time_order(self, slabel, n_slices): ''' Supporting function to give time order of slices from label ''' if slabel == 'sequential increasing': sp_ind_time_order = range(n_slices) elif slabel == 'sequential decreasing': sp_ind_time_order = range(n_slices)[::-1] elif slabel == 'alternating increasing': sp_ind_time_order = range(0, n_slices, 2) + range(1, n_slices, 2) elif slabel == 'alternating decreasing': sp_ind_time_order = range(n_slices - 1, -1, -2) \ + range(n_slices -2 , -1, -2) elif slabel == 'alternating increasing 2': sp_ind_time_order = range(1, n_slices, 2) + range(0, n_slices, 2) elif slabel == 'alternating decreasing 2': sp_ind_time_order = range(n_slices - 2, -1, -2) \ + range(n_slices - 1, -1, -2) else: raise HeaderDataError('We do not handle slice ordering "%s"' % slabel) return np.argsort(sp_ind_time_order) def get_xyzt_units(self): xyz_code = self.structarr['xyzt_units'] % 8 t_code = self.structarr['xyzt_units'] - xyz_code return (unit_codes.label[xyz_code], unit_codes.label[t_code]) def set_xyzt_units(self, xyz=None, t=None): if xyz is None: xyz = 0 if t is None: t = 0 xyz_code = self.structarr['xyzt_units'] % 8 t_code = self.structarr['xyzt_units'] - xyz_code xyz_code = unit_codes[xyz] t_code = unit_codes[t] self.structarr['xyzt_units'] = xyz_code + t_code def _set_format_specifics(self): ''' Utility routine to set format specific header stuff ''' if self.is_single: self._structarr['magic'] = 'n+1' if self._structarr['vox_offset'] < 352: self._structarr['vox_offset'] = 352 else: self._structarr['magic'] = 'ni1' ''' Checks only below here ''' @classmethod def _get_checks(klass): # We need to return our own versions of - e.g. chk_datatype, to # pick up the Nifti datatypes from our class return (klass._chk_sizeof_hdr, klass._chk_datatype, klass._chk_bitpix, klass._chk_pixdims, klass._chk_scale_inter, klass._chk_qfac, klass._chk_magic_offset, klass._chk_qform_code, klass._chk_sform_code) @staticmethod def _chk_scale_inter(hdr, fix=False): rep = Report(HeaderDataError) scale = hdr['scl_slope'] offset = hdr['scl_inter'] usable_scale = np.isfinite(scale) and scale !=0 # Nonzero finite scale, and valid offset if usable_scale and np.isfinite(offset) or (offset, scale) == (0, 0): return hdr, rep # If scale is usable but the intercept is not finite, that's a serious # problem if usable_scale and not np.isfinite(offset): rep.problem_level = 40 rep.problem_msg = ('"scl_slope" is %s; but "scl_inter" is %s; ' '"scl_inter" should be finite' % (scale, offset)) if fix: hdr['scl_inter'] = 0 rep.fix_msg = 'setting "scl_inter" to 0' return hdr, rep level = 0 msgs = [] fix_msgs = [] # Non-finite scale is obviously an error. We still need to check the # intercept though if not np.isfinite(scale): level = 30 msgs.append('"scl_slope" is %s; should be finite' % scale) if fix: hdr['scl_slope'] = 0 fix_msgs.append('setting "scl_slope" to 0 (no scaling)') # We've established scale is not usable, so inter will be ignored. That # means we can go a bit easy on bad intercepts if offset != 0: if level == 0: level = 20 msgs.append('Unused "scl_inter" is %s; should be 0' % offset) if fix: hdr['scl_inter'] = 0 fix_msgs.append('setting "scl_inter" to 0') rep.problem_level = level rep.problem_msg = '; '.join(msgs) rep.fix_msg = '; '.join(fix_msgs) return hdr, rep @staticmethod def _chk_qfac(hdr, fix=False): rep = Report(HeaderDataError) if hdr['pixdim'][0] in (-1, 1): return hdr, rep rep.problem_level = 20 rep.problem_msg = 'pixdim[0] (qfac) should be 1 (default) or -1' if fix: hdr['pixdim'][0] = 1 rep.fix_msg = 'setting qfac to 1' return hdr, rep @staticmethod def _chk_magic_offset(hdr, fix=False): rep = Report(HeaderDataError) # for ease of later string formatting, use scalar of byte string magic = np.asscalar(hdr['magic']) offset = hdr['vox_offset'] if magic == asbytes('n+1'): # one file if offset >= 352: if not offset % 16: return hdr, rep else: # SPM uses memory mapping to read the data, and # apparently this has to start on 16 byte boundaries rep.problem_msg = ('vox offset (=%s) not divisible ' 'by 16, not SPM compatible' % offset) rep.problem_level = 30 if fix: rep.fix_msg = 'leaving at current value' return hdr, rep rep.problem_level = 40 rep.problem_msg = ('vox offset %d too low for ' 'single file nifti1' % offset) if fix: hdr['vox_offset'] = 352 rep.fix_msg = 'setting to minimum value of 352' elif magic != asbytes('ni1'): # two files # unrecognized nii magic string, oh dear rep.problem_msg = ('magic string "%s" is not valid' % asstr(magic)) rep.problem_level = 45 if fix: rep.fix_msg = 'leaving as is, but future errors are likely' return hdr, rep @classmethod def _chk_qform_code(klass, hdr, fix=False): return klass._chk_xform_code('qform_code', hdr, fix) @classmethod def _chk_sform_code(klass, hdr, fix=False): return klass._chk_xform_code('sform_code', hdr, fix) @classmethod def _chk_xform_code(klass, code_type, hdr, fix): # utility method for sform and qform codes rep = Report(HeaderDataError) code = int(hdr[code_type]) recoder = klass._field_recoders[code_type] if code in recoder.value_set(): return hdr, rep rep.problem_level = 30 rep.problem_msg = '%s %d not valid' % (code_type, code) if fix: hdr[code_type] = 0 rep.fix_msg = 'setting to 0' return hdr, rep class Nifti1PairHeader(Nifti1Header): ''' Class for nifti1 pair header ''' # Signal whether this is single (header + data) file is_single = False class Nifti1Pair(analyze.AnalyzeImage): header_class = Nifti1PairHeader def _write_header(self, header_file, header, slope, inter): super(Nifti1Pair, self)._write_header(header_file, header, slope, inter) def update_header(self): ''' Harmonize header with image data and affine See AnalyzeImage.update_header for more examples Examples -------- >>> data = np.zeros((2,3,4)) >>> affine = np.diag([1.0,2.0,3.0,1.0]) >>> img = Nifti1Image(data, affine) >>> hdr = img.get_header() >>> np.all(hdr.get_qform() == affine) True >>> np.all(hdr.get_sform() == affine) True ''' super(Nifti1Pair, self).update_header() hdr = self._header hdr['magic'] = 'ni1' # If the affine is not None, and it is different from the main affine in # the header, update the heaader if self._affine is None: return if np.allclose(self._affine, hdr.get_best_affine()): return # Set affine into sform with default code hdr.set_sform(self._affine, code='aligned') # Make qform 'unknown' hdr.set_qform(self._affine, code='unknown') def get_qform(self, coded=False): """ Return 4x4 affine matrix from qform parameters in header Parameters ---------- coded : bool, optional If True, return {affine or None}, and qform code. If False, just return affine. {affine or None} means, return None if qform code == 0, and affine otherwise. Returns ------- affine : None or (4,4) ndarray If `coded` is False, always return affine reconstructed from qform quaternion. If `coded` is True, return None if qform code is 0, else return the affine. code : int Qform code. Only returned if `coded` is True. See also -------- Nifti1Header.set_qform """ return self._header.get_qform(coded) def set_qform(self, affine, code=None, strip_shears=True, **kwargs): ''' Set qform header values from 4x4 affine Parameters ---------- hdr : nifti1 header affine : None or 4x4 array affine transform to write into sform. If None, only set code. code : None, string or integer String or integer giving meaning of transform in *affine*. The default is None. If code is None, then: * If affine is None, `code`-> 0 * If affine not None and sform code in header == 0, `code`-> 2 (aligned) * If affine not None and sform code in header != 0, `code`-> sform code in header strip_shears : bool, optional Whether to strip shears in `affine`. If True, shears will be silently stripped. If False, the presence of shears will raise a ``HeaderDataError`` update_affine : bool, optional Whether to update the image affine from the header best affine after setting the qform. Must be keyword argumemt (because of different position in `set_qform`). Default is True See also -------- Nifti1Header.set_qform Examples -------- >>> data = np.arange(24).reshape((2,3,4)) >>> aff = np.diag([2, 3, 4, 1]) >>> img = Nifti1Pair(data, aff) >>> img.get_qform() array([[ 2., 0., 0., 0.], [ 0., 3., 0., 0.], [ 0., 0., 4., 0.], [ 0., 0., 0., 1.]]) >>> img.get_qform(coded=True) (None, 0) >>> aff2 = np.diag([3, 4, 5, 1]) >>> img.set_qform(aff2, 'talairach') >>> qaff, code = img.get_qform(coded=True) >>> np.all(qaff == aff2) True >>> int(code) 3 ''' update_affine = kwargs.pop('update_affine', True) if kwargs: raise TypeError('Unexpected keyword argument(s) %s' % kwargs) self._header.set_qform(affine, code, strip_shears) if update_affine: self._affine[:] = self._header.get_best_affine() def get_sform(self, coded=False): """ Return 4x4 affine matrix from sform parameters in header Parameters ---------- coded : bool, optional If True, return {affine or None}, and sform code. If False, just return affine. {affine or None} means, return None if sform code == 0, and affine otherwise. Returns ------- affine : None or (4,4) ndarray If `coded` is False, always return affine from sform fields. If `coded` is True, return None if sform code is 0, else return the affine. code : int Sform code. Only returned if `coded` is True. See also -------- Nifti1Header.get_sform """ return self._header.get_sform(coded) def set_sform(self, affine, code=None, **kwargs): ''' Set sform transform from 4x4 affine Parameters ---------- hdr : nifti1 header affine : None or 4x4 array affine transform to write into sform. If None, only set `code` code : None, string or integer String or integer giving meaning of transform in *affine*. The default is None. If code is None, then: * If affine is None, `code`-> 0 * If affine not None and sform code in header == 0, `code`-> 2 (aligned) * If affine not None and sform code in header != 0, `code`-> sform code in header update_affine : bool, optional Whether to update the image affine from the header best affine after setting the qform. Must be keyword argumemt (because of different position in `set_qform`). Default is True See also -------- Nifti1Header.set_sform Examples -------- >>> data = np.arange(24).reshape((2,3,4)) >>> aff = np.diag([2, 3, 4, 1]) >>> img = Nifti1Pair(data, aff) >>> img.get_sform() array([[ 2., 0., 0., 0.], [ 0., 3., 0., 0.], [ 0., 0., 4., 0.], [ 0., 0., 0., 1.]]) >>> saff, code = img.get_sform(coded=True) >>> saff array([[ 2., 0., 0., 0.], [ 0., 3., 0., 0.], [ 0., 0., 4., 0.], [ 0., 0., 0., 1.]]) >>> int(code) 2 >>> aff2 = np.diag([3, 4, 5, 1]) >>> img.set_sform(aff2, 'talairach') >>> saff, code = img.get_sform(coded=True) >>> np.all(saff == aff2) True >>> int(code) 3 ''' update_affine = kwargs.pop('update_affine', True) if kwargs: raise TypeError('Unexpected keyword argument(s) %s' % kwargs) self._header.set_sform(affine, code) if update_affine: self._affine[:] = self._header.get_best_affine() class Nifti1Image(Nifti1Pair): header_class = Nifti1Header files_types = (('image', '.nii'),) @staticmethod def _get_fileholders(file_map): """ Return fileholder for header and image For single-file niftis, the fileholder for the header and the image will be the same """ return file_map['image'], file_map['image'] def _write_header(self, header_file, header, slope, inter): super(Nifti1Image, self)._write_header(header_file, header, slope, inter) # We need to set the header offset ready for writing the image. # Streams like bz2 do not allow write seeks, even forward. We # check where to go, and write zeros up until the data part of # the file offset = header.get_data_offset() diff = offset-header_file.tell() if diff > 0: header_file.write('\x00' * diff) def update_header(self): ''' Harmonize header with image data and affine ''' super(Nifti1Image, self).update_header() hdr = self._header hdr['magic'] = 'n+1' # make sure that there is space for the header. If any # extensions, figure out necessary vox_offset for extensions to # fit min_vox_offset = 352 + hdr.extensions.get_sizeondisk() if hdr['vox_offset'] < min_vox_offset: hdr['vox_offset'] = min_vox_offset def load(filename): """ Load nifti1 single or pair from `filename` Parameters ---------- filename : str filename of image to be loaded Returns ------- img : Nifti1Image or Nifti1Pair nifti1 single or pair image instance Raises ------ ImageFileError: if `filename` doesn't look like nifti1 IOError : if `filename` does not exist """ try: img = Nifti1Image.load(filename) except ImageFileError: return Nifti1Pair.load(filename) return img def save(img, filename): """ Save nifti1 single or pair to `filename` Parameters ---------- filename : str filename to which to save image """ try: Nifti1Image.instance_to_filename(img, filename) except ImageFileError: Nifti1Pair.instance_to_filename(img, filename) nipy-nibabel-d3c26be/nibabel/onetime.py000066400000000000000000000046371177264777700202260ustar00rootroot00000000000000"""Descriptor support for NIPY. Utilities to support special Python descriptors [1,2], in particular the use of a useful pattern for properties we call 'one time properties'. These are object attributes which are declared as properties, but become regular attributes once they've been read the first time. They can thus be evaluated later in the object's life cycle, but once evaluated they become normal, static attributes with no function call overhead on access or any other constraints. References ---------- [1] How-To Guide for Descriptors, Raymond Hettinger. http://users.rcn.com/python/download/Descriptor.htm [2] Python data model, http://docs.python.org/reference/datamodel.html """ class OneTimeProperty(object): """A descriptor to make special properties that become normal attributes. """ def __init__(self,func): """Create a OneTimeProperty instance. Parameters ---------- func : method The method that will be called the first time to compute a value. Afterwards, the method's name will be a standard attribute holding the value of this computation. """ self.getter = func self.name = func.func_name def __get__(self,obj,type=None): """This will be called on attribute access on the class or instance. """ if obj is None: # Being called on the class, return the original function. This way, # introspection works on the class. return self.getter val = self.getter(obj) #print "** setattr_on_read - loading '%s'" % self.name # dbg setattr(obj, self.name, val) return val def setattr_on_read(func): # XXX - beetter names for this? # - cor_property (copy on read property) # - sor_property (set on read property) # - prop2attr_on_read #... ? """Decorator to create OneTimeProperty attributes. Parameters ---------- func : method The method that will be called the first time to compute a value. Afterwards, the method's name will be a standard attribute holding the value of this computation. Examples -------- >>> class MagicProp(object): ... @setattr_on_read ... def a(self): ... return 99 ... >>> x = MagicProp() >>> 'a' in x.__dict__ False >>> x.a 99 >>> 'a' in x.__dict__ True """ return OneTimeProperty(func) nipy-nibabel-d3c26be/nibabel/optpkg.py000066400000000000000000000050201177264777700200550ustar00rootroot00000000000000""" Routines to support optional packages """ try: import nose except ImportError: have_nose = False else: have_nose = True from .tripwire import TripWire def optional_package(name, trip_msg=None): """ Return package-like thing and module setup for package `name` Parameters ---------- name : str package name trip_msg : None or str message to give when someone tries to use the return package, but we could not import it, and have returned a TripWire object instead. Default message if None. Returns ------- pkg_like : module or ``TripWire`` instance If we can import the package, return it. Otherwise return an object raising an error when accessed have_pkg : bool True if import for package was successful, false otherwise module_setup : function callable usually set as ``setup_module`` in calling namespace, to allow skipping tests. Example ------- Typical use would be something like this at the top of a module using an optional package: >>> from nibabel.optpkg import optional_package >>> pkg, have_pkg, setup_module = optional_package('not_a_package') Of course in this case the package doesn't exist, and so, in the module: >>> have_pkg False and >>> pkg.some_function() #doctest: +IGNORE_EXCEPTION_DETAIL Traceback (most recent call last): ... TripWireError: We need package not_a_package for these functions, but ``import not_a_package`` raised an ImportError If the module does exist - we get the module >>> pkg, _, _ = optional_package('os') >>> hasattr(pkg, 'path') True Or a submodule if that's what we asked for >>> subpkg, _, _ = optional_package('os.path') >>> hasattr(subpkg, 'dirname') True """ # fromlist=[''] results in submodule being returned, rather than the top # level module. See help(__import__) try: pkg = __import__(name, fromlist=['']) except ImportError: pass else: # import worked # top level module return pkg, True, lambda : None if trip_msg is None: trip_msg = ('We need package %s for these functions, but ' '``import %s`` raised an ImportError' % (name, name)) pkg = TripWire(trip_msg) def setup_module(): if have_nose: raise nose.plugins.skip.SkipTest('No %s for these tests' % name) return pkg, False, setup_module nipy-nibabel-d3c26be/nibabel/orientations.py000066400000000000000000000263411177264777700213000ustar00rootroot00000000000000# emacs: -*- mode: python-mode; py-indent-offset: 4; indent-tabs-mode: nil -*- # vi: set ft=python sts=4 ts=4 sw=4 et: ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ## # # See COPYING file distributed along with the NiBabel package for the # copyright and license terms. # ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ## ''' Utilities for calculating and applying affine orientations ''' import numpy as np import numpy.linalg as npl class OrientationError(Exception): pass def io_orientation(affine, tol=None): ''' Orientation of input axes in terms of output axes for `affine` Valid for an affine transformation from ``p`` dimensions to ``q`` dimensions (``affine.shape == (q + 1, p + 1)``). The calculated orientations can be used to transform associated arrays to best match the output orientations. If ``p`` > ``q``, then some of the output axes should be considered dropped in this orientation. Parameters ---------- affine : (q+1, p+1) ndarray-like Transformation affine from ``p`` inputs to ``q`` outputs. Usually this will be a shape (4,4) matrix, transforming 3 inputs to 3 outputs, but the code also handles the more general case tol : {None, float}, optional threshold below which SVD values of the affine are considered zero. If `tol` is None, and ``S`` is an array with singular values for `affine`, and ``eps`` is the epsilon value for datatype of ``S``, then `tol` set to ``S.max() * eps``. Returns ------- orientations : (p, 2) ndarray one row per input axis, where the first value in each row is the closest corresponding output axis. The second value in each row is 1 if the input axis is in the same direction as the corresponding output axis and -1 if it is in the opposite direction. If a row is [np.nan, np.nan], which can happen when p > q, then this row should be considered dropped. ''' affine = np.asarray(affine) q, p = affine.shape[0]-1, affine.shape[1]-1 # extract the underlying rotation, zoom, shear matrix RZS = affine[:q, :p] zooms = np.sqrt(np.sum(RZS * RZS, axis=0)) # Zooms can be zero, in which case all elements in the column are zero, and # we can leave them as they are zooms[zooms == 0] = 1 RS = RZS / zooms # Transform below is polar decomposition, returning the closest # shearless matrix R to RS P, S, Qs = npl.svd(RS) # Threshold the singular values to determine the rank. if tol is None: tol = S.max() * np.finfo(S.dtype).eps keep = (S > tol) R = np.dot(P[:, keep], Qs[keep]) # the matrix R is such that np.dot(R,R.T) is projection onto the # columns of P[:,keep] and np.dot(R.T,R) is projection onto the rows # of Qs[keep]. R (== np.dot(R, np.eye(p))) gives rotation of the # unit input vectors to output coordinates. Therefore, the row # index of abs max R[:,N], is the output axis changing most as input # axis N changes. In case there are ties, we choose the axes # iteratively, removing used axes from consideration as we go ornt = np.ones((p, 2), dtype=np.int8) * np.nan for in_ax in range(p): col = R[:, in_ax] if not np.alltrue(np.equal(col, 0)): out_ax = np.argmax(np.abs(col)) ornt[in_ax, 0] = out_ax assert col[out_ax] != 0 if col[out_ax] < 0: ornt[in_ax, 1] = -1 else: ornt[in_ax, 1] = 1 # remove the identified axis from further consideration, by # zeroing out the corresponding row in R R[out_ax, :] = 0 return ornt def apply_orientation(arr, ornt): ''' Apply transformations implied by `ornt` to the first n axes of the array `arr` Parameters ---------- arr : array-like of data with ndim >= n ornt : (n,2) orientation array orientation transform. ``ornt[N,1]` is flip of axis N of the array implied by `shape`, where 1 means no flip and -1 means flip. For example, if ``N==0`` and ``ornt[0,1] == -1``, and there's an array ``arr`` of shape `shape`, the flip would correspond to the effect of ``np.flipud(arr)``. ``ornt[:,0]`` is the transpose that needs to be done to the implied array, as in ``arr.transpose(ornt[:,0])`` Returns ------- t_arr : ndarray data array `arr` transformed according to ornt ''' t_arr = np.asarray(arr) ornt = np.asarray(ornt) n = ornt.shape[0] if t_arr.ndim < n: raise OrientationError('Data array has fewer dimensions than ' 'orientation') # no coordinates can be dropped for applying the orientations if np.any(np.isnan(ornt[:, 0])): raise OrientationError('Cannot drop coordinates when ' 'applying orientation to data') # apply ornt transformations for ax, flip in enumerate(ornt[:, 1]): if flip == -1: t_arr = flip_axis(t_arr, axis=ax) full_transpose = np.arange(t_arr.ndim) # ornt indicates the transpose that has occurred - we reverse it full_transpose[:n] = np.argsort(ornt[:, 0]) t_arr = t_arr.transpose(full_transpose) return t_arr def inv_ornt_aff(ornt, shape): ''' Affine transform reversing transforms implied in `ornt` Imagine you have an array ``arr`` of shape `shape`, and you apply the transforms implied by `ornt` (more below), to get ``tarr``. ``tarr`` may have a different shape ``shape_prime``. This routine returns the affine that will take a array coordinate for ``tarr`` and give you the corresponding array coordinate in ``arr``. Parameters ---------- ornt : (p, 2) ndarray orientation transform. ``ornt[P, 1]` is flip of axis N of the array implied by `shape`, where 1 means no flip and -1 means flip. For example, if ``P==0`` and ``ornt[0, 1] == -1``, and there's an array ``arr`` of shape `shape`, the flip would correspond to the effect of ``np.flipud(arr)``. ``ornt[:,0]`` gives us the (reverse of the) transpose that has been done to ``arr``. If there are any NaNs in `ornt`, we raise an ``OrientationError`` (see notes) shape : length p sequence shape of array you may transform with `ornt` Returns ------- transform_affine : (p + 1, p + 1) ndarray An array ``arr`` (shape `shape`) might be transformed according to `ornt`, resulting in a transformed array ``tarr``. `transformed_affine` is the transform that takes you from array coordinates in ``tarr`` to array coordinates in ``arr``. Notes ----- If a row in `ornt` contains NaN, this means that the input row does not influence the output space, and is thus effectively dropped from the output space. In that case one ``tarr`` coordinate maps to many ``arr`` coordinates, we can't invert the transform, and we raise an error ''' ornt = np.asarray(ornt) if np.any(np.isnan(ornt)): raise OrientationError("We cannot invert orientation transform") p = ornt.shape[0] shape = np.array(shape)[:p] # ornt implies a flip, followed by a transpose. We need the affine # that inverts these. Thus we need the affine that first undoes the # effect of the transpose, then undoes the effects of the flip. # ornt indicates the transpose that has occurred to get the current # ordering, relative to canonical, so we just use that. # undo_reorder is a row permutatation matrix undo_reorder = np.eye(p + 1)[list(ornt[:, 0]) + [p], :] undo_flip = np.diag(list(ornt[:, 1]) + [1.0]) center_trans = -(shape - 1) / 2.0 undo_flip[:p, p] = (ornt[:, 1] * center_trans) - center_trans return np.dot(undo_flip, undo_reorder) @np.deprecate_with_doc("Please use inv_ornt_aff instead") def orientation_affine(ornt, shape): return inv_ornt_aff(ornt, shape) def flip_axis(arr, axis=0): ''' Flip contents of `axis` in array `arr` ``flip_axis`` is the same transform as ``np.flipud``, but for any axis. For example ``flip_axis(arr, axis=0)`` is the same transform as ``np.flipud(arr)``, and ``flip_axis(arr, axis=1)`` is the same transform as ``np.fliplr(arr)`` Parameters ---------- arr : array-like axis : int, optional axis to flip. Default `axis` == 0 Returns ------- farr : array Array with axis `axis` flipped Examples -------- >>> a = np.arange(6).reshape((2,3)) >>> a array([[0, 1, 2], [3, 4, 5]]) >>> flip_axis(a, axis=0) array([[3, 4, 5], [0, 1, 2]]) >>> flip_axis(a, axis=1) array([[2, 1, 0], [5, 4, 3]]) ''' arr = np.asanyarray(arr) arr = arr.swapaxes(0, axis) arr = np.flipud(arr) return arr.swapaxes(axis, 0) def ornt2axcodes(ornt, labels=None): """ Convert orientation `ornt` to labels for axis directions Parameters ---------- ornt : (N,2) array-like orientation array - see io_orientation docstring labels : optional, None or sequence of (2,) sequences (2,) sequences are labels for (beginning, end) of output axis. That is, if the first row in `ornt` is ``[1, 1]``, and the second (2,) sequence in `labels` is ('back', 'front') then the first returned axis code will be ``'front'``. If the first row in `ornt` had been ``[1, -1]`` then the first returned value would have been ``'back'``. If None, equivalent to ``(('L','R'),('P','A'),('I','S'))`` - that is - RAS axes. Returns ------- axcodes : (N,) tuple labels for positive end of voxel axes. Dropped axes get a label of None. Examples -------- >>> ornt2axcodes([[1, 1],[0,-1],[2,1]], (('L','R'),('B','F'),('D','U'))) ('F', 'L', 'U') """ if labels is None: labels = zip('LPI', 'RAS') axcodes = [] for axno, direction in np.asarray(ornt): if np.isnan(axno): axcodes.append(None) continue axint = int(np.round(axno)) if axint != axno: raise ValueError('Non integer axis number %f' % axno) elif direction == 1: axcode = labels[axint][1] elif direction == -1: axcode = labels[axint][0] else: raise ValueError('Direction should be -1 or 1') axcodes.append(axcode) return tuple(axcodes) def aff2axcodes(aff, labels=None, tol=None): """ axis direction codes for affine `aff` Parameters ---------- aff : (N,M) array-like affine transformation matrix labels : optional, None or sequence of (2,) sequences Labels for negative and positive ends of output axes of `aff`. See docstring for ``ornt2axcodes`` for more detail tol : None or float Tolerance for SVD of affine - see ``io_orientation`` for more detail. Returns ------- axcodes : (N,) tuple labels for positive end of voxel axes. Dropped axes get a label of None. Examples -------- >>> aff = [[0,1,0,10],[-1,0,0,20],[0,0,1,30],[0,0,0,1]] >>> aff2axcodes(aff, (('L','R'),('B','F'),('D','U'))) ('B', 'R', 'U') """ ornt = io_orientation(aff, tol) return ornt2axcodes(ornt, labels) nipy-nibabel-d3c26be/nibabel/parrec.py000066400000000000000000000540141177264777700200340ustar00rootroot00000000000000# emacs: -*- mode: python-mode; py-indent-offset: 4; indent-tabs-mode: nil -*- # vi: set ft=python sts=4 ts=4 sw=4 et: ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ## # # See COPYING file distributed along with the NiBabel package for the # copyright and license terms. # ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ## """Humble attempt to read images in PAR/REC format. This is yet another MRI image format generated by Phillips scanner. It is an ASCII header (PAR) plus a binary blob (REC). This implementation aims to read version 4.2 of this format. Other versions could probably be supported, but the author is lacking samples of them. """ import warnings import numpy as np import copy from .spatialimages import SpatialImage, Header from .eulerangles import euler2mat from .volumeutils import Recoder # PAR header versions we claim to understand supported_versions = ['V4.2'] # assign props to PAR header entries # values are: (shortname[, dtype[, shape]]) _hdr_key_dict = { 'Patient name': ('patient_name',), 'Examination name': ('exam_name',), 'Protocol name': ('protocol_name',), 'Examination date/time': ('exam_date',), 'Series Type': ('series_type',), 'Acquisition nr': ('acq_nr', int), 'Reconstruction nr': ('recon_nr', int), 'Scan Duration [sec]': ('scan_duration', float), 'Max. number of cardiac phases': ('max_cardiac_phases', int), 'Max. number of echoes': ('max_echoes', int), 'Max. number of slices/locations': ('max_slices', int), 'Max. number of dynamics': ('max_dynamics', int), 'Max. number of mixes': ('max_mixes', int), 'Patient position': ('patient_position',), 'Preparation direction': ('prep_direction',), 'Technique': ('tech',), 'Scan resolution (x, y)': ('scan_resolution', int, (2,)), 'Scan mode': ('san_mode',), 'Repetition time [ms]': ('repetition_time', float), 'FOV (ap,fh,rl) [mm]': ('fov', float, (3,)), 'Water Fat shift [pixels]': ('water_fat_shift', float), 'Angulation midslice(ap,fh,rl)[degr]': ('angulation', float, (3,)), 'Off Centre midslice(ap,fh,rl) [mm]': ('off_center', float, (3,)), 'Flow compensation <0=no 1=yes> ?': ('flow_compensation', int), 'Presaturation <0=no 1=yes> ?': ('presaturation', int), 'Phase encoding velocity [cm/sec]': ('phase_enc_velocity', float, (3,)), 'MTC <0=no 1=yes> ?': ('mtc', int), 'SPIR <0=no 1=yes> ?': ('spir', int), 'EPI factor <0,1=no EPI>': ('epi_factor', int), 'Dynamic scan <0=no 1=yes> ?': ('dyn_scan', int), 'Diffusion <0=no 1=yes> ?': ('diffusion', int), 'Diffusion echo time [ms]': ('diffusion_echo_time', float), 'Max. number of diffusion values': ('max_diffusion_values', int), 'Max. number of gradient orients': ('max_gradient_orient', int), 'Number of label types <0=no ASL>': ('nr_label_types', int), } # header items order per image definition line image_def_dtd = [ ('slice number', int), ('echo number', int,), ('dynamic scan number', int,), ('cardiac phase number', int,), ('image_type_mr', int,), ('scanning sequence', int,), ('index in REC file', int,), ('image pixel size', int,), ('scan percentage', int,), ('recon resolution', int, (2,)), ('rescale intercept', float), ('rescale slope', float), ('scale slope', float), ('window center', int,), ('window width', int,), ('image angulation', float, (3,)), ('image offcentre', float, (3,)), ('slice thickness', float), ('slice gap', float), ('image_display_orientation', int,), ('slice orientation', int,), ('fmri_status_indication', int,), ('image_type_ed_es', int,), ('pixel spacing', float, (2,)), ('echo_time', float), ('dyn_scan_begin_time', float), ('trigger_time', float), ('diffusion_b_factor', float), ('number of averages', int,), ('image_flip_angle', float), ('cardiac frequency', int,), ('minimum RR-interval', int,), ('maximum RR-interval', int,), ('TURBO factor', int,), ('Inversion delay', float), ('diffusion b value number', int,), # (imagekey!) ('gradient orientation number', int,), # (imagekey!) ('contrast type', 'S30'), # XXX might be too short? ('diffusion anisotropy type', 'S30'), # XXX might be too short? ('diffusion', float, (3,)), ('label type', int,), # (imagekey!) ] image_def_dtype = np.dtype(image_def_dtd) # slice orientation codes slice_orientation_codes = Recoder((# code, label (1, 'transversal'), (2, 'sagital'), (3, 'coronal')), fields=('code', 'label')) class PARRECError(Exception): """Exception for PAR/REC format related problems. To be raised whenever PAR/REC is not happy, or we are not happy with PAR/REC. """ pass def parse_PAR_header(fobj): """Parse a PAR header and aggregate all information into useful containers. Parameters ---------- fobj : file-object The PAR header file object. Returns ------- (dict, array) The dictionary contains all "General Information" from the header file, while the (structured) has the properties of all image definitions in the header """ # containers for relevant header lines general_info = {} image_info = [] version = None # single pass through the header for line in fobj: # no junk line = line.strip() if line.startswith('#'): # try to get the header version if line.count('image export tool'): version = line.split()[-1] if not version in supported_versions: warnings.warn( "PAR/REC version '%s' is currently not " "supported -- making an attempt to read " "nevertheless. Please email the NiBabel " "mailing list, if you are interested in " "adding support for this version." % version) else: # just a comment continue elif line.startswith('.'): # read 'general information' and store in a dict first_colon = line[1:].find(':') + 1 key = line[1:first_colon].strip() value = line[first_colon + 1:].strip() # get props for this hdr field props = _hdr_key_dict[key] # turn values into meaningful dtype if len(props) == 2: # only dtype spec and no shape value = props[1](value) elif len(props) == 3: # array with dtype and shape value = np.fromstring(value, props[1], sep=' ') value.shape = props[2] general_info[props[0]] = value elif line: # anything else is an image definition: store for later # processing image_info.append(line) # postproc image def props # create an array for all image defs image_defs = np.zeros(len(image_info), dtype=image_def_dtype) # for every image definition for i, line in enumerate(image_info): items = line.split() item_counter = 0 # for all image properties we know about for props in image_def_dtd: if np.issubdtype(image_defs[props[0]].dtype, str): # simple string image_defs[props[0]][i] = items[item_counter] item_counter += 1 elif len(props) == 2: # prop with numerical dtype image_defs[props[0]][i] = props[1](items[item_counter]) item_counter += 1 elif len(props) == 3: # array prop with dtype nelements = np.prod(props[2]) # get as many elements as necessary itms = items[item_counter:item_counter + nelements] # convert to array with dtype value = np.fromstring(" ".join(itms), props[1], sep=' ') # store image_defs[props[0]][i] = value item_counter += nelements return general_info, image_defs class PARRECHeader(Header): """PAR/REC header""" def __init__(self, info, image_defs): """ Parameters ---------- info : dict "General information" from the PAR file (as returned by `parse_PAR_header()`). image_defs : array Structured array with image definitions from the PAR file (as returned by `parse_PAR_header()`). """ self.general_info = info self.image_defs = image_defs self._slice_orientation = None # charge with basic properties to be able to use base class # functionality # dtype dtype = np.typeDict[ 'int' + str(self._get_unique_image_prop('image pixel size')[0])] Header.__init__(self, data_dtype=dtype, shape=self.get_data_shape_in_file(), zooms=self._get_zooms() ) @classmethod def from_header(klass, header=None): if header is None: raise PARRECError('Cannot create PARRECHeader from air.') if type(header) == klass: return header.copy() raise PARRECError('Cannot create PARREC header from non-PARREC header.') @classmethod def from_fileobj(klass, fileobj): info, image_defs = parse_PAR_header(fileobj) return klass(info, image_defs) def copy(self): return PARRECHeader( copy.deepcopy(self.general_info), self.image_defs.copy()) def _get_unique_image_prop(self, name): """Scan all image definitions and return the unique value of a property. If the requested property is an array this method behave _not_ like `np.unique`. It will return the unique combination of all array elements for any image definition, and _not_ the unique element values. Raises ------ If there is more than a single unique value a `PARRECError` is raised. """ prop = self.image_defs[name] if len(prop.shape) > 1: uprops = [np.unique(prop[i]) for i in range(len(prop.shape))] else: uprops = [np.unique(prop)] if not np.prod([len(uprop) for uprop in uprops]) == 1: raise PARRECError('Varying %s in image sequence (%s). This is not ' 'suppported.' % (name, uprops)) else: return np.array([uprop[0] for uprop in uprops]) def get_voxel_size(self): """Returns the spatial extent of a voxel. Returns ------- Array """ # slice orientation for the whole image series slice_thickness = self._get_unique_image_prop('slice thickness')[0] voxsize_inplane = self._get_unique_image_prop('pixel spacing') voxsize = np.array((voxsize_inplane[0], voxsize_inplane[1], slice_thickness)) return voxsize def get_ndim(self): """Return the number of dimensions of the image data.""" if self.general_info['max_dynamics'] > 1 \ or self.general_info['max_gradient_orient'] > 1: return 4 else: return 3 def _get_zooms(self): """Compute image zooms from header data. Spatial axis are first three. """ # slice orientation for the whole image series slice_gap = self._get_unique_image_prop('slice gap')[0] # scaling per image axis zooms = np.ones(self.get_ndim()) # spatial axes correspond to voxelsize + inter slice gap # voxel size (inplaneX, inplaneY, slices) zooms[:3] = self.get_voxel_size() zooms[2] += slice_gap # time axis? if len(zooms) > 3 and self.general_info['max_dynamics'] > 1: # DTI also has 4D zooms[3] = self.general_info['repetition_time'] return zooms def get_affine(self, origin='scanner'): """Compute affine transformation into scanner space. The method only considers global rotation and offset settings in the header and ignore potentially deviating information in the image definitions. Parameters ---------- origin : {'scanner', 'fov'} Transformation origin. By default the transformation is computed relative to the scanner's iso center. If 'fov' is requested the transformation origin will be the center of the field of view instead. Returns ------- array 4x4 array, with axis order corresponding to (x,y,z) or (lr, pa, fh). """ # hdr has deg, we need radian # order is [ap, fh, rl] ang_rad = self.general_info['angulation'] * np.pi / 180.0 # need to rotate back from what was given in the file ang_rad *= -1 # R2AGUI approach is this, but it comes with remarks ;-) # % trying to incorporate AP FH RL rotation angles: determined using some # % common sense, Chris Rordon's help + source code and trial and error, # % this is considered EXPERIMENTAL! rot_rl = np.mat( [[1.0, 0.0, 0.0], [0.0, np.cos(ang_rad[2]), -np.sin(ang_rad[2])], [0.0, np.sin(ang_rad[2]), np.cos(ang_rad[2])]] ) rot_ap = np.mat( [[np.cos(ang_rad[0]), 0.0, np.sin(ang_rad[0])], [0.0, 1.0, 0.0], [-np.sin(ang_rad[0]), 0.0, np.cos(ang_rad[0])]] ) rot_fh = np.mat( [[np.cos(ang_rad[1]), -np.sin(ang_rad[1]), 0.0], [np.sin(ang_rad[1]), np.cos(ang_rad[1]), 0.0], [0.0, 0.0, 1.0]] ) rot_r2agui = rot_rl * rot_ap * rot_fh # NiBabel way of doing it # order is [ap, fh, rl] # x y z # 0 1 2 rot_nibabel = euler2mat(ang_rad[1], ang_rad[0], ang_rad[2]) # XXX for now put some safety net, until we have recorded proper # test data with oblique orientations and different readout directions # to verify the order of arguments of euler2mat assert(np.all(rot_r2agui == rot_nibabel)) rot = rot_nibabel # FOV (always in ap, fh, rl) fov = self.general_info['fov'] # voxel size always (inplaneX, inplaneY, slicethickness (without gap)) voxsize = self.get_voxel_size() slice_orientation = self.get_slice_orientation() if slice_orientation == 'sagital': # inplane: AP, FH slices: RL recfg_data_axis = np.mat([[ 0, 0, 1], [ -1, 0, 0], [ 0, -1, 0]]) # fov is already like the data fov = fov elif slice_orientation == 'transversal': # inplane: RL, AP slices: FH recfg_data_axis = np.mat([[ -1, 0, 0], [ 0, -1, 0], [ 0, 0, 1]]) # fov is already like the data fov = fov[[2,0,1]] elif slice_orientation == 'coronal': # inplane: RL, FH slices: AP recfg_data_axis = np.mat([[ -1, 0, 0], [ 0, 0, -1], [ 0, -1, 0]]) # fov is already like the data fov = fov[[2,1,0]] else: raise PARRECError("Unknown slice orientation (%s)." % slice_orientation) rot = rot * recfg_data_axis # ijk origin should be: Anterior, Right, Foot # qform should point to the center of the voxel fov_center_offset = self.get_voxel_size() / 2 - fov / 2 # need to rotate this offset into scanner space fov_center_offset = np.dot(rot, fov_center_offset) # get the scaling by voxelsize and slice thickness (incl. gap) scaled = rot * np.mat(np.diag(self.get_zooms()[:3])) # compose the affine aff = np.eye(4) aff[:3,:3] = scaled # offset aff[:3,3] = fov_center_offset if origin == 'fov': pass elif origin == 'scanner': # offset to scanner's iso center (always in ap, fh, rl) # -- turn into rl, ap, fh and then lr, pa, fh iso_offset = self.general_info['off_center'][[2,0,1]] * [-1,-1,0] aff[:3,3] += iso_offset return aff def get_data_shape_in_file(self): """Return the shape of the binary blob in the REC file. Returns ------- tuple (inplaneX, inplaneY, nslices, ndynamics/ndirections) """ # e.g. number of volumes ndynamics = len(np.unique(self.image_defs['dynamic scan number'])) # DTI volumes (b-values-1 x directions) # there is some awkward exception to this rule for b-values > 2 # XXX need to get test image... ndtivolumes = (self.general_info['max_diffusion_values'] - 1) \ * self.general_info['max_gradient_orient'] nslices = len(np.unique(self.image_defs['slice number'])) if not nslices == self.general_info['max_slices']: raise PARRECError("Header inconsistency: Found %i slices, " "but header claims to have %i." % (nslices, self.general_info['max_slices'])) inplane_shape = tuple(self._get_unique_image_prop('recon resolution')) # there should not be both: multiple dynamics and DTI if ndynamics > 1: return inplane_shape + (nslices, ndynamics) elif ndtivolumes > 1: return inplane_shape + (nslices, ndtivolumes) else: return tuple(inplane_shape) + (nslices,) def get_data_scaling(self, method="dv"): """Returns scaling slope and intercept. Parameters ---------- method : {'fp', 'dv'} Scaling settings to be reported -- see notes below. Notes ----- The PAR header contains two different scaling settings: 'dv' (value on console) and 'fp' (floating point value). Here is how they are defined: PV: value in REC RS: rescale slope RI: rescale intercept SS: scale slope DV = PV * RS + RI FP = DV / (RS * SS) """ # XXX: FP tends to become HUGE, DV seems to be more reasonable -> figure # out which one means what # although the is a per-image scaling in the header, it looks like # there is just one unique factor and intercept per whole image series scale_slope = self._get_unique_image_prop('scale slope') rescale_slope = self._get_unique_image_prop('rescale slope') rescale_intercept = self._get_unique_image_prop('rescale intercept') if method == 'dv': slope = rescale_slope intercept = rescale_intercept elif method == 'fp': # actual slopes per definition above slope = 1.0 / scale_slope # actual intercept per definition above intercept = rescale_intercept / (rescale_slope * scale_slope) else: raise ValueError("Unknown scling method '%s'." % method) return (slope, intercept) def get_slice_orientation(self): """Returns the slice orientation label. Returns ------- {'transversal', 'sagital', 'coronal'} """ if self._slice_orientation is None: self._slice_orientation = \ slice_orientation_codes.label[ self._get_unique_image_prop('slice orientation')[0]] return self._slice_orientation def raw_data_from_fileobj(self, fileobj): """Returns memmap array of raw unscaled image data. Array axes correspond to x,y,z,t. """ # memmap the data -- it is guaranteed to be uncompressed and all # properties are known # read in Fortran order to have spatial axes first data = np.memmap(fileobj, dtype=self.get_data_dtype(), mode='c', # copy-on-write shape=self.get_data_shape_in_file(), order='F') return data def data_from_fileobj(self, fileobj): """Returns scaled image data. Behaves identical to `PARRECHeader.raw_data_from_fileobj()`, but returns scaled image data. This causes the images data to be loaded into memory. """ unscaled = self.raw_data_from_fileobj(fileobj) slope, intercept = self.get_data_scaling() scaled = unscaled * slope scaled += intercept return scaled class PARRECImage(SpatialImage): """PAR/REC image""" header_class = PARRECHeader files_types = (('image', '.rec'), ('header', '.par')) class ImageArrayProxy(object): def __init__(self, rec_fobj, hdr): self._rec_fobj = rec_fobj self._hdr = hdr self._data = None def __array__(self): ''' Cached read of data from file ''' if self._data is None: self._data = self._hdr.data_from_fileobj(self._rec_fobj) return self._data @property def shape(self): # embedded header knows it, without having to touch the data return self._hdr.get_data_shape() @classmethod def from_file_map(klass, file_map): hdr_fobj = file_map['header'].get_prepare_fileobj() rec_fobj = file_map['image'].get_prepare_fileobj() hdr = PARRECHeader.from_fileobj(hdr_fobj) data = klass.ImageArrayProxy(rec_fobj, hdr) return klass(data, hdr.get_affine(), header=hdr, extra=None, file_map=file_map) load = PARRECImage.load nipy-nibabel-d3c26be/nibabel/pkg_info.py000066400000000000000000000053151177264777700203540ustar00rootroot00000000000000import os import sys import subprocess from ConfigParser import ConfigParser COMMIT_INFO_FNAME = 'COMMIT_INFO.txt' def pkg_commit_hash(pkg_path): ''' Get short form of commit hash given directory `pkg_path` There should be a file called 'COMMIT_INFO.txt' in `pkg_path`. This is a file in INI file format, with at least one section: ``commit hash``, and two variables ``archive_subst_hash`` and ``install_hash``. The first has a substitution pattern in it which may have been filled by the execution of ``git archive`` if this is an archive generated that way. The second is filled in by the installation, if the installation is from a git archive. We get the commit hash from (in order of preference): * A substituted value in ``archive_subst_hash`` * A written commit hash value in ``install_hash` * git's output, if we are in a git repository If all these fail, we return a not-found placeholder tuple Parameters ---------- pkg_path : str directory containing package Returns ------- hash_from : str Where we got the hash from - description hash_str : str short form of hash ''' # Try and get commit from written commit text file pth = os.path.join(pkg_path, COMMIT_INFO_FNAME) if not os.path.isfile(pth): raise IOError('Missing commit info file %s' % pth) cfg_parser = ConfigParser() cfg_parser.read(pth) archive_subst = cfg_parser.get('commit hash', 'archive_subst_hash') if not archive_subst.startswith('$Format'): # it has been substituted return 'archive substitution', archive_subst install_subst = cfg_parser.get('commit hash', 'install_hash') if install_subst != '': return 'installation', install_subst # maybe we are in a repository proc = subprocess.Popen('git rev-parse --short HEAD', stdout=subprocess.PIPE, stderr=subprocess.PIPE, cwd=pkg_path, shell=True) repo_commit, _ = proc.communicate() if repo_commit: return 'repository', repo_commit.strip() return '(none found)', '' def get_pkg_info(pkg_path): ''' Return dict describing the context of this package Parameters ---------- pkg_path : str path containing __init__.py for package Returns ------- context : dict with named parameters of interest ''' src, hsh = pkg_commit_hash(pkg_path) import numpy return dict( pkg_path=pkg_path, commit_source=src, commit_hash=hsh, sys_version=sys.version, sys_executable=sys.executable, sys_platform=sys.platform, np_version=numpy.__version__) nipy-nibabel-d3c26be/nibabel/py3k.py000066400000000000000000000034171177264777700174470ustar00rootroot00000000000000""" Python 3 compatibility tools. Copied from numpy/compat/py3k BSD license """ __all__ = ['bytes', 'asbytes', 'isfileobj', 'getexception', 'strchar', 'unicode', 'asunicode', 'asbytes_nested', 'asunicode_nested', 'asstr', 'open_latin1', 'StringIO', 'BytesIO'] import sys if sys.version_info[0] >= 3: import io StringIO = io.StringIO BytesIO = io.BytesIO bytes = bytes unicode = str asunicode = str def asbytes(s): if isinstance(s, bytes): return s return s.encode('latin1') def asstr(s): if isinstance(s, str): return s return s.decode('latin1') def isfileobj(f): return isinstance(f, io.FileIO) def open_latin1(filename, mode='r'): return open(filename, mode=mode, encoding='iso-8859-1') strchar = 'U' ints2bytes = lambda seq : bytes(seq) ZEROB = bytes([0]) else: import StringIO StringIO = BytesIO = StringIO.StringIO bytes = str unicode = unicode asbytes = str asstr = str strchar = 'S' def isfileobj(f): return isinstance(f, file) def asunicode(s): if isinstance(s, unicode): return s return s.decode('ascii') def open_latin1(filename, mode='r'): return open(filename, mode=mode) ints2bytes = lambda seq : ''.join(chr(i) for i in seq) ZEROB = chr(0) def getexception(): return sys.exc_info()[1] def asbytes_nested(x): if hasattr(x, '__iter__') and not isinstance(x, (bytes, unicode)): return [asbytes_nested(y) for y in x] else: return asbytes(x) def asunicode_nested(x): if hasattr(x, '__iter__') and not isinstance(x, (bytes, unicode)): return [asunicode_nested(y) for y in x] else: return asunicode(x) nipy-nibabel-d3c26be/nibabel/quaternions.py000066400000000000000000000323331177264777700211300ustar00rootroot00000000000000# emacs: -*- mode: python-mode; py-indent-offset: 4; indent-tabs-mode: nil -*- # vi: set ft=python sts=4 ts=4 sw=4 et: ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ## # # See COPYING file distributed along with the NiBabel package for the # copyright and license terms. # ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ## ''' Functions to operate on, or return, quaternions. The module also includes functions for the closely related angle, axis pair as a specification for rotation. Quaternions here consist of 4 values ``w, x, y, z``, where ``w`` is the real (scalar) part, and ``x, y, z`` are the complex (vector) part. Note - rotation matrices here apply to column vectors, that is, they are applied on the left of the vector. For example: >>> import numpy as np >>> q = [0, 1, 0, 0] # 180 degree rotation around axis 0 >>> M = quat2mat(q) # from this module >>> vec = np.array([1, 2, 3]).reshape((3,1)) # column vector >>> tvec = np.dot(M, vec) ''' import math import numpy as np MAX_FLOAT = np.maximum_sctype(np.float) FLOAT_EPS = np.finfo(np.float).eps def fillpositive(xyz, w2_thresh=None): ''' Compute unit quaternion from last 3 values Parameters ---------- xyz : iterable iterable containing 3 values, corresponding to quaternion x, y, z w2_thresh : None or float, optional threshold to determine if w squared is really negative. If None (default) then w2_thresh set equal to ``-np.finfo(xyz.dtype).eps``, if possible, otherwise ``-np.finfo(np.float).eps`` Returns ------- wxyz : array shape (4,) Full 4 values of quaternion Notes ----- If w, x, y, z are the values in the full quaternion, assumes w is positive. Gives error if w*w is estimated to be negative w = 0 corresponds to a 180 degree rotation The unit quaternion specifies that np.dot(wxyz, wxyz) == 1. If w is positive (assumed here), w is given by: w = np.sqrt(1.0-(x*x+y*y+z*z)) w2 = 1.0-(x*x+y*y+z*z) can be near zero, which will lead to numerical instability in sqrt. Here we use the system maximum float type to reduce numerical instability Examples -------- >>> import numpy as np >>> wxyz = fillpositive([0,0,0]) >>> np.all(wxyz == [1, 0, 0, 0]) True >>> wxyz = fillpositive([1,0,0]) # Corner case; w is 0 >>> np.all(wxyz == [0, 1, 0, 0]) True >>> np.dot(wxyz, wxyz) 1.0 ''' # Check inputs (force error if < 3 values) if len(xyz) != 3: raise ValueError('xyz should have length 3') # If necessary, guess precision of input if w2_thresh is None: try: # trap errors for non-array, integer array w2_thresh = -np.finfo(xyz.dtype).eps * 3 except (AttributeError, ValueError): w2_thresh = -FLOAT_EPS * 3 # Use maximum precision xyz = np.asarray(xyz, dtype=MAX_FLOAT) # Calculate w w2 = 1.0 - np.dot(xyz, xyz) if w2 < 0: if w2 < w2_thresh: raise ValueError('w2 should be positive, but is %e' % w2) w = 0 else: w = np.sqrt(w2) return np.r_[w, xyz] def quat2mat(q): ''' Calculate rotation matrix corresponding to quaternion Parameters ---------- q : 4 element array-like Returns ------- M : (3,3) array Rotation matrix corresponding to input quaternion *q* Notes ----- Rotation matrix applies to column vectors, and is applied to the left of coordinate vectors. The algorithm here allows non-unit quaternions. References ---------- Algorithm from http://en.wikipedia.org/wiki/Rotation_matrix#Quaternion Examples -------- >>> import numpy as np >>> M = quat2mat([1, 0, 0, 0]) # Identity quaternion >>> np.allclose(M, np.eye(3)) True >>> M = quat2mat([0, 1, 0, 0]) # 180 degree rotn around axis 0 >>> np.allclose(M, np.diag([1, -1, -1])) True ''' w, x, y, z = q Nq = w*w + x*x + y*y + z*z if Nq < FLOAT_EPS: return np.eye(3) s = 2.0/Nq X = x*s Y = y*s Z = z*s wX = w*X; wY = w*Y; wZ = w*Z xX = x*X; xY = x*Y; xZ = x*Z yY = y*Y; yZ = y*Z; zZ = z*Z return np.array( [[ 1.0-(yY+zZ), xY-wZ, xZ+wY ], [ xY+wZ, 1.0-(xX+zZ), yZ-wX ], [ xZ-wY, yZ+wX, 1.0-(xX+yY) ]]) def mat2quat(M): ''' Calculate quaternion corresponding to given rotation matrix Parameters ---------- M : array-like 3x3 rotation matrix Returns ------- q : (4,) array closest quaternion to input matrix, having positive q[0] Notes ----- Method claimed to be robust to numerical errors in M Constructs quaternion by calculating maximum eigenvector for matrix K (constructed from input `M`). Although this is not tested, a maximum eigenvalue of 1 corresponds to a valid rotation. A quaternion q*-1 corresponds to the same rotation as q; thus the sign of the reconstructed quaternion is arbitrary, and we return quaternions with positive w (q[0]). References ---------- * http://en.wikipedia.org/wiki/Rotation_matrix#Quaternion * Bar-Itzhack, Itzhack Y. (2000), "New method for extracting the quaternion from a rotation matrix", AIAA Journal of Guidance, Control and Dynamics 23(6):1085-1087 (Engineering Note), ISSN 0731-5090 Examples -------- >>> import numpy as np >>> q = mat2quat(np.eye(3)) # Identity rotation >>> np.allclose(q, [1, 0, 0, 0]) True >>> q = mat2quat(np.diag([1, -1, -1])) >>> np.allclose(q, [0, 1, 0, 0]) # 180 degree rotn around axis 0 True ''' # Qyx refers to the contribution of the y input vector component to # the x output vector component. Qyx is therefore the same as # M[0,1]. The notation is from the Wikipedia article. Qxx, Qyx, Qzx, Qxy, Qyy, Qzy, Qxz, Qyz, Qzz = M.flat # Fill only lower half of symmetric matrix K = np.array([ [Qxx - Qyy - Qzz, 0, 0, 0 ], [Qyx + Qxy, Qyy - Qxx - Qzz, 0, 0 ], [Qzx + Qxz, Qzy + Qyz, Qzz - Qxx - Qyy, 0 ], [Qyz - Qzy, Qzx - Qxz, Qxy - Qyx, Qxx + Qyy + Qzz]] ) / 3.0 # Use Hermitian eigenvectors, values for speed vals, vecs = np.linalg.eigh(K) # Select largest eigenvector, reorder to w,x,y,z quaternion q = vecs[[3, 0, 1, 2], np.argmax(vals)] # Prefer quaternion with positive w # (q * -1 corresponds to same rotation as q) if q[0] < 0: q *= -1 return q def mult(q1, q2): ''' Multiply two quaternions Parameters ---------- q1 : 4 element sequence q2 : 4 element sequence Returns ------- q12 : shape (4,) array Notes ----- See : http://en.wikipedia.org/wiki/Quaternions#Hamilton_product ''' w1, x1, y1, z1 = q1 w2, x2, y2, z2 = q2 w = w1*w2 - x1*x2 - y1*y2 - z1*z2 x = w1*x2 + x1*w2 + y1*z2 - z1*y2 y = w1*y2 + y1*w2 + z1*x2 - x1*z2 z = w1*z2 + z1*w2 + x1*y2 - y1*x2 return np.array([w, x, y, z]) def conjugate(q): ''' Conjugate of quaternion Parameters ---------- q : 4 element sequence w, i, j, k of quaternion Returns ------- conjq : array shape (4,) w, i, j, k of conjugate of `q` ''' return np.array(q) * np.array([1.0, -1, -1, -1]) def norm(q): ''' Return norm of quaternion Parameters ---------- q : 4 element sequence w, i, j, k of quaternion Returns ------- n : scalar quaternion norm ''' return np.dot(q, q) def isunit(q): ''' Return True is this is very nearly a unit quaternion ''' return np.allclose(norm(q), 1) def inverse(q): ''' Return multiplicative inverse of quaternion `q` Parameters ---------- q : 4 element sequence w, i, j, k of quaternion Returns ------- invq : array shape (4,) w, i, j, k of quaternion inverse ''' return conjugate(q) / norm(q) def eye(): ''' Return identity quaternion ''' return np.array([1.0,0,0,0]) def rotate_vector(v, q): ''' Apply transformation in quaternion `q` to vector `v` Parameters ---------- v : 3 element sequence 3 dimensional vector q : 4 element sequence w, i, j, k of quaternion Returns ------- vdash : array shape (3,) `v` rotated by quaternion `q` Notes ----- See: http://en.wikipedia.org/wiki/Quaternions_and_spatial_rotation#Describing_rotations_with_quaternions ''' varr = np.zeros((4,)) varr[1:] = v return mult(q, mult(varr, conjugate(q)))[1:] def nearly_equivalent(q1, q2, rtol=1e-5, atol=1e-8): ''' Returns True if `q1` and `q2` give near equivalent transforms q1 may be nearly numerically equal to q2, or nearly equal to q2 * -1 (becuase a quaternion multiplied by -1 gives the same transform). Parameters ---------- q1 : 4 element sequence w, x, y, z of first quaternion q2 : 4 element sequence w, x, y, z of second quaternion Returns ------- equiv : bool True if `q1` and `q2` are nearly equivalent, False otherwise Examples -------- >>> q1 = [1, 0, 0, 0] >>> nearly_equivalent(q1, [0, 1, 0, 0]) False >>> nearly_equivalent(q1, [1, 0, 0, 0]) True >>> nearly_equivalent(q1, [-1, 0, 0, 0]) True ''' q1 = np.array(q1) q2 = np.array(q2) if np.allclose(q1, q2, rtol, atol): return True return np.allclose(q1 * -1, q2, rtol, atol) def angle_axis2quat(theta, vector, is_normalized=False): ''' Quaternion for rotation of angle `theta` around `vector` Parameters ---------- theta : scalar angle of rotation vector : 3 element sequence vector specifying axis for rotation. is_normalized : bool, optional True if vector is already normalized (has norm of 1). Default False Returns ------- quat : 4 element sequence of symbols quaternion giving specified rotation Examples -------- >>> q = angle_axis2quat(np.pi, [1, 0, 0]) >>> np.allclose(q, [0, 1, 0, 0]) True Notes ----- Formula from http://mathworld.wolfram.com/EulerParameters.html ''' vector = np.array(vector) if not is_normalized: # Cannot divide in-place because input vector may be integer type, # whereas output will be float type; this may raise an error in versions # of numpy > 1.6.1 vector = vector / math.sqrt(np.dot(vector, vector)) t2 = theta / 2.0 st2 = math.sin(t2) return np.concatenate(([math.cos(t2)], vector * st2)) def angle_axis2mat(theta, vector, is_normalized=False): ''' Rotation matrix of angle `theta` around `vector` Parameters ---------- theta : scalar angle of rotation vector : 3 element sequence vector specifying axis for rotation. is_normalized : bool, optional True if vector is already normalized (has norm of 1). Default False Returns ------- mat : array shape (3,3) rotation matrix specified rotation Notes ----- From: http://en.wikipedia.org/wiki/Rotation_matrix#Axis_and_angle ''' x, y, z = vector if not is_normalized: n = math.sqrt(x*x + y*y + z*z) x = x/n y = y/n z = z/n c = math.cos(theta); s = math.sin(theta); C = 1-c xs = x*s; ys = y*s; zs = z*s xC = x*C; yC = y*C; zC = z*C xyC = x*yC; yzC = y*zC; zxC = z*xC return np.array([ [ x*xC+c, xyC-zs, zxC+ys ], [ xyC+zs, y*yC+c, yzC-xs ], [ zxC-ys, yzC+xs, z*zC+c ]]) def quat2angle_axis(quat, identity_thresh=None): ''' Convert quaternion to rotation of angle around axis Parameters ---------- quat : 4 element sequence w, x, y, z forming quaternion identity_thresh : None or scalar, optional threshold below which the norm of the vector part of the quaternion (x, y, z) is deemed to be 0, leading to the identity rotation. None (the default) leads to a threshold estimated based on the precision of the input. Returns ------- theta : scalar angle of rotation vector : array shape (3,) axis around which rotation occurs Examples -------- >>> theta, vec = quat2angle_axis([0, 1, 0, 0]) >>> np.allclose(theta, np.pi) True >>> vec array([ 1., 0., 0.]) If this is an identity rotation, we return a zero angle and an arbitrary vector >>> quat2angle_axis([1, 0, 0, 0]) (0.0, array([ 1., 0., 0.])) Notes ----- A quaternion for which x, y, z are all equal to 0, is an identity rotation. In this case we return a 0 angle and an arbitrary vector, here [1, 0, 0] ''' w, x, y, z = quat vec = np.asarray([x, y, z]) if identity_thresh is None: try: identity_thresh = np.finfo(vec.dtype).eps * 3 except ValueError: # integer type identity_thresh = FLOAT_EPS * 3 n = math.sqrt(x*x + y*y + z*z) if n < identity_thresh: # if vec is nearly 0,0,0, this is an identity rotation return 0.0, np.array([1.0, 0, 0]) return 2 * math.acos(w), vec / n nipy-nibabel-d3c26be/nibabel/spatialimages.py000066400000000000000000000446071177264777700214120ustar00rootroot00000000000000# emacs: -*- mode: python-mode; py-indent-offset: 4; indent-tabs-mode: nil -*- # vi: set ft=python sts=4 ts=4 sw=4 et: ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ## # # See COPYING file distributed along with the NiBabel package for the # copyright and license terms. # ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ## ''' Very simple spatial image class The image class maintains the association between a 3D (or greater) array, and an affine transform that maps voxel coordinates to some real world space. It also has a ``header`` - some standard set of meta-data that is specific to the image format - and ``extra`` - a dictionary container for any other metadata. It has attributes: * extra methods: * .get_data() * .get_affine() * .get_header() * .set_shape(shape) * .to_filename(fname) - writes data to filename(s) derived from ``fname``, where the derivation may differ between formats. * to_file_map() - save image to files with which the image is already associated. * .get_shape() (Deprecated) properties: * shape classmethods: * from_filename(fname) - make instance by loading from filename * instance_to_filename(img, fname) - save ``img`` instance to filename ``fname``. There are several ways of writing data. ======================================= There is the usual way, which is the default:: img.to_filename(fname) and that is, to take the data encapsulated by the image and cast it to the datatype the header expects, setting any available header scaling into the header to help the data match. You can load the data into an image from file with:: img.from_filename(fname) The image stores its associated files in its ``files`` attribute. In order to just save an image, for which you know there is an associated filename, or other storage, you can do:: img.to_file_map() You can get the data out again with of:: img.get_data() Less commonly, for some image types that support it, you might want to fetch out the unscaled array via the header:: unscaled_data = img.get_unscaled_data() Analyze-type images (including nifti) support this, but others may not (MINC, for example). Sometimes you might to avoid any loss of precision by making the data type the same as the input:: hdr = img.get_header() hdr.set_data_dtype(data.dtype) img.to_filename(fname) Files interface =============== The image has an attribute ``file_map``. This is a mapping, that has keys corresponding to the file types that an image needs for storage. For example, the Analyze data format needs an ``image`` and a ``header`` file type for storage: >>> import nibabel as nib >>> data = np.arange(24, dtype='f4').reshape((2,3,4)) >>> img = nib.AnalyzeImage(data, np.eye(4)) >>> sorted(img.file_map) ['header', 'image'] The values of ``file_map`` are not in fact files but objects with attributes ``filename``, ``fileobj`` and ``pos``. The reason for this interface, is that the contents of files has to contain enough information so that an existing image instance can save itself back to the files pointed to in ``file_map``. When a file holder holds active file-like objects, then these may be affected by the initial file read; in this case, the contains file-like objects need to carry the position at which a write (with ``to_files``) should place the data. The ``file_map`` contents should therefore be such, that this will work: >>> # write an image to files >>> from StringIO import StringIO #23dt : BytesIO >>> file_map = nib.AnalyzeImage.make_file_map() >>> file_map['image'].fileobj = StringIO() #23dt : BytesIO >>> file_map['header'].fileobj = StringIO() #23dt : BytesIO >>> img = nib.AnalyzeImage(data, np.eye(4)) >>> img.file_map = file_map >>> img.to_file_map() >>> # read it back again from the written files >>> img2 = nib.AnalyzeImage.from_file_map(file_map) >>> np.all(img2.get_data() == data) True >>> # write, read it again >>> img2.to_file_map() >>> img3 = nib.AnalyzeImage.from_file_map(file_map) >>> np.all(img3.get_data() == data) True ''' import warnings import numpy as np from .filename_parser import types_filenames, TypesFilenamesError from .fileholders import FileHolder from .volumeutils import shape_zoom_affine class HeaderDataError(Exception): ''' Class to indicate error in getting or setting header data ''' pass class HeaderTypeError(Exception): ''' Class to indicate error in parameters into header functions ''' pass class Header(object): ''' Template class to implement header protocol ''' default_x_flip = True def __init__(self, data_dtype=np.float32, shape=(0,), zooms=None): self.set_data_dtype(data_dtype) self._zooms = () self.set_data_shape(shape) if not zooms is None: self.set_zooms(zooms) @classmethod def from_header(klass, header=None): if header is None: return klass() # I can't do isinstance here because it is not necessarily true # that a subclass has exactly the same interface as it's parent # - for example Nifti1Images inherit from Analyze, but have # different field names if type(header) == klass: return header.copy() return klass(header.get_data_dtype(), header.get_data_shape(), header.get_zooms()) @classmethod def from_fileobj(klass, fileobj): raise NotImplementedError def write_to(self, fileobj): raise NotImplementedError def __eq__(self, other): return ((self.get_data_dtype(), self.get_data_shape(), self.get_zooms()) == (other.get_data_dtype(), other.get_data_shape(), other.get_zooms())) def __ne__(self, other): return not self == other def copy(self): ''' Copy object to independent representation The copy should not be affected by any changes to the original object. ''' return self.__class__(self._dtype, self._shape, self._zooms) def get_data_dtype(self): return self._dtype def set_data_dtype(self, dtype): self._dtype = np.dtype(dtype) def get_data_shape(self): return self._shape def set_data_shape(self, shape): ndim = len(shape) if ndim == 0: self._shape = (0,) self._zooms = (1.0,) return self._shape = tuple([int(s) for s in shape]) # set any unset zooms to 1.0 nzs = min(len(self._zooms), ndim) self._zooms = self._zooms[:nzs] + (1.0,) * (ndim-nzs) def get_zooms(self): return self._zooms def set_zooms(self, zooms): zooms = tuple([float(z) for z in zooms]) shape = self.get_data_shape() ndim = len(shape) if len(zooms) != ndim: raise HeaderDataError('Expecting %d zoom values for ndim %d' % (ndim, ndim)) if len([z for z in zooms if z < 0]): raise HeaderDataError('zooms must be positive') self._zooms = zooms def get_base_affine(self): shape = self.get_data_shape() zooms = self.get_zooms() return shape_zoom_affine(shape, zooms, self.default_x_flip) get_default_affine = get_base_affine def data_to_fileobj(self, data, fileobj): ''' Write image data to file in fortran order ''' dtype = self.get_data_dtype() fileobj.write(data.astype(dtype).tostring(order='F')) def data_from_fileobj(self, fileobj): ''' Read data in fortran order ''' dtype = self.get_data_dtype() shape = self.get_data_shape() data_size = int(np.prod(shape) * dtype.itemsize) data_bytes = fileobj.read(data_size) return np.ndarray(shape, dtype, data_bytes, order='F') class ImageDataError(Exception): pass class ImageFileError(Exception): pass class SpatialImage(object): header_class = Header files_types = (('image', None),) _compressed_exts = () ''' Template class for images ''' def __init__(self, data, affine, header=None, extra=None, file_map=None): ''' Initialize image The image is a combination of (array, affine matrix, header), with optional metadata in `extra`, and filename / file-like objects contained in the `file_map` mapping. Parameters ---------- data : object image data. It should be some object that retuns an array from ``np.asanyarray``. It should have a ``shape`` attribute or property affine : None or (4,4) array-like homogenous affine giving relationship between voxel coordinates and world coordinates. Affine can also be None. In this case, ``obj.get_affine()`` also returns None, and the affine as written to disk will depend on the file format. header : None or mapping or header instance, optional metadata for this image format extra : None or mapping, optional metadata to associate with image that cannot be stored in the metadata of this image type file_map : mapping, optional mapping giving file information for this image format ''' self._data = data if not affine is None: # Check that affine is array-like 4,4. Maybe this is too strict at # this abstract level, but so far I think all image formats we know # do need 4,4. # Copy affine to isolate from environment. Specify float type to # avoid surprising integer rounding when setting values into affine affine = np.array(affine, dtype=np.float64, copy=True) if not affine.shape == (4,4): raise ValueError('Affine should be shape 4,4') self._affine = affine if extra is None: extra = {} self.extra = extra self._header = self.header_class.from_header(header) # if header not specified, get data type from input array if header is None: if hasattr(data, 'dtype'): self._header.set_data_dtype(data.dtype) # make header correspond with image and affine self.update_header() if file_map is None: file_map = self.__class__.make_file_map() self.file_map = file_map self._load_cache = None def update_header(self): ''' Update header from information in image''' self._header.set_data_shape(self._data.shape) def __str__(self): shape = self.shape affine = self.get_affine() return '\n'.join(( str(self.__class__), 'data shape %s' % (shape,), 'affine: ', '%s' % affine, 'metadata:', '%s' % self._header)) def get_data(self): return np.asanyarray(self._data) @property def shape(self): return self._data.shape def get_shape(self): """ Return shape for image This function deprecated; please use the ``shape`` property instead """ warnings.warn('Please use the shape property instead of get_shape', DeprecationWarning, stacklevel=2) return self.shape def get_data_dtype(self): return self._header.get_data_dtype() def set_data_dtype(self, dtype): self._header.set_data_dtype(dtype) def get_affine(self): return self._affine def get_header(self): return self._header def get_filename(self): ''' Fetch the image filename Parameters ---------- None Returns ------- fname : None or str Returns None if there is no filename, or a filename string. If an image may have several filenames assoctiated with it (e.g Analyze ``.img, .hdr`` pair) then we return the more characteristic filename (the ``.img`` filename in the case of Analyze') ''' # which filename is returned depends on the ordering of the # 'files_types' class attribute - we return the name # corresponding to the first in that tuple characteristic_type = self.files_types[0][0] return self.file_map[characteristic_type].filename def set_filename(self, filename): ''' Sets the files in the object from a given filename The different image formats may check whether the filename has an extension characteristic of the format, and raise an error if not. Parameters ---------- filename : str If the image format only has one file associated with it, this will be the only filename set into the image ``.file_map`` attribute. Otherwise, the image instance will try and guess the other filenames from this given filename. ''' self.file_map = self.__class__.filespec_to_file_map(filename) @classmethod def from_filename(klass, filename): file_map = klass.filespec_to_file_map(filename) return klass.from_file_map(file_map) @classmethod def from_filespec(klass, filespec): warnings.warn('``from_filespec`` class method is deprecated\n' 'Please use the ``from_filename`` class method ' 'instead', DeprecationWarning, stacklevel=2) klass.from_filename(filespec) @classmethod def from_file_map(klass, file_map): raise NotImplementedError @classmethod def from_files(klass, file_map): warnings.warn('``from_files`` class method is deprecated\n' 'Please use the ``from_file_map`` class method ' 'instead', DeprecationWarning, stacklevel=2) return klass.from_file_map(file_map) @classmethod def filespec_to_file_map(klass, filespec): try: filenames = types_filenames(filespec, klass.files_types, trailing_suffixes=klass._compressed_exts) except TypesFilenamesError: raise ImageFileError('Filespec "%s" does not look right for ' 'class %s ' % (filespec, klass)) file_map = {} for key, fname in filenames.items(): file_map[key] = FileHolder(filename=fname) return file_map @classmethod def filespec_to_files(klass, filespec): warnings.warn('``filespec_to_files`` class method is deprecated\n' 'Please use the ``filespec_to_file_map`` class method ' 'instead', DeprecationWarning, stacklevel=2) return klass.filespec_to_file_map(filespec) def to_filename(self, filename): ''' Write image to files implied by filename string Parameters ---------- filename : str filename to which to save image. We will parse `filename` with ``filespec_to_file_map`` to work out names for image, header etc. Returns ------- None ''' self.file_map = self.filespec_to_file_map(filename) self.to_file_map() def to_filespec(self, filename): warnings.warn('``to_filespec`` is deprecated, please ' 'use ``to_filename`` instead', DeprecationWarning, stacklevel=2) self.to_filename(filename) def to_file_map(self, file_map=None): raise NotImplementedError def to_files(self, file_map=None): warnings.warn('``to_files`` method is deprecated\n' 'Please use the ``to_file_map`` method ' 'instead', DeprecationWarning, stacklevel=2) self.to_file_map(file_map) @classmethod def make_file_map(klass, mapping=None): ''' Class method to make files holder for this image type Parameters ---------- mapping : None or mapping, optional mapping with keys corresponding to image file types (such as 'image', 'header' etc, depending on image class) and values that are filenames or file-like. Default is None Returns ------- file_map : dict dict with string keys given by first entry in tuples in sequence klass.files_types, and values of type FileHolder, where FileHolder objects have default values, other than those given by `mapping` ''' if mapping is None: mapping = {} file_map = {} for key, ext in klass.files_types: file_map[key] = FileHolder() mapval = mapping.get(key, None) if isinstance(mapval, basestring): file_map[key].filename = mapval elif hasattr(mapval, 'tell'): file_map[key].fileobj = mapval return file_map @classmethod def load(klass, filename): return klass.from_filename(filename) @classmethod def instance_to_filename(klass, img, filename): ''' Save `img` in our own format, to name implied by `filename` This is a class method Parameters ---------- img : ``spatialimage`` instance In fact, an object with the API of ``spatialimage`` - specifically ``get_data``, ``get_affine``, ``get_header`` and ``extra``. filename : str Filename, implying name to which to save image. ''' img = klass.from_image(img) img.to_filename(filename) @classmethod def from_image(klass, img): ''' Class method to create new instance of own class from `img` Parameters ---------- img : ``spatialimage`` instance In fact, an object with the API of ``spatialimage`` - specifically ``get_data``, ``get_affine``, ``get_header`` and ``extra``. Returns ------- cimg : ``spatialimage`` instance Image, of our own class ''' return klass(img.get_data(), img.get_affine(), klass.header_class.from_header(img.get_header()), extra=img.extra.copy()) nipy-nibabel-d3c26be/nibabel/spm2analyze.py000066400000000000000000000113121177264777700210170ustar00rootroot00000000000000# emacs: -*- mode: python-mode; py-indent-offset: 4; indent-tabs-mode: nil -*- # vi: set ft=python sts=4 ts=4 sw=4 et: ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ## # # See COPYING file distributed along with the NiBabel package for the # copyright and license terms. # ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ## ''' Header reading functions for SPM2 version of analyze format ''' import numpy as np from .spatialimages import HeaderDataError from .batteryrunners import Report from . import spm99analyze as spm99 # module import image_dimension_dtd = spm99.image_dimension_dtd[:] image_dimension_dtd[ image_dimension_dtd.index(('funused2', 'f4')) ] = ('scl_inter', 'f4') # Full header numpy dtype combined across sub-fields header_dtype = np.dtype(spm99.header_key_dtd + image_dimension_dtd + spm99.data_history_dtd) class Spm2AnalyzeHeader(spm99.Spm99AnalyzeHeader): ''' SPM2 header; adds possibility of reading, but not writing DC offset for data''' # Copies of module level definitions template_dtype = header_dtype def get_slope_inter(self): ''' Get data scaling (slope) and offset (intercept) from header data Uses the algorithm from SPM2 spm_vol_ana.m by John Ashburner Parameters ---------- self : header Mapping with fields: * scl_slope - slope * scl_inter - possible intercept (SPM2 use - shared by nifti) * glmax - the (recorded) maximum value in the data (unscaled) * glmin - recorded minimum unscaled value * cal_max - the calibrated (scaled) maximum value in the dataset * cal_min - ditto minimum value Returns ------- scl_slope : None or float scaling (slope). None if there is no valid scaling from these fields scl_inter : None or float offset (intercept). Also None if there is no valid scaling, offset Examples -------- >>> fields = {'scl_slope':1,'scl_inter':0,'glmax':0,'glmin':0,'cal_max':0, 'cal_min':0} >>> hdr = Spm2AnalyzeHeader() >>> for key, value in fields.items(): ... hdr[key] = value >>> hdr.get_slope_inter() (1.0, 0.0) >>> hdr['scl_inter'] = 0.5 >>> hdr.get_slope_inter() (1.0, 0.5) >>> hdr['scl_inter'] = np.nan >>> hdr.get_slope_inter() (1.0, 0.0) If 'scl_slope' is 0, nan or inf, cannot use 'scl_slope'. Without valid information in the gl / cal fields, we cannot get scaling, and return None >>> hdr['scl_slope'] = 0 >>> hdr.get_slope_inter() (None, None) >>> hdr['scl_slope'] = np.nan >>> hdr.get_slope_inter() (None, None) Valid information in the gl AND cal fields are needed >>> hdr['cal_max'] = 0.8 >>> hdr['cal_min'] = 0.2 >>> hdr.get_slope_inter() (None, None) >>> hdr['glmax'] = 110 >>> hdr['glmin'] = 10 >>> np.allclose(hdr.get_slope_inter(), [0.6/100, 0.2-0.6/100*10]) True ''' # get scaling factor from 'scl_slope' (funused1) scale = float(self['scl_slope']) if np.isfinite(scale) and scale: # try to get offset from scl_inter dc_offset = float(self['scl_inter']) if not np.isfinite(dc_offset): dc_offset = 0.0 return scale, dc_offset # no non-zero and finite scaling, try gl/cal fields unscaled_range = self['glmax'] - self['glmin'] scaled_range = self['cal_max'] - self['cal_min'] if unscaled_range and scaled_range: scale = float(scaled_range) / unscaled_range dc_offset = self['cal_min'] - scale * self['glmin'] return scale, dc_offset return None, None @classmethod def _chk_scale(klass, hdr, fix=True): rep = Report(HeaderDataError) scale, offset = hdr.get_slope_inter() # scl_slope of 0 is valid and implies no scaling OR intercept if not scale is None or hdr['scl_slope'] == 0: return hdr, rep rep.problem_level = 30 rep.problem_msg = ('no valid scaling in scalefactor (=%s) ' 'or cal / gl fields; scalefactor assumed 1.0' % scale) if fix: hdr['scl_slope'] = 1 rep.fix_msg = 'setting scalefactor "scl_slope" to 1' return hdr, rep class Spm2AnalyzeImage(spm99.Spm99AnalyzeImage): header_class = Spm2AnalyzeHeader load = Spm2AnalyzeImage.load save = Spm2AnalyzeImage.instance_to_filename nipy-nibabel-d3c26be/nibabel/spm99analyze.py000066400000000000000000000260171177264777700211270ustar00rootroot00000000000000# emacs: -*- mode: python-mode; py-indent-offset: 4; indent-tabs-mode: nil -*- # vi: set ft=python sts=4 ts=4 sw=4 et: ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ## # # See COPYING file distributed along with the NiBabel package for the # copyright and license terms. # ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ## ''' Header reading functions for SPM version of analyze format ''' import warnings import numpy as np from .py3k import BytesIO from .spatialimages import HeaderDataError, HeaderTypeError from .batteryrunners import Report from . import analyze # module import ''' Support subtle variations of SPM version of Analyze ''' header_key_dtd = analyze.header_key_dtd # funused1 in dime subfield is scalefactor image_dimension_dtd = analyze.image_dimension_dtd[:] image_dimension_dtd[ image_dimension_dtd.index(('funused1', 'f4')) ] = ('scl_slope', 'f4') # originator text field used as image origin (translations) data_history_dtd = analyze.data_history_dtd[:] data_history_dtd[ data_history_dtd.index(('originator', 'S10')) ] = ('origin', 'i2', (5,)) # Full header numpy dtype combined across sub-fields header_dtype = np.dtype(header_key_dtd + image_dimension_dtd + data_history_dtd) class SpmAnalyzeHeader(analyze.AnalyzeHeader): ''' Basic scaling Spm Analyze header ''' # Copies of module level definitions template_dtype = header_dtype # data scaling capabilities has_data_slope = True has_data_intercept = False @classmethod def default_structarr(klass, endianness=None): ''' Create empty header binary block with given endianness ''' hdr_data = super(SpmAnalyzeHeader, klass).default_structarr(endianness) hdr_data['scl_slope'] = 1 return hdr_data def get_slope_inter(self): ''' Get scalefactor and intercept If scalefactor is 0.0 return None to indicate no scalefactor. Intercept is always None because SPM99 analyze cannot store intercepts. ''' slope = self._structarr['scl_slope'] if slope == 0.0: return None, None return slope, None def set_slope_inter(self, slope, inter=None): ''' Set slope and / or intercept into header Set slope and intercept for image data, such that, if the image data is ``arr``, then the scaled image data will be ``(arr * slope) + inter`` Note that the SPM Analyze header can't save an intercept value, and we raise an error for ``inter != 0`` Parameters ---------- slope : None or float If None, implies `slope` of 1.0, `inter` of 0.0 (i.e. no scaling of the image data). If `slope` is not, we ignore the passed value of `inter` inter : None or float, optional intercept (dc offset). If float, must be 0, because SPM99 cannot store intercepts. ''' if slope is None: slope = 0.0 self._structarr['scl_slope'] = slope if inter is None or inter == 0: return raise HeaderTypeError('Cannot set non-zero intercept ' 'for SPM headers') @classmethod def _get_checks(klass): checks = super(SpmAnalyzeHeader, klass)._get_checks() return checks + (klass._chk_scale,) @staticmethod def _chk_scale(hdr, fix=False): rep = Report(HeaderDataError) scale = hdr['scl_slope'] if np.isfinite(scale): return hdr, rep rep.problem_level = 30 rep.problem_msg = ('scale slope is %s; should be finite' % scale) if fix: hdr['scl_slope'] = 1 rep.fix_msg = 'setting scalefactor "scl_slope" to 1' return hdr, rep class Spm99AnalyzeHeader(SpmAnalyzeHeader): ''' Adds origin functionality to base SPM header ''' def get_origin_affine(self): ''' Get affine from header, using SPM origin field if sensible The default translations are got from the ``origin`` field, if set, or from the center of the image otherwise. Examples -------- >>> hdr = Spm99AnalyzeHeader() >>> hdr.set_data_shape((3, 5, 7)) >>> hdr.set_zooms((3, 2, 1)) >>> hdr.default_x_flip True >>> hdr.get_origin_affine() # from center of image array([[-3., 0., 0., 3.], [ 0., 2., 0., -4.], [ 0., 0., 1., -3.], [ 0., 0., 0., 1.]]) >>> hdr['origin'][:3] = [3,4,5] >>> hdr.get_origin_affine() # using origin array([[-3., 0., 0., 6.], [ 0., 2., 0., -6.], [ 0., 0., 1., -4.], [ 0., 0., 0., 1.]]) >>> hdr['origin'] = 0 # unset origin >>> hdr.set_data_shape((3, 5, 7)) >>> hdr.get_origin_affine() # from center of image array([[-3., 0., 0., 3.], [ 0., 2., 0., -4.], [ 0., 0., 1., -3.], [ 0., 0., 0., 1.]]) ''' hdr = self._structarr zooms = hdr['pixdim'][1:4].copy() if self.default_x_flip: zooms[0] *= -1 # Get translations from origin, or center of image # Remember that the origin is for matlab (1-based indexing) origin = hdr['origin'][:3] dims = hdr['dim'][1:4] if (np.any(origin) and np.all(origin > -dims) and np.all(origin < dims*2)): origin = origin-1 else: origin = (dims-1) / 2.0 aff = np.eye(4) aff[:3, :3] = np.diag(zooms) aff[:3, -1] = -origin * zooms return aff get_best_affine = get_origin_affine def set_origin_from_affine(self, affine): ''' Set SPM origin to header from affine matrix. The ``origin`` field was read but not written by SPM99 and 2. It was used for storing a central voxel coordinate, that could be used in aligning the image to some standard position - a proxy for a full translation vector that was usually stored in a separate matlab .mat file. Nifti uses the space occupied by the SPM ``origin`` field for important other information (the transform codes), so writing the origin will make the header a confusing Nifti file. If you work with both Analyze and Nifti, you should probably avoid doing this. Parameters ---------- affine : array-like, shape (4,4) Affine matrix to set Returns ------- None Examples -------- >>> hdr = Spm99AnalyzeHeader() >>> hdr.set_data_shape((3, 5, 7)) >>> hdr.set_zooms((3,2,1)) >>> hdr.get_origin_affine() array([[-3., 0., 0., 3.], [ 0., 2., 0., -4.], [ 0., 0., 1., -3.], [ 0., 0., 0., 1.]]) >>> affine = np.diag([3,2,1,1]) >>> affine[:3,3] = [-6, -6, -4] >>> hdr.set_origin_from_affine(affine) >>> np.all(hdr['origin'][:3] == [3,4,5]) True >>> hdr.get_origin_affine() array([[-3., 0., 0., 6.], [ 0., 2., 0., -6.], [ 0., 0., 1., -4.], [ 0., 0., 0., 1.]]) ''' if affine.shape != (4, 4): raise ValueError('Need 4x4 affine to set') hdr = self._structarr RZS = affine[:3, :3] Z = np.sqrt(np.sum(RZS * RZS, axis=0)) T = affine[:3, 3] # Remember that the origin is for matlab (1-based) indexing hdr['origin'][:3] = -T / Z + 1 @classmethod def _get_checks(klass): checks = super(Spm99AnalyzeHeader, klass)._get_checks() return checks + (klass._chk_origin,) @staticmethod def _chk_origin(hdr, fix=False): rep = Report(HeaderDataError) origin = hdr['origin'][0:3] dims = hdr['dim'][1:4] if (not np.any(origin) or (np.all(origin > -dims) and np.all(origin < dims*2))): return hdr, rep rep.problem_level = 20 rep.problem_msg = 'very large origin values relative to dims' if fix: rep.fix_msg = 'leaving as set, ignoring for affine' return hdr, rep class Spm99AnalyzeImage(analyze.AnalyzeImage): header_class = Spm99AnalyzeHeader files_types = (('image', '.img'), ('header', '.hdr'), ('mat','.mat')) @classmethod def from_file_map(klass, file_map): ret = super(Spm99AnalyzeImage, klass).from_file_map(file_map) try: matf = file_map['mat'].get_prepare_fileobj() except IOError: return ret # Allow for possibility of empty file -> no update to affine contents = matf.read() if file_map['mat'].filename is not None: # was filename matf.close() if len(contents) == 0: return ret import scipy.io as sio mats = sio.loadmat(BytesIO(contents)) if 'mat' in mats: # this overrides a 'M', and includes any flip mat = mats['mat'] if mat.ndim > 2: warnings.warn('More than one affine in "mat" matrix, ' 'using first') mat = mat[:, :, 0] ret._affine = mat elif 'M' in mats: # the 'M' matrix does not include flips hdr = ret._header if hdr.default_x_flip: ret._affine = np.dot(np.diag([-1, 1, 1, 1]), mats['M']) else: ret._affine = mats['M'] else: raise ValueError('mat file found but no "mat" or "M" in it') # Adjust for matlab 1,1,1 voxel origin to_111 = np.eye(4) to_111[:3,3] = 1 ret._affine = np.dot(ret._affine, to_111) return ret def to_file_map(self, file_map=None): ''' Write image to `file_map` or contained ``self.file_map`` Extends Analyze ``to_file_map`` method by writing ``mat`` file Parameters ---------- file_map : None or mapping, optional files mapping. If None (default) use object's ``file_map`` attribute instead ''' if file_map is None: file_map = self.file_map super(Spm99AnalyzeImage, self).to_file_map(file_map) mat = self._affine if mat is None: return import scipy.io as sio hdr = self._header if hdr.default_x_flip: M = np.dot(np.diag([-1, 1, 1, 1]), mat) else: M = mat # Adjust for matlab 1,1,1 voxel origin from_111 = np.eye(4) from_111[:3,3] = -1 M = np.dot(M, from_111) mat = np.dot(mat, from_111) # use matlab 4 format to allow gzipped write without error mfobj = file_map['mat'].get_prepare_fileobj(mode='wb') sio.savemat(mfobj, {'M': M, 'mat': mat}, format='4') if file_map['mat'].filename is not None: # was filename mfobj.close() load = Spm99AnalyzeImage.load save = Spm99AnalyzeImage.instance_to_filename nipy-nibabel-d3c26be/nibabel/testing/000077500000000000000000000000001177264777700176575ustar00rootroot00000000000000nipy-nibabel-d3c26be/nibabel/testing/__init__.py000066400000000000000000000020201177264777700217620ustar00rootroot00000000000000# emacs: -*- mode: python-mode; py-indent-offset: 4; indent-tabs-mode: nil -*- # vi: set ft=python sts=4 ts=4 sw=4 et: ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ## # # See COPYING file distributed along with the NiBabel package for the # copyright and license terms. # ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ## ''' Utilities for testing ''' from os.path import dirname, abspath, join as pjoin import numpy as np # set path to example data data_path = abspath(pjoin(dirname(__file__), '..', 'tests', 'data')) # Allow failed import of nose if not now running tests try: import nose.tools as nt except ImportError: pass else: from nose.tools import (assert_equal, assert_not_equal, assert_true, assert_false, assert_raises) def assert_dt_equal(a, b): """ Assert two numpy dtype specifiers are equal Avoids failed comparison between int32 / int64 and intp """ assert_equal(np.dtype(a).str, np.dtype(b).str) nipy-nibabel-d3c26be/nibabel/tests/000077500000000000000000000000001177264777700173445ustar00rootroot00000000000000nipy-nibabel-d3c26be/nibabel/tests/__init__.py000066400000000000000000000000001177264777700214430ustar00rootroot00000000000000nipy-nibabel-d3c26be/nibabel/tests/data/000077500000000000000000000000001177264777700202555ustar00rootroot00000000000000nipy-nibabel-d3c26be/nibabel/tests/data/0.dcm000066400000000000000000006721261177264777700211170ustar00rootroot00000000000000\DICMULOBUI1.2.840.10008.5.1.4.1.1.4UI41.3.12.2.1107.5.2.32.35119.2010011420300180088599504UI1.2.840.10008.1.2UI"1.2.826.0.2.202387.1969.9.22.4.0.0SH DJ-v4.5.0WinAE ISO_IR 100*ORIGINAL\PRIMARY\DIFFUSION\NONE\ND\MOSAIC 20100114203001.890000 1.2.840.10008.5.1.4.1.1.461.3.12.2.1107.5.2.32.35119.2010011420300180088599504.0 20100114!20100114"20100114#201001140121314.000000 1203001.890000 2202959.925000 3203001.890000 P`MRpSIEMENS MRC351190CBU^Neuroimaging>CBU_DTI_64D_1APpMCTrioTim @P1.2.840.10008.5.1.4.1.1.4U41.3.12.2.1107.5.2.32.35119.2010011420070434054586384 P1.2.840.10008.5.1.4.1.1.4U41.3.12.2.1107.5.2.32.35119.2010011420070721803086388 P1.2.840.10008.5.1.4.1.1.4U41.3.12.2.1107.5.2.32.35119.201001142007109937386392 dft patient name 1234019800102@F 0 EP!SK\SP "PFP\FS#2D$ep_b0 %N P2.500000 6600.000000  93.000000 1.000000 123.2518151H1 3.0000003.000000102 1  100.000000 100.000000 1395.000000 35119   syngo MR B170CBU_DTI_64D_1AQBodyCOL  90.000000 N 0.4216660.000000QHFS SIEMENS MR HEADER  IMAGE NUM 4  1.0  0 40 0   DIRECTIONAL Fast* No  0\0\0 (Ȩ''ȉ!?R6.48751 2800(Gz3@) W@*θ@ D@*@/@ @@ @*@}@*@j@ ݲ@T@ ʱ@*A@@*,@E@1@U@@U@@ͨ@U@@U@}@i@W@>@U,@2@̫ @ܙ@4T@@4Ti@̫D@(@W܉@@gC@2y@P/q@d^0a@ 81.3.12.2.1107.5.2.32.35119.30000010011408520750000000022 :1.3.12.2.1107.5.2.32.35119.2010011420292594820699190.0.0.0 1 12 1 1 2-805.0\-825.019119\-75.097641 761.000000\0.000000\0.000000\0.000000\0.999986\-0.005236 R41.3.12.2.1107.5.2.32.35119.1.20100114195840906.0.0.0 @ A -79.416382(( MONOCHROME2 (((01.796875\1.796875 (41\1 (( ( ((((P 468.000000(Q 1016.000000 (UAlgo1 )SIEMENS CSA HEADER)SIEMENS MEDCOM HEADER2) IMAGE NUM 4 ) 20100114)(-SV10SMEchoLinePosition10a4d=15eb  MRC35119 8  ISM M 64 EchoColumnPositiona=  #a_pSgKXZ][d! 1mmjhP.+Ybfo qll?BISM M 64 EchoPartitionPosition  }rrctuyv wxsrtjp FryISM M 32 UsedChannelMask  UL M M 4095 Actual3DImaPartNumberN~^asiDghvOISICE_Dims LOMMX_1_1_1_1_1_1_48_1_1_1_1_201B_value %!sW%#  RH:- N$ "RGenPat$$10aISM M 0 Filter1Kuoclw\ifbn (nljlnqdbow8 4pjntyfmfk01 EygoLISFilter2 t|u wvISProtocolSliceNumber ;).   \  ) 8ISM M 0 RealDwellTimepukefo  %|prlqndh7 $9{uvnmne mrtISM M 2800 PixelFileyx~P$ WF %m  UNPixelFileNamem=``UNSliceMeasurementDuration[?9 U !n(!nDSM M 40.00000000SequenceMask0g[H5^UL M M 134217732AcquisitionMatrixTextenPat$$10a50$5eb$MRC35119b051fac(hESHM M 128p*128MeasuredFourierLines6)tISM M 0 FlowEncodingDirectionouM>D$(BISFlowVenc#+hhJO&%  &FDPhaseEncodingDirectionPositiveN27245#".ISM M 1 NumberOfImagesInMosaicK>)_, $Am{jgGUS M M 48 DiffusionGradientDirection@Q CR*FDImageGroup!n(!n;^US SliceNormalVectorfH5^:RM!GenPat$$10a5FDM M 0.00000000 M 0.00523632 M 0.99998629DiffusionDirectionality($7" |V U hgNCSM M DIRECTIONALTimeAfterStart """hgNDSM M 6.48750000FlipAngle se"" EEDSSequenceName ""SEEhgNSHRepetitionTimehgN hgNseqDSEchoTime < DSNumberOfAveragesRAD.bSehgNDSVoxelThicknessDSVoxelPhaseFOVEvLDSVoxelReadoutFOVEvLDSVoxelPositionSagEvLDSVoxelPositionCorEvLDSVoxelPositionTraEvLDSVoxelNormalSagEvLDSVoxelNormalCorEvLDSVoxelNormalTraEvLDSVoxelInPlaneRotEvLDSImagePositionPatientEvLDSImageOrientationPatientEvLDSPixelSpacingEvLDSSliceLocationEvLDSSliceThicknessEvLDSSpectrumTextRegionLabelEvLSHComp_AlgorithmEvLISComp_BlendedEvLISComp_ManualAdjustedEvLISComp_AutoParamEvLLTComp_AdjustedParamEvLLTComp_JobIDEvLLTFMRIStimulInfoEvLISFlowEncodingDirectionStringEvLSHRepetitionTimeEffectiveEvLDSCsiImagePositionPatientEvLDSCsiImageOrientationPatientEvLDSCsiPixelSpacingEvLDSCsiSliceLocationEvLDSCsiSliceThicknessEvLDSOriginalSeriesNumberEvLISOriginalImageNumberEvLISImaAbsTablePositionEvLSLM M 0 M 0 M -1252 NonPlanarImageEvLUS M M 0 MoCoQMeasureEvLUS LQAlgorithmEvLSHSlicePosition_PCSEvLFDMM-805.00000000M-825.01911853 M -75.09764090RBMoCoTransEvLFDRBMoCoRotEvLFDMultistepIndexEvLISM M 0 ImaRelTablePositionEvLISM M 0 M 0 M 0 ImaCoilStringEvLLOM M T:HEA;HEPRFSWDDataTypeEvLSHM M predictedGSWDDataTypeEvLSHM M predictedNormalizeManipulatedEvLISImaPATModeTextEvLLOMMp2B_matrixEvLFDBandwidthPerPixelPhaseEncodeEvLFDM M 19.05500000FMRIStimulLevelEvLFDMosaicRefAcqTimesEvLFD0MM6487.49999999M6350.00000001M6212.49999999M6072.50000001M5935.00000000M5797.49999999M5660.00000000M5522.49999999M5382.50000001M5245.00000000M5107.50000001M4970.00000000M4829.99999999M4692.50000000M4554.99999999M4417.50000001M4280.00000000M4140.00000001M4002.50000000M3864.99999999M3727.50000001M3587.49999999M3450.00000001M3312.50000000M3174.99999999M3037.50000001M2897.49999999M2760.00000001M2622.50000000M2484.99999999M2347.50000000M2207.49999999M2070.00000001M1932.50000000M1795.00000001M1655.00000000M1517.49999999M1380.00000000M1242.49999999M1105.00000001 M 965.00000000 M 827.50000001 M 690.00000000 M 552.49999999 M 412.50000001 M 274.99999999 M 137.50000001 M 0.00000000AutoInlineImageFilterEnabledEvLISQCDataEvLFD)MR)20100114) x9SV10AMUsedPatientWeightPObject::__whatISM M 88 NumberOfPrescanscsDLISM M 0 TransmitterCalibrationDSM M 384.85549500PhaseGradientAmplitudeCsaPersFound::myUserInfofDSM M 0.00000000ReadoutGradientAmplitudee|DSM M 0.00000000SelectionGradientAmplitude'LDSM M 0.00000000GradientDelayTimeer1LDSM M 14.00000000 M 14.00000000 M 10.00000000RfWatchdogMaskto4LISM M 0 RfPowerErrorIndicatoraS7LDSSarWholeBodyDi2L DSSedyBLDSMM1000000.00000000 M 244.00360708 M 244.00360708SequenceFileOwnerS=SHMMSIEMENSStim_mon_mode.CsaUPString::unistrISM M 2 Operation_mode_flagions.CsaCUAttrStrings::datanISM M 0 dBdt_maxibration.CsaAttrStrings::data.CsaVList::mycdata.CDSM M 0.00000000t_puls_maxnLDSM M 0.00000000dBdt_threshOfLastCalibration.CsaAttrStrings::data.CsaVList::mycdata.CsaPListBase::ldISM M -1252 AutoAlignMatrix4FLMeasurementIndexdata.CsaPListBase::iteratorpFLCoilStringleSetID.CsaUPString::unistrLOM M T:HEA;HEPPATModeTextdyComponentStatusIDLOMMp2PatReinPatternPCsaSeries::mySpecificCharactSTM##M#1;HFS;88.00;32.90;2;0;0;1331869268ProtocolChangeHistory:lstartQUS M M 0 Isocentered\CsaSeries::mySeriesHidden.DbUS M M 0 MrPhoenixProtocolsition_flag.CsaFlag::myValuexUNMQ Q MQ  { "PhoenixMetaProtocol" 1000002 2.0 { { { "false" "true" } } { 1 } { " { ""MultiStep Controller"" 1000001 666.0 { 34 400 ""Multistep Protocol"" 401 ""Step"" 402 ""Inline Composing"" 403 ""Composing Group"" 404 ""Last Step"" 405 ""Composing Function"" 406 ""Inline Combine"" 407 ""Enables you to set up a Multistep Protocol."" 408 ""Indicates the number of the current Step of the Multistep Protocol.\nPress the + button to add a Step at the end of the list.\nPress the - button to delete the current Step."" 409 ""Invokes Inline Composing."" 410 ""Identifies all Steps that will be composed."" 411 ""Defines the last measurement step of a composing function."" 412 ""Save all measurements of the Multistep Protocol into one series."" 413 ""Defines the composing algorithm to be used."" 414 ""Prio Recon"" 415 ""Enables Prio Recon measurement"" 416 ""Auto Align Spine"" 417 ""Enables the Auto Align Spine mode in GSP when protocol is open"" 422 ""Auto Coil Select"" 423 ""If set to """"Default"""",\nglobal settings from the queue menu will be used."" 424 ""On"" 425 ""Off"" 426 ""Default"" 429 ""Wait for user to start"" 430 ""Load images to graphic segments"" 431 ""Before measurement"" 432 ""After measurement"" 433 ""1st segment"" 434 ""2nd segment"" 435 ""3rd segment"" 436 ""All segments"" 445 ""Angio"" 446 ""Spine"" 447 ""Adaptive"" } { { } { { ""false"" ""true"" } } { { { } { } { } { } } { { } { } { } { } } } { {

      {% for s in studies %}
    • Study {{ s.uid }}
      • Date: {{ s.date }}
      • Time: {{ s.time }}
      • Comments: {{ s.comments }}
      • Series: {{ s.series|length }}
      • {% endfor %}
      """ patient_date_time_template = """ data Home -> Patient {{ study.patient_name_or_uid() }} -> Study {{ study.date}} {{ study.time }}

      Patient name: {{ study.patient_name }}
      Study UID: {{ study.uid }}
      Study date: {{ study.date }}
      Study time: {{ study.time }}
      Study comments: {{ study.comments }} {% if study.series|length == 0 %}
      No series. {% else %}
        {% for s in study.series %}
      • Series {{ s.number }} (NIfTI)
        • Series UID: {{ s.uid }}
        • Series description: {{ s.description }}
        • Series dimensions: {{ s.rows }}x{{ s.columns }}x{{ s.storage_instances|length }}
        {% endfor %}
      {% endif %} """ class HandlerError: def __init__(self, status, output): self.status = status self.output = output return def application(environ, start_response): try: (status, c_type, output) = handler(environ) except HandlerError, exc: status = exc.status output = exc.output c_type = 'text/plain' except: (exc_type, exc_value, exc_traceback) = sys.exc_info() lines = traceback.format_exception(exc_type, exc_value, exc_traceback) status = '500 Internal Server Error' output = ''.join(lines) c_type = 'text/plain' response_headers = [('Content-Type', c_type), ('Content-Length', str(len(output)))] if c_type == 'image/nifti': response_headers.append(('Content-Disposition', 'attachment; filename=image.nii')) start_response(status, response_headers) return [output] def handler(environ): if environ['PATH_INFO'] == '' or environ['PATH_INFO'] == '/': return ('200 OK', 'text/html', index(environ)) parts = environ['PATH_INFO'].strip('/').split('/') if len(parts) == 1: return ('200 OK', 'text/html', patient(parts[0])) if len(parts) == 2: return ('200 OK', 'text/html', patient_date_time(parts[0], parts[1])) if len(parts) == 4: if parts[3] == 'nifti': return ('200 OK', 'image/nifti', nifti(parts[0], parts[1], parts[2])) elif parts[3] == 'png': return ('200 OK', 'image/png', png(parts[0], parts[1], parts[2])) raise HandlerError('404 Not Found', "%s not found\n" % environ['PATH_INFO']) def study_cmp(a, b): if a.date < b.date: return -1 if a.date > b.date: return 1 if a.time < b.time: return -1 if a.time > b.time: return 1 return 0 def index(environ): patients = {} for s in studies_getter(BASE_DIR): patients.setdefault(s.patient_name_or_uid(), []).append(s) template = template_env.from_string(index_template) return template.render(patients=patients).encode('utf-8') def patient(patient): studies = [ s for s in studies_getter() if s.patient_name_or_uid() == patient ] if len(studies) == 0: raise HandlerError('404 Not Found', 'patient %s not found\n' % patient) studies.sort(study_cmp) template = template_env.from_string(patient_template) return template.render(studies=studies).encode('utf-8') def patient_date_time(patient, date_time): study = None for s in studies_getter(): if s.patient_name_or_uid() != patient: continue if date_time != '%s_%s' % (s.date, s.time): continue study = s break if study is None: raise HandlerError, ('404 Not Found', 'study not found') template = template_env.from_string(patient_date_time_template) return template.render(study=study).encode('utf-8') def nifti(patient, date_time, scan): study = None for s in studies_getter(): if s.patient_name_or_uid() != patient: continue if date_time != '%s_%s' % (s.date, s.time): continue study = s break if study is None: raise HandlerError, ('404 Not Found', 'study not found') ser = None for series in s.series: if series.number != scan: continue ser = series break if ser is None: raise HandlerError, ('404 Not Found', 'series not found') return ser.as_nifti() def png(patient, date_time, scan): study = None for s in studies_getter(): if s.patient_name_or_uid() != patient: continue if date_time != '%s_%s' % (s.date, s.time): continue study = s break if study is None: raise HandlerError, ('404 Not Found', 'study not found') ser = None for series in s.series: if series.number != scan: continue ser = series break if ser is None: raise HandlerError, ('404 Not Found', 'series not found') index = len(ser.storage_instances) / 2 return ser.as_png(index, True) if __name__ == '__main__': import wsgiref.simple_server httpd = wsgiref.simple_server.make_server('', 8080, application) httpd.serve_forever() # eof nipy-nibabel-d3c26be/tools/gitwash_dumper.py000077500000000000000000000172511177264777700213530ustar00rootroot00000000000000#!/usr/bin/env python ''' Checkout gitwash repo into directory and do search replace on name ''' import os from os.path import join as pjoin import shutil import sys import re import glob import fnmatch import tempfile from subprocess import call from optparse import OptionParser verbose = False def clone_repo(url, branch): cwd = os.getcwd() tmpdir = tempfile.mkdtemp() try: cmd = 'git clone %s %s' % (url, tmpdir) call(cmd, shell=True) os.chdir(tmpdir) cmd = 'git checkout %s' % branch call(cmd, shell=True) except: shutil.rmtree(tmpdir) raise finally: os.chdir(cwd) return tmpdir def cp_files(in_path, globs, out_path): try: os.makedirs(out_path) except OSError: pass out_fnames = [] for in_glob in globs: in_glob_path = pjoin(in_path, in_glob) for in_fname in glob.glob(in_glob_path): out_fname = in_fname.replace(in_path, out_path) pth, _ = os.path.split(out_fname) if not os.path.isdir(pth): os.makedirs(pth) shutil.copyfile(in_fname, out_fname) out_fnames.append(out_fname) return out_fnames def filename_search_replace(sr_pairs, filename, backup=False): ''' Search and replace for expressions in files ''' in_txt = open(filename, 'rt').read(-1) out_txt = in_txt[:] for in_exp, out_exp in sr_pairs: in_exp = re.compile(in_exp) out_txt = in_exp.sub(out_exp, out_txt) if in_txt == out_txt: return False open(filename, 'wt').write(out_txt) if backup: open(filename + '.bak', 'wt').write(in_txt) return True def copy_replace(replace_pairs, repo_path, out_path, cp_globs=('*',), rep_globs=('*',), renames = ()): out_fnames = cp_files(repo_path, cp_globs, out_path) renames = [(re.compile(in_exp), out_exp) for in_exp, out_exp in renames] fnames = [] for rep_glob in rep_globs: fnames += fnmatch.filter(out_fnames, rep_glob) if verbose: print '\n'.join(fnames) for fname in fnames: filename_search_replace(replace_pairs, fname, False) for in_exp, out_exp in renames: new_fname, n = in_exp.subn(out_exp, fname) if n: os.rename(fname, new_fname) break def make_link_targets(proj_name, user_name, repo_name, known_link_fname, out_link_fname, url=None, ml_url=None): """ Check and make link targets If url is None or ml_url is None, check if there are links present for these in `known_link_fname`. If not, raise error. The check is: Look for a target `proj_name`. Look for a target `proj_name` + ' mailing list' Also, look for a target `proj_name` + 'github'. If this exists, don't write this target into the new file below. If we are writing any of the url, ml_url, or github address, then write new file with these links, of form: .. _`proj_name` .. _`proj_name`: url .. _`proj_name` mailing list: url """ link_contents = open(known_link_fname, 'rt').readlines() have_url = not url is None have_ml_url = not ml_url is None have_gh_url = None for line in link_contents: if not have_url: match = re.match(r'..\s+_%s:\s+' % proj_name, line) if match: have_url = True if not have_ml_url: match = re.match(r'..\s+_`%s mailing list`:\s+' % proj_name, line) if match: have_ml_url = True if not have_gh_url: match = re.match(r'..\s+_`%s github`:\s+' % proj_name, line) if match: have_gh_url = True if not have_url or not have_ml_url: raise RuntimeError('Need command line or known project ' 'and / or mailing list URLs') lines = [] if not url is None: lines.append('.. _%s: %s\n' % (proj_name, url)) if not have_gh_url: gh_url = 'http://github.com/%s/%s\n' % (user_name, repo_name) lines.append('.. _`%s github`: %s\n' % (proj_name, gh_url)) if not ml_url is None: lines.append('.. _`%s mailing list`: %s\n' % (proj_name, ml_url)) if len(lines) == 0: # Nothing to do return # A neat little header line lines = ['.. %s\n' % proj_name] + lines out_links = open(out_link_fname, 'wt') out_links.writelines(lines) out_links.close() USAGE = ''' If not set with options, the repository name is the same as the If not set with options, the main github user is the same as the repository name.''' GITWASH_CENTRAL = 'git://github.com/matthew-brett/gitwash.git' GITWASH_BRANCH = 'master' def main(): parser = OptionParser() parser.set_usage(parser.get_usage().strip() + USAGE) parser.add_option("--repo-name", dest="repo_name", help="repository name - e.g. nitime", metavar="REPO_NAME") parser.add_option("--github-user", dest="main_gh_user", help="github username for main repo - e.g fperez", metavar="MAIN_GH_USER") parser.add_option("--gitwash-url", dest="gitwash_url", help="URL to gitwash repository - default %s" % GITWASH_CENTRAL, default=GITWASH_CENTRAL, metavar="GITWASH_URL") parser.add_option("--gitwash-branch", dest="gitwash_branch", help="branch in gitwash repository - default %s" % GITWASH_BRANCH, default=GITWASH_BRANCH, metavar="GITWASH_BRANCH") parser.add_option("--source-suffix", dest="source_suffix", help="suffix of ReST source files - default '.rst'", default='.rst', metavar="SOURCE_SUFFIX") parser.add_option("--project-url", dest="project_url", help="URL for project web pages", default=None, metavar="PROJECT_URL") parser.add_option("--project-ml-url", dest="project_ml_url", help="URL for project mailing list", default=None, metavar="PROJECT_ML_URL") (options, args) = parser.parse_args() if len(args) < 2: parser.print_help() sys.exit() out_path, project_name = args if options.repo_name is None: options.repo_name = project_name if options.main_gh_user is None: options.main_gh_user = options.repo_name repo_path = clone_repo(options.gitwash_url, options.gitwash_branch) try: copy_replace((('PROJECTNAME', project_name), ('REPONAME', options.repo_name), ('MAIN_GH_USER', options.main_gh_user)), repo_path, out_path, cp_globs=(pjoin('gitwash', '*'),), rep_globs=('*.rst',), renames=(('\.rst$', options.source_suffix),)) make_link_targets(project_name, options.main_gh_user, options.repo_name, pjoin(out_path, 'gitwash', 'known_projects.inc'), pjoin(out_path, 'gitwash', 'this_project.inc'), options.project_url, options.project_ml_url) finally: shutil.rmtree(repo_path) if __name__ == '__main__': main() nipy-nibabel-d3c26be/tools/make_tarball.py000077500000000000000000000013431177264777700207420ustar00rootroot00000000000000#!/usr/bin/env python """Simple script to create a tarball with proper git info. """ import commands import os import sys import shutil from toollib import * tag = commands.getoutput('git describe') base_name = 'nibabel-%s' % tag tar_name = '%s.tgz' % base_name # git archive is weird: Even if I give it a specific path, it still won't # archive the whole tree. It seems the only way to get the whole tree is to cd # to the top of the tree. There are long threads (since 2007) on the git list # about this and it still doesn't work in a sensible way... start_dir = os.getcwd() cd('..') git_tpl = 'git archive --format=tar --prefix={0}/ HEAD | gzip > {1}' c(git_tpl.format(base_name, tar_name)) c('mv {0} tools/'.format(tar_name)) nipy-nibabel-d3c26be/tools/mpkg_wrapper.py000066400000000000000000000015621177264777700210220ustar00rootroot00000000000000# emacs: -*- mode: python-mode; py-indent-offset: 4; indent-tabs-mode: nil -*- # vi: set ft=python sts=4 ts=4 sw=4 et: ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ## # # See COPYING file distributed along with the NiBabel package for the # copyright and license terms. # ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ## """Simple wrapper to use setuptools extension bdist_mpkg with NiBabel distutils setup.py. This script is a minimal version of a wrapper script shipped with the bdist_mpkg packge. """ __docformat__ = 'restructuredtext' import sys import setuptools import bdist_mpkg def main(): del sys.argv[0] sys.argv.insert(1, 'bdist_mpkg') g = dict(globals()) g['__file__'] = sys.argv[0] g['__name__'] = '__main__' execfile(sys.argv[0], g, g) if __name__ == '__main__': main() nipy-nibabel-d3c26be/tools/profile000077500000000000000000000073021177264777700173360ustar00rootroot00000000000000#!/usr/bin/python #emacs: -*- mode: python-mode; py-indent-offset: 4; indent-tabs-mode: nil -*- #ex: set sts=4 ts=4 sw=4 et: ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ## # # See COPYING file distributed along with the NiBabel package for the # copyright and license terms. # ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ## """""" __docformat__ = 'restructuredtext' import sys, os from optparse import OptionParser from os import environ, path if __name__ == "__main__": usage = """Usage: %s [options] ... """ % sys.argv[0] # default options convert2kcache = True displaykcachegrinder = True printstats = False pfilename = None pstatsfilename = None profilelines = True profilelevel = 10 # how many most hungry to list in stats run = True # either to run profiling at all removed = sys.argv.pop(0) if not len(sys.argv): print usage sys.exit(1) while sys.argv[0].startswith('-'): if sys.argv[0] in ["-l", "--level"]: profilelevel = int(sys.argv[1]) sys.argv.pop(0) elif sys.argv[0] in ["-o", "--output-file"]: pfilename = sys.argv[1] sys.argv.pop(0) elif sys.argv[0] in ["-O", "--output-statsfile"]: pstatsfilename = sys.argv[1] sys.argv.pop(0) elif sys.argv[0] in ["-s", "--stats"]: printstats = True convert2kcache = False displaykcachegrinder = False elif sys.argv[0] in ["-n", "--no-run"]: run = False elif sys.argv[0] in ["-P", "--no-profilelines"]: profilelines = False elif sys.argv[0] in ["-K", "--no-kcache"]: convert2kcache = False displaykcachegrinder = False else: print usage sys.exit(1) sys.argv.pop(0) cmdname = sys.argv[0] dirname = path.dirname(cmdname) (root, ext) = path.splitext(path.basename(cmdname)) sys.path.append(dirname) # now do profiling try: import hotshot except ImportError: raise RuntimeError('No hotshot') if pfilename is None: pfilename = cmdname + ".prof" if run: exec "import %s as runnable" % root if not 'main' in runnable.__dict__: print "OOPS: file/module %s has no function main defined" \ % cmdname sys.exit(1) prof = hotshot.Profile(pfilename, lineevents=profilelines) try: # actually return values are never setup # since unittest.main sys.exit's results = prof.runcall( runnable.main ) except SystemExit: pass print "Saving profile data into %s" % pfilename prof.close() if printstats or pstatsfilename: import hotshot.stats print "Loading profile file to print statistics" stats = hotshot.stats.load(pfilename) if printstats: stats.strip_dirs() stats.sort_stats('time', 'calls') stats.print_stats(profilelevel) if pstatsfilename: stats.dump_stats(pstatsfilename) kfilename = pfilename + ".kcache" if convert2kcache: cmd = "hotshot2calltree -o %s %s" % (kfilename, pfilename) if os.system(cmd): print "!!! Make sure to install kcachegrind-converters ;-)" sys.exit(1) if displaykcachegrinder: if os.system('kcachegrind %s' % kfilename): print "!!! Make sure to install kcachegrind ;-)" sys.exit(1) else: print "Go away -- nothing to look here for as a module" nipy-nibabel-d3c26be/tools/valgrind-python000077500000000000000000000002011177264777700210120ustar00rootroot00000000000000#!/bin/bash path=$(dirname $0) valgrind --tool=memcheck --leak-check=full --suppressions=$path/valgrind-python.supp python $* nipy-nibabel-d3c26be/tools/valgrind-python.supp000066400000000000000000000171121177264777700220060ustar00rootroot00000000000000# # This is a valgrind suppression file that should be used when using valgrind. # # Here's an example of running valgrind: # # cd python/dist/src # valgrind --tool=memcheck --suppressions=Misc/valgrind-python.supp \ # ./python -E -tt ./Lib/test/regrtest.py -u bsddb,network # # You must edit Objects/obmalloc.c and uncomment Py_USING_MEMORY_DEBUGGER # to use the preferred suppressions with Py_ADDRESS_IN_RANGE. # # If you do not want to recompile Python, you can uncomment # suppressions for PyObject_Free and PyObject_Realloc. # # See Misc/README.valgrind for more information. # all tool names: Addrcheck,Memcheck,cachegrind,helgrind,massif { ADDRESS_IN_RANGE/Invalid read of size 4 Memcheck:Addr4 fun:Py_ADDRESS_IN_RANGE } { ADDRESS_IN_RANGE/Invalid read of size 4 Memcheck:Value4 fun:Py_ADDRESS_IN_RANGE } { ADDRESS_IN_RANGE/Invalid read of size 8 (x86_64 aka amd64) Memcheck:Value8 fun:Py_ADDRESS_IN_RANGE } { ADDRESS_IN_RANGE/Conditional jump or move depends on uninitialised value Memcheck:Cond fun:Py_ADDRESS_IN_RANGE } # # Leaks (including possible leaks) # Hmmm, I wonder if this masks some real leaks. I think it does. # Will need to fix that. # { Handle PyMalloc confusing valgrind (possibly leaked) Memcheck:Leak fun:realloc fun:_PyObject_GC_Resize fun:COMMENT_THIS_LINE_TO_DISABLE_LEAK_WARNING } { Handle PyMalloc confusing valgrind (possibly leaked) Memcheck:Leak fun:malloc fun:_PyObject_GC_New fun:COMMENT_THIS_LINE_TO_DISABLE_LEAK_WARNING } { Handle PyMalloc confusing valgrind (possibly leaked) Memcheck:Leak fun:malloc fun:_PyObject_GC_NewVar fun:COMMENT_THIS_LINE_TO_DISABLE_LEAK_WARNING } # # Non-python specific leaks # { Handle pthread issue (possibly leaked) Memcheck:Leak fun:calloc fun:allocate_dtv fun:_dl_allocate_tls_storage fun:_dl_allocate_tls } { Handle pthread issue (possibly leaked) Memcheck:Leak fun:memalign fun:_dl_allocate_tls_storage fun:_dl_allocate_tls } { ADDRESS_IN_RANGE/Invalid read of size 4 Memcheck:Addr4 fun:PyObject_Free } { ADDRESS_IN_RANGE/Invalid read of size 4 Memcheck:Value4 fun:PyObject_Free } { ADDRESS_IN_RANGE/Conditional jump or move depends on uninitialised value Memcheck:Cond fun:PyObject_Free } { ADDRESS_IN_RANGE/Invalid read of size 4 Memcheck:Addr4 fun:PyObject_Realloc } { ADDRESS_IN_RANGE/Invalid read of size 4 Memcheck:Value4 fun:PyObject_Realloc } { ADDRESS_IN_RANGE/Conditional jump or move depends on uninitialised value Memcheck:Cond fun:PyObject_Realloc } ### ### All the suppressions below are for errors that occur within libraries ### that Python uses. The problems to not appear to be related to Python's ### use of the libraries. ### { Generic ubuntu ld problems Memcheck:Addr8 obj:/lib/ld-2.4.so obj:/lib/ld-2.4.so obj:/lib/ld-2.4.so obj:/lib/ld-2.4.so } { Generic gentoo ld problems Memcheck:Cond obj:/lib/ld-2.3.4.so obj:/lib/ld-2.3.4.so obj:/lib/ld-2.3.4.so obj:/lib/ld-2.3.4.so } { DBM problems, see test_dbm Memcheck:Param write(buf) fun:write obj:/usr/lib/libdb1.so.2 obj:/usr/lib/libdb1.so.2 obj:/usr/lib/libdb1.so.2 obj:/usr/lib/libdb1.so.2 fun:dbm_close } { DBM problems, see test_dbm Memcheck:Value8 fun:memmove obj:/usr/lib/libdb1.so.2 obj:/usr/lib/libdb1.so.2 obj:/usr/lib/libdb1.so.2 obj:/usr/lib/libdb1.so.2 fun:dbm_store fun:dbm_ass_sub } { DBM problems, see test_dbm Memcheck:Cond obj:/usr/lib/libdb1.so.2 obj:/usr/lib/libdb1.so.2 obj:/usr/lib/libdb1.so.2 fun:dbm_store fun:dbm_ass_sub } { DBM problems, see test_dbm Memcheck:Cond fun:memmove obj:/usr/lib/libdb1.so.2 obj:/usr/lib/libdb1.so.2 obj:/usr/lib/libdb1.so.2 obj:/usr/lib/libdb1.so.2 fun:dbm_store fun:dbm_ass_sub } { GDBM problems, see test_gdbm Memcheck:Param write(buf) fun:write fun:gdbm_open } { ZLIB problems, see test_gzip Memcheck:Cond obj:/lib/libz.so.1.2.3 obj:/lib/libz.so.1.2.3 fun:deflate } { Avoid problems w/readline doing a putenv and leaking on exit Memcheck:Leak fun:malloc fun:xmalloc fun:sh_set_lines_and_columns fun:_rl_get_screen_size fun:_rl_init_terminal_io obj:/lib/libreadline.so.4.3 fun:rl_initialize } ### ### These occur from somewhere within the SSL, when running ### test_socket_sll. They are too general to leave on by default. ### ###{ ### somewhere in SSL stuff ### Memcheck:Cond ### fun:memset ###} ###{ ### somewhere in SSL stuff ### Memcheck:Value4 ### fun:memset ###} ### ###{ ### somewhere in SSL stuff ### Memcheck:Cond ### fun:MD5_Update ###} ### ###{ ### somewhere in SSL stuff ### Memcheck:Value4 ### fun:MD5_Update ###} # # All of these problems come from using test_socket_ssl # { from test_socket_ssl Memcheck:Cond fun:BN_bin2bn } { from test_socket_ssl Memcheck:Cond fun:BN_num_bits_word } { from test_socket_ssl Memcheck:Value4 fun:BN_num_bits_word } { from test_socket_ssl Memcheck:Cond fun:BN_mod_exp_mont_word } { from test_socket_ssl Memcheck:Cond fun:BN_mod_exp_mont } { from test_socket_ssl Memcheck:Param write(buf) fun:write obj:/usr/lib/libcrypto.so.0.9.7 } { from test_socket_ssl Memcheck:Cond fun:RSA_verify } { from test_socket_ssl Memcheck:Value4 fun:RSA_verify } { from test_socket_ssl Memcheck:Value4 fun:DES_set_key_unchecked } { from test_socket_ssl Memcheck:Value4 fun:DES_encrypt2 } { from test_socket_ssl Memcheck:Cond obj:/usr/lib/libssl.so.0.9.7 } { from test_socket_ssl Memcheck:Value4 obj:/usr/lib/libssl.so.0.9.7 } { from test_socket_ssl Memcheck:Cond fun:BUF_MEM_grow_clean } { from test_socket_ssl Memcheck:Cond fun:memcpy fun:ssl3_read_bytes } { from test_socket_ssl Memcheck:Cond fun:SHA1_Update } { from test_socket_ssl Memcheck:Value4 fun:SHA1_Update } # custom suppressions for yoh { Memcheck:Cond obj:/lib/ld-2.7.so obj:/lib/ld-2.7.so obj:/lib/ld-2.7.so obj:/lib/ld-2.7.so obj:/lib/ld-2.7.so } { Memcheck:Addr4 obj:/lib/ld-2.7.so obj:/lib/ld-2.7.so obj:/lib/ld-2.7.so obj:/lib/ld-2.7.so obj:/lib/ld-2.7.so obj:/lib/ld-2.7.so obj:/lib/i686/cmov/libdl-2.7.so obj:/lib/ld-2.7.so obj:/lib/i686/cmov/libdl-2.7.so fun:dlopen fun:_PyImport_GetDynLoadFunc fun:_PyImport_LoadDynamicModule } { Memcheck:Cond obj:/lib/ld-2.7.so obj:/lib/ld-2.7.so obj:/lib/ld-2.7.so obj:/lib/ld-2.7.so obj:/lib/i686/cmov/libdl-2.7.so obj:/lib/ld-2.7.so obj:/lib/i686/cmov/libdl-2.7.so fun:dlopen fun:_PyImport_GetDynLoadFunc fun:_PyImport_LoadDynamicModule obj:/usr/bin/python2.4 obj:/usr/bin/python2.4 } { Memcheck:Cond obj:/lib/ld-2.7.so obj:/lib/ld-2.7.so obj:/lib/ld-2.7.so obj:/lib/i686/cmov/libdl-2.7.so obj:/lib/ld-2.7.so obj:/lib/i686/cmov/libdl-2.7.so fun:dlopen fun:_PyImport_GetDynLoadFunc fun:_PyImport_LoadDynamicModule obj:/usr/bin/python2.4 obj:/usr/bin/python2.4 obj:/usr/bin/python2.4 } { Memcheck:Addr4 obj:/lib/ld-2.7.so obj:/lib/ld-2.7.so obj:/lib/ld-2.7.so obj:/lib/ld-2.7.so obj:/lib/ld-2.7.so obj:/lib/ld-2.7.so obj:/lib/ld-2.7.so obj:/lib/ld-2.7.so obj:/lib/ld-2.7.so obj:/lib/i686/cmov/libdl-2.7.so obj:/lib/ld-2.7.so obj:/lib/i686/cmov/libdl-2.7.so } nipy-nibabel-d3c26be/tox.ini000066400000000000000000000006211177264777700161200ustar00rootroot00000000000000[tox] # From-scratch tox-default-name virtualenvs envlist = py25,py26,py27,py32 [testenv] deps = nose numpy commands=nosetests --with-doctest # MBs virtualenvs; numpy, nose already installed. Run these with: # tox -e python25,python26,python27,python32,np-1.2.1 [testenv:python25] deps = [testenv:python26] deps = [testenv:python27] deps = [testenv:python32] deps = [testenv:np-1.2.1] deps =