annotate variant_effect_predictor/Bio/EnsEMBL/AssemblyMapper.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::AssemblyMapper -
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 $ctg_cs = $cs_adaptor->fetch_by_name('contig');
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 @ctg_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.200.92341', 100, 10000, -1,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
45 $ctg_cs );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
46
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
47 # List contig names for a region of chromsome.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
48 @ctg_ids = $asm_mapper->list_ids( '13', 1_000_000, 1, $chr_cs );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
49
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
50 # List chromosome names for a contig region.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
51 @chr_ids =
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
52 $asm_mapper->list_ids( 'AL30421.1.200.92341', 1, 1000, -1,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
53 $ctg_cs );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
54
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
55 =head1 DESCRIPTION
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
56
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
57 The AssemblyMapper is a database aware mapper which faciliates
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
58 conversion of coordinates between any two coordinate systems with an
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
59 relationship explicitly defined in the assembly table. In the future
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
60 it may be possible to perform multiple step (implicit) mapping between
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
61 coordinate systems.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
62
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
63 It is implemented using the Bio::EnsEMBL::Mapper object, which is a
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
64 generic mapper object between disjoint coordinate systems.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
65
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
66 =head1 METHODS
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
67
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
68 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
69
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
70
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
71 package Bio::EnsEMBL::AssemblyMapper;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
72
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
73 use strict;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
74 use warnings;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
75
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
76 use Bio::EnsEMBL::Mapper;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
77 use Bio::EnsEMBL::Utils::Exception qw(throw deprecate);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
78 use Scalar::Util qw(weaken);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
79
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
80 my $ASSEMBLED = 'assembled';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
81 my $COMPONENT = 'component';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
82
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
83 my $DEFAULT_MAX_PAIR_COUNT = 1000;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
84
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
85
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
86 =head2 new
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
87
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
88 Arg [1] : Bio::EnsEMBL::DBSQL::AssemblyMapperAdaptor
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
89 Arg [2] : Bio::EnsEMBL::CoordSystem $asm_cs
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
90 Arg [3] : Bio::EnsEMBL::CoordSystem $cmp_cs
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
91 Example : Should use AssemblyMapperAdaptor->fetch_by_CoordSystems()
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
92 Description: Creates a new AssemblyMapper
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
93 Returntype : Bio::EnsEMBL::DBSQL::AssemblyMapperAdaptor
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
94 Exceptions : Throws if multiple coord_systems are provided
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
95 Caller : AssemblyMapperAdaptor
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
96 Status : Stable
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
97
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
98 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
99
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
100 sub new {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
101 my ( $proto, $adaptor, @coord_systems ) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
102
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
103 my $class = ref($proto) || $proto;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
104
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
105 my $self = bless( {}, $class );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
106
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
107 $self->adaptor($adaptor);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
108
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
109 $adaptor->cache_seq_ids_with_mult_assemblys();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
110
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
111 if ( @coord_systems != 2 ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
112 throw( 'Can only map between two coordinate systems. '
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
113 . scalar(@coord_systems)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
114 . ' were provided' );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
115 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
116
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
117 # Set the component and assembled coordinate systems
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
118 $self->{'asm_cs'} = $coord_systems[0];
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
119 $self->{'cmp_cs'} = $coord_systems[1];
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
120
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
121 # We load the mapper calling the 'ASSEMBLED' the 'from' coord system
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
122 # and the 'COMPONENT' the 'to' coord system.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
123
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
124 $self->{'mapper'} = Bio::EnsEMBL::Mapper->new( $ASSEMBLED, $COMPONENT,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
125 $coord_systems[0], $coord_systems[1] );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
126
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
127 $self->{'max_pair_count'} = $DEFAULT_MAX_PAIR_COUNT;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
128
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
129 return $self;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
130 } ## end sub new
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
131
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
132 =head2 max_pair_count
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
133
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
134 Arg [1] : (optional) int $max_pair_count
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
135 Example : $mapper->max_pair_count(100000)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
136 Description: Getter/Setter for the number of mapping pairs allowed
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
137 in the internal cache. This can be used to override
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
138 the default value (1000) to tune the performance and
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
139 memory usage for certain scenarios. Higher value
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
140 means bigger cache, more memory used.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
141 Return type: int
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
142 Exceptions : None
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
143 Caller : General
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
144 Status : Stable
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
145
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
146 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
147
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
148 sub max_pair_count {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
149 my ( $self, $value ) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
150
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
151 if ( defined($value) ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
152 $self->{'max_pair_count'} = $value;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
153 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
154
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
155 return $self->{'max_pair_count'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
156 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
157
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
158 =head2 register_all
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
159
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
160 Arg [1] : None
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
161 Example : $mapper->max_pair_count(10e6);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
162 $mapper->register_all();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
163 Description: Pre-registers all assembly information in this
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
164 mapper. The cache size should be set to a
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
165 sufficiently large value so that all of the
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
166 information can be stored. This method is useful
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
167 when *a lot* of mapping will be done in regions
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
168 which are distributed around the genome. After
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
169 registration the mapper will consume a lot of memory
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
170 but will not have to perform any SQL and will be
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
171 faster.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
172 Return type: None
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
173 Exceptions : None
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
174 Caller : Specialised programs doing a lot of mapping.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
175 Status : Stable
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
176
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
177 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
178
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
179 sub register_all {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
180 my ($self) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
181
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
182 $self->adaptor()->register_all($self);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
183 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
184
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
185 =head2 map
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
186
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
187 Arg [1] : string $frm_seq_region
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
188 The name of the sequence region to transform FROM.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
189 Arg [2] : int $frm_start
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
190 The start of the region to transform FROM.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
191 Arg [3] : int $frm_end
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
192 The end of the region to transform FROM.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
193 Arg [4] : int $strand
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
194 The strand of the region to transform FROM.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
195 Arg [5] : Bio::EnsEMBL::CoordSystem
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
196 The coordinate system to transform FROM
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
197 Example : @coords =
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
198 $asm_mapper->map( 'X', 1_000_000, 2_000_000, 1,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
199 $chr_cs );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
200 Description: Transforms coordinates from one coordinate system to
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
201 another.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
202 Return type: List of Bio::EnsEMBL::Mapper::Coordinate and/or
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
203 Bio::EnsEMBL::Mapper:Gap objects.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
204 Exceptions : Throws if if the specified TO coordinat system is not
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
205 one of the coordinate systems associated with this
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
206 assembly mapper.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
207 Caller : General
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
208 Status : Stable
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
209
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
210 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
211
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
212 sub map {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
213 throw('Incorrect number of arguments.') if (!( @_ >= 6));
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
214
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
215 my ( $self, $frm_seq_region_name, $frm_start, $frm_end, $frm_strand,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
216 $frm_cs, $to_slice )
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
217 = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
218
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
219 my $mapper = $self->{'mapper'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
220 my $asm_cs = $self->{'asm_cs'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
221 my $cmp_cs = $self->{'cmp_cs'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
222 my $adaptor = $self->{'adaptor'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
223 my $frm;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
224
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
225
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
226 my $seq_region_id =
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
227 $self->adaptor()
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
228 ->seq_regions_to_ids( $frm_cs, [$frm_seq_region_name] )->[0];
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
229
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
230 # Speed critical section:
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
231 # Try to do simple pointer equality comparisons of the coord system
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
232 # objects first since this is likely to work most of the time and is
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
233 # much faster than a function call.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
234
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
235 if ( $frm_cs == $cmp_cs
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
236 || ( $frm_cs != $asm_cs && $frm_cs->equals($cmp_cs) ) )
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
237 {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
238 if ( !$self->{'cmp_register'}->{$seq_region_id} ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
239 $adaptor->register_component( $self, $seq_region_id );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
240 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
241 $frm = $COMPONENT;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
242
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
243 } elsif ( $frm_cs == $asm_cs || $frm_cs->equals($asm_cs) ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
244
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
245 # This can be probably be sped up some by only calling registered
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
246 # assembled if needed.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
247 $adaptor->register_assembled( $self, $seq_region_id, $frm_start,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
248 $frm_end );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
249 $frm = $ASSEMBLED;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
250
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
251 } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
252
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
253 throw(
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
254 sprintf( "Coordinate system %s %s is neither the assembled "
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
255 . "nor the component coordinate system "
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
256 . "of this AssemblyMapper",
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
257 $frm_cs->name(), $frm_cs->version() ) );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
258
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
259 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
260
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
261 return
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
262 $mapper->map_coordinates( $seq_region_id, $frm_start, $frm_end,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
263 $frm_strand, $frm );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
264 } ## end sub map
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
265
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
266
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
267 =head2 flush
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
268
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
269 Args : None
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
270 Example : None
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
271 Description: Remove all cached items from this AssemblyMapper.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
272 Return type: None
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
273 Exceptions : None
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
274 Caller : AssemblyMapperAdaptor
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
275 Status : Stable
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
276
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
277 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
278
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
279 sub flush {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
280 my ($self) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
281
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
282 $self->{'mapper'}->flush();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
283 $self->{'cmp_register'} = {};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
284 $self->{'asm_register'} = {};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
285 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
286
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
287 =head2 size
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
288
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
289 Args : None
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
290 Example : $num_of_pairs = $mapper->size();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
291 Description: Returns the number of pairs currently stored.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
292 Return type: int
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
293 Exceptions : None
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
294 Caller : General
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
295 Status : Stable
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
296
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
297 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
298
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
299 sub size {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
300 my ($self) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
301
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
302 return $self->{'mapper'}->{'pair_count'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
303 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
304
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
305 =head2 fastmap
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
306
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
307 Arg [1] : string $frm_seq_region
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
308 The name of the sequence region to transform FROM.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
309 Arg [2] : int $frm_start
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
310 The start of the region to transform FROM.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
311 Arg [3] : int $frm_end
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
312 The end of the region to transform FROM.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
313 Arg [4] : int $strand
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
314 The strand of the region to transform FROM.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
315 Arg [5] : Bio::EnsEMBL::CoordSystem
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
316 The coordinate system to transform FROM.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
317 Example : @coords =
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
318 $asm_mapper->map( 'X', 1_000_000, 2_000_000, 1,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
319 $chr_cs );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
320 Description: Transforms coordinates from one coordinate system to
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
321 another.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
322 Return type: List of Bio::EnsEMBL::Mapper::Coordinate and/or
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
323 Bio::EnsEMBL::Mapper:Gap objects.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
324 Exceptions : Throws if the specified TO coordinat system is not
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
325 one of the coordinate systems associated with this
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
326 assembly mapper.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
327 Caller : General
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
328 Status : Stable
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
329
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
330 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
331
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
332 sub fastmap {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
333 if ( @_ != 6 ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
334 throw('Incorrect number of arguments.');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
335 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
336
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
337 my ( $self, $frm_seq_region_name, $frm_start, $frm_end, $frm_strand,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
338 $frm_cs )
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
339 = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
340
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
341 my $mapper = $self->{'mapper'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
342 my $asm_cs = $self->{'asm_cs'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
343 my $cmp_cs = $self->{'cmp_cs'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
344 my $adaptor = $self->adaptor();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
345 my $frm;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
346
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
347 my @tmp;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
348 push @tmp, $frm_seq_region_name;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
349
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
350 my $seq_region_id =
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
351 $self->adaptor()->seq_regions_to_ids( $frm_cs, \@tmp )->[0];
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
352
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
353 # Speed critical section:
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
354 # Try to do simple pointer equality comparisons of the coord system
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
355 # objects first since this is likely to work most of the time and is
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
356 # much faster than a function call.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
357
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
358 if ( $frm_cs == $cmp_cs
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
359 || ( $frm_cs != $asm_cs && $frm_cs->equals($cmp_cs) ) )
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
360 {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
361
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
362 if ( !$self->{'cmp_register'}->{$seq_region_id} ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
363 $adaptor->register_component( $self, $seq_region_id );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
364 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
365 $frm = $COMPONENT;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
366
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
367 } elsif ( $frm_cs == $asm_cs || $frm_cs->equals($asm_cs) ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
368
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
369 # This can be probably be sped up some by only calling registered
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
370 # assembled if needed
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
371 $adaptor->register_assembled( $self, $seq_region_id, $frm_start,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
372 $frm_end );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
373 $frm = $ASSEMBLED;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
374
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
375 } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
376
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
377 throw(
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
378 sprintf( "Coordinate system %s %s is neither the assembled "
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
379 . "nor the component coordinate system "
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
380 . "of this AssemblyMapper",
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
381 $frm_cs->name(), $frm_cs->version() ) );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
382
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
383 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
384
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
385 return
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
386 $mapper->fastmap( $seq_region_id, $frm_start, $frm_end, $frm_strand,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
387 $frm );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
388 } ## end sub fastmap
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
389
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
390 =head2 list_ids
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
391
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
392 Arg [1] : string $frm_seq_region
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
393 The name of the sequence region of interest.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
394 Arg [2] : int $frm_start
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
395 The start of the region of interest.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
396 Arg [3] : int $frm_end
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
397 The end of the region to transform of interest.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
398 Arg [5] : Bio::EnsEMBL::CoordSystem $frm_cs
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
399 The coordinate system to obtain overlapping IDs of.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
400 Example : foreach my $id (
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
401 $asm_mapper->list_ids( 'X', 1, 1000, $ctg_cs ) )
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
402 { ... }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
403 Description: Retrieves a list of overlapping seq_region names of
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
404 another coordinate system. This is the same as the
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
405 list_ids method but uses seq_region names rather
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
406 internal IDs.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
407 Return type: List of strings.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
408 Exceptions : None
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
409 Caller : General
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
410 Status : Stable
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
411
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
412 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
413
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
414 sub list_ids {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
415 if ( @_ != 5 ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
416 throw('Incorrect number of arguments.');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
417 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
418
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
419 my ( $self, $frm_seq_region_name, $frm_start, $frm_end, $frm_cs ) =
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
420 @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
421
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
422 my @tmp = ($frm_seq_region_name);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
423
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
424 my $seq_region_id =
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
425 $self->adaptor()->seq_regions_to_ids( $frm_cs, \@tmp )->[0];
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
426
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
427 if ( $frm_cs->equals( $self->component_CoordSystem() ) ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
428
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
429 if ( !$self->have_registered_component($seq_region_id) ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
430 $self->adaptor->register_component( $self, $seq_region_id );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
431 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
432
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
433 # Pull out the 'from' identifiers of the mapper pairs. The we
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
434 # loaded the assembled side as the 'from' side in the constructor.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
435
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
436 return
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
437 map ( { $_->from()->id() }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
438 $self->mapper()->list_pairs(
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
439 $seq_region_id, $frm_start, $frm_end, $COMPONENT
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
440 ) );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
441
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
442 } elsif ( $frm_cs->equals( $self->assembled_CoordSystem() ) ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
443
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
444 $self->adaptor->register_assembled( $self, $seq_region_id,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
445 $frm_start, $frm_end );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
446
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
447 # Pull out the 'to' identifiers of the mapper pairs we loaded the
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
448 # component side as the 'to' coord system in the constructor.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
449
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
450 return
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
451 map ( { $_->to->id() }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
452 $self->mapper()->list_pairs(
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
453 $seq_region_id, $frm_start, $frm_end, $ASSEMBLED
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
454 ) );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
455
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
456 } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
457
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
458 throw(
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
459 sprintf( "Coordinate system %s %s is neither the assembled "
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
460 . "nor the component coordinate system "
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
461 . "of this AssemblyMapper",
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
462 $frm_cs->name(), $frm_cs->version() ) );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
463
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
464 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
465 } ## end sub list_ids
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
466
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
467 #sub list_seq_regions {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
468 # throw('Incorrect number of arguments.') if(@_ != 5);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
469 # my($self, $frm_seq_region_name, $frm_start, $frm_end, $frm_cs) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
470
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
471 # if($frm_cs->equals($self->component_CoordSystem())) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
472
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
473 # if(!$self->have_registered_component($seq_region_id)) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
474 # $self->adaptor->register_component($self,$seq_region_id);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
475 # }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
476
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
477 # #pull out the 'from' identifiers of the mapper pairs. The
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
478 # #we loaded the assembled side as the 'from' side in the constructor
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
479 # return
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
480 # map {$_->from()->id()}
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
481 # $self->mapper()->list_pairs($seq_region_id, $frm_start,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
482 # $frm_end, $COMPONENT);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
483
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
484 # } elsif($frm_cs->equals($self->assembled_CoordSystem())) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
485
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
486 # $self->adaptor->register_assembled($self,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
487 # $frm_seq_region,$frm_start,$frm_end);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
488
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
489 # #pull out the 'to' identifiers of the mapper pairs
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
490 # #we loaded the component side as the 'to' coord system in the constructor
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
491 # return
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
492 # map {$_->to->id()}
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
493 # $self->mapper()->list_pairs($frm_seq_region, $frm_start,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
494 # $frm_end, $ASSEMBLED);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
495 # } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
496 # throw("Coordinate system " . $frm_cs->name . " " . $frm_cs->version .
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
497 # " is neither the assembled nor the component coordinate system " .
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
498 # " of this AssemblyMapper");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
499 # }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
500 #}
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
501
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
502
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
503 =head2 list_seq_regions
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
504
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
505 Arg [1] : string $frm_seq_region
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
506 The name of the sequence region of interest.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
507 Arg [2] : int $frm_start
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
508 The start of the region of interest.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
509 Arg [3] : int $frm_end
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
510 The end of the region to transform of interest.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
511 Arg [5] : Bio::EnsEMBL::CoordSystem $frm_cs
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
512 The coordinate system to obtain overlapping IDs of.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
513 Example : foreach my $id (
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
514 $asm_mapper->list_seq_regions(
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
515 'X', 1, 1000, $chr_cs
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
516 ) ) { ... }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
517 Description: Retrieves a list of overlapping seq_region internal
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
518 identifiers of another coordinate system. This is
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
519 the same as the list_seq_regions method but uses
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
520 internal identfiers rather than seq_region strings.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
521 Return type: List of ints.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
522 Exceptions : None
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
523 Caller : General
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
524 Status : Stable
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
525
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
526 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
527
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
528 sub list_seq_regions {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
529 if ( @_ != 5 ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
530 throw('Incorrect number of arguments.');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
531 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
532
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
533 my ( $self, $frm_seq_region, $frm_start, $frm_end, $frm_cs ) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
534
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
535 # Retrieve the seq_region names.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
536
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
537 my @seq_ids =
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
538 $self->list_ids( $frm_seq_region, $frm_start, $frm_end, $frm_cs );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
539
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
540 # The seq_regions are from the 'to' coordinate system not the from
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
541 # coordinate system we used to obtain them.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
542
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
543 my $to_cs;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
544 if ( $frm_cs->equals( $self->assembled_CoordSystem() ) ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
545 $to_cs = $self->component_CoordSystem();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
546 } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
547 $to_cs = $self->assembled_CoordSystem();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
548 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
549
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
550 # Convert them to IDs.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
551 return @{ $self->adaptor()->seq_ids_to_regions( \@seq_ids ) };
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
552 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
553
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
554 #sub list_ids {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
555 # throw('Incorrect number of arguments.') if(@_ != 5);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
556 # my($self, $frm_seq_region, $frm_start, $frm_end, $frm_cs) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
557
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
558 # #retrieve the seq_region names
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
559 # my @seq_regs =
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
560 # $self->list_seq_regions($frm_seq_region,$frm_start,$frm_end,$frm_cs);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
561
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
562 # #The seq_regions are from the 'to' coordinate system not the
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
563 # #from coordinate system we used to obtain them
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
564 # my $to_cs;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
565 # if($frm_cs->equals($self->assembled_CoordSystem())) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
566 # $to_cs = $self->component_CoordSystem();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
567 # } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
568 # $to_cs = $self->assembled_CoordSystem();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
569 # }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
570
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
571 # #convert them to ids
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
572 # return @{$self->adaptor()->seq_regions_to_ids($to_cs, \@seq_regs)};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
573 #}
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
574
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
575 =head2 have_registered_component
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
576
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
577 Arg [1] : string $cmp_seq_region
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
578 The name of the sequence region to check for
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
579 registration.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
580 Example : if ( $asm_mapper->have_registered_component('AL240214.1') ) {}
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
581 Description: Returns true if a given component region has
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
582 been registered with this assembly mapper. This
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
583 should only be called by this class or the
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
584 AssemblyMapperAdaptor. In other words, do not use
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
585 this method unless you really know what you are
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
586 doing.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
587 Return type: Boolean (0 or 1)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
588 Exceptions : Throws on incorrect arguments.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
589 Caller : Internal, AssemblyMapperAdaptor
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
590 Status : Stable
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
591
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
592 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
593
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
594 sub have_registered_component {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
595 my ( $self, $cmp_seq_region ) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
596
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
597 if ( !defined($cmp_seq_region) ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
598 throw('cmp_seq_region argument is required');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
599 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
600
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
601 if ( exists( $self->{'cmp_register'}->{$cmp_seq_region} ) ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
602 return 1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
603 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
604
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
605 return 0;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
606 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
607
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
608 =head2 have_registered_assembled
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
609
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
610 Arg [1] : string $asm_seq_region
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
611 The name of the sequence region to check for
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
612 registration.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
613 Arg [2] : int $chunk_id
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
614 The chunk number of the provided seq_region to check
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
615 for registration.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
616 Example : if ( $asm_mapper->have_registered_component( 'X', 9 ) ) { }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
617 Description: Returns true if a given assembled region chunk
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
618 has been registered with this assembly mapper.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
619 This should only be called by this class or the
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
620 AssemblyMapperAdaptor. In other words, do not use
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
621 this method unless you really know what you are
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
622 doing.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
623 Return type: Boolean (0 or 1)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
624 Exceptions : Throws on incorrect arguments
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
625 Caller : Internal, AssemblyMapperAdaptor
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
626 Status : Stable
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
627
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
628 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
629
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
630 sub have_registered_assembled {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
631 my ( $self, $asm_seq_region, $chunk_id ) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
632
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
633 if ( !defined($asm_seq_region) ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
634 throw('asm_seq_region argument is required');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
635 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
636 if ( !defined($chunk_id) ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
637 throw('chunk_id is required');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
638 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
639
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
640 if (
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
641 exists( $self->{'asm_register'}->{$asm_seq_region}->{$chunk_id} ) )
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
642 {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
643 return 1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
644 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
645
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
646 return 0;
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 =head2 register_component
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
651
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
652 Arg [1] : integer $cmp_seq_region
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
653 The dbID of the component sequence region to
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
654 register.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
655 Example : $asm_mapper->register_component('AL312341.1');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
656 Description: Flags a given component sequence region as registered
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
657 in this assembly mapper. This should only be called
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
658 by this class or the AssemblyMapperAdaptor.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
659 Return type: None
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
660 Exceptions : Throws on incorrect arguments
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
661 Caller : Internal, AssemblyMapperAdaptor
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
662 Status : Stable
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
663
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
664 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
665
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
666 sub register_component {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
667 my ( $self, $cmp_seq_region ) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
668
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
669 if ( !defined($cmp_seq_region) ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
670 throw('cmp_seq_region argument is required');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
671 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
672
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
673 $self->{'cmp_register'}->{$cmp_seq_region} = 1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
674 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
675
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
676 =head2 register_assembled
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
677
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
678 Arg [1] : integer $asm_seq_region
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
679 The dbID of the sequence region to register.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
680 Arg [2] : int $chunk_id
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
681 The chunk number of the provided seq_region to register.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
682 Example : $asm_mapper->register_assembled( 'X', 4 );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
683 Description: Flags a given assembled region as registered in this
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
684 assembly mapper. This should only be called by this
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
685 class or the AssemblyMapperAdaptor. Do not call this
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
686 method unless you really know what you are doing.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
687 Return type: None
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
688 Exceptions : Throws on incorrect arguments
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
689 Caller : Internal, AssemblyMapperAdaptor
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
690 Status : Stable
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
691
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
692 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
693
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
694 sub register_assembled {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
695 my ( $self, $asm_seq_region, $chunk_id ) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
696
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
697 if ( !defined($asm_seq_region) ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
698 throw('asm_seq_region argument is required');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
699 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
700 if ( !defined($chunk_id) ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
701 throw('chunk_id srgument is required');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
702 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
703
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
704 $self->{'asm_register'}->{$asm_seq_region}->{$chunk_id} = 1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
705 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
706
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
707 =head2 mapper
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
708
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
709 Arg [1] : None
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
710 Example : $mapper = $asm_mapper->mapper();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
711 Description: Retrieves the internal mapper used by this Assembly
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
712 Mapper. This is unlikely to be useful unless you
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
713 _really_ know what you are doing.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
714 Return type: Bio::EnsEMBL::Mapper
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
715 Exceptions : None
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
716 Caller : Internal, AssemblyMapperAdaptor
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
717 Status : Stable
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
718
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
719 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
720
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
721 sub mapper {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
722 my ($self) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
723
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
724 return $self->{'mapper'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
725 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
726
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
727 =head2 assembled_CoordSystem
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
728
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
729 Arg [1] : None
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
730 Example : $cs = $asm_mapper->assembled_CoordSystem();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
731 Description: Retrieves the assembled CoordSystem from this
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
732 assembly mapper.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
733 Return type: Bio::EnsEMBL::CoordSystem
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
734 Exceptions : None
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
735 Caller : Internal, AssemblyMapperAdaptor
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
736 Status : Stable
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
737
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
738 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
739
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
740 sub assembled_CoordSystem {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
741 my ($self) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
742
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
743 return $self->{'asm_cs'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
744 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
745
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
746 =head2 component_CoordSystem
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
747
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
748 Arg [1] : None
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
749 Example : $cs = $asm_mapper->component_CoordSystem();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
750 Description: Retrieves the component CoordSystem from this
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
751 assembly mapper.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
752 Return type: Bio::EnsEMBL::CoordSystem
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
753 Exceptions : None
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
754 Caller : Internal, AssemblyMapperAdaptor
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
755 Status : Stable
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
756
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
757 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
758
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
759 sub component_CoordSystem {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
760 my ($self) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
761
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
762 return $self->{'cmp_cs'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
763 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
764
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
765 =head2 adaptor
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
766
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
767 Arg [1] : Bio::EnsEMBL::DBSQL::AssemblyMapperAdaptor $adaptor
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
768 Description: Getter/set terfor this object's database adaptor.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
769 Returntype : Bio::EnsEMBL::DBSQL::AssemblyMapperAdaptor
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
770 Exceptions : None
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
771 Caller : General
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
772 Status : Stable
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 adaptor {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
777 my ( $self, $value ) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
778
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
779 if ( defined($value) ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
780 weaken($self->{'adaptor'} = $value);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
781 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
782
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
783 return $self->{'adaptor'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
784 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
785
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
786 =head2 in_assembly
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
787
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
788 Description: DEPRECATED, use map() or list_ids() instead.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
789
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
790 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
791
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
792 sub in_assembly {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
793 my ( $self, $object ) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
794
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
795 deprecate('Use map() or list_ids() instead.');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
796
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
797 my $csa = $self->db->get_CoordSystemAdaptor();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
798
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
799 my $top_level = $csa->fetch_top_level();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
800
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
801 my $asma =
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
802 $self->adaptor->fetch_by_CoordSystems( $object->coord_system(),
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
803 $top_level );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
804
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
805 my @list = $asma->list_ids( $object->seq_region(),
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
806 $object->start(),
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
807 $object->end(),
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
808 $object->coord_system() );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
809
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
810 return ( @list > 0 );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
811 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
812
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
813 =head2 map_coordinates_to_assembly
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
814
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
815 Description: DEPRECATED, use map() instead.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
816
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
817 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
818
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
819 sub map_coordinates_to_assembly {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
820 my ( $self, $contig_id, $start, $end, $strand ) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
821
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
822 deprecate('Use map() instead.');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
823
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
824 # Not sure if contig_id is seq_region_id or name...
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
825 return
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
826 $self->map( $contig_id, $start, $end, $strand,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
827 $self->contig_CoordSystem() );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
828
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
829 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
830
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
831 =head2 fast_to_assembly
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
832
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
833 Description: DEPRECATED, use map() instead.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
834
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
835 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
836
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
837 sub fast_to_assembly {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
838 my ( $self, $contig_id, $start, $end, $strand ) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
839
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
840 deprecate('Use map() instead.');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
841
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
842 # Not sure if contig_id is seq_region_id or name...
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
843 return
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
844 $self->map( $contig_id, $start, $end, $strand,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
845 $self->contig_CoordSystem() );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
846 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
847
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
848 =head2 map_coordinates_to_rawcontig
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
849
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
850 Description: DEPRECATED, use map() instead.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
851
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
852 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
853
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
854 sub map_coordinates_to_rawcontig {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
855 my ( $self, $chr_name, $start, $end, $strand ) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
856
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
857 deprecate('Use map() instead.');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
858
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
859 return
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
860 $self->map( $chr_name, $start, $end, $strand,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
861 $self->assembled_CoordSystem() );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
862 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
863
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
864 =head2 list_contig_ids
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
865
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
866 Description: DEPRECATED, use list_ids() instead.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
867
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
868 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
869
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
870 sub list_contig_ids {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
871 my ( $self, $chr_name, $start, $end ) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
872
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
873 deprecate('Use list_ids() instead.');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
874
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
875 return
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
876 $self->list_ids( $chr_name, $start, $end,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
877 $self->assembled_CoordSystem() );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
878 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
879
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
880 1;