annotate variant_effect_predictor/Bio/EnsEMBL/Variation/StructuralVariationFeature.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 # Ensembl module for Bio::EnsEMBL::Variation::StructuralVariationFeature
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
22 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
23 # Copyright (c) 2011 Ensembl
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
24 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
25
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
26
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
27 =head1 NAME
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
28
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
29 Bio::EnsEMBL::Variation::StructuralVariationFeature - A genomic position for a structural variation.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
30
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
31 =head1 SYNOPSIS
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
32
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
33 # Structural variation feature representing a CNV
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
34 $svf = Bio::EnsEMBL::Variation::StructuralVariationFeature->new
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
35 (-start => 100,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
36 -end => 200,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
37 -strand => 1,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
38 -slice => $slice,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
39 -variation_name => 'esv1001',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
40 -class_so_term => 'copy_number_variation',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
41 -source => 'DGVa',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
42 -source_description => 'Database of Genomic Variants Archive',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
43 );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
44
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
45 ...
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
46
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
47 print $svf->start(), "-", $svf->end(), '(', $svf->strand(), ')', "\n";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
48
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
49 print $svf->variation_name(), ":", $svf->var_class();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
50
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
51 =head1 DESCRIPTION
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
52
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
53 This is a class representing the genomic position of a structural variant
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
54 from the ensembl-variation database. A StructuralVariationFeature behaves as any other
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
55 Ensembl feature. See B<Bio::EnsEMBL::Feature> and
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
56 B<Bio::EnsEMBL::Variation::Variation>.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
57
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
58 =head1 METHODS
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
59
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
60 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
61
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
62 use strict;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
63 use warnings;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
64
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
65 package Bio::EnsEMBL::Variation::StructuralVariationFeature;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
66
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
67 use Scalar::Util qw(weaken isweak);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
68
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
69 use Bio::EnsEMBL::Variation::BaseVariationFeature;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
70 use Bio::EnsEMBL::Utils::Exception qw(throw warning deprecate);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
71 use Bio::EnsEMBL::Utils::Argument qw(rearrange);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
72 use Bio::EnsEMBL::Utils::Scalar qw(assert_ref);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
73 use Bio::EnsEMBL::Slice;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
74 use Bio::EnsEMBL::Variation::Utils::Constants qw(%VARIATION_CLASSES);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
75 use Bio::EnsEMBL::Variation::Utils::VariationEffect qw(MAX_DISTANCE_FROM_TRANSCRIPT);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
76 use Bio::EnsEMBL::Variation::StructuralVariationOverlap;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
77 use Bio::EnsEMBL::Variation::TranscriptStructuralVariation;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
78 use Bio::EnsEMBL::Variation::IntergenicStructuralVariation;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
79
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
80 our @ISA = ('Bio::EnsEMBL::Variation::BaseVariationFeature');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
81
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
82 =head2 new
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
83
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
84 Arg [-dbID] :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
85 see superclass constructor
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
86
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
87 Arg [-ADAPTOR] :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
88 see superclass constructor
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
89
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
90 Arg [-START] :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
91 see superclass constructor
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
92 Arg [-END] :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
93 see superclass constructor
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
94
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
95 Arg [-STRAND] :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
96 see superclass constructor
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
97
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
98 Arg [-SLICE] :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
99 see superclass constructor
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
100
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
101 Arg [-INNER_START] :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
102 int - the 5'-greater coordinate of the underlying structural variation
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
103
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
104 Arg [-INNER_END] :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
105 int - the 3'-less coordinate of the underlying structural variation
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
106
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
107 Arg [-OUTER_START] :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
108 int - the 5'-less coordinate of the underlying structural variation
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
109
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
110 Arg [-OUTER_END] :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
111 int - the 3'-greater coordinate of the underlying structural variation
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
112
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
113 Arg [-VARIATION_NAME] :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
114 string - the name of the variation this feature is for (denormalisation
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
115 from Variation object).
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
116
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
117 Arg [-CLASS_SO_TERM] :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
118 string - the sequence ontology term defining the class of the structural variation.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
119
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
120 Arg [-ALLELE_STRING] :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
121 string - allele sequence of the structural variation.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
122
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
123 Arg [-SOURCE] :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
124 string - the name of the source where the variation comes from
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
125
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
126 Arg [-SOURCE_VERSION]:
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
127 string - version number of the source
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
128
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
129 Arg [-IS_SOMATIC] :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
130 int - flag to inform whether the structural variant is a somatic (1) or germline (0).
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
131
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
132 Arg [-BREAKPOINT_ORDER] :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
133 int - For a structural variant with multiple breakpoints, this gives the predicted order of the breakpoint event.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
134
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
135 Example :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
136 $svf = Bio::EnsEMBL::Variation::StructuralVariationFeature->new
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
137 (-start => 100,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
138 -end => 200,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
139 -strand => 1,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
140 -slice => $slice,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
141 -variation_name => 'esv25480',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
142 -class_so_term => 'structural_variant',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
143 -source => 'DGVa');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
144
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
145 Description: Constructor. Instantiates a new StructuralVariationFeature object.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
146 Returntype : Bio::EnsEMBL::Variation::StructuralVariationFeature
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
147 Exceptions : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
148 Caller : general
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
149 Status : At Risk
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
150
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
151 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
152
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
153 sub new {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
154 my $caller = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
155 my $class = ref($caller) || $caller;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
156
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
157 my $self = $class->SUPER::new(@_);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
158
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
159 my (
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
160 $var_name,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
161 $source,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
162 $source_version,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
163 $class_so_term,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
164 $inner_start,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
165 $inner_end,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
166 $outer_start,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
167 $outer_end,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
168 $allele_string,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
169 $is_somatic,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
170 $breakpoint_order
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
171 ) = rearrange([qw(
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
172 VARIATION_NAME
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
173 SOURCE
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
174 SOURCE_VERSION
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
175 CLASS_SO_TERM
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
176 INNER_START
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
177 INNER_END
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
178 OUTER_START
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
179 INNER_START
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
180 ALLELE_STRING
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
181 IS_SOMATIC
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
182 BREAKPOINT_ORDER
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 $self->{'variation_name'} = $var_name;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
187 $self->{'source'} = $source;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
188 $self->{'source_version'} = $source_version;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
189 $self->{'class_SO_term'} = $class_so_term;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
190 $self->{'inner_start'} = $inner_start;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
191 $self->{'inner_end'} = $inner_end;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
192 $self->{'outer_start'} = $outer_start;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
193 $self->{'outer_end'} = $outer_end;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
194 $self->{'allele_string'} = $allele_string;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
195 $self->{'is_somatic'} = $is_somatic || 0;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
196 $self->{'breakpoint_order'} = $breakpoint_order;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
197
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
198 return $self;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
199 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
200
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
201
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
202
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
203 sub new_fast {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
204 my $class = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
205 my $hashref = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
206 return bless $hashref, $class;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
207 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
208
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
209
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
210 =head2 display_id
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
211
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
212 Arg [1] : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
213 Example : print $svf->display_id(), "\n";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
214 Description: Returns the 'display' identifier for this feature. For
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
215 StructuralVariationFeatures this is simply the name of the structural variation
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
216 it is associated with.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
217 Returntype : string
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
218 Exceptions : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
219 Caller : webcode
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
220 Status : At Risk
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
221
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
222 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
223
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
224 sub display_id {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
225 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
226 return $self->{'variation_name'} || '';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
227 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
228
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
229
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
230
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
231 =head2 variation_name
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
232
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
233 Arg [1] : string $newval (optional)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
234 The new value to set the variation_name attribute to
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
235 Example : $variation_name = $obj->variation_name()
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
236 Description: Getter/Setter for the variation_name attribute. This is the
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
237 name of the structural variant associated with this feature.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
238 Returntype : string
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
239 Exceptions : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
240 Caller : general
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
241 Status : Stable
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
242
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
243 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
244
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
245 sub variation_name{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
246 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
247 return $self->{'variation_name'} = shift if(@_);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
248 return $self->{'variation_name'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
249 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
250
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
251 =head2 allele_string
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
252
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
253 Arg [1] : string $newval (optional)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
254 The new value to set the allele_string attribute to
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
255 Example : $allele_string = $obj->allele_string()
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
256 Description: Getter/Setter for the allele_string attribute. This is the
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
257 genomic sequence represented by this feature.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
258 Returntype : string
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
259 Exceptions : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
260 Caller : general
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
261 Status : Stable
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
262
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
263 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
264
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
265 sub allele_string{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
266 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
267 return $self->{'allele_string'} = shift if(@_);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
268 return $self->{'allele_string'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
269 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
270
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
271
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
272
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
273 =head2 structural_variation
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
274
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
275 Arg [1] : (optional) Bio::EnsEMBL::Variation::StructuralVariation or
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
276 Bio::EnsEMBL::Variation::SupportingStructuralVariation $structural_variation
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
277 Example : $sv = $svf->structural_variation();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
278 Description: Getter/Setter for the structural variant associated with this feature.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
279 If not set, and this StructuralVariationFeature has an associated adaptor
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
280 an attempt will be made to lazy-load the structural variation from the
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
281 database.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
282 Returntype : Bio::EnsEMBL::Variation::StructuralVariation or
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
283 Bio::EnsEMBL::Variation::SupportingStructuralVariation
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
284 Exceptions : throw on incorrect argument
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
285 Caller : general
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
286 Status : Stable
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
287
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
288 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
289
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
290 sub structural_variation {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
291 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
292
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
293 if(@_) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
294 if(!ref($_[0]) || (!$_[0]->isa('Bio::EnsEMBL::Variation::StructuralVariation') &&
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
295 !$_[0]->isa('Bio::EnsEMBL::Variation::SupportingStructuralVariation')
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
296 )) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
297 throw("Bio::EnsEMBL::Variation::StructuralVariation or Bio::EnsEMBL::Variation::SupportingStructuralVariation argument expected");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
298 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
299 $self->{'structural_variation'} = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
300 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
301 elsif(!defined($self->{'structural_variation'}) && $self->{'adaptor'} &&
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
302 defined($self->{'structural_variation_id'})) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
303 # lazy-load from database on demand
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
304 my $sva = $self->{'adaptor'}->db()->get_StructuralVariationAdaptor();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
305 $self->{'structural_variation'} = $sva->fetch_by_dbID($self->{'structural_variation_id'});
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
306 if (!defined($self->{'structural_variation'})) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
307 $sva = $self->{'adaptor'}->db()->get_SupportingStructuralVariationAdaptor();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
308 $self->{'structural_variation'} = $sva->fetch_by_dbID($self->{'structural_variation_id'});
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
309 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
310 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
311
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
312 return $self->{'structural_variation'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
313 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
314
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
315
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
316
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
317
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
318
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
319 =head2 get_all_VariationSets
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
320
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
321 Args : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
322 Example : my @vs = @{$svf->get_all_VariationSets()};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
323 Description : returns a reference to a list of all the VariationSets this
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
324 StructuralVariationFeature is a member of
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
325 ReturnType : reference to list of Bio::EnsEMBL::Variation::VariationSets
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
326 Exceptions : if no adaptor is attached to this object
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
327 Caller : general
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
328 Status : At Risk
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
329 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
330
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
331 sub get_all_VariationSets {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
332 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
333
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
334 if (!$self->adaptor()) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
335 throw('An adaptor must be attached in order to get all variation sets');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
336 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
337 my $vs_adaptor = $self->adaptor()->db()->get_VariationSetAdaptor();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
338 my $variation_sets = $vs_adaptor->fetch_all_by_StructuralVariation($self->structural_variation());
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
339
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
340 return $variation_sets;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
341 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
342
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
343
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
344 =head2 get_nearest_Gene
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
345
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
346 Example : $svf->get_nearest_Gene($flanking_size);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
347 Description : Getter a Gene which is associated to or nearest to the StructuralVariationFeature
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
348 Returntype : Listref of objects of Bio::EnsEMBL::Gene
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
349 Exceptions : None
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
350 Caller : general
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
351 Status : At Risk
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
352
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
353 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
354
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
355 sub get_nearest_Gene{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
356
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
357 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
358 my $flanking_size = shift; #flanking size is optional
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
359 $flanking_size ||= 0;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
360 my $sa = $self->{'adaptor'}->db()->dnadb->get_SliceAdaptor();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
361 my $slice = $sa->fetch_by_Feature($self,$flanking_size);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
362 my @genes = @{$slice->get_all_Genes};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
363 return \@genes if @genes; #$svf is on the gene
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
364
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
365 if (! @genes) { #if $svf is not on the gene, increase flanking size
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
366 warning("flanking_size $flanking_size is not big enough to overlap a gene, increase it by 1,000,000");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
367 $flanking_size += 1000000;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
368 $slice = $sa->fetch_by_Feature($self,$flanking_size);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
369 @genes = @{$slice->get_all_Genes};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
370 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
371 if (@genes) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
372 my %distances = ();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
373 foreach my $g (@genes) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
374 if ($g->seq_region_start > $self->start) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
375 $distances{$g->seq_region_start-$self->start}=$g;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
376 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
377 else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
378 $distances{$self->start-$g->seq_region_end}=$g;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
379 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
380 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
381 my @distances = sort {$a<=>$b} keys %distances;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
382 my $shortest_distance = $distances[0];
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
383 if ($shortest_distance) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
384 my $nearest_gene = $distances{$shortest_distance};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
385 return [$nearest_gene];
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
386 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
387 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
388 else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
389 throw("variation_feature with flanking_size $flanking_size is not overlap with a gene, try a bigger flanking_size");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
390 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
391 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
392
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
393
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
394 =head2 is_somatic
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
395
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
396 Arg [1] : boolean $is_somatic (optional)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
397 The new value to set the is_somatic flag to
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
398 Example : $is_somatic = $svf->is_somatic
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
399 Description: Getter/Setter for the is_somatic flag, which identifies this structural variation feature as either somatic or germline
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
400 Returntype : boolean
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
401 Exceptions : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
402 Caller : general
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
403 Status : Stable
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
404
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
405 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
406
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
407 sub is_somatic {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
408 my ($self, $is_somatic) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
409 $self->{'is_somatic'} = $is_somatic if defined $is_somatic;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
410 return $self->{'is_somatic'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
411 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
412
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
413
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
414 =head2 breakpoint_order
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
415
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
416 Arg [1] : string $bp_order (optional)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
417 The new value to set the breakpoint order to
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
418 Example : $bp_order = $svf->breakpoint_order()
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
419 Description: Getter/Setter for the breakpoint_order attribute
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
420 Returntype : string
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
421 Exceptions : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
422 Caller : general
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
423 Status : At Risk
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
424
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
425 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
426
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
427 sub breakpoint_order {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
428 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
429 return $self->{'breakpoint_order'} = shift if(@_);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
430 return $self->{'breakpoint_order'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
431 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
432
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
433 =head2 get_all_StructuralVariationOverlaps
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
434
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
435 Description : Get all the StructuralVariationOverlaps associated with this StructuralVariation, this
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
436 includes TranscriptStructuralVariations and regulatory feature overlap object.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
437 Returntype : listref of Bio::EnsEMBL::Variation::StructuralVariationOverlap objects
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
438 Exceptions : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
439 Status : At Risk
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
440
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
441 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
442
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
443 sub get_all_StructuralVariationOverlaps {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
444 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
445
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
446 my $vfos = [
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
447 @{ $self->get_all_TranscriptStructuralVariations },
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
448 @{ $self->get_all_RegulatoryFeatureStructuralVariations },
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
449 @{ $self->get_all_MotifFeatureStructuralVariations },
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
450 ];
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
451
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
452 if (my $iv = $self->get_IntergenicStructuralVariation) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
453 push @$vfos, $iv;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
454 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
455
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
456 return $vfos;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
457 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
458
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
459 =head2 get_all_TranscriptStructuralVariations
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
460
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
461 Arg [1] : (optional) listref of Bio::EnsEMBL::Transcript objects
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
462 Example : $svf->get_all_TranscriptStructuralVariations;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
463 Description : Get all the TranscriptStructuralVariations associated with this
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
464 StructuralVariationFeature. If the optional list of Transcripts
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
465 is supplied, get only TranscriptStructuralVariations
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
466 associated with those Transcripts.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
467 Returntype : listref of Bio::EnsEMBL::Variation::TranscriptVariation objects
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
468 Exceptions : Thrown on wrong argument type
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
469 Caller : general
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
470 Status : At Risk
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
471
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
472 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
473
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
474 sub get_all_TranscriptStructuralVariations {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
475 my ($self, $transcripts) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
476
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
477 if ($transcripts) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
478 assert_ref($transcripts, 'ARRAY');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
479 map { assert_ref($_, 'Bio::EnsEMBL::Transcript') } @$transcripts;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
480 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
481
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
482 elsif (not defined $self->{transcript_structural_variations}) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
483 # this VariationFeature is not in the database so we have to build the
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
484 # TranscriptVariations ourselves
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
485
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
486 unless ($transcripts) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
487 # if the caller didn't supply some transcripts fetch those around this VariationFeature
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
488 # get a slice around this transcript including the maximum distance up and down-stream
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
489 # that we still call consequences for
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
490 my $slice = $self->feature_Slice->expand(
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
491 MAX_DISTANCE_FROM_TRANSCRIPT,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
492 MAX_DISTANCE_FROM_TRANSCRIPT
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
493 );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
494
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
495 # fetch all transcripts on this slice
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
496 $transcripts = $slice->get_all_Transcripts(1);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
497 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
498
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
499 my @unfetched_transcripts = grep {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
500 not exists $self->{transcript_structural_variations}->{$_->stable_id}
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
501 } @$transcripts;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
502
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
503 for my $transcript (@unfetched_transcripts) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
504 $self->add_TranscriptStructuralVariation(
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
505 Bio::EnsEMBL::Variation::TranscriptStructuralVariation->new(
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
506 -structural_variation_feature => $self,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
507 -transcript => $transcript,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
508 -adaptor => undef,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
509 )
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
510 );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
511 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
512 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
513
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
514 if ($transcripts) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
515 # just return TranscriptVariations for the requested Transcripts
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
516 return [ map { $self->{transcript_structural_variations}->{$_->stable_id} } @$transcripts ];
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
517 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
518 else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
519 # return all TranscriptVariations
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
520 return [ values %{ $self->{transcript_structural_variations} } ];
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
521 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
522 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
523
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
524 =head2 get_all_RegulatoryFeatureStructuralVariations
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
525
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
526 Description : Get all the RegulatoryFeatureStructuralVariations associated with this VariationFeature.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
527 Returntype : listref of Bio::EnsEMBL::Variation::StructuralVariationOverlap objects
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
528 Exceptions : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
529 Status : At Risk
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
530
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
531 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
532
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
533 sub get_all_RegulatoryFeatureStructuralVariations {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
534 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
535 return $self->_get_all_RegulationStructuralVariations('RegulatoryFeature', @_);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
536 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
537
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
538 =head2 get_all_MotifFeatureStructuralVariations
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
539
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
540 Description : Get all the MotifFeatureStructuralVariations associated with this VariationFeature.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
541 Returntype : listref of Bio::EnsEMBL::Variation::StructuralVariationOverlap objects
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
542 Exceptions : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
543 Status : At Risk
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
544
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
545 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
546
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
547 sub get_all_MotifFeatureStructuralVariations {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
548 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
549 return $self->_get_all_RegulationStructuralVariations('MotifFeature', @_);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
550 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
551
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
552 =head2 get_all_ExternalFeatureStructuralVariations
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
553
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
554 Description : Get all the ExternalFeatureStructuralVariations associated with this VariationFeature.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
555 Returntype : listref of Bio::EnsEMBL::Variation::StructuralVariationOverlap objects
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
556 Exceptions : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
557 Status : At Risk
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
558
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
559 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
560
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
561 sub get_all_ExternalFeatureStructuralVariations {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
562 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
563 return $self->_get_all_RegulationStructuralVariations('ExternalFeature', @_);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
564 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
565
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
566 sub _get_all_RegulationStructuralVariations {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
567 my ($self, $type) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
568
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
569 unless ($type && ($type eq 'RegulatoryFeature' || $type eq 'MotifFeature' || $type eq 'ExternalFeature')) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
570 throw("Invalid Ensembl Regulation type '$type'");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
571 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
572
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
573 unless ($self->{regulation_structural_variations}->{$type}) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
574 my $fg_adaptor;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
575
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
576 if (my $adap = $self->adaptor) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
577 if(my $db = $adap->db) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
578 $fg_adaptor = Bio::EnsEMBL::DBSQL::MergedAdaptor->new(
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
579 -species => $adap->db->species,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
580 -type => $type,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
581 );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
582 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
583
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
584 unless ($fg_adaptor) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
585 warning("Failed to get adaptor for $type");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
586 return [];
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
587 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
588 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
589 else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
590 warning('Cannot get variation features without attached adaptor');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
591 return [];
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
592 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
593
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
594 my $slice = $self->feature_Slice;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
595
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
596 my $constructor = 'Bio::EnsEMBL::Variation::StructuralVariationOverlap';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
597
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
598 eval {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
599 $self->{regulation_structural_variations}->{$type} = [
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
600 map {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
601 $constructor->new(
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
602 -structural_variation_feature => $self,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
603 -feature => $_,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
604 );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
605 } map { $_->transfer($self->slice) } @{ $fg_adaptor->fetch_all_by_Slice($slice) }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
606 ];
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
607 };
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
608
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
609 $self->{regulation_structural_variations}->{$type} ||= [];
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
610 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
611
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
612 return $self->{regulation_structural_variations}->{$type};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
613 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
614
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
615
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
616 sub get_IntergenicStructuralVariation {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
617 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
618 my $no_ref_check = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
619
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
620 unless (exists $self->{intergenic_structural_variation}) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
621 if (scalar(@{ $self->get_all_TranscriptStructuralVariations }) == 0) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
622 $self->{intergenic_structural_variation} = Bio::EnsEMBL::Variation::IntergenicStructuralVariation->new(
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
623 -structural_variation_feature => $self,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
624 -no_ref_check => $no_ref_check,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
625 );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
626 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
627 else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
628 $self->{intergenic_structural_variation} = undef;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
629 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
630 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
631
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
632 return $self->{intergenic_structural_variation};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
633 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
634
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
635
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
636
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
637 =head2 TranscriptStructuralVariation
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
638
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
639 Arg [1] : Bio::EnsEMBL::Variation::TranscriptStructuralVariation
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
640 Example : $vf->add_TranscriptStructuralVariation($tsv);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
641 Description : Adds a TranscriptStructuralVariation to the structural variation
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
642 feature object.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
643 Exceptions : thrown on bad argument
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
644 Caller : Bio::EnsEMBL::Variation::StructuralVariationFeature,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
645 Bio::EnsEMBL::Varaition::Utils::VEP
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
646 Status : Stable
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
647
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
648 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
649
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
650 sub add_TranscriptStructuralVariation {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
651 my ($self, $tsv) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
652 assert_ref($tsv, 'Bio::EnsEMBL::Variation::TranscriptStructuralVariation');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
653 # we need to weaken the reference back to us to avoid a circular reference
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
654 weaken($tsv->{base_variation_feature});
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
655 $self->{transcript_structural_variations}->{$tsv->transcript_stable_id} = $tsv;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
656 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
657
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
658
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
659 =head2 var_class
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
660
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
661 Args : None
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
662 Example : my $sv_class = $svf->var_class()
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
663 Description : Getter for the class of structural variation
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
664 ReturnType : String
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
665 Exceptions : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
666 Caller : General
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
667 Status : At Risk
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
668
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
669 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
670
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
671 sub var_class {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
672 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
673
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
674 unless ($self->{class_display_term}) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
675 my $display_term = $VARIATION_CLASSES{$self->{class_SO_term}}->{display_term};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
676
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
677 warn "No display term for SO term: ".$self->{class_SO_term} unless $display_term;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
678
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
679 $self->{class_display_term} = $display_term || $self->{class_SO_term};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
680 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
681
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
682 return $self->{class_display_term};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
683 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
684
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
685
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
686 =head2 class_SO_term
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
687
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
688 Args : None
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
689 Example : my $sv_so_term = $svf->class_SO_term()
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
690 Description : Getter for the class of structural variation, returning the SO term
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
691 ReturnType : String
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
692 Exceptions : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
693 Caller : General
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
694 Status : At Risk
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
695
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
696 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
697
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
698 sub class_SO_term {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
699 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
700
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
701 return $self->{class_SO_term};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
702 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
703
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
704
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
705 =head2 source
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
706
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
707 Arg [1] : string $source (optional)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
708 The new value to set the source attribute to
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
709 Example : $source = $svf->source()
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
710 Description: Getter/Setter for the source attribute
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
711 Returntype : string
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
712 Exceptions : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
713 Caller : general
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
714 Status : At Risk
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
715
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
716 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
717
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
718 sub source{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
719 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
720 return $self->{'source'} = shift if(@_);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
721 return $self->{'source'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
722 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
723
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
724 =head2 source_version
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
725
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
726 Arg [1] : string $source_version (optional)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
727 The new value to set the source_version attribute to
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
728 Example : $source_version = $svf->source_version()
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
729 Description: Getter/Setter for the source_version attribute
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
730 Returntype : string
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
731 Exceptions : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
732 Caller : general
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
733 Status : At Risk
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
734
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
735 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
736
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
737 sub source_version {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
738 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
739 return $self->{'source_version'} = shift if(@_);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
740 return $self->{'source_version'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
741 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
742
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
743 =head2 bound_start
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
744
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
745 Args : None
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
746 Example : my $bound_start = $svf->bound_start();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
747 Description : Getter/setter for the 5'-most coordinate defined for this StructuralVariationFeature (outer_start or start)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
748 ReturnType : int
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
749 Exceptions : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
750 Caller : general
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
751 Status : At risk
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
752 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
753
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
754 sub bound_start{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
755 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
756 return $self->{'outer_start'} if (defined($self->{'outer_start'}));
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
757 return $self->{'start'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
758 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
759
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
760
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
761 =head2 bound_end
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
762
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
763 Args : None
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
764 Example : my $bound_end = $svf->bound_end();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
765 Description : Getter/setter for the 3'-most coordinate defined for this StructuralVariationFeature (outer_end or end)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
766 ReturnType : int
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
767 Exceptions : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
768 Caller : general
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
769 Status : At risk
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
770 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
771
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
772 sub bound_end{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
773 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
774 return $self->{'outer_end'} if (defined($self->{'outer_end'}));
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
775 return $self->{'end'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
776 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
777
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
778
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
779 =head2 outer_start
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
780
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
781 Arg [1] : int $outer_start (optional)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
782 The new value to set the outer_start attribute to
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
783 Example : my $outer_start = $svf->outer_start();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
784 Description : Getter/setter for the 5'-most coordinate defined for this StructuralVariationFeature
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
785 ReturnType : int
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
786 Exceptions : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
787 Caller : general
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
788 Status : At risk
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
789 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
790
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
791 sub outer_start{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
792 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
793 return $self->{'outer_start'} = shift if(@_);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
794 return $self->{'outer_start'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
795 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
796
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
797
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
798 =head2 outer_end
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
799
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
800 Arg [1] : int $outer_end (optional)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
801 The new value to set the outer_end attribute to
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
802 Example : my $outer_end = $svf->outer_end();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
803 Description : Getter/setter for the 3'-most coordinate defined for this StructuralVariationFeature
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
804 ReturnType : int
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
805 Exceptions : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
806 Caller : general
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
807 Status : At risk
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
808 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
809
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
810 sub outer_end{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
811 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
812 return $self->{'outer_end'} = shift if(@_);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
813 return $self->{'outer_end'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
814 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
815
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
816
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
817 =head2 inner_start
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
818
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
819 Arg [1] : int $inner_start (optional)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
820 The new value to set the inner_start attribute to
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
821 Example : my $inner_start = $svf->inner_start();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
822 Description : Getter/setter for the 5'-less coordinate defined for this StructuralVariationFeature
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
823 ReturnType : int
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
824 Exceptions : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
825 Caller : general
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
826 Status : At Risk
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
827 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
828
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
829 sub inner_start{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
830 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
831 return $self->{'inner_start'} = shift if(@_);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
832 return $self->{'inner_start'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
833 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
834
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
835
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
836 =head2 inner_end
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
837
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
838 Arg [1] : int $inner_end (optional)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
839 The new value to set the inner_end attribute to
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
840 Example : my $inner_end = $svf->inner_end();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
841 Description : Getter/setter for the 3'-less coordinate defined for this StructuralVariationFeature
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
842 ReturnType : int
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
843 Exceptions : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
844 Caller : general
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
845 Status : At Risk
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
846 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
847
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
848 sub inner_end{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
849 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
850 return $self->{'inner_end'} = shift if(@_);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
851 return $self->{'inner_end'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
852 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
853
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
854
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
855 =head2 get_reference_sequence
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
856
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
857 Args : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
858 Example : my $seq = $svf->get_reference_sequence
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
859 Description : returns a string containing the reference sequence for the region
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
860 covered by this StructuralVariationFeature
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
861 ReturnType : string
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
862 Exceptions : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
863 Caller : general
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
864 Status : At Risk
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
865 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
866
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
867 sub get_reference_sequence{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
868 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
869
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
870 return $self->feature_Slice->seq();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
871 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
872
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
873
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
874 sub transform {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
875 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
876
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
877 # run the transform method from the parent class
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
878 my $transformed = $self->SUPER::transform(@_);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
879
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
880 if(defined $transformed) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
881 # fit the start and end coords to the new coords
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
882 $transformed->_fix_bounds($self);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
883 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
884
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
885 return $transformed;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
886 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
887
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
888
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
889 sub transfer {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
890 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
891
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
892 # run the transfer method from the parent class
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
893 my $transferred = $self->SUPER::transfer(@_);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
894
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
895 if(defined $transferred) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
896 # fit the start and end coords to the new coords
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
897 $transferred->_fix_bounds($self);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
898 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
899
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
900 return $transferred;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
901 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
902
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
903
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
904 sub _fix_bounds {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
905 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
906 my $old = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
907
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
908 if(defined $old->{'outer_start'}) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
909 $self->{'outer_start'} = $self->start - ($old->start - $old->{'outer_start'});
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
910 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
911
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
912 if(defined $old->{'outer_end'}) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
913 $self->{'outer_end'} = $self->end + ($old->{'outer_end'} - $old->end);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
914 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
915 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
916
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
917 sub _sort_svos {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
918 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
919
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
920 return unless defined $self->{structural_variation_overlaps};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
921
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
922 my @svos = @{$self->{structural_variation_overlaps}};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
923
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
924 # define a feature order for sorting
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
925 my %feature_order = (
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
926 'Bio::EnsEMBL::Gene' => 1,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
927 'Bio::EnsEMBL::Transcript' => 2,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
928 'Bio::EnsEMBL::Exon' => 3,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
929 );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
930
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
931 # sort them nicely by feature type and position
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
932 @svos = sort {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
933 $feature_order{ref($a->feature)} <=> $feature_order{ref($b->feature)} ||
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
934 $a->feature->start <=> $b->feature->start
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
935 } @svos;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
936
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
937 $self->{structural_variation_overlaps} = \@svos;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
938 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
939
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
940 1;