https://github.com/elkins-lab/synth-dynamics
Fast Langevin dynamics engine using the Anisotropic Network Model (ANM) for rapid protein conformational ensemble generation.
https://github.com/elkins-lab/synth-dynamics
biophysics computational-biophysics computational-structural-biology langevin-dynamics molecular-dynamics nmr nmr-spectroscopy protein-dynamics saxs science-education simulation
Last synced: 1 day ago
JSON representation
Fast Langevin dynamics engine using the Anisotropic Network Model (ANM) for rapid protein conformational ensemble generation.
- Host: GitHub
- URL: https://github.com/elkins-lab/synth-dynamics
- Owner: elkins-lab
- License: mit
- Created: 2026-05-19T01:32:34.000Z (about 1 month ago)
- Default Branch: main
- Last Pushed: 2026-06-30T19:44:04.000Z (1 day ago)
- Last Synced: 2026-06-30T21:17:26.806Z (1 day ago)
- Topics: biophysics, computational-biophysics, computational-structural-biology, langevin-dynamics, molecular-dynamics, nmr, nmr-spectroscopy, protein-dynamics, saxs, science-education, simulation
- Language: Python
- Homepage: https://elkins-lab.github.io/synth-dynamics/
- Size: 5.17 MB
- Stars: 1
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
README
# synth-dynamics: Time-Resolved Ensemble Generator
[](https://codecov.io/gh/elkins-lab/synth-dynamics)
[](https://pypi.org/project/synth-dynamics/)
[](https://pypi.org/project/synth-dynamics/)
[](https://opensource.org/licenses/MIT)
[](https://github.com/elkins-lab/synth-dynamics/actions/workflows/test.yml)
[](https://github.com/elkins-lab/synth-dynamics/actions/workflows/lint.yml)
[](https://github.com/astral-sh/ruff)
[](https://mypy-lang.org/)
`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:
- [](https://colab.research.google.com/github/elkins-lab/synth-dynamics/blob/main/examples/interactive_tutorials/enm_dynamics.ipynb) **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:
```bash
pip install numpy MDAnalysis scipy
```
To install the documentation theme:
```bash
pip install sphinx_rtd_theme
```
## Quick Start
Running a simulation is straightforward:
```python
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:
```bash
cd docs
sphinx-build -b html . _build/html
```
## Testing
To run the test suite and verify coverage:
```bash
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](https://github.com/elkins-lab/synth-nmr) or [synth-saxs](https://github.com/elkins-lab/synth-saxs) ensemble averaging:
- [synth-pdb](https://github.com/elkins-lab/synth-pdb) โ Core protein structure generator
- [synth-nmr](https://github.com/elkins-lab/synth-nmr) โ NMR observables simulator
- [synth-saxs](https://github.com/elkins-lab/synth-saxs) โ SAXS profile simulator
- [synth-cryo-em](https://github.com/elkins-lab/synth-cryo-em) โ Cryo-EM map simulator
- [diff-biophys](https://github.com/elkins-lab/diff-biophys) โ Differentiable JAX biophysics kernels
## Contributing
Contributions are welcome! Please open an issue or pull request on [GitHub](https://github.com/elkins-lab/synth-dynamics). Run `pre-commit run --all-files` before submitting.
## Citation
```bibtex
@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}
}
```