Dataset#

PLINDER, the Protein & Ligand INteraction Dataset and Evaluation Resource, extracts protein-ligand systems and protein-protein interfaces from the PDB.

Release layout#

PLINDER releases are identified by the month of their PDB snapshot (YYYY-MM; the current release is 2026-09) and served from https://cameo3d.org/plinder/PLINDER-<release-month>/. The file layout is:

Note

Historical releases remain available at gs://plinder/2024-04/v0, gs://plinder/2024-04/v1, and gs://plinder/2024-06/v2. Their layout and APIs differ from the current release.

PLINDER-<release-month>/
├── index/
│   ├── annotation_table.parquet
│   ├── system_validation.parquet
│   ├── entry_chains.parquet
│   ├── entry_biounit_chains.parquet
│   ├── entry_metadata.parquet
│   ├── entry_sources.parquet
│   ├── interface_annotation_table.parquet
│   ├── alignment_chain_lookup.parquet
│   ├── linked_apo_structures.parquet
│   ├── interface_apo_structures.parquet
│   ├── ligand_pocket_membership.parquet
│   ├── ligand_pocket_residues.parquet
│   ├── ligand_pocket_representatives.parquet
│   ├── ligand_clusters.parquet
│   ├── ligand_affinity.parquet
│   ├── bindingdb_measurements.parquet
│   ├── ligand_mmp_pairs.parquet
│   ├── interface_half_representatives.parquet
│   ├── interface_membership.parquet
│   ├── interface_representatives.parquet
│   └── interface_clusters.parquet
├── protein_clusters/
│   ├── sequence.parquet
│   └── structure.parquet
├── ligand_archives/
│   └── {two_char_code}.parquet
├── alignment_cigars/
│   └── search_db={holo,apo,interface_apo}/
│       └── alignment_type={foldseek,mmseqs}/
│           └── shard={two_char_code}.parquet
├── ligand_scores/
│   └── retained.parquet
├── ligand_sampling/
│   ├── set_cover/metric={metric}/threshold={threshold}.parquet
│   └── directed_set_cover/metric={metric}/threshold={threshold}.parquet
├── interface_sampling/
│   └── directed_set_cover/metric={interface_qcov,interface_side_qcov}/threshold={threshold}.parquet
├── search_databases/
│   ├── holo_foldseek/
│   ├── holo_mmseqs/
│   ├── monomer_foldseek/
│   └── monomer_mmseqs/
└── exports/
    ├── ligand_similarity_scores.parquet
    ├── interface_similarity_scores.parquet
    ├── interface_half_similarity_scores.parquet
    ├── protein_similarity_scores/
    │   └── alignment_type={foldseek,mmseqs}/
    │       └── shard={two_char_code}.parquet
    └── monomer_similarity_scores/
        └── alignment_type={foldseek,mmseqs}/
            └── monomer_{holo,monomer}_{batch}.parquet

plinder_download downloads the index and representative-cover tables by default. It asks before downloading ligand archives, alignments, score files, complete similarity tables, and search databases; --yes downloads every group. APIs fetch missing optional files when they need them unless offline mode is enabled. Source PDB mmCIFs are separate: they are fetched per PDB entry during reconstruction and are not part of the bulk download.

Release tables#

The following are all registered release tables available through query_table(). The main tables of interest are annotation, which has one row per ligand, and interface_annotations, which has one row per protein-protein interface. The remaining tables separate entry, chain, validation, cluster, and representative data so clients only load it when needed. query_table() can request columns across related tables in a single query and selects the required relationships from those columns.

  • annotation: ligand annotations and reconstructable system IDs;

  • system_validation: ligand and pocket validation summaries for each system;

  • entry_chains: one polymer chain in a PDB entry;

  • entry_biounit_chains: one chain instance in a biological assembly;

  • entry_metadata: experimental and entry-validation metadata;

  • entry_sources: the source mmCIF revision used for the release;

  • interface_annotations: one protein-chain interface;

  • alignment_chain_lookup: protein-chain search identifiers and residue mappings;

  • linked_apo_structures: ranked apo chains linked to holo ligands;

  • interface_apo_structures: ranked apo chains linked to each side of a protein interface;

  • ligand_pocket_membership: ligand-to-pocket-representative assignments;

  • ligand_pocket_representatives: the receptor chains, pocket residues, and protein-ligand interactions for each selected representative;

  • ligand_clusters: ligand cover labels, representative indicators, and coverage statistics;

  • ligand_affinity: sequence-checked pKi or pKd and the endpoint for each ligand; ambiguous values are empty;

  • bindingdb_measurements: individual Ki and Kd records, including target sequences and inequality signs;

  • ligand_mmp_pairs: matched molecular pairs over unique ligand SMILES;

  • interface_membership: interface-to-representative assignments;

  • interface_representatives: representative full interfaces;

  • interface_half_representatives: representative interface sides;

  • interface_clusters: protein-interface cover labels.

The checked-in column reference below is generated from these release tables.

BindingDB’s PDB/ligand cross-references can include similar, rather than exact, targets. ligand_affinity therefore requires a matching receptor sequence and one uncensored Ki or Kd endpoint before reporting a value. The individual records remain available in bindingdb_measurements. The table keeps BindingDB’s curation source and DOIs so records imported from ChEMBL can be identified. BindingDB describes different reuse terms for its own curation and ChEMBL imports in its data-availability statement.

alignment_chain_lookup

ⓘName Type Description
entry_pdb_idstringRCSB PDB ID. See https://mmcif.wwpdb.org/dictionaries/mmcif_pdbx_v50.dic/Items/_entry.id.html
chain_asym_idstringChain asymmetric id
chain_auth_idstringChain author id
selected_residue_numberslist&lt;element: int32&gt;Source-mmCIF residue numbers selected by any ligand pocket or protein interface, ordered by selected_residue_indices
selected_residue_indiceslist&lt;element: int32&gt;Zero-based resolved-chain indices corresponding positionally to selected_residue_numbers

annotation

ⓘName Type Description
entry_pdb_idstringRCSB PDB ID. See https://mmcif.wwpdb.org/dictionaries/mmcif_pdbx_v50.dic/Items/_entry.id.html
system_biounit_idstringBiounit ID
system_id_legacystringHistorical system ID using global assembly-operation chain instances
system_receptor_typestringReceptor polymer composition: protein, DNA, RNA, other, or a +-joined combination
system_protein_chains_asym_idlist&lt;element: string&gt;Chain asymmetric id
system_num_pocket_residuesint64Number of pocket residues of the system
system_proper_num_pocket_residuesint64Number of pocket residues of the system excluding ions and artifacts
system_num_interactionsint64Number of interactions of the system
system_proper_num_interactionsint64Number of interactions of the system excluding ions and artifacts
system_num_unique_interactionsint64Number of unique interactions of the system
(118 more rows not shown)

bindingdb_measurements

ⓘName Type Description
pdbid_ligidstringPDB ID and ligand HET code reported in a BindingDB cross-reference
pdb_idstringPDB ID reported in a BindingDB ligand-target-complex cross-reference
ligand_het_idstringLigand HET code reported by BindingDB
reactant_set_idstringBindingDB source reactant-set identifier, when provided
monomer_idstringBindingDB source monomer identifier, when provided
curation_sourcestringBindingDB curation or imported-data source
article_doistringDOI of the source publication, when provided by BindingDB
bindingdb_entry_doistringBindingDB DOI for the source entry, when provided
source_rowint64Zero-based row number in the source BindingDB TSV
target_sequenceslist&lt;element: string&gt;All target-chain sequences reported for this measurement
(6 more rows not shown)

entry_biounit_chains

ⓘName Type Description
entry_pdb_idstringRCSB PDB ID. See https://mmcif.wwpdb.org/dictionaries/mmcif_pdbx_v50.dic/Items/_entry.id.html
biounit_idstringBiological assembly identifier
chain_instancestringAssembly chain instance encoded as &lt;operation&gt;.&lt;label_asym_id&gt;
chain_asym_idstringChain asymmetric id
chain_rolestringAssembly role: receptor, ligand, or water
chain_num_contacting_ionsint64Number of ion chains contacting this assembly-chain instance
chain_num_contacting_artifactsint64Number of crystallization-artifact chains contacting this assembly-chain instance
chain_num_contacting_other_ligandsint64Number of other ligand chains contacting this assembly-chain instance
chain_num_contacting_proteinsint64Number of other polypeptide chains contacting this assembly-chain instance

entry_chains

ⓘName Type Description
entry_pdb_idstringRCSB PDB ID. See https://mmcif.wwpdb.org/dictionaries/mmcif_pdbx_v50.dic/Items/_entry.id.html
chain_asym_idstringChain asymmetric id
chain_auth_idstringChain author id
chain_entity_idstringChain entity id
chain_typestringRaw CIF receptor polymer type
chain_receptor_typestringReceptor polymer category: protein, dna, rna, or dna+rna
chain_sequencestringFull polymer sequence in one-letter code, keyed by the source asymmetric-chain ID
chain_sequence_noncanonicalstringFull polymer sequence from _entity_poly.pdbx_seq_one_letter_code, with modified residues as (CCD) tokens
chain_modified_residueslist&lt;element: string&gt;Non-canonical SEQRES monomers as {auth_seq}:{comp_id}:{asym}:{label_seq}&gt;{parent} (details), the residue address of ligand_covalent_linkages (comp_id is entity_poly_seq.mon_id); unresolved positions have auth_seq ?; parent and details from _pdbx_struct_mod_residue, else the CCD parent
chain_lengthint64SEQRES length
(4 more rows not shown)

entry_metadata

ⓘName Type Description
entry_pdb_idstringRCSB PDB ID. See https://mmcif.wwpdb.org/dictionaries/mmcif_pdbx_v50.dic/Items/_entry.id.html
entry_release_datestringRCSB structure release date. See https://mmcif.wwpdb.org/dictionaries/mmcif_pdbx_v50.dic/Items/_database_PDB_rev.date_original.html
entry_oligomeric_statestringAuthor&#x27;s provided description of quaternary structure in RCSB. See https://mmcif.wwpdb.org/dictionaries/mmcif_pdbx_v50.dic/Items/_pdbx_struct_assembly.oligomeric_details.html
entry_determination_methodstringRCSB method of structure determination. See https://mmcif.wwpdb.org/dictionaries/mmcif_pdbx_v50.dic/Items/_exptl.method.html
entry_keywordsstringRCSB keywords describing the structure. See https://mmcif.wwpdb.org/dictionaries/mmcif_pdbx_v50.dic/Items/_struct_keywords.pdbx_keywords.html
entry_pHstringpH at which structure is solved. See https://mmcif.wwpdb.org/dictionaries/mmcif_pdbx_v50.dic/Items/_exptl_crystal_grow.pH.html
entry_pH_mindoubleLowest crystallization pH parsed from _exptl_crystal_grow (pH, pdbx_pH_range, or pdbx_details); null when none parses
entry_pH_maxdoubleHighest crystallization pH parsed from _exptl_crystal_grow (pH, pdbx_pH_range, or pdbx_details); null when none parses
entry_resolutiondoubleRCSB structure resolution. See https://mmcif.wwpdb.org/dictionaries/mmcif_pdbx_v50.dic/Items/_refine.ls_d_res_high.html
entry_has_ligand_of_interestboolDepositor flag _pdbx_entry_details.has_ligand_of_interest (Y true, N false); null when absent, i.e. for most entries deposited before ~2019
(22 more rows not shown)

entry_sources

ⓘName Type Description
entry_pdb_idstringRCSB PDB ID. See https://mmcif.wwpdb.org/dictionaries/mmcif_pdbx_v50.dic/Items/_entry.id.html
source_mmcif_major_revisionint64Major revision number of the source PDB mmCIF used during ingest
source_mmcif_minor_revisionint64Minor revision number of the source PDB mmCIF used during ingest

interface_annotations

ⓘName Type Description
entry_pdb_idstringRCSB PDB ID. See https://mmcif.wwpdb.org/dictionaries/mmcif_pdbx_v50.dic/Items/_entry.id.html
system_idstringID of the system
system_biounit_idstringBiounit ID
interface_chain_1stringFirst canonical assembly-chain instance
interface_chain_2stringSecond canonical assembly-chain instance
interface_chain_1_residue_numberslist&lt;element: int32&gt;Source-mmCIF residue numbers at the interface on chain 1
interface_chain_1_residue_indiceslist&lt;element: int32&gt;Zero-based resolved-chain indices corresponding positionally to chain 1 residue numbers
interface_chain_2_residue_numberslist&lt;element: int32&gt;Source-mmCIF residue numbers at the interface on chain 2
interface_chain_2_residue_indiceslist&lt;element: int32&gt;Zero-based resolved-chain indices corresponding positionally to chain 2 residue numbers
interface_num_contact_residue_pairsint64Number of residue pairs in contact across the protein interface
(12 more rows not shown)

interface_apo_structures

ⓘName Type Description
reference_system_idstringProtein-interface system linked to this apo chain
reference_sideint8Interface side linked to this apo chain: 1 or 2
reference_chain_instancestringAssembly-chain instance on the corresponding reference interface side
reference_chain_asym_idstringSource asymmetric-chain ID on the corresponding reference interface side
linked_structure_idstringStable identifier for the linked apo chain
source_entry_idstringPDB entry containing the linked apo chain
source_chain_asym_idstringSource asymmetric-chain ID of the linked apo chain
source_chain_auth_idstringAuthor chain ID of the linked apo chain
source_biounit_idstringSource biological assembly containing the apo chain
source_chain_instancestringExact biological-assembly chain instance that was scored
(10 more rows not shown)

interface_clusters

ⓘName Type Description
system_idstringID of the system
interface_qcov__100__directed_set_coverlarge_stringCluster ID for directed set cover built from interface_qcov with 100 threshold; each member&#x27;s query-to-centroid score meets the threshold
interface_qcov__100__reciprocal_componentlarge_stringFull-graph component at interface_qcov 100 threshold; an edge requires similarity in both directions. Connected members may be linked through other members rather than directly
interface_qcov__30__directed_set_coverlarge_stringCluster ID for directed set cover built from interface_qcov with 30 threshold; each member&#x27;s query-to-centroid score meets the threshold
interface_qcov__30__reciprocal_componentlarge_stringFull-graph component at interface_qcov 30 threshold; an edge requires similarity in both directions. Connected members may be linked through other members rather than directly
interface_qcov__50__directed_set_coverlarge_stringCluster ID for directed set cover built from interface_qcov with 50 threshold; each member&#x27;s query-to-centroid score meets the threshold
interface_qcov__50__reciprocal_componentlarge_stringFull-graph component at interface_qcov 50 threshold; an edge requires similarity in both directions. Connected members may be linked through other members rather than directly
interface_qcov__70__directed_set_coverlarge_stringCluster ID for directed set cover built from interface_qcov with 70 threshold; each member&#x27;s query-to-centroid score meets the threshold
interface_qcov__70__reciprocal_componentlarge_stringFull-graph component at interface_qcov 70 threshold; an edge requires similarity in both directions. Connected members may be linked through other members rather than directly
interface_qcov__90__directed_set_coverlarge_stringCluster ID for directed set cover built from interface_qcov with 90 threshold; each member&#x27;s query-to-centroid score meets the threshold
(21 more rows not shown)

interface_half_representatives

ⓘName Type Description
half_interface_idstringStable identifier for one representative interface side
entry_pdb_idstringRCSB PDB ID. See https://mmcif.wwpdb.org/dictionaries/mmcif_pdbx_v50.dic/Items/_entry.id.html
instance_chain_idstringAssembly-chain instance forming this half-interface
chain_asym_idstringChain asymmetric id
residue_numberslist&lt;element: int32&gt;Source-mmCIF residue numbers in this half-interface
residue_indiceslist&lt;element: int32&gt;Zero-based resolved-chain indices corresponding positionally to residue_numbers

interface_membership

ⓘName Type Description
system_idstringID of the system
representative_system_idstringSystem ID selected as the representative for a ligand pocket or protein interface
side_1_half_interface_idstringRepresentative half-interface assigned to the first query side
side_2_half_interface_idstringRepresentative half-interface assigned to the second query side

interface_representatives

ⓘName Type Description
representative_system_idstringSystem ID selected as the representative for a ligand pocket or protein interface
entry_pdb_idstringRCSB PDB ID. See https://mmcif.wwpdb.org/dictionaries/mmcif_pdbx_v50.dic/Items/_entry.id.html
half_interface_1_idstringFirst half-interface of this representative
half_interface_2_idstringSecond half-interface of this representative

ligand_affinity

ⓘName Type Description
ligand_idstringUnique identifier of the ligand in the annotation table
ligand_binding_affinitydoubleMedian pKi or pKd for uncensored BindingDB measurements with one endpoint and a target sequence matching this ligand&#x27;s receptor; missing if ambiguous
ligand_binding_affinity_endpointstringBindingDB endpoint (Ki or Kd) used for ligand_binding_affinity
ligand_binding_affinity_measurement_countint64Number of BindingDB measurements used for ligand_binding_affinity
system_has_binding_affinityboolWhether any ligand in the system has an unambiguous, sequence-matched BindingDB affinity

ligand_clusters

ⓘName Type Description
ligand_idstringUnique identifier for a given ligand.
jaccard_similarity_mhfp6_2048__100__ligand__set_coverlarge_stringCluster ID for ligand-level set cover built from reciprocal-minimum MHFP6/2048 MinHash-estimated Jaccard similarity (Probst &amp; Reymond 2018) with 100 threshold; each member has a direct threshold-qualified edge to its representative
jaccard_similarity_mhfp6_2048__100__ligand__reciprocal_componentlarge_stringFull-graph component at jaccard_similarity_mhfp6_2048 100 threshold; an edge requires similarity in both directions. Connected members may be linked through other members rather than directly
jaccard_similarity_mhfp6_2048__100__ligand__set_cover__is_centroidboolWhether this row is the published centroid for its ligand-level set-cover cluster built from jaccard_similarity_mhfp6_2048 with 100 threshold; missing means the row is outside the clustering universe
jaccard_similarity_mhfp6_2048__30__ligand__set_coverlarge_stringCluster ID for ligand-level set cover built from reciprocal-minimum MHFP6/2048 MinHash-estimated Jaccard similarity (Probst &amp; Reymond 2018) with 30 threshold; each member has a direct threshold-qualified edge to its representative
jaccard_similarity_mhfp6_2048__30__ligand__reciprocal_componentlarge_stringFull-graph component at jaccard_similarity_mhfp6_2048 30 threshold; an edge requires similarity in both directions. Connected members may be linked through other members rather than directly
jaccard_similarity_mhfp6_2048__30__ligand__set_cover__is_centroidboolWhether this row is the published centroid for its ligand-level set-cover cluster built from jaccard_similarity_mhfp6_2048 with 30 threshold; missing means the row is outside the clustering universe
jaccard_similarity_mhfp6_2048__50__ligand__set_coverlarge_stringCluster ID for ligand-level set cover built from reciprocal-minimum MHFP6/2048 MinHash-estimated Jaccard similarity (Probst &amp; Reymond 2018) with 50 threshold; each member has a direct threshold-qualified edge to its representative
jaccard_similarity_mhfp6_2048__50__ligand__reciprocal_componentlarge_stringFull-graph component at jaccard_similarity_mhfp6_2048 50 threshold; an edge requires similarity in both directions. Connected members may be linked through other members rather than directly
jaccard_similarity_mhfp6_2048__50__ligand__set_cover__is_centroidboolWhether this row is the published centroid for its ligand-level set-cover cluster built from jaccard_similarity_mhfp6_2048 with 50 threshold; missing means the row is outside the clustering universe
(100 more rows not shown)

ligand_mmp_pairs

ⓘName Type Description
ligand_smiles_id_1int32Unique-SMILES node ID for the first MMP ligand
ligand_smiles_id_2int32Unique-SMILES node ID for the second MMP ligand
ligand_smiles_1stringCanonical SMILES for the first MMP ligand
ligand_smiles_2stringCanonical SMILES for the second MMP ligand
transformationstringMMP transformation directed from ligand 1 to ligand 2
shared_core_smilesstringShared MMP core with attachment points marked by *
num_cutsint8Number of attachment points in the shared MMP core
shared_core_num_heavy_atomsint16Number of heavy atoms in the shared MMP core
ligand_1_num_heavy_atomsint16Number of heavy atoms in the first MMP ligand
ligand_2_num_heavy_atomsint16Number of heavy atoms in the second MMP ligand
(2 more rows not shown)

ligand_pocket_membership

ⓘName Type Description
system_idstringID of the system
ligand_idstringUnique identifier for a given ligand.
representative_system_idstringSystem ID selected as the representative for a ligand pocket or protein interface
representative_ligand_idstringLigand ID selected as the representative for a ligand-pocket group

ligand_pocket_representatives

ⓘName Type Description
representative_ligand_idstringLigand ID selected as the representative for a ligand-pocket group
representative_system_idstringSystem ID selected as the representative for a ligand pocket or protein interface
entry_pdb_idstringRCSB PDB ID. See https://mmcif.wwpdb.org/dictionaries/mmcif_pdbx_v50.dic/Items/_entry.id.html
ligand_asym_idstringLigand chain asymmetric id
ligand_is_shape_comparableboolWhether the canonical ligand SDF supports finite shape, color, and SuCOS self-scoring
receptor_set_idstringStable identifier for the representative set of receptor chains
receptor_chain_asym_idslist&lt;element: string&gt;Asymmetric-chain IDs in the representative receptor-chain set
pocket_residueslist&lt;element: string&gt;Representative pocket residues encoded as asym ID, residue number, and zero-based resolved-chain index
interactionslist&lt;element: string&gt;Representative protein-ligand interactions encoded with their receptor residue mapping and interaction type

ligand_pocket_residues

ⓘName Type Description
entry_pdb_idstringRCSB PDB ID. See https://mmcif.wwpdb.org/dictionaries/mmcif_pdbx_v50.dic/Items/_entry.id.html
system_idstringID of the system
ligand_idstringUnique identifier for a given ligand.
chain_instancestringAssembly chain instance encoded as &lt;operation&gt;.&lt;label_asym_id&gt;
chain_asym_idstringChain asymmetric id
chain_auth_idstringChain author id
residue_label_seq_idint32Receptor residue number from _atom_site.label_seq_id
residue_indexint32Zero-based position among resolved residues in the chain
residue_auth_seq_idstringDepositor-provided receptor residue number from _atom_site.auth_seq_id
residue_insertion_codestringDepositor-provided receptor residue insertion code, or . when absent
(1 more row not shown)

linked_apo_structures

ⓘName Type Description
reference_system_idstringHolo PLINDER system linked to this apo chain
linked_structure_idstringStable identifier for the linked apo chain
source_entry_idstringPDB entry containing the linked apo chain
source_chain_asym_idstringSource asymmetric-chain ID of the linked apo chain
source_chain_auth_idstringAuthor chain ID of the linked apo chain
source_biounit_idstringSource biological assembly containing the apo chain
source_chain_instancestringExact biological-assembly chain instance that was scored
source_num_contacting_ionsint16Number of ion chains contacting the apo chain
source_num_contacting_artifactsint16Number of crystallization-artifact chains contacting the apo chain
source_num_contacting_other_ligandsint16Number of other ligand chains contacting the apo chain
(8 more rows not shown)

protein_sequence_clusters

ⓘName Type Description
entry_pdb_idstringRCSB PDB ID. See https://mmcif.wwpdb.org/dictionaries/mmcif_pdbx_v50.dic/Items/_entry.id.html
chain_asym_idstringChain asymmetric id
representative_entry_pdb_idstringPDB entry containing the protein-cluster representative; together with representative_chain_asym_id identifies the cluster
representative_chain_asym_idstringSource label_asym_id of the protein-cluster representative; missing when the chain could not be clustered
is_representativeboolWhether this protein chain is its cluster representative; missing when the chain could not be clustered
statusstringProtein clustering outcome: clustered, weekly_assigned (searched against fixed representatives), missing_sequence (MMseqs), or not_in_foldseek_db (Foldseek did not extract this chain from the deposited structure)

protein_structure_clusters

ⓘName Type Description
entry_pdb_idstringRCSB PDB ID. See https://mmcif.wwpdb.org/dictionaries/mmcif_pdbx_v50.dic/Items/_entry.id.html
chain_asym_idstringChain asymmetric id
representative_entry_pdb_idstringPDB entry containing the protein-cluster representative; together with representative_chain_asym_id identifies the cluster
representative_chain_asym_idstringSource label_asym_id of the protein-cluster representative; missing when the chain could not be clustered
is_representativeboolWhether this protein chain is its cluster representative; missing when the chain could not be clustered
statusstringProtein clustering outcome: clustered, weekly_assigned (searched against fixed representatives), missing_sequence (MMseqs), or not_in_foldseek_db (Foldseek did not extract this chain from the deposited structure)

system_validation

ⓘName Type Description
system_idstringID of the system
system_ligand_validation_num_residuesdoubleNumber of residues in the list
system_ligand_validation_num_processed_residuesdoubleNumber of processed residues in the list
system_ligand_validation_percent_processed_residuesdoublePercentage of processed residues in the list
system_ligand_validation_average_rsrdoubleAverage Real-Space R-value across all residues in the list
system_ligand_validation_average_rsrzdoubleAverage Real-Space R-value Z-score across all residues in the list
system_ligand_validation_average_rsccdoubleAverage Real-Space Correlation Coefficient across all residues in the list
system_ligand_validation_average_occupancydoubleAverage occupancy across all residues in the list
system_ligand_validation_percent_rsr_under_thresholddoublePercentage of residues with RSR under the threshold
system_ligand_validation_percent_rscc_over_thresholddoublePercentage of residues with RSCC over the threshold
(31 more rows not shown)

Table relationships#

The tables can be read directly with any Parquet reader. The identifiers used to combine them are:

  • entry_pdb_id for entry metadata and source revisions;

  • the pair (entry_pdb_id, chain_asym_id) between entry_biounit_chains and entry_chains;

  • system_id for ligand systems, system validation, protein interfaces, and interface clusters;

  • ligand_id for ligand annotations, pocket-representative membership, and ligand clusters;

  • representative_ligand_id and representative_system_id for the compact representative tables.

All registered relationships point from a table to rows that are unique on the join columns. Adding entry metadata, system validation, or representative membership therefore does not multiply the rows of the starting table. See Query the release tables for examples that select the required tables automatically.

Protein interfaces#

interface_annotations has one row for an unordered pair of protein-chain instances in a biological assembly. Its system_id has the form <pdb>__<assembly>__<chain-instance-1>--<chain-instance-2>. Assembly-chain IDs such as 1.A and 2.A distinguish repeated copies of the same asymmetric-unit chain.

The table records both chain-instance IDs, resolved residue numbers and indices for each side, the number of contacting residue pairs, and PRODIGY-cryst features. Full deposited sequences and source taxonomies are in the chain and entry tables.

interface_representatives stores the full-interface representatives, while interface_half_representatives stores individual interface sides. The latter is useful when one wants diverse protein surfaces without requiring both sides of the same complex. interface_clusters provides cover columns for query_table(), while detailed assignments are under interface_sampling/.

Structures and reconstruction#

PLINDER stores one asymmetric-unit SDF for each ligand chain in ligand_archives/{two_char_code}.parquet. Assembly copies are not stored because they have the same conformation under a rigid-body transform. The archive stores the SDF together with the PDB entry ID and asymmetric-unit ligand ID.

PlinderSystem.reconstruct() rebuilds selected system structures from the deposited PDB mmCIF, the ligand rows, and entry_biounit_chains.parquet. Accessing PlinderSystem.system_cif or PlinderSystem.receptor_cif performs reconstruction when the complete system or ligand-free receptor mmCIF is not already cached. Reconstruction options can include additional chains from the same PDB entry.

PlinderInterface.reconstruct() similarly rebuilds a protein-protein interface, and PlinderInterface.interface_cif returns its standard mmCIF path. The source revision recorded in entry_sources.parquet is fetched from the wwPDB versioned archive and cached separately from the bulk release. Source PDB mmCIFs are therefore not included by plinder_download; download_pdb_mmcifs() can prefetch selected source revisions for offline reconstruction.

The reconstructed mmCIFs contain the atom, sequence, component, assembly, and bond information needed to read them as self-contained PDBx/mmCIF files. Asymmetric ligand SDFs preserve the curated bond orders. Assembly-coordinate SDFs use the same chemistry with the recorded rigid-body transforms applied.

Linked apo chains#

linked_apo_structures associates a holo ligand system with ranked deposited apo protein chains. A candidate must pass the configured pocket and whole-chain similarity requirements for every proper ligand pocket in the holo system. Candidates from the same PDB entry are excluded.

Ranking prefers chains with no nearby ligand-like components, then ion-only, artifact, and other-ligand contacts. Resolution and similarity break later ties. The release stores the assembly chain instance that was scored; PlinderSystem.reconstruct_linked_apo() rebuilds its coordinates from the recorded source entry and assembly membership.

interface_apo_structures applies the same idea to each side of a protein-protein interface. Here an apo candidate is a highly similar protein chain in a biological assembly where that chain contacts no other protein. MMseqs alignments must cover at least 80% of both chains. The table retains sequence identity, both coverage values, Foldseek lDDT when available, and the exact assembly-chain instance selected for reconstruction.

Similarity scores#

Protein alignments#

exports/protein_similarity_scores/ contains the Foldseek and MMseqs chain-pair scores, including query and target coverage, sequence identity, sequence similarity, and Foldseek lDDT. Percentage values are stored as integers from 0 to 100. exports/monomer_similarity_scores/ adds query chains outside ligand pockets and protein interfaces. Pass include_monomers=True to query_protein_similarity() to read both sets of chain pairs.

For a custom structure or FASTA search, search() returns result.chain_similarity_scores, a Parquet file of direct chain-level hits with the same score fields. FASTA results retain the original sequence IDs. By default, chain hits also include protein chains outside ligand pockets and protein interfaces. Pocket and interface scores use their own targets.

The optional alignment_cigars/ files contain full-chain CIGARs, alignment starts, and bit-packed residue identity flags. Holo chain-pair statistics are read from exports/protein_similarity_scores/. Pocket, protein-ligand interaction, and protein-interface residue mappings are recovered from these CIGARs and alignment_chain_lookup when needed.

plinder.core.scores.query_chain_overlap() reports the overlapping and total residue counts for either ligand pockets or protein interfaces on a requested pair of chains. It also reports the overlap fractions and the number of identical residues for each available alignment backend.

plinder.core.scores.map_chain_alignment() reads one chain pair and expands its CIGARs into residue positions. MMseqs rows use one-based SEQRES positions, while Foldseek rows use zero-based indices over the resolved coordinate residues. Gap rows can be retained or omitted.

Ligand similarities#

exports/ligand_similarity_scores.parquet stores the complete directed ligand-pair table derived from the corresponding protein alignments and ligand comparisons. Each row contains pocket_qcov, pocket_fident_qcov, pli_qcov, and sucos_shape. Swapping query and target can change the values. Symmetric Tanimoto similarities calculated from 1,024-bit Morgan fingerprints with radius 2 (ECFP4) over unique canonical SMILES remain in ligand_scores/, which is used to build the reciprocal chemical covers.

The Tanimoto rows contain query_ligand_id, target_ligand_id, and tanimoto_similarity_ecfp4_1024; both ID columns refer to ligand_smiles_id values in annotation.

Protein-interface similarities#

exports/interface_similarity_scores.parquet contains the complete directed interface table with iface1_qcov, iface2_qcov, and their combined similarity value. Swapping query and target can change the coverage. exports/interface_half_similarity_scores.parquet contains directed coverage scores of at least 30 between individual interface sides, identified by IDs ending in ::side=1 or ::side=2. Use query_interface_similarity() or query_half_interface_similarity() to filter these tables from Python.

Representative covers#

  • ligand_sampling/set_cover/ contains undirected set covers for reciprocal Tanimoto (ECFP4) and Jaccard (MHFP6) similarity;

  • ligand_sampling/directed_set_cover/ contains directed covers for pocket, interaction, and pocket-weighted ligand 3D metrics;

  • interface_sampling/directed_set_cover/ contains directed covers for whole protein interfaces (interface_qcov) and interface sides (interface_side_qcov).

Each metric has files named metric={metric}/threshold={threshold}.parquet. The release also includes one row per ligand in index/ligand_clusters.parquet and one row per interface to index/interface_clusters.parquet. query_table() joins these columns to the corresponding annotation table when requested. Tanimoto columns end in __ligand__set_cover; directional ligand columns end in __ligand__directed_set_cover.

The Tanimoto cover uses only reciprocal edges meeting the requested threshold. For a directional cover, representative selection first maximizes residual gain at the requested threshold. If uncovered nodes remain above a threshold of 50, the algorithm uses 50-percent edges before assigning remaining singletons. The detailed file records representative_selection_threshold and assignment_threshold, so downstream selection can distinguish strict and fallback assignments. It also records selection order, marginal gain, and each node’s potential coverage count and fraction.

Between full clustering runs, weekly updates keep existing representatives and cluster IDs. Changed chains, ligands, and interfaces are compared with those representatives; a qualifying match joins an existing cluster, while an unmatched item starts a new one. The detailed cover files describe the last full clustering run; the index cluster tables include weekly assignments.

The cluster tables also contain __reciprocal_component IDs. Two items share one ID when a path of similarities meeting the threshold in both directions connects them; they need not be directly similar. Weekly additions receive cover assignments immediately, while their component IDs await the next full clustering run.

Custom-scoring databases#

search_databases/ contains Foldseek structure and MMseqs sequence databases for PLINDER receptor and interface chains, together with the chain mappings used by custom scoring.

Matched molecular pairs#

ligand_mmp_pairs contains compact mmpdb transformations over unique canonical ligand SMILES. Rows identify the two ligand_smiles_id values, both SMILES, the transformation and shared core, cut count, heavy-atom counts, and the fraction of each ligand contained in the shared core.