[ensembl-dev] Homology

James Blackshaw jab250 at mrc-mbu.cam.ac.uk
Fri Nov 11 17:50:54 GMT 2011


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 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",
     -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





More information about the Dev mailing list