Skip to main content

Time-Resolved Ensemble Generator using Coarse-Grained ENM Langevin Dynamics

Project description

synth-dynamics: Time-Resolved Ensemble Generator

codecov PyPI version Python License: MIT Tests Lint Ruff Checked with mypy

synth-dynamics is a fast, lightweight molecular dynamics engine designed to generate meaningful conformational ensembles of proteins. Unlike full-atom simulations (like GROMACS or Amber), synth-dynamics uses a Coarse-Grained Anisotropic Network Model (ANM) and Langevin dynamics to capture the essential global motions of proteins with minimal computational overhead.

This tool is designed to bridge the gap between static structures and time-averaged experimental observables, such as NMR relaxation parameters, SAXS Kratky plots, or FRET efficiency distributions.


🧪 For Structural Biologists

  • Ensemble Generation: Rapidly sample the conformational landscape of a protein to simulate disordered states or flexible loops.
  • Integration: Works seamlessly with MDAnalysis and biotite for trajectory processing.

🤖 For Machine Learning Researchers

  • Dynamic Training Data: Generate synthetic molecular trajectories to train time-series models (LSTMs, Transformers) or dynamic GNNs.
  • High Performance: Optimized for throughput, allowing the generation of millisecond-scale ensembles in seconds.

Key Features

  • Coarse-Grained Simulation: Models proteins using C-alpha atoms and harmonic "spring" networks.
  • Fast Langevin Engine: Propagates coordinates using a stable, overdamped Langevin integrator.
  • Experimental Integration: Perfect for generating the structural ensembles needed for synth-nmr or synth-saxs.
  • Easy to Use: Simple API for loading PDBs, configuring forcefields, and running simulations.
  • Extensively Tested: 100% test coverage ensuring reliability and correctness.

📚 Tutorials

Experience synth-dynamics directly in your browser:

  • Open In Colab Elastic Network Models & Langevin Dynamics — Learn how to predict protein flexibility and simulate thermal fluctuations.

Installation

synth-dynamics requires Python 3.10+ and the following dependencies:

pip install numpy MDAnalysis scipy

To install the documentation theme:

pip install sphinx_rtd_theme

Quick Start

Running a simulation is straightforward:

from synth_dynamics import System, ANMForceField, LangevinIntegrator, Simulation

# 1. Load the system (automatically filters for C-alpha atoms)
system = System("protein.pdb")

# 2. Define the Anisotropic Network Model forcefield
# Cutoff (15A) and spring constant determine the flexibility
ff = ANMForceField(system.equilibrium_coords, cutoff=15.0, spring_constant=1.0)

# 3. Initialize the Langevin integrator (dt in ps, T in Kelvin)
integrator = LangevinIntegrator(dt=0.1, temperature=300.0, friction=1.0)

# 4. Run and save the trajectory
sim = Simulation(system, ff, integrator)
sim.run(n_steps=1000, output_path="trajectory.dcd", stride=10)

Documentation

Full API documentation and usage guides are available in the docs/ directory. You can build the HTML documentation locally:

cd docs
sphinx-build -b html . _build/html

Testing

To run the test suite and verify coverage:

PYTHONPATH=. pytest --cov=synth_dynamics tests/

License

This project is licensed under the MIT License - see the LICENSE file for details (if applicable).

Related Projects

This library is part of the synth-pdb ecosystem — use it to generate trajectories for synth-nmr or synth-saxs ensemble averaging:

Contributing

Contributions are welcome! Please open an issue or pull request on GitHub. Run pre-commit run --all-files before submitting.

Citation

@software{synth_dynamics,
  author  = {Elkins, George},
  title   = {synth-dynamics: Coarse-grained protein dynamics for ensemble generation},
  year    = {2026},
  url     = {https://github.com/elkins-lab/synth-dynamics},
  version = {0.1.3}
}

Project details


Download files

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

Source Distribution

synth_dynamics-0.1.3.tar.gz (18.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

synth_dynamics-0.1.3-py3-none-any.whl (8.9 kB view details)

Uploaded Python 3

File details

Details for the file synth_dynamics-0.1.3.tar.gz.

File metadata

  • Download URL: synth_dynamics-0.1.3.tar.gz
  • Upload date:
  • Size: 18.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for synth_dynamics-0.1.3.tar.gz
Algorithm Hash digest
SHA256 f41a53ffe7face72f3ffe82042f83df01674f3536b6b728268d6248f9563a5ec
MD5 04fea3ebff91e15743ba8c5f0bf26361
BLAKE2b-256 83650708c485d93ab52a51c93a9be4a22caf3b71be70b559b5879114c2652aba

See more details on using hashes here.

Provenance

The following attestation bundles were made for synth_dynamics-0.1.3.tar.gz:

Publisher: publish.yml on elkins-lab/synth-dynamics

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file synth_dynamics-0.1.3-py3-none-any.whl.

File metadata

  • Download URL: synth_dynamics-0.1.3-py3-none-any.whl
  • Upload date:
  • Size: 8.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for synth_dynamics-0.1.3-py3-none-any.whl
Algorithm Hash digest
SHA256 2a17d80d5503ae49fab44bd77dc25466e63deb35007c4ad5daaa40f93bad43b9
MD5 ae18db62e191d216cc035c01b83238fc
BLAKE2b-256 2a85fdd190f10496cf14bf6401adc8382833ad309fa58de1e989a43e231e4b74

See more details on using hashes here.

Provenance

The following attestation bundles were made for synth_dynamics-0.1.3-py3-none-any.whl:

Publisher: publish.yml on elkins-lab/synth-dynamics

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page