annotate variant_effect_predictor/Bio/EnsEMBL/Variation/VariationFeatureOverlapAllele.pm @ 0:1f6dce3d34e0

Uploaded
author mahtabm
date Thu, 11 Apr 2013 02:01:53 -0400
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1 =head1 LICENSE
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
3 Copyright (c) 1999-2012 The European Bioinformatics Institute and
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
4 Genome Research Limited. All rights reserved.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
5
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
6 This software is distributed under a modified Apache license.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
7 For license details, please see
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
8
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
9 http://www.ensembl.org/info/about/code_licence.html
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
10
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
11 =head1 CONTACT
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
12
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
13 Please email comments or questions to the public Ensembl
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
14 developers list at <dev@ensembl.org>.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
15
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
16 Questions may also be sent to the Ensembl help desk at
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
17 <helpdesk@ensembl.org>.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
18
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
19 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
20
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
21 =head1 NAME
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
22
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
23 Bio::EnsEMBL::Variation::VariationFeatureOverlapAllele
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
24
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
25 =head1 SYNOPSIS
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
26
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
27 use Bio::EnsEMBL::Variation::VariationFeatureOverlapAllele;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
28
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
29 my $vfoa = Bio::EnsEMBL::Variation::VariationFeatureOverlapAllele->new(
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
30 -variation_feature_overlap => $vfo,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
31 -variation_feature_seq => 'A',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
32 -is_reference => 0,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
33 );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
34
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
35 print "sequence with respect to the feature: ", $vfoa->feature_seq, "\n";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
36 print "sequence with respect to the variation feature: ", $vfoa->variation_feature_seq, "\n";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
37 print "consequence SO terms: ", (join ",", map { $_->SO_term } @{ $vfoa->get_all_OverlapConsequences }), "\n";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
38
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
39 =head1 DESCRIPTION
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
40
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
41 A VariationFeatureOverlapAllele object represents a single allele of a
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
42 VariationFeatureOverlap. It is the super-class of various feature-specific allele
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
43 classes such as TranscriptVariationAllele and RegulatoryFeatureVariationAllele and
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
44 contains methods not specific to any particular feature type. Ordinarily you will
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
45 not create these objects yourself, but instead you would create e.g. a
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
46 TranscriptVariation object which will then create VariationFeatureOverlapAlleles
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
47 based on the allele string of the associated VariationFeature.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
48
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
49 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
50
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
51 package Bio::EnsEMBL::Variation::VariationFeatureOverlapAllele;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
52
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
53 use strict;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
54 use warnings;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
55
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
56 use Bio::EnsEMBL::Utils::Argument qw(rearrange);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
57 use Bio::EnsEMBL::Utils::Scalar qw(assert_ref);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
58 use Bio::EnsEMBL::Utils::Exception qw(throw);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
59 use Bio::EnsEMBL::Utils::Sequence qw(reverse_comp);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
60
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
61 use base qw(Bio::EnsEMBL::Variation::BaseVariationFeatureOverlapAllele);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
62
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
63 our $UNAMBIGUOUS_NUCLEOTIDES = qr/^[ACGT-]+$/i;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
64
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
65 our $ALL_NUCLEOTIDES = qr/^[ACGTUMRWSYKVHDBXN-]+$/i;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
66
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
67 our $SPECIFIED_LENGTH = qr /(\d+) BP (INSERTION|DELETION)/i;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
68
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
69 =head2 new
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
70
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
71 Arg [-VARIATION_FEATURE_OVERLAP] :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
72 The Bio::EnsEMBL::VariationFeatureOverlap with which this allele is
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
73 associated
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
74
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
75 Arg [-VARIATION_FEATURE_SEQ] :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
76 The allele sequence with respect to the associated VariationFeature
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
77
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
78 Arg [-IS_REFERENCE] :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
79 A flag indicating if this allele is the reference allele or not
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
80
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
81 Example :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
82 my $vfoa = Bio::EnsEMBL::Variation::VariationFeatureOverlapAllele->new(
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
83 -variation_feature_ovelap => $vfo,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
84 -variation_feature_seq => 'A',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
85 -is_reference => 0
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
86 );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
87
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
88 Description: Constructs a new VariationFeatureOverlapAllele instance given a
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
89 VariationFeatureOverlap and the sequence of the allele
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
90 Returntype : A new Bio::EnsEMBL::Variation::VariationFeatureOverlapAllele instance
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
91 Exceptions : throws unless both VARIATION_FEATURE_OVERLAP and VARIATION_FEATURE_SEQ
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
92 are supplied
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
93 Status : At Risk
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
94
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
95 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
96
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
97 sub new {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
98 my $class = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
99
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
100 my %args = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
101
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
102 # swap a '-variation_feature_overlap' argument for a '-base_variation_feature_overlap'
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
103 # and a '-variation_feature' for a '-base_variation_feature' for the superclass
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
104
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
105 for my $arg (keys %args) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
106 if (lc($arg) eq '-variation_feature_overlap') {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
107 $args{'-base_variation_feature_overlap'} = delete $args{$arg};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
108 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
109 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
110
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
111 my $self = $class->SUPER::new(%args);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
112
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
113 assert_ref($self->base_variation_feature_overlap, 'Bio::EnsEMBL::Variation::VariationFeatureOverlap');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
114
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
115 my (
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
116 $variation_feature_seq,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
117 ) = rearrange([qw(
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
118 VARIATION_FEATURE_SEQ
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
119 )], %args);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
120
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
121
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
122 throw("Allele sequence required (variation "+$self->variation_feature->variation_name+")")
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
123 unless $variation_feature_seq;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
124
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
125 $self->{variation_feature_seq} = $variation_feature_seq;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
126
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
127 return $self;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
128 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
129
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
130 sub new_fast {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
131 my ($class, $hashref) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
132
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
133 # swap a variation_feature_overlap argument for a base_variation_feature_overlap one
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
134
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
135 if ($hashref->{variation_feature_overlap}) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
136 $hashref->{base_variation_feature_overlap} = delete $hashref->{variation_feature_overlap};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
137 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
138
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
139 # and call the superclass
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
140
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
141 return $class->SUPER::new_fast($hashref);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
142 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
143
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
144 =head2 dbID
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
145
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
146 Description: Get/set the dbID of this VariationFeatureOverlapAllele
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
147 Returntype : integer
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
148 Exceptions : none
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 dbID {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
154 my ($self, $dbID) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
155 $self->{dbID} = $dbID if defined $dbID;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
156 return $self->{dbID};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
157 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
158
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
159 =head2 variation_feature_overlap
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
160
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
161 Description: Get/set the associated VariationFeatureOverlap
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
162 Returntype : Bio::EnsEMBL::Variation::VariationFeatureOverlap
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
163 Exceptions : throws if the argument is the wrong type
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
164 Status : At Risk
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
165
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
166 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
167
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
168 sub variation_feature_overlap {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
169 my ($self, $variation_feature_overlap) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
170
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
171 if ($variation_feature_overlap) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
172 assert_ref($variation_feature_overlap, 'Bio::EnsEMBL::Variation::VariationFeatureOverlap');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
173 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
174
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
175 return $self->base_variation_feature_overlap($variation_feature_overlap);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
176 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
177
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
178 =head2 variation_feature
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
179
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
180 Description: Get the associated VariationFeature
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
181 Returntype : Bio::EnsEMBL::Variation::VariationFeature
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
182 Exceptions : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
183 Status : At Risk
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
184
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
185 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
186
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
187 sub variation_feature {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
188 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
189 return $self->variation_feature_overlap->variation_feature;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
190 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
191
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
192 =head2 feature_seq
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
193
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
194 Description: Get the sequence of this allele relative to the associated Feature.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
195 This will be the same as the variation_feature_seq when the associated
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
196 VariationFeature is on the same strand as the Feature, or the reverse
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
197 complement when the strands differ.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
198 Returntype : string
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
199 Exceptions : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
200 Status : At Risk
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
201
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
202 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
203
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
204 sub feature_seq {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
205 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
206
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
207 unless ($self->{feature_seq}) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
208
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
209 # check if we need to reverse complement the variation_feature_seq
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
210
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
211 if (($self->variation_feature->strand != $self->feature->strand) && $self->seq_is_dna) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
212 my $vf_seq = $self->variation_feature_seq;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
213 reverse_comp(\$vf_seq);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
214 $self->{feature_seq} = $vf_seq;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
215 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
216 else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
217 $self->{feature_seq} = $self->{variation_feature_seq};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
218 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
219 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
220
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
221 return $self->{feature_seq};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
222 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
223
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
224 =head2 variation_feature_seq
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
225
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
226 Args [1] : The allele sequence relative to the VariationFeature
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
227 Description: Get/set the sequence of this allele relative to the associated VariationFeature.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
228 Returntype : string
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
229 Exceptions : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
230 Status : At Risk
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
231
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
232 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
233
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
234 sub variation_feature_seq {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
235 # the sequence of this allele relative to the variation feature
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
236 my ($self, $variation_feature_seq) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
237 $self->{variation_feature_seq} = $variation_feature_seq if $variation_feature_seq;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
238 return $self->{variation_feature_seq};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
239 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
240
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
241 =head2 seq_is_unambiguous_dna
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
242
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
243 Description: identify if the sequence of this allele is unambiguous DNA
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
244 i.e. if we can meaningfully translate it
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
245 Returntype : bool
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
246 Exceptions : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
247 Status : At Risk
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
248
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
249 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
250
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
251 sub seq_is_unambiguous_dna {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
252 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
253
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
254 unless (defined $self->{seq_is_unambiguous_dna}) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
255 $self->{seq_is_unambiguous_dna} =
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
256 $self->{variation_feature_seq} =~ /$UNAMBIGUOUS_NUCLEOTIDES/ ? 1 : 0;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
257 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
258
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
259 return $self->{seq_is_unambiguous_dna};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
260 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
261
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
262 =head2 seq_is_dna
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
263
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
264 Description: identify if the sequence of this allele is DNA including ambiguity
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
265 codes, use seq_is_unambiguous_dna to check for alleles that do not
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
266 include ambiguity codes
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
267 Returntype : bool
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
268 Exceptions : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
269 Status : At Risk
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
270
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
271 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
272
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
273 sub seq_is_dna {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
274 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
275
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
276 unless (defined $self->{seq_is_dna}) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
277 $self->{seq_is_dna} =
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
278 $self->{variation_feature_seq} =~ /$ALL_NUCLEOTIDES/ ? 1 : 0;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
279 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
280
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
281 return $self->{seq_is_dna};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
282 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
283
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
284 =head2 seq_length
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
285
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
286 Description: return the length of this allele sequence, this is better than
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
287 just using length($vfoa->feature_seq) because we check if the
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
288 sequence is valid DNA, and also look for allele strings like
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
289 "(3 BP INSERTION)" to determine the length
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
290 Returntype : int or undef if we cannot determine the length
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
291 Exceptions : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
292 Status : At Risk
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
293
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
294 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
295
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
296 sub seq_length {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
297 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
298
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
299 my $seq = $self->variation_feature_seq;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
300
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
301 if ($self->seq_is_dna) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
302 if ($seq eq '-') {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
303 return 0;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
304 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
305 else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
306 return length($seq);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
307 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
308 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
309 elsif ($seq =~ /$SPECIFIED_LENGTH/) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
310 return $1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
311 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
312
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
313 return undef;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
314 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
315
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
316 =head2 allele_string
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
317
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
318 Description: Return a '/' delimited string of the reference allele variation_feature_seq
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
319 and the variation_feature_seq of this allele
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
320 Returntype : string
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
321 Exceptions : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
322 Status : At Risk
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
323
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
324 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
325
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
326 sub allele_string {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
327 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
328
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
329 my $ref = $self->variation_feature_overlap->get_reference_VariationFeatureOverlapAllele->variation_feature_seq;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
330
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
331 # for the HGMDs and CNV probes where the alleles are artificially set to be
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
332 # the same, just return the reference sequence
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
333
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
334 if ($ref eq $self->variation_feature_seq) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
335 return $ref;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
336 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
337 else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
338 return $ref.'/'.$self->variation_feature_seq;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
339 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
340 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
341
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
342
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
343 sub _convert_to_sara {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
344 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
345
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
346 my $oc = Bio::EnsEMBL::Variation::OverlapConsequence->new_fast({
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
347 'label' => 'SARA',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
348 'description' => 'Same as reference allele',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
349 'rank' => '99',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
350 'display_term' => 'SARA',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
351 'SO_term' => 'SARA',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
352 });
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
353
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
354 $self->add_OverlapConsequence($oc);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
355
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
356 return $self;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
357 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
358
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
359 1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
360