Thank you both for the help and for your time. I'm stuck with this problem and do not know how to fix it.
I made this change that you propose tfrayner but still gives an error:
-------------------- EXCEPTION --------------------
MSG: [Bio::EnsEMBL::Compara::Member=HASH(0x9adfe40)] must be a Bio::En
+sEMBL::Compara::MethodLinkSpeciesSet object
STACK Bio::EnsEMBL::Compara::DBSQL::HomologyAdaptor::fetch_all_by_Meth
+odLinkSpeciesSet_orthology_type_subtype /home/david/src/ensembl-compa
+ra/modules/Bio/EnsEMBL/Compara/DBSQL/HomologyAdaptor.pm:430
STACK toplevel ortologos.pl:35
---------------------------------------------------
I started with perl and Ensembl recently and I do not quite understand yet. The documentation is here:
http://www.ensembl.org/info/docs/api/Pdoc/ensembl-compara/modules/Bio/EnsEMBL/Compara/DBSQL/HomologyAdaptor.html#POD7
So there should show only the orthologous of Mammalia which are one-to-one.This another code works and returns all species homologues, but I only want mammalian orthologues.
use strict;
use warnings;
use Bio::EnsEMBL::Registry;
## Load the registry automatically
my $reg = "Bio::EnsEMBL::Registry";
$reg->load_registry_from_url('mysql://anonymous@ensembldb.ensembl.
+org');
## Get the human gene adaptor
my $human_gene_adaptor =
$reg->get_adaptor("Homo sapiens", "core", "Gene");
## Get the compara member adaptor
my $member_adaptor =
$reg->get_adaptor("Compara", "compara", "Member");
## Get the compara homology adaptor
my $homology_adaptor =
$reg->get_adaptor("Compara", "compara", "Homology");
my @BreastCANgenes = ('ABCA3','ABCB10','ABCB8','ACADM');
open ("archivo", ">homologos.txt");
my $gen;
foreach $gen (@BreastCANgenes) {
## Get all existing gene object
my $ctdp1_genes = $human_gene_adaptor->fetch_all_by_external_name(
+$gen);
## For each of these genes...
foreach my $ctdp1_gene (@$ctdp1_genes) {
## Get the compara member
my $member = $member_adaptor->fetch_by_source_stable_id(
"ENSEMBLGENE", $ctdp1_gene->stable_id);
## Get all the homologues
my $all_homologies = $homology_adaptor->fetch_all_by_Member($mem
+ber);
## For each homology
foreach my $this_homology (@$all_homologies) {
## print the description (type of homology) and the
## subtype (taxonomy level of the event: duplic. or speciation
+)
print $this_homology->description, " [", $this_homology->subty
+pe, "]\n";
print archivo $this_homology->description, " [", $this_homolog
+y->subtype, "]\n";
## print the members in this homology
my $members = $this_homology->get_all_Members();
foreach my $this_member (@$members) {
print archivo $this_member->source_name, " ",
$this_member->stable_id, " (",
$this_member->genome_db->name, ")\n"
}
print "\n";
}
}
}
close ("archivo");
|