"""PDBx/mmCIF Python dictionary resources.
All of the code in this repository is original based on
http://mmcif.wwpdb.org/. Specifically, this code is directly derived from the
`pdbx code <http://mmcif.wwpdb.org/docs/sw-examples/python/src/pdbx.tar.gz>`_
linked from
`PDBx Python Parser Examples and Tutorial
<http://mmcif.wwpdb.org/docs/sw-examples/python/html/>`_.
See `PDBx Python Parser Examples and Tutorial
<http://mmcif.wwpdb.org/docs/sw-examples/python/html/>`_ for more information
about this package, including examples.
"""
# import pdbx.reader
import io
from .reader import PdbxReader
from .writer import PdbxWriter
from .errors import PdbxSyntaxError, PdbxError # noqa: F401
from .containers import DataCategory, DataContainer # noqa: F401
from ._version import __version__ # noqa: F401
[docs]def load(fobj) -> list:
"""Parse a CIF file.
:param file fobj: file object ready for reading
:returns: a list of :class:`~pdbx.containers.DataContainer` objects
"""
data = []
PdbxReader(fobj).read(data)
return data
[docs]def loads(text) -> list:
"""Parse a CIF string.
:param str s: string with CIF data
:returns: a list of :class:`~pdbx.containers.DataContainer` objects
"""
return load(io.StringIO(text))
[docs]def dump(datacontainers, fobj):
"""Write a list of objects to a CIF file.
:param list datacontainers: a list of :class:`~pdbx.containers.DataContainer` objects # noqa E501
:param file fobj: a file object ready for writing
"""
PdbxWriter(fobj).write(datacontainers)
[docs]def dumps(datacontainers) -> str:
"""Serialize a list of objects to a CIF-formatted string.
:param list datacontainers: list of :class:`~pdbx.containers.DataContainer` objects # noqa E501
:returns: CIF-formatted string
"""
fobj = io.StringIO()
dump(datacontainers, fobj)
return fobj.getvalue()