MDAnalysis based reporter for OpenMM
Project description
openmm-mdanalysis-reporter
Latest release | |
---|---|
Status | |
Community |
MDAnalysis based reporter for OpenMM
openmm-mdanalysis-reporter is bound by a Code of Conduct.
Currently a WIP but it should work
This is an OpenMM Reporter class that uses MDAnalysis for output. This means it can use any format supported by MDAnalysis. It also supports MDAnalysis selection strings.
The reporter is called MDAReporter
, once this package is installed it can be imported as:
from mdareporter import MDAReporter
Installation
Pip:
pip install git+https://github.com/sef43/openmm-mdanalysis-reporter
From source:
git clone https://github.com/sef43/openmm-mdanalysis-reporter.git
cd openmm-mdanalysis-reporter
pip install .
Usage
It is used like the existing OpenMM reporters, where the file format is read from the suffix of the output file by MDAnalysis, e.g. to output in XYZ format:
from mdareporter import MDAReporter
...
simulation.reporters.append(MDAReporter('traj.xyz',100))
...
Additionally it supports the MDAnalysis selection syntax
# using MDAnalysis selection string to output just Carbon atoms
simulation.reporters.append(MDAReporter('traj.xyz',100, selection='name C'))
Example
Full example of using MDAReporter to output just the protein (script and data file in cd
example):
from openmm.app import *
from openmm import *
from openmm.unit import *
from sys import stdout
from mdareporter import MDAReporter
pdb = PDBFile('villin.pdb')
forcefield = ForceField('amber14-all.xml', 'amber14/tip3pfb.xml')
system = forcefield.createSystem(pdb.topology, nonbondedMethod=PME,
nonbondedCutoff=1*nanometer, constraints=HBonds)
integrator = LangevinMiddleIntegrator(300*kelvin, 1/picosecond, 0.004*picoseconds)
simulation = Simulation(pdb.topology, system, integrator)
simulation.context.setPositions(pdb.positions)
simulation.minimizeEnergy(maxIterations=100)
# output just protein in xyz format
simulation.reporters.append(MDAReporter('traj.xyz',100, enforcePeriodicBox=False, selection="protein"))
simulation.reporters.append(StateDataReporter(stdout, 100, step=True,
potentialEnergy=True, temperature=True))
simulation.step(1000)
Testing
testsuite can be run using pytest
cd mdareporter/tests
pytest
or
pytest --pyargs mdareporter.tests
Benchmarks
A benchmarking script which writes trajectory snapshots every 10 steps for 1000 steps can be found at example/benchmark.py
The output on a M2 Macbook is:
OpenMM PDBReporter time = 7.989748208987294 s
OpenMM DCDReporter time = 5.6639587499958 s
MDAReporter format DCD time = 3.5682871250028256 s
MDAReporter format NCDF time = 3.609358207992045 s
MDAReporter format PDB time = 11.491382707987214 s
MDAReporter format TRR time = 4.7894440419913735 s
MDAReporter format XTC time = 4.086603666975861 s
MDAReporter format XYZ time = 5.835725833981996 s
Excluding MDAReporter using PDB format the MDAReporter formats are all as fast, or faster than the OpenMM formats.
Acknowledgements
Project based on the MDAnalysis Cookiecutter version 0.1. Please cite MDAnalysis when using openmm-mdanalysis-reporter in published work.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file openmm-mdanalysis-reporter-0.1.tar.gz
.
File metadata
- Download URL: openmm-mdanalysis-reporter-0.1.tar.gz
- Upload date:
- Size: 277.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.11.3
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 07197732dc8e629297a5d2103bf133ac464d388e2e17ff06b242d3513aa972d8 |
|
MD5 | 08c6debb5de9e02970706459747f1f55 |
|
BLAKE2b-256 | b10a67cbbc2d7179ffc64729d43a7e21b6893e79c64ce95481756c789d0be2d0 |
File details
Details for the file openmm_mdanalysis_reporter-0.1-py3-none-any.whl
.
File metadata
- Download URL: openmm_mdanalysis_reporter-0.1-py3-none-any.whl
- Upload date:
- Size: 140.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.11.3
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 04b731c4529be1948bbb8ebd04cc977aea7139f87a5a91568f4e20d8723e0529 |
|
MD5 | bdf6aae044e65bf8e2fe5553a575f999 |
|
BLAKE2b-256 | 5e36081bc6ffb18024d6f89885e2e635ca47ac20bd7ba221af59335861e066ce |