in reply to
Re: Problems with ensembl perl script
in thread Problems with ensembl perl script
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");