Skip to main content

A small package for building molecular systems using the AMBER \ force field and deploying OpenMM simulations on HPC clusters using Parsl.

Project description

molecular-simulations

CI/CD codecov PyPI version Documentation Status License: MIT Python 3.10+

A comprehensive Python toolkit for building, running, and analyzing molecular dynamics simulations using the AMBER force field ecosystem and OpenMM.

📖 Full Documentation

Features

🔨 System Building

  • Explicit solvent systems with OPC water model
  • Implicit solvent support for faster calculations
  • Small molecule parameterization via GAFF2

⚡ Simulation Engine

  • OpenMM integration (v8.0+) with GPU acceleration
  • Advanced simulations Constant-pH and Empirical Valence Bond
  • HPC deployment via Parsl for PBS schedulers
  • MM-PBSA calculations for binding free energy estimation in parallel
  • Flexible configuration for various cluster environments

📊 Analysis Tools

  • Automatic clustering with KMeans++ and dimensionality reduction (PCA)
  • Protein-protein interaction analysis using covariance matrix approach
  • Interaction energy fingerprinting (electrostatic + Lennard-Jones)
  • Linear interaction energy calculations (static and dynamic)
  • Interface scoring with ipTM, ipSAE, pDockQ, and pDockQ2
  • SASA calculations (absolute and relative) via MDAnalysis
  • Residue energy footprinting for binding site characterization

Installation

Install from PyPI:

pip install molecular-simulations

For small molecule support (requires RDKit and OpenBabel):

pip install molecular-simulations[ligand]

For development:

pip install molecular-simulations[dev]

Quick Start

Building a Solvated System

from molecular_simulations.build import ExplicitSolvent
from pathlib import Path

# Build an explicitly solvated system
pdb_file = Path('/path/to/protein.pdb')
output_dir = Path('/path/to/outputs')

builder = ExplicitSolvent(output_dir, pdb_file)
builder.build()

# Outputs: topology (.prmtop) and coordinates (.inpcrd)

Running a Simulation

from molecular_simulations.simulate import Simulator

# Initialize and run simulation
sim = Simulator(
    path=builder.out.parent, # Directory containing simulation inputs
)
sim.run()

Analyzing Trajectories

Interaction Energy Fingerprinting

from molecular_simulations.analysis import Fingerprinter

fp = Fingerprinter(
    topology='/path/to/system.prmtop',
    trajectory='/path/to/trajectory.dcd',
    target_selection='segid A',
    binder_selection='segid B'
)
fp.run()
fp.save()  # Saves to fingerprint.npz

Automatic Clustering

from molecular_simulations.analysis import AutoKMeans

clusterer = AutoKMeans(
    data_directory='/path/to/features/', # should be populated with .npy files
    max_clusters=10,
    reduction_algorithm='PCA',
    reduction_kws={'n_components': 2}
)
clusterer.run()
clusterer.save_labels()   # Saves cluster assignments
clusterer.save_centers()  # Saves cluster centroids

MM-PBSA implementation

from molecular_simulations.simulate.mmpbsa import MMPBSA

mmpbsa = MMPBSA(
    top='/path/to/file.prmtop',
    dcd='/path/to/traj.dcd',
    selections=[':1-100', ':101-200'], # cpptraj-style selections
    n_cpus=1,                          # CPU-based parallelism supported
    amberhome='/path/to/dir',          # should be above /bin/cpptraj
    parallel_mode='frame'              # frame or serial
)

Protein-Protein Interaction Analysis

from molecular_simulations.analysis import PPInteractions

ppi = PPInteractions(
    top='/path/to/topology.prmtop',
    traj='/path/to/trajectory.dcd',
    out='/path/to/outputs/',
    sel1='chainID A',
    sel2='chainID B'
)
ppi.run()  # Analyzes H-bonds, salt bridges, hydrophobic contacts

Interface Scoring (ipSAE/pDockQ)

from molecular_simulations.analysis import ipSAE

scorer = ipSAE(
    structure_file='/path/to/complex.pdb',
    pae_file='/path/to/pae.json',  # AlphaFold PAE matrix
    plddt_file='/path/to/plddt.json'
)
scores = scorer.run()
# Returns: ipTM, ipSAE, pDockQ, pDockQ2 scores

SASA Calculations

from molecular_simulations.analysis import SASA, RelativeSASA

# Absolute SASA
sasa = SASA(universe, selection='protein')
sasa.run()
results = sasa.measure_sasa()

# Relative SASA (normalized by max accessible area)
rsasa = RelativeSASA(universe, selection='protein')
rsasa.run()

Supported Force Fields

|==============AMBER==============|

Component Force Field Notes
Proteins ff19SB Fixed-charge, recommended
Proteins ff15ipq Polarizable
DNA OL21 Latest AMBER DNA parameters
RNA OL3 Standard RNA parameters
Small molecules GAFF2 General AMBER Force Field 2
Water (explicit) OPC 4-point model
Water (polarizable) SPC/Eb For ff15ipq systems

|=============CHARMM=============| See OpenMM documentation on providing parameter sets. CHARMM does not translate very well to the pre-build XML files for unusual lipids, small molecules, etc.

Requirements

  • Python ≥ 3.10
  • OpenMM ≥ 8.0
  • MDAnalysis ≥ 2.7
  • Parsl ≥ 2024.1.29
  • NumPy, SciPy, scikit-learn, Polars
  • ambertools
  • Optional: RDKit, OpenBabel (for ligand parameterization)

Known Issues

  • OpenMM versions 8.0-8.1 may exhibit slower integration times for larger systems due to a known bug
  • Advanced features are tested but not all edge cases have been encountered, please open an Issue if you find one

Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

  1. Fork the repository
  2. Create your feature branch (git checkout -b feature/AmazingFeature)
  3. Commit your changes (git commit -m 'Add some AmazingFeature')
  4. Push to the branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request

Citation

If you use this software in your research, please cite:

@software{molecular_simulations,
  author = {Sinclair, Matt},
  title = {molecular-simulations: A Python toolkit for MD simulation and analysis},
  url = {https://github.com/msinclair-py/molecular-simulations},
  year = {2025}
}

License

This project is licensed under the MIT License - see the LICENSE file for details.

Acknowledgments

  • OpenMM for molecular dynamics engine
  • MDAnalysis for trajectory analysis
  • Parsl for parallel workflow execution
  • AMBER force field developers

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

molecular_simulations-0.4.0.tar.gz (1.9 MB view details)

Uploaded Source

Built Distribution

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

molecular_simulations-0.4.0-py3-none-any.whl (132.9 kB view details)

Uploaded Python 3

File details

Details for the file molecular_simulations-0.4.0.tar.gz.

File metadata

  • Download URL: molecular_simulations-0.4.0.tar.gz
  • Upload date:
  • Size: 1.9 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.11

File hashes

Hashes for molecular_simulations-0.4.0.tar.gz
Algorithm Hash digest
SHA256 226fd02d8b5fba1339f7c1181d93c8636fd8375523355ad87955102fe7956795
MD5 a557d30c0f83f88e97cd60e6ba5da7d7
BLAKE2b-256 4683711009dcaa02c66cdc8c712450a10cea664328b9f4fe45e276c452506e31

See more details on using hashes here.

File details

Details for the file molecular_simulations-0.4.0-py3-none-any.whl.

File metadata

File hashes

Hashes for molecular_simulations-0.4.0-py3-none-any.whl
Algorithm Hash digest
SHA256 243e99de08b30d9e4bfb00847aa326b639a52efa67cddd45e8c4ca68cfd24bd7
MD5 b1018be2b101934f3e2bc2754dbeb857
BLAKE2b-256 0a02dc04bd22b195f3ecd1aa5c0faf2bac3716b8a18a8d111fddf8d0465aa814

See more details on using hashes here.

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