Skip to content

Collection of file parsers and writers for particle trajectory formats used by the Glotzer Group.

License

Notifications You must be signed in to change notification settings

glotzerlab/garnett

Repository files navigation

garnett

CircleCI RTD Contributors License

About

This is a collection of samples, parsers and writers for formats used in the Glotzer Group at the University of Michigan, Ann Arbor.

Maintainers

Setup

To install this package with pip, execute:

pip install garnett --user

Documentation

The package's documentation is available at: https://garnett.readthedocs.io/

To build the documentation yourself using sphinx, execute within the repository:

cd doc
make html
open _build/html/index.html

Quickstart

Reading and writing

import garnett

# Autodetects file format for a uniform trajectory API
with garnett.read('gsdfile.gsd') as traj:
    for frame in traj:
        pos = frame.position

# Simple conversion of trajectory formats
with garnett.read('posfile.pos') as traj:
    garnett.write(traj, 'gsdfile.gsd')

Data access

Access individual frames by indexing or create subsets of trajectories with slicing:

first_frame = traj[0]
last_frame = traj[-1]
nth_frame = traj[n]
# and so on

sub_trajectory = traj[i:j]

Access properties of trajectories:

traj.load_arrays()
traj.box             # M
traj.N               # M
traj.types           # MxT
traj.type_shapes     # MxT
traj.typeid          # MxN
traj.position        # MxNx3
traj.orientation     # MxNx4
traj.velocity        # MxNx3
traj.mass            # MxN
traj.charge          # MxN
traj.diameter        # MxN
traj.moment_inertia  # MxNx3
traj.angmom          # MxNx4
traj.image           # MxNx3

# M is the number of frames
# T is the number of particle types in a frame
# N is the number of particles in a frame

Access properties of individual frames:

frame = traj[i]
frame.box              # garnett.trajectory.Box object
frame.N                # scalar, number of particles
frame.types            # T, string names for each type
frame.type_shapes      # T, list of shapes for each type
frame.typeid           # N, type indices of each particle
frame.position         # Nx3
frame.orientation      # Nx4
frame.velocity         # Nx3
frame.mass             # N
frame.charge           # N
frame.diameter         # N
frame.moment_inertia   # Nx3
frame.angmom           # Nx4
frame.image            # Nx3
frame.data             # Dictionary of lists for each attribute
frame.data_key         # List of strings

All matrices are NumPy arrays.

Example use with HOOMD-blue

See the examples directory for additional examples.

pos_reader = PosFileReader()
with open('cube.pos') as posfile:
    traj = pos_reader.read(posfile)

# Initialize from last frame
snapshot = traj[-1].to_hoomd_snapshot()
system = init.read_snapshot(snapshot)

# Restore last frame
snapshot = system.take_snapshot()
traj[-1].to_hoomd_snapshot(snapshot)

Testing

To run all garnett tests, ddt, HOOMD-blue (hoomd), and pycifrw must be installed in the testing environments.

Execute the tests with:

python -m unittest discover tests

About

Collection of file parsers and writers for particle trajectory formats used by the Glotzer Group.

Resources

License

Stars

Watchers

Forks

Packages

No packages published