Raw content of Bio::EnsEMBL::DBSQL::AffyFeatureAdaptor
=head1 LICENSE
Copyright (c) 1999-2009 The European Bioinformatics Institute and
Genome Research Limited. All rights reserved.
This software is distributed under a modified Apache license.
For license details, please see
/info/about/code_licence.html
=head1 CONTACT
Please email comments or questions to the public Ensembl
developers list at .
Questions may also be sent to the Ensembl help desk at
.
=cut
=head1 NAME
Bio::EnsEMBL::DBSQL::AffyFeatureAdaptor - A database adaptor for fetching and
storing AffyFeature objects.
=head1 SYNOPSIS
my $afa = $db->get_AffyFeatureAdaptor();
my $features = $afa->fetch_all_by_AffyProbe($probe);
$features =
$afa->fetch_all_by_Slice_arrayname( $slice, 'Affy-1', 'Affy-2' );
=head1 DESCRIPTION
The AffyFeatureAdaptor is a database adaptor for storing and retrieving
AffyFeature objects.
=head1 METHODS
=cut
package Bio::EnsEMBL::DBSQL::AffyFeatureAdaptor;
use strict;
use warnings;
use Bio::EnsEMBL::AffyFeature;
use Bio::EnsEMBL::DBSQL::OligoFeatureAdaptor;
use vars qw(@ISA);
@ISA = qw(Bio::EnsEMBL::DBSQL::OligoFeatureAdaptor);
=head2 fetch_all_by_AffyProbe
Arg [1] : Bio::EnsEMBL::AffyProbe
Example : my $features = $afa->fetch_all_by_AffyProbe($probe);
Description: Fetchs all features that a given probe creates.
Returntype : Listref of Bio::EnsEMBL::AffyFeature objects
Exceptions : None
Caller : AffyProbe->get_all_AffyFeatures()
Status : Medium Risk
=cut
sub fetch_all_by_AffyProbe {
my $self = shift;
my $probe = shift;
return $self->fetch_all_by_Probe($probe);
}
=head2 _default_where_clause
Args : None
Example : None
Description: PROTECTED implementation of superclass abstract method.
Returns an additional table joining constraint to use for
queries.
Returntype : List of strings
Exceptions : None
Caller : Internal
Status : Medium Risk
=cut
sub _default_where_clause {
my $self = shift;
return "
of.oligo_probe_id = op.oligo_probe_id
AND op.oligo_array_id = oa.oligo_array_id
AND oa.type='AFFY'
";
}
=head2 _new_fast
Args : Hashref to be passed to AffyFeature->new_fast()
Example : None
Description: Construct an AffyFeature object using quick and dirty new_fast.
Returntype : Bio::EnsEMBL::AffyFeature
Exceptions : None
Caller : _objs_from_sth
Status : Medium Risk
=cut
sub _new_fast {
my $self = shift;
my $hash_ref = shift;
return Bio::EnsEMBL::AffyFeature->new_fast($hash_ref);
}
=head2 list_dbIDs
Args : None
Example : my @feature_ids = @{$afa->list_dbIDs()};
Description: Gets an array of internal IDs for all AffyFeature objects
in the current database. NOTE: In a multi-species
database, this method will return the dbIDs of all
AffyFeature objects, not just the ones associated with
the current species.
Returntype : List of ints
Exceptions : None
Caller : ?
Status : Medium Risk
=cut
sub list_dbIDs {
my $self = shift;
#return $self->_list_dbIDs('oligo_feature');
# Can't use _list_dbIDs because only want OligoProbe objects on arrays of type AFFY
my @out;
# FIXME: This SQL will not work as expected on multi-species
# databases. It needs to be anchored in a coord_system entry
# coord_system.species_id = $self->species_id(). /ak4@2008-07-15
my $sql = "
SELECT DISTINCT of.oligo_feature_id
FROM oligo_feature of, oligo_probe op, oligo_array oa
WHERE of.oligo_probe_id=op.oligo_probe_id
AND op.oligo_array_id=oa.oligo_array_id
AND oa.type='AFFY'
";
my $sth = $self->prepare($sql);
$sth->execute;
while (my ($id) = $sth->fetchrow() ) {
push @out, $id;
}
$sth->finish;
return \@out;
}
1;