annotate variant_effect_predictor/Bio/EnsEMBL/Variation/Utils/VariationEffect.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::Utils::VariationEffect
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
24
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
25 =head1 DESCRIPTION
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
26
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
27 This module defines a set of predicate subroutines that check the effect of a
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
28 Bio::EnsEMBL::Variation::VariationFeature on some other Bio::EnsEMBL::Feature.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
29 All of these predicates take a VariationFeatureOverlapAllele as their first and
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
30 only argument and return a true or false value depending on whether the effect
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
31 being checked for holds or not. The link between these predicates and the
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
32 specific effect is configured in the Bio::EnsEMBL::Variation::Utils::Config
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
33 module and a list of OverlapConsequence objects that represent a link between,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
34 for example, a Sequence Ontology consequence term, and the predicate that
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
35 checks for it is provided in the Bio::EnsEMBL::Variation::Utils::Constants
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
36 module. If you want to add a new consequence you should write a predicate in
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
37 this module and then add an entry in the configuration file.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
38
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
39 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
40
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
41 package Bio::EnsEMBL::Variation::Utils::VariationEffect;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
42
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
43 use strict;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
44 use warnings;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
45
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
46 use base qw(Exporter);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
47
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
48 our @EXPORT_OK = qw(overlap within_cds MAX_DISTANCE_FROM_TRANSCRIPT within_intron stop_lost affects_start_codon $UPSTREAM_DISTANCE $DOWNSTREAM_DISTANCE);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
49
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
50 use constant MAX_DISTANCE_FROM_TRANSCRIPT => 5000;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
51
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
52 our $UPSTREAM_DISTANCE = MAX_DISTANCE_FROM_TRANSCRIPT;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
53 our $DOWNSTREAM_DISTANCE = MAX_DISTANCE_FROM_TRANSCRIPT;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
54
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
55 #package Bio::EnsEMBL::Variation::VariationFeatureOverlapAllele;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
56
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
57 sub overlap {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
58 my ( $f1_start, $f1_end, $f2_start, $f2_end ) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
59
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
60 return ( ($f1_end >= $f2_start) and ($f1_start <= $f2_end) );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
61 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
62
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
63 sub within_feature {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
64 my ($bvfoa, $feat) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
65 my $bvf = $bvfoa->base_variation_feature;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
66 $feat = $bvfoa->feature unless defined($feat);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
67
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
68 return overlap(
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
69 $bvf->start,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
70 $bvf->end,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
71 $feat->start,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
72 $feat->end
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
73 );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
74 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
75
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
76 sub partial_overlap_feature {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
77 my ($bvfoa, $feat) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
78 my $bvf = $bvfoa->base_variation_feature;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
79 $feat = $bvfoa->feature unless defined($feat);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
80
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
81 return (
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
82 within_feature(@_) and
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
83 (not complete_overlap_feature(@_)) and
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
84 (($bvf->end > $feat->end) or ($bvf->start < $feat->start))
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
85 );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
86 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
87
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
88 sub complete_within_feature {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
89 my ($bvfoa, $feat) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
90 my $bvf = $bvfoa->base_variation_feature;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
91 $feat = $bvfoa->feature unless defined($feat);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
92
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
93 return (
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
94 ($bvf->start >= $feat->start) and
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
95 ($bvf->end <= $feat->end)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
96 );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
97 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
98
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
99 sub complete_overlap_feature {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
100 my ($bvfoa, $feat) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
101 my $bvf = $bvfoa->base_variation_feature;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
102 $feat = $bvfoa->feature unless defined($feat);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
103
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
104 return (
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
105 ($bvf->start <= $feat->start) and
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
106 ($bvf->end >= $feat->end)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
107 );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
108 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
109
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
110 sub deletion {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
111 my $bvfoa = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
112
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
113 my $bvf = $bvfoa->base_variation_feature;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
114
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
115 # sequence variant will have alleles
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
116 if($bvf->isa('Bio::EnsEMBL::Variation::VariationFeature')) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
117 my ($ref_allele, $alt_allele) = _get_alleles($bvfoa);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
118 return (
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
119 (defined($ref_allele) && ($alt_allele eq '') and $ref_allele) or
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
120 $bvf->allele_string =~ /deletion/i
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
121 );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
122 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
123
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
124 # structural variant depends on class
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
125 if($bvf->isa('Bio::EnsEMBL::Variation::StructuralVariationFeature')) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
126 return (
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
127 ($bvfoa->base_variation_feature->class_SO_term(undef, 1) eq 'deletion') or
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
128 ($bvfoa->base_variation_feature->class_SO_term(undef, 1) =~ /deletion/i) or
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
129 ($bvfoa->base_variation_feature->class_SO_term(undef, 1) =~ /loss/i)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
130 );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
131 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
132
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
133 else { return 0; }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
134 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
135
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
136 sub insertion {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
137 my $bvfoa = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
138
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
139 my $bvf = $bvfoa->base_variation_feature;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
140
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
141 # sequence variant will have alleles
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
142 if($bvf->isa('Bio::EnsEMBL::Variation::VariationFeature')) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
143 my ($ref_allele, $alt_allele) = _get_alleles($bvfoa);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
144 return (
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
145 (defined($ref_allele) && ($ref_allele eq '') and $alt_allele) or
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
146 $bvf->allele_string =~ /insertion/i
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
147 );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
148 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
149
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
150 # structural variant depends on class
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
151 if($bvf->isa('Bio::EnsEMBL::Variation::StructuralVariationFeature')) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
152 return (
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
153 duplication($bvfoa) or
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
154 tandem_duplication($bvfoa) or
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
155 ($bvfoa->base_variation_feature->class_SO_term(undef, 1) eq 'insertion') or
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
156 ($bvfoa->base_variation_feature->class_SO_term(undef, 1) =~ /insertion/i) or
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
157 ($bvfoa->base_variation_feature->class_SO_term(undef, 1) =~ /gain/i)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
158 );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
159 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
160
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
161 else { return 0; }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
162 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
163
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
164 sub copy_number_gain {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
165 my $bvfoa = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
166
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
167 return (duplication($bvfoa) or tandem_duplication($bvfoa) or $bvfoa->base_variation_feature->class_SO_term(undef, 1) =~ /gain/i);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
168 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
169
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
170 sub copy_number_loss {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
171 my $bvfoa = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
172
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
173 return $bvfoa->base_variation_feature->class_SO_term(undef, 1) =~ /loss/i;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
174 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
175
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
176 sub duplication {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
177 my $bvfoa = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
178
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
179 return (
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
180 (
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
181 ($bvfoa->base_variation_feature->class_SO_term(undef, 1) eq 'duplication') or
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
182 ($bvfoa->base_variation_feature->class_SO_term(undef, 1) =~ /duplication/i)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
183 ) and
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
184 (not tandem_duplication($bvfoa))
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
185 );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
186 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
187
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
188 sub tandem_duplication {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
189 my $bvfoa = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
190
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
191 my $bvf = $bvfoa->base_variation_feature;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
192
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
193 # for sequence variants, check sequence vs ref
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
194 if($bvf->isa('Bio::EnsEMBL::Variation::VariationFeature')) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
195 my ($ref_allele, $alt_allele) = _get_alleles($bvfoa);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
196
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
197 return 0 unless $ref_allele and $alt_allele;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
198 return 0 unless
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
199 length($alt_allele) > length($ref_allele) and
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
200 length($alt_allele) % length($ref_allele) == 0;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
201
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
202 my $copies = length($alt_allele) / length($ref_allele);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
203
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
204 return $alt_allele eq $ref_allele x $copies;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
205 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
206
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
207 # structural variant depends on class
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
208 if($bvf->isa('Bio::EnsEMBL::Variation::StructuralVariationFeature')) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
209 return (
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
210 ($bvfoa->base_variation_feature->class_SO_term(undef, 1) eq 'tandem_duplication') or
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
211 ($bvfoa->base_variation_feature->class_SO_term(undef, 1) =~ /tandem_duplication/i)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
212 );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
213 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
214 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
215
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
216 sub feature_ablation {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
217 my $bvfoa = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
218
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
219 return (deletion($bvfoa) and complete_overlap_feature($bvfoa));
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
220 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
221
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
222 sub feature_amplification {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
223 my $bvfoa = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
224
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
225 return (copy_number_gain($bvfoa) && complete_overlap_feature($bvfoa));
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
226 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
227
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
228 sub feature_elongation {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
229 my $bvfoa = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
230
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
231 return (
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
232 complete_within_feature($bvfoa) and
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
233 (copy_number_gain($bvfoa) or insertion($bvfoa)) and
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
234 not(
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
235 $bvfoa->isa('Bio::EnsEMBL::Variation::BaseTranscriptVariationAllele') and
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
236 (inframe_insertion($bvfoa) or stop_lost($bvfoa))
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
237 )
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
238 );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
239 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
240
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
241 sub feature_truncation {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
242 my $bvfoa = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
243
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
244 return (
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
245 (partial_overlap_feature($bvfoa) or complete_within_feature($bvfoa)) and
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
246 (copy_number_loss($bvfoa) or deletion($bvfoa)) and
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
247 not(
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
248 $bvfoa->isa('Bio::EnsEMBL::Variation::BaseTranscriptVariationAllele') and
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
249 (inframe_deletion($bvfoa) or stop_gained($bvfoa))
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
250 )
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
251 );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
252 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
253
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
254 #sub transcript_fusion {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
255 # #my $bvfoa = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
256 # #my $bvf = $bvfoa->base_variation_feature;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
257 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
258 # return 0;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
259 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
260 # #my $transcripts = $bvf->_get_overlapping_Transcripts();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
261 #}
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
262
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
263 sub _before_start {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
264 my ($bvf, $feat, $dist) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
265
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
266 return ( ($bvf->end >= ($feat->start - $dist)) and
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
267 ($bvf->end < $feat->start) );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
268 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
269
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
270 sub _after_end {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
271 my ($bvf, $feat, $dist) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
272 return ( ($bvf->start <= ($feat->end + $dist))
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
273 and ($bvf->start > $feat->end) );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
274 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
275
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
276 sub _upstream {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
277 my ($bvf, $feat, $dist) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
278 return $feat->strand == 1 ?
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
279 _before_start($bvf, $feat, $dist) :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
280 _after_end($bvf, $feat, $dist);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
281 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
282
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
283 sub _downstream {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
284 my ($bvf, $feat, $dist) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
285 return $feat->strand == 1 ?
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
286 _after_end($bvf, $feat, $dist) :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
287 _before_start($bvf, $feat, $dist);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
288 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
289
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
290 #package Bio::EnsEMBL::Variation::TranscriptVariationAllele;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
291
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
292 sub upstream {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
293 my $vfoa = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
294 my $bvf = $vfoa->base_variation_feature;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
295 my $feat = $vfoa->feature;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
296
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
297 return _upstream($bvf, $feat, $UPSTREAM_DISTANCE);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
298 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
299
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
300 sub downstream {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
301 my $vfoa = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
302 my $bvf = $vfoa->base_variation_feature;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
303 my $feat = $vfoa->feature;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
304
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
305 return _downstream($bvf, $feat, $DOWNSTREAM_DISTANCE);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
306 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
307
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
308 sub affects_transcript {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
309 my ($bvf, $tran) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
310
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
311 return 0 unless $tran->isa('Bio::EnsEMBL::Transcript');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
312
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
313 return overlap(
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
314 $bvf->start,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
315 $bvf->end,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
316 $tran->start - 5000,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
317 $tran->end + 5000
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
318 );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
319 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
320
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
321 sub within_transcript {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
322 my $bvfoa = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
323 return within_feature($bvfoa);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
324 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
325
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
326 sub within_nmd_transcript {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
327 my $bvfoa = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
328 my $tran = $bvfoa->transcript;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
329
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
330 return ( within_transcript($bvfoa) and ($tran->biotype eq 'nonsense_mediated_decay') );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
331 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
332
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
333 sub within_non_coding_gene {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
334 my $bvfoa = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
335 my $tran = $bvfoa->transcript;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
336
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
337 return ( within_transcript($bvfoa) and (not $tran->translation) and (not within_mature_miRNA($bvfoa)));
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
338 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
339
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
340 sub non_coding_exon_variant {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
341 my $bvfoa = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
342
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
343 return 0 unless within_non_coding_gene($bvfoa);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
344
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
345 my $bvf = $bvfoa->base_variation_feature;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
346 my $exons = $bvfoa->base_variation_feature_overlap->_exons;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
347
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
348 if(scalar grep {overlap($bvf->start, $bvf->end, $_->start, $_->end)} @$exons) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
349 return 1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
350 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
351 else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
352 return 0;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
353 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
354 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
355
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
356 sub within_miRNA {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
357 my $bvfoa = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
358 my $tran = $bvfoa->transcript;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
359
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
360 # don't call this for now
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
361
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
362 return 0;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
363
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
364 return ( within_transcript($bvfoa) and ($tran->biotype eq 'miRNA') );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
365 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
366
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
367 sub within_mature_miRNA {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
368 my $bvfoa = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
369
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
370 my $bvfo = $bvfoa->base_variation_feature_overlap;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
371 my $bvf = $bvfoa->base_variation_feature;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
372 my $tran = $bvfoa->transcript;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
373
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
374 return 0 unless ( within_transcript($bvfoa) and ($tran->biotype eq 'miRNA') );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
375
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
376 my ($attribute) = @{ $tran->get_all_Attributes('miRNA') };
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
377
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
378 if (defined $attribute && $attribute->value =~ /(\d+)-(\d+)/) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
379 for my $coord ($bvfo->_mapper->cdna2genomic($1, $2, $tran->strand)) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
380 if ($coord->isa('Bio::EnsEMBL::Mapper::Coordinate')) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
381 if (overlap(
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
382 $bvf->start,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
383 $bvf->end,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
384 $coord->start,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
385 $coord->end) ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
386 return 1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
387 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
388 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
389 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
390 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
391
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
392 return 0;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
393 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
394
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
395 sub donor_splice_site {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
396 my $bvfoa = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
397 my $tran = $bvfoa->transcript;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
398
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
399 return $tran->strand == 1 ?
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
400 $bvfoa->base_variation_feature_overlap->_intron_effects->{start_splice_site} :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
401 $bvfoa->base_variation_feature_overlap->_intron_effects->{end_splice_site};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
402 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
403
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
404 sub acceptor_splice_site {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
405 my $bvfoa = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
406 my $tran = $bvfoa->transcript;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
407
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
408 return $tran->strand == 1 ?
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
409 $bvfoa->base_variation_feature_overlap->_intron_effects->{end_splice_site} :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
410 $bvfoa->base_variation_feature_overlap->_intron_effects->{start_splice_site};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
411 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
412
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
413 sub essential_splice_site {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
414 my $bvfoa = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
415
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
416 return ( acceptor_splice_site($bvfoa) or donor_splice_site($bvfoa) );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
417 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
418
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
419 sub splice_region {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
420 my $bvfoa = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
421
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
422 return 0 if donor_splice_site($bvfoa);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
423 return 0 if acceptor_splice_site($bvfoa);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
424 return 0 if essential_splice_site($bvfoa);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
425
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
426 return $bvfoa->base_variation_feature_overlap->_intron_effects->{splice_region};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
427 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
428
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
429 sub within_intron {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
430 my $bvfoa = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
431
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
432 return $bvfoa->base_variation_feature_overlap->_intron_effects->{intronic};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
433 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
434
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
435 sub within_cds {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
436 my $bvfoa = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
437 my $bvf = $bvfoa->base_variation_feature;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
438 my $tran = $bvfoa->transcript;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
439 my $bvfo = $bvfoa->base_variation_feature_overlap;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
440
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
441 my $cds_coords = $bvfoa->base_variation_feature_overlap->cds_coords;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
442
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
443 if (@$cds_coords > 0) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
444 for my $coord (@$cds_coords) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
445 if ($coord->isa('Bio::EnsEMBL::Mapper::Coordinate')) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
446 if ($coord->end > 0 && $coord->start <= length($bvfo->_translateable_seq)) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
447 return 1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
448 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
449 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
450 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
451 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
452
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
453 # we also need to check if the vf is in a frameshift intron within the CDS
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
454
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
455 if (defined $tran->translation &&
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
456 $bvfoa->base_variation_feature_overlap->_intron_effects->{within_frameshift_intron}) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
457
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
458 return overlap(
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
459 $bvf->start,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
460 $bvf->end,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
461 $tran->coding_region_start,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
462 $tran->coding_region_end,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
463 );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
464 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
465
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
466 return 0;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
467 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
468
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
469 sub within_cdna {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
470 my $bvfoa = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
471 my $bvf = $bvfoa->base_variation_feature;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
472 my $tran = $bvfoa->transcript;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
473 my $bvfo = $bvfoa->base_variation_feature_overlap;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
474
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
475 my $cdna_coords = $bvfo->cdna_coords;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
476
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
477 if (@$cdna_coords > 0) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
478 for my $coord (@$cdna_coords) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
479 if ($coord->isa('Bio::EnsEMBL::Mapper::Coordinate')) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
480 if ($coord->end > 0 && $coord->start <= $tran->length) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
481 return 1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
482 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
483 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
484 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
485 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
486
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
487 # we also need to check if the vf is in a frameshift intron within the cDNA
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
488
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
489 if ($bvfoa->base_variation_feature_overlap->_intron_effects->{within_frameshift_intron}) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
490 return within_transcript($bvfoa);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
491 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
492
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
493 return 0;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
494 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
495
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
496 sub _before_coding {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
497 my ($bvf, $tran) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
498 return 0 unless defined $tran->translation;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
499
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
500 my $bvf_s = $bvf->start;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
501 my $bvf_e = $bvf->end;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
502 my $t_s = $tran->start;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
503 my $cds_s = $tran->coding_region_start;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
504
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
505 # we need to special case insertions just before the CDS start
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
506 if ($bvf_s == $bvf_e+1 && $bvf_s == $cds_s) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
507 return 1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
508 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
509
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
510 return overlap($bvf_s, $bvf_e, $t_s, $cds_s-1);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
511 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
512
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
513 sub _after_coding {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
514 my ($bvf, $tran) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
515 return 0 unless defined $tran->translation;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
516
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
517 my $bvf_s = $bvf->start;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
518 my $bvf_e = $bvf->end;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
519 my $t_e = $tran->end;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
520 my $cds_e = $tran->coding_region_end;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
521
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
522 # we need to special case insertions just after the CDS end
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
523 if ($bvf_s == $bvf_e+1 && $bvf_e == $cds_e) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
524 return 1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
525 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
526
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
527 return overlap($bvf_s, $bvf_e, $cds_e+1, $t_e);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
528 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
529
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
530 sub within_5_prime_utr {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
531 my $bvfoa = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
532 my $bvf = $bvfoa->base_variation_feature;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
533 my $tran = $bvfoa->transcript;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
534
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
535 my $five_prime_of_coding =
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
536 $tran->strand == 1 ?
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
537 _before_coding($bvf, $tran) :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
538 _after_coding($bvf, $tran);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
539
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
540 return ( $five_prime_of_coding and within_cdna($bvfoa) );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
541 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
542
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
543 sub within_3_prime_utr {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
544 my $bvfoa = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
545 my $bvf = $bvfoa->base_variation_feature;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
546 my $tran = $bvfoa->transcript;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
547
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
548 my $three_prime_of_coding =
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
549 $tran->strand == 1 ?
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
550 _after_coding($bvf, $tran) :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
551 _before_coding($bvf, $tran);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
552
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
553 return ( $three_prime_of_coding and within_cdna($bvfoa) );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
554 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
555
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
556 sub complex_indel {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
557 my $bvfoa = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
558 my $bvf = $bvfoa->base_variation_feature;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
559
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
560 # pass the no_db flag to var_class to ensure we don't rely on the database for it
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
561 # as it may not have been set at this stage in the pipeline
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
562 my $class = $bvf->var_class(1);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
563
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
564 return 0 unless $class =~ /insertion|deletion|indel/;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
565
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
566 return @{ $bvfoa->base_variation_feature_overlap->cds_coords } > 1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
567 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
568
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
569 sub _get_peptide_alleles {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
570 my $bvfoa = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
571 my $bvfo = $bvfoa->base_variation_feature_overlap;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
572
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
573 return () if frameshift($bvfoa);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
574
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
575 my $alt_pep = $bvfoa->peptide;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
576
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
577 return () unless defined $alt_pep;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
578
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
579 my $ref_pep = $bvfo->get_reference_TranscriptVariationAllele->peptide;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
580
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
581 return () unless defined $ref_pep;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
582
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
583 $ref_pep = '' if $ref_pep eq '-';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
584 $alt_pep = '' if $alt_pep eq '-';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
585
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
586 return ($ref_pep, $alt_pep);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
587 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
588
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
589 sub _get_codon_alleles {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
590 my $bvfoa = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
591 my $bvfo = $bvfoa->base_variation_feature_overlap;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
592
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
593 return () if frameshift($bvfoa);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
594
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
595 my $alt_codon = $bvfoa->codon;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
596
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
597 return () unless defined $alt_codon;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
598
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
599 my $ref_codon = $bvfo->get_reference_TranscriptVariationAllele->codon;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
600
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
601 return () unless defined $ref_codon;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
602
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
603 $ref_codon = '' if $ref_codon eq '-';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
604 $alt_codon = '' if $alt_codon eq '-';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
605
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
606 return ($ref_codon, $alt_codon);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
607 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
608
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
609 sub _get_alleles {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
610 my $bvfoa = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
611 my $bvfo = $bvfoa->base_variation_feature_overlap;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
612
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
613 my $ref_tva = $bvfo->get_reference_VariationFeatureOverlapAllele;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
614
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
615 return () unless defined ($ref_tva);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
616
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
617 my $ref_allele = $ref_tva->variation_feature_seq;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
618 my $alt_allele = $bvfoa->variation_feature_seq;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
619
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
620 return () unless defined($ref_allele) and defined($alt_allele);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
621
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
622 $ref_allele = '' if $ref_allele eq '-';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
623 $alt_allele = '' if $alt_allele eq '-';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
624
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
625 return ($ref_allele, $alt_allele);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
626 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
627
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
628 sub stop_retained {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
629 my $bvfoa = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
630
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
631 my ($ref_pep, $alt_pep) = _get_peptide_alleles($bvfoa);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
632
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
633 return 0 unless $ref_pep;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
634
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
635 return ( $alt_pep =~ /\*/ && $ref_pep =~ /\*/ );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
636 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
637
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
638 sub affects_start_codon {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
639 my $bvfoa = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
640 my $bvfo = $bvfoa->base_variation_feature_overlap;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
641
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
642 # sequence variant
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
643 if($bvfo->isa('Bio::EnsEMBL::Variation::TranscriptVariation')) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
644 my ($ref_pep, $alt_pep) = _get_peptide_alleles($bvfoa);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
645
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
646 return 0 unless $ref_pep;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
647
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
648 return ( ($bvfo->translation_start == 1) and (substr($ref_pep,0,1) ne substr($alt_pep,0,1)) );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
649 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
650
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
651 # structural variant
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
652 elsif($bvfo->isa('Bio::EnsEMBL::Variation::TranscriptStructuralVariation')) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
653 my $tr = $bvfo->transcript;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
654 my $bvf = $bvfo->base_variation_feature;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
655
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
656 my ($tr_crs, $tr_cre) = ($tr->coding_region_start, $tr->coding_region_end);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
657 return 0 unless defined($tr_crs) && defined($tr_cre);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
658
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
659 if($tr->strand == 1) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
660 return overlap($tr_crs, $tr_crs + 2, $bvf->start, $bvf->end);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
661 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
662 else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
663 return overlap($tr_cre-2, $tr_cre, $bvf->start, $bvf->end);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
664 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
665 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
666
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
667 else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
668 return 0;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
669 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
670 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
671
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
672 sub synonymous_variant {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
673 my $bvfoa = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
674
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
675 my ($ref_pep, $alt_pep) = _get_peptide_alleles($bvfoa);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
676
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
677 return 0 unless $ref_pep;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
678
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
679 return ( ($alt_pep eq $ref_pep) and (not stop_retained($bvfoa) and ($alt_pep !~ /X/) and ($ref_pep !~ /X/)) );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
680 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
681
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
682 sub missense_variant {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
683 my $bvfoa = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
684
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
685 my ($ref_pep, $alt_pep) = _get_peptide_alleles($bvfoa);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
686
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
687 return 0 unless defined $ref_pep;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
688
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
689 return 0 if affects_start_codon($bvfoa);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
690 return 0 if stop_lost($bvfoa);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
691 return 0 if stop_gained($bvfoa);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
692 return 0 if partial_codon($bvfoa);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
693
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
694 return 0 if inframe_deletion($bvfoa);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
695 return 0 if inframe_insertion($bvfoa);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
696
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
697 return ( $ref_pep ne $alt_pep );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
698 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
699
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
700 sub inframe_insertion {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
701 my $bvfoa = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
702
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
703 # sequence variant
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
704 if($bvfoa->base_variation_feature->isa('Bio::EnsEMBL::Variation::VariationFeature')) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
705 my ($ref_codon, $alt_codon) = _get_codon_alleles($bvfoa);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
706
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
707 return 0 unless defined $ref_codon;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
708
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
709 return (
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
710 (length($alt_codon) > length ($ref_codon)) &&
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
711 ( ($alt_codon =~ /^\Q$ref_codon\E/) || ($alt_codon =~ /\Q$ref_codon\E$/) )
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
712 );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
713 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
714
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
715 # structural variant
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
716 elsif($bvfoa->base_variation_feature->isa('Bio::EnsEMBL::Variation::StructuralVariationFeature')) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
717
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
718 # TO BE DONE, NO WAY OF KNOWING WHAT SEQUENCE IS INSERTED YET
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
719 return 0;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
720
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
721 # must be an insertion
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
722 return 0 unless insertion($bvfoa);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
723
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
724 my $bvfo = $bvfoa->base_variation_feature_overlap;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
725
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
726 my $cds_coords = $bvfo->cds_coords;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
727
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
728 if(scalar @$cds_coords == 1) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
729
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
730 # wholly within exon
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
731 if($cds_coords->[0]->isa('Bio::EnsEMBL::Mapper::Coordinate')) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
732 1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
733 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
734 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
735
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
736 # variant partially overlaps
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
737 else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
738 return 0;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
739 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
740 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
741
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
742 else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
743 return 0;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
744 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
745 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
746
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
747 sub inframe_deletion {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
748 my $bvfoa = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
749
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
750 # sequence variant
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
751 if($bvfoa->base_variation_feature->isa('Bio::EnsEMBL::Variation::VariationFeature')) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
752 my ($ref_codon, $alt_codon) = _get_codon_alleles($bvfoa);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
753
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
754 return 0 unless defined $ref_codon;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
755
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
756 return (
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
757 (length($alt_codon) < length ($ref_codon)) &&
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
758 ( ($ref_codon =~ /^\Q$alt_codon\E/) || ($ref_codon =~ /\Q$alt_codon\E$/) )
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
759 );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
760 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
761
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
762 # structural variant
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
763 elsif($bvfoa->base_variation_feature->isa('Bio::EnsEMBL::Variation::StructuralVariationFeature')) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
764
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
765 # must be a deletion
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
766 return 0 unless deletion($bvfoa);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
767
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
768 my $bvfo = $bvfoa->base_variation_feature_overlap;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
769 my $cds_coords = $bvfo->cds_coords;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
770 my $exons = $bvfo->_exons;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
771 my $bvf = $bvfo->base_variation_feature;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
772
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
773 # in exon
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
774 return (
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
775 scalar @$cds_coords == 1 and
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
776 $cds_coords->[0]->isa('Bio::EnsEMBL::Mapper::Coordinate') and
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
777 scalar grep {complete_within_feature($bvfoa, $_)} @$exons and
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
778 $bvf->length() % 3 == 0
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
779 );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
780 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
781
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
782 else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
783 return 0;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
784 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
785 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
786
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
787 sub stop_gained {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
788 my $bvfoa = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
789 my $bvfo = $bvfoa->base_variation_feature_overlap;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
790
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
791 return 0 unless $bvfoa->isa('Bio::EnsEMBL::Variation::TranscriptVariationAllele');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
792
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
793 my ($ref_pep, $alt_pep) = _get_peptide_alleles($bvfoa);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
794
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
795 return 0 unless defined $ref_pep;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
796
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
797 return ( ($alt_pep =~ /\*/) and ($ref_pep !~ /\*/) );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
798 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
799
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
800 sub stop_lost {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
801 my $bvfoa = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
802
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
803 # sequence variant
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
804 if($bvfoa->isa('Bio::EnsEMBL::Variation::TranscriptVariationAllele')) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
805 my ($ref_pep, $alt_pep) = _get_peptide_alleles($bvfoa);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
806
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
807 return 0 unless defined $ref_pep;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
808
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
809 return ( ($alt_pep !~ /\*/) and ($ref_pep =~ /\*/) );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
810 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
811
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
812 # structural variant
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
813 elsif($bvfoa->isa('Bio::EnsEMBL::Variation::TranscriptStructuralVariationAllele')) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
814 return 0 unless deletion($bvfoa);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
815
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
816 my $tr = $bvfoa->transcript;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
817 my $bvf = $bvfoa->base_variation_feature;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
818
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
819 my ($tr_crs, $tr_cre) = ($tr->coding_region_start, $tr->coding_region_end);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
820 return 0 unless defined($tr_crs) && defined($tr_cre);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
821
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
822 if($tr->strand == 1) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
823 return overlap($tr_cre-2, $tr_cre, $bvf->start, $bvf->end);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
824 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
825 else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
826 return overlap($tr_crs, $tr_crs + 2, $bvf->start, $bvf->end);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
827 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
828 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
829
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
830 else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
831 return 0;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
832 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
833 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
834
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
835 sub frameshift {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
836 my $bvfoa = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
837
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
838 # sequence variant
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
839 if($bvfoa->isa('Bio::EnsEMBL::Variation::TranscriptVariationAllele')) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
840
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
841 return 0 if partial_codon($bvfoa);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
842
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
843 my $bvfo = $bvfoa->base_variation_feature_overlap;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
844
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
845 return 0 unless defined $bvfo->cds_start && defined $bvfo->cds_end;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
846
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
847 my $var_len = $bvfo->cds_end - $bvfo->cds_start + 1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
848
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
849 my $allele_len = $bvfoa->seq_length;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
850
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
851 # if the allele length is undefined then we can't call a frameshift
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
852
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
853 return 0 unless defined $allele_len;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
854
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
855 return abs( $allele_len - $var_len ) % 3;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
856 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
857
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
858 # structural variant
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
859 elsif($bvfoa->isa('Bio::EnsEMBL::Variation::TranscriptStructuralVariationAllele')) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
860 my $bvf = $bvfoa->base_variation_feature;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
861 my $exons = $bvfoa->base_variation_feature_overlap->_exons;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
862
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
863 return (
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
864 (
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
865 deletion($bvfoa) or
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
866 copy_number_loss($bvfoa)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
867 ) and
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
868 scalar grep {complete_within_feature($bvfoa, $_)} @$exons and
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
869 $bvf->length % 3 != 0
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
870 );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
871
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
872 # TODO INSERTIONS
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
873 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
874
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
875 else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
876 return 0;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
877 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
878 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
879
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
880 sub partial_codon {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
881 my $bvfoa = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
882
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
883 my $bvfo = $bvfoa->base_variation_feature_overlap;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
884
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
885 return 0 unless defined $bvfo->translation_start;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
886
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
887 my $cds_length = length $bvfo->_translateable_seq;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
888
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
889 my $codon_cds_start = ($bvfo->translation_start * 3) - 2;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
890
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
891 my $last_codon_length = $cds_length - ($codon_cds_start - 1);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
892
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
893 return ( $last_codon_length < 3 and $last_codon_length > 0 );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
894 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
895
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
896 sub coding_unknown {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
897 my $bvfoa = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
898
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
899 # sequence variant
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
900 if($bvfoa->isa('Bio::EnsEMBL::Variation::TranscriptVariationAllele')) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
901 return (within_cds($bvfoa) and ((not $bvfoa->peptide) or (not _get_peptide_alleles($bvfoa)) or ($bvfoa->peptide =~ /X/)) and (not (frameshift($bvfoa) or inframe_deletion($bvfoa))));
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
902 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
903
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
904 # structural variant
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
905 elsif($bvfoa->isa('Bio::EnsEMBL::Variation::TranscriptStructuralVariationAllele')) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
906 return (within_cds($bvfoa) and not(inframe_insertion($bvfoa) or inframe_deletion($bvfoa) or frameshift($bvfoa)));
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
907 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
908
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
909 else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
910 return 0;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
911 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
912 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
913
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
914 #package Bio::EnsEMBL::Variation::RegulatoryFeatureVariationAllele;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
915
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
916 sub within_regulatory_feature {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
917 my $rfva = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
918 return within_feature($rfva);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
919 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
920
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
921 #package Bio::EnsEMBL::Variation::ExternalFeatureVariationAllele;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
922
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
923 sub within_external_feature {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
924 my $efva = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
925 return (within_feature($efva) and (not within_miRNA_target_site($efva)));
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
926 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
927
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
928 #sub within_miRNA_target_site {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
929 # my $efva = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
930 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
931 # my $fset = $efva->variation_feature_overlap->feature->feature_set;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
932 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
933 # return ($fset && $fset->name eq 'miRanda miRNA targets');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
934 #}
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
935
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
936 #package Bio::EnsEMBL::Variation::MotifFeatureVariationAllele;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
937
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
938 #sub within_motif_feature {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
939 # my $mfva = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
940 # return (
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
941 # within_feature($mfva) and
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
942 # !increased_binding_affinity($mfva) and
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
943 # !decreased_binding_affinity($mfva)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
944 # );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
945 #}
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
946
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
947 sub within_motif_feature {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
948 my $mfva = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
949 return within_feature($mfva);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
950 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
951
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
952 #sub increased_binding_affinity {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
953 # my $mfva = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
954 # my $change = $mfva->binding_affinity_change;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
955 # return (within_feature($mfva) and (defined $change) and ($change > 0));
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
956 #}
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
957 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
958 #sub decreased_binding_affinity {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
959 # my $mfva = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
960 # my $change = $mfva->binding_affinity_change;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
961 # return (within_feature($mfva) and (defined $change) and ($change < 0));
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
962 #}
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
963
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
964 sub contains_entire_feature {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
965 my $vfo = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
966
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
967 my $bvf = $vfo->base_variation_feature;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
968 my $feat = $vfo->feature;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
969
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
970 return ( ($bvf->start <= $feat->start) && ($bvf->end >= $feat->end) );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
971 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
972
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
973 1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
974