Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

mrcfile

Package Overview
Dependencies
Maintainers
1
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

mrcfile

MRC file I/O library

  • 1.5.3
  • PyPI
  • Socket score

Maintainers
1

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.

FAQs


Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc