About PyCifRWPyCIFRW provides support for reading and writing CIF (Crystallographic Information Format) files using Python, including validity testing against DDL dictionaries. It was developed at the Australian National Beamline Facility (ANBF), run by the Australian Synchrotron Research Program (ASRP), as part of a larger project to provide CIF input/output capabilities for data collection. It is currently (April 2009) under active development and testing.
You can exercise the validity testing aspect of PyCIFRW online.
Acknowledgements and Credit
In order to implement the CIF grammar specification, PyCifRW uses the Yapps2 parser generator developed by Amit Patel and generously released to the wider community. The remainder of PyCifRW was written by James Hester.
DownloadingThe package is available as a .tar.gz file, which can be downloaded from here. File "INSTALLATION" contains installation instructions.
The IUCr version 1.1 working specification was used as a reference.
PyCifRW has been tested on the IUCr sample CIF trap files, and fails or successfully reads as it is supposed to for all 11 tests, except for test 5, which contains the no longer acceptable vertical tab and form feed characters. CIF output conforms to the standard, including line length restrictions.
PyCIFRW is written entirely in Python. While this makes parsing of large CIF files rather slow, it will run wherever Python runs. It has been tested on Unix (Linux, Solaris) and Windows XP under Python2.3.
If you have found PyCifRW useful and wish to include a citation in your paper, the canonical reference is:
J. R. Hester (2006) "A validating CIF parser: PyCIFRW", J. Appl. Cryst. 39, 621-625
PyCiFRW consists of the following files:
|CifFile.py||Defines the CifFile module for Python|
|CifFile.nw||Noweb file from which CifFile.py is obtained|
|CifFile.html||Programming notes for CifFile derived also from CifFile.nw|
|YappsStarParser_1_1.py||Cif/Star parser generated by Yapps2|
|YappsStarParser.html||Programming notes for the grammar input to Yapps2|
|Makefile||How to derive .html and .py files from .nw files|
|yapps_compiled_rt.py||Runtime support for Yapps parser (modified version of file in Yapps2 distribution)|
|StarScan.so (linux only)||Compiled extension for rapid Starfile reading|