# KS1H+ induced-fit control This transfers `/root/me344-dock`'s **pre-expanded rigid receptor cross-docking** procedure to the author S5.4 KS1 monocation. It does not perform protein relaxation. Read `docs/analysis/ks1-inducedfit-2026-09-13.md` before interpreting scores. ```sh /root/girdin-dock/venv/bin/python scripts/ks1_inducedfit/prepare.py \ --out data/ks1-inducedfit/NEW_RUN setsid nohup taskset -c 0-3 nice -n 10 \ /root/girdin-dock/venv/bin/python scripts/ks1_inducedfit/run.py \ --root data/ks1-inducedfit/NEW_RUN > data/ks1-inducedfit/NEW_RUN/run.stdout 2>&1 < /dev/null & /root/girdin-dock/venv/bin/python scripts/ks1_inducedfit/analyse.py \ --root data/ks1-inducedfit/NEW_RUN /root/girdin-dock/venv/bin/python scripts/ks1_inducedfit/viewer.py \ --root data/ks1-inducedfit/NEW_RUN ``` The absolute source paths are intentional: the original receptor preparation, legacy typed PDBQT and source-pinned gallery are authoritative inputs, not files to regenerate from molecule names. Preparation copies and hashes them; preserve that input bundle for reuse elsewhere. Raw data remains ignored. NumPy and RDKit are required; installed versions are recorded with the final evidence. `analyse.py --partial` only inspects completed, sealed receipts and writes to a separate `analysis-partial` directory. Final analysis requires exactly the full 20 KS1 jobs plus the four declared controls. Every output's SHA-256 and manifest association are checked. Zero returned modes or malformed outputs are preserved as failed calculations, never dropped from the plan. Pose QC checks atom names/types, all fixed-core distances, proper core alignment and the six anchor bonds. Clustering uses nonaligned 55-heavy-atom RMSD with aryl symmetry (2 Å threshold). A few modes are not proof of a snug or invalid fit: energy-window and RMSD output filters also limit counts. Inspect the actual contacts and scores. The AD8 control separately measures best sampled and top-ranked crystallographic RMSD. Tests: `python scripts/ks1_inducedfit/test_geometry.py` uses the prepared dated input. It challenges coordination breakage, rigid transforms, aryl symmetry and the distinction between pose RMSD and aligned-conformer RMSD. `shard.py` is a prepared optional transport worker for the two 1N45 variants. Remote transfer/execution requires explicit authorization; its preparation is not evidence that it ran. Collect only sealed, hash-verified results before the local controller reaches those jobs, and never overwrite an active attempt. Observed primary poses at the edge of the 22-A box motivated two adaptive 30-A/seed42 checks in the expanded structures. `box_sensitivity.py --root RUN` writes a separate plan, logs and summary under `box30/`; it never rewrites the primary matrix. Treat favorable surface poses from a wider box as a search-region sensitivity, not validation of the original distal site. It uses the same four physical CPU affinity as the primary queue if run concurrently.