An interactive terminal application for conformer-driven POI–PROTAC–E3 assembly, crystallographic controls, standalone HTML reports and exportable scientific figures.
Version 0.1 is a structural baseline, not a validated predictor. Its initial controls show substantial prediction errors. See measured results.
The accuracy research audits the baseline and compares published methods. Read the implementation plan, offline report or PDF. P0 now provides independent assessment and a protected 32-case inventory; sampling and ranking improvements remain pending. Full-ensemble results preserve the measured baseline.
Python 3.11+ is required. From the project directory:
uv sync
uv run topicsWithout uv, create a virtual environment and run python -m pip install -e ., then topics.
The terminal menu runs a control, assembles custom inputs, evaluates a run or checks devices.
Option 5 assesses every saved candidate independently; optional DockQ/PoseBusters setup is
documented in ASSESSMENT.md.
uv run topics doctor
uv run topics benchmark examples/5t35.json --out runs/5t35
uv run topics benchmark examples/6boy.json --out runs/6boyControls download the selected PDB structure and chemical component dictionary. Use
--data-dir <data directory> for local <PDB ID>.cif and <CCD ID>.cif files.
Compressed pdb_0000<lowercase PDB ID>.cif.gz coordinate files are also accepted.
Review PDB usage and citation.
Defaults: one CPU thread, 16 conformers, one seed, CPU distances and a 50-ms pause between candidates. Coordinate storage has an estimated 256 MiB budget. Split large jobs into runs. No background workers or servers are launched.
CUDA accelerates distance blocks, not RDKit conformer generation. For a compatible NVIDIA GPU:
uv sync --extra gpu
uv run topics doctor --device cuda
uv run topics benchmark examples/5t35.json --out runs/5t35-gpu --device cuda--device auto reports a CPU fallback if CUDA cannot run; explicit cuda reports an error.
Small jobs may not run faster on GPU: the initial four-conformer comparison took 2.82 s on
CPU and 2.84 s with GPU distances. No temperature guarantee is possible across hardware.
Use --threads, --conformers, --seeds and --pause to control workload.
uv run topics inspect protein.cif
uv run topics assemble input.json --out runs/custom --conformers 32 --seeds 42 43 44
uv run topics evaluate runs/custom --reference reference.npzInput JSON defines two local protein–head poses, explicit CCD atom-name mappings and the
full PROTAC dictionary. Paths resolve relative to the JSON. See methods
and a generated runs/5t35/inputs/input.json for the input contract. Reference coordinates
are a separate evaluation input and are never used by the assembler or ranking function.
Open runs/5t35/run/report.html in a browser. It works offline, with rotatable 3D coordinates,
candidate selection, metric hover, a table and downloadable artifacts.
manifest.json: versions, seeds, settings, input/output hashes and completion state.candidates.csv,ensemble.sdf,ensemble.npz,best.cif: ranking and structures.evaluation.json,evaluation.csv: reference metrics and per-seed results, when evaluated.assessment.*,assembly.*: SVG, PDF and 600-dpi PNG; captions infigure_captions.txt.view.pml: PyMOL script; open it from the run directory.
Protein figures use alpha-carbon points. Benchmark inputs include positive_control.json:
its near-zero error checks mapping and rigid transformations, not predictive accuracy.
Outputs require new directories; previous predictions are never silently overwritten.
uv sync --extra dev
uv run pytest -qSet TOPICS_TEST_DATA to local PDB/CCD files to enable biological geometry checks. CUDA tests
skip without a runtime. See AGENTS.md, rules and
short changelog. No PoliScreen implementation was copied.