diff variant_effect_predictor/Bio/EnsEMBL/AssemblyMapper.pm @ 0:1f6dce3d34e0

Uploaded
author mahtabm
date Thu, 11 Apr 2013 02:01:53 -0400
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/variant_effect_predictor/Bio/EnsEMBL/AssemblyMapper.pm	Thu Apr 11 02:01:53 2013 -0400
@@ -0,0 +1,880 @@
+=head1 LICENSE
+
+  Copyright (c) 1999-2012 The European Bioinformatics Institute and
+  Genome Research Limited.  All rights reserved.
+
+  This software is distributed under a modified Apache license.
+  For license details, please see
+
+    http://www.ensembl.org/info/about/code_licence.html
+
+=head1 CONTACT
+
+  Please email comments or questions to the public Ensembl
+  developers list at <dev@ensembl.org>.
+
+  Questions may also be sent to the Ensembl help desk at
+  <helpdesk@ensembl.org>.
+
+=cut
+
+=head1 NAME
+
+Bio::EnsEMBL::AssemblyMapper - 
+Handles mapping between two coordinate systems using the information
+stored in the assembly table.
+
+=head1 SYNOPSIS
+
+    $db   = Bio::EnsEMBL::DBSQL::DBAdaptor->new(...);
+    $asma = $db->get_AssemblyMapperAdaptor();
+    $csa  = $db->get_CoordSystemAdaptor();
+
+    my $chr_cs = $cs_adaptor->fetch_by_name( 'chromosome', 'NCBI33' );
+    my $ctg_cs = $cs_adaptor->fetch_by_name('contig');
+
+    $asm_mapper = $map_adaptor->fetch_by_CoordSystems( $cs1, $cs2 );
+
+    # Map to contig coordinate system from chromosomal.
+    @ctg_coords =
+      $asm_mapper->map( 'X', 1_000_000, 2_000_000, 1, $chr_cs );
+
+    # Map to chromosome coordinate system from contig.
+    @chr_coords =
+      $asm_mapper->map( 'AL30421.1.200.92341', 100, 10000, -1,
+      $ctg_cs );
+
+    # List contig names for a region of chromsome.
+    @ctg_ids = $asm_mapper->list_ids( '13', 1_000_000, 1, $chr_cs );
+
+    # List chromosome names for a contig region.
+    @chr_ids =
+      $asm_mapper->list_ids( 'AL30421.1.200.92341', 1, 1000, -1,
+      $ctg_cs );
+
+=head1 DESCRIPTION
+
+The AssemblyMapper is a database aware mapper which faciliates
+conversion of coordinates between any two coordinate systems with an
+relationship explicitly defined in the assembly table.  In the future
+it may be possible to perform multiple step (implicit) mapping between
+coordinate systems.
+
+It is implemented using the Bio::EnsEMBL::Mapper object, which is a
+generic mapper object between disjoint coordinate systems.
+
+=head1 METHODS
+
+=cut
+
+
+package Bio::EnsEMBL::AssemblyMapper;
+
+use strict;
+use warnings;
+
+use Bio::EnsEMBL::Mapper;
+use Bio::EnsEMBL::Utils::Exception qw(throw deprecate);
+use Scalar::Util qw(weaken);
+
+my $ASSEMBLED = 'assembled';
+my $COMPONENT = 'component';
+
+my $DEFAULT_MAX_PAIR_COUNT = 1000;
+
+
+=head2 new
+
+  Arg [1]    : Bio::EnsEMBL::DBSQL::AssemblyMapperAdaptor
+  Arg [2]    : Bio::EnsEMBL::CoordSystem $asm_cs
+  Arg [3]    : Bio::EnsEMBL::CoordSystem $cmp_cs
+  Example    : Should use AssemblyMapperAdaptor->fetch_by_CoordSystems()
+  Description: Creates a new AssemblyMapper
+  Returntype : Bio::EnsEMBL::DBSQL::AssemblyMapperAdaptor
+  Exceptions : Throws if multiple coord_systems are provided
+  Caller     : AssemblyMapperAdaptor
+  Status     : Stable
+
+=cut
+
+sub new {
+  my ( $proto, $adaptor, @coord_systems ) = @_;
+
+  my $class = ref($proto) || $proto;
+
+  my $self = bless( {}, $class );
+
+  $self->adaptor($adaptor);
+
+  $adaptor->cache_seq_ids_with_mult_assemblys();
+
+  if ( @coord_systems != 2 ) {
+    throw(   'Can only map between two coordinate systems. '
+           . scalar(@coord_systems)
+           . ' were provided' );
+  }
+
+  # Set the component and assembled coordinate systems
+  $self->{'asm_cs'} = $coord_systems[0];
+  $self->{'cmp_cs'} = $coord_systems[1];
+
+  # We load the mapper calling the 'ASSEMBLED' the 'from' coord system
+  # and the 'COMPONENT' the 'to' coord system.
+
+  $self->{'mapper'} = Bio::EnsEMBL::Mapper->new( $ASSEMBLED, $COMPONENT,
+                                 $coord_systems[0], $coord_systems[1] );
+
+  $self->{'max_pair_count'} = $DEFAULT_MAX_PAIR_COUNT;
+
+  return $self;
+} ## end sub new
+
+=head2 max_pair_count
+
+  Arg [1]    : (optional) int $max_pair_count
+  Example    : $mapper->max_pair_count(100000)
+  Description: Getter/Setter for the number of mapping pairs allowed
+               in the internal cache.  This can be used to override
+               the default value (1000) to tune the performance and
+               memory usage for certain scenarios.  Higher value
+               means bigger cache, more memory used.
+  Return type: int
+  Exceptions : None
+  Caller     : General
+  Status     : Stable
+
+=cut
+
+sub max_pair_count {
+  my ( $self, $value ) = @_;
+
+  if ( defined($value) ) {
+    $self->{'max_pair_count'} = $value;
+  }
+
+  return $self->{'max_pair_count'};
+}
+
+=head2 register_all
+
+  Arg [1]    : None
+  Example    : $mapper->max_pair_count(10e6);
+               $mapper->register_all();
+  Description: Pre-registers all assembly information in this
+               mapper.  The cache size should be set to a
+               sufficiently large value so that all of the
+               information can be stored.  This method is useful
+               when *a lot* of mapping will be done in regions
+               which are distributed around the genome.  After
+               registration the mapper will consume a lot of memory
+               but will not have to perform any SQL and will be
+               faster.
+  Return type: None
+  Exceptions : None
+  Caller     : Specialised programs doing a lot of mapping.
+  Status     : Stable
+
+=cut
+
+sub register_all {
+  my ($self) = @_;
+
+  $self->adaptor()->register_all($self);
+}
+
+=head2 map
+
+  Arg [1]    : string $frm_seq_region
+               The name of the sequence region to transform FROM.
+  Arg [2]    : int $frm_start
+               The start of the region to transform FROM.
+  Arg [3]    : int $frm_end
+               The end of the region to transform FROM.
+  Arg [4]    : int $strand
+               The strand of the region to transform FROM.
+  Arg [5]    : Bio::EnsEMBL::CoordSystem
+               The coordinate system to transform FROM
+  Example    : @coords =
+                $asm_mapper->map( 'X', 1_000_000, 2_000_000, 1,
+                                  $chr_cs );
+  Description: Transforms coordinates from one coordinate system to
+               another.
+  Return type: List of Bio::EnsEMBL::Mapper::Coordinate and/or
+               Bio::EnsEMBL::Mapper:Gap objects.
+  Exceptions : Throws if if the specified TO coordinat system is not
+               one of the coordinate systems associated with this
+               assembly mapper.
+  Caller     : General
+  Status     : Stable
+
+=cut
+
+sub map {
+  throw('Incorrect number of arguments.') if (!( @_ >= 6));
+
+  my ( $self, $frm_seq_region_name, $frm_start, $frm_end, $frm_strand,
+       $frm_cs, $to_slice )
+    = @_;
+
+  my $mapper  = $self->{'mapper'};
+  my $asm_cs  = $self->{'asm_cs'};
+  my $cmp_cs  = $self->{'cmp_cs'};
+  my $adaptor = $self->{'adaptor'};
+  my $frm;
+
+
+  my $seq_region_id =
+    $self->adaptor()
+    ->seq_regions_to_ids( $frm_cs, [$frm_seq_region_name] )->[0];
+
+  # Speed critical section:
+  # Try to do simple pointer equality comparisons of the coord system
+  # objects first since this is likely to work most of the time and is
+  # much faster than a function call.
+
+  if ( $frm_cs == $cmp_cs
+       || ( $frm_cs != $asm_cs && $frm_cs->equals($cmp_cs) ) )
+  {
+    if ( !$self->{'cmp_register'}->{$seq_region_id} ) {
+      $adaptor->register_component( $self, $seq_region_id );
+    }
+    $frm = $COMPONENT;
+
+  } elsif ( $frm_cs == $asm_cs || $frm_cs->equals($asm_cs) ) {
+
+    # This can be probably be sped up some by only calling registered
+    # assembled if needed.
+    $adaptor->register_assembled( $self, $seq_region_id, $frm_start,
+                                  $frm_end );
+    $frm = $ASSEMBLED;
+
+  } else {
+
+    throw(
+           sprintf( "Coordinate system %s %s is neither the assembled "
+                      . "nor the component coordinate system "
+                      . "of this AssemblyMapper",
+                    $frm_cs->name(), $frm_cs->version() ) );
+
+  }
+
+  return
+    $mapper->map_coordinates( $seq_region_id, $frm_start, $frm_end,
+                              $frm_strand, $frm );
+} ## end sub map
+
+
+=head2 flush
+
+  Args       : None
+  Example    : None
+  Description: Remove all cached items from this AssemblyMapper.
+  Return type: None
+  Exceptions : None
+  Caller     : AssemblyMapperAdaptor
+  Status     : Stable
+
+=cut
+
+sub flush {
+  my ($self) = @_;
+
+  $self->{'mapper'}->flush();
+  $self->{'cmp_register'} = {};
+  $self->{'asm_register'} = {};
+}
+
+=head2 size
+
+  Args       : None
+  Example    : $num_of_pairs = $mapper->size();
+  Description: Returns the number of pairs currently stored.
+  Return type: int
+  Exceptions : None
+  Caller     : General
+  Status     : Stable
+
+=cut
+
+sub size {
+  my ($self) = @_;
+
+  return $self->{'mapper'}->{'pair_count'};
+}
+
+=head2 fastmap
+
+  Arg [1]    : string $frm_seq_region
+               The name of the sequence region to transform FROM.
+  Arg [2]    : int $frm_start
+               The start of the region to transform FROM.
+  Arg [3]    : int $frm_end
+               The end of the region to transform FROM.
+  Arg [4]    : int $strand
+               The strand of the region to transform FROM.
+  Arg [5]    : Bio::EnsEMBL::CoordSystem
+               The coordinate system to transform FROM.
+  Example    : @coords =
+                $asm_mapper->map( 'X', 1_000_000, 2_000_000, 1,
+                                  $chr_cs );
+  Description: Transforms coordinates from one coordinate system to
+               another.
+  Return type: List of Bio::EnsEMBL::Mapper::Coordinate and/or
+               Bio::EnsEMBL::Mapper:Gap objects.
+  Exceptions : Throws if the specified TO coordinat system is not
+               one of the coordinate systems associated with this
+               assembly mapper.
+  Caller     : General
+  Status     : Stable
+
+=cut
+
+sub fastmap {
+  if ( @_ != 6 ) {
+    throw('Incorrect number of arguments.');
+  }
+
+  my ( $self, $frm_seq_region_name, $frm_start, $frm_end, $frm_strand,
+       $frm_cs )
+    = @_;
+
+  my $mapper  = $self->{'mapper'};
+  my $asm_cs  = $self->{'asm_cs'};
+  my $cmp_cs  = $self->{'cmp_cs'};
+  my $adaptor = $self->adaptor();
+  my $frm;
+
+  my @tmp;
+  push @tmp, $frm_seq_region_name;
+
+  my $seq_region_id =
+    $self->adaptor()->seq_regions_to_ids( $frm_cs, \@tmp )->[0];
+
+  # Speed critical section:
+  # Try to do simple pointer equality comparisons of the coord system
+  # objects first since this is likely to work most of the time and is
+  # much faster than a function call.
+
+  if ( $frm_cs == $cmp_cs
+       || ( $frm_cs != $asm_cs && $frm_cs->equals($cmp_cs) ) )
+  {
+
+    if ( !$self->{'cmp_register'}->{$seq_region_id} ) {
+      $adaptor->register_component( $self, $seq_region_id );
+    }
+    $frm = $COMPONENT;
+
+  } elsif ( $frm_cs == $asm_cs || $frm_cs->equals($asm_cs) ) {
+
+    # This can be probably be sped up some by only calling registered
+    # assembled if needed
+    $adaptor->register_assembled( $self, $seq_region_id, $frm_start,
+                                  $frm_end );
+    $frm = $ASSEMBLED;
+
+  } else {
+
+    throw(
+           sprintf( "Coordinate system %s %s is neither the assembled "
+                      . "nor the component coordinate system "
+                      . "of this AssemblyMapper",
+                    $frm_cs->name(), $frm_cs->version() ) );
+
+  }
+
+  return
+    $mapper->fastmap( $seq_region_id, $frm_start, $frm_end, $frm_strand,
+                      $frm );
+} ## end sub fastmap
+
+=head2 list_ids
+
+  Arg [1]    : string $frm_seq_region
+               The name of the sequence region of interest.
+  Arg [2]    : int $frm_start
+               The start of the region of interest.
+  Arg [3]    : int $frm_end
+               The end of the region to transform of interest.
+  Arg [5]    : Bio::EnsEMBL::CoordSystem $frm_cs
+               The coordinate system to obtain overlapping IDs of.
+  Example    : foreach my $id (
+                        $asm_mapper->list_ids( 'X', 1, 1000, $ctg_cs ) )
+                { ... }
+  Description: Retrieves a list of overlapping seq_region names of
+               another coordinate system.  This is the same as the
+               list_ids method but uses seq_region names rather
+               internal IDs.
+  Return type: List of strings.
+  Exceptions : None
+  Caller     : General
+  Status     : Stable
+
+=cut
+
+sub list_ids {
+  if ( @_ != 5 ) {
+    throw('Incorrect number of arguments.');
+  }
+
+  my ( $self, $frm_seq_region_name, $frm_start, $frm_end, $frm_cs ) =
+    @_;
+
+  my @tmp = ($frm_seq_region_name);
+
+  my $seq_region_id =
+    $self->adaptor()->seq_regions_to_ids( $frm_cs, \@tmp )->[0];
+
+  if ( $frm_cs->equals( $self->component_CoordSystem() ) ) {
+
+    if ( !$self->have_registered_component($seq_region_id) ) {
+      $self->adaptor->register_component( $self, $seq_region_id );
+    }
+
+    # Pull out the 'from' identifiers of the mapper pairs.  The we
+    # loaded the assembled side as the 'from' side in the constructor.
+
+    return
+      map ( { $_->from()->id() }
+            $self->mapper()->list_pairs(
+                        $seq_region_id, $frm_start, $frm_end, $COMPONENT
+            ) );
+
+  } elsif ( $frm_cs->equals( $self->assembled_CoordSystem() ) ) {
+
+    $self->adaptor->register_assembled( $self, $seq_region_id,
+                                        $frm_start, $frm_end );
+
+    # Pull out the 'to' identifiers of the mapper pairs we loaded the
+    # component side as the 'to' coord system in the constructor.
+
+    return
+      map ( { $_->to->id() }
+            $self->mapper()->list_pairs(
+                        $seq_region_id, $frm_start, $frm_end, $ASSEMBLED
+            ) );
+
+  } else {
+
+    throw(
+           sprintf( "Coordinate system %s %s is neither the assembled "
+                      . "nor the component coordinate system "
+                      . "of this AssemblyMapper",
+                    $frm_cs->name(), $frm_cs->version() ) );
+
+  }
+} ## end sub list_ids
+
+#sub list_seq_regions {
+#  throw('Incorrect number of arguments.') if(@_ != 5);
+#  my($self, $frm_seq_region_name, $frm_start, $frm_end, $frm_cs) = @_;
+
+#  if($frm_cs->equals($self->component_CoordSystem())) {
+
+#    if(!$self->have_registered_component($seq_region_id)) {
+#      $self->adaptor->register_component($self,$seq_region_id);
+#    }
+
+#    #pull out the 'from' identifiers of the mapper pairs.  The
+#    #we loaded the assembled side as the 'from' side in the constructor
+#    return
+#      map {$_->from()->id()}
+#      $self->mapper()->list_pairs($seq_region_id, $frm_start,
+#                                  $frm_end, $COMPONENT);
+
+#  } elsif($frm_cs->equals($self->assembled_CoordSystem())) {
+
+#    $self->adaptor->register_assembled($self,
+#                                       $frm_seq_region,$frm_start,$frm_end);
+
+#    #pull out the 'to' identifiers of the mapper pairs
+#    #we loaded the component side as the 'to' coord system in the constructor
+#    return
+#      map {$_->to->id()}
+#        $self->mapper()->list_pairs($frm_seq_region, $frm_start,
+#                                    $frm_end, $ASSEMBLED);
+#  } else {
+#    throw("Coordinate system " . $frm_cs->name . " " . $frm_cs->version .
+#          " is neither the assembled nor the component coordinate system " .
+#          " of this AssemblyMapper");
+#  }
+#}
+
+
+=head2 list_seq_regions
+
+  Arg [1]    : string $frm_seq_region
+               The name of the sequence region of interest.
+  Arg [2]    : int $frm_start
+               The start of the region of interest.
+  Arg [3]    : int $frm_end
+               The end of the region to transform of interest.
+  Arg [5]    : Bio::EnsEMBL::CoordSystem $frm_cs
+               The coordinate system to obtain overlapping IDs of.
+  Example    : foreach my $id (
+                                 $asm_mapper->list_seq_regions(
+                                                   'X', 1, 1000, $chr_cs
+                                 ) ) { ... }
+  Description: Retrieves a list of overlapping seq_region internal
+               identifiers of another coordinate system.  This is
+               the same as the list_seq_regions method but uses
+               internal identfiers rather than seq_region strings.
+  Return type: List of ints.
+  Exceptions : None
+  Caller     : General
+  Status     : Stable
+
+=cut
+
+sub list_seq_regions {
+  if ( @_ != 5 ) {
+    throw('Incorrect number of arguments.');
+  }
+
+  my ( $self, $frm_seq_region, $frm_start, $frm_end, $frm_cs ) = @_;
+
+  # Retrieve the seq_region names.
+
+  my @seq_ids =
+    $self->list_ids( $frm_seq_region, $frm_start, $frm_end, $frm_cs );
+
+  # The seq_regions are from the 'to' coordinate system not the from
+  # coordinate system we used to obtain them.
+
+  my $to_cs;
+  if ( $frm_cs->equals( $self->assembled_CoordSystem() ) ) {
+    $to_cs = $self->component_CoordSystem();
+  } else {
+    $to_cs = $self->assembled_CoordSystem();
+  }
+
+  # Convert them to IDs.
+  return @{ $self->adaptor()->seq_ids_to_regions( \@seq_ids ) };
+}
+
+#sub list_ids {
+#  throw('Incorrect number of arguments.') if(@_ != 5);
+#  my($self, $frm_seq_region, $frm_start, $frm_end, $frm_cs) = @_;
+
+#  #retrieve the seq_region names
+#  my @seq_regs =
+#    $self->list_seq_regions($frm_seq_region,$frm_start,$frm_end,$frm_cs);
+
+#  #The seq_regions are from the 'to' coordinate system not the
+#  #from coordinate system we used to obtain them
+#  my $to_cs;
+#  if($frm_cs->equals($self->assembled_CoordSystem())) {
+#    $to_cs = $self->component_CoordSystem();
+#  } else {
+#    $to_cs = $self->assembled_CoordSystem();
+#  }
+
+#  #convert them to ids
+#  return @{$self->adaptor()->seq_regions_to_ids($to_cs, \@seq_regs)};
+#}
+
+=head2 have_registered_component
+
+  Arg [1]    : string $cmp_seq_region
+               The name of the sequence region to check for
+               registration.
+  Example    : if ( $asm_mapper->have_registered_component('AL240214.1') ) {}
+  Description: Returns true if a given component region has
+               been registered with this assembly mapper.  This
+               should only be called by this class or the
+               AssemblyMapperAdaptor.  In other words, do not use
+               this method unless you really know what you are
+               doing.
+  Return type: Boolean (0 or 1)
+  Exceptions : Throws on incorrect arguments.
+  Caller     : Internal, AssemblyMapperAdaptor
+  Status     : Stable
+
+=cut
+
+sub have_registered_component {
+  my ( $self, $cmp_seq_region ) = @_;
+
+  if ( !defined($cmp_seq_region) ) {
+    throw('cmp_seq_region argument is required');
+  }
+
+  if ( exists( $self->{'cmp_register'}->{$cmp_seq_region} ) ) {
+    return 1;
+  }
+
+  return 0;
+}
+
+=head2 have_registered_assembled
+
+  Arg [1]    : string $asm_seq_region
+               The name of the sequence region to check for
+               registration.
+  Arg [2]    : int $chunk_id
+               The chunk number of the provided seq_region to check
+               for registration.
+  Example    : if ( $asm_mapper->have_registered_component( 'X', 9 ) ) { }
+  Description: Returns true if a given assembled region chunk
+               has been registered with this assembly mapper.
+               This should only be called by this class or the
+               AssemblyMapperAdaptor.  In other words, do not use
+               this method unless you really know what you are
+               doing.
+  Return type: Boolean (0 or 1)
+  Exceptions : Throws on incorrect arguments
+  Caller     : Internal, AssemblyMapperAdaptor
+  Status     : Stable
+
+=cut
+
+sub have_registered_assembled {
+  my ( $self, $asm_seq_region, $chunk_id ) = @_;
+
+  if ( !defined($asm_seq_region) ) {
+    throw('asm_seq_region argument is required');
+  }
+  if ( !defined($chunk_id) ) {
+    throw('chunk_id is required');
+  }
+
+  if (
+     exists( $self->{'asm_register'}->{$asm_seq_region}->{$chunk_id} ) )
+  {
+    return 1;
+  }
+
+  return 0;
+}
+
+
+=head2 register_component
+
+  Arg [1]    : integer $cmp_seq_region
+               The dbID of the component sequence region to
+               register.
+  Example    : $asm_mapper->register_component('AL312341.1');
+  Description: Flags a given component sequence region as registered
+               in this assembly mapper.  This should only be called
+               by this class or the AssemblyMapperAdaptor.
+  Return type: None
+  Exceptions : Throws on incorrect arguments
+  Caller     : Internal, AssemblyMapperAdaptor
+  Status     : Stable
+
+=cut
+
+sub register_component {
+  my ( $self, $cmp_seq_region ) = @_;
+
+  if ( !defined($cmp_seq_region) ) {
+    throw('cmp_seq_region argument is required');
+  }
+
+  $self->{'cmp_register'}->{$cmp_seq_region} = 1;
+}
+
+=head2 register_assembled
+
+  Arg [1]    : integer $asm_seq_region
+               The dbID of the sequence region to register.
+  Arg [2]    : int $chunk_id
+               The chunk number of the provided seq_region to register.
+  Example    : $asm_mapper->register_assembled( 'X', 4 );
+  Description: Flags a given assembled region as registered in this
+               assembly mapper.  This should only be called by this
+               class or the AssemblyMapperAdaptor.  Do not call this
+               method unless you really know what you are doing.
+  Return type: None
+  Exceptions : Throws on incorrect arguments
+  Caller     : Internal, AssemblyMapperAdaptor
+  Status     : Stable
+
+=cut
+
+sub register_assembled {
+  my ( $self, $asm_seq_region, $chunk_id ) = @_;
+
+  if ( !defined($asm_seq_region) ) {
+    throw('asm_seq_region argument is required');
+  }
+  if ( !defined($chunk_id) ) {
+    throw('chunk_id srgument is required');
+  }
+
+  $self->{'asm_register'}->{$asm_seq_region}->{$chunk_id} = 1;
+}
+
+=head2 mapper
+
+  Arg [1]    : None
+  Example    : $mapper = $asm_mapper->mapper();
+  Description: Retrieves the internal mapper used by this Assembly
+               Mapper.  This is unlikely to be useful unless you
+               _really_ know what you are doing.
+  Return type: Bio::EnsEMBL::Mapper
+  Exceptions : None
+  Caller     : Internal, AssemblyMapperAdaptor
+  Status     : Stable
+
+=cut
+
+sub mapper {
+  my ($self) = @_;
+
+  return $self->{'mapper'};
+}
+
+=head2 assembled_CoordSystem
+
+  Arg [1]    : None
+  Example    : $cs = $asm_mapper->assembled_CoordSystem();
+  Description: Retrieves the assembled CoordSystem from this
+               assembly mapper.
+  Return type: Bio::EnsEMBL::CoordSystem
+  Exceptions : None
+  Caller     : Internal, AssemblyMapperAdaptor
+  Status     : Stable
+
+=cut
+
+sub assembled_CoordSystem {
+  my ($self) = @_;
+
+  return $self->{'asm_cs'};
+}
+
+=head2 component_CoordSystem
+
+  Arg [1]    : None
+  Example    : $cs = $asm_mapper->component_CoordSystem();
+  Description: Retrieves the component CoordSystem from this
+               assembly mapper.
+  Return type: Bio::EnsEMBL::CoordSystem
+  Exceptions : None
+  Caller     : Internal, AssemblyMapperAdaptor
+  Status     : Stable
+
+=cut
+
+sub component_CoordSystem {
+  my ($self) = @_;
+
+  return $self->{'cmp_cs'};
+}
+
+=head2 adaptor
+
+  Arg [1]    : Bio::EnsEMBL::DBSQL::AssemblyMapperAdaptor $adaptor
+  Description: Getter/set terfor this object's database adaptor.
+  Returntype : Bio::EnsEMBL::DBSQL::AssemblyMapperAdaptor
+  Exceptions : None
+  Caller     : General
+  Status     : Stable
+
+=cut
+
+sub adaptor {
+  my ( $self, $value ) = @_;
+
+  if ( defined($value) ) {
+    weaken($self->{'adaptor'} = $value);
+  }
+
+  return $self->{'adaptor'};
+}
+
+=head2 in_assembly
+
+  Description: DEPRECATED, use map() or list_ids() instead.
+
+=cut
+
+sub in_assembly {
+  my ( $self, $object ) = @_;
+
+  deprecate('Use map() or list_ids() instead.');
+
+  my $csa = $self->db->get_CoordSystemAdaptor();
+
+  my $top_level = $csa->fetch_top_level();
+
+  my $asma =
+    $self->adaptor->fetch_by_CoordSystems( $object->coord_system(),
+                                           $top_level );
+
+  my @list = $asma->list_ids( $object->seq_region(),
+                              $object->start(),
+                              $object->end(),
+                              $object->coord_system() );
+
+  return ( @list > 0 );
+}
+
+=head2 map_coordinates_to_assembly
+
+  Description: DEPRECATED, use map() instead.
+
+=cut
+
+sub map_coordinates_to_assembly {
+  my ( $self, $contig_id, $start, $end, $strand ) = @_;
+
+  deprecate('Use map() instead.');
+
+  # Not sure if contig_id is seq_region_id or name...
+  return
+    $self->map( $contig_id, $start, $end, $strand,
+                $self->contig_CoordSystem() );
+
+}
+
+=head2 fast_to_assembly
+
+  Description: DEPRECATED, use map() instead.
+
+=cut
+
+sub fast_to_assembly {
+  my ( $self, $contig_id, $start, $end, $strand ) = @_;
+
+  deprecate('Use map() instead.');
+
+  # Not sure if contig_id is seq_region_id or name...
+  return
+    $self->map( $contig_id, $start, $end, $strand,
+                $self->contig_CoordSystem() );
+}
+
+=head2 map_coordinates_to_rawcontig
+
+  Description: DEPRECATED, use map() instead.
+
+=cut
+
+sub map_coordinates_to_rawcontig {
+  my ( $self, $chr_name, $start, $end, $strand ) = @_;
+
+  deprecate('Use map() instead.');
+
+  return
+    $self->map( $chr_name, $start, $end, $strand,
+                $self->assembled_CoordSystem() );
+}
+
+=head2 list_contig_ids
+
+  Description: DEPRECATED, use list_ids() instead.
+
+=cut
+
+sub list_contig_ids {
+  my ( $self, $chr_name, $start, $end ) = @_;
+
+  deprecate('Use list_ids() instead.');
+
+  return
+    $self->list_ids( $chr_name, $start, $end,
+                     $self->assembled_CoordSystem() );
+}
+
+1;