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
└── 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
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",
)