From 247da00f60373f1f3cd947e85842bdb667465a12 Mon Sep 17 00:00:00 2001
From: at7 <anja@ebi.ac.uk>
Date: Fri, 31 Aug 2018 13:34:31 +0100
Subject: [PATCH] deleted for release/95

---
 modules/Bio/EnsEMBL/AlignStrainSlice.pm | 365 ------------------------
 1 file changed, 365 deletions(-)
 delete mode 100644 modules/Bio/EnsEMBL/AlignStrainSlice.pm

diff --git a/modules/Bio/EnsEMBL/AlignStrainSlice.pm b/modules/Bio/EnsEMBL/AlignStrainSlice.pm
deleted file mode 100644
index e3ace948a9..0000000000
--- a/modules/Bio/EnsEMBL/AlignStrainSlice.pm
+++ /dev/null
@@ -1,365 +0,0 @@
-=head1 LICENSE
-
-Copyright [1999-2015] Wellcome Trust Sanger Institute and the EMBL-European Bioinformatics Institute
-Copyright [2016-2018] EMBL-European Bioinformatics Institute
-
-Licensed under the Apache License, Version 2.0 (the "License");
-you may not use this file except in compliance with the License.
-You may obtain a copy of the License at
-
-     http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
-
-=cut
-
-
-=head1 CONTACT
-
-  Please email comments or questions to the public Ensembl
-  developers list at <http://lists.ensembl.org/mailman/listinfo/dev>.
-
-  Questions may also be sent to the Ensembl help desk at
-  <http://www.ensembl.org/Help/Contact>.
-
-=cut
-
-=head1 NAME
-
-Bio::EnsEMBL::AlignStrainSlice - Represents the slice of the genome aligned with certain strains (applying the variations/indels)
-
-=head1 SYNOPSIS
-
-  $sa = $db->get_SliceAdaptor;
-
-  $slice =
-    $sa->fetch_by_region( 'chromosome', 'X', 1_000_000, 2_000_000 );
-
-  $strainSlice1 = $slice->get_by_Strain($strain_name1);
-  $strainSlice2 = $slice->get_by_Strain($strain_name2);
-
-  my @strainSlices;
-  push @strainSlices, $strainSlice1;
-  push @strainSlices, $strainSlice2;
-
-  $alignSlice = Bio::EnsEMBL::AlignStrainSlice->new(
-    -SLICE   => $slice,
-    -STRAINS => \@strainSlices
-  );
-
-  # Get coordinates of variation in alignSlice
-  my $alleleFeatures = $strainSlice1->get_all_AlleleFeature_Slice();
-
-  foreach my $af ( @{$alleleFeatures} ) {
-    my $new_feature = $alignSlice->alignFeature( $af, $strainSlice1 );
-    print( "Coordinates of the feature in AlignSlice are: ",
-      $new_feature->start, "-", $new_feature->end, "\n" );
-  }
-
-=head1 DESCRIPTION
-
-A AlignStrainSlice object represents a region of a genome align for
-certain strains.  It can be used to align certain strains to a reference
-slice.
-
-=head1 METHODS
-
-=cut
-
-package Bio::EnsEMBL::AlignStrainSlice;
-use strict;
-
-use Bio::EnsEMBL::Utils::Argument qw(rearrange);
-use Bio::EnsEMBL::Mapper;
-use Bio::EnsEMBL::Mapper::RangeRegistry;
-use Bio::EnsEMBL::Utils::Exception qw(throw deprecate warning);
-
-=head2 new
-
-    Arg[1]      : Bio::EnsEMBL::Slice $Slice
-    Arg[2]      : listref of Bio::EnsEMBL::Variation::StrainSlice $strainSlice
-    Example     : push @strainSlices, $strainSlice1;
-                  push @strainSlices, $strainSlice2;
-                  .....
-                  push @strainSlices, $strainSliceN;
-                  $alignStrainSlice = Bio::EnsEMBL::AlignStrainSlice->new(-SLICE => $slice,
-									  -STRAIN => \@strainSlices);
-    Description : Creates a new Bio::EnsEMBL::AlignStrainSlice object that will contain a mapper between
-                  the Slice object, plus all the indels from the different Strains
-    ReturnType  : Bio::EnsEMBL::AlignStrainSlice
-    Exceptions  : none
-    Caller      : general
-
-=cut
-
-sub new{
-    my $caller = shift;
-    deprecate("new is deprecated and will be removed in e95.");
-    my $class = ref($caller) || $caller;
-
-    my ($slice, $strainSlices) = rearrange([qw(SLICE STRAINS)],@_);
-
-    #check that both StrainSlice and Slice are identical (must have been defined in the same slice)
-    foreach my $strainSlice (@{$strainSlices}){
-	if (($strainSlice->start != $slice->start) || ($strainSlice->end != $slice->end) || ($strainSlice->seq_region_name ne $slice->seq_region_name)){
-	    warning("Not possible to create Align object from different Slices");
-	    return [];
-	}
-    }
-
-    return bless{'slice' => $slice,
-		 'strains' => $strainSlices}, $class;
-}
-
-=head2 alignFeature
-
-    Arg[1]      : Bio::EnsEMBL::Feature $feature
-    Arg[2]      : Bio::EnsEMBL::Variation::StrainSlice $strainSlice
-    Example     : $new_feature = $alignSlice->alignFeature($feature, $strainSlice);
-    Description : Creates a new Bio::EnsEMBL::Feature object that aligned to 
-                  the AlignStrainSlice object.
-    ReturnType  : Bio::EnsEMBL::Feature
-    Exceptions  : none
-    Caller      : general
-
-=cut
-
-sub alignFeature{
-    my $self = shift;
-    my $feature = shift;
-    deprecate("alignFeature is deprecated and will be removed in e95.");
-
-    #check that the object is a Feature
-    if (!ref($feature) || !$feature->isa('Bio::EnsEMBL::Feature')){	
-	throw("Bio::EnsEMBL::Feature object expected");
-    }
-    #and align it to the AlignStrainSlice object
-    my $mapper_strain = $self->mapper();
-
-    my @results;
-  
-    if ($feature->start > $feature->end){
-	#this is an Indel, map it with the special method
-	@results = $mapper_strain->map_indel('Slice',$feature->start, $feature->end, $feature->strand,'Slice');
-	#and modify the coordinates according to the length of the indel
-	$results[0]->end($results[0]->start + $feature->length_diff -1);
-    }
-    else{
-	@results = $mapper_strain->map_coordinates('Slice',$feature->start, $feature->end, $feature->strand,'Slice');
-     }
-    #get need start and end of the new feature, aligned ot AlignStrainSlice
-    my @results_ordered = sort {$a->start <=> $b->start} @results;
-
-    my %new_feature = %$feature; #make a shallow copy of the Feature
-    $new_feature{'start'}= $results_ordered[0]->start();
-    $new_feature{'end'} = $results_ordered[-1]->end();  #get last element of the array, the end of the slice
-
-    return bless \%new_feature, ref($feature);
-    
-}
-
-
-#getter for the mapper between the Slice and the different StrainSlice objects
-sub mapper{
-    my $self = shift;
-    deprecate("mapper is deprecated and will be removed in e95.");
-   
-    if (!defined $self->{'mapper'}){
-	#get the alleleFeatures in all the strains
-	if (!defined $self->{'indels'}){
-	    #when the list of indels is not defined, get them
-	    $self->{'indels'} = $self->_get_indels();
-	}
-	my $indels = $self->{'indels'}; #gaps in reference slice
-	my $mapper = Bio::EnsEMBL::Mapper->new('Slice', 'AlignStrainSlice');
-	my $start_slice = 1;
-	my $end_slice;
-	my $start_align = 1;
-	my $end_align;
-	my $length_indel = 0;
-	my $length_acum_indel = 0;
-	foreach my $indel (@{$indels}){
-	    $end_slice = $indel->[0] - 1;
-	    $end_align = $indel->[0] - 1 + $length_acum_indel; #we must consider length previous indels
-
-	    $length_indel = $indel->[1] - $indel->[0] + 1;
-	    
-
-	    $mapper->add_map_coordinates('Slice',$start_slice,$end_slice,1,'AlignStrainSlice',$start_align,$end_align);
-	    
-	    $mapper->add_indel_coordinates('Slice',$end_slice + 1,$end_slice,1,'AlignStrainSlice',$end_align + 1,$end_align + $length_indel);
-	    $start_slice = $end_slice + 1;
-	    $start_align = $indel->[1] + 1 + $length_acum_indel; #we must consider legnth previous indels
-	    
-	    $length_acum_indel += $length_indel;
-	}
-	if ($start_slice <= $self->length){
-	    $mapper->add_map_coordinates('Slice',$start_slice,$self->length,1,'AlignStrainSlice',$start_align,$start_align + $self->length - $start_slice)
-	}
-	$self->{'mapper'} = $mapper;
-	
-    }
-    return $self->{'mapper'};
-}
-
-#returns the length of the AlignSlice: length of the Slice plus the gaps
-sub length{
-    my $self = shift;
-    deprecate("length is deprecated and will be removed in e95.");
-
-    my $length;
-    if (!defined $self->{'indels'}){
-	#when the list of indels is not defined, get them
-	$self->{'indels'} = $self->_get_indels();	
-    }
-    $length = $self->{'slice'}->length;
-    map {$length += ($_->[1] - $_->[0] + 1)} @{$self->{'indels'}};
-    return $length;
-}
-
-=head2 strains
-
-  Args       : None
-  Description: Returns list with all strains used to
-               define this AlignStrainSlice object
-  Returntype : listref of Bio::EnsEMBL::StrainSlice objects
-  Exceptions : none
-  Caller     : general
-
-=cut
-
-sub strains{
-    my $self = shift;
-    deprecate("strains is deprecated and will be removed in e95.");
-
-    return $self->{'strains'};
-}
-
-=head2 Slice
-
-  Args       : None
-  Description: Returns slice where the AlignStrainSlice
-               is defined
-  Returntype : Bio::EnsEMBL::Slice object
-  Exceptions : none
-  Caller     : general
-
-=cut
-
-sub Slice{
-    my $self = shift;
-    deprecate("Slice is deprecated and will be removed in e95.");
-
-    return $self->{'slice'};
-}
-#method to retrieve, in order, a list with all the indels in the different strains
-sub _get_indels{
-    my $self = shift;
-    deprecate("_get_indels is deprecated and will be removed in e95.");
-   
-    #go throuh all the strains getting ONLY the indels (length_diff <> 0)
-    my @indels;
-    foreach my $strainSlice (@{$self->strains}){
-	my $differences = $strainSlice->get_all_AlleleFeatures_Slice(); #need to check there are differences....
-	foreach my $af (@{$differences}){
-	    #if length is 0, but is a -, it is still a gap in the strain
-	    if (($af->length_diff != 0) || ($af->length_diff == 0 && $af->allele_string =~ /-/)){
-		push @indels, $af;
-	    }
-	}
-    }
-    #need to overlap the gaps using the RangeRegistry module
-    my $range_registry = Bio::EnsEMBL::Mapper::RangeRegistry->new();
-    foreach my $indel (@indels){
-	#in the reference and the strain there is a gap
-	$range_registry->check_and_register(1,$indel->start,$indel->start) if ($indel->length_diff == 0);
-	#deletion in reference slice
-	$range_registry->check_and_register(1,$indel->start, $indel->end ) if ($indel->length_diff < 0);
-	#insertion in reference slice
-	$range_registry->check_and_register(1,$indel->start,$indel->start + $indel->length_diff - 1) if ($indel->length_diff > 0);
-    }
-    #and return all the gap coordinates....
-    return $range_registry->get_ranges(1);
-}
-
-=head2 get_all_Slices
-
-  Args       : none
-  Description: This Slice is made of several Bio::EnsEMBL::Variation::StrainSlices
-               sequence. This method returns these StrainSlices (or part of
-               them) with the original coordinates 
-  Returntype : listref of Bio::EnsEMBL::Variation::StrainSlice objects
-  Exceptions : end should be at least as big as start
-  Caller     : general
-
-=cut
-
-sub get_all_Slices {
-  my $self = shift;
-
-  deprecate("get_all_Slices is deprecated and will be removed in e95.");
-
-  my @strains;
-  #add the reference strain
-  my $dbVar = $self->Slice->adaptor->db->get_db_adaptor('variation');
-  unless($dbVar) {
-	warning("Variation database must be attached to core database to " .
-		"retrieve variation information" );
-	return '';
-    }
-  my $indAdaptor = $dbVar->get_IndividualAdaptor();
-  my $ref_name =  $indAdaptor->get_reference_strain_name;
-  my $ref_strain = Bio::EnsEMBL::Variation::StrainSlice->new(
-					  -START   => $self->Slice->{'start'},
-					  -END     => $self->Slice->{'end'},
-					  -STRAND  => $self->Slice->{'strand'},
-					  -ADAPTOR => $self->Slice->adaptor(),
-					  -SEQ    => $self->Slice->{'seq'},
-					  -SEQ_REGION_NAME => $self->Slice->{'seq_region_name'},
-					  -SEQ_REGION_LENGTH => $self->Slice->{'seq_region_length'},
-					  -COORD_SYSTEM    => $self->Slice->{'coord_system'},
-					  -STRAIN_NAME     => $ref_name,
-					   );
-  #this is a fake reference alisce, should not contain any alleleFeature
-  undef $ref_strain->{'alleleFeatures'};
-  
-  push @strains, @{$self->strains};
-  my $new_feature;
-  my $indel;
-  my $aligned_features;
-  my $indels = (); #reference to a hash containing indels in the different strains
-  #we need to realign all Features in the different Slices and add '-' in the reference Slice
-  foreach my $strain (@{$self->strains}){
-      foreach my $af (@{$strain->get_all_AlleleFeatures_Slice()}){
-	  $new_feature = $self->alignFeature($af); #align feature in AlignSlice coordinates
-	  push @{$aligned_features},$new_feature if($new_feature->seq_region_start <= $strain->end); #some features might map outside slice
-	  if ($af->start != $af->end){ #an indel, need to add to the reference, and realign in the strain	     
-              #make a shallow copy of the indel - clear it first!
-          $indel = undef;
-	      %{$indel} = %{$new_feature};
-	      bless $indel, ref($new_feature);
-	      $indel->allele_string('-');
-	      push @{$indels},$indel; #and include in the list of potential indels
-	  }
-      }
-      next if (!defined $aligned_features);
-      undef $strain->{'alleleFeatures'}; #remove all features before adding new aligned features
-      push @{$strain->{'alleleFeatures'}}, @{$aligned_features};
-      undef $aligned_features;
-  }  
-  push @strains, $ref_strain;
-  #need to add indels in the different strains, if not present
-  if (defined $indels){
-      foreach my $strain (@strains){
-	  #inlcude the indels in the StrainSlice object
-	  push @{$strain->{'alignIndels'}},@{$indels};
-      }
-  }
-  return \@strains;
-}
-
-1;
-- 
GitLab