Bio::EnsEMBL::Analysis::Tools::Otter::DBSQL DnaAlignFeatureHistoryAdaptor
SummaryIncluded librariesPackage variablesSynopsisDescriptionGeneral documentationMethods
Toolbar
WebCvsRaw content
Summary
Bio::EnsEMBL::Analysis::Tools::Otter::DBSQL::DnaAlignFeatureHistoryAdaptor
Package variables
No package variables defined.
Included modules
Bio::EnsEMBL::Analysis::Tools::Otter::DnaAlignFeatureHistory
Bio::EnsEMBL::DBSQL::BaseAdaptor
Bio::EnsEMBL::Utils::Cache
Bio::EnsEMBL::Utils::Exception
Inherit
Bio::EnsEMBL::DBSQL::BaseAdaptor
Synopsis
fetches the DnaAlignFeatureHistory objects from an Otter database
Description
Methods
_columns
No description
Code
_objFromHashrefDescriptionCode
_objs_from_sth
No description
Code
_tables
No description
Code
clear_cache
No description
Code
fetch_all_by_seq_region
No description
Code
fetch_by_DnaAlignFeature_info
No description
Code
new
No description
Code
Methods description
_objFromHashref(2)code    nextTop
  Arg [1]    : $sth 
Description: Private helper function generates an DnaAlignFeatureHistory object
Returntype : Bio::EnsEMBL::Analysis::Tools::Otter::DnaAlignFeatureHistory
Exceptions : none
Caller : Bio::EnsEMBL::DBSQL::AnalsisAdaptor::fetch_* methods
Status : Stable
Methods code
_columnsdescriptionprevnextTop
sub _columns {
  my $self = shift;
  return ('dafh.align_feature_history_id','dafh.seq_region_id',
          'dafh.analysis_id','dafh.align_feature_id_start',
          'dafh.align_feature_id_end','dafh.db_version','dafh.date');
}
_objFromHashrefdescriptionprevnextTop
sub _objFromHashref {
  my $self = shift;
  my $rowHash = shift;

  my $aa = $self->db->get_AnalysisAdaptor();
  my $analysis = $aa->fetch_by_dbID($rowHash->{analysis_id});

  my $dna_align_feature_history = Bio::EnsEMBL::Analysis::Tools::Otter::DnaAlignFeatureHistory->new(
        -id                     => $rowHash->{align_feature_history_id},
        -seq_region_id          => $rowHash->{seq_region_id},
        -analysis               => $analysis,
        -align_feature_id_start => $rowHash->{align_feature_id_start},
        -align_feature_id_end   => $rowHash->{align_feature_id_end},
        -db_version             => $rowHash->{db_version},
        -date                   => $rowHash->{date},
        -adaptor                => $self, 
    );

  return $dna_align_feature_history;
}
_objs_from_sthdescriptionprevnextTop
sub _objs_from_sth {
  my ($self, $sth) = @_;

  my $aa = $self->db->get_AnalysisAdaptor();
  my @out;

  my ($align_feature_history_id, $seq_region_id, $analysis_id, $align_feature_id_start,
      $align_feature_id_end, $db_version, $date);
  $sth->bind_columns(\$align_feature_history_id,\$ seq_region_id,\$ analysis_id,\$ align_feature_id_start,\$
      align_feature_id_end,\$ db_version,\$ date);

  while($sth->fetch()) {
    my $analysis = $aa->fetch_by_dbID($analysis_id);

    push @out, Bio::EnsEMBL::Analysis::Tools::Otter::DnaAlignFeatureHistory->new(
        -id => $align_feature_history_id,
        -seq_region_id          => $seq_region_id,
        -analysis               => $analysis,
        -align_feature_id_start => $align_feature_id_start,
        -align_feature_id_end   => $align_feature_id_end,
        -db_version             => $db_version,
        -date                   => $date,
        -adaptor                => $self,
              );
  }
  return\@ out;
}


1;
}
_tablesdescriptionprevnextTop
sub _tables {
  my $self = shift;
  return (['dna_align_feature_history' , 'dafh']);
}
clear_cachedescriptionprevnextTop
sub clear_cache {
  my ($self) = @_;
  $self->{'_dafh_cache'} = ();
}
fetch_all_by_seq_regiondescriptionprevnextTop
sub fetch_all_by_seq_region {
  my $self = shift;
  my ($seq_region_id, $analysis_id, $daf_id) = @_;

  my ($daf_history, $dbID);
  my $rowHashRef;

  my $sth = $self->prepare(
            "SELECT align_feature_history_id, ".
            "seq_region_id, analysis_id, align_feature_id_start, ".
            "align_feature_id_end, db_version, date ".
            "FROM dna_align_feature_history ".
            "WHERE seq_region_id = ? ".
            "AND analysis_id = ? ".
            "AND align_feature_id_start <= ? ".
            "AND align_feature_id_end >= ? "
            );
  
  $sth->bind_param(1,$seq_region_id ,SQL_INTEGER);
  $sth->bind_param(2,$analysis_id ,SQL_SMALLINT);
  $sth->bind_param(3,$daf_id ,SQL_INTEGER);
  $sth->bind_param(4,$daf_id ,SQL_INTEGER);
  $sth->execute;

  while ($rowHashRef = $sth->fetchrow_hashref) {
    my $daf_history = $self->_objFromHashref($rowHashRef);
    foreach my $num ($daf_history->align_feature_id_start .. $daf_history->align_feature_id_end) {
      my $key = uc(join(':', $daf_history->seq_region_id,$daf_history->analysis->dbID,$daf_id));
      $self->{_dafh_cache}->{$key} = $daf_history;
      #$self->{_dafh_cache}->{$key} = $daf_history;
} } $sth->finish; my @daf_histories = values %{$self->{_dafh_cache}}; return\@ daf_histories;
}
fetch_by_DnaAlignFeature_infodescriptionprevnextTop
sub fetch_by_DnaAlignFeature_info {
  my $self = shift;
  my ($dna_align_feature_id, $seq_region_id, $analysis_id) = @_;

  # each row in dna_align_feature_history is uniquely identified
my $key = uc(join(':', $seq_region_id,$analysis_id,$dna_align_feature_id)); #will only use feature_cache if hasn't been no_cache attribute set
if (!defined $self->db->no_cache || !$self->db->no_cache){ if (exists($self->{'_dafh_cache'}->{$key}) && defined $self->{'_dafh_cache'}->{$key}) { #print STDERR " Found $key in cache\n";
return $self->{'_dafh_cache'}->{$key}; } else { #print STDERR "Not found $key , load cache\n";
} } #
# load the cache with some extras
#
$self->fetch_all_by_seq_region($seq_region_id, $analysis_id, $dna_align_feature_id); my $original_key = uc(join(':', $seq_region_id,$analysis_id,$dna_align_feature_id)); my $dafh = $self->{'_dafh_cache'}->{$original_key}; #will only use feature_cache when set attribute no_cache in DBAdaptor
if (!defined $self->db->no_cache || !$self->db->no_cache){ # let's try to be clever and make keys for all dafs associated with this dafh
foreach my $num ($dafh->align_feature_id_start .. $dafh->align_feature_id_end) { my $k = uc(join(':', $seq_region_id,$analysis_id,$num)); if (!exists $self->{'_dafh_cache'}->{$k} || !defined $self->{'_dafh_cache'}->{$k}) { #print STDERR " created key $k... size hash is ".scalar(keys %{$self->{'_dafh_cache'}})."\n";
$self->{'_dafh_cache'}->{$k} = $dafh; } } } return $dafh;
}
newdescriptionprevnextTop
sub new {
  my ($class, $db) = @_;

  my $self = $class->SUPER::new($db);

  return $self;
}
General documentation
CONTACTTop
  Post questions/comments to the EnsEMBL development list:
ensembl-dev@ebi.ac.uk