Skip to content
PocketVina Atlas

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/.

PathContent
meta.jsonRelease, every number with its definition and source, PocketVina versions and paper, the order of the PoseBusters checks
MANIFEST.jsonEvery file of the release with its size and SHA-256
search/index.json.gzThe rule of the search key files and their sizes
search/<key>.json.gzSearch 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.gzOne 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.gzOne ligand ID: every catalogue number docked as it, what was docked, and its proteins with the highest affinity
compounds/<PVL>.all.json.gzThe same with every docked protein
poses/<UniProt>.posesAll 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>.posesThe same for the desalted forms of salt entries (the rows whose pf column points to this file)
structures/AF-<UniProt>-F1-model_v6.pdbThe AlphaFold model that was docked (also .pdb.gz)
ligands/<PVL>.svg2D drawing of the docked structure
ligand_ids.jsonLigand ID of every catalogue number (catalogue number → PVL…)
featured.jsonThe example complexes of the home page and the rule that picked them
facets.jsonCounts per protein class and ATC class
indications.jsonChEMBL indications per compound
tables/*.parquetThe 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 | gunzip

Identifiers 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).

ObjectIdentifierExampleNote
ProteinUniProt accessionP00533P00533-F2 for a later fragment of the rare AlphaFold models in several fragments
StructureAlphaFold model IDAF-P00533-F1-model_v6AlphaFold's own, unchanged
Pocketprotein + pocket rankP00533-pk4P2Rank rank
Ligandatlas ligand IDPVL00129PVL = 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
Pairprotein + ligandP00519_PVL00129
Posepair + pocket + modeP00519_PVL00129_pk1_m01Vina 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.

WhatBeforeNow
ProteinPV-P00533-F1P00533
PocketPV-P00533-F1-pk4P00533-pk4
PairPV-P00533-F1-PVL00928P00533_PVL00928
PosePV-P00533-F1-PVL00928-p4-m1P00533_PVL00928_pk4_m01
Highest-affinity poses of a proteinPV-P00533-F1-best_v1.sdf.gzP00533_top.sdf.gz
All modes of a proteinPV-P00533-F1-modes_v1.pdbqt.gzP00533_modes.pdbqt.gz
Pockets of a proteinPV-P00533-F1-pockets_v1.jsonP00533_pockets.json
Pose index, highest-affinity posesPV-P00533-F1-index-best_v1.jsonP00533_top_index.json
Pose index, all modesPV-P00533-F1-index-modes_v1.jsonP00533_modes_index.json
Scores of all pockets × modesPV-P00533-F1-scores_v1.csv.gzP00533_scores.csv.gz
Compound table of a proteinPV-P00533-F1-compounds_v1.csvP00533_compounds.csv
Residues of a pocketPV-P00533-F1-pk4-residues_v1.csvP00533-pk4_residues.csv
Highest-affinity pose of a pairPV-P00533-F1-PVL00928-best_v1.sdfP00533_PVL00928_top.sdf
All modes of a pair in one pocketPV-P00533-F1-PVL00928-p4-modes_v1.pdbqtP00533_PVL00928_pk4_modes.pdbqt
PoseBusters checks of a pairPV-P00533-F1-PVL00928-posebusters_v1.jsonP00533_PVL00928_posebusters.json
Protein table of a drugPVL00928-proteins_v1.jsonPVL00928_proteins.json
2D structure of a drugPVL00928_v1.svgPVL00928.svg
Selection (ZIP folder, script, CSV)PV-atlas_selection_<date>_<n>pairsPocketVina-Atlas_<release>_selection_<date>_<n>pairs
SDF propertiesPV_ID, PV_pair_IDpose_id, pair_id
PDBQT headerREMARK PV_IDREMARK pair_id
MANIFEST.json, per filepv_id, pairid, pair_id
pairs.csv, first columnPV_IDpair_id
modes.csv, first columnsPV_pair_IDpose_id, pair_id
Pocket residues CSV, first columnpocket_pv_idpocket_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.