Answers.Body: <p>For the correspondence between PDB and Uniprot entries you can use <a href="https://www.ebi.ac.uk/pdbe/docs/sifts/" rel="nofollow noreferrer">SIFTS</a> -- a semi-automated mapping between PDB and UniProt maintained by PDBe.</p>
  
  <p>The pipeline that creates the mappings uses BLAST and <a href="https://www.ncbi.nlm.nih.gov/pmc/articles/PMC3531078/" rel="nofollow noreferrer">a few other criteria</a> to decide which UniProt entry should be assigned to each PDB entry. The SIFTS website has all the data in CSV files.</p>
  
Answers.ContentLicense: CC BY-SA 4.0
Answers.CreationDate: 2018-07-02T23:13:38.927Z
Answers.Text: Thanks for the advice! I took a look. In the referenced publication, I only found a mention that they are looking for a 90% sequence identity to accept a cross-reference; this is not enough for me - I need all UniProt entries with, say, sequence identity above 25%. 
  
  As I understand it, this is what is contained in the files on the ftp server ftp://ftp.ebi.ac.uk/pub/databases/msd/sifts/ , notably the uniprot_segments_observed.
Answers.UserDisplayName: Zubo
Answers.ContentLicense: CC BY-SA 3.0
Answers.CreationDate: 2018-04-25T15:06:40.590Z
Answers.LastActivityDate: 2018-04-25T15:06:40.590Z
Answers.UserDisplayName: marcin
Answers.Body: <p>You can download a BLAST db containing all sequences of proteins in Uniprot and in the PDB. The way I would go about this is first download the databases for uniprot and PDB, then query the PDB database for each sequence from Uniprot. If you get a BLAST hit above a certain threshold (whatever you define as homolog) then add that sequence to a file, and voila, you have a full set of sequences that fulfill your criteria. The only tools you would need for this are the BLAST executables (<a href="https://blast.ncbi.nlm.nih.gov/Blast.cgi?PAGE_TYPE=BlastDocs&amp;DOC_TYPE=Download" rel="nofollow noreferrer">found here</a>) and the databases (info on how to download can be found <a href="https://www.ncbi.nlm.nih.gov/books/NBK62345/#_blast_ftp_site_The_blastdb_subdirectory_" rel="nofollow noreferrer">here</a>). </p>
  
  <p>I should note that you don't really need any Python to get this to work, only some shell scripting. Although you can run these commands through a Python wrapper if you really want to.</p>
  
  <p>Good luck!</p>
  
Answers.ContentLicense: CC BY-SA 4.0
Answers.CreationDate: 2018-07-02T20:17:40.443Z
Answers.Text: So that's like 60M BLAST queries? How long would that take?
Answers.UserDisplayName: Zubo
Answers.ContentLicense: CC BY-SA 3.0
Answers.CreationDate: 2018-02-21T22:17:12.973Z
Answers.LastActivityDate: 2018-02-21T22:17:12.973Z
Answers.UserDisplayName: Sevy
Body: <p>I'd like to create a dataset consisting of all sequences which are either present in the PDB, or whose homolog is present in the PDB. In other words, any sequence in the PDB or any sequence related to it. The similiarity margin is to be very wide, so anything above, for instance, 25% sequence identity is accepted (perhaps there are better criteria, but you get the point). </p>
  
  <p>No further limitations, so any organism, with or without experimental data, not limited to the manually curated Swissprot set. </p>
  
  <p>I have tried the SIFTS database, but that contains, as far as I can tell, only mappings for sequence identity >85%. I would like to go far below that. </p>
  
Comments.ContentLicense: CC BY-SA 3.0
Comments.CreationDate: 2017-12-12T17:00:06.647Z
Comments.Text: Thanks for the edit, that's much clearer! So, next question: how do you define "homologs"? Are you looking for functional homology alone? Is sequence homology enough? I am guessing you will be assuming that homologous sequences will share a structure but that is most certainly not always the case. Is there any reason you don't do it the other way around? Get all sequences from the PDB and then map those to UniProt accessions?
Comments.UserDisplayName: terdon
Comments.ContentLicense: CC BY-SA 4.0
Comments.CreationDate: 2018-07-02T23:17:57.840Z
Comments.Text: @terdon Homologs are defined here as >25% sequence identity, so very very broadly. I would, in fact, be willing to run a BLAST search for each PDB entry vs Uniprot, but I assume this will take quite some time, so I'm checking to avoid reinventing the wheel.
Comments.UserDisplayName: Zubo
Tags: <python><public-databases><pdb><sequence-homology><uniprot>
Title: How to get all PDB homologs from Uniprot (mapping + BLAST)?
ThreadText: # How to get all PDB homologs from Uniprot (mapping + BLAST)?
  
  (Asked by: username_0 on 2017-12-12)
  
  I'd like to create a dataset consisting of all sequences which are either present in the PDB, or whose homolog is present in the PDB. In other words, any sequence in the PDB or any sequence related to it. The similiarity margin is to be very wide, so anything above, for instance, 25% sequence identity is accepted (perhaps there are better criteria, but you get the point).
  
  No further limitations, so any organism, with or without experimental data, not limited to the manually curated Swissprot set.
  
  I have tried the SIFTS database, but that contains, as far as I can tell, only mappings for sequence identity >85%. I would like to go far below that.
  
  **Tags:** python, public-databases, pdb, sequence-homology, uniprot
  
  > **Comments:**
  > **username_1**: Thanks for the edit, that's much clearer! So, next question: how do you define "homologs"? Are you looking for functional homology alone? Is sequence homology enough? I am guessing you will be assuming that homologous sequences will share a structure but that is most certainly not always the case. Is there any reason you don't do it the other way around? Get all sequences from the PDB and then map those to UniProt accessions?  
  > **username_0**: @username_1 Homologs are defined here as >25% sequence identity, so very very broadly. I would, in fact, be willing to run a BLAST search for each PDB entry vs Uniprot, but I assume this will take quite some time, so I'm checking to avoid reinventing the wheel.  
  
  ---
  
  ## 2 answers
  
  ### Answer by username_2 on 2018-04-25. Score: 4
  
  For the correspondence between PDB and Uniprot entries you can use [SIFTS](https://www.ebi.ac.uk/pdbe/docs/sifts/) -- a semi-automated mapping between PDB and UniProt maintained by PDBe.
  
  The pipeline that creates the mappings uses BLAST and [a few other criteria](https://www.ncbi.nlm.nih.gov/pmc/articles/PMC3531078/) to decide which UniProt entry should be assigned to each PDB entry. The SIFTS website has all the data in CSV files.
  
  > **Comments:**
  > **username_0**: Thanks for the advice! I took a look. In the referenced publication, I only found a mention that they are looking for a 90% sequence identity to accept a cross-reference; this is not enough for me - I need all UniProt entries with, say, sequence identity above 25%.   As I understand it, this is what is contained in the files on the ftp server ftp://ftp.ebi.ac.uk/pub/databases/msd/sifts/ , notably the uniprot_segments_observed.  
  
  ---
  
  ### Answer by username_3 on 2018-02-21. Score: 1
  
  You can download a BLAST db containing all sequences of proteins in Uniprot and in the PDB. The way I would go about this is first download the databases for uniprot and PDB, then query the PDB database for each sequence from Uniprot. If you get a BLAST hit above a certain threshold (whatever you define as homolog) then add that sequence to a file, and voila, you have a full set of sequences that fulfill your criteria. The only tools you would need for this are the BLAST executables ([found here](https://blast.ncbi.nlm.nih.gov/Blast.cgi?PAGE_TYPE=BlastDocs&DOC_TYPE=Download)) and the databases (info on how to download can be found [here](https://www.ncbi.nlm.nih.gov/books/NBK62345/#_blast_ftp_site_The_blastdb_subdirectory_)).
  
  I should note that you don't really need any Python to get this to work, only some shell scripting. Although you can run these commands through a Python wrapper if you really want to.
  
  Good luck!
  
  > **Comments:**
  > **username_0**: So that's like 60M BLAST queries? How long would that take?  
  
  ---
  
  