annotate variant_effect_predictor/Bio/EnsEMBL/IdMapping/SyntenyRegion.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 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
20
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
21 =head1 NAME
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
22
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
23 Bio::EnsEMBL::IdMapping::SyntenyRegion - object representing syntenic regions
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
24
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
25 =head1 SYNOPSIS
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
26
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
27 # create a new SyntenyRegion from a source and a target gene
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
28 my $sr = Bio::EnsEMBL::IdMapping::SyntenyRegion->new_fast( [
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
29 $source_gene->start, $source_gene->end,
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
30 $source_gene->strand, $source_gene->seq_region_name,
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
31 $target_gene->start, $target_gene->end,
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
32 $target_gene->strand, $target_gene->seq_region_name,
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
33 $entry->score,
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
34 ] );
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
35
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
36 # merge with another SyntenyRegion
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
37 my $merged_sr = $sr->merge($sr1);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
38
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
39 # score a gene pair against this SyntenyRegion
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
40 my $score =
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
41 $sr->score_location_relationship( $source_gene1, $target_gene1 );
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
42
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
43 =head1 DESCRIPTION
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
44
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
45 This object represents a synteny between a source and a target location.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
46 SyntenyRegions are built from mapped genes, and the their score is
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
47 defined as the score of the gene mapping. For merged SyntenyRegions,
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
48 scores are combined.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
49
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
50 =head1 METHODS
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
51
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
52 new_fast
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
53 source_start
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
54 source_end
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
55 source_strand
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
56 source_seq_region_name
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
57 target_start
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
58 target_end
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
59 target_strand
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
60 target_seq_region_name
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
61 score
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
62 merge
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
63 stretch
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
64 score_location_relationship
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
65 to_string
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
66
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
67 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
68
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
69 package Bio::EnsEMBL::IdMapping::SyntenyRegion;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
70
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
71 use strict;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
72 use warnings;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
73 no warnings 'uninitialized';
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
74
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
75 use Bio::EnsEMBL::Utils::Exception qw(throw warning);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
76
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
77
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
78 =head2 new_fast
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
79
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
80 Arg[1] : Arrayref $array_ref - the arrayref to bless into the
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
81 SyntenyRegion object
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
82 Example : my $sr = Bio::EnsEMBL::IdMapping::SyntenyRegion->new_fast([
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
83 ]);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
84 Description : Constructor. On instantiation, source and target regions are
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
85 reverse complemented so that source is always on forward strand.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
86 Return type : a Bio::EnsEMBL::IdMapping::SyntenyRegion object
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
87 Exceptions : none
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
88 Caller : Bio::EnsEMBL::IdMapping::SyntenyFramework
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
89 Status : At Risk
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
90 : under development
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
91
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
92 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
93
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
94 sub new_fast {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
95 my $class = shift;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
96 my $array_ref = shift;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
97
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
98 # reverse complement source and target so that source is always on forward
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
99 # strand; this will make merging and other comparison operations easier
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
100 # at later stages
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
101 if ($array_ref->[2] == -1) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
102 $array_ref->[2] = 1;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
103 $array_ref->[6] = -1 * $array_ref->[6];
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
104 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
105
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
106 return bless $array_ref, $class;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
107 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
108
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
109
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
110 =head2 source_start
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
111
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
112 Arg[1] : (optional) Int - source location start coordinate
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
113 Description : Getter/setter for source location start coordinate.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
114 Return type : Int
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
115 Exceptions : none
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
116 Caller : Bio::EnsEMBL::IdMapping::SyntenyFramework
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
117 Status : At Risk
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
118 : under development
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
119
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
120 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
121
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
122 sub source_start {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
123 my $self = shift;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
124 $self->[0] = shift if (@_);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
125 return $self->[0];
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
126 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
127
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
128
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
129 =head2 source_end
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
130
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
131 Arg[1] : (optional) Int - source location end coordinate
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
132 Description : Getter/setter for source location end coordinate.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
133 Return type : Int
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
134 Exceptions : none
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
135 Caller : Bio::EnsEMBL::IdMapping::SyntenyFramework
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
136 Status : At Risk
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
137 : under development
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
138
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
139 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
140
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
141 sub source_end {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
142 my $self = shift;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
143 $self->[1] = shift if (@_);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
144 return $self->[1];
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
145 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
146
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
147
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
148 =head2 source_strand
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
149
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
150 Arg[1] : (optional) Int - source location strand
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
151 Description : Getter/setter for source location strand.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
152 Return type : Int
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
153 Exceptions : none
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
154 Caller : Bio::EnsEMBL::IdMapping::SyntenyFramework
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
155 Status : At Risk
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
156 : under development
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
157
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
158 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
159
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
160 sub source_strand {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
161 my $self = shift;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
162 $self->[2] = shift if (@_);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
163 return $self->[2];
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
164 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
165
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
166
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
167 =head2 source_seq_region_name
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
168
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
169 Arg[1] : (optional) String - source location seq_region name
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
170 Description : Getter/setter for source location seq_region name.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
171 Return type : String
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
172 Exceptions : none
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
173 Caller : Bio::EnsEMBL::IdMapping::SyntenyFramework
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
174 Status : At Risk
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
175 : under development
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
176
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
177 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
178
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
179 sub source_seq_region_name {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
180 my $self = shift;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
181 $self->[3] = shift if (@_);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
182 return $self->[3];
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
183 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
184
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
185
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
186 =head2 target_start
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
187
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
188 Arg[1] : (optional) Int - target location start coordinate
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
189 Description : Getter/setter for target location start coordinate.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
190 Return type : Int
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
191 Exceptions : none
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
192 Caller : Bio::EnsEMBL::IdMapping::SyntenyFramework
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
193 Status : At Risk
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
194 : under development
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
195
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
196 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
197
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
198 sub target_start {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
199 my $self = shift;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
200 $self->[4] = shift if (@_);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
201 return $self->[4];
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
202 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
203
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
204
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
205 =head2 target_end
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
206
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
207 Arg[1] : (optional) Int - target location end coordinate
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
208 Description : Getter/setter for target location end coordinate.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
209 Return type : Int
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
210 Exceptions : none
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
211 Caller : Bio::EnsEMBL::IdMapping::SyntenyFramework
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
212 Status : At Risk
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
213 : under development
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
214
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
215 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
216
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
217 sub target_end {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
218 my $self = shift;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
219 $self->[5] = shift if (@_);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
220 return $self->[5];
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
221 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
222
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
223
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
224 =head2 target_strand
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
225
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
226 Arg[1] : (optional) Int - target location strand
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
227 Description : Getter/setter for target location strand.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
228 Return type : Int
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
229 Exceptions : none
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
230 Caller : Bio::EnsEMBL::IdMapping::SyntenyFramework
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
231 Status : At Risk
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
232 : under development
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
233
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
234 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
235
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
236 sub target_strand {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
237 my $self = shift;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
238 $self->[6] = shift if (@_);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
239 return $self->[6];
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
240 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
241
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
242
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
243 =head2 target_seq_region_name
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
244
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
245 Arg[1] : (optional) String - target location seq_region name
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
246 Description : Getter/setter for target location seq_region name.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
247 Return type : String
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
248 Exceptions : none
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
249 Caller : Bio::EnsEMBL::IdMapping::SyntenyFramework
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
250 Status : At Risk
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
251 : under development
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
252
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
253 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
254
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
255 sub target_seq_region_name {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
256 my $self = shift;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
257 $self->[7] = shift if (@_);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
258 return $self->[7];
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
259 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
260
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
261
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
262 =head2 score
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
263
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
264 Arg[1] : (optional) Float - score
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
265 Description : Getter/setter for the score between source and target location.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
266 Return type : Int
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
267 Exceptions : none
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
268 Caller : Bio::EnsEMBL::IdMapping::SyntenyFramework
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
269 Status : At Risk
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
270 : under development
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
271
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
272 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
273
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
274 sub score {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
275 my $self = shift;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
276 $self->[8] = shift if (@_);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
277 return $self->[8];
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
278 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
279
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
280
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
281 =head2 merge
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
282
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
283 Arg[1] : Bio::EnsEMBL::IdMapping::SyntenyRegion $sr - another
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
284 SyntenyRegion
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
285 Example : $merged_sr = $sr->merge($other_sr);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
286 Description : Merges two overlapping SyntenyRegions if they meet certain
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
287 criteria (see documentation in the code for details). Score is
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
288 calculated as a combined distance score. If the two
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
289 SyntenyRegions aren't mergeable, this method returns undef.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
290 Return type : Bio::EnsEMBL::IdMapping::SyntenyRegion or undef
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
291 Exceptions : warns on bad scores
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
292 Caller : Bio::EnsEMBL::IdMapping::SyntenyFramework
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
293 Status : At Risk
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
294 : under development
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
295
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
296 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
297
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
298 sub merge {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
299 my ($self, $sr) = @_;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
300
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
301 # must be on same seq_region
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
302 if ($self->source_seq_region_name ne $sr->source_seq_region_name or
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
303 $self->target_seq_region_name ne $sr->target_seq_region_name) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
304 return 0;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
305 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
306
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
307 # target must be on same strand
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
308 return 0 unless ($self->target_strand == $sr->target_strand);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
309
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
310 # find the distance of source and target pair and compare
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
311 my $source_dist = $sr->source_start - $self->source_start;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
312 my $target_dist;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
313 if ($self->target_strand == 1) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
314 $target_dist = $sr->target_start - $self->target_start;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
315 } else {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
316 $target_dist = $self->target_end - $sr->target_end;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
317 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
318
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
319 # prevent division by zero error
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
320 if ($source_dist == 0 or $target_dist == 0) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
321 warn("WARNING: source_dist ($source_dist) and/or target_dist ($target_dist) is zero.\n");
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
322 return 0;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
323 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
324
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
325 # calculate a distance score
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
326 my $dist = $source_dist - $target_dist;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
327 $dist = -$dist if ($dist < 0);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
328 my $d1 = $dist/$source_dist;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
329 $d1 = -$d1 if ($d1 < 0);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
330 my $d2 = $dist/$target_dist;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
331 $d2 = -$d2 if ($d2 < 0);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
332 my $dist_score = 1 - $d1 - $d2;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
333
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
334 # distance score must be more than 50%
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
335 return 0 if ($dist_score < 0.5);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
336
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
337 my $new_score = $dist_score * ($sr->score + $self->score)/2;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
338
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
339 if ($new_score > 1) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
340 warn("WARNING: Bad merge score: $new_score\n");
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
341 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
342
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
343 # extend SyntenyRegion to cover both sources and targets, set merged score
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
344 # and return
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
345 if ($sr->source_start < $self->source_start) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
346 $self->source_start($sr->source_start);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
347 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
348 if ($sr->source_end > $self->source_end) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
349 $self->source_end($sr->source_end);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
350 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
351
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
352 if ($sr->target_start < $self->target_start) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
353 $self->target_start($sr->target_start);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
354 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
355 if ($sr->target_end > $self->target_end) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
356 $self->target_end($sr->target_end);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
357 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
358
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
359 $self->score($new_score);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
360
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
361 return $self;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
362 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
363
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
364
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
365 =head2 stretch
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
366
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
367 Arg[1] : Float $factor - stretching factor
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
368 Example : $stretched_sr = $sr->stretch(2);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
369 Description : Extends this SyntenyRegion to span a $factor * $score more area.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
370 Return type : Bio::EnsEMBL::IdMapping::SyntenyRegion
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
371 Exceptions : none
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
372 Caller : Bio::EnsEMBL::IdMapping::SyntenyFramework
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
373 Status : At Risk
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
374 : under development
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
375
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
376 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
377
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
378 sub stretch {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
379 my ($self, $factor) = @_;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
380
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
381 my $source_adjust = int(($self->source_end - $self->source_start + 1) *
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
382 $factor * $self->score);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
383 $self->source_start($self->source_start - $source_adjust);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
384 $self->source_end($self->source_end + $source_adjust);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
385 #warn sprintf(" sss %d %d %d\n", $source_adjust, $self->source_start,
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
386 # $self->source_end);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
387
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
388 my $target_adjust = int(($self->target_end - $self->target_start + 1) *
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
389 $factor * $self->score);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
390 $self->target_start($self->target_start - $target_adjust);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
391 $self->target_end($self->target_end + $target_adjust);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
392
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
393 return $self;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
394 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
395
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
396
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
397 =head2 score_location_relationship
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
398
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
399 Arg[1] : Bio::EnsEMBL::IdMapping::TinyGene $source_gene - source gene
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
400 Arg[2] : Bio::EnsEMBL::IdMapping::TinyGene $target_gene - target gene
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
401 Example : my $score = $sr->score_location_relationship($source_gene,
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
402 $target_gene);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
403 Description : This function calculates how well the given source location
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
404 interpolates on given target location inside this SyntenyRegion.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
405
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
406 Scoring is done the following way: Source and target location
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
407 are normalized with respect to this Regions source and target.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
408 Source range will then be somewhere close to 0.0-1.0 and target
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
409 range anything around that.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
410
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
411 The extend of the covered area between source and target range
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
412 is a measurement of how well they agree (smaller extend is
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
413 better). The extend (actually 2*extend) is reduced by the size
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
414 of the regions. This will result in 0.0 if they overlap
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
415 perfectly and bigger values if they dont.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
416
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
417 This is substracted from 1.0 to give the score. The score is
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
418 likely to be below zero, but is cut off at 0.0f.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
419
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
420 Finally, the score is multiplied with the score of the synteny
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
421 itself.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
422 Return type : Float
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
423 Exceptions : warns if score out of range
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
424 Caller : Bio::EnsEMBL::IdMapping::SyntenyFramework
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
425 Status : At Risk
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
426 : under development
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
427
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
428 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
429
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
430
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
431
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
432 sub score_location_relationship {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
433 my ($self, $source_gene, $target_gene) = @_;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
434
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
435 # must be on same seq_region
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
436 if (($self->source_seq_region_name ne $source_gene->seq_region_name) or
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
437 ($self->target_seq_region_name ne $target_gene->seq_region_name)) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
438 return 0;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
439 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
440
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
441 # strand relationship must be the same (use logical XOR to find out)
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
442 if (($self->source_strand == $source_gene->strand) xor
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
443 ($self->target_strand == $target_gene->strand)) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
444 return 0;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
445 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
446
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
447 # normalise source location
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
448 my $source_rel_start = ($source_gene->start - $self->source_start) /
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
449 ($self->source_end - $self->source_start + 1);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
450
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
451 my $source_rel_end = ($source_gene->end - $self->source_start + 1) /
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
452 ($self->source_end - $self->source_start + 1);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
453
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
454 #warn " aaa ".$self->to_string."\n";
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
455 #warn sprintf(" bbb %.6f %.6f\n", $source_rel_start, $source_rel_end);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
456
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
457 # cut off if the source location is completely outside
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
458 return 0 if ($source_rel_start > 1.1 or $source_rel_end < -0.1);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
459
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
460 # normalise target location
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
461 my ($target_rel_start, $target_rel_end);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
462 my $t_length = $self->target_end - $self->target_start + 1;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
463
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
464 if ($self->target_strand == 1) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
465
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
466 $target_rel_start = ($target_gene->start - $self->target_start) / $t_length;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
467
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
468 $target_rel_end = ($target_gene->end - $self->target_start + 1) / $t_length;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
469
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
470 } else {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
471 $target_rel_start = ($self->target_end - $target_gene->end) / $t_length;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
472 $target_rel_end = ($self->target_end - $target_gene->start + 1) / $t_length;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
473 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
474
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
475 my $added_range = (($target_rel_end > $source_rel_end) ? $target_rel_end :
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
476 $source_rel_end) -
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
477 (($target_rel_start < $source_rel_start) ? $target_rel_start :
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
478 $source_rel_start);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
479
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
480 my $score = $self->score * (1 - (2 * $added_range - $target_rel_end -
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
481 $source_rel_end + $target_rel_start + $source_rel_start));
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
482
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
483 #warn " ccc ".sprintf("%.6f:%.6f:%.6f:%.6f:%.6f\n", $added_range,
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
484 # $source_rel_start, $source_rel_end, $target_rel_start, $target_rel_end);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
485
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
486 $score = 0 if ($score < 0);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
487
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
488 # sanity check
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
489 if ($score > 1) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
490 warn "Out of range score ($score) for ".$source_gene->id.":".
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
491 $target_gene->id."\n";
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
492 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
493
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
494 return $score;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
495 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
496
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
497
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
498 =head2 to_string
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
499
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
500 Example : print LOG $sr->to_string, "\n";
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
501 Description : Returns a string representation of the SyntenyRegion object.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
502 Useful for debugging and logging.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
503 Return type : String
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
504 Exceptions : none
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
505 Caller : Bio::EnsEMBL::IdMapping::SyntenyFramework
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
506 Status : At Risk
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
507 : under development
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
508
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
509 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
510
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
511 sub to_string {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
512 my $self = shift;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
513 return sprintf("%s:%s-%s:%s %s:%s-%s:%s %.6f",
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
514 $self->source_seq_region_name,
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
515 $self->source_start,
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
516 $self->source_end,
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
517 $self->source_strand,
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
518 $self->target_seq_region_name,
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
519 $self->target_start,
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
520 $self->target_end,
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
521 $self->target_strand,
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
522 $self->score
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
523 );
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
524 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
525
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
526
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
527 1;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
528