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 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
  • 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 matrices
  • 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/',
    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

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

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

Requirements

  • Python ≥ 3.10
  • OpenMM ≥ 8.0
  • MDAnalysis ≥ 2.7
  • Parsl ≥ 2024.1.29
  • NumPy, SciPy, scikit-learn
  • 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.3.28.tar.gz (9.3 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.3.28-py3-none-any.whl (94.7 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: molecular_simulations-0.3.28.tar.gz
  • Upload date:
  • Size: 9.3 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.3.28.tar.gz
Algorithm Hash digest
SHA256 25150a0dd60a4c429c8d827b0833e94573b3c5c8e398cd99d91a5cfcc19464c0
MD5 11753c9e04c4ff61ea4ea4bb1aa4cd11
BLAKE2b-256 c309c8fad54ac3ba0897cde10c0585b8f22c923b62cb894079ee4d04561cd0c7

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for molecular_simulations-0.3.28-py3-none-any.whl
Algorithm Hash digest
SHA256 05baf71f344dc5366de92182cbfc3010c18b17a8494ae04190d42b260c693099
MD5 09aaae15e83608ae94f605aeebe6e2a2
BLAKE2b-256 28ce876be1cda9e4d5b5848cdbaa0bbd4fca1f216eebb011e6704cfd4187fed3

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