[ensembl-dev] Homology

Matthieu Muffato muffato at ebi.ac.uk
Mon Nov 14 12:02:34 GMT 2011


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/
>>
>>


-- 
Matthieu Muffato, Ph.D.
Ensembl Developer - Comparative Genomics
European Bioinformatics Institute (EMBL-EBI)
Wellcome Trust Genome Campus, Hinxton
Cambridge, CB10 1SD, United Kingdom




More information about the Dev mailing list