Effort: extensive
Compose the molecular-dynamics skill (OpenMM + MDAnalysis) into a
production MD pipeline: given a structure (PDB id, AlphaFold
prediction, or docking-output complex), prepare the system with
appropriate force fields, run a configurable production simulation
(default 100 ns), analyze the trajectory for RMSF, dynamic cross-
correlation, principal-component motion modes, and persist all
outputs as a versioned MD-run artifact. Used by Theorist to ground
"protein dynamics" claims in actual simulation, not literature
hand-waving.
The molecular-dynamics skill exists (.claude/skills/molecular-dynamics)
but no Forge tool composes it into a hypothesis-grounding workflow.
A debate over "this loop is conformationally flexible and that's why
the drug doesn't bind well" needs MD evidence to settle; today the
Skeptic has no way to demand it. A reproducible MD pipeline turns
this from a literature-citation contest into an experimental-evidence
exchange — a much higher epistemic bar.
scidex/forge/md_pipeline.py (≤900 LoC):prepare_system(structure, force_field='amber14',
water_model='tip3p', ions='0.15 M NaCl') — uses OpenMM'ssystem, topology, positions.run_production(system, topology, positions, ns=100,
timestep_fs=2.0) — runs production MD with a Langevinanalyze_trajectory(traj_path) — uses MDAnalysis to computepipeline(structure_or_pdb_id, ns=100) — composes; commitsdata/scidex-artifacts/md/<structure>/<run_id>/md_run(run_id PRIMARY KEY, structure_source,tools.py registers md_simulation_pipeline(pdb_id, ns=100)@log_tool_call; default ns is 100; CPU runs hard-cap at/artifacts/<id> renders RMSF plot, top-3 PCA motion-modemd_evidence block when thepython -m scidex.forge.md_pipeline --pdb 1AKI --nsget-available-resources queried beforeopenff parametersopenmmforcefields.
xtc (compressed) every 10 ps;scidex/senate/personas/skeptic.py (or wherever skeptic promptsmolecular-dynamics skill (OpenMM + MDAnalysis).get-available-resources skill.data/scidex-artifacts/ submodule.q-tool-drug-docking-workflow — produces complexes that benefitprepare_system(structure, force_field, water_model, ions) — resolves PDB ID / AlphaFold / local file via _resolve_structure, fixes PDB with PDBFixer, builds solvated system with OpenMM Modeller, serialises to XML.run_production(prepared, ns, timestep_fs) — LangevinMiddleIntegrator at 310 K, GPU platform auto-detection (CUDA/OpenCL/Metal), DCDReporter (10 ps frames), CheckpointReporter (1 ns), energy minimisation before MD. CPU capped at 10 ns.analyze_trajectory(traj_path, topology_path, run_id) — MDAnalysis: RMSF per residue, PCA variance components, vectorised DCCM on Cα z-coordinates, H-bond occupancy, DSSP secondary structure. Plots: RMSF bar chart, PCA variance bar, DCCM heatmap as SVG.pipeline(structure_or_pdb_id, ns) — full pipeline with resource governance, artifact registration, DB write.get_recent_md_run(pdb_id_or_gene) — DB lookup for Skeptic injection.
md_run table with run_id PK, indexes on pdb_id_or_artifact_id, finished_at, artifact_id.md_simulation_pipeline(pdb_id, ns=100) registered with @require_preregistration @log_tool_call._md_evidence_block injected into Skeptic prompt alongside _tissue_table_block — mirrors GTEx/dossier pattern, queries get_recent_md_run for top 2 genes._check_resources(ns) queries get-available-resources skill, refuses if RAM < 8 GB or estimated runtime > 24 h./artifacts/<id> rendering (RMSF plot, PCA GIF animations, flexibility heatmap) — requires api.py changes for artifact viewer; tracked as follow-on.