Bio::EnsEMBL::Compara::DBSQL
FamilyAdaptor
Toolbar
Summary
FamilyAdaptor - DESCRIPTION of Object
This object represents a family coming from a database of protein families.
Package variables
No package variables defined.
Included modules
Inherit
Synopsis
use Bio::EnsEMBL::Compara::DBSQL::DBAdaptor;
my $db = new Bio::EnsEMBL::Compara::DBSQL::DBAdaptor(-user => 'myusername',
-dbname => 'myfamily_db',
-host => 'myhost');
my $fa = $db->get_FamilyAdaptor;
my $fam = $fa->fetch_by_stable_id('ENSF000013034');
my $ma = $db->get_MemberAdaptor;
my $member = $ma->fetch_by_source_stable_id('Uniprot/SWISSPROT', 'YSV4_CAEEL')};
my @fam = @{$fa->fetch_by_Member($member)};
@fam = @{$fa->fetch_by_description_with_wildcards('interleukin',1)};
@fam = @{$fa->fetch_all};
Description
This module is an entry point into a database of protein families,
clustering SWISSPROT/TREMBL and ensembl protein sets using the TRIBE MCL algorithm.
The clustering neatly follows the SWISSPROT DE-lines, which are
taken as the description of the whole family.
The objects can be read from and write to a family database.
For more info, see ensembl-doc/family.txt
Methods
Methods description
Arg [1] : Bio::EnsEMBL::Compara::Member $member Example : $families = $FamilyAdaptor->fetch_by_Member($member); Description: find the families to which the given member belongs to Returntype : an array reference of Bio::EnsEMBL::Compara::Family objects (could be empty or contain more than one Family in the case of ENSEMBLGENE only) Exceptions : when missing arguments Caller : general |
DEPRECATED: use fetch_all_by_Member instead |
Arg [1] : string $description Arg [2] : int $wildcard (optional) if set to 1, wildcards are added and the search is a slower LIKE search Example : $fams = $FamilyAdaptor->fetch_by_description_with_wildcards('REDUCTASE',1); Description: simplistic substring searching on the description to get the families matching the description. (The search is currently case-insensitive; this may change if SPTR changes to case-preservation) Returntype : an array reference of Bio::EnsEMBL::Compara::Family objects Exceptions : none Caller : general |
Arg [1] : Bio::EnsEMBL::ExternalData:Family::Family $fam Example : $FamilyAdaptor->store($fam) Description: Stores a family object into a family database Returntype : int been the database family identifier, if family stored correctly Exceptions : when isa if Arg [1] is not Bio::EnsEMBL::Compara::Family Caller : general |
Methods code
sub _columns
{ my $self = shift;
return qw (f.family_id
f.stable_id
f.version
f.method_link_species_set_id
f.description
f.description_score); } |
sub _default_where_clause
{ my $self = shift;
return '';
}
} |
sub _objs_from_sth
{ my ($self, $sth) = @_;
my ($family_id, $stable_id, $version, $method_link_species_set_id, $description, $description_score);
$sth->bind_columns(\$family_id,\$ stable_id,\$ version,\$ method_link_species_set_id,\$ description,\$ description_score);
my @families = ();
while ($sth->fetch()) {
push @families, Bio::EnsEMBL::Compara::Family->new_fast
({'_dbID' => $family_id,
'_stable_id' => $stable_id,
'_version' => $version,
'_description' => $description,
'_description_score' => $description_score,
'_method_link_species_set_id' => $method_link_species_set_id,
'_adaptor' => $self});
}
return\@ families; } |
sub _tables
{ my $self = shift;
return (['family', 'f']); } |
sub fetch_all_by_Member
{ my ($self, $member) = @_;
unless ($member->isa('Bio::EnsEMBL::Compara::Member')) {
$self->throw("The argument must be a Bio::EnsEMBL::Compara::Member object, not $member");
}
my $join = [[['family_member', 'fm'], 'f.family_id = fm.family_id']];
my $constraint = "fm.member_id = ". $member->dbID;
return $self->generic_fetch($constraint, $join); } |
fetch_all_by_Member_method_link_type | description | prev | next | Top |
sub fetch_all_by_Member_method_link_type
{ my ($self, $member, $method_link_type) = @_;
unless ($member->isa('Bio::EnsEMBL::Compara::Member')) {
$self->throw("The argument must be a Bio::EnsEMBL::Compara::Member object, not $member");
}
$self->throw("method_link_type arg is required\n")
unless ($method_link_type);
my $mlssa = $self->db->get_MethodLinkSpeciesSetAdaptor;
my $mlss_arrayref = $mlssa->fetch_all_by_method_link_type_GenomeDB($method_link_type,$member->genome_db);
unless (scalar @{$mlss_arrayref}) {
warning("There is no $method_link_type data stored in the database for " . $member->genome_db->name . "\n");
return [];
}
my $join = [[['family_member', 'fm'], 'f.family_id = fm.family_id']];
my $constraint = " f.method_link_species_set_id in (". join (",", (map {$_->dbID} @{$mlss_arrayref})) . ")";
$constraint .= " AND fm.member_id = " . $member->dbID;
return $self->generic_fetch($constraint, $join); } |
sub fetch_by_Member
{ my ($self, @args) = @_;
return $self->fetch_all_by_Member(@args); } |
sub fetch_by_Member_Family_source
{ my ($self, $member, $source_name) = @_;
deprecate("fetch_by_Member_Family_source method is deprecated. Calling
fetch_all_by_Member_method_link_type instead");
return $self->fetch_all_by_Member_method_link_type($member, $source_name); } |
sub fetch_by_Member_source_stable_id
{ my ($self, $source_name, $member_stable_id) = @_;
unless (defined $source_name && defined $member_stable_id) {
$self->throw("The source_name and member_stable_id arguments must be defined");
}
my $join = [[['family_member', 'fm'], 'f.family_id = fm.family_id'],
[['member', 'm'], 'fm.member_id = m.member_id']];
my $constraint = "m.stable_id = '$member_stable_id' AND m.source_name = '$source_name'";
return $self->generic_fetch($constraint, $join);
}
} |
sub fetch_by_description_with_wildcards
{ my ($self,$desc,$wildcard) = @_;
my $constraint;
if ($wildcard) {
$constraint = "f.description LIKE '"."%"."\U$desc"."%"."'";
}
else {
$constraint = "f.description = '$desc'";
}
return $self->generic_fetch($constraint);
}
} |
sub store
{ my ($self,$fam) = @_;
$fam->isa('Bio::EnsEMBL::Compara::Family') ||
$self->throw("You have to store a Bio::EnsEMBL::Compara::Family object, not a $fam");
$fam->adaptor($self);
if ( !defined $fam->method_link_species_set_id && defined $fam->method_link_species_set) {
$self->db->get_MethodLinkSpeciesSetAdaptor->store($fam->method_link_species_set);
}
if (! defined $fam->method_link_species_set) {
throw("Family object has no set MethodLinkSpecies object. Can not store Family object\n");
} else {
$fam->method_link_species_set_id($fam->method_link_species_set->dbID);
}
my $sql = "SELECT family_id from family where stable_id = ?";
my $sth = $self->prepare($sql);
$sth->execute($fam->stable_id);
my $rowhash = $sth->fetchrow_hashref;
if ($rowhash->{family_id}) {
$fam->dbID($rowhash->{family_id});
} else {
$sql = "INSERT INTO family (stable_id, version, method_link_species_set_id, description, description_score) VALUES (?,?,?,?,?)";
$sth = $self->prepare($sql);
$sth->execute($fam->stable_id, $fam->version, $fam->method_link_species_set_id, $fam->description, $fam->description_score);
$fam->dbID($sth->{'mysql_insertid'});
}
foreach my $member_attribue (@{$fam->get_all_Member_Attribute}) {
$self->store_relation($member_attribue, $fam);
}
return $fam->dbID; } |
store_family_member | description | prev | next | Top |
sub store_family_member
{ my ($self, $member_attribute) = @_;
my ($member, $attribute) = @{$member_attribute};
unless (defined $member->dbID) {
$self->db->get_MemberAdaptor->store($member);
}
$attribute->member_id($member->dbID);
my $sql = "INSERT IGNORE INTO family_member (family_id, member_id, cigar_line) VALUES (?,?,?)";
my $sth = $self->prepare($sql);
$sth->execute($attribute->family_id, $attribute->member_id, $attribute->cigar_line);
$sth->finish;
}
1; } |
General documentation
The rest of the documentation details each of the object methods.
Internal methods are usually preceded with a _