Skip to main content

Parallel analysis for ensemble simulations

Project description

Warning: This package is still under constrution.

pypi travis readthedocs Coverage Status

Powered by MDAnalysis

open in colab

ENPMDA is a parallel analysis package for ensemble simulations powered by MDAnalysis.

It stores metadata in pandas.DataFrame and distributes computation jobs in dask.DataFrame so that the parallel analysis can be performed not only for one single trajectory but also across simulations and analyses.

It can be used as an initial inspection of the raw trajectories as well as a framework for extracting features from final production simulations for further e.g. machine learning and markov state modeling. It automatically fixes the PBC issue, and align and center the protein inside the simulation box. It also works for multimeric proteins!

The framework is intended to be adaptable by being able to simply wrapping MDAnalysis analysis functions without worrying about the parallel machinery behind.

Features

  • Parallel analysis for ensemble simulations.

  • Dataframe for storing and accessing results.

  • dask-based task scheduler, suitable for both workstations and clusters.

  • Expandable analysis library powered by MDAnalysis.

Example Code Snippet

from ENPMDA import MDDataFrame
from ENPMDA.preprocessing import TrajectoryEnsemble
from ENPMDA.analysis import get_backbonetorsion, rmsd_to_init

# construct trajectory ensemble
traj_ensemble = TrajectoryEnsemble(
                                ensemble_name='ensemble',
                                topology_list=ensemble_top_list,
                                trajectory_list=ensemble_traj_list
                                )
traj_ensemble.load_ensemble()

# initilize dataframe and add trajectory ensemble
md_dataframe = MDDataFrame(dataframe_name='dataframe')
md_dataframe.add_traj_ensemble(traj_ensemble, npartitions=16)

# add analyses
md_dataframe.add_analysis(get_backbonetorsion)
md_dataframe.add_analysis(rmsd_to_init)


# save dataframe
md_dataframe.save('results')

# retrieve feature
feature_dataframe = md_dataframe.get_feature([
                    'torsion',
                    'rmsd_to_init'
                    ])

# plot analysis results
import seaborn as sns
sns.barplot(data=feature_dataframe,
            x='system',
            y='rmsd_to_init')
sns.lineplot(data=feature_dataframe,
             x='traj_time',
             y='0_phi_cos',
             hue='system')

Workflow Illustration

https://mermaid.ink/img/pako:eNqFklFPwjAQx7_Kpc8DjY8EMcLAmBhjhJgYRki3HqPStbPtAnPw3b0xppCY2Jde7-5_90vvKpYYgazHUsvzNTy9Rhro3M9HRjtvi8TDzPIPTLyx5Vg7zGKFC-h0BjBsUofVZyGTDSRrTDZSp2B0aurbyaxQ3EsqdHc45R6F-3d0exjNI8aFgH48iI0WKJbe5EaZtFwq6Xz_Kh4EFLQDo1W5tHx7O7MFRmxxUerZ7CGsfIso0QFXFrkoIbeYW5OgcyiCuhBgN-3Cy3AEK7lD0UKFZ1Bjgvq7X_jbb_I_-Y9scpQ9kIIYtVsZm6GAC96tVApihK2V3qPukpYFLEObcSloMlVdifRrzAinR2bMHVnBmf-NW8lpMq5OqJrWEVsZ7afy66S6uc53J1UbnPBMqrIJP2qPNmJ1mD7mQAhFLrjHsZAEynq0DBgwXngzLXXSvpucUHLan6xxHr4B8eTGgA

User Cases

Illustration of the ensemble analysis workflow.

Benchmarking

For a system of 250,000 atoms (1500 protein residues), the total time for analyzing 220,000 frames of

  • RMSD to initial frame

  • Pore hydration

  • All protein torsion angle

  • All C-alpha positions

  • 15,000 pair-wise distances

is 10 minutes using 5 nodes in Dardel (640 cores).

Benchmark of the ensemble analysis workflow.

TODO

  • option to add more than one ensemble

  • more analysis functions.

  • unit testing

  • benchmarking

  • documentation

  • add functions to cancel running tasks

See Also

Credits

This package was created with Cookiecutter and the audreyr/cookiecutter-pypackage project template.

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

enpmda-1.2.0.tar.gz (2.0 MB view details)

Uploaded Source

Built Distribution

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

enpmda-1.2.0-py2.py3-none-any.whl (25.7 kB view details)

Uploaded Python 2Python 3

File details

Details for the file enpmda-1.2.0.tar.gz.

File metadata

  • Download URL: enpmda-1.2.0.tar.gz
  • Upload date:
  • Size: 2.0 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.9.25

File hashes

Hashes for enpmda-1.2.0.tar.gz
Algorithm Hash digest
SHA256 bdf2b0c9496cc7b2405e8ea7a0467325f1d548290324afa5b8ab8d92457a3888
MD5 0d9a376c79bc3d6755e16d8a0626a9bd
BLAKE2b-256 96d804ada301746d8575b65412ca3c74e3517948962c7d23bdb6751e8883cf2d

See more details on using hashes here.

File details

Details for the file enpmda-1.2.0-py2.py3-none-any.whl.

File metadata

  • Download URL: enpmda-1.2.0-py2.py3-none-any.whl
  • Upload date:
  • Size: 25.7 kB
  • Tags: Python 2, Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.9.25

File hashes

Hashes for enpmda-1.2.0-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 d8181467e2d74ab5c434724cace9eddf1f39c6b4b34bef234b8f3b39962c26c6
MD5 c2fafb19542727aa4d6e8c27c52e2a06
BLAKE2b-256 32f990058a9f450470a893a4745ec0fb9d1242cc461201e0382de56697a2e26b

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