<p>If you're comfortable doing a little programming, check out <a href="http://mygene.info" rel="noreferrer">mygene.info</a> (web services for gene annotations of all sorts).  ID translation is specifically one of the use cases addressed in the <a href="https://bioconductor.org/packages/release/bioc/html/mygene.html" rel="noreferrer">bioconductor client</a> (see the <a href="https://bioconductor.org/packages/release/bioc/vignettes/mygene/inst/doc/mygene.pdf" rel="noreferrer">vignette</a>), and there is a <a href="https://pypi.python.org/pypi/mygene" rel="noreferrer">python client</a> as well available through pypi. The documentation for mygene can be found <a href="http://mygene-py.readthedocs.io/en/latest/" rel="noreferrer">here</a>.</p>

CC BY-SA 3.0
2017-06-06T17:52:17.670Z
2017-06-06T19:53:55.077Z
2017-06-06T19:53:55.077Z
Andrew
<p>You can do the same using <a href="https://www.bioconductor.org/packages/release/bioc/html/AnnotationDbi.html" rel="nofollow noreferrer">AnnotationDbi</a> Package from Bioconductor. Download the organism specific annotation file like <a href="https://bioconductor.org/packages/release/data/annotation/html/org.Mm.eg.db.html" rel="nofollow noreferrer">org.Mm.eg.db</a> for mouse and map current gene ids to the gene names/gene symbols.</p>

CC BY-SA 3.0
2017-06-06T18:32:15.170Z
2017-06-06T18:32:15.170Z
arup
<p>My favourite gene database conversion site is <a href="https://biodbnet-abcc.ncifcrf.gov/db/db2db.php" rel="nofollow noreferrer">db2db</a>. You provide a list of IDs in one of a large number of different public formats, and can select one or more IDs as translation targets. It will then walk through various known paths to do the translation, picking what it determines to be the most reliable route to get the information you have asked for. Results appear in the browser as a table, but can also be exported as an Excel file, or as a tab-separated text file.</p>

<p>Note that the mapping of genes from one database to another is not a one-to-one mapping. It is likely the case that there will be some genes in the source database that map to multiple genes in the target database (and <em>vice versa</em>), and some genes that aren't present in the target database. These phenomena probably account for the "ridiculous" results that have been seen here.</p>

CC BY-SA 3.0
2017-06-06T13:46:44.057Z
2017-06-06T13:46:44.057Z
gringer
<p>I'm not a huge fan of the Ensembl BioMart system because I find it difficult to use. The <a href="http://llama.mshri.on.ca/synergizer/doc/" rel="nofollow noreferrer">Synergizer</a> has a very straightforward interface and works pretty well for most lists. Note: it hasn't been updated in a while.</p>

CC BY-SA 3.0
2017-06-06T14:37:23.240Z
2017-06-06T14:37:23.240Z
morgantaschuk
<p>By far my preferred option for doing this manually is PICR:
<a href="http://www.ebi.ac.uk/Tools/picr/" rel="nofollow noreferrer">http://www.ebi.ac.uk/Tools/picr/</a></p>

<p>BTW it is not "ridiculous" to get different numbers of genes reported for a given set of proteins. For several reasons:</p>

<ol>
<li>Uniprot IDs can disappear, merge or be split</li>
<li>not all uniprot and gene IDs have a 1-to-1 relationship</li>
<li>depending on species some gene symbols can be ambiguous or synonymous.</li>
</ol>

CC BY-SA 3.0
2017-07-11T09:18:11.997Z
2017-07-11T09:18:11.997Z
ithinkiam
<p>I tend to use <a href="http://www.ensembl.org/biomart" rel="noreferrer">Ensembl Biomart</a> for such queries since there are APIs for various programming languages, e.g. <a href="https://bioconductor.org/packages/release/bioc/html/biomaRt.html" rel="noreferrer">biomaRt</a>, and, maybe more interestingly, via a <a href="http://www.ensembl.org/info/data/biomart/biomart_restful.html" rel="noreferrer">REST API</a> (although it’s a pretty terrible one).</p>

<p>To translate identifiers from different databases, proceed as follows:</p>

<ol>
<li>Choose database “Ensembl genes”</li>
<li>Choose dataset <em>your desired oganism</em></li>
<li>Go on “Filters” › “Gene:” › “Input external reference ID list”

<ol>
<li>Select the chosen source database</li>
<li>Provide a list of IDs, delimited by newline</li>
</ol></li>
<li>Go to “Attributes” › “Gene:” › untick “Transcript stable ID”

<ol>
<li>If Ensembl IDs are desired, leave “Gene stable ID” ticked …</li>
<li>Otherwise untick it; go to “External:”, tick your desired identifier format</li>
</ol></li>
<li>Click “Results” at the top left. This gives a preview that can be exported into various formats; alternatively the top centre buttons “XML” and “Perl” provide the query in XML (for SOAP/REST requests) and as a (horrendously formatted) executable Perl script.</li>
</ol>

CC BY-SA 3.0
2017-07-11T11:13:09.387Z
The genenames biomart can be very useful for this - it's got a nice user interface for bulk translation, covers a wide variety of identifiers, can access synonyms or defunct names, etc. However, the service is sometimes up and down like a yoyo and some wrapper client libraries are difficult about versions of biomart.
agapow
CC BY-SA 3.0
2017-07-11T13:01:07.627Z
@agapow Absolutely, agreed. :-(
Konrad Rudolph
CC BY-SA 3.0
2017-06-06T14:16:38.920Z
2017-06-06T14:16:38.920Z
Konrad Rudolph
<p><em>This is a question from <a href="https://www.reddit.com/user/apivan19" rel="noreferrer">/u/apivan19</a> on reddit. The original post can be found <a href="https://www.reddit.com/r/bioinformatics/comments/6ddvkv/converting_gene_names/" rel="noreferrer">here</a>.</em></p>

<p>I have some proteomics data that was given to me with the UniProt gene identifiers in column 1. I've been trying to convert these to normal gene symbols using various programs, but it is proving to be difficult.</p>

<p>The Uniprot website does it fairly decently, but it is not able to convert all of them and then adds some unknown genes into my list.</p>

<p>For example, I will give it 5439 genes in UniProt notation, and will say "5420 of 5439 UniProt identifiers have been converted to 5450 gene symbols"... which is ridiculous.</p>

<p>I tried using David to change the symbols, but it returns them to me in some ridiculous, random order and there's no way I can sort... actually there might be but it'll take a second.</p>

<p>What are some of the easiest ways to do this? It's already very time consuming and am looking for simpler solutions</p>

<database><gene><conversion>
Converting gene names from one public database format to another
# Converting gene names from one public database format to another

(Asked by: username_0 on 2017-06-06)

*This is a question from [/u/apivan19](https://www.reddit.com/user/apivan19) on reddit. The original post can be found [here](https://www.reddit.com/r/bioinformatics/comments/6ddvkv/converting_gene_names/).*

I have some proteomics data that was given to me with the UniProt gene identifiers in column 1. I've been trying to convert these to normal gene symbols using various programs, but it is proving to be difficult.

The Uniprot website does it fairly decently, but it is not able to convert all of them and then adds some unknown genes into my list.

For example, I will give it 5439 genes in UniProt notation, and will say "5420 of 5439 UniProt identifiers have been converted to 5450 gene symbols"... which is ridiculous.

I tried using David to change the symbols, but it returns them to me in some ridiculous, random order and there's no way I can sort... actually there might be but it'll take a second.

What are some of the easiest ways to do this? It's already very time consuming and am looking for simpler solutions

**Tags:** database, gene, conversion

---

## 6 answers

### Answer by username_5 on 2017-06-06. Score: 9 | Accepted answer

I tend to use [Ensembl Biomart](http://www.ensembl.org/biomart) for such queries since there are APIs for various programming languages, e.g. [biomaRt](https://bioconductor.org/packages/release/bioc/html/biomaRt.html), and, maybe more interestingly, via a [REST API](http://www.ensembl.org/info/data/biomart/biomart_restful.html) (although it’s a pretty terrible one).

To translate identifiers from different databases, proceed as follows:

1. Choose database “Ensembl genes”
2. Choose dataset *your desired oganism*
3. Go on “Filters” › “Gene:” › “Input external reference ID list”
   1. Select the chosen source database
   2. Provide a list of IDs, delimited by newline
4. Go to “Attributes” › “Gene:” › untick “Transcript stable ID”
   1. If Ensembl IDs are desired, leave “Gene stable ID” ticked …
   2. Otherwise untick it; go to “External:”, tick your desired identifier format
5. Click “Results” at the top left. This gives a preview that can be exported into various formats; alternatively the top centre buttons “XML” and “Perl” provide the query in XML (for SOAP/REST requests) and as a (horrendously formatted) executable Perl script.

> **Comments:**
> **username_6**: The genenames biomart can be very useful for this - it's got a nice user interface for bulk translation, covers a wide variety of identifiers, can access synonyms or defunct names, etc. However, the service is sometimes up and down like a yoyo and some wrapper client libraries are difficult about versions of biomart.  
> **username_5**: @agapow Absolutely, agreed. :-(  

---

### Answer by username_1 on 2017-06-06. Score: 8

If you're comfortable doing a little programming, check out [mygene.info](http://mygene.info) (web services for gene annotations of all sorts). ID translation is specifically one of the use cases addressed in the [bioconductor client](https://bioconductor.org/packages/release/bioc/html/mygene.html) (see the [vignette](https://bioconductor.org/packages/release/bioc/vignettes/mygene/inst/doc/mygene.pdf)), and there is a [python client](https://pypi.python.org/pypi/mygene) as well available through pypi. The documentation for mygene can be found [here](http://mygene-py.readthedocs.io/en/latest/).


---

### Answer by username_2 on 2017-06-06. Score: 4

You can do the same using [AnnotationDbi](https://www.bioconductor.org/packages/release/bioc/html/AnnotationDbi.html) Package from Bioconductor. Download the organism specific annotation file like [org.Mm.eg.db](https://bioconductor.org/packages/release/data/annotation/html/org.Mm.eg.db.html) for mouse and map current gene ids to the gene names/gene symbols.


---

### Answer by username_0 on 2017-06-06. Score: 3

My favourite gene database conversion site is [db2db](https://biodbnet-abcc.ncifcrf.gov/db/db2db.php). You provide a list of IDs in one of a large number of different public formats, and can select one or more IDs as translation targets. It will then walk through various known paths to do the translation, picking what it determines to be the most reliable route to get the information you have asked for. Results appear in the browser as a table, but can also be exported as an Excel file, or as a tab-separated text file.

Note that the mapping of genes from one database to another is not a one-to-one mapping. It is likely the case that there will be some genes in the source database that map to multiple genes in the target database (and *vice versa*), and some genes that aren't present in the target database. These phenomena probably account for the "ridiculous" results that have been seen here.


---

### Answer by username_3 on 2017-06-06. Score: 3

I'm not a huge fan of the Ensembl BioMart system because I find it difficult to use. The [Synergizer](http://llama.mshri.on.ca/synergizer/doc/) has a very straightforward interface and works pretty well for most lists. Note: it hasn't been updated in a while.


---

### Answer by username_4 on 2017-07-11. Score: 2

By far my preferred option for doing this manually is PICR:
<http://www.ebi.ac.uk/Tools/picr/>

BTW it is not "ridiculous" to get different numbers of genes reported for a given set of proteins. For several reasons:

1. Uniprot IDs can disappear, merge or be split
2. not all uniprot and gene IDs have a 1-to-1 relationship
3. depending on species some gene symbols can be ambiguous or synonymous.


---

