Raw content of Bio::EnsEMBL::Compara::DBSQL::AttributeAdaptor package Bio::EnsEMBL::Compara::DBSQL::AttributeAdaptor; use strict; use Bio::EnsEMBL::DBSQL::BaseAdaptor; our @ISA = qw(Bio::EnsEMBL::DBSQL::BaseAdaptor); sub fetch_by_Member_Relation { my ($self, $member, $relation) = @_; my $sth; my @attributes; if ($relation->isa('Bio::EnsEMBL::Compara::Family')) { my $sql = "SELECT * from family_member where family_id = ? AND member_id = ?"; $sth = $self->prepare($sql); $sth->execute($relation->dbID, $member->dbID); } elsif ($relation->isa('Bio::EnsEMBL::Compara::Domain')) { my $sql = "SELECT * from domain_member where domain_id = ? AND member_id = ?"; $sth = $self->prepare($sql); $sth->execute($relation->dbID, $member->dbID); } elsif ($relation->isa('Bio::EnsEMBL::Compara::Homology')) { my $sql = "SELECT * from homology_member where homology_id = ? AND member_id = ?"; $sth = $self->prepare($sql); $sth->execute($relation->dbID, $member->dbID); } my %column; $sth->bind_columns( \( @column{ @{$sth->{NAME_lc} } } )); while ($sth->fetch()) { my $attribute = new Bio::EnsEMBL::Compara::Attribute; foreach my $key (keys %column) { $attribute->$key($column{$key}); } push @attributes, $attribute; } return \@attributes; # need to return a array list, because in the case of domain, a member can have more # than one attribute, repetition of the same domain in the protein... # not the case for Family and Homology } 1;