annotate variant_effect_predictor/Bio/EnsEMBL/Variation/BaseVariationFeatureOverlapAllele.pm @ 1:d6778b5d8382 draft default tip

Deleted selected files
author willmclaren
date Fri, 03 Aug 2012 10:05:43 -0400
parents 21066c0abaf5
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1 =head1 LICENSE
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
3 Copyright (c) 1999-2012 The European Bioinformatics Institute and
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
4 Genome Research Limited. All rights reserved.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
5
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
6 This software is distributed under a modified Apache license.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
7 For license details, please see
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
8
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
9 http://www.ensembl.org/info/about/code_licence.html
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
10
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
11 =head1 CONTACT
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
12
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
13 Please email comments or questions to the public Ensembl
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
14 developers list at <dev@ensembl.org>.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
15
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
16 Questions may also be sent to the Ensembl help desk at
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
17 <helpdesk@ensembl.org>.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
18
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
19 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
20
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
21 =head1 NAME
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
22
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
23 Bio::EnsEMBL::Variation::BaseVariationFeatureOverlapAllele
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
24
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
25 =head1 SYNOPSIS
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
26
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
27 use Bio::EnsEMBL::Variation::BaseVariationFeatureOverlapAllele;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
28
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
29 my $bvfoa = Bio::EnsEMBL::Variation::BaseVariationFeatureOverlapAllele->new(
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
30 -base_variation_feature_overlap => $bvfo,
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
31 -is_reference => 0,
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
32 );
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
33
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
34 print "consequence SO terms: ", (join ",", map { $_->SO_term } @{ $bvfoa->get_all_OverlapConsequences }), "\n";
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
35
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
36 =head1 DESCRIPTION
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
37
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
38 A BaseVariationFeatureOverlapAllele object represents a single allele of a
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
39 BaseVariationFeatureOverlap. It is the super-class of variation feature specific
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
40 classes such as VariationFeatureOverlapAllele and StructuralVariationOverlapAllele
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
41 and contains methods not specific to any particular variation feature type.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
42 Ordinarily you will not create these objects yourself, but instead you would
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
43 create one of the more specific subclasses.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
44
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
45 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
46
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
47 package Bio::EnsEMBL::Variation::BaseVariationFeatureOverlapAllele;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
48
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
49 use strict;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
50 use warnings;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
51
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
52 use Bio::EnsEMBL::Utils::Argument qw(rearrange);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
53 use Bio::EnsEMBL::Utils::Scalar qw(assert_ref);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
54 use Bio::EnsEMBL::Utils::Exception qw(throw);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
55 use Bio::EnsEMBL::Variation::Utils::Constants qw(%OVERLAP_CONSEQUENCES);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
56 use Scalar::Util qw(weaken);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
57
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
58 =head2 new
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
59
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
60 Arg [-BASE_VARIATION_FEATURE_OVERLAP] :
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
61 The Bio::EnsEMBL::BaseVariationFeatureOverlap with which this allele is
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
62 associated
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
63
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
64 Arg [-IS_REFERENCE] :
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
65 A flag indicating if this allele is the reference allele or not
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
66
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
67 Example :
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
68 my $bvfoa = Bio::EnsEMBL::Variation::BaseVariationFeatureOverlapAllele->new(
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
69 -base_variation_feature_overlap => $bvfo,
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
70 -is_reference => 0
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
71 );
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
72
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
73 Description: Constructs a new BaseVariationFeatureOverlapAllele instance given a
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
74 BaseVariationFeatureOverlap and a flag indicating if this is the
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
75 reference allele
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
76 Returntype : A new Bio::EnsEMBL::Variation::BaseVariationFeatureOverlapAllele instance
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
77 Exceptions : throws unlessBASE_VARIATION_FEATURE_OVERLAP is supplied
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
78 Status : At Risk
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
79
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
80 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
81
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
82 sub new {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
83 my $class = shift;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
84
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
85 my (
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
86 $base_variation_feature_overlap,
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
87 $is_reference
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
88 ) = rearrange([qw(
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
89 BASE_VARIATION_FEATURE_OVERLAP
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
90 IS_REFERENCE
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
91 )], @_);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
92
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
93 assert_ref($base_variation_feature_overlap, 'Bio::EnsEMBL::Variation::BaseVariationFeatureOverlap');
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
94
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
95 my $self = bless {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
96 base_variation_feature_overlap => $base_variation_feature_overlap,
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
97 is_reference => $is_reference,
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
98 }, $class;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
99
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
100 # avoid a memory leak, because the bvfo also has a reference to us
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
101 weaken $self->{base_variation_feature_overlap};
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
102
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
103 return $self;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
104 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
105
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
106 sub new_fast {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
107 my ($class, $hashref) = @_;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
108 my $self = bless $hashref, $class;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
109 # avoid a memory leak, because the bvfo also has a reference to us
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
110 weaken $self->{base_variation_feature_overlap} if $self->{base_variation_feature_overlap};
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
111 return $self;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
112 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
113
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
114 =head2 base_variation_feature_overlap
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
115
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
116 Description: Get/set the associated BaseVariationFeatureOverlap
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
117 Returntype : Bio::EnsEMBL::Variation::BaseVariationFeatureOverlap
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
118 Exceptions : throws if the argument is the wrong type
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
119 Status : At Risk
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
120
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
121 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
122
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
123 sub base_variation_feature_overlap {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
124 my ($self, $bvfo) = @_;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
125
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
126 if ($bvfo) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
127 assert_ref($bvfo, 'Bio::EnsEMBL::Variation::BaseVariationFeatureOverlap');
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
128 $self->{base_variation_feature_overlap} = $bvfo;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
129 # avoid a memory leak, because the bvfo also has a reference to us
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
130 weaken $self->{base_variation_feature_overlap};
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
131 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
132
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
133 return $self->{base_variation_feature_overlap};
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
134 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
135
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
136 =head2 base_variation_feature
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
137
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
138 Description: Get the associated BaseVariationFeature
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
139 Returntype : Bio::EnsEMBL::Variation::BaseVariationFeature
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
140 Exceptions : none
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
141 Status : At Risk
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
142
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
143 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
144
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
145 sub base_variation_feature {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
146 my $self = shift;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
147 return $self->base_variation_feature_overlap->base_variation_feature(@_);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
148 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
149
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
150 =head2 feature
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
151
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
152 Description: Get the associated Feature
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
153 Returntype : Bio::EnsEMBL::Feature (or relevant subclass)
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
154 Exceptions : none
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
155 Status : At Risk
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
156
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
157 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
158
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
159 sub feature {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
160 my $self = shift;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
161 return $self->base_variation_feature_overlap->feature(@_);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
162 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
163
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
164 =head2 is_reference
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
165
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
166 Args [1] : A boolean value
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
167 Description: Get/set a flag indicating if this allele is the reference allele
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
168 Returntype : bool
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
169 Exceptions : none
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
170 Status : At Risk
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
171
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
172 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
173
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
174 sub is_reference {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
175 my ($self, $is_reference) = @_;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
176 $self->{is_reference} = $is_reference if defined $is_reference;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
177 return $self->{is_reference};
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
178 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
179
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
180 =head2 get_all_OverlapConsequences
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
181
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
182 Description: Get a list of all the OverlapConsequences of this allele, calculating them
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
183 on the fly if necessary
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
184 Returntype : listref of Bio::EnsEMBL::Variation::OverlapConsequence objects
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
185 Exceptions : none
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
186 Status : At Risk
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
187
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
188 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
189
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
190 sub get_all_OverlapConsequences {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
191 my $self = shift;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
192
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
193 unless ($self->{overlap_consequences}) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
194
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
195 # calculate consequences on the fly
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
196
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
197 my $cons = [];
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
198
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
199 my $assigned_tier;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
200
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
201 # loop over all the possible consequences
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
202 for my $oc (@{$self->get_sorted_OverlapConsequences}) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
203
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
204 last if defined($assigned_tier) and $oc->tier > $assigned_tier;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
205
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
206 # check that this consequence applies to this type of variation feature
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
207
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
208 if ($oc->variant_feature_class && $self->base_variation_feature->isa($oc->variant_feature_class)) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
209
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
210 # check that this consequence applies to this type of feature
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
211
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
212 if ($self->feature->isa($oc->feature_class)) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
213
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
214 # if so, check if the predicate of this consequence holds for this bvfoa
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
215 my $check = $oc->predicate->($self);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
216
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
217 #print STDERR $self->base_variation_feature->variation_name." ".$oc->{SO_term}." ".$self->feature->stable_id. " $check\n";
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
218
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
219 if ($check) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
220 push @$cons, $oc;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
221 $assigned_tier = $oc->tier;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
222 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
223 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
224 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
225 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
226
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
227 $self->{overlap_consequences} = $cons;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
228 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
229
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
230 return $self->{overlap_consequences};
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
231 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
232
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
233 =head2 add_OverlapConsequence
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
234
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
235 Arg [1] : Bio::EnsEMBL::Variation::OverlapConsequence instance
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
236 Description: Add an OverlapConsequence to this allele's list
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
237 Returntype : none
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
238 Exceptions : throws if the argument is the wrong type
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
239 Status : At Risk
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
240
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
241 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
242
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
243 sub add_OverlapConsequence {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
244 my ($self, $oc) = @_;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
245 assert_ref($oc, 'Bio::EnsEMBL::Variation::OverlapConsequence');
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
246 $self->{overlap_consequences} ||= [];
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
247 push @{ $self->{overlap_consequences} }, $oc;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
248 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
249
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
250 sub SO_isa {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
251 my ($self, $query) = @_;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
252
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
253 if (my $adap = $self->base_variation_feature_overlap->{adaptor}) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
254 if (my $ota = $adap->db->dnadb->get_OntologyTermAdaptor) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
255 my $term = $ota->fetch_by_accession();
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
256 my @parents = $ota->fetch_by_child_term($term);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
257 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
258 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
259
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
260 for my $cons (@{ $self->get_all_OverlapConsequences }) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
261 if ($cons->SO_term eq $query) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
262 return 1;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
263 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
264 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
265 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
266
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
267 sub get_sorted_OverlapConsequences {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
268 my $self = shift;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
269
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
270 if(!defined($self->base_variation_feature_overlap->adaptor->{sorted_cons})) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
271 my @sorted = sort {$a->tier <=> $b->tier} values %OVERLAP_CONSEQUENCES;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
272 $self->base_variation_feature_overlap->adaptor->{sorted_cons} = \@sorted;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
273 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
274
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
275 return $self->base_variation_feature_overlap->adaptor->{sorted_cons};
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
276 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
277
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
278 1;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
279