Source code for garnett.reader

# Copyright (c) 2020 The Regents of the University of Michigan
# All rights reserved.
# This software is licensed under the BSD 3-Clause License.
import warnings

from .posfilereader import PosFileReader
from .hoomdxmlfilereader import HOOMDXMLFileReader
from .dcdfilereader import _DCDFileReader
from .gsdhoomdfilereader import GSDHOOMDFileReader

try:
    from .getarfilereader import GetarFileReader
except ImportError:
    class GetarFileReader(object):
        def __init__(self):
            raise ImportError(
                "GetarFileReader requires the gtar package.")

try:
    from .ciffilereader import CifFileReader
except ImportError:
    class CifFileReader(object):
        def __init__(self, *args, **kwargs):
            raise ImportError(
                "CifFileReader requires the PyCifRW package.")


[docs]class PyDCDFileReader(_DCDFileReader): """Pure-python DCD-file reader for the Glotzer Group. This class is a pure python dcd-reader implementation which should only be used when the more efficient cythonized dcd-reader is not available or you want to work with non-standard file-like objects. .. seealso:: The API is identical to: :py:class:`~.DCDFileReader`""" pass
try: try: from . import dcdreader except ImportError: import dcdreader except ImportError: class DCDFileReader(PyDCDFileReader): def __init__(self): warnings.warn("Failed to import dcdreader library. " "Falling back to pure-python reader!") super(DCDFileReader, self).__init__() else:
[docs] class DCDFileReader(PyDCDFileReader): """DCD-file reader for the Glotzer Group, University of Michigan. Author: Carl Simon Adorf A dcd file consists only of positions. To provide additional information it is possible to provide a frame object, whose properties are copied into each frame of the dcd trajectory. The example is given for a HOOMD-blue xml frame: .. code:: xml_reader = HOOMDXMLFileReader() dcd_reader = DCDFileReader() with open('init.xml') as xmlfile: with open('dump.dcd', 'rb') as dcdfile: xml_frame = xml_reader.read(xmlfile)[0] traj = reader.read(dcdfile, xml_frame) .. note:: If the topology frame is 2-dimensional, the dcd trajectory positions are interpreted such that the first two values contain the xy-coordinates, the third value is an euler angle. The euler angle is converted to a quaternion and stored in the orientation of the frame. To retrieve the euler angles, simply convert the quaternion: .. code:: alpha = 2 * np.arccos(traj[0].orientations.T[0]) """ _dcdreader = dcdreader
class GSDHoomdFileReader(GSDHOOMDFileReader): def __init__(self, *args, **kwargs): warnings.warn( "This class has been renamed to GSDHOOMDFileReader!", DeprecationWarning) super(GSDHoomdFileReader, self).__init__(*args, **kwargs) class HoomdBlueXMLFileReader(HOOMDXMLFileReader): def __init__(self, *args, **kwargs): warnings.warn( "This class has been renamed to HOOMDXMLFileReader!", DeprecationWarning) super(HoomdBlueXMLFileReader, self).__init__(*args, **kwargs) __all__ = [ 'PosFileReader', 'HOOMDXMLFileReader', 'HoomdBlueXMLFileReader', 'PyDCDFileReader', 'DCDFileReader', 'GetarFileReader', 'GSDHOOMDFileReader', 'GSDHoomdFileReader', 'CifFileReader']