Skip to content

Python package for handling IHM mmCIF and BinaryCIF files

License

Notifications You must be signed in to change notification settings

ihmwg/python-ihm

Repository files navigation

DOI docs conda package pypi package Linux Build Status Windows Build Status codecov

This is a Python package to assist in handling mmCIF and BinaryCIF files compliant with the integrative/hybrid modeling (IHM) extension. It works with Python 2.7 or Python 3.

To handle non-integrative theoretical models (for example, homology models), see the python-modelcif package which supports files compliant with the ModelCIF extension.

Please see the documentation or some worked examples for more details.

Installation with conda, Homebrew or pip

If you are using Anaconda Python, install with

conda install -c conda-forge ihm

On a Mac with Homebrew, install with

brew tap salilab/salilab; brew install ihm

On a Fedora or RedHat Enterprise Linux box, install with

dnf copr enable salilab/salilab; dnf install python3-ihm

On an Ubuntu LTS box, install from our PPA with

apt install software-properties-common; add-apt-repository ppa:salilab/ppa;
apt install python3-ihm

Alternatively, install with pip:

pip install ihm

(Note that pip builds a C extension module for faster parsing of mmCIF files. This requires that your system has a C compiler. If you don't want to build the C extension module, install with pip install ihm --install-option="--without-ext".)

Installation from source code

To build and install from a clone of the GitHub repository, run

python setup.py build
python setup.py install

Note that a C extension module is built for faster parsing of mmCIF files. This requires that your system has a C compiler and SWIG. If either of these components are missing, you can choose to build without the extension by adding --without-ext to both setup.py command lines above.

If you want to read or write BinaryCIF files, you will also need the Python msgpack package.

Testing

There are a number of testcases in the test directory. Each one can be run like a normal Python script to test the library. They can also be all run at once using nose or pytest. They will also test the C extension module if it is first built with python setup.py build_ext --inplace.