[ensembl-dev] xref mapping
mag
mr6 at ebi.ac.uk
Thu Feb 27 14:43:49 GMT 2014
Hi Genomeo,
Taking the last entry as example:
Hs.743764 refers to
http://www.ncbi.nlm.nih.gov/UniGene/clust.cgi?UGID=5947187&TAXID=9606&SEARCH=Hs.743764
This is a human locus.
The description means that this locus is similar to a gene in rat, as it
has not been fully annotated in human.
I agree the description can be misleading, but it is imported directly
from NCBI as is, so there is not much we can do about it.
Regards,
Magali
On 27/02/2014 14:37, Genomeo Dev wrote:
> Thanks very much Magali for pointing that out.
>
> If understand you correctly db_type and species are therefore
> attributes of the query gene IDs not the returned cross-reference ids.
> For my query IDs I see I define that here:
>
> my $gene_adaptor = Bio::EnsEMBL::Registry->get_adaptor( "human",
> "core", "gene" );
>
> I have tried to lookup about 5000 human ensembl IDs and found that for
> 256 I get cross mapping to other organisms. It only happens for
> UniGene. For example for ENSG00000010244:
>
> display_iddbnameensembl_startxref_startdisplay_idscoredb_display_namexref_endevalueinfo_textinfo_typeensembl_endprimary_idensembl_identitysynonymsversioncigar_linexref_identitydbnamedescription
> ENSG00000010244ensembl11Hs.50077523313UniGene4672SEQUENCE_MATCH4672Hs.5007759901631M1D1592M1I1448M99UniGeneZinc
> finger protein 207
> ENSG00000010244ensembl56671Hs.6123771200UniGene249SEQUENCE_MATCH5417Hs.61237710249M97UniGeneTranscribed
> locus
> ENSG00000010244ensembl128531Hs.6361122260UniGene452SEQUENCE_MATCH12400Hs.63611230452M100UniGeneTranscribed
> locus
> ENSG00000010244ensembl52131Hs.6583443230UniGene684SEQUENCE_MATCH4526Hs.65834440615M1I8M1D3M1D34M1D13M1D5M1I4M91UniGeneTranscribed
> locus
> ENSG00000010244ensembl301423Hs.6702381995UniGene427SEQUENCE_MATCH2607Hs.67023820399M1D6M94UniGeneTranscribed
> locus
> ENSG00000010244ensembl115052Hs.6943783063UniGene628SEQUENCE_MATCH12131Hs.69437840627M98UniGeneTranscribed
> locus
> ENSG00000010244ensembl11Hs.7169931971UniGene396SEQUENCE_MATCH396Hs.716993990396M99UniGeneTranscribed
> locus, strongly similar to NP_001034109.1 Zfp207 gene product [Rattus
> norvegicus]
> ENSG00000010244ensembl501Hs.7437643472UniGene791SEQUENCE_MATCH841Hs.74376450716M1D75M91UniGeneTranscribed
> locus, moderately similar to NP_001034109.1 Zfp207 gene product
> [Rattus norvegicus]
>
> (obtained from Rest)
>
>
>
> On 27 February 2014 14:00, mag <mr6 at ebi.ac.uk <mailto:mr6 at ebi.ac.uk>>
> wrote:
>
> Hi Genomeo,
>
> To find which attributes are available, the Ensembl Doxygen
> documentation usually covers everything you need.
> Looking at
> http://www.ensembl.org/info/docs/Doxygen/core-api/classBio_1_1EnsEMBL_1_1Gene.html
> will tell you that you can obtain the following from a gene:
>
> $gene->source()
> $gene->analysis->logic_name()
> $gene->description()
> $gene->external_name()
> $gene->biotype()
> $gene->seq_region_start()
> $gene->seq_region_end()
> $gene->seq_region_name()
> $gene->seq_region_strand()
> $gene->display_id()
>
> When using the API, you should always know what object_type you
> are using, as it allows you to use the correct attributes.
> In this example, if you are using a Bio::EnsEMBL::Gene,
> object_type is 'gene'
>
> For species and db_type as well, you need to know those beforehand
> when using directly the perl API.
> They are the ones which will allow you to connect to the correct
> database based on the data you are looking for.
>
> Regarding cross references to other organisms, do you have any
> examples?
> Generally, we should be only mapping to other resources for the
> same organism.
> For example, for pig, we will only assign cross references to
> Uniprot pig proteins.
>
> The main exceptions I can think of are:
> - HGNC names
> Typically, if the coverage for a species is low (ie, not all 20
> odd thousand proteins have been submitted to Uniprot or RefSeq),
> we will use HGNC names to fill in the gaps.
> Where no name can be found and there is a homolog in human, we use
> the same name as in human.
> - Ensembl translations
> For some low coverage species, annotations was provided by
> projecting human annotation via a whole genome alignment.
> For these models, we add an external reference to the human
> translation which was used to build the model.
>
>
> Hope this helps,
> Magali
>
>
> On 27/02/2014 13:41, Genomeo Dev wrote:
>> Thanks very much for the useful answer.
>>
>> I noticed that cross ref also maps to genes from organisms other
>> than that of the query gene ID. Any comment on that?
>>
>> Related to the previous question, I use the following Rest python
>> code to do id lookup for particular Ensembl IDs:
>>
>> pref= "/lookup/id/"
>> ext = "?"
>>
>> for line in inputfile1:
>> geneid= line.rstrip('\n')
>>
>> resp, content = http.request(server+pref+geneid+ext,
>> method="GET", headers={"Content-Type":"application/json"})
>>
>> if not resp.status == 200:
>> print "%s\t%s\t%s" % (geneid, "Invalid
>> response:", resp.status)
>> continue
>> #sys.exit()
>> print "%s\t%s" % (geneid,content)
>>
>>
>> And I get this output:
>>
>> ENSG00000223972{"source":"ensembl_havana","object_type":"Gene","logic_name":"ensembl_havana_gene","species":"homo_sapiens","description":"DEAD/H
>> (Asp-Glu-Ala-Asp/His) box helicase 11 like 1 [Source:HGNC
>> Symbol;Acc:37102]","display_name":"DDX11L1","biotype":"pseudogene","end":14412,"seq_region_name":"1","db_type":"core","strand":1,"id":"ENSG00000223972","start":11869}
>>
>> What would be the classes/attributes to use under the Perl API to
>> get that? i.e:
>>
>> source
>> object_type
>> logic_name
>> species
>> description
>> display_name
>> biotype
>> end
>> seq_region_name
>> db_type
>> strand
>> id
>> start
>>
>> Thanks,
>>
>> G.
>>
>>
>> On 27 February 2014 11:39, mag <mr6 at ebi.ac.uk
>> <mailto:mr6 at ebi.ac.uk>> wrote:
>>
>> Hi Genomeo,
>>
>> The REST server only display the current/latest release.
>> The release version can be found with this endpoint:
>> http://beta.rest.ensembl.org/documentation/info/software
>>
>> To get more details with the Ensembl API, you only need to
>> update the print_DBEntries method to display all the
>> attributes you are looking for.
>> Compared to the output from REST, we have the following:
>> - display_id is $dbe->display_id()
>> - primary_id is $dbe->primary_id()
>> - version is $dbe->version()
>> - description is $dbe->description()
>> - dbname is $dbe->dbname()
>> - synonyms is $dbe->get_all_synonyms()
>> - info_type is $dbe->info_type()
>> - info_text is $dbe->info_text()
>> - db_display_name is $dbe->db_display_name()
>>
>> You can chose what format the REST will output.
>> Details of all formats can be found in our user guide:
>> http://beta.rest.ensembl.org/documentation/user_guide
>> For tab-delimited output, content_type=text/x-gff3 is used,
>> but it is only available for the /feature endpoint.
>>
>> There is no file in the Ensembl ftp dumps that contains all
>> the external references produced.
>>
>>
>> Regards,
>> Magali
>>
>>
>> On 27/02/2014 11:20, Genomeo Dev wrote:
>>> Hi,
>>>
>>> I am interested in getting wide cross references to ensembl
>>> gene IDs. I found two programmatic ways to do that which
>>> give consistent results but different amount of details.
>>> Using ENSG00000223972 as an example:
>>> (1)
>>> Using this rest API Endpoint python code
>>> (http://beta.rest.ensembl.org/documentation/info/xref_id)
>>>
>>> 1. importhttplib2,sys
>>> 2.
>>> 3. http =httplib2.Http(".cache")
>>> 4.
>>> 5. server ="http://beta.rest.ensembl.org"
>>> 6. ext ="/xrefs/id/ENSG00000157764?"
>>> 7. resp,content
>>> =http.request(server+ext,method="GET",headers={"Content-Type":"application/json"})
>>> 8.
>>> 9. ifnotresp.status ==200:
>>> 10. print"Invalid response: ",resp.status
>>> 11. sys.exit()
>>> 12. importjson
>>> 13.
>>> 14. decoded =json.loads(content)
>>> 15. printrepr(decoded)
>>>
>>>
>>> I get:
>>>
>>> {"display_id":"OTTHUMG00000000961","primary_id":"OTTHUMG00000000961","version":"2","description":null,"dbname":"OTTG","synonyms":[],"info_type":"NONE","info_text":"","db_display_name":"Havana
>>> gene"}
>>>
>>> {"primary_id":"Hs.714157","dbname":"UniGene","ensembl_identity":98,"synonyms":[],"ensembl_start":6,"xref_start":1,"xref_end":1639,"db_display_name":"UniGene","display_id":"Hs.714157","ensembl_end":1657,"version":"0","score":8055,"cigar_line":"1200M1D299M12D140M","description":"DEAD/H
>>> (Asp-Glu-Ala-Asp/His) box helicase 11 like
>>> 1","xref_identity":97,"evalue":null,"info_text":"","info_type":"SEQUENCE_MATCH"}
>>>
>>> {"primary_id":"Hs.618434","dbname":"UniGene","ensembl_identity":58,"synonyms":[],"ensembl_start":669,"xref_start":1,"xref_end":974,"db_display_name":"UniGene","display_id":"Hs.618434","ensembl_end":1655,"version":"0","score":4757,"cigar_line":"537M1D299M12D138M","description":"Similar
>>> to DEAD/H (Asp-Glu-Ala-Asp/His) box polypeptide 11 isoform
>>> 1, mRNA (cDNA clone
>>> IMAGE:6103207)","xref_identity":96,"evalue":null,"info_text":"","info_type":"SEQUENCE_MATCH"}
>>>
>>> {"display_id":"DDX11L1","primary_id":"37102","version":"0","description":"DEAD/H
>>> (Asp-Glu-Ala-Asp/His) box helicase 11 like
>>> 1","dbname":"HGNC","synonyms":[],"info_type":"DIRECT","info_text":"Generated
>>> via ensembl_manual","db_display_name":"HGNC Symbol"}
>>>
>>> {"display_id":"DDX11L5","primary_id":"100287596","version":"0","description":"DEAD/H
>>> (Asp-Glu-Ala-Asp/His) box helicase 11 like
>>> 5","dbname":"EntrezGene","synonyms":[],"info_type":"DEPENDENT","info_text":"","db_display_name":"EntrezGene"}
>>>
>>> {"display_id":"DDX11L1","primary_id":"100287102","version":"0","description":"DEAD/H
>>> (Asp-Glu-Ala-Asp/His) box helicase 11 like
>>> 1","dbname":"EntrezGene","synonyms":[],"info_type":"DEPENDENT","info_text":"","db_display_name":"EntrezGene"}
>>>
>>> {"display_id":"ENSG00000223972","primary_id":"ENSG00000223972","version":"0","description":"","dbname":"ArrayExpress","synonyms":[],"info_type":"DIRECT","info_text":"","db_display_name":"ArrayExpress"}
>>>
>>> {"display_id":"DDX11L5","primary_id":"100287596","version":"0","description":"DEAD/H
>>> (Asp-Glu-Ala-Asp/His) box helicase 11 like
>>> 5","dbname":"WikiGene","synonyms":[],"info_type":"DEPENDENT","info_text":"","db_display_name":"WikiGene"}
>>>
>>> {"display_id":"DDX11L1","primary_id":"100287102","version":"0","description":"DEAD/H
>>> (Asp-Glu-Ala-Asp/His) box helicase 11 like
>>> 1","dbname":"WikiGene","synonyms":[],"info_type":"DEPENDENT","info_text":"","db_display_name":"WikiGene"}]
>>>
>>> (2)
>>>
>>> Using this perl API code (based on
>>> http://www.ensembl.org/info/docs/api/core/core_tutorial.html):
>>>
>>> # Define a helper subroutine to print DBEntries
>>> sub print_DBEntries
>>> {
>>> my $db_entries = shift;
>>>
>>> foreach my $dbe ( @{$db_entries} ) {
>>> printf "\tXREF %s (%s)\n", $dbe->display_id(), $dbe->dbname();
>>> }
>>> }
>>>
>>> my $genes = $gene_adaptor->fetch_all_by_stable_id_list([@gene_list]);
>>>
>>> ...
>>>
>>> print "GENE ", $gene->stable_id(), "\n";
>>> print_DBEntries( $gene->get_all_DBEntries() );
>>> I get:
>>> XREF OTTHUMG00000000961 (OTTG)
>>> XREF ENSG00000223972 (ArrayExpress)
>>> XREF DDX11L1 (EntrezGene)
>>> XREF DDX11L5 (EntrezGene)
>>> XREF DDX11L1 (HGNC)
>>> XREF Hs.618434 (UniGene)
>>> XREF Hs.714157 (UniGene)
>>> XREF DDX11L1 (WikiGene)
>>> XREF DDX11L5 (WikiGene)
>>>
>>>
>>> Questions:
>>>
>>> 1. am I correct in saying that the Rest code uses the latest
>>> Ensembl release while the API code uses the Ensembl release
>>> currently installed as part of the VM (I am using release 74)?
>>>
>>> 2. Rest code gives more extensive details (which I like)
>>> compared to the perl API code. Could you suggest a simple
>>> way to use the API to get the same details?
>>>
>>> 3. The Rest code output format. Is tab separated text supported?
>>>
>>> 4. Is there a file in the Ensembl ftp area which contains
>>> pre generated detailed cross ref mappings for all current
>>> Ensembl genes?
>>> --
>>>
>>> Thanks,
>>>
>>> G.
>>>
>>>
>>> _______________________________________________
>>> Dev mailing listDev at ensembl.org <mailto:Dev at ensembl.org>
>>> Posting guidelines and subscribe/unsubscribe info:http://lists.ensembl.org/mailman/listinfo/dev
>>> Ensembl Blog:http://www.ensembl.info/
>>
>>
>> _______________________________________________
>> Dev mailing list Dev at ensembl.org <mailto:Dev at ensembl.org>
>> Posting guidelines and subscribe/unsubscribe info:
>> http://lists.ensembl.org/mailman/listinfo/dev
>> Ensembl Blog: http://www.ensembl.info/
>>
>>
>>
>>
>> --
>> G.
>>
>>
>> _______________________________________________
>> Dev mailing listDev at ensembl.org <mailto:Dev at ensembl.org>
>> Posting guidelines and subscribe/unsubscribe info:http://lists.ensembl.org/mailman/listinfo/dev
>> Ensembl Blog:http://www.ensembl.info/
>
>
> _______________________________________________
> Dev mailing list Dev at ensembl.org <mailto:Dev at ensembl.org>
> Posting guidelines and subscribe/unsubscribe info:
> http://lists.ensembl.org/mailman/listinfo/dev
> Ensembl Blog: http://www.ensembl.info/
>
>
>
>
> --
> G.
>
>
> _______________________________________________
> Dev mailing list Dev at ensembl.org
> Posting guidelines and subscribe/unsubscribe info: http://lists.ensembl.org/mailman/listinfo/dev
> Ensembl Blog: http://www.ensembl.info/
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.ensembl.org/pipermail/dev_ensembl.org/attachments/20140227/b0c3f2ce/attachment.html>
More information about the Dev
mailing list