- In git: the annotation CSVs (train / PPI-103 / FAB-75) and the fold
assignments. See
../data/README.md. - Downloaded separately, then unpacked by
make data: two archives.
| Archive | Contents | Where to download |
|---|---|---|
pcann_v2.tar.gz |
the 25 EXP-043 models | this repo's GitHub Releases page |
pcann_v2-pdb.tar.gz |
structures (~1.5 GB) | out-of-band link (see the release notes) |
Download the archive(s) you need into the repo root, then unpack:
make data # extracts every pcann_v2*.tar.gz presentmake data is just a convenience wrapper around tar xzf; the archives extract to their
repo-relative paths (logs/multiruns/EXP-043/…, data/raw/ppb-affinity/pdb/…).
ESM2 embeddings are not shipped. They are large (~4.7 GB) and fully reproducible from the
pdbarchive plus the public ESM weights, so you compute them locally (below) before running inference or training.
The model reads per-residue esm2_t33_650M_UR50D embeddings (layer 33) directly as
.pt files from data/raw/ppb-affinity/esm/<uid>.pt. You must generate them before
inference or training — nothing downstream works without them. The same command also
embeds any new PDBs you add later.
# 1. Clone the ESM repo (weights auto-download on first run).
git clone https://github.com/facebookresearch/esm
export ESM_MODEL_DIR=$PWD/esm
# 2. Embed every .pdb in the shipped structure directory (or any directory).
make esm # == run_esm_extraction.py data/raw/ppb-affinity/pdb --savedir data/raw/ppb-affinity/esm
# or directly, for an arbitrary directory:
uv run python scripts/data/run_esm_extraction.py \
<pdb_dir> \
--savedir data/raw/ppb-affinity/esm \
--workers 2run_esm_extraction.py resolves the model directory from --esm-model-dir, falling
back to the ESM_MODEL_DIR environment variable; it errors if neither is set. It runs
on the GPU automatically when one is visible (CPU otherwise), writes one <uid>.pt
per structure, and skips any that already exist. On a GPU, prefer --workers 1 to avoid
loading the 650M model onto the same device from several subprocesses at once.
Each annotation row describes one complex: uid, receptor_chains, ligand_chains,
and the measured affinity (KD / dG). The composite key
uid_receptorchains_ligandchains is what fold assignments and predictions are keyed on.