annotate variant_effect_predictor/Bio/EnsEMBL/ChainedAssemblyMapper.pm @ 3:d30fa12e4cc5 default tip

Merge heads 2:a5976b2dce6f and 1:09613ce8151e which were created as a result of a recently fixed bug.
author devteam <devteam@galaxyproject.org>
date Mon, 13 Jan 2014 10:38:30 -0500
parents 1f6dce3d34e0
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1 =head1 LICENSE
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
3 Copyright (c) 1999-2012 The European Bioinformatics Institute and
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
4 Genome Research Limited. All rights reserved.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
5
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
6 This software is distributed under a modified Apache license.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
7 For license details, please see
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
8
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
9 http://www.ensembl.org/info/about/code_licence.html
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
10
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
11 =head1 CONTACT
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
12
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
13 Please email comments or questions to the public Ensembl
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
14 developers list at <dev@ensembl.org>.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
15
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
16 Questions may also be sent to the Ensembl help desk at
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
17 <helpdesk@ensembl.org>.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
18
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
19 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
20
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
21 =head1 NAME
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
22
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
23 Bio::EnsEMBL::ChainedAssemblyMapper -
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
24 Handles mapping between two coordinate systems using the information
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
25 stored in the assembly table
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
26
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
27 =head1 SYNOPSIS
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
28
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
29 $db = Bio::EnsEMBL::DBSQL::DBAdaptor->new(...);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
30 $asma = $db->get_AssemblyMapperAdaptor();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
31 $csa = $db->get_CoordSystemAdaptor();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
32
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
33 my $chr_cs = $cs_adaptor->fetch_by_name( 'chromosome', 'NCBI33' );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
34 my $cln_cs = $cs_adaptor->fetch_by_name('clone');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
35
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
36 $asm_mapper = $map_adaptor->fetch_by_CoordSystems( $cs1, $cs2 );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
37
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
38 # Map to contig coordinate system from chromosomal
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
39 @cln_coords =
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
40 $asm_mapper->map( 'X', 1_000_000, 2_000_000, 1, $chr_cs );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
41
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
42 # Map to chromosome coordinate system from contig
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
43 @chr_coords =
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
44 $asm_mapper->map( 'AL30421.1', 100, 10000, -1, $cln_cs );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
45
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
46 # List contig names for a region of chromsome
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
47 @cln_ids = $asm_mapper->list_ids( '13', 1_000_000, 1, $chr_cs );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
48
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
49 # List chromosome names for a contig region
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
50 @chr_ids =
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
51 $asm_mapper->list_ids( 'AL30421.1', 1, 1000, -1, $cln_cs );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
52
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
53 =head1 DESCRIPTION
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
54
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
55 The ChainedAssemblyMapper is an extension of the regular AssemblyMapper
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
56 that allows for mappings between coordinate systems that require
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
57 multi-step mapping. For example if explicit mappings are defined
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
58 between the following coordinate systems,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
59
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
60 chromosome <-> contig
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
61 contig <-> clone
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
62
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
63 the ChainedAssemblyMapper would be able to perform implicit mapping
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
64 between the chromosome and clone coordinate systems. This should be
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
65 transparent to the user of this module, and users should not even
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
66 realise that they are using a chained assembly mapper as opposed to a
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
67 normal assembly mapper.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
68
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
69 =head1 METHODS
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
70
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
71 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
72
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
73
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
74 my $FIRST = 'first';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
75 my $MIDDLE = 'middle';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
76 my $LAST = 'last';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
77
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
78 package Bio::EnsEMBL::ChainedAssemblyMapper;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
79
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
80 use strict;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
81 use warnings;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
82 use integer; #use proper arithmetic bitshifts
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
83
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
84 use Bio::EnsEMBL::Mapper;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
85 use Bio::EnsEMBL::Mapper::RangeRegistry;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
86 use Bio::EnsEMBL::Utils::Exception qw(throw deprecate);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
87 use Scalar::Util qw(weaken);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
88
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
89 #2^20 = approx 10^6
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
90 my $CHUNKFACTOR = 20;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
91
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
92 # max size of the pair cache in the mappers
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
93 my $DEFAULT_MAX_PAIR_COUNT = 6000;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
94
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
95 =head2 new
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
96
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
97 Arg [1] : Bio::EnsEMBL::DBSQL::AssemblyMapperAdaptor
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
98 Arg [2] : Bio::EnsEMBL::CoordSystem $src_cs
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
99 Arg [3] : Bio::EnsEMBL::CoordSystem $int_cs
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
100 Arg [4] : Bio::EnsEMBL::CoordSystem $dst_cs
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
101 Example : Should use AssemblyMapperAdaptor->fetch_by_CoordSystems
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
102 Description: Creates a new AssemblyMapper
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
103 Returntype : Bio::EnsEMBL::DBSQL::AssemblyMapperAdaptor
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
104 Exceptions : thrown if wrong number of coord_systems are provided
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
105 Caller : AssemblyMapperAdaptor
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
106 Status : Stable
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
107
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
108 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
109
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
110 sub new {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
111 my ($caller,$adaptor,@coord_systems) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
112
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
113 my $class = ref($caller) || $caller;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
114
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
115 my $self = {};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
116 bless $self, $class;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
117
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
118 $self->adaptor($adaptor);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
119
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
120 if(@coord_systems != 3) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
121 throw('ChainedMapper can only map between 3 coordinate systems. ' .
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
122 scalar(@coord_systems) . ' were provided');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
123 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
124
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
125 $adaptor->cache_seq_ids_with_mult_assemblys();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
126
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
127 # Set the component, intermediate and assembled coordinate systems
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
128 $self->{'first_cs'} = $coord_systems[0];
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
129 $self->{'mid_cs'} = $coord_systems[1];
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
130 $self->{'last_cs'} = $coord_systems[2];
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
131
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
132 #maps between first and intermediate coord systems
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
133 $self->{'first_mid_mapper'} = Bio::EnsEMBL::Mapper->new($FIRST, $MIDDLE);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
134
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
135 #maps between last and intermediate
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
136 $self->{'last_mid_mapper'} = Bio::EnsEMBL::Mapper->new($LAST, $MIDDLE);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
137
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
138 #mapper that is actually used and is loaded by the mappings generated
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
139 #by the other two mappers
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
140 $self->{'first_last_mapper'} = Bio::EnsEMBL::Mapper->new($FIRST, $LAST,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
141 $coord_systems[0],
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
142 $coord_systems[2]);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
143
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
144 #need registries to keep track of what regions are registered in source
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
145 #and destination coordinate systems
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
146 $self->{'first_registry'} = Bio::EnsEMBL::Mapper::RangeRegistry->new();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
147 $self->{'last_registry'} = Bio::EnsEMBL::Mapper::RangeRegistry->new();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
148
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
149 $self->{'max_pair_count'} = $DEFAULT_MAX_PAIR_COUNT;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
150
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
151 return $self;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
152 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
153
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
154
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
155 =head2 max_pair_count
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
156
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
157 Arg [1] : (optional) int $max_pair_count
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
158 Example : $mapper->max_pair_count(100000)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
159 Description: Getter/Setter for the number of mapping pairs allowed in the
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
160 internal cache. This can be used to override the default value
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
161 (6000) to tune the performance and memory usage for certain
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
162 scenarios. Higher value = bigger cache, more memory used
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
163 Returntype : int
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
164 Exceptions : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
165 Caller : general
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
166 Status : Stable
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
167
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
168 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
169
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
170 sub max_pair_count {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
171 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
172 $self->{'max_pair_count'} = shift if(@_);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
173 return $self->{'max_pair_count'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
174 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
175
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
176
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
177
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
178
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
179 =head2 register_all
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
180
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
181 Arg [1] : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
182 Example : $mapper->max_pair_count(10e6);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
183 $mapper->register_all();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
184 Description: Pre-registers all assembly information in this mapper. The
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
185 cache size should be set to a sufficiently large value
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
186 so that all of the information can be stored. This method
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
187 is useful when *a lot* of mapping will be done in regions
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
188 which are distributed around the genome. After registration
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
189 the mapper will consume a lot of memory but will not have to
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
190 perform any SQL and will be faster.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
191 Returntype : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
192 Exceptions : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
193 Caller : specialised programs doing a lot of mapping
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
194 Status : Stable
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
195
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
196 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
197
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
198 sub register_all {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
199 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
200 $self->adaptor->register_all_chained($self);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
201 return;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
202 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
203
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
204
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
205
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
206
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
207 sub flush {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
208 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
209 $self->{'first_registry'}->flush();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
210 $self->{'last_registry'}->flush();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
211
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
212 $self->{'first_mid_mapper'}->flush();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
213 $self->{'last_mid_mapper'}->flush();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
214 $self->{'first_last_mapper'}->flush();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
215 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
216
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
217 =head2 size
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
218
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
219 Args : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
220 Example : $num_of_pairs = $mapper->size();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
221 Description: return the number of pairs currently stored.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
222 Returntype : int
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
223 Exceptions : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
224 Caller : general
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
225 Status : Stable
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
226
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
227 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
228
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
229 sub size {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
230 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
231 return ( $self->{'first_last_mapper'}->{'pair_count'} +
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
232 $self->{'last_mid_mapper'}->{'pair_count'} +
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
233 $self->{'first_mid_mapper'}->{'pair_count'} );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
234 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
235
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
236
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
237
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
238 =head2 map
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
239
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
240 Arg [1] : string $frm_seq_region
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
241 The name of the sequence region to transform FROM
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
242 Arg [2] : int $frm_start
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
243 The start of the region to transform FROM
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
244 Arg [3] : int $frm_end
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
245 The end of the region to transform FROM
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
246 Arg [4] : int $strand
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
247 The strand of the region to transform FROM
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
248 Arg [5] : Bio::EnsEMBL::CoordSystem
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
249 The coordinate system to transform FROM
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
250 Arg [6] : (optional) fastmap
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
251 Arg [7] : (optional) Bio::Ensembl::Slice
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
252 The slice to transform TO
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
253 Example : @coords = $asm_mapper->map('X', 1_000_000, 2_000_000,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
254 1, $chr_cs);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
255 Description: Transforms coordinates from one coordinate system
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
256 to another.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
257 Returntype : List of Bio::EnsEMBL::Mapper::Coordinate and/or
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
258 Bio::EnsEMBL::Mapper:Gap objects
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
259 Exceptions : thrown if the specified TO coordinat system is not one
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
260 of the coordinate systems associated with this assembly mapper
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
261 Caller : general
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
262 Status : Stable
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
263
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
264 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
265
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
266 sub map {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
267 throw('Incorrect number of arguments.') if(@_ < 6);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
268
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
269 my ($self, $frm_seq_region_name, $frm_start,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
270 $frm_end, $frm_strand, $frm_cs, $fastmap, $to_slice) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
271
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
272 my $mapper = $self->{'first_last_mapper'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
273 my $first_cs = $self->{'first_cs'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
274 my $last_cs = $self->{'last_cs'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
275
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
276 my $is_insert = ($frm_end + 1 == $frm_start);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
277
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
278 my $frm;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
279 my $registry;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
280
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
281
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
282
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
283
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
284 my @tmp;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
285 push @tmp, $frm_seq_region_name;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
286 my $seq_region_id = @{$self->adaptor()->seq_regions_to_ids($frm_cs, \@tmp)}[0];
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
287
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
288 #speed critical section:
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
289 #try to do simple pointer equality comparisons of the coord system objects
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
290 #first since this is likely to work most of the time and is much faster
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
291 #than a function call
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
292
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
293 if($frm_cs == $first_cs ||
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
294 ($frm_cs != $last_cs && $frm_cs->equals($first_cs))) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
295 $frm = $FIRST;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
296 $registry = $self->{'first_registry'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
297 } elsif($frm_cs == $last_cs || $frm_cs->equals($last_cs)) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
298 $frm = $LAST;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
299 $registry = $self->{'last_registry'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
300 } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
301 throw("Coordinate system " . $frm_cs->name . " " . $frm_cs->version .
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
302 " is neither the first nor the last coordinate system " .
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
303 " of this ChainedAssemblyMapper");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
304 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
305
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
306 #the minimum area we want to register if registration is necessary is
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
307 #about 1MB. Break requested ranges into chunks of 1MB and then register
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
308 #this larger region if we have a registry miss.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
309
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
310 #use bitwise shift for fast and easy integer multiplication and division
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
311 my ($min_start, $min_end);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
312
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
313 if($is_insert) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
314 $min_start = (($frm_end >> $CHUNKFACTOR) << $CHUNKFACTOR);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
315 $min_end = ((($frm_start >> $CHUNKFACTOR) + 1) << $CHUNKFACTOR) - 1 ;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
316 } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
317 $min_start = (($frm_start >> $CHUNKFACTOR) << $CHUNKFACTOR);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
318 $min_end = ((($frm_end >> $CHUNKFACTOR) + 1) << $CHUNKFACTOR) - 1 ;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
319 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
320
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
321 #get a list of ranges in the requested region that have not been registered,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
322 #and register them at the same
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
323
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
324 my $ranges;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
325
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
326 if($is_insert) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
327 $ranges = $registry->check_and_register($seq_region_id, $frm_end,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
328 $frm_start, $min_start, $min_end);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
329 } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
330 $ranges = $registry->check_and_register($seq_region_id, $frm_start,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
331 $frm_end, $min_start, $min_end);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
332 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
333
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
334 if(defined($ranges)) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
335 if( $self->size() > $self->{'max_pair_count'} ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
336 $self->flush();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
337
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
338 if($is_insert) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
339 $ranges = $registry->check_and_register
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
340 ($seq_region_id, $frm_end, $frm_start, $min_start, $min_end);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
341 } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
342 $ranges = $registry->check_and_register
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
343 ($seq_region_id, $frm_start, $frm_end, $min_start, $min_end);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
344 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
345 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
346 $self->adaptor->register_chained($self,$frm,$seq_region_id,$ranges,$to_slice);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
347 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
348
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
349 if($fastmap) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
350 return $mapper->fastmap($seq_region_id, $frm_start, $frm_end,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
351 $frm_strand, $frm);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
352 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
353
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
354 return $mapper->map_coordinates($seq_region_id, $frm_start, $frm_end,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
355 $frm_strand, $frm);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
356 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
357
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
358
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
359 sub fastmap {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
360 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
361 return $self->map(@_,1);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
362 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
363
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
364
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
365 =head2 list_ids
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
366
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
367 Arg [1] : string $frm_seq_region
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
368 The name of the sequence region of interest
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
369 Arg [2] : int $frm_start
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
370 The start of the region of interest
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
371 Arg [3] : int $frm_end
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
372 The end of the region to transform of interest
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
373 Arg [5] : Bio::EnsEMBL::CoordSystem $frm_cs
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
374 The coordinate system to obtain overlapping ids of
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
375 Example : foreach $id ($asm_mapper->list_ids('X',1,1000,$chr_cs)) {...}
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
376 Description: Retrieves a list of overlapping seq_region internal identifiers
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
377 of another coordinate system. This is the same as the
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
378 list_seq_regions method but uses internal identfiers rather
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
379 than seq_region strings
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
380 Returntype : List of ints
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
381 Exceptions : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
382 Caller : general
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
383 Status : Stable
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
384
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
385 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
386
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
387
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
388 sub list_ids {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
389 throw('Incorrect number of arguments.') if(@_ != 5);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
390 my($self, $frm_seq_region_name, $frm_start, $frm_end, $frm_cs) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
391
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
392 my $is_insert = ($frm_start == $frm_end + 1);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
393
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
394 #the minimum area we want to register if registration is necessary is
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
395 #about 1MB. Break requested ranges into chunks of 1MB and then register
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
396 #this larger region if we have a registry miss.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
397
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
398 #use bitwise shift for fast and easy integer multiplication and division
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
399 my ($min_start, $min_end);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
400
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
401 if($is_insert) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
402 $min_start = (($frm_end >> $CHUNKFACTOR) << $CHUNKFACTOR);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
403 $min_end = ((($frm_start >> $CHUNKFACTOR) + 1) << $CHUNKFACTOR) - 1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
404 } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
405 $min_start = (($frm_start >> $CHUNKFACTOR) << $CHUNKFACTOR);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
406 $min_end = ((($frm_end >> $CHUNKFACTOR) + 1) << $CHUNKFACTOR) - 1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
407 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
408
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
409 my @tmp;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
410 push @tmp, $frm_seq_region_name;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
411 my $seq_region_id = @{$self->adaptor()->seq_regions_to_ids($frm_cs, \@tmp)}[0];
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
412
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
413 if($frm_cs->equals($self->{'first_cs'})) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
414 my $registry = $self->{'first_registry'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
415
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
416 my $ranges;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
417
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
418
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
419 if($is_insert) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
420 $ranges = $registry->check_and_register
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
421 ($seq_region_id, $frm_end, $frm_start, $min_start, $min_end);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
422 } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
423 $ranges = $registry->check_and_register
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
424 ($seq_region_id, $frm_start, $frm_end, $min_start, $min_end);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
425 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
426
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
427 if(defined($ranges)) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
428 $self->adaptor->register_chained($self,$FIRST,$seq_region_id,$ranges);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
429 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
430
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
431 return map {$_->to()->id()}
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
432 $self->first_last_mapper()->list_pairs($seq_region_id, $frm_start,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
433 $frm_end, $FIRST);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
434
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
435 } elsif($frm_cs->equals($self->{'last_cs'})) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
436 my $registry = $self->{'last_registry'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
437
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
438 my $ranges;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
439 if($is_insert) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
440 $ranges = $registry->check_and_register
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
441 ($seq_region_id, $frm_end, $frm_start, $min_start, $min_end);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
442 } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
443 $ranges = $registry->check_and_register
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
444 ($seq_region_id, $frm_start, $frm_end, $min_start, $min_end);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
445 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
446
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
447 if(defined($ranges)) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
448 $self->adaptor->register_chained($self,$LAST,$seq_region_id,$ranges);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
449 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
450
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
451 return map {$_->from()->id()}
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
452 $self->first_last_mapper()->list_pairs($seq_region_id, $frm_start,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
453 $frm_end, $LAST);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
454 } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
455 throw("Coordinate system " . $frm_cs->name . " " . $frm_cs->version .
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
456 " is neither the first nor the last coordinate system " .
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
457 " of this ChainedAssemblyMapper");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
458 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
459 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
460
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
461
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
462 =head2 list_seq_regions
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
463
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
464 Arg [1] : string $frm_seq_region
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
465 The name of the sequence region of interest
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
466 Arg [2] : int $frm_start
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
467 The start of the region of interest
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
468 Arg [3] : int $frm_end
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
469 The end of the region to transform of interest
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
470 Arg [5] : Bio::EnsEMBL::CoordSystem $frm_cs
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
471 The coordinate system to obtain overlapping ids of
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
472 Example : foreach $id ($asm_mapper->list_ids('X',1,1000,$ctg_cs)) {...}
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
473 Description: Retrieves a list of overlapping seq_region internal identifiers
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
474 of another coordinate system. This is the same as the
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
475 list_ids method but uses seq_region names rather internal ids
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
476 Returntype : List of strings
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
477 Exceptions : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
478 Caller : general
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
479 Status : Stable
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
480
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
481 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
482
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
483 sub list_seq_regions {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
484 throw('Incorrect number of arguments.') if(@_ != 5);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
485 my($self, $frm_seq_region, $frm_start, $frm_end, $frm_cs) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
486
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
487 #retrieve the seq_region names
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
488 my @seq_regs =
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
489 $self->list_ids($frm_seq_region,$frm_start,$frm_end,$frm_cs);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
490
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
491 #The seq_regions are from the 'to' coordinate system not the
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
492 #from coordinate system we used to obtain them
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
493 my $to_cs;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
494 if($frm_cs->equals($self->first_CoordSystem())) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
495 $to_cs = $self->last_CoordSystem();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
496 } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
497 $to_cs = $self->first_CoordSystem();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
498 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
499
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
500 #convert them to names
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
501 return @{$self->adaptor()->seq_ids_to_regions(\@seq_regs)};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
502 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
503
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
504
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
505
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
506
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
507
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
508
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
509 =head2 first_last_mapper
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
510
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
511 Args : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
512 Example : $mapper = $cam->first_last_mapper();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
513 Description: return the mapper.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
514 Returntype : Bio::EnsEMBL::Mapper
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
515 Exceptions : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
516 Caller : internal
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
517 Status : Stable
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
518
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
519 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
520
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
521 sub first_last_mapper {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
522 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
523 return $self->{'first_last_mapper'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
524 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
525
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
526 =head2 first_middle_mapper
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
527
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
528 Args : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
529 Example : $mapper = $cam->first_middle_mapper();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
530 Description: return the mapper.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
531 Returntype : Bio::EnsEMBL::Mapper
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
532 Exceptions : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
533 Caller : internal
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
534 Status : Stable
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
535
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
536 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
537
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
538
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
539 sub first_middle_mapper {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
540 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
541 return $self->{'first_mid_mapper'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
542 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
543
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
544 =head2 last_middle_mapper
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
545
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
546 Args : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
547 Example : $mapper = $cam->last_middle_mapper();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
548 Description: return the mapper.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
549 Returntype : Bio::EnsEMBL::Mapper
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
550 Exceptions : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
551 Caller : internal
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
552 Status : Stable
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
553
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
554 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
555
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
556 sub last_middle_mapper {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
557 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
558 return $self->{'last_mid_mapper'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
559 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
560
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
561
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
562 =head2 first_CoordSystem
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
563
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
564 Args : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
565 Example : $coordsys = $cam->first_CoordSystem();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
566 Description: return the CoordSystem.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
567 Returntype : Bio::EnsEMBL::CoordSystem
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
568 Exceptions : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
569 Caller : internal
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
570 Status : Stable
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
571
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
572 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
573
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
574 sub first_CoordSystem {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
575 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
576 return $self->{'first_cs'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
577 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
578
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
579
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
580 =head2 middle_CoordSystem
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
581
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
582 Args : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
583 Example : $coordsys = $cam->middle_CoordSystem();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
584 Description: return the CoordSystem.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
585 Returntype : Bio::EnsEMBL::CoordSystem
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
586 Exceptions : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
587 Caller : internal
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
588 Status : Stable
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
589
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
590 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
591
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
592 sub middle_CoordSystem {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
593 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
594 return $self->{'mid_cs'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
595 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
596
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
597 =head2 last_CoordSystem
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
598
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
599 Args : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
600 Example : $coordsys = $cam->last_CoordSystem();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
601 Description: return the CoordSystem.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
602 Returntype : Bio::EnsEMBL::CoordSystem
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
603 Exceptions : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
604 Caller : internal
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
605 Status : Stable
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
606
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
607 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
608
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
609 sub last_CoordSystem {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
610 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
611 return $self->{'last_cs'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
612 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
613
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
614 =head2 first_registry
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
615
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
616 Args : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
617 Example : $rr = $cam->first_registry();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
618 Description: return the Registry.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
619 Returntype : Bio::EnsEMBL::Mapper::RangeRegistry
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
620 Exceptions : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
621 Caller : internal
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
622 Status : Stable
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
623
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
624 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
625
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
626 sub first_registry {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
627 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
628 return $self->{'first_registry'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
629 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
630
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
631 =head2 last_registry
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
632
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
633 Args : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
634 Example : $rr = $cam->last_registry();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
635 Description: return the Registry.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
636 Returntype : Bio::EnsEMBL::Mapper::RangeRegistry
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
637 Exceptions : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
638 Caller : internal
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
639 Status : Stable
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
640
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
641 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
642
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
643 sub last_registry {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
644 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
645 return $self->{'last_registry'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
646 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
647
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
648
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
649 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
650 # Methods supplied to maintain polymorphism with AssemblyMapper there
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
651 # is no real assembled or component in the chained mapper, since the
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
652 # ordering is arbitrary and both ends might actually be assembled, but
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
653 # these methods provide convenient synonyms
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
654 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
655
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
656 =head2 mapper
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
657
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
658 Args : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
659 Example : $mapper = $cam->mapper();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
660 Description: return the first_last_mapper.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
661 Returntype : Bio::EnsEMBL::Mapper
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
662 Exceptions : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
663 Caller : internal
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
664 Status : Stable
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
665
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
666 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
667
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
668 sub mapper {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
669 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
670 return $self->first_last_mapper();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
671 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
672
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
673 =head2 assembled_CoordSystem
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
674
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
675 Args : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
676 Example : $coordsys = $cam->assembled_CoordSystem();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
677 Description: return the first CoordSystem.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
678 Returntype : Bio::EnsEMBL::CoordSystem
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
679 Exceptions : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
680 Caller : internal
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
681 Status : Stable
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
682
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
683 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
684
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
685
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
686 sub assembled_CoordSystem {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
687 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
688 return $self->{'first_cs'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
689 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
690
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
691 =head2 component_CoordSystem
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
692
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
693 Args : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
694 Example : $coordsys = $cam->component_CoordSystem();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
695 Description: return the last CoordSystem.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
696 Returntype : Bio::EnsEMBL::CoordSystem
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
697 Exceptions : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
698 Caller : internal
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
699 Status : Stable
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
700
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
701 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
702
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
703 sub component_CoordSystem {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
704 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
705 return $self->{'last_cs'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
706 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
707
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
708
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
709 =head2 adaptor
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
710
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
711 Arg [1] : Bio::EnsEMBL::DBSQL::AssemblyMapperAdaptor $adaptor
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
712 Description: get/set for this objects database adaptor
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
713 Returntype : Bio::EnsEMBL::DBSQL::AssemblyMapperAdaptor
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
714 Exceptions : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
715 Caller : general
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
716 Status : Stable
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
717
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
718 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
719
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
720 sub adaptor {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
721 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
722 weaken($self->{'adaptor'} = shift) if(@_);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
723 return $self->{'adaptor'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
724 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
725
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
726
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
727 =head2 in_assembly
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
728
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
729 Deprecated. Use map() or list_ids() instead
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
730
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
731 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
732
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
733 sub in_assembly {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
734 my ($self, $object) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
735
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
736 deprecate('Use map() or list_ids() instead.');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
737
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
738 my $csa = $self->db->get_CoordSystemAdaptor();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
739
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
740 my $top_level = $csa->fetch_top_level();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
741
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
742 my $asma = $self->adaptor->fetch_by_CoordSystems($object->coord_system(),
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
743 $top_level);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
744
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
745 my @list = $asma->list_ids($object->seq_region(), $object->start(),
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
746 $object->end(), $object->coord_system());
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
747
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
748 return (@list > 0);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
749 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
750
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
751
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
752 =head2 map_coordinates_to_assembly
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
753
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
754 DEPRECATED use map() instead
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
755
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
756 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
757
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
758 sub map_coordinates_to_assembly {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
759 my ($self, $contig_id, $start, $end, $strand) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
760
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
761 deprecate('Use map() instead.');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
762
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
763 #not sure if contig_id is seq_region_id or name...
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
764 return $self->map($contig_id, $start, $end, $strand,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
765 $self->contig_CoordSystem());
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
766
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
767 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
768
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
769
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
770 =head2 fast_to_assembly
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
771
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
772 DEPRECATED use map() instead
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
773
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
774 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
775
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
776 sub fast_to_assembly {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
777 my ($self, $contig_id, $start, $end, $strand) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
778
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
779 deprecate('Use map() instead.');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
780
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
781 #not sure if contig_id is seq_region_id or name...
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
782 return $self->map($contig_id, $start, $end, $strand,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
783 $self->contig_CoordSystem());
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
784 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
785
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
786
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
787 =head2 map_coordinates_to_rawcontig
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
788
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
789 DEPRECATED use map() instead
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
790
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
791 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
792
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
793 sub map_coordinates_to_rawcontig {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
794 my ($self, $chr_name, $start, $end, $strand) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
795
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
796 deprecate('Use map() instead.');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
797
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
798 return $self->map($chr_name, $start, $end, $strand,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
799 $self->assembled_CoordSystem());
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
800
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
801 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
802
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
803 =head2 list_contig_ids
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
804 DEPRECATED Use list_ids instead
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
805
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
806 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
807
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
808 sub list_contig_ids {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
809 my ($self, $chr_name, $start, $end) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
810
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
811 deprecate('Use list_ids() instead.');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
812
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
813 return $self->list_ids($chr_name, $start, $end,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
814 $self->assembled_CoordSystem());
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
815 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
816
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
817
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
818
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
819 1;