Additional Examples

Most examples come from RCSB PDB Data API documentation

Entries

Fetch information about structure title and experimental method for PDB entries:

from rcsbapi.data import DataQuery as Query

query = Query(
    input_type="entries",
    input_ids=["1STP", "2JEF", "1CDG"],
    return_data_list=["entries.rcsb_id", "struct.title", "exptl.method"]
)
result_dict = query.exec()
print(result_dict)

Performs the following GraphQL query:

{
  entries(entry_ids: ["1STP", "2JEF", "1CDG"]) {
    rcsb_id
    struct {
      title
    }
    exptl {
      method
    }
  }
}

To find more about the return_data_list dot notation, see ValueError: Not a unique field

Primary Citation

Fetch primary citation information (structure authors, PubMed ID, DOI) and release date for PDB entries:

from rcsbapi.data import DataQuery as Query

query = Query(
    input_type="entries",
    input_ids=["1STP", "2JEF", "1CDG"],
    return_data_list=[
        "entries.rcsb_id",
        "rcsb_accession_info.initial_release_date",
        "audit_author.name",
        "rcsb_primary_citation.pdbx_database_id_PubMed",
        "rcsb_primary_citation.pdbx_database_id_DOI"
    ]
)
result_dict = query.exec()
print(result_dict)

Performs the following GraphQL query:

{
  entries(entry_ids: ["1STP", "2JEF", "1CDG"]) {
    rcsb_id
    rcsb_accession_info {
      initial_release_date
    }
    audit_author {
      name
    }
    rcsb_primary_citation {
      pdbx_database_id_PubMed
      pdbx_database_id_DOI
    }
  }
}

Polymer Entities

Fetch taxonomy information and information about membership in the sequence clusters for polymer entities:

from rcsbapi.data import DataQuery as Query

query = Query(
    input_type="polymer_entities",
    input_ids=["2CPK_1", "3WHM_1", "2D5Z_1"],
    return_data_list=[
        "polymer_entities.rcsb_id",
        "rcsb_entity_source_organism.ncbi_taxonomy_id",
        "rcsb_entity_source_organism.ncbi_scientific_name",
        "cluster_id",
        "identity"
    ]
)
result_dict = query.exec()
print(result_dict)

Performs the following GraphQL query:

{
  polymer_entities(entity_ids: ["2CPK_1", "3WHM_1", "2D5Z_1"]) {
    rcsb_id
    rcsb_entity_source_organism {
      ncbi_taxonomy_id
      ncbi_scientific_name
    }
    rcsb_cluster_membership {
      cluster_id
      identity
    }
  }
}

Polymer Instances

Fetch information about the domain assignments for polymer entity instances:

from rcsbapi.data import DataQuery as Query

query = Query(
    input_type="polymer_entity_instances",
    input_ids=["4HHB.A", "12CA.A", "3PQR.A"],
    return_data_list=[
        "polymer_entity_instances.rcsb_id",
        "rcsb_polymer_instance_annotation.annotation_id",
        "rcsb_polymer_instance_annotation.name",
        "rcsb_polymer_instance_annotation.type"
    ]
)
result_dict = query.exec()
print(result_dict)

Performs the following GraphQL query:

{
  polymer_entity_instances(instance_ids: ["4HHB.A", "12CA.A", "3PQR.A"]) {
    rcsb_id
    rcsb_polymer_instance_annotation {
      annotation_id
      name
      type
    }
  }
}

Carbohydrates

Query branched entities (sugars or oligosaccharides) for commonly used linear descriptors:

from rcsbapi.data import DataQuery as Query

query = Query(
    input_type="branched_entities",
    input_ids=["5FMB_2", "6L63_3"],
    return_data_list=[
        "rcsb_id",
        "pdbx_entity_branch.type",
        "pdbx_entity_branch_descriptor.type",
        "pdbx_entity_branch_descriptor.descriptor"
    ]
)
result_dict = query.exec()
print(result_dict)

Performs the following GraphQL query:

{
  branched_entities(entity_ids: ["5FMB_2", "6L63_3"]) {
    rcsb_id
    pdbx_entity_branch {
      type
    }
    pdbx_entity_branch_descriptor {
      type
      descriptor
    }
  }
}

Sequence Positional Features

Sequence positional features describe regions or sites of interest in the PDB sequences, such as binding sites, active sites, linear motifs, local secondary structure, structural and functional domains, etc. Positional annotations include depositor-provided information available in the PDB archive as well as annotations integrated from external resources (e.g. UniProtKB).

This example queries polymer_entity_instances positional features. The query returns features of different types: for example, CATH and SCOP classifications assignments integrated from UniProtKB data, or the secondary structure annotations from the PDB archive data calculated by the data-processing program called MAXIT (Macromolecular Exchange and Input Tool) that is based on an earlier ProMotif implementation.

from rcsbapi.data import DataQuery as Query

query = Query(
    input_type="polymer_entity_instances",
    input_ids=["1NDO.A"],
    return_data_list=[
        "polymer_entity_instances.rcsb_id",
        "rcsb_polymer_instance_feature.type",
        "rcsb_polymer_instance_feature.feature_positions.beg_seq_id",
        "rcsb_polymer_instance_feature.feature_positions.end_seq_id"
    ]
)
result_dict = query.exec()
print(result_dict)

Performs the following GraphQL query:

{
  polymer_entity_instances(instance_ids: ["1NDO.A"]) {
    rcsb_id
    rcsb_polymer_instance_feature {
      type
      feature_positions {
        beg_seq_id
        end_seq_id
      }
    }
  }
}

Reference Sequence Identifiers

This example shows how to access identifiers related to entries (cross-references) and found in data collections other than PDB. Each cross-reference is described by the database name and the database accession. A single entry can have cross-references to several databases, e.g. UniProt and GenBank in 7NHM, or no cross-references, e.g. 5L2G:

from rcsbapi.data import DataQuery as Query

query = Query(
    input_type="entries",
    input_ids=["7NHM", "5L2G"],
    return_data_list=[
        "polymer_entities.rcsb_id",
        "polymer_entities.rcsb_polymer_entity_container_identifiers.reference_sequence_identifiers.database_accession",
        "polymer_entities.rcsb_polymer_entity_container_identifiers.reference_sequence_identifiers.database_name"
    ]
)
result_dict = query.exec()
print(result_dict)

Performs the following GraphQL query:

{
  entries(entry_ids: ["7NHM", "5L2G"]){
    polymer_entities {
      rcsb_id
      rcsb_polymer_entity_container_identifiers {
        reference_sequence_identifiers {
          database_accession
          database_name
        }
      }
    }
  }
}

Chemical Components

Query for specific items in the chemical component dictionary based on a given list of CCD ids:

from rcsbapi.data import DataQuery as Query

query = Query(
    input_type="chem_comps",
    input_ids=["NAG", "EBW"],
    return_data_list=[
        "chem_comps.rcsb_id",
        "chem_comp.type",
        "chem_comp.formula_weight",
        "chem_comp.name",
        "chem_comp.formula",
        "rcsb_chem_comp_info.initial_release_date"
    ]
)
result_dict = query.exec()
print(result_dict)

Performs the following GraphQL query:

{
  chem_comps(comp_ids: ["NAG", "EBW"]) {
    rcsb_id
    chem_comp {
      type
      formula_weight
      name
      formula
    }
    rcsb_chem_comp_info {
      initial_release_date
    }
  }
}

Computed Structure Models

This example shows how to get a list of global Model Quality Assessment metrics for AlphaFold structure of Hemoglobin subunit beta:

from rcsbapi.data import DataQuery as Query

query = Query(
    input_type="entries",
    input_ids=["AF_AFP68871F1"],
    return_data_list=["rcsb_id", "ma_qa_metric_global.type", "ma_qa_metric_global.value"]
)
result_dict = query.exec()
print(result_dict)

Performs the following GraphQL query:

{
  entries(entry_ids: ["AF_AFP68871F1"]) {
    rcsb_id
    rcsb_ma_qa_metric_global {
      ma_qa_metric_global {
        type
        value
      }
    }
  }
}

PubMed

This example gets the abstract text of the paper with the specified PubMed ID.

from rcsbapi.data import DataQuery as Query

query = Query(
  input_type="pubmed",
  return_data_list=["rcsb_pubmed_abstract_text"],
  input_ids=[6726807]
)

result_dict = query.exec()
print(result_dict)

Performs the following GraphQL query:

{
  pubmed(pubmed_id: 6726807) {
    rcsb_pubmed_abstract_text
  }
}

UniProt

This example gets a description of the function of a protein based on the UniProt ID.

from rcsbapi.data import DataQuery as Query

query = Query(
  input_type="uniprot",
  return_data_list=["function.details"],
  input_ids=["P68871"]
)

result_dict = query.exec()
print(result_dict)

Performs the following GraphQL query:

{
  uniprot(uniprot_id: "P68871") {
    rcsb_uniprot_protein {
      function {
        details
      }
    }
  }
}