From 3dbcf87323a8c6f526fd578f079ad8e3aa00ffe8 Mon Sep 17 00:00:00 2001
From: Monika Komorowska <mk8@sanger.ac.uk>
Date: Tue, 23 Aug 2011 11:43:40 +0000
Subject: [PATCH] Previous change backed out, as not in all cases 1bp slice
 start = seq_region_start or slice end = seq_region_end.

---
 .../Bio/EnsEMBL/DBSQL/BaseFeatureAdaptor.pm   | 76 ++++++++-----------
 1 file changed, 32 insertions(+), 44 deletions(-)

diff --git a/modules/Bio/EnsEMBL/DBSQL/BaseFeatureAdaptor.pm b/modules/Bio/EnsEMBL/DBSQL/BaseFeatureAdaptor.pm
index 330c01a9c2..e273e3673e 100644
--- a/modules/Bio/EnsEMBL/DBSQL/BaseFeatureAdaptor.pm
+++ b/modules/Bio/EnsEMBL/DBSQL/BaseFeatureAdaptor.pm
@@ -600,51 +600,41 @@ sub _slice_fetch {
       $sr_id = $self->get_seq_region_id_external($sr_id);
       $constraint .= " AND " if($constraint);
 
-      $constraint .=
-	  "${tab_syn}.seq_region_id = $sr_id";
-
-      #check if we're dealing with a SNP
-      if ($slice_start == $slice_end)
-      {
-	  $constraint .=
-	      " AND ${tab_syn}.seq_region_start = $slice_end" .
-	      " AND ${tab_syn}.seq_region_end = $slice_start";
+      if ( !$slice->is_circular() ) {
+        # Deal with the default case of a non-circular chromosome.
+        $constraint .=
+            "${tab_syn}.seq_region_id = $sr_id AND "
+          . "${tab_syn}.seq_region_start <= $slice_end AND "
+          . "${tab_syn}.seq_region_end >= $slice_start";
+      } else {
+        # Deal with the case of a circular chromosome.
+        if ( $slice_start > $slice_end ) {
+          $constraint .=
+              "${tab_syn}.seq_region_id = $sr_id "
+            . "AND ( ${tab_syn}.seq_region_start >= $slice_start "
+            . "OR ${tab_syn}.seq_region_start <= $slice_end "
+            . "OR ${tab_syn}.seq_region_end >= $slice_start "
+            . "OR ${tab_syn}.seq_region_end <= $slice_end "
+            . "OR ${tab_syn}.seq_region_start > ${tab_syn}.seq_region_end)";
+
+
+        } else {
+          $constraint .=
+              "${tab_syn}.seq_region_id = $sr_id "
+            . "AND ((${tab_syn}.seq_region_start <= $slice_end "
+            . "AND ${tab_syn}.seq_region_end >= $slice_start) "
+            . "OR (${tab_syn}.seq_region_start > ${tab_syn}.seq_region_end "
+            . "AND (${tab_syn}.seq_region_start <= $slice_end "
+            . "OR ${tab_syn}.seq_region_end >= $slice_start)))";
+        }
       }
-      else {
-
-	  if ( !$slice->is_circular() ) {
-	      # Deal with the default case of a non-circular chromosome.
-	      $constraint .=		  
-		  " AND ${tab_syn}.seq_region_start <= $slice_end"
-		  . " AND ${tab_syn}.seq_region_end >= $slice_start";
-
-	      if($max_len) {
-		  my $min_start = $slice_start - $max_len;
-		  $constraint .=
-		      " AND ${tab_syn}.seq_region_start >= $min_start";
-	      }
-
-	  } else {
-	      # Deal with the case of a circular chromosome.
-	      if ( $slice_start > $slice_end ) {
-		  $constraint .=
-		        " AND ( ${tab_syn}.seq_region_start >= $slice_start "
-		      . "OR ${tab_syn}.seq_region_start <= $slice_end "
-		      . "OR ${tab_syn}.seq_region_end >= $slice_start "
-		      . "OR ${tab_syn}.seq_region_end <= $slice_end "
-		      . "OR ${tab_syn}.seq_region_start > ${tab_syn}.seq_region_end)";
-
-	      } else {
-		  $constraint .=		 
-		       " AND ((${tab_syn}.seq_region_start <= $slice_end "
-		      . "AND ${tab_syn}.seq_region_end >= $slice_start) "
-		      . "OR (${tab_syn}.seq_region_start > ${tab_syn}.seq_region_end "
-		      . "AND (${tab_syn}.seq_region_start <= $slice_end "
-		      . "OR ${tab_syn}.seq_region_end >= $slice_start)))";
-	      }
-	  }
 
+      if($max_len && ! $slice->is_circular) {
+        my $min_start = $slice_start - $max_len;
+        $constraint .=
+          " AND ${tab_syn}.seq_region_start >= $min_start";
       }
+
 	  
       my $fs = $self->generic_fetch($constraint,undef,$slice);
 
@@ -1278,5 +1268,3 @@ sub remove_by_feature_id {
 
 
 1;
-
-
-- 
GitLab