THE NUMBER

Re-run a record

Every settled record can be reproduced on your own machine, to the same number and the same hash. This is the whole point of pinning the seed, the exhaustiveness, the CPU count, the box, the receptor hash and the library versions.

Fetch the pinned verifier

The verifier is served from this site, as a tarball and as five loose files under /verifier/: verify.py, medf.py, targets.py, requirements.txt and seed.json. Nothing else is needed.

curl -sO https://medfrontier.xyz/verifier/medfrontier-verifier.tar.gz && tar xzf medfrontier-verifier.tar.gz
uv venv verifier/.venv --python 3.12
uv pip install --python verifier/.venv/bin/python -r verifier/requirements.txt
verifier/.venv/bin/python verifier/verify.py version
# {"verifier_version": "medf-verify/1.0.0+vina1.2.7+rdkit2026.09.1"}

The requirements file pins RDKit, AutoDock Vina 1.2.7, Meeko, gemmi and Open Babel. Those versions are part of the version string, so a mismatch is visible before anything else.

Re-run a record

verifier/.venv/bin/python verifier/verify.py re-run PSAP-4V2O "<the published SMILES>" \
  --expect <the result hash from the record>

It prints the filter table, the score and the result hash as JSON. With --expect it compares the hash with the record's and exits non-zero if they differ, which makes it usable straight from a script or a CI job.

Check a molecule without docking

verifier/.venv/bin/python verifier/verify.py filters "CCO"
verifier/.venv/bin/python verifier/verify.py PSAP-4V2O "<your molecule>" --cpu 6

The target files, the receptors and the reference poses are served from this site under /targets/<id>/. The verifier fetches them into verifier/targets/<id>/ on first use and refuses a receptor whose sha256 differs from the published one, so a re-run needs nothing from us but the files it already names. MEDF_URL points it at another host, MEDF_TARGETS at a local folder.

← The reference score and the marginCommit, submit and settlement →