text: user2536: I have a list of around 500 protein targets (human). I only have their protein symbols. As an example:
  EGFR
  AR
  FOXA1
  CXCR3
  ...
  I want to get structural data (atomic coordinate) from PDB (Protein Data Bank) at once, either programmatically (Python or R) or with a web api. Do you know a clear step by step tutorial for this task or code example?
  If that is not available, at least I need to find the PDB IDs of my list of protein symbols at once.
  thanks
  
  user6322: There is not a simple way and there are factor that you also need to consider before starting.
  
  Are you using gene names or gene accession numbers/id (NCBI/Uniprot)?
  If not, are the names the current standard ones (e.g. scraped names from old papers is a definite no)
  PDB residue index is rarely the same as protein index.
  Do you want a perfect match or do you want say 80% homology?
  Which PDBs do you want for a protein?
  
  Personal example
  For a website I have developed I have a route that gets all the PDBs for a given gene. (enter link description here). The way I did it is that I parsed Uniprot using a custom parser and made a dictionary/DB for each species with many synonyms for a gene going to a Uniprot ID and then from there I have another dictionary/DB that goes from Uniprot to PDBs if any. I went for Uniprot as I needed other data too (e.g. features) to present to the user. Including a renumbering option.
  All this is way overkill for what you need. However, if you specify the species I can easily share a JSON file online.
  SIFTs
  If point 3 is important and you have Uniprot IDs I would suggest going with SIFTs. It has the offsets and has mapping for Uniprot IDs (pdb_chain_uniprot.tsv).
  Gene names
  In terms of mapping gene names to NCBI/Uniprot/Ensembl IDs, there are mapping tables everywhere. But if you may have obscure synonyms, using the NCBI API is a good option. 
  Uniprot data is better for protein and has PDB codes and chains, but the API gives a XML reply which is a bit annoying (I wrote a parser for it, but I think there was going to be one in Biopython).
  Homologues
  If you would like homologues, say your organism is human and you are okay with mouse, you can either use the threaded SwissModel models or use the blast query in RCSB PDB (not the PDBe, which has better data normally) or NCBI set to PDB database.
  Swissmodel actually contains also PDB structures, so that may be a good starting point if your organism is one of those where precompiled exists.
  Parts
  Some proteins, especially mammalian are formed by separate domains linked together, especially the docking scaffolds. In which case you may care for a specific model within the gene, hence the indexing issue and the potential getting features.
  If you want a single PDB structure for each gene and do not care about the technical I have some Pymol-using py3 code to fuse models together with the N and C termini aligned on line. But I strongly discourage that and would argue for protein feature based routes.
  
original_text: 2536: <p>I have a list of around 500 protein targets (human). I only have their protein symbols. As an example:</p>
  
  <p>EGFR
  AR
  FOXA1
  CXCR3
  ...</p>
  
  <p>I want to get structural data (atomic coordinate) from PDB (Protein Data Bank) at once, either programmatically (Python or R) or with a web api. Do you know a clear step by step tutorial for this task or code example?</p>
  
  <p>If that is not available, at least I need to find the PDB IDs of my list of protein symbols at once.</p>
  
  <p>thanks</p>
   6322: <p>There is not a simple way and there are factor that you also need to consider before starting.</p>
  
  <ol>
  <li>Are you using gene names or gene accession numbers/id (NCBI/Uniprot)?</li>
  <li>If not, are the names the current standard ones (<em>e.g.</em> scraped names from old papers is a definite no)</li>
  <li>PDB residue index is rarely the same as protein index.</li>
  <li>Do you want a perfect match or do you want say 80% homology?</li>
  <li>Which PDBs do you want for a protein?</li>
  </ol>
  
  <h2>Personal example</h2>
  
  <p>For a website I have developed I have a route that gets all the PDBs for a given gene. (<a href="https://michelanglo.sgc.ox.ac.uk/name" rel="nofollow noreferrer">enter link description here</a>). The way I did it is that I parsed Uniprot using a <a href="https://github.com/matteoferla/protein-module-for-VENUS" rel="nofollow noreferrer">custom parser</a> and made a dictionary/DB for each species with many synonyms for a gene going to a Uniprot ID and then from there I have another dictionary/DB that goes from Uniprot to PDBs if any. I went for Uniprot as I needed other data too (e.g. features) to present to the user. Including a renumbering option.
  All this is way overkill for what you need. However, if you specify the species I can easily share a JSON file online.</p>
  
  <h2>SIFTs</h2>
  
  <p>If point 3 is important and you have Uniprot IDs I would suggest going with <a href="https://www.ebi.ac.uk/pdbe/docs/sifts/" rel="nofollow noreferrer">SIFTs</a>. It has the offsets and has mapping for Uniprot IDs (pdb_chain_uniprot.tsv).</p>
  
  <h2>Gene names</h2>
  
  <p>In terms of mapping gene names to NCBI/Uniprot/Ensembl IDs, there are mapping tables everywhere. But if you may have obscure synonyms, using the NCBI API is a good option. 
  Uniprot data is better for protein and has PDB codes and chains, but the API gives a XML reply which is a bit annoying (I wrote a parser for it, but I think there was going to be one in Biopython).</p>
  
  <h2>Homologues</h2>
  
  <p>If you would like homologues, say your organism is human and you are okay with mouse, you can either use the threaded SwissModel models or use the blast query in RCSB PDB (not the PDBe, which has better data normally) or NCBI set to PDB database.
  Swissmodel actually contains also PDB structures, so that may be a good starting point if your organism is <a href="https://swissmodel.expasy.org/repository" rel="nofollow noreferrer">one of those where precompiled exists</a>.</p>
  
  <h2>Parts</h2>
  
  <p>Some proteins, especially mammalian are formed by separate domains linked together, especially the docking scaffolds. In which case you may care for a specific model within the gene, hence the indexing issue and the potential getting features.
  If you want a single PDB structure for each gene and do not care about the technical I have <a href="https://github.com/matteoferla/protein_fuser" rel="nofollow noreferrer">some Pymol-using py3 code</a> to fuse models together with the N and C termini aligned on line. But I strongly discourage that and would argue for protein feature based routes.</p>
  