Run the Workflow
Drive the resumable propose → dock → ingest loop — the fast path with the worked examples, or the manual loop by hand.
Fastest path — the worked examples
examples/run_navigator.sh drives the whole resumable propose → dock → ingest
loop for you against Freedom Space, docking each batch with your own Glide, for
three ready-made targets (KIF11, PYRD, TGFR1). After
installing a database:
export SCHRODINGER=/opt/schrodinger2026-1 # your install
examples/run_navigator.sh TGFR1 # gamma, 100k budget, 10 rounds, Glide
examples/run_navigator.sh KIF11 --budget 10k --gpu # quick run, GPU surrogate
examples/run_navigator.sh PYRD --scorer mock --budget 200 --iters 2 # smoke, no SchrödingerIt is resumable (re-run the same command to continue), writes a compiled
runs/<run>/pipeline.log, and lets you pick the strategy
(--method gamma|alpha|beta|analog|all) and budget (--budget 10k|100k|1m). See
Worked examples for all options.
Manual loop
To drive the steps yourself, put your target config and reaction/synthon inputs
under ./inputs, then:
navigator init --run-dir runs/hk --config-json inputs/HK.json --overwrite
proposals="$(navigator propose --run-dir runs/hk)"
# stdout: runs/hk/proposals/iteration_0000_proposals.parquet
# also writes:
# runs/hk/proposals/iteration_0000_proposals.csv
# runs/hk/scores/iteration_0000_scores_template.csv
# Copy the template, set each row's status and score externally, then ingest it.
cp runs/hk/scores/iteration_0000_scores_template.csv \
runs/hk/scores/iteration_0000_scores.csv
navigator ingest --run-dir runs/hk --scores runs/hk/scores/iteration_0000_scores.csv
navigator propose --run-dir runs/hk # next batch
navigator status --run-dir runs/hkTo screen an installed database instead of your own inputs, point init at it
with --database (and a target):
navigator init --run-dir runs/freedom --database freedom-space-5@2026-03-296b.2 \
--target inputs/my_target.json --overwrite
navigator propose --run-dir runs/freedomPath mapping
Paths are relative to the container's working directory: runs/… maps to
./runs, inputs/… to ./inputs, and installed databases live in
./databases.
The image's self-contained example target is named examples/configs/HK.json
(not examples/targets/HK.json). Target configs use space.reactions_path and
space.synthons_path; the install smoke-test notebook shows how to copy and
adapt that example.
Append --help to any workflow command for its options
(navigator status --help).
Score handoff contract
propose writes iteration_NNNN_proposals.parquet (+ .csv) and a
iteration_NNNN_scores_template.csv, plus a per-batch JSON manifest under
checkpoints/. You return a file with these columns:
| Column | Meaning |
|---|---|
product_id | must exist exactly once in the pending batch |
status | valid, failed, timeout, filtered, or cancelled |
score | numeric only for valid rows |
batch_id | (optional) must match the pending batch if present |
Ingestion rejects unknown/duplicate/wrong-batch rows, verifies returned SMILES canonicalize to the proposed structure, counts failed docks toward the budget but excludes them from the regression target, is idempotent for byte-identical re-ingestion, and checkpoints atomically.