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

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