API Overview ============ molecular-simulations is organized into three main subpackages corresponding to the MD workflow: building systems, running simulations, and analyzing results. Package Structure ----------------- .. code-block:: text molecular_simulations/ ├── build/ # System preparation │ ├── build_amber # AMBER system building │ ├── build_interface # Interface utilities │ └── build_ligand # Small molecule parameterization ├── simulate/ # Simulation execution │ ├── omm_simulator # OpenMM simulation runner │ ├── mmpbsa # MM-PBSA calculations │ └── parsl_settings # HPC configuration └── analysis/ # Trajectory analysis ├── autocluster # Automatic clustering ├── cov_ppi # Protein-protein interactions ├── fingerprinter # Interaction fingerprinting ├── interaction_energy # Energy calculations ├── ipSAE # Interface scoring ├── sasa # Solvent accessible surface area └── utils # Shared utilities Building Systems (``molecular_simulations.build``) -------------------------------------------------- Classes for preparing molecular systems with AMBER force fields. .. autosummary:: :nosignatures: molecular_simulations.build.ExplicitSolvent molecular_simulations.build.ImplicitSolvent molecular_simulations.build.LigandBuilder :class:`~molecular_simulations.build.ExplicitSolvent` Build explicitly solvated systems with OPC water and counterions. Supports ff19SB (proteins), OL21 (DNA), and OL3 (RNA) force fields. :class:`~molecular_simulations.build.ImplicitSolvent` Build systems for implicit solvent simulations using GB models. :class:`~molecular_simulations.build.LigandBuilder` Parameterize small molecules with GAFF2. Requires RDKit and OpenBabel. Running Simulations (``molecular_simulations.simulate``) -------------------------------------------------------- Classes for executing MD simulations and related calculations. .. autosummary:: :nosignatures: molecular_simulations.simulate.Simulator molecular_simulations.simulate.mmpbsa.MMPBSA molecular_simulations.simulate.parsl_settings.LocalSettings molecular_simulations.simulate.parsl_settings.PolarisSettings :class:`~molecular_simulations.simulate.Simulator` Run OpenMM simulations with automatic equilibration (NVT → NPT) and production dynamics. Supports GPU acceleration and hydrogen mass repartitioning. :class:`~molecular_simulations.simulate.mmpbsa.MMPBSA` Calculate MM-PBSA binding free energies with frame-level parallelization. :class:`~molecular_simulations.simulate.parsl_settings.LocalSettings` Parsl configuration for local workstations and small clusters. :class:`~molecular_simulations.simulate.parsl_settings.PolarisSettings` Parsl configuration for ALCF Polaris supercomputer. Analyzing Trajectories (``molecular_simulations.analysis``) ----------------------------------------------------------- Classes for analyzing MD trajectories and structures. .. autosummary:: :nosignatures: molecular_simulations.analysis.AutoKMeans molecular_simulations.analysis.Fingerprinter molecular_simulations.analysis.PPInteractions molecular_simulations.analysis.ipSAE molecular_simulations.analysis.SASA molecular_simulations.analysis.RelativeSASA :class:`~molecular_simulations.analysis.AutoKMeans` Automatic KMeans clustering with elbow method for optimal k. Supports PCA and other dimensionality reduction methods. :class:`~molecular_simulations.analysis.Fingerprinter` Calculate per-residue interaction energy fingerprints (electrostatic + LJ). :class:`~molecular_simulations.analysis.PPInteractions` Analyze protein-protein interactions using covariance-based contact detection. Identifies hydrogen bonds, salt bridges, and hydrophobic contacts. :class:`~molecular_simulations.analysis.ipSAE` Score protein interfaces using AlphaFold-derived metrics: ipTM, ipSAE, pDockQ, and pDockQ2. :class:`~molecular_simulations.analysis.SASA` Calculate absolute solvent accessible surface area per residue. :class:`~molecular_simulations.analysis.RelativeSASA` Calculate relative SASA normalized by maximum accessible area. Common Patterns --------------- Most analysis classes follow a consistent interface: .. code-block:: python # Initialize with input files analyzer = AnalysisClass(topology, trajectory, **options) # Run the analysis analyzer.run() # Save results analyzer.save() # or save_labels(), save_centers(), etc. Selection Language ~~~~~~~~~~~~~~~~~~ Classes that accept selections use MDAnalysis selection syntax: .. code-block:: python # Chain selection sel = "chainID A" # Segment selection sel = "segid PROA" # Residue range sel = "resid 1-100" # Combined selections sel = "chainID A and name CA" See the `MDAnalysis selection documentation `_ for the full syntax. Full API Reference ------------------ For complete documentation of all classes and methods, see :doc:`modules`.