From 217a209eb846dc10719a83b670684319fe3032a7 Mon Sep 17 00:00:00 2001 From: Felix Kokocinski <fsk@sanger.ac.uk> Date: Thu, 28 Sep 2006 08:21:26 +0000 Subject: [PATCH] use analysis-id when fetching pairs --- modules/Bio/EnsEMBL/Map/DBSQL/DitagFeatureAdaptor.pm | 6 +++++- modules/Bio/EnsEMBL/Map/DitagFeature.pm | 10 +++++++--- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/modules/Bio/EnsEMBL/Map/DBSQL/DitagFeatureAdaptor.pm b/modules/Bio/EnsEMBL/Map/DBSQL/DitagFeatureAdaptor.pm index b39a5edbce..7ae925244d 100644 --- a/modules/Bio/EnsEMBL/Map/DBSQL/DitagFeatureAdaptor.pm +++ b/modules/Bio/EnsEMBL/Map/DBSQL/DitagFeatureAdaptor.pm @@ -98,6 +98,7 @@ sub fetch_by_dbID { Arg [1] : ditag dbID Arg [2] : (optional) ditag-pair dbID + Arg [3] : (optional) analysis ID Example : @my_tags = @{$ditagfeature_adaptor->fetch_all_by_ditag_id($my_id)}; Description: Retrieves all ditagFeatures from the database linking to a specific ditag-id Returntype : listref of Bio::EnsEMBL::Map::DitagFeature @@ -106,7 +107,7 @@ sub fetch_by_dbID { =cut sub fetch_all_by_ditagID { - my ($self, $ditag_id, $ditag_pair_id) = @_; + my ($self, $ditag_id, $ditag_pair_id, $analysis_id) = @_; my $sql = "SELECT ditag_feature_id, ditag_id, seq_region_id, seq_region_start, seq_region_end, seq_region_strand, analysis_id, hit_start, hit_end, @@ -116,6 +117,9 @@ sub fetch_all_by_ditagID { if($ditag_pair_id){ $sql .= "AND ditag_pair_id = ? "; } + if($analysis_id){ + $sql .= "AND analysis_id = ? "; + } $sql .= "ORDER BY ditag_pair_id"; my $sth = $self->prepare($sql); if($ditag_pair_id){ diff --git a/modules/Bio/EnsEMBL/Map/DitagFeature.pm b/modules/Bio/EnsEMBL/Map/DitagFeature.pm index 6f3bb5dce7..8f0e7c0233 100644 --- a/modules/Bio/EnsEMBL/Map/DitagFeature.pm +++ b/modules/Bio/EnsEMBL/Map/DitagFeature.pm @@ -183,14 +183,18 @@ sub get_ditag_location { else{ my ($ditag_a, $ditag_b, $more); eval{ - ($ditag_a, $ditag_b, $more) = @{$self->adaptor->fetch_all_by_ditagID($self->ditag_id, $self->ditag_pair_id)}; + ($ditag_a, $ditag_b, $more) = @{$self->adaptor->fetch_all_by_ditagID($self->ditag_id, + $self->ditag_pair_id, + $self->analysis->analysis_id)}; }; if($@ or !defined($ditag_a) or !defined($ditag_b)){ - throw("Cannot find 2nd tag of pair (".$self->dbID.", ".$self->ditag_id.", ".$self->ditag_pair_id.")"); + throw("Cannot find 2nd tag of pair (".$self->dbID.", ".$self->ditag_id.", ". + $self->ditag_pair_id.", ".$self->analysis->analysis_id.")"); } else{ if(defined $more){ - throw("More than two DitagFeatures were returned for ".$self->dbID.", ".$self->ditag_id.", ".$self->ditag_pair_id); + throw("More than two DitagFeatures were returned for ".$self->dbID.", ".$self->ditag_id + .", ".$self->ditag_pair_id); } ($ditag_a->start < $ditag_b->start) ? ($start = $ditag_a->start) : ($start = $ditag_b->start); -- GitLab