Additional Examples¶
Several of the examples below come from RCSB PDB Sequence Coordinates API documentation.
Alignments Query with Range¶
Filter alignments to a particular range:
from rcsbapi.sequence import Alignments
# Only return alignments data that fall in given range
query = Alignments(
db_from="NCBI_PROTEIN",
db_to="PDB_ENTITY",
query_id="XP_642496",
range=[1, 100],
return_data_list=["target_alignments"]
)
query.exec()
Annotations Query with Filter¶
You can use the filters argument in combination with AnnotationFilterInput to select which annotations to retrieve.
For example, to select just the binding site annotations:
from rcsbapi.sequence import Annotations, AnnotationFilterInput
# Fetch protein-ligand binding sites for PDB Instances of UniProt Q6P1M3
query = Annotations(
reference="UNIPROT",
query_id="Q6P1M3",
sources=["PDB_INSTANCE"],
filters=[
AnnotationFilterInput(
field="TYPE",
operation="EQUALS",
values=["BINDING_SITE"],
source="PDB_INSTANCE"
)
],
return_data_list=["target_id", "features"]
)
query.exec()
GroupAlignments¶
Use GroupAlignments to get alignments for groups of sequences (e.g., for UniProt P01112).
from rcsbapi.sequence import GroupAlignments
query = GroupAlignments(
group="MATCHING_UNIPROT_ACCESSION",
group_id="P01112",
return_data_list=["target_alignments.aligned_regions", "target_id"],
)
query.exec()
GroupAlignments with Filter¶
To filter the results down to specific set of PDB entity IDs, use the filter option:
from rcsbapi.sequence import GroupAlignments
query = GroupAlignments(
group="MATCHING_UNIPROT_ACCESSION",
group_id="P01112",
return_data_list=["target_alignments.aligned_regions", "target_id"],
filter=["8CNJ_1", "8FG4_1"]
)
query.exec()
GroupAnnotations¶
Use GroupAnnotations to get annotations for groups of sequences.
from rcsbapi.sequence import GroupAnnotations
query = GroupAnnotations(
group="MATCHING_UNIPROT_ACCESSION",
group_id="P01112",
sources=["PDB_ENTITY"],
return_data_list=["features.name","features.feature_positions", "target_id"]
)
query.exec()
GroupAnnotations with Filter¶
Use the filters argument in combination with AnnotationFilterInput to select which annotations to retrieve.
from rcsbapi.sequence import GroupAnnotations, AnnotationFilterInput
# Fetch only "BINDING_SITE" annotations from PDB instances
query = GroupAnnotations(
group="MATCHING_UNIPROT_ACCESSION",
group_id="P01112",
sources=["PDB_INSTANCE"],
filters=[
AnnotationFilterInput(
field="TYPE",
operation="EQUALS",
values=["BINDING_SITE"],
source="PDB_INSTANCE"
)
],
return_data_list=["features.name", "features.type", "features.feature_positions", "target_id"],
)
query.exec()
GroupAnnotationsSummary¶
Use GroupAnnotationsSummary to get annotations summaries for groups of sequences.
from rcsbapi.sequence import GroupAnnotationsSummary
query = GroupAnnotationsSummary(
group="MATCHING_UNIPROT_ACCESSION",
group_id="P01112",
sources=["PDB_INSTANCE"],
return_data_list=["target_id", "features.type", "features.value"]
)
query.exec()
GroupAnnotationsSummary with Filter¶
Use the filters argument in combination with AnnotationFilterInput to select which annotation summaries to retrieve.
from rcsbapi.sequence import GroupAnnotationsSummary, AnnotationFilterInput
# Fetch only the "LIGAND_INTERACTION" annotation summary information
query = GroupAnnotationsSummary(
group="MATCHING_UNIPROT_ACCESSION",
group_id="P01112",
sources=["PDB_INSTANCE"],
filters=[
AnnotationFilterInput(
field="TYPE",
operation="EQUALS",
values=["LIGAND_INTERACTION"],
source="PDB_INSTANCE"
)
],
return_data_list=["target_id", "features.type", "features.value"]
)
query.exec()
Pagination¶
Some GraphQL fields support pagination using standard parameters: first and offset.
These parameters are commonly used to limit or paginate results from a list-type field. Currently, pagination is only available for Alignments queries.
For example, to get the first 10 results, use:
from rcsbapi.sequence.seq_query import Alignments
align_query = Alignments(
db_from="UNIPROT",
db_to="PDB_ENTITY",
query_id="P18158",
return_data_list=["target_alignments"],
data_list_args={
"target_alignments": {
"first": 10,
"offset": 0
},
}
)
align_query.exec()
And to get the next 10 results, use:
from rcsbapi.sequence.seq_query import Alignments
align_query = Alignments(
db_from="UNIPROT",
db_to="PDB_ENTITY",
query_id="P18158",
return_data_list=["target_alignments"],
data_list_args={
"target_alignments": {
"first": 10,
"offset": 10
},
}
)
align_query.exec()