File: README.rst

package info (click to toggle)
python-mrcfile 1.5.4-2
  • links: PTS, VCS
  • area: main
  • in suites: sid, trixie
  • size: 63,824 kB
  • sloc: python: 3,871; sh: 28; makefile: 16
file content (169 lines) | stat: -rw-r--r-- 5,694 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
mrcfile.py
==========

|build-status| |readthedocs| |python-versions| |pypi-version| |conda-forge-version|

.. |build-status| image:: https://app.travis-ci.com/ccpem/mrcfile.svg?branch=master
    :target: https://app.travis-ci.com/github/ccpem/mrcfile
    :alt: Build Status

.. |readthedocs| image:: https://readthedocs.org/projects/mrcfile/badge/
    :target: http://mrcfile.readthedocs.org
    :alt: Documentation
    
.. |python-versions| image:: https://img.shields.io/pypi/pyversions/mrcfile.svg
    :target: https://pypi.python.org/pypi/mrcfile
    :alt: Python Versions

.. |pypi-version| image:: https://img.shields.io/pypi/v/mrcfile.svg
    :target: https://pypi.python.org/pypi/mrcfile
    :alt: Python Package Index

.. |conda-forge-version| image:: https://img.shields.io/conda/vn/conda-forge/mrcfile.svg
    :target: https://anaconda.org/conda-forge/mrcfile
    :alt: conda-forge

.. start_of_main_text

``mrcfile`` is a Python implementation of the `MRC2014 file format`_, which
is used in structural biology to store image and volume data.

It allows MRC files to be created and opened easily using a very simple API,
which exposes the file's header and data as `numpy`_ arrays. The code runs in
Python 2 and 3 and is fully unit-tested.

.. _MRC2014 file format: http://www.ccpem.ac.uk/mrc_format/mrc2014.php
.. _numpy: http://www.numpy.org/

This library aims to allow users and developers to read and write
standard-compliant MRC files in Python as easily as possible, and with no
dependencies on any compiled libraries except `numpy`_. You can use it
interactively to inspect files, correct headers and so on, or in scripts and
larger software packages to provide basic MRC file I/O functions.

Key Features
------------

* Clean, simple API for access to MRC files
* Easy to install and use
* Validation of files according to the MRC2014 format
* Seamless support for gzip and bzip2 files
* Memory-mapped file option for fast random access to very large files
* Asynchronous opening option for background loading of multiple files
* Runs in Python 2 & 3, on Linux, Mac OS X and Windows

Installation
------------

The ``mrcfile`` library is available from the `Python package index`_::

    pip install mrcfile

Or from `conda-forge`_::

    conda install --channel conda-forge mrcfile

It is also included in the ``ccpem-python`` environment in the  `CCP-EM`_
software suite.

.. _CCP-EM: http://www.ccpem.ac.uk

The source code (including the full test suite) can be found `on GitHub`_.

.. _Python package index: https://pypi.org/project/mrcfile
.. _conda-forge: https://anaconda.org/conda-forge/mrcfile
.. _on GitHub: https://github.com/ccpem/mrcfile

Basic usage
-----------

The easiest way to open a file is with the `mrcfile.open`_ and `mrcfile.new`_
functions. These return an `MrcFile`_ object which represents an MRC file on
disk.

.. _mrcfile.open: http://mrcfile.readthedocs.io/en/latest/source/mrcfile.html#mrcfile.open
.. _mrcfile.new: http://mrcfile.readthedocs.io/en/latest/source/mrcfile.html#mrcfile.new
.. _MrcFile: http://mrcfile.readthedocs.io/en/latest/usage_guide.html#using-mrcfile-objects

To open an MRC file and read a slice of data::

    >>> import mrcfile
    >>> with mrcfile.open('tests/test_data/EMD-3197.map') as mrc:
    ...     mrc.data[10,10]
    ... 
    array([ 2.58179283,  3.1406002 ,  3.64495397,  3.63812137,  3.61837363,
            4.0115056 ,  3.66981959,  2.07317996,  0.1251585 , -0.87975615,
            0.12517013,  2.07319379,  3.66982722,  4.0115037 ,  3.61837196,
            3.6381247 ,  3.64495087,  3.14059472,  2.58178973,  1.92690361], dtype=float32)

To create a new file with a 2D data array, and change some values::

    >>> array = np.zeros((5, 5), dtype=np.int8)
    >>> with mrcfile.new('tmp.mrc') as mrc:
    ...     mrc.set_data(array)
    ...     mrc.data[1:4,1:4] = 10
    ...     mrc.data
    ... 
    array([[ 0,  0,  0,  0,  0],
           [ 0, 10, 10, 10,  0],
           [ 0, 10, 10, 10,  0],
           [ 0, 10, 10, 10,  0],
           [ 0,  0,  0,  0,  0]], dtype=int8)

The data will be saved to disk when the file is closed, either automatically at
the end of the ``with`` block (like a normal Python file object) or manually by
calling ``close()``. You can also call ``flush()`` to write any changes to disk
and keep the file open.

To validate an MRC file::

    >>> mrcfile.validate('tests/test_data/EMD-3197.map')
    File does not declare MRC format version 20140 or 20141: nversion = 0
    False

    >>> mrcfile.validate('tmp.mrc')
    True

Documentation
-------------

Full documentation is available on `Read the Docs`_.

.. _Read the Docs: http://mrcfile.readthedocs.org

Citing mrcfile
--------------

If you find ``mrcfile`` useful in your work, please cite:

Burnley T, Palmer C & Winn M (2017) Recent developments in the CCP-EM
software suite. *Acta Cryst.* D\ **73**:469--477.
`doi: 10.1107/S2059798317007859`_

.. _`doi: 10.1107/S2059798317007859`: https://doi.org/10.1107/S2059798317007859

Contributing
------------

Please use the `GitHub issue tracker`_ for bug reports and feature requests, or
`email CCP-EM`_.

.. _GitHub issue tracker: https://github.com/ccpem/mrcfile/issues
.. _email CCP-EM: ccpem@stfc.ac.uk

Code contributions are also welcome, please submit pull requests to the
`GitHub repository`_.

.. _GitHub repository: https://github.com/ccpem/mrcfile

To run the test suite, go to the top-level project directory (which contains
the ``mrcfile`` and ``tests`` packages) and run ``python -m unittest tests``.
(Or, if you have `tox`_ installed, run ``tox``.)

.. _tox: http://tox.readthedocs.org

Licence
-------

The project is released under the BSD licence.