From e329941817da9a516f4cb315eae989e96823800e Mon Sep 17 00:00:00 2001
From: Andrew Yates <ayates@ebi.ac.uk>
Date: Tue, 20 Mar 2012 11:54:27 +0000
Subject: [PATCH] Fixing to use SUPER::seq() on the subsequence slice and then
 using the block fetched repeats

---
 modules/Bio/EnsEMBL/RepeatMaskedSlice.pm | 50 +++++++++++++-----------
 1 file changed, 27 insertions(+), 23 deletions(-)

diff --git a/modules/Bio/EnsEMBL/RepeatMaskedSlice.pm b/modules/Bio/EnsEMBL/RepeatMaskedSlice.pm
index 6ae8e12eb2..e75fac1296 100644
--- a/modules/Bio/EnsEMBL/RepeatMaskedSlice.pm
+++ b/modules/Bio/EnsEMBL/RepeatMaskedSlice.pm
@@ -210,19 +210,14 @@ sub not_default_masking_cases {
 
 sub seq {
   my $self = shift;
+  
   #
   # get all the features
   #
-  my $logic_names = $self->repeat_mask_logic_names();
+  my $repeats = $self->_get_repeat_features($self);
   my $soft_mask   = $self->soft_mask();
-  my $not_default_masking_cases = $self->not_default_masking_cases;
-
-  my @repeats;
-
-  foreach my $l (@$logic_names) {
-    push @repeats, @{$self->get_all_RepeatFeatures($l)};
-  }
-
+  my $not_default_masking_cases = $self->not_default_masking_cases();
+  
   #
   # get the dna
   #
@@ -231,7 +226,7 @@ sub seq {
   #
   # mask the dna
   #
-  $self->_mask_features(\$dna,\@repeats,$soft_mask,$not_default_masking_cases);
+  $self->_mask_features(\$dna,$repeats,$soft_mask,$not_default_masking_cases);
   return $dna;
 }
 
@@ -282,23 +277,32 @@ sub subseq {
     $subslice = $subsequence_slice;
   }
   
-  #
-  # get all the features
-  #
-  my $logic_names = $self->repeat_mask_logic_names();
+  my $repeats = $self->_get_repeat_features($subslice);
   my $soft_mask   = $self->soft_mask();
-  my $not_default_masking_cases = $self->not_default_masking_cases;
-  
-  my @repeats;
+  my $not_default_masking_cases = $self->not_default_masking_cases();
+  my $dna = $subsequence_slice->SUPER::seq();
+  $subsequence_slice->_mask_features(\$dna,$repeats,$soft_mask,$not_default_masking_cases);
+  return $dna;
+}
+
+=head2 _get_repeat_features
+
+  Args [1]   	: Bio::EnsEMBL::Slice to fetch features for 
+  Description	: Gets repeat features for the given slice
+  Returntype 	: ArrayRef[Bio::EnsEMBL::RepeatFeature] array of repeats
+
+=cut
 
+
+
+sub _get_repeat_features {
+  my ($self, $slice) = @_;
+  my $logic_names = $self->repeat_mask_logic_names();
+  my @repeats;
   foreach my $l (@$logic_names) {
-    push @repeats, @{$subslice->get_all_RepeatFeatures($l)};
+    push @repeats, @{$slice->get_all_RepeatFeatures($l)};
   }
-  
-  #
-  # No need to mask sequence, seq() already does it for the new subsequence_slice
-  #
-  return $subsequence_slice->seq();
+  return \@repeats;
 }
 
 1;
-- 
GitLab