API Overview
PolyzyMD is organized into the following modules:
Package Structure
polyzymd/
├── config/ # Configuration and YAML loading
│ ├── schema.py # Pydantic models for all config sections
│ └── loader.py # YAML loading utilities
├── builders/ # System building components
│ ├── enzyme.py # Enzyme/protein preparation
│ ├── substrate.py # Substrate/ligand handling
│ ├── polymer.py # Polymer chain generation
│ ├── solvent.py # Solvation and ion addition
│ └── system_builder.py # Main system assembly
├── simulation/ # MD simulation execution
│ ├── runner.py # Simulation runner
│ ├── continuation.py # Checkpoint continuation
│ ├── progress.py # Segment progress tracking
│ └── signals.py # SLURM signal handling
├── workflow/ # HPC workflow management
│ ├── slurm.py # SLURM script generation
│ └── daisy_chain.py # Job submission
├── core/ # Core utilities
│ ├── parameters.py # Simulation parameters
│ └── restraints.py # Restraint definitions
├── analyses/ # ★ Plugin system — unified analysis lifecycle
│ ├── base.py # Analysis ABC, context objects, result models
│ ├── discovery.py # pkgutil-based auto-discovery
│ ├── orchestrator.py # Framework engine
│ ├── stats.py # Shared statistical utilities
│ ├── shared/ # Reusable utilities (TrajectoryLoader, alignment, etc.)
│ ├── rmsd/ # RMSD plugin package
│ ├── rg/ # Rg plugin package
│ ├── rmsf/ # RMSF plugin package
│ ├── contacts/ # Contacts plugin package
│ ├── distances/ # Distance analysis plugin package
│ ├── secondary_structure/ # Secondary structure plugin package
│ └── ... # One sub-package per analysis type
├── config/
│ └── comparison.py # ComparisonConfig, PlotSettings, condition models
├── analyses/shared/
│ ├── inferential_statistics.py # t-tests, ANOVA, effect sizes
│ ├── result_io.py # Comparison result discovery/loading
│ └── paths.py # sanitize_label() and path helpers
├── cli/
│ └── compare.py # `polyzymd compare` subcommands
└── cli/ # Command-line interface
└── main.py # Click CLI
Key Classes
Configuration
SimulationConfig- Main configuration containerEnzymeConfig- Enzyme settingsPolymerConfig- Polymer settingsOutputConfig- Output directory settings
Building
SystemBuilder- Main system builderEnzymeBuilder- Enzyme preparationPolymerBuilder- Polymer generation
Simulation
SimulationRunner- Run simulationsContinuationManager- Continue from checkpointSimulationProgress- Track segment completion across jobs
Workflow
DaisyChainSubmitter- Self-resubmitting SLURM job submissionSlurmConfig- SLURM configuration
Restraints
RestraintDefinition- Restraint specificationAtomSelection- Atom selectionRestraintFactory- Create restraints from config
Analysis
Analysis- Plugin base class for all analysesDistanceCalculator- Inter-group distancesParallelContactAnalyzer- Polymer-protein contactsBaseAnalysisResult- Serializable result base class
Comparison
Analysis- Plugin base class for all analysesComparisonResult- Universal comparison result modelMetricValue- Scalar metric descriptorReplicateContext- Context for per-replicate computationComparisonContext- Context for cross-condition comparison
Quick Reference
Load Configuration
from polyzymd.config.schema import SimulationConfig
config = SimulationConfig.from_yaml("config.yaml")
print(config.enzyme.name)
Build System
from polyzymd.builders.system_builder import SystemBuilder
builder = SystemBuilder(config)
interchange = builder.build(replicate=1)
Run Simulation
from polyzymd.simulation.runner import SimulationRunner
runner = SimulationRunner(interchange, working_dir, config)
runner.run_equilibration()
runner.run_production(segment_index=0)
Submit to SLURM
from polyzymd.workflow.daisy_chain import submit_daisy_chain
results = submit_daisy_chain(
config_path="config.yaml",
slurm_preset="aa100",
replicates="1-5",
)