annotate variant_effect_predictor/Bio/EnsEMBL/Compara/GenomicAlignBlock.pm @ 1:d6778b5d8382 draft default tip

Deleted selected files
author willmclaren
date Fri, 03 Aug 2012 10:05:43 -0400
parents 21066c0abaf5
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1 =head1 LICENSE
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
3 Copyright (c) 1999-2012 The European Bioinformatics Institute and
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
4 Genome Research Limited. All rights reserved.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
5
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
6 This software is distributed under a modified Apache license.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
7 For license details, please see
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
8
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
9 http://www.ensembl.org/info/about/code_licence.html
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
10
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
11 =head1 CONTACT
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
12
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
13 Please email comments or questions to the public Ensembl
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
14 developers list at <dev@ensembl.org>.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
15
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
16 Questions may also be sent to the Ensembl help desk at
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
17 <helpdesk@ensembl.org>.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
18
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
19 =head1 NAME
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
20
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
21 Bio::EnsEMBL::Compara::GenomicAlignBlock - Alignment of two or more pieces of genomic DNA
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
22
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
23 =head1 SYNOPSIS
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
24
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
25 use Bio::EnsEMBL::Compara::GenomicAlignBlock;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
26
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
27 my $genomic_align_block = new Bio::EnsEMBL::Compara::GenomicAlignBlock(
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
28 -adaptor => $genomic_align_block_adaptor,
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
29 -method_link_species_set => $method_link_species_set,
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
30 -score => 56.2,
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
31 -length => 1203,
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
32 -genomic_align_array => [$genomic_align1, $genomic_align2...]
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
33 );
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
34
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
35 SET VALUES
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
36 $genomic_align_block->adaptor($gen_ali_blk_adaptor);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
37 $genomic_align_block->dbID(12);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
38 $genomic_align_block->method_link_species_set($method_link_species_set);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
39 $genomic_align_block->reference_genomic_align_id(35123);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
40 $genomic_align_block->genomic_align_array([$genomic_align1, $genomic_align2]);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
41 $genomic_align_block->reference_slice($reference_slice);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
42 $genomic_align_block->reference_slice_start(1035);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
43 $genomic_align_block->reference_slice_end(1283);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
44 $genomic_align_block->score(56.2);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
45 $genomic_align_block->length(562);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
46
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
47 GET VALUES
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
48 my $genomic_align_block_adaptor = $genomic_align_block->adaptor();
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
49 my $dbID = $genomic_align_block->dbID();
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
50 my $method_link_species_set = $genomic_align_block->method_link_species_set;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
51 my $genomic_aligns = $genomic_align_block->genomic_align_array();
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
52 my $reference_genomic_align = $genomic_align_block->reference_genomic_align();
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
53 my $non_reference_genomic_aligns = $genomic_align_block->get_all_non_reference_genomic_aligns();
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
54 my $reference_slice = $genomic_align_block->reference_slice();
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
55 my $reference_slice_start = $genomic_align_block->reference_slice_start();
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
56 my $reference_slice_end = $genomic_align_block->reference_slice_end();
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
57 my $score = $genomic_align_block->score();
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
58 my $length = $genomic_align_block->length;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
59 my alignment_strings = $genomic_align_block->alignment_strings;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
60 my $genomic_align_block_is_on_the_original_strand =
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
61 $genomic_align_block->get_original_strand;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
62
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
63 =head1 DESCRIPTION
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
64
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
65 The GenomicAlignBlock object stores information about an alignment comprising of two or more pieces of genomic DNA.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
66
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
67
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
68 =head1 OBJECT ATTRIBUTES
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
69
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
70 =over
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
71
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
72 =item dbID
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
73
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
74 corresponds to genomic_align_block.genomic_align_block_id
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
75
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
76 =item adaptor
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
77
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
78 Bio::EnsEMBL::Compara::DBSQL::GenomicAlignBlockAdaptor object to access DB
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
79
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
80 =item method_link_species_set_id
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
81
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
82 corresponds to method_link_species_set.method_link_species_set_id (external ref.)
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
83
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
84 =item method_link_species_set
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
85
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
86 Bio::EnsEMBL::Compara::MethodLinkSpeciesSet object corresponding to method_link_species_set_id
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
87
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
88 =item score
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
89
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
90 corresponds to genomic_align_block.score
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
91
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
92 =item perc_id
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
93
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
94 corresponds to genomic_align_block.perc_id
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
95
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
96 =item length
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
97
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
98 corresponds to genomic_align_block.length
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
99
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
100 =item group_id
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
101
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
102 corresponds to the genomic_align_block.group_id
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
103
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
104 =item reference_genomic_align_id
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
105
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
106 When looking for genomic alignments in a given slice or dnafrag, the
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
107 reference_genomic_align corresponds to the Bio::EnsEMBL::Compara::GenomicAlign
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
108 included in the starting slice or dnafrag. The reference_genomic_align_id is
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
109 the dbID corresponding to the reference_genomic_align. All remaining
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
110 Bio::EnsEMBL::Compara::GenomicAlign objects included in the
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
111 Bio::EnsEMBL::Compara::GenomicAlignBlock are the non_reference_genomic_aligns.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
112
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
113 =item reference_genomic_align
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
114
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
115 Bio::EnsEMBL::Compara::GenomicAling object corresponding to reference_genomic_align_id
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
116
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
117 =item genomic_align_array
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
118
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
119 listref of Bio::EnsEMBL::Compara::GenomicAlign objects corresponding to this
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
120 Bio::EnsEMBL::Compara::GenomicAlignBlock object
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
121
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
122 =item reference_slice
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
123
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
124 This is the Bio::EnsEMBL::Slice object used as argument to the
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
125 Bio::EnsEMBL::Compara::DBSQL::GenomicAlignBlockAdaptor->fetch_all_by_Slice method.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
126
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
127 =item reference_slice_start
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
128
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
129 starting position in the coordinates system defined by the reference_slice
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
130
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
131 =item reference_slice_end
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
132
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
133 ending position in the coordinates system defined by the reference_slice
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
134
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
135 =back
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
136
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
137 =head1 APPENDIX
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
138
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
139 The rest of the documentation details each of the object methods. Internal methods are usually preceded with a _
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
140
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
141 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
142
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
143
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
144 # Let the code begin...
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
145
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
146
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
147 package Bio::EnsEMBL::Compara::GenomicAlignBlock;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
148 use strict;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
149
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
150 # Object preamble
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
151 use Bio::EnsEMBL::Utils::Argument qw(rearrange);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
152 use Bio::EnsEMBL::Utils::Exception qw(throw warning info deprecate verbose);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
153 use Bio::EnsEMBL::Compara::GenomicAlign;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
154 use Bio::SimpleAlign;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
155 use Bio::EnsEMBL::Compara::BaseGenomicAlignSet;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
156
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
157 our @ISA = qw(Bio::EnsEMBL::Compara::BaseGenomicAlignSet);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
158
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
159 =head2 new (CONSTRUCTOR)
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
160
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
161 Arg [-DBID] : (opt.) int $dbID (the database internal ID for this object)
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
162 Arg [-ADAPTOR]
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
163 : (opt.) Bio::EnsEMBL::Compara::DBSQL::GenomicAlignBlockAdaptor $adaptor
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
164 (the adaptor for connecting to the database)
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
165 Arg [-METHOD_LINK_SPECIES_SET]
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
166 : (opt.) Bio::EnsEMBL::Compara::MethodLinkSpeciesSet $mlss
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
167 (this defines the type of alignment and the set of species used
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
168 to get this GenomicAlignBlock)
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
169 Arg [-METHOD_LINK_SPECIES_SET_ID]
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
170 : (opt.) int $mlss_id (the database internal ID for the $mlss)
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
171 Arg [-SCORE]: (opt.) float $score (the score of this alignment)
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
172 Arg [-PERC_ID]
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
173 : (opt.) int $perc_id (the percentage of identity, only used for pairwise)
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
174 Arg [-LENGTH]
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
175 : (opt.) int $length (the length of this alignment, taking into account
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
176 gaps and all)
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
177 Arg [-GROUP_ID]
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
178 : (opt.) int $group)id (the group ID for this alignment)
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
179 Arg [-REFERENCE_GENOMIC_ALIGN]
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
180 : (opt.) Bio::EnsEMBL::Compara::GenomicAlign $reference_genomic_align (the
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
181 Bio::EnsEMBL::Compara::GenomicAlign corresponding to the requesting
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
182 Bio::EnsEMBL::Compara::DnaFrag or Bio::EnsEMBL::Slice when this
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
183 Bio::EnsEMBL::Compara::GenomicAlignBlock has been fetched from a
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
184 Bio::EnsEMBL::Compara::DnaFrag or a Bio::EnsEMBL::Slice)
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
185 Arg [-REFERENCE_GENOMIC_ALIGN_ID]
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
186 : (opt.) int $reference_genomic_align (the database internal ID of the
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
187 $reference_genomic_align)
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
188 Arg [-GENOMIC_ALIGN_ARRAY]
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
189 : (opt.) array_ref $genomic_aligns (a reference to the array of
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
190 Bio::EnsEMBL::Compara::GenomicAlign objects corresponding to this
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
191 Bio::EnsEMBL::Compara::GenomicAlignBlock object)
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
192 Example : my $genomic_align_block =
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
193 new Bio::EnsEMBL::Compara::GenomicAlignBlock(
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
194 -adaptor => $gaba,
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
195 -method_link_species_set => $method_link_species_set,
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
196 -score => 56.2,
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
197 -length => 1203,
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
198 -group_id => 1234,
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
199 -genomic_align_array => [$genomic_align1, $genomic_align2...]
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
200 );
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
201 Description: Creates a new GenomicAlignBlock object
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
202 Returntype : Bio::EnsEMBL::Compara::DBSQL::GenomicAlignBlock
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
203 Exceptions : none
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
204 Caller : general
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
205 Status : Stable
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
206
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
207 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
208
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
209 sub new {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
210 my($class, @args) = @_;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
211
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
212 my $self = {};
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
213 bless $self,$class;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
214
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
215 my ($adaptor, $dbID, $method_link_species_set, $method_link_species_set_id,
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
216 $score, $perc_id, $length, $group_id, $level_id, $reference_genomic_align, $reference_genomic_align_id,
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
217 $genomic_align_array, $starting_genomic_align_id, $ungapped_genomic_align_blocks) =
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
218 rearrange([qw(
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
219 ADAPTOR DBID METHOD_LINK_SPECIES_SET METHOD_LINK_SPECIES_SET_ID
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
220 SCORE PERC_ID LENGTH GROUP_ID LEVEL_ID REFERENCE_GENOMIC_ALIGN REFERENCE_GENOMIC_ALIGN_ID
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
221 GENOMIC_ALIGN_ARRAY STARTING_GENOMIC_ALIGN_ID UNGAPPED_GENOMIC_ALIGN_BLOCKS)],
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
222 @args);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
223
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
224 $self->{_original_strand} = 1;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
225
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
226 if (defined($ungapped_genomic_align_blocks)) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
227 return $self->_create_from_a_list_of_ungapped_genomic_align_blocks($ungapped_genomic_align_blocks);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
228 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
229 $self->adaptor($adaptor) if (defined ($adaptor));
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
230 $self->dbID($dbID) if (defined ($dbID));
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
231 $self->method_link_species_set($method_link_species_set) if (defined ($method_link_species_set));
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
232 $self->method_link_species_set_id($method_link_species_set_id)
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
233 if (defined ($method_link_species_set_id));
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
234 $self->score($score) if (defined ($score));
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
235 $self->perc_id($perc_id) if (defined ($perc_id));
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
236 $self->length($length) if (defined ($length));
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
237 $self->group_id($group_id) if (defined ($group_id));
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
238 $self->level_id($level_id) if (defined ($level_id));
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
239 $self->reference_genomic_align($reference_genomic_align)
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
240 if (defined($reference_genomic_align));
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
241 $self->reference_genomic_align_id($reference_genomic_align_id)
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
242 if (defined($reference_genomic_align_id));
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
243 $self->genomic_align_array($genomic_align_array) if (defined($genomic_align_array));
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
244
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
245 $self->starting_genomic_align_id($starting_genomic_align_id) if (defined($starting_genomic_align_id));
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
246
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
247 return $self;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
248 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
249
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
250 =head2 new_fast
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
251
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
252 Arg [1] : hash reference $hashref
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
253 Example : none
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
254 Description: This is an ultra fast constructor which requires knowledge of
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
255 the objects internals to be used.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
256 Returntype :
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
257 Exceptions : none
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
258 Caller :
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
259 Status : Stable
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
260
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
261 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
262
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
263 sub new_fast {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
264 my $class = shift;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
265 my $hashref = shift;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
266
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
267 return bless $hashref, $class;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
268 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
269
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
270
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
271 =head2 adaptor
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
272
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
273 Arg [1] : Bio::EnsEMBL::Compara::DBSQL::GenomicAlignBlockAdaptor $adaptor
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
274 Example : my $gen_ali_blk_adaptor = $genomic_align_block->adaptor();
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
275 Example : $genomic_align_block->adaptor($gen_ali_blk_adaptor);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
276 Description: Getter/Setter for the adaptor this object uses for database
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
277 interaction.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
278 Returntype : Bio::EnsEMBL::Compara::DBSQL::GenomicAlignBlockAdaptor object
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
279 Exceptions : thrown if $adaptor is not a
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
280 Bio::EnsEMBL::Compara::DBSQL::GenomicAlignBlockAdaptor object
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
281 Caller : general
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
282 Status : Stable
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
283
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
284 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
285
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
286 sub adaptor {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
287 my ($self, $adaptor) = @_;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
288
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
289 if (defined($adaptor)) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
290 throw("$adaptor is not a Bio::EnsEMBL::Compara::DBSQL::GenomicAlignBlockAdaptor object")
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
291 unless ($adaptor->isa("Bio::EnsEMBL::Compara::DBSQL::GenomicAlignBlockAdaptor"));
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
292 $self->{'adaptor'} = $adaptor;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
293 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
294
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
295 return $self->{'adaptor'};
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
296 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
297
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
298
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
299 =head2 dbID
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
300
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
301 Arg [1] : integer $dbID
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
302 Example : my $dbID = $genomic_align_block->dbID();
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
303 Example : $genomic_align_block->dbID(12);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
304 Description: Getter/Setter for the attribute dbID
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
305 Returntype : integer
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
306 Exceptions : none
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
307 Caller : general
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
308 Status : Stable
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
309
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
310 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
311
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
312 sub dbID {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
313 my ($self, $dbID) = @_;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
314
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
315 if (defined($dbID)) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
316 $self->{'dbID'} = $dbID;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
317 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
318
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
319 return $self->{'dbID'};
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
320 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
321
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
322
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
323 =head2 method_link_species_set
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
324
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
325 Arg [1] : Bio::EnsEMBL::Compara::MethodLinkSpeciesSet $method_link_species_set
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
326 Example : $method_link_species_set = $genomic_align_block->method_link_species_set;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
327 Example : $genomic_align_block->method_link_species_set($method_link_species_set);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
328 Description: get/set for attribute method_link_species_set. If no
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
329 argument is given, the method_link_species_set is not defined but
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
330 both the method_link_species_set_id and the adaptor are, it tries
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
331 to fetch the data using the method_link_species_set_id
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
332 Returntype : Bio::EnsEMBL::Compara::MethodLinkSpeciesSet object
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
333 Exceptions : thrown if $method_link_species_set is not a
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
334 Bio::EnsEMBL::Compara::MethodLinkSpeciesSet object
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
335 Caller : general
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
336 Status : Stable
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
337
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
338 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
339
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
340 sub method_link_species_set {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
341 my ($self, $method_link_species_set) = @_;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
342
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
343 if (defined($method_link_species_set)) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
344 throw("$method_link_species_set is not a Bio::EnsEMBL::Compara::MethodLinkSpeciesSet object")
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
345 unless ($method_link_species_set->isa("Bio::EnsEMBL::Compara::MethodLinkSpeciesSet"));
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
346 $self->{'method_link_species_set'} = $method_link_species_set;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
347 if ($self->{'method_link_species_set_id'}) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
348 $self->{'method_link_species_set_id'} = $self->{'method_link_species_set'}->dbID;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
349 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
350 ## Update the MethodLinkSpeciesSet for the GenomicAligns included in this GenomicAlignBlock
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
351 if (defined($self->{genomic_align_array})) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
352 foreach my $this_genomic_align (@{$self->{genomic_align_array}}) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
353 $this_genomic_align->method_link_species_set($method_link_species_set);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
354 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
355 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
356
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
357 } elsif (!defined($self->{'method_link_species_set'}) and defined($self->{'adaptor'})
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
358 and defined($self->method_link_species_set_id)) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
359 # Try to get object from ID. Use method_link_species_set_id function and not the attribute in the <if>
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
360 # clause because the attribute can be retrieved from other sources if it has not been already defined.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
361 my $mlssa = $self->adaptor->db->get_MethodLinkSpeciesSetAdaptor;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
362 $self->{'method_link_species_set'} = $mlssa->fetch_by_dbID($self->{'method_link_species_set_id'})
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
363 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
364
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
365 return $self->{'method_link_species_set'};
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
366 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
367
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
368
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
369 =head2 method_link_species_set_id
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
370
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
371 Arg [1] : integer $method_link_species_set_id
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
372 Example : $method_link_species_set_id = $genomic_align_block->method_link_species_set_id;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
373 Example : $genomic_align_block->method_link_species_set_id(3);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
374 Description: Getter/Setter for the attribute method_link_species_set_id. If no
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
375 argument is given, the method_link_species_set_id is not defined but
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
376 the method_link_species_set is, it tries to get the data from the
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
377 method_link_species_set object. If this fails, it tries to get and set
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
378 all the direct attributes from the database using the dbID of the
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
379 Bio::Ensembl::Compara::GenomicAlignBlock object.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
380 Returntype : integer
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
381 Exceptions : thrown if $method_link_species_set_id does not match a previously defined
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
382 method_link_species_set
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
383 Caller : object::methodname
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
384 Status : Stable
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
385
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
386 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
387
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
388 sub method_link_species_set_id {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
389 my ($self, $method_link_species_set_id) = @_;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
390
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
391 if (defined($method_link_species_set_id)) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
392 $self->{'method_link_species_set_id'} = $method_link_species_set_id;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
393 if (defined($self->{'method_link_species_set'}) and $self->{'method_link_species_set_id'}) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
394 $self->{'method_link_species_set'} = undef;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
395 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
396 ## Update the MethodLinkSpeciesSet for the GenomicAligns included in this GenomicAlignBlock
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
397 if (defined($self->{genomic_align_array})) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
398 foreach my $this_genomic_align (@{$self->{genomic_align_array}}) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
399 $this_genomic_align->method_link_species_set_id($method_link_species_set_id);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
400 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
401 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
402
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
403 } elsif (!($self->{'method_link_species_set_id'})) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
404 # Try to get the ID from other sources...
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
405 if (defined($self->{'method_link_species_set'})) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
406 # ...from the object
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
407 $self->{'method_link_species_set_id'} = $self->{'method_link_species_set'}->dbID;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
408 } elsif (defined($self->{'adaptor'}) and defined($self->dbID)) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
409 # ...from the database, using the dbID of the Bio::Ensembl::Compara::GenomicAlignBlock object
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
410 $self->adaptor->retrieve_all_direct_attributes($self);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
411 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
412 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
413
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
414 return $self->{'method_link_species_set_id'};
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
415 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
416
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
417 =head2 starting_genomic_align_id (DEPRECATED)
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
418
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
419 DEPRECATED! Use Bio::EnsEMBL::Compara::GenomicAlignBlock->reference_genomic_align_id() method instead
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
420
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
421 Arg [1] : integer $reference_genomic_align_id
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
422 Example : $genomic_align_block->starting_genomic_align_id(4321);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
423 Description: set for attribute reference_genomic_align_id. A value of 0 will set the
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
424 reference_genomic_align_id attribute to undef. When looking for genomic
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
425 alignments in a given slice or dnafrag, the reference_genomic_align
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
426 corresponds to the Bio::EnsEMBL::Compara::GenomicAlign included in the
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
427 starting slice or dnafrag. The reference_genomic_align_id is the dbID
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
428 corresponding to the reference_genomic_align. All remaining
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
429 Bio::EnsEMBL::Compara::GenomicAlign objects included in the
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
430 Bio::EnsEMBL::Compara::GenomicAlignBlock are the non_reference_genomic_aligns.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
431 Returntype : none
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
432 Exceptions : throw if $reference_genomic_align_id id not a postive number
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
433 Caller : $genomic_align_block->starting_genomic_align_id(int)
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
434
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
435 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
436
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
437 sub starting_genomic_align_id {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
438 my $self = shift;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
439 deprecate("Use Bio::EnsEMBL::Compara::GenomicAlignBlock->reference_genomic_align_id() method instead");
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
440 return $self->reference_genomic_align_id(@_);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
441 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
442
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
443 =head2 starting_genomic_align (DEPRECATED)
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
444
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
445 DEPRECATED! Use Bio::EnsEMBL::Compara::GenomicAlignBlock->reference_genomic_align() method instead
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
446
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
447 Arg [1] : (none)
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
448 Example : $genomic_align = $genomic_align_block->starting_genomic_align();
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
449 Description: get the reference_genomic_align. When looking for genomic alignments in
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
450 a given slice or dnafrag, the reference_genomic_align corresponds to the
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
451 Bio::EnsEMBL::Compara::GenomicAlign included in the starting slice or
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
452 dnafrag. The reference_genomic_align_id is the dbID corresponding to the
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
453 reference_genomic_align. All remaining Bio::EnsEMBL::Compara::GenomicAlign
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
454 objects included in the Bio::EnsEMBL::Compara::GenomicAlignBlock are the
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
455 non_reference_genomic_aligns.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
456 Returntype : Bio::EnsEMBL::Compara::GenomicAlign object
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
457 Exceptions : warns if no reference_genomic_align_id has been set and returns a ref.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
458 to an empty array
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
459 Exceptions : warns if no genomic_align_array has been set and returns a ref.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
460 to an empty array
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
461 Exceptions : throw if reference_genomic_align_id does not match any of the
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
462 Bio::EnsEMBL::Compara::GenomicAlign objects in the genomic_align_array
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
463 Caller : $genomic_align_block->starting_genomic_align()
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
464
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
465 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
466
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
467 sub starting_genomic_align {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
468 my $self = shift;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
469 deprecate("Use Bio::EnsEMBL::Compara::GenomicAlignBlock->reference_genomic_align() method instead");
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
470 return $self->reference_genomic_align(@_);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
471 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
472
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
473
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
474 =head2 resulting_genomic_aligns
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
475
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
476 DEPRECATED! Use Bio::EnsEMBL::Compara::GenomicAlignBlock->get_all_non_reference_genomic_align()
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
477 method instead
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
478
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
479 Arg [1] : (none)
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
480 Example : $genomic_aligns = $genomic_align_block->resulting_genomic_aligns();
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
481 Description: get the all the non_reference_genomic_aligns. When looking for genomic
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
482 alignments in a given slice or dnafrag, the reference_genomic_align
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
483 corresponds to the Bio::EnsEMBL::Compara::GenomicAlign included in the
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
484 reference slice or dnafrag. The reference_genomic_align_id is the dbID
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
485 corresponding to the reference_genomic_align. All remaining
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
486 Bio::EnsEMBL::Compara::GenomicAlign objects included in the
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
487 Bio::EnsEMBL::Compara::GenomicAlignBlock are the
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
488 non_reference_genomic_aligns.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
489 Returntype : a ref. to an array of Bio::EnsEMBL::Compara::GenomicAlign objects
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
490 Exceptions : warns if no reference_genomic_align_id has been set and returns a ref.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
491 to an empty array
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
492 Exceptions : warns if no genomic_align_array has been set and returns a ref.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
493 to an empty array
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
494 Caller : $genomic_align_block->resulting_genomic_aligns()
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
495
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
496 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
497
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
498 sub resulting_genomic_aligns {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
499 my ($self) = @_;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
500 deprecate("Use Bio::EnsEMBL::Compara::GenomicAlignBlock->get_all_non_reference_genomic_aligns() method instead");
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
501 return $self->get_all_non_reference_genomic_aligns(@_);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
502 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
503
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
504
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
505 =head2 reference_genomic_align
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
506
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
507 Arg [1] : (optional) Bio::EnsEMBL::Compara::GenomicAlign $reference_genomic_align
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
508 Example : $genomic_align_block->reference_genomic_align($reference_genomic_align);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
509 Example : $genomic_align = $genomic_align_block->reference_genomic_align();
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
510 Description: get/set the reference_genomic_align. When looking for genomic alignments in
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
511 a given slice or dnafrag, the reference_genomic_align corresponds to the
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
512 Bio::EnsEMBL::Compara::GenomicAlign included in the starting slice or
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
513 dnafrag. The reference_genomic_align_id is the dbID corresponding to the
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
514 reference_genomic_align. All remaining Bio::EnsEMBL::Compara::GenomicAlign
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
515 objects included in the Bio::EnsEMBL::Compara::GenomicAlignBlock are the
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
516 non_reference_genomic_aligns.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
517 Synchronises reference_genomic_align and reference_genomic_align_id
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
518 attributes.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
519 Returntype : Bio::EnsEMBL::Compara::GenomicAlign object
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
520 Exceptions : throw if reference_genomic_align is not a Bio::EnsEMBL::Compara::GenomicAlign
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
521 object
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
522 Exceptions : throw if reference_genomic_align_id does not match any of the
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
523 Bio::EnsEMBL::Compara::GenomicAlign objects in the genomic_align_array
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
524 Caller : $genomic_align_block->reference_genomic_align()
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
525 Status : Stable
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
526
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
527 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
528
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
529 sub reference_genomic_align {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
530 my ($self, $reference_genomic_align) = @_;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
531
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
532 if (defined($reference_genomic_align)) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
533 throw("[$reference_genomic_align] must be a Bio::EnsEMBL::Compara::GenomicAlign object")
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
534 unless($reference_genomic_align and ref($reference_genomic_align) and
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
535 $reference_genomic_align->isa("Bio::EnsEMBL::Compara::GenomicAlign"));
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
536 $self->{'reference_genomic_align'} = $reference_genomic_align;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
537
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
538 ## Synchronises reference_genomic_align and reference_genomic_align_id attributes
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
539 if (defined($self->{'reference_genomic_align'}->dbID)) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
540 $self->{'reference_genomic_align_id'} = $self->{'reference_genomic_align'}->dbID;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
541 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
542
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
543 ## Try to get data from other sources...
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
544 } elsif (!defined($self->{'reference_genomic_align'})) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
545
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
546 ## ...from the reference_genomic_align_id attribute
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
547 if (defined($self->{'reference_genomic_align_id'}) and @{$self->get_all_GenomicAligns}) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
548 my $reference_genomic_align_id = $self->{'reference_genomic_align_id'};
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
549 foreach my $this_genomic_align (@{$self->get_all_GenomicAligns}) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
550 if ($this_genomic_align->dbID == $reference_genomic_align_id) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
551 $self->{'reference_genomic_align'} = $this_genomic_align;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
552 return $this_genomic_align;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
553 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
554 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
555 throw("[$self] Cannot found Bio::EnsEMBL::Compara::GenomicAlign::reference_genomic_align_id".
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
556 " ($reference_genomic_align_id) in the genomic_align_array");
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
557 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
558 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
559
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
560 return $self->{'reference_genomic_align'};
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
561 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
562
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
563 =head2 reference_genomic_align_id
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
564
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
565 Arg [1] : integer $reference_genomic_align_id
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
566 Example : $genomic_align_block->reference_genomic_align_id(4321);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
567 Description: get/set for attribute reference_genomic_align_id. A value of 0 will set the
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
568 reference_genomic_align_id attribute to undef. When looking for genomic
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
569 alignments in a given slice or dnafrag, the reference_genomic_align
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
570 corresponds to the Bio::EnsEMBL::Compara::GenomicAlign included in the
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
571 starting slice or dnafrag. The reference_genomic_align_id is the dbID
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
572 corresponding to the reference_genomic_align. All remaining
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
573 Bio::EnsEMBL::Compara::GenomicAlign objects included in the
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
574 Bio::EnsEMBL::Compara::GenomicAlignBlock are the
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
575 non_reference_genomic_aligns.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
576 Synchronises reference_genomic_align and reference_genomic_align_id
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
577 attributes.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
578 Returntype : integer
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
579 Exceptions : throw if $reference_genomic_align_id id not a postive number
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
580 Caller : $genomic_align_block->reference_genomic_align_id(int)
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
581 Status : Stable
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
582
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
583 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
584
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
585 sub reference_genomic_align_id {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
586 my ($self, $reference_genomic_align_id) = @_;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
587
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
588 if (defined($reference_genomic_align_id)) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
589 if ($reference_genomic_align_id !~ /^\d+$/) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
590 throw "[$reference_genomic_align_id] should be a positive number.";
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
591 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
592 $self->{'reference_genomic_align_id'} = ($reference_genomic_align_id or undef);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
593
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
594 ## Synchronises reference_genomic_align and reference_genomic_align_id
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
595 if (defined($self->{'reference_genomic_align'}) and
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
596 defined($self->{'reference_genomic_align'}->dbID) and
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
597 ($self->{'reference_genomic_align'}->dbID != ($self->{'reference_genomic_align_id'} or 0))) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
598 $self->{'reference_genomic_align'} = undef; ## Attribute will be set on request
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
599 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
600
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
601 ## Try to get data from other sources...
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
602 } elsif (!defined($self->{'reference_genomic_align_id'})) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
603
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
604 ## ...from the reference_genomic_align attribute
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
605 if (defined($self->{'reference_genomic_align'}) and
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
606 defined($self->{'reference_genomic_align'}->dbID)) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
607 $self->{'reference_genomic_align_id'} = $self->{'reference_genomic_align'}->dbID;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
608 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
609 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
610
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
611 return $self->{'reference_genomic_align_id'};
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
612 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
613
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
614 =head2 get_all_non_reference_genomic_aligns
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
615
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
616 Arg [1] : (none)
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
617 Example : $genomic_aligns = $genomic_align_block->get_all_non_reference_genomic_aligns();
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
618 Description: get the non_reference_genomic_aligns. When looking for genomic alignments in
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
619 a given slice or dnafrag, the reference_genomic_align corresponds to the
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
620 Bio::EnsEMBL::Compara::GenomicAlign included in the starting slice or
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
621 dnafrag. The reference_genomic_align_id is the dbID corresponding to the
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
622 reference_genomic_align. All remaining Bio::EnsEMBL::Compara::GenomicAlign
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
623 objects included in the Bio::EnsEMBL::Compara::GenomicAlignBlock are the
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
624 non_reference_genomic_aligns.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
625 Returntype : a ref. to an array of Bio::EnsEMBL::Compara::GenomicAlign objects
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
626 Exceptions : warns if no reference_genomic_align_id has been set and returns a ref.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
627 to an empty array
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
628 Exceptions : warns if no genomic_align_array has been set and returns a ref.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
629 to an empty array
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
630 Caller : $genomic_align_block->non_reference_genomic_aligns()
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
631 Status : Stable
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
632
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
633 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
634
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
635 sub get_all_non_reference_genomic_aligns {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
636 my ($self) = @_;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
637 my $all_non_reference_genomic_aligns = [];
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
638
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
639 my $reference_genomic_align_id = $self->reference_genomic_align_id;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
640 my $reference_genomic_align = $self->reference_genomic_align;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
641 if (!defined($reference_genomic_align_id) and !defined($reference_genomic_align)) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
642 warning("Trying to get Bio::EnsEMBL::Compara::GenomicAlign::all_non_reference_genomic_aligns".
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
643 " when no reference_genomic_align has been set before");
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
644 return $all_non_reference_genomic_aligns;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
645 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
646 my $genomic_aligns = $self->get_all_GenomicAligns; ## Lazy loading compliant
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
647 if (!@$genomic_aligns) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
648 warning("Trying to get Bio::EnsEMBL::Compara::GenomicAlign::all_non_reference_genomic_aligns".
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
649 " when no genomic_align_array can be retrieved");
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
650 return $all_non_reference_genomic_aligns;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
651 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
652
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
653 foreach my $this_genomic_align (@$genomic_aligns) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
654 if (($this_genomic_align->dbID or -1) != ($reference_genomic_align_id or -2) and
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
655 $this_genomic_align != $reference_genomic_align) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
656 push(@$all_non_reference_genomic_aligns, $this_genomic_align);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
657 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
658 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
659
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
660 return $all_non_reference_genomic_aligns;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
661 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
662
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
663
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
664 =head2 genomic_align_array
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
665
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
666 Arg [1] : array reference containing Bio::EnsEMBL::Compara::GenomicAlign objects
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
667 Example : $genomic_aligns = $genomic_align_block->genomic_align_array();
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
668 $genomic_align_block->genomic_align_array([$genomic_align1, $genomic_align2]);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
669 Description: get/set for attribute genomic_align_array. If no argument is given, the
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
670 genomic_align_array is not defined but both the dbID and the adaptor are,
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
671 it tries to fetch the data from the database using the dbID of the
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
672 Bio::EnsEMBL::Compara::GenomicAlignBlock object.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
673 You can unset all cached GenomicAlign using 0 as argument. They will be
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
674 loaded again from the database if needed.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
675 Returntype : array reference containing Bio::EnsEMBL::Compara::GenomicAlign objects
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
676 Exceptions : none
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
677 Caller : general
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
678 Status : Stable
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
679
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
680 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
681
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
682 sub genomic_align_array {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
683 my ($self, $genomic_align_array) = @_;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
684
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
685 if (defined($genomic_align_array)) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
686 if (!$genomic_align_array) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
687 ## Clean cache.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
688 $self->{'genomic_align_array'} = undef;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
689 $self->{'reference_genomic_align'} = undef;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
690 return undef;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
691 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
692 foreach my $genomic_align (@$genomic_align_array) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
693 throw("[$genomic_align] is not a Bio::EnsEMBL::Compara::GenomicAlign object")
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
694 unless (ref $genomic_align and $genomic_align->isa("Bio::EnsEMBL::Compara::GenomicAlign"));
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
695 # Create weak circular reference to genomic_align_block from each genomic_align
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
696 $genomic_align->genomic_align_block($self);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
697 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
698 $self->{'genomic_align_array'} = $genomic_align_array;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
699
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
700 } elsif (!defined($self->{'genomic_align_array'}) and defined($self->{'adaptor'})
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
701 and defined($self->{'dbID'})) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
702 # Fetch data from DB (allow lazy fetching of genomic_align_block objects)
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
703 my $genomic_align_adaptor = $self->adaptor->db->get_GenomicAlignAdaptor();
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
704 $self->{'genomic_align_array'} =
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
705 $genomic_align_adaptor->fetch_all_by_genomic_align_block_id($self->{'dbID'});
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
706 foreach my $this_genomic_align (@{$self->{'genomic_align_array'}}) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
707 $this_genomic_align->genomic_align_block($self);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
708 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
709 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
710
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
711 return $self->{'genomic_align_array'};
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
712 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
713
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
714
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
715 =head2 add_GenomicAlign
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
716
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
717 Arg [1] : Bio::EnsEMBL::Compara::GenomicAlign $genomic_align
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
718 Example : $genomic_align_block->add_GenomicAlign($genomic_align);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
719 Description: adds another Bio::EnsEMBL::Compara::GenomicAlign object to the set of
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
720 Bio::EnsEMBL::Compara::GenomicAlign objects in the attribute
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
721 genomic_align_array.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
722 Returntype : Bio::EnsEMBL::Compara::GenomicAlign object
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
723 Exceptions : thrown if wrong argument
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
724 Caller : general
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
725 Status : Stable
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
726
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
727 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
728
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
729 sub add_GenomicAlign {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
730 my ($self, $genomic_align) = @_;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
731
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
732 throw("[$genomic_align] is not a Bio::EnsEMBL::Compara::GenomicAlign object")
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
733 unless ($genomic_align and ref($genomic_align) and
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
734 $genomic_align->isa("Bio::EnsEMBL::Compara::GenomicAlign"));
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
735 # Create weak circular reference to genomic_align_block from each genomic_align
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
736 $genomic_align->genomic_align_block($self);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
737 push(@{$self->{'genomic_align_array'}}, $genomic_align);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
738
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
739 return $genomic_align;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
740 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
741
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
742
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
743 =head2 get_all_GenomicAligns
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
744
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
745 Arg [1] : none
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
746 Example : $genomic_aligns = $genomic_align_block->get_all_GenomicAligns();
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
747 Description: returns the set of Bio::EnsEMBL::Compara::GenomicAlign objects in
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
748 the attribute genomic_align_array.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
749 Returntype : array reference containing Bio::EnsEMBL::Compara::GenomicAlign objects
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
750 Exceptions : none
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
751 Caller : general
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
752 Status : Stable
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
753
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
754 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
755
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
756 sub get_all_GenomicAligns {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
757 my ($self) = @_;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
758
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
759 return ($self->genomic_align_array or []);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
760 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
761
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
762
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
763 =head2 score
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
764
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
765 Arg [1] : double $score
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
766 Example : my $score = $genomic_align_block->score();
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
767 $genomic_align_block->score(56.2);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
768 Description: get/set for attribute score. If no argument is given, the score
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
769 is not defined but both the dbID and the adaptor are, it tries to
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
770 fetch and set all the direct attributes from the database using the
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
771 dbID of the Bio::EnsEMBL::Compara::GenomicAlignBlock object.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
772 Returntype : double
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
773 Exceptions : none
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
774 Caller : general
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
775 Status : Stable
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
776
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
777 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
778
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
779 sub score {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
780 my ($self, $score) = @_;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
781
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
782 if (defined($score)) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
783 $self->{'score'} = $score;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
784 } elsif (!defined($self->{'score'})) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
785 # Try to get the ID from other sources...
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
786 if (defined($self->{'adaptor'}) and defined($self->dbID)) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
787 # ...from the database, using the dbID of the Bio::Ensembl::Compara::GenomicAlignBlock object
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
788 $self->adaptor->retrieve_all_direct_attributes($self);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
789 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
790 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
791
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
792 return $self->{'score'};
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
793 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
794
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
795
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
796 =head2 perc_id
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
797
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
798 Arg [1] : double $perc_id
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
799 Example : my $perc_id = $genomic_align_block->perc_id;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
800 Example : $genomic_align_block->perc_id(95.4);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
801 Description: get/set for attribute perc_id. If no argument is given, the perc_id
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
802 is not defined but both the dbID and the adaptor are, it tries to
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
803 fetch and set all the direct attributes from the database using the
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
804 dbID of the Bio::EnsEMBL::Compara::GenomicAlignBlock object.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
805 Returntype : double
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
806 Exceptions : none
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
807 Caller : general
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
808 Status : Stable
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
809
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
810 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
811
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
812 sub perc_id {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
813 my ($self, $perc_id) = @_;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
814
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
815 if (defined($perc_id)) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
816 $self->{'perc_id'} = $perc_id;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
817 } elsif (!defined($self->{'perc_id'})) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
818 # Try to get the ID from other sources...
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
819 if (defined($self->{'adaptor'}) and defined($self->dbID)) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
820 # ...from the database, using the dbID of the Bio::Ensembl::Compara::GenomicAlignBlock object
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
821 $self->adaptor->retrieve_all_direct_attributes($self);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
822 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
823 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
824
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
825 return $self->{'perc_id'};
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
826 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
827
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
828
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
829 =head2 length
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
830
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
831 Arg [1] : integer $length
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
832 Example : my $length = $genomic_align_block->length;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
833 Example : $genomic_align_block->length(562);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
834 Description: get/set for attribute length. If no argument is given, the length
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
835 is not defined but both the dbID and the adaptor are, it tries to
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
836 fetch and set all the direct attributes from the database using the
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
837 dbID of the Bio::EnsEMBL::Compara::GenomicAlignBlock object.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
838 Returntype : integer
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
839 Exceptions : none
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
840 Caller : general
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
841 Status : Stable
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
842
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
843 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
844
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
845 sub length {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
846 my ($self, $length) = @_;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
847
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
848 if (defined($length)) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
849 $self->{'length'} = $length;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
850 } elsif (!defined($self->{'length'})) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
851 # Try to get the ID from other sources...
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
852 if (defined($self->{'adaptor'}) and defined($self->dbID)) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
853 # ...from the database, using the dbID of the Bio::Ensembl::Compara::GenomicAlignBlock object
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
854 $self->adaptor->retrieve_all_direct_attributes($self);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
855 } elsif (@{$self->get_all_GenomicAligns} and $self->get_all_GenomicAligns->[0]->aligned_sequence("+FAKE_SEQ")) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
856 $self->{'length'} = CORE::length($self->get_all_GenomicAligns->[0]->aligned_sequence("+FAKE_SEQ"));
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
857 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
858 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
859
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
860 return $self->{'length'};
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
861 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
862
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
863 =head2 group_id
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
864
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
865 Arg [1] : integer $group_id
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
866 Example : my $group_id = $genomic_align_block->group_id;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
867 Example : $genomic_align_block->group_id(1234);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
868 Description: get/set for attribute group_id.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
869 Returntype : integer
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
870 Exceptions : none
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
871 Caller : general
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
872 Status : At risk
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
873
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
874 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
875
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
876 sub group_id {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
877 my ($self, $group_id) = @_;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
878
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
879 if (defined($group_id)) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
880 $self->{'group_id'} = ($group_id);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
881 } elsif (!defined($self->{'group_id'})) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
882 # Try to get the ID from other sources...
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
883 if (defined($self->{'adaptor'}) and defined($self->dbID)) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
884 # ...from the database, using the dbID of the Bio::Ensembl::Compara::GenomicAlignBlock object
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
885 $self->adaptor->retrieve_all_direct_attributes($self);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
886 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
887 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
888 return $self->{'group_id'};
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
889 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
890
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
891 =head2 level_id
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
892
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
893 Arg [1] : int $level_id
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
894 Example : $level_id = $genomic_align->level_id;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
895 Example : $genomic_align->level_id(1);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
896 Description: get/set for attribute level_id. If no argument is given, the level_id
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
897 is not defined but both the dbID and the adaptor are, it tries to
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
898 fetch and set all the direct attributes from the database using the
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
899 dbID of the Bio::EnsEMBL::Compara::GenomicAlign object.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
900 Returntype : int
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
901 Exceptions : none
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
902 Warning : warns if getting data from other sources fails.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
903 Caller : object->methodname
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
904 Status : Stable
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
905
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
906 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
907
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
908 sub level_id {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
909 my ($self, $level_id) = @_;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
910
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
911 if (defined($level_id)) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
912 $self->{'level_id'} = $level_id;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
913
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
914 } elsif (!defined($self->{'level_id'})) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
915 if (defined($self->{'dbID'}) and defined($self->{'adaptor'})) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
916 # Try to get the values from the database using the dbID of the Bio::EnsEMBL::Compara::GenomicAlignBlock object
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
917 $self->adaptor->retrieve_all_direct_attributes($self);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
918 } else {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
919 # warning("Fail to get data from other sources in Bio::EnsEMBL::Compara::GenomicAlignBlock->level_id".
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
920 # " You either have to specify more information (see perldoc for".
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
921 # " Bio::EnsEMBL::Compara::GenomicAlignBlock) or to set it up directly");
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
922 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
923 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
924
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
925 return $self->{'level_id'};
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
926 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
927
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
928 =head2 requesting_slice (DEPRECATED)
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
929
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
930 DEPRECATED! Use Bio::EnsEMBL::Compara::GenomicAlignBlock->reference_slice() method instead
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
931
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
932 Arg [1] : Bio::EnsEMBL::Slice $reference_slice
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
933 Example : my $reference_slice = $genomic_align_block->requesting_slice;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
934 Example : $genomic_align_block->requesting_slice($reference_slice);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
935 Description: get/set for attribute reference_slice.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
936 Returntype : Bio::EnsEMBL::Slice object
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
937 Exceptions : throw if $reference_slice is not a Bio::EnsEMBL::Slice
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
938 Caller : general
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
939
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
940 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
941
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
942 sub requesting_slice {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
943 my ($self) = shift;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
944 deprecate("Use Bio::EnsEMBL::Compara::GenomicAlignBlock->reference_slice() method instead");
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
945 return $self->reference_slice(@_);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
946 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
947
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
948 =head2 alignment_strings
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
949
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
950 Arg [1] : none
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
951 Example : $genomic_align_block->alignment_strings
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
952 Description: Returns the alignment string of all the sequences in the
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
953 alignment
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
954 Returntype : array reference containing several strings
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
955 Exceptions : none
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
956 Caller : general
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
957 Status : Stable
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
958
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
959 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
960
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
961 sub alignment_strings {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
962 my ($self) = @_;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
963 my $alignment_strings = [];
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
964
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
965 foreach my $genomic_align (@{$self->get_all_GenomicAligns}) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
966 push(@$alignment_strings, $genomic_align->aligned_sequence);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
967 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
968
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
969 return $alignment_strings;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
970 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
971
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
972
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
973 =head2 get_SimpleAlign
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
974
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
975 Arg [1] : list of string $flags
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
976 "translated" = by default, the sequence alignment will be on nucleotide. With "translated" flag
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
977 the aligned sequences are translated.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
978 "uc" = by default aligned sequences are given in lower cases. With "uc" flag, the aligned
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
979 sequences are given in upper cases.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
980 "display_id" = by default the name of each sequence in the alignment is $dnafrag->name. With
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
981 "dispaly_id" flag the name of each sequence is defined by the
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
982 Bio::EnsEMBL::Compara::GenomicAlign display_id method.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
983 Example : $daf->get_SimpleAlign or
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
984 $daf->get_SimpleAlign("translated") or
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
985 $daf->get_SimpleAlign("translated","uc")
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
986 Description: Allows to rebuild the alignment string of all the genomic_align objects within
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
987 this genomic_align_block using the cigar_line information
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
988 and access to the core database slice objects
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
989 Returntype : a Bio::SimpleAlign object
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
990 Exceptions :
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
991 Caller : general
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
992 Status : Stable
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
993
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
994 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
995
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
996 sub get_SimpleAlign {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
997 my ( $self, @flags ) = @_;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
998
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
999 # setting the flags
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1000 my $uc = 0;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1001 my $translated = 0;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1002 my $display_id = 0;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1003
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1004 for my $flag ( @flags ) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1005 $uc = 1 if ($flag =~ /^uc$/i);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1006 $translated = 1 if ($flag =~ /^translated$/i);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1007 $display_id = 1 if ($flag =~ /^display_id$/i);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1008 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1009
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1010 my $sa = Bio::SimpleAlign->new();
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1011
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1012 #Hack to try to work with both bioperl 0.7 and 1.2:
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1013 #Check to see if the method is called 'addSeq' or 'add_seq'
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1014 my $bio07 = 0;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1015 if(!$sa->can('add_seq')) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1016 $bio07 = 1;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1017 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1018
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1019 my $all_genomic_aligns;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1020 if ($self->reference_genomic_align) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1021 $all_genomic_aligns = [$self->reference_genomic_align,@{$self->get_all_non_reference_genomic_aligns}];
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1022 } else {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1023 $all_genomic_aligns = $self->get_all_GenomicAligns();
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1024 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1025
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1026 foreach my $genomic_align (@$all_genomic_aligns) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1027 my $alignSeq = $genomic_align->aligned_sequence;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1028 next if($alignSeq=~/^[\.\-]+$/);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1029
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1030 my $loc_seq = Bio::LocatableSeq->new(-SEQ => $uc ? uc $alignSeq : lc $alignSeq,
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1031 -START => $genomic_align->dnafrag_start,
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1032 -END => $genomic_align->dnafrag_end,
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1033 -ID => $display_id ? $genomic_align->display_id : ($genomic_align->dnafrag->genome_db->name . "/" . $genomic_align->dnafrag->name),
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1034 -STRAND => $genomic_align->dnafrag_strand);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1035
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1036 $loc_seq->seq($uc ? uc $loc_seq->translate->seq
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1037 : lc $loc_seq->translate->seq) if ($translated);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1038
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1039 if($bio07) { $sa->addSeq($loc_seq); }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1040 else { $sa->add_seq($loc_seq); }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1041
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1042 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1043 return $sa;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1044 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1045
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1046
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1047 =head2 _create_from_a_list_of_ungapped_genomic_align_blocks (testing)
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1048
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1049 Args : listref of ungapped Bio::EnsEMBL::Compara::GenomicAlignBlocks
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1050 Example : $new_genomic_align_block =
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1051 $self->_create_from_a_list_of_ungapped_genomic_align_blocks(
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1052 $ungapped_genomic_align_blocks
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1053 );
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1054 Description: Takes a list of ungapped Bio::EnsEMBL::Compara::GenomicAlignBlock
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1055 objects and creates a new Bio::EnsEMBL::Compara::GenomicAlignBlock
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1056 Returntype : Bio::EnsEMBL::Compara::GenomicAlignBlock object
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1057 Exceptions : lots...
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1058 Caller : new()
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1059 Status : At risk
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1060
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1061 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1062
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1063 sub _create_from_a_list_of_ungapped_genomic_align_blocks {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1064 my ($self, $ungapped_genomic_align_blocks) = @_;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1065
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1066 ## Set adaptor
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1067 my $adaptor = undef;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1068 foreach my $genomic_align_block (@$ungapped_genomic_align_blocks) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1069 if ($genomic_align_block->adaptor) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1070 $self->adaptor($adaptor);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1071 last;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1072 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1073 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1074
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1075 ## Set method_link_species_set
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1076 my $method_link_species_set = undef;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1077 foreach my $genomic_align_block (@$ungapped_genomic_align_blocks) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1078 if ($genomic_align_block->method_link_species_set) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1079 if ($method_link_species_set) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1080 if ($method_link_species_set->dbID != $genomic_align_block->method_link_species_set->dbID) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1081 warning("Creating a GenomicAlignBlock from a list of ungapped GenomicAlignBlock with".
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1082 " different method_link_species_set is not supported");
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1083 return undef;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1084 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1085 } else {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1086 $method_link_species_set = $genomic_align_block->method_link_species_set;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1087 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1088 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1089 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1090 $self->method_link_species_set($method_link_species_set);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1091
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1092 ## Set method_link_species_set_id
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1093 my $method_link_species_set_id = undef;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1094 foreach my $genomic_align_block (@$ungapped_genomic_align_blocks) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1095 if ($genomic_align_block->method_link_species_set_id) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1096 if ($method_link_species_set_id) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1097 if ($method_link_species_set_id != $genomic_align_block->method_link_species_set_id) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1098 warning("Creating a GenomicAlignBlock from a list of ungapped GenomicAlignBlock with".
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1099 " different method_link_species_set_id is not supported");
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1100 return undef;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1101 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1102 } else {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1103 $method_link_species_set_id = $genomic_align_block->method_link_species_set_id;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1104 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1105 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1106 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1107 $self->method_link_species_set_id($method_link_species_set_id);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1108
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1109 my $genomic_aligns;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1110 ## Check blocks and create new genomic_aligns
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1111 foreach my $genomic_align_block (@$ungapped_genomic_align_blocks) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1112 foreach my $this_genomic_align (@{$genomic_align_block->get_all_GenomicAligns}) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1113 my $dnafrag_id = $this_genomic_align->dnafrag_id;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1114 if (!defined($genomic_aligns->{$dnafrag_id})) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1115 $genomic_aligns->{$dnafrag_id} = new Bio::EnsEMBL::Compara::GenomicAlign(
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1116 -adaptor => $this_genomic_align->adaptor,
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1117 -method_link_species_set => $method_link_species_set,
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1118 -method_link_species_set_id => $method_link_species_set_id,
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1119 -dnafrag => $this_genomic_align->dnafrag,
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1120 -dnafrag_start => $this_genomic_align->dnafrag_start,
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1121 -dnafrag_end => $this_genomic_align->dnafrag_end,
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1122 -dnafrag_strand => $this_genomic_align->dnafrag_strand,
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1123 );
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1124 } else {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1125 ## Check strand
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1126 if ($this_genomic_align->dnafrag_strand < $genomic_aligns->{$dnafrag_id}->dnafrag_strand) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1127 warning("The list of ungapped GenomicAlignBlock is inconsistent in strand");
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1128 return undef;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1129 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1130
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1131 ## Check order and lengthen genomic_align
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1132 if ($this_genomic_align->dnafrag_strand == -1) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1133 if ($this_genomic_align->dnafrag_end >= $genomic_aligns->{$dnafrag_id}->dnafrag_start) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1134 warning("The list of ungapped GenomicAlignBlock must be previously sorted");
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1135 return undef;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1136 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1137 $genomic_aligns->{$dnafrag_id}->dnafrag_start($this_genomic_align->dnafrag_start);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1138 } else {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1139 if ($this_genomic_align->dnafrag_start <= $genomic_aligns->{$dnafrag_id}->dnafrag_end) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1140 warning("The list of ungapped GenomicAlignBlock must be previously sorted");
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1141 return undef;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1142 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1143 $genomic_aligns->{$dnafrag_id}->dnafrag_end($this_genomic_align->dnafrag_end);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1144 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1145 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1146 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1147 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1148
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1149 ## Create cigar lines
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1150 my $cigar_lines;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1151 for (my $i=0; $i<@$ungapped_genomic_align_blocks; $i++) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1152 my $genomic_align_block = $ungapped_genomic_align_blocks->[$i];
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1153 my $block_length = 0;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1154 ## Calculate block length
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1155 foreach my $this_genomic_align (@{$genomic_align_block->get_all_GenomicAligns}) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1156 if ($block_length) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1157 if ($block_length != CORE::length($this_genomic_align->aligned_sequence)) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1158 warning("The list of ungapped GenomicAlignBlock is inconsistent in gaps");
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1159 return undef;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1160 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1161 } else {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1162 $block_length = CORE::length($this_genomic_align->aligned_sequence);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1163 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1164 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1165
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1166 next if ($block_length == 0); # Skip 0-length blocks (shouldn't happen)
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1167 $block_length = "" if ($block_length == 1); # avoid a "1" in cigar_line
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1168
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1169 ## Fix cigar line according to block length
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1170 while (my ($id, $genomic_align) = each %{$genomic_aligns}) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1171 my $is_included_in_this_block = 0;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1172 foreach my $this_genomic_align (@{$genomic_align_block->get_all_GenomicAligns}) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1173 if ($this_genomic_align->dnafrag_id == $id) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1174 $is_included_in_this_block = 1;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1175 $cigar_lines->{$id} .= $this_genomic_align->cigar_line;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1176 last;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1177 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1178 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1179 if (!$is_included_in_this_block) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1180 $cigar_lines->{$id} .= $block_length."D";
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1181 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1182 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1183
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1184 ## Add extra gaps between genomic_align_blocks
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1185 if (defined($ungapped_genomic_align_blocks->[$i+1])) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1186 foreach my $genomic_align1 (@{$genomic_align_block->get_all_GenomicAligns}) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1187 foreach my $genomic_align2 (@{$ungapped_genomic_align_blocks->[$i+1]->get_all_GenomicAligns}) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1188 next if ($genomic_align1->dnafrag_id != $genomic_align2->dnafrag_id);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1189 ## $gap is the piece of sequence of this dnafrag between this block and the next one
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1190 my $gap;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1191 if ($genomic_align1->dnafrag_strand == 1) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1192 $gap = $genomic_align2->dnafrag_start - $genomic_align1->dnafrag_end - 1;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1193 } else {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1194 $gap = $genomic_align1->dnafrag_start - $genomic_align2->dnafrag_end - 1;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1195 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1196 if ($gap) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1197 $gap = "" if ($gap == 1);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1198 foreach my $genomic_align3 (@{$genomic_align_block->get_all_GenomicAligns}) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1199 if ($genomic_align1->dnafrag_id == $genomic_align3->dnafrag_id) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1200 ## Add (mis)matches for this sequence
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1201 $cigar_lines->{$genomic_align3->dnafrag_id} .= $gap."M";
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1202 } else {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1203 ## Add gaps for others
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1204 $cigar_lines->{$genomic_align3->dnafrag_id} .= $gap."D";
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1205 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1206 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1207 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1208 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1209 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1210 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1211
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1212 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1213
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1214 while (my ($id, $genomic_align) = each %{$genomic_aligns}) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1215 $genomic_align->cigar_line($cigar_lines->{$id});
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1216 $self->add_GenomicAlign($genomic_align);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1217 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1218
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1219 return $self;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1220 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1221
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1222
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1223 =head2 get_all_ungapped_GenomicAlignBlocks
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1224
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1225 Args : (optional) listref $genome_dbs
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1226 Example : my $ungapped_genomic_align_blocks =
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1227 $self->get_all_ungapped_GenomicAlignBlocks();
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1228 Example : my $ungapped_genomic_align_blocks =
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1229 $self->get_all_ungapped_GenomicAlignBlocks([$human_genome_db, $mouse_genome_db]);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1230 Description: split the GenomicAlignBlock object into a set of ungapped
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1231 alignments. If a list of genome_dbs is provided, only those
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1232 sequences will be taken into account. This can be used to extract
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1233 ungapped pairwise alignments from multiple alignments.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1234 Returntype : listref of Bio::EnsEMBL::Compara::GenomicAlignBlocks objects
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1235 Exceptions : none
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1236 Caller : general
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1237 Status : At risk
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1238
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1239 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1240
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1241 sub get_all_ungapped_GenomicAlignBlocks {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1242 my ($self, $genome_dbs) = @_;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1243 my $ungapped_genomic_align_blocks = [];
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1244
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1245 my $genomic_aligns = $self->get_all_GenomicAligns;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1246 if ($genome_dbs and @$genome_dbs) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1247 my $these_genomic_aligns = [];
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1248 foreach my $this_genomic_align (@$genomic_aligns) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1249 if (grep {$this_genomic_align->genome_db->name eq $_->name} @$genome_dbs) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1250 push(@$these_genomic_aligns, $this_genomic_align);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1251 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1252 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1253 if (@$these_genomic_aligns > 1) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1254 $genomic_aligns = $these_genomic_aligns;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1255 } else {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1256 return [];
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1257 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1258 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1259 my $aln_length = CORE::length($genomic_aligns->[0]->aligned_sequence("+FAKE_SEQ"));
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1260 # foreach my $this_genomic_align (@$genomic_aligns) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1261 # print STDERR join(" - ", $this_genomic_align->dnafrag_start, $this_genomic_align->dnafrag_end,
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1262 # $this_genomic_align->dnafrag_strand, $this_genomic_align->aligned_sequence("+FAKE_SEQ")), "\n";
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1263 # }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1264
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1265 my $aln_pos = 0;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1266 my $gap;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1267 my $end_block_pos;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1268 do {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1269 $end_block_pos = undef;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1270 my $these_genomic_aligns_with_no_gaps;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1271
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1272 ## Get the (next) first gap from all the aligned sequences (sets: $gap_pos, $gap and $genomic_align_block_id)
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1273 foreach my $this_genomic_align (@$genomic_aligns) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1274 my $this_end_block_pos = index($this_genomic_align->aligned_sequence("+FAKE_SEQ"), "-", $aln_pos);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1275 if ($this_end_block_pos == $aln_pos) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1276 ## try to find the end of the gaps
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1277 my $gap_string = substr($this_genomic_align->aligned_sequence("+FAKE_SEQ"), $aln_pos);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1278 ($gap) = $gap_string =~ /^(\-+)/;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1279 my $gap_length = CORE::length($gap);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1280 $this_end_block_pos = $aln_pos+$gap_length;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1281 } else {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1282 $these_genomic_aligns_with_no_gaps->{$this_genomic_align} = $this_genomic_align;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1283 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1284 $this_end_block_pos = CORE::length($this_genomic_align->aligned_sequence("+FAKE_SEQ")) if ($this_end_block_pos < 0); # no more gaps have been found in this sequence
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1285
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1286
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1287 if (!defined($end_block_pos) or $this_end_block_pos < $end_block_pos) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1288 $end_block_pos = $this_end_block_pos;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1289 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1290 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1291
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1292 if (scalar(keys(%$these_genomic_aligns_with_no_gaps)) > 1) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1293 my $new_genomic_aligns;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1294 my $reference_genomic_align;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1295 foreach my $this_genomic_align (values %$these_genomic_aligns_with_no_gaps) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1296 my $previous_seq = substr($this_genomic_align->aligned_sequence("+FAKE_SEQ"), 0, $aln_pos );
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1297 $previous_seq =~ s/\-//g;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1298 my $dnafrag_start;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1299 my $dnafrag_end;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1300 my $cigar_line;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1301 my $cigar_length = ($end_block_pos - $aln_pos);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1302 $cigar_length = "" if ($cigar_length == 1);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1303 if ($this_genomic_align->dnafrag_strand == 1) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1304 $dnafrag_start = $this_genomic_align->dnafrag_start + CORE::length($previous_seq);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1305 $dnafrag_end = $dnafrag_start + $end_block_pos - $aln_pos - 1;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1306 $cigar_line = $cigar_length."M";
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1307 } else {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1308 $dnafrag_end = $this_genomic_align->dnafrag_end - CORE::length($previous_seq);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1309 $dnafrag_start = $dnafrag_end - $end_block_pos + $aln_pos + 1;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1310 $cigar_line = $cigar_length."M";
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1311 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1312 my $new_genomic_align = new Bio::EnsEMBL::Compara::GenomicAlign(
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1313 -adaptor => $this_genomic_align->adaptor,
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1314 -method_link_species_set => $this_genomic_align->method_link_species_set,
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1315 -dnafrag => $this_genomic_align->dnafrag,
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1316 -dnafrag_start => $dnafrag_start,
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1317 -dnafrag_end => $dnafrag_end,
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1318 -dnafrag_strand => $this_genomic_align->dnafrag_strand,
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1319 -cigar_line => $cigar_line,
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1320 );
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1321 $reference_genomic_align = $new_genomic_align
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1322 if (defined($self->reference_genomic_align) and
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1323 $self->reference_genomic_align == $this_genomic_align);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1324 push(@$new_genomic_aligns, $new_genomic_align);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1325 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1326 ## Create a new GenomicAlignBlock
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1327 my $new_genomic_align_block = new Bio::EnsEMBL::Compara::GenomicAlignBlock(
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1328 -method_link_species_set => $self->method_link_species_set,
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1329 -length => $end_block_pos - $aln_pos,
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1330 -genomic_align_array => $new_genomic_aligns,
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1331 );
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1332 $new_genomic_align_block->reference_genomic_align($reference_genomic_align) if (defined($reference_genomic_align));
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1333 push(@$ungapped_genomic_align_blocks, $new_genomic_align_block);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1334 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1335 $aln_pos = $end_block_pos;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1336
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1337 } while ($aln_pos < $aln_length); # exit loop if no gap has been found
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1338
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1339 return $ungapped_genomic_align_blocks;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1340 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1341
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1342
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1343 =head2 reverse_complement
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1344
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1345 Args : none
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1346 Example : none
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1347 Description: reverse complement the ,
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1348 modifying dnafrag_strand and cigar_line of each GenomicAlign in consequence
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1349 Returntype : none
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1350 Exceptions : none
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1351 Caller : general
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1352 Status : Stable
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1353
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1354 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1355
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1356 sub reverse_complement {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1357 my ($self) = @_;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1358
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1359 if (defined($self->{_original_strand})) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1360 $self->{_original_strand} = 1 - $self->{_original_strand};
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1361 } else {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1362 $self->{_original_strand} = 0;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1363 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1364
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1365 my $gas = $self->get_all_GenomicAligns;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1366 foreach my $ga (@{$gas}) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1367 $ga->reverse_complement;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1368 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1369 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1370
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1371 =head2 restrict_between_alignment_positions
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1372
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1373 Arg[1] : [optional] int $start, refers to the start of the alignment
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1374 Arg[2] : [optional] int $end, refers to the start of the alignment
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1375 Arg[3] : [optional] boolean $skip_empty_GenomicAligns
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1376 Example : none
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1377 Description: restrict this GenomicAlignBlock. It returns a new object unless no
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1378 restriction is needed. In that case, it returns the original unchanged
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1379 object.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1380 This method uses coordinates relative to the alignment itself.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1381 For instance if you have an alignment like:
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1382 1 1 2 2 3
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1383 1 5 0 5 0 5 0
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1384 AAC--CTTGTGGTA-CTACTT-----ACTTT
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1385 AACCCCTT-TGGTATCTACTTACCTAACTTT
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1386 and you restrict it between 5 and 25, you will get back a
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1387 object containing the following alignment:
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1388 1 1
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1389 1 5 0 5
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1390 CTTGTGGTA-CTACTT----
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1391 CTT-TGGTATCTACTTACCT
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1392
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1393 See restrict_between_reference_positions() elsewhere in this document
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1394 for an alternative method using absolute genomic coordinates.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1395
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1396 NB: This method works only for GenomicAlignBlock which have been
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1397 fetched from the DB as it is adjusting the dnafrag coordinates
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1398 and the cigar_line only and not the actual sequences stored in the
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1399 object if any. If you want to restrict an object with no coordinates
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1400 a simple substr() will do!
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1401
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1402 Returntype : Bio::EnsEMBL::Compara::GenomicAlignBlock object
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1403 Exceptions : none
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1404 Caller : general
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1405 Status : At risk
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1406
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1407 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1408
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1409 sub restrict_between_alignment_positions {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1410 my ($self, $start, $end, $skip_empty_GenomicAligns) = @_;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1411 my $genomic_align_block;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1412 my $new_reference_genomic_align;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1413 my $new_genomic_aligns;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1414
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1415 $start = 1 if (!defined($start) or $start < 1);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1416 $end = $self->length if (!defined($end) or $end > $self->length);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1417
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1418 my $number_of_columns_to_trim_from_the_start = $start - 1;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1419 my $number_of_columns_to_trim_from_the_end = $self->length - $end;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1420
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1421 ## Skip if no restriction is needed. Return original object! We are still going on with the
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1422 ## restriction when either excess_at_the_start or excess_at_the_end are 0 as a (multiple)
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1423 ## alignment may start or end with gaps in the reference species. In that case, we want to
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1424 ## trim these gaps from the alignment as they fall just outside of the region of interest
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1425 return $self if ($number_of_columns_to_trim_from_the_start <= 0
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1426 and $number_of_columns_to_trim_from_the_end <= 0);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1427
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1428 my $final_alignment_length = $end - $start + 1;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1429
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1430 ## Create a new Bio::EnsEMBL::Compara::GenomicAlignBlock object with restricted GenomicAligns
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1431 my $length = $self->{length};
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1432 foreach my $this_genomic_align (@{$self->get_all_GenomicAligns}) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1433 my $new_genomic_align = $this_genomic_align->restrict($start, $end, $length);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1434 if ($self->reference_genomic_align and $this_genomic_align == $self->reference_genomic_align) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1435 $new_reference_genomic_align = $new_genomic_align;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1436 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1437 push(@$new_genomic_aligns, $new_genomic_align);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1438 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1439 $genomic_align_block = new Bio::EnsEMBL::Compara::GenomicAlignBlock(
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1440 -method_link_species_set => $self->method_link_species_set,
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1441 -genomic_align_array => $new_genomic_aligns,
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1442 -group_id => $self->group_id,
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1443 -level_id => $self->level_id,
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1444 );
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1445 $genomic_align_block->{original_dbID} = ($self->dbID or $self->{original_dbID});
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1446 $genomic_align_block->{_original_strand} = $self->{_original_strand};
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1447 if ($new_reference_genomic_align) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1448 $genomic_align_block->reference_genomic_align($new_reference_genomic_align);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1449 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1450 $genomic_align_block->reference_slice($self->reference_slice);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1451
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1452 # The restriction might result in empty GenomicAligns. If the
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1453 # skip_empty_GenomicAligns flag is set, remove them from the block.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1454 if ($skip_empty_GenomicAligns) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1455 my $reference_genomic_align = $genomic_align_block->reference_genomic_align();
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1456 my $genomic_align_array = $genomic_align_block->genomic_align_array;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1457 for (my $i=0; $i<@$genomic_align_array; $i++) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1458 if ($genomic_align_array->[$i]->dnafrag_start > $genomic_align_array->[$i]->dnafrag_end) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1459 splice(@$genomic_align_array, $i, 1);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1460 $i--;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1461 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1462 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1463 $genomic_align_block->reference_genomic_align($reference_genomic_align) if ($reference_genomic_align);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1464 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1465 $genomic_align_block->length($final_alignment_length);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1466
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1467 return $genomic_align_block;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1468 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1469
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1470 =head2 _print
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1471
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1472 Arg [1] : none
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1473 Example : $genomic_align->_print
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1474 Description: print attributes of the object to the STDOUT. Used for debuging purposes.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1475 Returntype : none
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1476 Exceptions :
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1477 Caller : object::methodname
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1478 Status : At risk
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1479
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1480 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1481
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1482 sub _print {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1483 my ($self, $FILEH) = @_;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1484
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1485 $FILEH ||= \*STDOUT;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1486 print $FILEH
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1487 "Bio::EnsEMBL::Compara::GenomicAlignBlock object ($self)
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1488 dbID = ", ($self->dbID or "-undef-"), "
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1489 adaptor = ", ($self->adaptor or "-undef-"), "
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1490 method_link_species_set = ", ($self->method_link_species_set or "-undef-"), "
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1491 method_link_species_set_id = ", ($self->method_link_species_set_id or "-undef-"), "
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1492 genomic_aligns = ", (scalar(@{$self->genomic_align_array}) or "-undef-"), "
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1493 score = ", ($self->score or "-undef-"), "
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1494 length = ", ($self->length or "-undef-"), "
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1495 alignments: \n";
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1496 foreach my $this_genomic_align (@{$self->genomic_align_array()}) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1497 my $slice = $this_genomic_align->get_Slice;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1498 if ($self->reference_genomic_align and $self->reference_genomic_align == $this_genomic_align) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1499 print $FILEH " * ", $this_genomic_align->genome_db->name, " ",
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1500 ($slice?$slice->name:"--error--"), "\n";
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1501 } else {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1502 print $FILEH " - ", $this_genomic_align->genome_db->name, " ",
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1503 ($slice?$slice->name:"--error--"), "\n";
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1504 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1505 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1506
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1507 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1508
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1509
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1510 #####################################################################
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1511 #####################################################################
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1512
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1513 =head1 METHODS FOR BACKWARDS COMPATIBILITY
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1514
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1515 Consensus and Query DnaFrag are no longer used. DO NOT USE THOSE METHODS IN NEW SCRIPTS, THEY WILL DISSAPEAR!!
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1516
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1517 For backwards compatibility, consensus_genomic_align correponds to the lower genome_db_id by convention.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1518 This convention works for pairwise alignment only! Trying to use the old API methods for multiple
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1519 alignments will throw an exception.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1520
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1521 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1522
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1523 #####################################################################
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1524 #####################################################################
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1525
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1526
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1527 =head2 get_old_consensus_genomic_align [FOR BACKWARDS COMPATIBILITY ONLY]
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1528
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1529 Arg [1] : none
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1530 Example : $old_consensus_genomic_aligns = $genomic_align_group->get_old_consensus_genomic_align();
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1531 Description: get the Bio::EnsEMBL::Compara::GenomicAlign object following the convention for backwards
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1532 compatibility
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1533 Returntype : Bio::EnsEMBL::Compara::GenomicAlign object
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1534 Exceptions :
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1535 Caller : general
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1536
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1537 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1538
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1539 sub get_old_consensus_genomic_align {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1540 my ($self) = @_;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1541
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1542 my $genomic_aligns = $self->get_all_GenomicAligns;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1543 if (!@$genomic_aligns) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1544 throw "Bio::EnsEMBL::Compara::GenomicAlignBlock ($self) does not have any associated".
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1545 " Bio::EnsEMBL::Compara::GenomicAlign";
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1546 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1547
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1548 if (scalar(@{$genomic_aligns}) != 2) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1549 throw "Trying to get old_consensus_genomic_align from Bio::EnsEMBL::Compara::GenomicAlignBlock".
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1550 " ($self) holding a multiple alignment";
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1551 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1552
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1553 if ($genomic_aligns->[0]->dnafrag->genome_db->dbID > $genomic_aligns->[1]->dnafrag->genome_db->dbID) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1554 return $genomic_aligns->[1];
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1555
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1556 } elsif ($genomic_aligns->[0]->dnafrag->genome_db->dbID < $genomic_aligns->[1]->dnafrag->genome_db->dbID) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1557 return $genomic_aligns->[0];
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1558
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1559 ## If they belongs to the same genome_db, use the dnafrag_id instead
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1560 } elsif ($genomic_aligns->[0]->dnafrag->dbID > $genomic_aligns->[1]->dnafrag->dbID) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1561 return $genomic_aligns->[1];
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1562
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1563 } elsif ($genomic_aligns->[0]->dnafrag->dbID < $genomic_aligns->[1]->dnafrag->dbID) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1564 return $genomic_aligns->[0];
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1565
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1566 ## If they belongs to the same genome_db and dnafrag, use the dnafrag_start instead
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1567 } elsif ($genomic_aligns->[0]->dnafrag_start > $genomic_aligns->[1]->dnafrag_start) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1568 return $genomic_aligns->[1];
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1569
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1570 } elsif ($genomic_aligns->[0]->dnafrag_start < $genomic_aligns->[1]->dnafrag_start) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1571 return $genomic_aligns->[0];
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1572
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1573 ## If they belongs to the same genome_db and dnafrag and have the same danfrag_start, use the dnafrag_end instead
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1574 } elsif ($genomic_aligns->[0]->dnafrag_end > $genomic_aligns->[1]->dnafrag_end) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1575 return $genomic_aligns->[1];
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1576
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1577 } elsif ($genomic_aligns->[0]->dnafrag_end < $genomic_aligns->[1]->dnafrag_end) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1578 return $genomic_aligns->[0];
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1579
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1580 ## If everithing else fails, use the dnafrag_strand
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1581 } elsif ($genomic_aligns->[0]->dnafrag_strand > $genomic_aligns->[1]->dnafrag_strand) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1582 return $genomic_aligns->[1];
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1583
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1584 } elsif ($genomic_aligns->[0]->dnafrag_strand < $genomic_aligns->[1]->dnafrag_strand) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1585 return $genomic_aligns->[0];
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1586
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1587 # Whatever, they are the same. Use 0 for consensus and 1 for query
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1588 } else {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1589 return $genomic_aligns->[0];
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1590 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1591 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1592
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1593
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1594 =head2 get_old_query_genomic_align [FOR BACKWARDS COMPATIBILITY ONLY]
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1595
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1596 Arg [1] : none
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1597 Example : $old_query_genomic_aligns = $genomic_align_group->get_old_query_genomic_align();
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1598 Description: get the Bio::EnsEMBL::Compara::GenomicAlign object following the convention for backwards
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1599 compatibility
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1600 Returntype : Bio::EnsEMBL::Compara::GenomicAlign object
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1601 Exceptions :
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1602 Caller : general
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1603
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1604 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1605
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1606 sub get_old_query_genomic_align {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1607 my ($self) = @_;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1608
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1609 my $genomic_aligns = $self->get_all_GenomicAligns;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1610 if (!@$genomic_aligns) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1611 throw "Bio::EnsEMBL::Compara::GenomicAlignBlock ($self) does not have any associated".
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1612 " Bio::EnsEMBL::Compara::GenomicAlign";
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1613 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1614
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1615 if (scalar(@{$genomic_aligns}) != 2) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1616 throw "Trying to get old_consensus_genomic_align from Bio::EnsEMBL::Compara::GenomicAlignBlock".
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1617 " ($self) holding a multiple alignment";
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1618 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1619
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1620 if ($genomic_aligns->[0]->dnafrag->genome_db->dbID > $genomic_aligns->[1]->dnafrag->genome_db->dbID) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1621 return $genomic_aligns->[0];
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1622
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1623 } elsif ($genomic_aligns->[0]->dnafrag->genome_db->dbID < $genomic_aligns->[1]->dnafrag->genome_db->dbID) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1624 return $genomic_aligns->[1];
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1625
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1626 ## If they belongs to the same genome_db, use the dnafrag_id instead
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1627 } elsif ($genomic_aligns->[0]->dnafrag->dbID > $genomic_aligns->[1]->dnafrag->dbID) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1628 return $genomic_aligns->[0];
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1629
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1630 } elsif ($genomic_aligns->[0]->dnafrag->dbID < $genomic_aligns->[1]->dnafrag->dbID) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1631 return $genomic_aligns->[1];
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1632
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1633 ## If they belongs to the same genome_db and dnafrag, use the dnafrag_start instead
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1634 } elsif ($genomic_aligns->[0]->dnafrag_start > $genomic_aligns->[1]->dnafrag_start) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1635 return $genomic_aligns->[0];
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1636
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1637 } elsif ($genomic_aligns->[0]->dnafrag_start < $genomic_aligns->[1]->dnafrag_start) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1638 return $genomic_aligns->[1];
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1639
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1640 ## If they belongs to the same genome_db and dnafrag and have the same danfrag_start, use the dnafrag_end instead
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1641 } elsif ($genomic_aligns->[0]->dnafrag_end > $genomic_aligns->[1]->dnafrag_end) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1642 return $genomic_aligns->[0];
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1643
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1644 } elsif ($genomic_aligns->[0]->dnafrag_end < $genomic_aligns->[1]->dnafrag_end) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1645 return $genomic_aligns->[1];
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1646
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1647 ## If everithing else fails, use the dnafrag_strand
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1648 } elsif ($genomic_aligns->[0]->dnafrag_strand > $genomic_aligns->[1]->dnafrag_strand) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1649 return $genomic_aligns->[0];
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1650
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1651 } elsif ($genomic_aligns->[0]->dnafrag_strand < $genomic_aligns->[1]->dnafrag_strand) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1652 return $genomic_aligns->[1];
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1653
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1654 # Whatever, they are the same. Use 0 for consensus and 1 for query
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1655 } else {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1656 return $genomic_aligns->[1];
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1657 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1658 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1659
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1660 1;