Skip to main content

Samples, parsers, and writers for formats used in the Glotzer Group.

Project description


CircleCI RTD Contributors License


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



To install this package with pip, execute:

pip install garnett --user


The package's documentation is available at:

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

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


Reading and writing

import garnett

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

# Simple conversion of trajectory formats
with'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()             # 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]              # 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             # 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 =

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

# Restore last frame
snapshot = system.take_snapshot()


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

Project details

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Files for garnett, version 0.7.1
Filename, size File type Python version Upload date Hashes
Filename, size garnett-0.7.1-py3-none-any.whl (76.2 kB) File type Wheel Python version py3 Upload date Hashes View
Filename, size garnett-0.7.1.tar.gz (126.3 kB) File type Source Python version None Upload date Hashes View

Supported by

Pingdom Pingdom Monitoring Google Google Object Storage and Download Analytics Sentry Sentry Error logging AWS AWS Cloud computing DataDog DataDog Monitoring Fastly Fastly CDN DigiCert DigiCert EV certificate StatusPage StatusPage Status page