[ensembl-dev] Homology

Andy Yates ayates at ebi.ac.uk
Mon Nov 14 12:56:44 GMT 2011


You can run the following command (assuming the Ensembl API is on your PERL5LIB)

perl -MBio::EnsEMBL::ApiVersion -e 'warn software_version()'

Andy

On 14 Nov 2011, at 12:51, James Blackshaw wrote:

> Hi,
> this still doesn't work, I get the error:
> "Can't call method "fetch_by_source_stable_id" on an undefined value at homology_workshop_getAllHomologuesForGene.pl line 28."
> 
> I get the following error off the script for comparing all homologs between two species. A pity, as that is otherwise perfect for what I want.
> "Can't call method "get_HomologyAdaptor" on an undefined value at homology_getAllHomologuesBetween2Species.pl line 24."
> 
> Is there anywhere I'd be able to check the version number of the API I have?
> 
> Regards,
> -James
> 
> On 14/11/2011 12:02, Matthieu Muffato wrote:
>> Hi James
>> 
>> I just hope there is no misunderstanding with the line numbers. Your script seems to work well, at least here, replacing the $homology_adaptor->fetch_all_by_Member($member) line by $homology_adaptor->fetch_all_by_Member($member->gene_member)
>> 
>> I can have the "dbID" error message when applying both changes. They are actually not compatible. Either you specify the gene ID in the first place, and stick with $homology_adaptor->fetch_all_by_Member($member), or you keep the protein ID, and you add the "->gene_member"
>> 
>> There is a script in the scripts/examples directory of the ensembl-compara repository, named homology_workshop_getAllHomologuesForGene.pl, that does the job if you know the gene name.
>> 
>> Regards,
>> Matthieu
>> 
>> On 14/11/11 11:41, James Blackshaw wrote:
>>> Hi Matthieu,
>>> Changing Line 16 doesn't help, I get the same error reported.
>>> Changing line 25 gives me a new error though.
>>> Can't call method "dbID" on an undefined value at
>>> /usr/mbu/software/ensembl/ensembl-compara/modules/Bio/EnsEMBL/Compara/DBSQL/HomologyAdaptor.pm 
>>> line 37.
>>> 
>>> What I'm trying to do is get the homologs for a list of proteins or
>>> associated genes, either works. I'm surprised there's not already a
>>> script about for it, but can't find on on the mailing list.
>>> 
>>> -James
>>> 
>>> 
>>> On 14/11/2011 11:25, Matthieu Muffato wrote:
>>>> Hi James
>>>> 
>>>> In Comparam the homologies are stored at the gene level. Because your
>>>> Member object represents a peptide, the homology list that you
>>>> retrieve is empty.
>>>> 
>>>> You can either change the line 25 to
>>>> my $homologies =
>>>> $homology_adaptor->fetch_all_by_Member($member->gene_member);
>>>> 
>>>> or change the line 16 to
>>>> my $member = $member_adaptor->fetch_by_source_stable_id("ENSEMBLGENE",
>>>> ****) with an Ensembl gene ID if you know it
>>>> 
>>>> to have all the homologies of your favourite gene
>>>> 
>>>> Hope this helps,
>>>> Matthieu
>>>> 
>>>> On 14/11/11 11:15, James Blackshaw wrote:
>>>>> Hi,
>>>>> I am using the code from the API installation page and that page talks
>>>>> about version 64.
>>>>> http://www.ensembl.org/info/docs/api/api_installation.html
>>>>> 
>>>>> This is my output under verbose, looks like it is connecting.
>>>>> Odd number of elements in hash assignment at
>>>>> /usr/mbu/software/ensembl/ensembl/modules/Bio/EnsEMBL/Utils/Argument.pm 
>>>>> line 148.
>>>>> Transcript:ENSDART00000112153 Gene:ENSDARG00000090113 Chr:19
>>>>> Start:33519855 End:33522332
>>>>> Can't call method "get_all_Member_Attribute" on an undefined value at
>>>>> sandbox3.pl line 47.
>>>>> 
>>>>> Regards,
>>>>> James
>>>>> 
>>>>> 
>>>>> On 11/11/2011 20:20, Javier Herrero wrote:
>>>>>> Hi James
>>>>>> 
>>>>>> This error is typical when you fail to connect to the database.
>>>>>> 
>>>>>> I suspect you are using the HEAD code instead of the branch 64. The
>>>>>> head code is already configured for connecting to the forthcoming
>>>>>> database. Please switch your code to the 64 branch and try again:
>>>>>> 
>>>>>> cvs up -r branch-ensembl-64
>>>>>> 
>>>>>> Regards
>>>>>> 
>>>>>> Javier
>>>>>> 
>>>>>> On 11/11/11 19:29, Jan Vogel wrote:
>>>>>>> Hi James,
>>>>>>> 
>>>>>>> the first script from the powerpoint works for me w/o problems or
>>>>>>> modifications. I've tried schema 62 and schema 64 API's.
>>>>>>> 
>>>>>>> 
>>>>>>> The second one ( 'from the list' ) had some minor problems. It works
>>>>>>> like this :
>>>>>>> 
>>>>>>> my $member =
>>>>>>> $member_adaptor->fetch_by_source_stable_id('ENSEMBLGENE','ENSG00000004059'); 
>>>>>>> 
>>>>>>> 
>>>>>>> 
>>>>>>> or
>>>>>>> 
>>>>>>> my $member =
>>>>>>> $member_adaptor->fetch_by_source_stable_id(undef,'ENSG00000004059');
>>>>>>> 
>>>>>>> I did not try the zfish protein.
>>>>>>> 
>>>>>>> Hth,
>>>>>>> Jan
>>>>>>> 
>>>>>>> On Nov 11, 2011, at 9:50 AM, James Blackshaw wrote:
>>>>>>> 
>>>>>>>> Hi,
>>>>>>>> I've been trying to put together some scripts for finding the
>>>>>>>> homolgies
>>>>>>>> for some lists of genes I'm interested in, but I keep getting errors
>>>>>>>> with the "fetch" methods.
>>>>>>>> 
>>>>>>>> "Can't call method "fetch_by_source_stable_id" on an undefined
>>>>>>>> value at
>>>>>>>> sandbox3.pl <http://sandbox3.pl/> line 15."
>>>>>>>> 
>>>>>>>> I've used one script taken from a presentation by Stephen
>>>>>>>> Fitzgerald at
>>>>>>>> Edinburgh, and another from this maining list. I'm including both.
>>>>>>>> 
>>>>>>>> From the powerpoint:
>>>>>>>> use strict;
>>>>>>>> use Bio::EnsEMBL::Registry;
>>>>>>>> my $reg = "Bio::EnsEMBL::Registry";
>>>>>>>> 
>>>>>>>> $reg->load_registry_from_db(
>>>>>>>> -host=>"ensembldb.ensembl.org <http://ensembldb.ensembl.org/>",
>>>>>>>> -user => "anonymous");
>>>>>>>> 
>>>>>>>> 
>>>>>>>> my $ma = $reg->get_adaptor(
>>>>>>>> "Multi", "compara", "Member");
>>>>>>>> my $member = $ma->fetch_by_source_stable_id(
>>>>>>>> "ENSEMBLGENE", "ENSG00000000971");
>>>>>>>> 
>>>>>>>> my $homology_adaptor = $reg->get_adaptor(
>>>>>>>> "Multi", "compara", "Homology");
>>>>>>>> 
>>>>>>>> my $homologies = $homology_adaptor->
>>>>>>>> fetch_all_by_Member($member);
>>>>>>>> 
>>>>>>>> foreach my $this_homology (@$homologies) {
>>>>>>>> print $this_homology->description, "\n";
>>>>>>>> my $member_attributes = $this_homology->
>>>>>>>> get_all_Member_Attribute();
>>>>>>>> foreach my $this_mem_attr (@$member_attributes) {
>>>>>>>> my ($this_member, $this_attribute) =
>>>>>>>> @$this_mem_attr;
>>>>>>>> print $this_member->genome_db->name, " ",
>>>>>>>> $this_member->source_name, " ",
>>>>>>>> $this_member->stable_id, "\n";
>>>>>>>> }
>>>>>>>> print "\n";
>>>>>>>> }
>>>>>>>> 
>>>>>>>> ==========================================
>>>>>>>> 
>>>>>>>> From the list:
>>>>>>>> use Bio::EnsEMBL::Registry;
>>>>>>>> Bio::EnsEMBL::Registry->load_registry_from_db(
>>>>>>>> -host => 'ensembldb.ensembl.org',
>>>>>>>> -user => 'anonymous',
>>>>>>>> -port => 5306);
>>>>>>>> my $member_adaptor = Bio::EnsEMBL::Registry->get_adaptor(
>>>>>>>> 'Multi','compara','Member');
>>>>>>>> 
>>>>>>>> # fetch a Member
>>>>>>>> # get the MemberAdaptor
>>>>>>>> my $member_adaptor =
>>>>>>>> Bio::EnsEMBL::Registry->get_adaptor('Multi','compara','Member');
>>>>>>>> 
>>>>>>>> # fetch a Memmy $member =
>>>>>>>> $member_adaptor->fetch_by_source_stable_id('ENSEMBLPROTEIN','ENSG00000004059'); 
>>>>>>>> 
>>>>>>>> my $member =
>>>>>>>> $member_adaptor->fetch_by_source_stable_id('ENSEMBLPEP','ENSDARP00000103634'); 
>>>>>>>> 
>>>>>>>> # print out some information about the Member
>>>>>>>> print $member->description, "\n";
>>>>>>>> 
>>>>>>>> 
>>>>>>>> 
>>>>>>>> my $homology_adaptor = Bio::EnsEMBL::Registry->get_adaptor('Multi',
>>>>>>>> 'compara', 'Homology');
>>>>>>>> my $homologies = $homology_adaptor->fetch_all_by_Member($member);
>>>>>>>> 
>>>>>>>> # That will return a reference to an array with all
>>>>>>>> homologies(orthologues in
>>>>>>>> # other species and paralogues in the same one)
>>>>>>>> # Then for each homology, you can get all the Members implicated
>>>>>>>> 
>>>>>>>> foreach my $homology (@{$homologies}) {
>>>>>>>> # You will find different kind of description
>>>>>>>> # UBRH, MBRH, RHS, YoungParalogues
>>>>>>>> # see ensembl-compara/docs/docs/schema_doc.html for more details
>>>>>>>> 
>>>>>>>> print $homology->description," ", $homology->subtype,"\n";
>>>>>>>> # And if they are defined dN and dS related values
>>>>>>>> print " dn ", $homology->dn,"\n";
>>>>>>>> print " ds ", $homology->ds,"\n";
>>>>>>>> print " dnds_ratio ", $homology->dnds_ratio,"\n";
>>>>>>>> }
>>>>>>>> 
>>>>>>>> my $homology = $homologies->[0];
>>>>>>>> # take one of the homologies and lookinto it
>>>>>>>> 
>>>>>>>> foreach my $member_attribute
>>>>>>>> (@{$homology->get_all_Member_Attribute}) {
>>>>>>>> 
>>>>>>>> # for each Member, you get information on the Member specifically
>>>>>>>> and in
>>>>>>>> # relation to the homology relation via Attribute object
>>>>>>>> 
>>>>>>>> my ($member, $attribute) = @{$member_attribute};
>>>>>>>> print (join " ", map { $member->$_ } qw(stable_id taxon_id))."\n";
>>>>>>>> print (join " ", map { $attribute->$_ } qw(perc_id
>>>>>>>> perc_posperc_cov))."\n";
>>>>>>>> 
>>>>>>>> }
>>>>>>>> ====================================================
>>>>>>>> 
>>>>>>>> 
>>>>>>>> 
>>>>>>>> James Blackshaw
>>>>>>>> PhD Student
>>>>>>>> MRC Mitochondrial Biology Unit
>>>>>>>> 
>>>>>>>> 
>>>>>>>> _______________________________________________
>>>>>>>> Dev mailing list Dev at ensembl.org <mailto:Dev at ensembl.org>
>>>>>>>> List admin (including subscribe/unsubscribe):
>>>>>>>> http://lists.ensembl.org/mailman/listinfo/dev
>>>>>>>> Ensembl Blog: http://www.ensembl.info/
>>>>>>> 
>>>>>>> 
>>>>>>> 
>>>>>>> _______________________________________________
>>>>>>> Dev mailing listDev at ensembl.org <mailto:Dev at ensembl.org>
>>>>>>> List admin (including
>>>>>>> subscribe/unsubscribe):http://lists.ensembl.org/mailman/listinfo/dev
>>>>>>> Ensembl Blog:http://www.ensembl.info/
>>>>>> 
>>>>>> -- 
>>>>>> Javier Herrero, PhD
>>>>>> Ensembl Compara Project Leader
>>>>>> European Bioinformatics Institute (EMBL-EBI)
>>>>>> Wellcome Trust Genome Campus, Hinxton
>>>>>> Cambridge - CB10 1SD - UK
>>>>>> 
>>>>>> 
>>>>>> _______________________________________________
>>>>>> Dev mailing listDev at ensembl.org <mailto:Dev at ensembl.org>
>>>>>> List admin (including
>>>>>> subscribe/unsubscribe):http://lists.ensembl.org/mailman/listinfo/dev
>>>>>> Ensembl Blog:http://www.ensembl.info/
>>>>> 
>>>>> 
>>>>> 
>>>>> _______________________________________________
>>>>> Dev mailing list Dev at ensembl.org
>>>>> List admin (including subscribe/unsubscribe):
>>>>> http://lists.ensembl.org/mailman/listinfo/dev
>>>>> Ensembl Blog: http://www.ensembl.info/
>>>> 
>>>> 
>> 
>> 
> 
> 
> _______________________________________________
> Dev mailing list    Dev at ensembl.org
> List admin (including subscribe/unsubscribe): http://lists.ensembl.org/mailman/listinfo/dev
> Ensembl Blog: http://www.ensembl.info/

---
Andrew Yates                   Ensembl Core Software Project Leader
EMBL-EBI                       Tel: +44-(0)1223-492538
Wellcome Trust Genome Campus   Fax: +44-(0)1223-494468
Cambridge CB10 1SD, UK         http://www.ensembl.org/





More information about the Dev mailing list