Supplementary Method 1 (docx 142K)

Supplementary method 1
#!/usr/bin/perl
#M. van der Voet
use strict;
use Bio::EnsEMBL::Registry;
use Bio::AlignIO;
use Getopt::Long;
#use Time::HiRes qw { time };
#use Bio::EnsEMBL::Compara::DBSQL::MemberAdaptor;
#use Bio::EnsEMBL::Compara::DBSQL::HomologyAdaptor;
#use Bio::EnsEMBL::Compara::Homology;
#use Bio::EnsEMBL::Compara::Member;
#use Bio::EnsEMBL::Compara::Attribute;
my $registry='Bio::EnsEMBL::Registry';
$registry->load_registry_from_db (-host=>"ensembldb.ensembl.org", -user=>"anonymous");
open (FILE, '>ensembl_output.txt');
open (F, "ensembl_input.txt") || die "Could not open ensembl_input.txt: $!\n";
my @array = <F>;
print FILE
"Homology_type\tDrosophila_query\tDm_EntrezGene\tDm_%id\tDm_%pos\tDm_%cov\tHuman_match\tHs_
EntrezGene\tHs_%id\tHs_%pos\tHs_%cov\tDm+Hs_%id\tDm+Hs_%pos\n";
my $count=1;
foreach (@array) {
print $count++,"\n";
chomp ($_);
my $gene = $_;
my $ma = Bio::EnsEMBL::Registry->get_adaptor("Multi", "compara", "Member");
my $member = $ma->fetch_by_source_stable_id('ENSEMBLGENE',$gene);
my $comparaDBA =Bio::EnsEMBL::Registry->get_DBAdaptor('compara','compara');
my $mlssDBA = $comparaDBA->get_MethodLinkSpeciesSetAdaptor;
my $homology_adaptor = Bio::EnsEMBL::Registry->get_adaptor("Multi", "compara", "Homology");
if (defined $member){
#print "defined\n";
my $score = '0';
my $mlss = $mlssDBA>fetch_by_method_link_type_registry_aliases('ENSEMBL_orthoLOGUES',["Drosophila_melanogaster","Ho
mo_sapiens"]);
my $homologies = $homology_adaptor->fetch_all_by_Member_MethodLinkSpeciesSet($member,
$mlss);
if (@$homologies) {
$score = '1';
foreach my $this_homology (@$homologies) {
#print "hit\n";
print FILE $this_homology->description,"\t";
my $member_attributes = $this_homology->get_all_Member_Attribute();
my $sumid=0;
my $sumpos=0;
foreach my $this_mem_attr (@$member_attributes) {
my ($this_member, $this_attribute) = @$this_mem_attr;
print FILE $this_member->stable_id, "\t";
if ($this_member->stable_id =~ /FBgn/){
my $gene_adaptor = $registry->get_adaptor( 'drosophila_melanogaster', 'Core', 'Gene' );
my $drosophila_gene = $gene_adaptor->fetch_by_stable_id($this_member->stable_id);
my @db_entries=@{$drosophila_gene->get_all_DBLinks()};
foreach my $db_entry (@db_entries){
if ( $db_entry->database eq 'EntrezGene') {
print FILE $db_entry->display_id,"\t";
}
}
}
elsif ($this_member->stable_id =~ /ENSG/) {
my $gene_adaptor = $registry->get_adaptor( 'homo_sapiens', 'Core', 'Gene' );
my $human_gene = $gene_adaptor->fetch_by_stable_id($this_member->stable_id);
my @db_entries=@{$human_gene->get_all_DBLinks()};
foreach my $db_entry (@db_entries){
if ( $db_entry->database eq 'EntrezGene') {
print FILE $db_entry->display_id,"\t";
}
}
}
print FILE (join "\t", map { $this_attribute->$_ } qw(perc_id perc_pos perc_cov));
print FILE "\t";
my $id= (join "\t", map { $this_attribute->$_ } qw(perc_id)),"\n";
my $pos= (join "\t", map { $this_attribute->$_ } qw(perc_pos)),"\n";
$sumid = $id + $sumid;
$sumpos = $pos + $sumpos;
}
print FILE $sumid,"\t";
print FILE $sumpos,"\n";
}
}
my $mlss = $mlssDBA>fetch_by_method_link_type_registry_aliases('ENSEMBL_paraLOGUES',["Drosophila_melanogaster","Hom
o_sapiens"]);
my $homologies = $homology_adaptor->fetch_all_by_Member_MethodLinkSpeciesSet($member,
$mlss);
if (@$homologies) {
$score = '1';
foreach my $this_homology (@$homologies) {
#print "hit\n";
print FILE $this_homology->description,"\t";
my $member_attributes = $this_homology->get_all_Member_Attribute();
my $sumid=0;
my $sumpos=0;
foreach my $this_mem_attr (@$member_attributes) {
my ($this_member, $this_attribute) = @$this_mem_attr;
print FILE $this_member->stable_id, "\t";
if ($this_member->stable_id =~ /FBgn/){
my $gene_adaptor = $registry->get_adaptor( 'drosophila_melanogaster', 'Core', 'Gene' );
my $drosophila_gene = $gene_adaptor->fetch_by_stable_id($this_member->stable_id);
my @db_entries=@{$drosophila_gene->get_all_DBLinks()};
foreach my $db_entry (@db_entries){
if ( $db_entry->database eq 'EntrezGene') {
print FILE $db_entry->display_id,"\t";
}
}
}
elsif ($this_member->stable_id =~ /ENSG/) {
my $gene_adaptor = $registry->get_adaptor( 'homo_sapiens', 'Core', 'Gene' );
my $human_gene = $gene_adaptor->fetch_by_stable_id($this_member->stable_id);
my @db_entries=@{$human_gene->get_all_DBLinks()};
foreach my $db_entry (@db_entries){
if ( $db_entry->database eq 'EntrezGene') {
print FILE $db_entry->display_id,"\t";
}
}
}
print FILE (join "\t", map { $this_attribute->$_ } qw(perc_id perc_pos perc_cov));
print FILE "\t";
my $id= (join "\t", map { $this_attribute->$_ } qw(perc_id)),"\n";
my $pos= (join "\t", map { $this_attribute->$_ } qw(perc_pos)),"\n";
$sumid = $id + $sumid;
$sumpos = $pos + $sumpos;
}
print FILE $sumid,"\t";
print FILE $sumpos,"\n";
}
}
if ($score eq '0') {
print FILE "ortholog_none\t",$gene,"\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\n";
#print "array is empty\n";
}
}
else {
print FILE "ortholog_none\t",$gene,"\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\n";
#print "NOTHING DEFINED\n";
}
#
print FILE "\n";
}
print "\ncongratulation, task finished\n\n";