Package: go2pdb
Retrieve PDB entries annotated with specific GO codesThis code retrievesProtein DataBankprotein structure entries for proteins that have been annotated inUniProtwith specificGene Ontologycodes.
This is useful for performing structural bioinformatics analyses (e.g., electrostatics comparisons, etc.) across proteins with similar functions.This code also uses theGene Ontology Annotation databasefor enhanced annotation beyond what can be queried from UniProt.
This index is updated approximately every 4 weeks and can bedownloaded via FTP.
However, the database appears to have holes in it, so this code also searches UniProt for entries with matching GO codes that also have PDB structures.SupportThis software is supported by the National Institutes of Health (grant GM069702).Installation and dependenciesAfter creating and activating a virtual environment (e.g., withcondaorvirtualenv), you can install the code and most of its dependencies by runningpipinstall.from the top of the source directory.
The code assumes that you have the docker program available in your path (i.e., can be run from the command line).More information about the code use can be obtained by runninggo2pdb--helpExample useFor more information about any of the commands below, using the--helpoption.
For example:go2pdb--help
go2pdbsearch--helpFinding structures with specific functionsFor example, suppose we wanted to find the structures of all "nickel-binding proteins".
We will define this set of proteins as those gene products that have the Gene Ontology annotationGO:0016151 "nickel cation binding".
However, if we're not completely sure that this GO code covers all relevant proteins, we can also add a PDB keyword search (e.g., for "nickel").go2pdbsearch--pdb-keywordNICKEL--search-goaGO:0016151The--search-goaoption adds search results from GOA.
Even though GOA appears to be incomplete, it provides useful additional information in its results (when present).By default, the command above will produce asearch-output.xlsxfile that includes the results of your search.Comparing results by sequence similarity and identityFor most analyses, it is useful to start by grouping structures with similar sequences.
Sequence alignment is performed using theBLAST Docker container.NOTE: To perform this sequence analysis, you need to haveDocker(e.g.,Docker Desktop) installed on your computer.The first step is to run BLAST on the existing sequences:go2pdbblastThis command consumes thesearch-output.xlsxfile from the search step and produces ablast-output.xlsxfile with pairwise matches between sequences.
Note that the results are filtered based on similarity and identity cutoffs; run with the--helpoption for more information.
The ``blast-output.xlsx` file can be used with graph visualization tools for qualitative insight into the relationships between PDB entries.Clustering and summarizing resultsRunninggo2pdbclusterwill cluster sequences based on sequence identity.
The metric used for clustering can be changed with the--cluster-metricoption and the cutoff for clustering can be changed with the--metric-cutoffoption.
This clustering step will produce a simple table incluster-output.xlsxthat associates PDB chains with sequence-based clusters.
The sequence-based clusters are named by a representative protein in each cluster.The cluster information can be merged with the search results by runninggo2pdbsummarizewhich will produce a joined table insummary-output.xlsx.The default behavior for both of these commands can be modified with options described in the--helpoption output.The spreadsheet output contains the following columns:ColumnsDescriptionPDB ID, PDB description, PDB titleBasic information about the structure from the Protein Data Bank (PDB)PDB deposit dateThe date the structure was added to the PDB (sort by this for the newest structures)PDB method, PDB resolution (A)Information about the experimental method for determining the structure; sort by resolution for the highest-refined structuresPDB chain ID, PDB strand ID(s), PDB strand type, PDB strand sequenceInformation about a specific strand (subunit) of the protein.  This is the sequence used for BLAST comparisons between proteins.PDB keyword matchIf a PDB keyword search was performed, this gives the matching keyword (e.g., "NICKEL") used for the search.  When this is blank, it means that "NICKEL" did not occur in the PDB keywords for this structure.UniProt entry ID, UniProt entry name, UniProt protein namesDescription of the UniProt entry for this strand.  Often the UniProt description is more informative than the PDB description and the UniProt online entry contains links to many useful tools for analyzing the sequence.  When these fields are blank, it means the structure was not identified from a GO code match (i.e., was found from a PDB keyword search instead).UniProt GO codeMatching GO code from search.GOA qualifiers, GOA GO code, GOA DB reference, GOA evidence, GOA additional evidence, GOA taxon ID, GOA annotation date, GOA assigned byIf a search of the Gene Ontology Annotation (GOA) database was performed, this provides additional information about how the GO assignment was made.  The GOA database appears to be incomplete so blank entries should not be interpreted as lack of evidence for the GO annotation.Cluster representative, Cluster descriptionThese are the clusters assigned to each strand based on BLAST sequence identity with a 90% identity threshold.  Sorting by this column is useful for focusing on a specific type of protein.