API
Every page is built from static files. Fetch them directly; there is no key and no rate limit. Paths are relative to https://bimsbstatic.mdc-berlin.de/akalin/asarigun/pocketvina_atlas/data/v1.1/.
| Path | Content |
|---|---|
meta.json | Release, every number with its definition and source, PocketVina versions and paper, the order of the PoseBusters checks |
MANIFEST.json | Every file of the release with its size and SHA-256 |
search/index.json.gz | The rule of the search key files and their sizes |
search/<key>.json.gz | Search rows by key (first character of a token; UniProt accessions acc_<two characters>, Ensembl IDs ensg<two digits>): proteins and catalogue numbers |
proteins/<UniProt>.json.gz | One protein: annotation, Open Targets diseases (open_targets, below), P2Rank pockets, its pose files, and one row per ligand ID (columns listed in the file) |
compounds/<PVL>.json.gz | One ligand ID: every catalogue number docked as it, what was docked, and its proteins with the highest affinity |
compounds/<PVL>.all.json.gz | The same with every docked protein |
poses/<UniProt>.poses | All poses of one protein (PVATLAS1): highest-affinity poses (SDF) and all modes per pocket run (PDBQT), one gzip member each; HTTP range requests |
poses_redock/<UniProt>.poses | The same for the desalted forms of salt entries (the rows whose pf column points to this file) |
structures/AF-<UniProt>-F1-model_v6.pdb | The AlphaFold model that was docked (also .pdb.gz) |
ligands/<PVL>.svg | 2D drawing of the docked structure |
ligand_ids.json | Ligand ID of every catalogue number (catalogue number → PVL…) |
featured.json | The example complexes of the home page and the rule that picked them |
facets.json | Counts per protein class and ATC class |
indications.json | ChEMBL indications per compound |
tables/*.parquet | The bulk tables (Downloads) |
Associated diseases: open_targets
Each protein/<UniProt>.json has a field open_targets: the ten diseases with the highest overall association score for the protein's gene in the Open Targets Platform 26.09 (CC0 1.0), highest first. They are the direct associations Open Targets lists on the gene's page, measurements left out (diseases in the therapeutic area "measurement", EFO_0001444). The field is null when the UniProt accession has no Open Targets target. Copied from the release files when the data is built; the pages make no request to Open Targets.
"open_targets": {
"release": "26.09", Open Targets Platform release
"ensembl_id": "ENSG00000146648", the Open Targets target (Ensembl gene) of the UniProt accession
"association": "direct", direct or indirect associations
"diseases": [ top 10, highest score first
{"id": "MONDO_0005233", "name": "non-small cell lung carcinoma", "score": 0.8465},
{"id": "MONDO_0005061", "name": "lung adenocarcinoma", "score": 0.7754},
…
]
}
# links: https://platform.opentargets.org/evidence/<ensembl_id>/<id>, https://platform.opentargets.org/target/<ensembl_id>/associations
# score: overall association score, 0–1 (not related to docking results)Examples
# the ten ligands with the highest affinity on EGFR (jq)
curl -s https://bimsbstatic.mdc-berlin.de/akalin/asarigun/pocketvina_atlas/data/v1.1/proteins/P00533.json.gz | gunzip | jq -r '.rows | sort_by(.[1]) | .[:10][] | @tsv'
# one highest-affinity pose with a range request (top_off, top_len of its row; pf = 1: poses_redock/)
curl -s https://bimsbstatic.mdc-berlin.de/akalin/asarigun/pocketvina_atlas/data/v1.1/proteins/P00519.json.gz | gunzip | jq -c '(.columns | index("pvl")) as $i | .rows[] | select(.[$i] == "PVL00129")'
curl -r <top_off>-<top_off+top_len-1> https://bimsbstatic.mdc-berlin.de/akalin/asarigun/pocketvina_atlas/data/v1.1/poses/P00519.poses | gunzipIdentifiers and file names
Things that exist outside the atlas keep their own identifiers (UniProt, AlphaFold); the one identifier the atlas adds is the ligand ID, because about a third of the compounds have no ChEMBL ID. Every identifier is shown on its page with a Copy button; open any of them with /id/?<ID> (for example /id/?P00519_PVL00129_pk1_m01).
| Object | Identifier | Example | Note |
|---|---|---|---|
| Protein | UniProt accession | P00533 | P00533-F2 for a later fragment of the rare AlphaFold models in several fragments |
| Structure | AlphaFold model ID | AF-P00533-F1-model_v6 | AlphaFold's own, unchanged |
| protein + pocket rank | P00533-pk4 | P2Rank rank | |
| Ligand | atlas ligand ID | PVL00129 | PVL = PocketVina ligand; one per docked structure, shared by the catalogue numbers docked as it, kept across releases. Cross-references: ChEMBL ID, InChIKey, vendor catalogue, name |
| Pair | protein + ligand | P00519_PVL00129 | |
| Pose | pair + pocket + mode | P00519_PVL00129_pk1_m01 | Vina mode with two digits (m01, m02, …) |
Saved files are named after these identifiers, as <ID>_<content>.<type>; the AlphaFold model keeps AlphaFold's name, and the tool that made a file (P2Rank, QuickVina2-GPU, PoseBusters) is in its metadata, not in its name:
AF-P00533-F1-model_v6.pdb the AlphaFold model, unchanged P00533_pockets.json the docked pockets: centre, residues, P2Rank scores P00533_poses.poses every pose of the protein (PVATLAS1: tables of byte offsets, then one gzip member per pose) P00533_poses_redock.poses the poses of the desalted forms on the protein (same format) P00533_compounds.csv one row per compound on the protein P00533-pk4_residues.csv the residues of one pocket P00519_PVL00129_top.sdf one pair: its highest-affinity pose (the one PoseBusters checked) P00519_PVL00129_pk1_modes.pdbqt one pair, one pocket: all its modes (MODEL k is pose P00519_PVL00129_pk1_m<k>) P00519_PVL00129_modes.csv one pair: the Vina scores of all its modes in all pockets P00519_PVL00129_posebusters.json the PoseBusters checks of that pose PVL00129_proteins.json.gz one drug: its docked proteins PVL00129.svg one drug: its 2D structure
No file name carries a version. The release is in the folder of a selection (PocketVina-Atlas_<release>_selection_<date>_<n>pairs/, with the release label such as v1, or the data version of a preview: v1.1 in this build) and in its MANIFEST.json, which also gives each pose file's source and byte range. Pose files are the release's records byte for byte, so they carry no added fields. On the server the files keep their paths (the table above); only the names files are saved under follow the scheme.
best in field names (best_pocket, best_mode, best_affinity) means highest-affinity: the pose with the lowest Vina score. It is not a judgement of quality or correctness; the names stay as they are so that scripts keep working. Saved files say top, as do top_off and top_len.
Earlier identifiers
Earlier previews used longer identifiers and file names, with a PV prefix and a version. They still work: the search box and /id/?<ID> take them to the same page.
| What | Before | Now |
|---|---|---|
| Protein | PV-P00533-F1 | P00533 |
PV-P00533-F1-pk4 | P00533-pk4 | |
| Pair | PV-P00533-F1-PVL00928 | P00533_PVL00928 |
| Pose | PV-P00533-F1-PVL00928-p4-m1 | P00533_PVL00928_pk4_m01 |
| Highest-affinity poses of a protein | PV-P00533-F1-best_v1.sdf.gz | P00533_top.sdf.gz |
| All modes of a protein | PV-P00533-F1-modes_v1.pdbqt.gz | P00533_modes.pdbqt.gz |
| Pockets of a protein | PV-P00533-F1-pockets_v1.json | P00533_pockets.json |
| Pose index, highest-affinity poses | PV-P00533-F1-index-best_v1.json | P00533_top_index.json |
| Pose index, all modes | PV-P00533-F1-index-modes_v1.json | P00533_modes_index.json |
| Scores of all pockets × modes | PV-P00533-F1-scores_v1.csv.gz | P00533_scores.csv.gz |
| Compound table of a protein | PV-P00533-F1-compounds_v1.csv | P00533_compounds.csv |
| Residues of a pocket | PV-P00533-F1-pk4-residues_v1.csv | P00533-pk4_residues.csv |
| Highest-affinity pose of a pair | PV-P00533-F1-PVL00928-best_v1.sdf | P00533_PVL00928_top.sdf |
| All modes of a pair in one pocket | PV-P00533-F1-PVL00928-p4-modes_v1.pdbqt | P00533_PVL00928_pk4_modes.pdbqt |
| PoseBusters checks of a pair | PV-P00533-F1-PVL00928-posebusters_v1.json | P00533_PVL00928_posebusters.json |
| Protein table of a drug | PVL00928-proteins_v1.json | PVL00928_proteins.json |
| 2D structure of a drug | PVL00928_v1.svg | PVL00928.svg |
| Selection (ZIP folder, script, CSV) | PV-atlas_selection_<date>_<n>pairs | PocketVina-Atlas_<release>_selection_<date>_<n>pairs |
| SDF properties | PV_ID, PV_pair_ID | pose_id, pair_id |
| PDBQT header | REMARK PV_ID | REMARK pair_id |
| MANIFEST.json, per file | pv_id, pair | id, pair_id |
| pairs.csv, first column | PV_ID | pair_id |
| modes.csv, first columns | PV_pair_ID | pose_id, pair_id |
| Pocket residues CSV, first column | pocket_pv_id | pocket_id |
Compressed files
The JSON files under search/, proteins/ and compounds/ are published gzip-compressed only (.json.gz); the server sends them as they are, so curl -s URL | gunzip gives the JSON. The pages unpack them in the browser.
Canonical page URLs: /protein/<UniProt>/, /drug/<PVL ID>/ (/drug/<catalogue number>/, /drug/<catalogue number>-desalted/, /drug/<ChEMBL ID>/ and /drug/<name>/ redirect there), /proteins/<class>/, /drugs/<ATC code>/; /id/?<ID> opens the page of any atlas identifier.