annotate variant_effect_predictor/Bio/EnsEMBL/Variation/VariationFeature.pm @ 2:a5976b2dce6f

changing defualt values for ensembl database
author mahtabm
date Thu, 11 Apr 2013 17:15:42 +1000
parents 1f6dce3d34e0
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1 =head1 LICENSE
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
3 Copyright (c) 1999-2012 The European Bioinformatics Institute and
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
4 Genome Research Limited. All rights reserved.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
5
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
6 This software is distributed under a modified Apache license.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
7 For license details, please see
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
8
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
9 http://www.ensembl.org/info/about/code_licence.html
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
10
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
11 =head1 CONTACT
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
12
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
13 Please email comments or questions to the public Ensembl
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
14 developers list at <dev@ensembl.org>.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
15
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
16 Questions may also be sent to the Ensembl help desk at
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
17 <helpdesk@ensembl.org>.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
18
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
19 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
20
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
21 # Ensembl module for Bio::EnsEMBL::Variation::VariationFeature
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
22 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
23 # Copyright (c) 2004 Ensembl
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
24 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
25
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
26
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
27 =head1 NAME
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
28
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
29 Bio::EnsEMBL::Variation::VariationFeature - A genomic position for a nucleotide variation.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
30
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
31 =head1 SYNOPSIS
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
32
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
33 # Variation feature representing a single nucleotide polymorphism
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
34 $vf = Bio::EnsEMBL::Variation::VariationFeature->new
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
35 (-start => 100,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
36 -end => 100,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
37 -strand => 1,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
38 -slice => $slice,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
39 -allele_string => 'A/T',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
40 -variation_name => 'rs635421',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
41 -map_weight => 1,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
42 -variation => $v);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
43
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
44 # Variation feature representing a 2bp insertion
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
45 $vf = Bio::EnsEMBL::Variation::VariationFeature->new
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
46 (-start => 1522,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
47 -end => 1521, # end = start-1 for insert
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
48 -strand => -1,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
49 -slice => $slice,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
50 -allele_string => '-/AA',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
51 -variation_name => 'rs12111',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
52 -map_weight => 1,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
53 -variation => $v2);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
54
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
55 ...
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
56
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
57 # a variation feature is like any other ensembl feature, can be
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
58 # transformed etc.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
59 $vf = $vf->transform('supercontig');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
60
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
61 print $vf->start(), "-", $vf->end(), '(', $vf->strand(), ')', "\n";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
62
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
63 print $vf->name(), ":", $vf->allele_string();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
64
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
65 # Get the Variation object which this feature represents the genomic
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
66 # position of. If not already retrieved from the DB, this will be
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
67 # transparently lazy-loaded
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
68 my $v = $vf->variation();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
69
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
70 =head1 DESCRIPTION
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
71
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
72 This is a class representing the genomic position of a nucleotide variation
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
73 from the ensembl-variation database. The actual variation information is
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
74 represented by an associated Bio::EnsEMBL::Variation::Variation object. Some
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
75 of the information has been denormalized and is available on the feature for
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
76 speed purposes. A VariationFeature behaves as any other Ensembl feature.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
77 See B<Bio::EnsEMBL::Feature> and B<Bio::EnsEMBL::Variation::Variation>.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
78
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
79 =head1 METHODS
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
80
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
81 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
82
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
83 use strict;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
84 use warnings;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
85
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
86 package Bio::EnsEMBL::Variation::VariationFeature;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
87
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
88 use Scalar::Util qw(weaken isweak);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
89
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
90 use Bio::EnsEMBL::Variation::BaseVariationFeature;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
91 use Bio::EnsEMBL::Utils::Exception qw(throw warning);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
92 use Bio::EnsEMBL::Utils::Scalar qw(assert_ref);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
93 use Bio::EnsEMBL::Utils::Argument qw(rearrange);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
94 use Bio::EnsEMBL::Utils::Sequence qw(reverse_comp);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
95 use Bio::EnsEMBL::Variation::Utils::Sequence qw(ambiguity_code hgvs_variant_notation SO_variation_class format_hgvs_string);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
96 use Bio::EnsEMBL::Variation::Utils::Sequence;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
97 use Bio::EnsEMBL::Variation::Variation;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
98 use Bio::EnsEMBL::Variation::Utils::VariationEffect qw(MAX_DISTANCE_FROM_TRANSCRIPT);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
99 use Bio::EnsEMBL::Variation::Utils::Constants qw($DEFAULT_OVERLAP_CONSEQUENCE %VARIATION_CLASSES);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
100 use Bio::EnsEMBL::Variation::RegulatoryFeatureVariation;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
101 use Bio::EnsEMBL::Variation::MotifFeatureVariation;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
102 use Bio::EnsEMBL::Variation::ExternalFeatureVariation;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
103 use Bio::EnsEMBL::Variation::IntergenicVariation;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
104 use Bio::EnsEMBL::Slice;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
105 use Bio::EnsEMBL::Variation::DBSQL::TranscriptVariationAdaptor;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
106 use Bio::PrimarySeq;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
107 use Bio::SeqUtils;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
108
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
109 our @ISA = ('Bio::EnsEMBL::Variation::BaseVariationFeature');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
110
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
111 our $DEBUG = 0;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
112 =head2 new
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
113
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
114 Arg [-dbID] :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
115 see superclass constructor
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
116
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
117 Arg [-ADAPTOR] :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
118 see superclass constructor
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
119
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
120 Arg [-START] :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
121 see superclass constructor
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
122 Arg [-END] :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
123 see superclass constructor
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
124
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
125 Arg [-STRAND] :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
126 see superclass constructor
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
127
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
128 Arg [-SLICE] :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
129 see superclass constructor
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
130
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
131 Arg [-VARIATION_NAME] :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
132 string - the name of the variation this feature is for (denormalisation
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
133 from Variation object).
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
134
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
135 Arg [-MAP_WEIGHT] :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
136 int - the number of times that the variation associated with this feature
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
137 has hit the genome. If this was the only feature associated with this
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
138 variation_feature the map_weight would be 1.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
139
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
140 Arg [-VARIATION] :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
141 int - the variation object associated with this feature.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
142
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
143 Arg [-SOURCE] :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
144 string - the name of the source where the SNP comes from
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
145
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
146 Arg [-SOURCE_VERSION] :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
147 number - the version of the source where the SNP comes from
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
148
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
149 Arg [-VALIDATION_CODE] :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
150 reference to list of strings
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
151
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
152 Arg [-OVERLAP_CONSEQUENCES] :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
153 listref of Bio::EnsEMBL::Variation::OverlapConsequences - all the consequences of this VariationFeature
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
154
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
155 Arg [-VARIATION_ID] :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
156 int - the internal id of the variation object associated with this
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
157 identifier. This may be provided instead of a variation object so that
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
158 the variation may be lazy-loaded from the database on demand.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
159
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
160 Example :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
161 $vf = Bio::EnsEMBL::Variation::VariationFeature->new(
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
162 -start => 100,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
163 -end => 100,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
164 -strand => 1,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
165 -slice => $slice,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
166 -allele_string => 'A/T',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
167 -variation_name => 'rs635421',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
168 -map_weight => 1,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
169 -source => 'dbSNP',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
170 -validation_code => ['cluster','doublehit'],
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
171 -variation => $v
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
172 );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
173
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
174 Description: Constructor. Instantiates a new VariationFeature object.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
175 Returntype : Bio::EnsEMBL::Variation::Variation
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
176 Exceptions : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
177 Caller : general
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
178 Status : At Risk
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
179
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
180 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
181
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
182 sub new {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
183 my $caller = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
184 my $class = ref($caller) || $caller;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
185
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
186 my $self = $class->SUPER::new(@_);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
187
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
188 my (
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
189 $allele_str,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
190 $var_name,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
191 $map_weight,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
192 $variation,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
193 $variation_id,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
194 $source,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
195 $source_version,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
196 $is_somatic,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
197 $validation_code,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
198 $overlap_consequences,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
199 $class_so_term,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
200 $minor_allele,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
201 $minor_allele_freq,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
202 $minor_allele_count
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
203 ) = rearrange([qw(
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
204 ALLELE_STRING
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
205 VARIATION_NAME
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
206 MAP_WEIGHT
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
207 VARIATION
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
208 _VARIATION_ID
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
209 SOURCE
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
210 SOURCE_VERSION
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
211 IS_SOMATIC
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
212 VALIDATION_CODE
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
213 OVERLAP_CONSEQUENCES
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
214 CLASS_SO_TERM
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
215 MINOR_ALLELE
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
216 MINOR_ALLELE_FREQUENCY
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
217 MINOR_ALLELE_COUNT
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
218 )], @_);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
219
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
220 $self->{'allele_string'} = $allele_str;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
221 $self->{'variation_name'} = $var_name;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
222 $self->{'map_weight'} = $map_weight;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
223 $self->{'variation'} = $variation;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
224 $self->{'_variation_id'} = $variation_id;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
225 $self->{'source'} = $source;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
226 $self->{'source_version'} = $source_version;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
227 $self->{'is_somatic'} = $is_somatic;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
228 $self->{'validation_code'} = $validation_code;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
229 $self->{'overlap_consequences'} = $overlap_consequences;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
230 $self->{'class_SO_term'} = $class_so_term;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
231 $self->{'minor_allele'} = $minor_allele;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
232 $self->{'minor_allele_frequency'} = $minor_allele_freq;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
233 $self->{'minor_allele_count'} = $minor_allele_count;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
234
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
235 return $self;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
236 }
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 sub new_fast {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
241
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
242 my $class = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
243 my $hashref = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
244 my $self = bless $hashref, $class;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
245 weaken($self->{'adaptor'}) if ( ! isweak($self->{'adaptor'}) );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
246 return $self;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
247
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
248 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
249
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
250
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
251 =head2 allele_string
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
252
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
253 Arg [1] : string $newval (optional)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
254 The new value to set the allele_string attribute to
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
255 Example : $allele_string = $obj->allele_string()
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
256 Description: Getter/Setter for the allele_string attribute.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
257 The allele_string is a '/' demimited string representing the
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
258 alleles associated with this features variation.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
259 Returntype : string
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
260 Exceptions : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
261 Caller : general
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
262 Status : Stable
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
263
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
264 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
265
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
266 sub allele_string{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
267 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
268 return $self->{'allele_string'} = shift if(@_);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
269 return $self->{'allele_string'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
270 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
271
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
272 =head2 display_id
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
273
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
274 Arg [1] : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
275 Example : print $vf->display_id(), "\n";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
276 Description: Returns the 'display' identifier for this feature. For
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
277 VariationFeatures this is simply the name of the variation
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
278 it is associated with.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
279 Returntype : string
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
280 Exceptions : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
281 Caller : webcode
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
282 Status : At Risk
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
283
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
284 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
285
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
286 sub display_id {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
287 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
288 return $self->{'variation_name'} || '';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
289 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
290
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
291
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
292
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
293 =head2 variation_name
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
294
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
295 Arg [1] : string $newval (optional)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
296 The new value to set the variation_name attribute to
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
297 Example : $variation_name = $obj->variation_name()
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
298 Description: Getter/Setter for the variation_name attribute. This is the
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
299 name of the variation associated with this feature.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
300 Returntype : string
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
301 Exceptions : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
302 Caller : general
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
303 Status : Stable
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
304
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
305 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
306
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
307 sub variation_name{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
308 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
309 return $self->{'variation_name'} = shift if(@_);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
310 return $self->{'variation_name'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
311 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
312
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
313
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
314
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
315 =head2 map_weight
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
316
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
317 Arg [1] : int $newval (optional)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
318 The new value to set the map_weight attribute to
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
319 Example : $map_weight = $obj->map_weight()
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
320 Description: Getter/Setter for the map_weight attribute. The map_weight
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
321 is the number of times this features variation was mapped to
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
322 the genome.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
323 Returntype : int
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
324 Exceptions : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
325 Caller : general
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
326 Status : At Risk
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
327
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
328 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
329
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
330 sub map_weight{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
331 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
332 return $self->{'map_weight'} = shift if(@_);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
333 return $self->{'map_weight'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
334 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
335
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
336 =head2 minor_allele
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
337
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
338 Arg [1] : string $minor_allele (optional)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
339 The new minor allele string
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
340 Example : $ma = $obj->minor_allele()
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
341 Description: Get/set the minor allele of this variation, as reported by dbSNP
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
342 Returntype : string
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
343 Exceptions : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
344 Caller : general
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
345 Status : Stable
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
346
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
347 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
348
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
349 sub minor_allele {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
350 my ($self, $minor_allele) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
351 $self->{minor_allele} = $minor_allele if defined $minor_allele;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
352 return $self->{minor_allele}
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
353 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
354
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
355 =head2 minor_allele_frequency
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
356
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
357 Arg [1] : float $minor_allele_frequency (optional)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
358 The new minor allele frequency
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
359 Example : $maf = $obj->minor_allele_frequency()
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
360 Description: Get/set the frequency of the minor allele of this variation, as reported by dbSNP
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
361 Returntype : float
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
362 Exceptions : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
363 Caller : general
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
364 Status : Stable
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
365
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
366 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
367
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
368 sub minor_allele_frequency {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
369 my ($self, $minor_allele_frequency) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
370 $self->{minor_allele_frequency} = $minor_allele_frequency if defined $minor_allele_frequency;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
371 return $self->{minor_allele_frequency}
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
372 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
373
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
374 =head2 minor_allele_count
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
375
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
376 Arg [1] : int $minor_allele_count (optional)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
377 The new minor allele count
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
378 Example : $maf_count = $obj->minor_allele_count()
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
379 Description: Get/set the sample count of the minor allele of this variation, as reported by dbSNP
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
380 Returntype : int
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
381 Exceptions : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
382 Caller : general
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
383 Status : Stable
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
384
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
385 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
386
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
387 sub minor_allele_count {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
388 my ($self, $minor_allele_count) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
389 $self->{minor_allele_count} = $minor_allele_count if defined $minor_allele_count;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
390 return $self->{minor_allele_count}
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
391 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
392
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
393
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
394
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
395 =head2 get_all_TranscriptVariations
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
396
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
397 Arg [1] : (optional) listref of Bio::EnsEMBL::Transcript objects
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
398 Example : $vf->get_all_TranscriptVariations;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
399 Description : Get all the TranscriptVariations associated with this VariationFeature.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
400 If the optional list of Transcripts is supplied, get only TranscriptVariations
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
401 associated with those Transcripts.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
402 Returntype : listref of Bio::EnsEMBL::Variation::TranscriptVariation objects
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
403 Exceptions : Thrown on wrong argument type
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
404 Caller : general
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
405 Status : At Risk
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
406
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
407 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
408
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
409 sub get_all_TranscriptVariations {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
410
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
411 my ($self, $transcripts) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
412
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
413 if ($transcripts) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
414 assert_ref($transcripts, 'ARRAY');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
415 map { assert_ref($_, 'Bio::EnsEMBL::Transcript') } @$transcripts;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
416 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
417
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
418 #die unless $self->{transcript_variations};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
419
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
420 if ($self->dbID && not defined $self->{transcript_variations}) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
421 # this VariationFeature is from the database, so we can just fetch the
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
422 # TranscriptVariations from the database as well
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
423
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
424 if (my $db = $self->adaptor->db) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
425 my $tva = $db->get_TranscriptVariationAdaptor;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
426
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
427 # just fetch TVs for all Transcripts because that's more efficient,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
428 # we'll only return those asked for later on
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
429
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
430 my $tvs = $tva->fetch_all_by_VariationFeatures([$self]);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
431
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
432 map { $self->add_TranscriptVariation($_) } @$tvs;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
433 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
434 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
435 elsif (not defined $self->{transcript_variations}) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
436 # this VariationFeature is not in the database so we have to build the
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
437 # TranscriptVariations ourselves
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
438
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
439 unless ($transcripts) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
440 # if the caller didn't supply some transcripts fetch those around this VariationFeature
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
441
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
442 # get a slice around this transcript including the maximum distance up and down-stream
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
443 # that we still call consequences for
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
444
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
445 my $slice = $self->feature_Slice->expand(
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
446 MAX_DISTANCE_FROM_TRANSCRIPT,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
447 MAX_DISTANCE_FROM_TRANSCRIPT
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
448 );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
449
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
450 # fetch all transcripts on this slice
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
451
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
452 $transcripts = $slice->get_all_Transcripts(1);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
453 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
454
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
455 my @unfetched_transcripts = grep {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
456 not exists $self->{transcript_variations}->{$_->stable_id}
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
457 } @$transcripts;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
458
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
459 for my $transcript (@unfetched_transcripts) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
460 $self->add_TranscriptVariation(
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
461 Bio::EnsEMBL::Variation::TranscriptVariation->new(
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
462 -variation_feature => $self,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
463 -transcript => $transcript,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
464 -adaptor => ($self->adaptor->db ? $self->adaptor->db->get_TranscriptVariationAdaptor : undef),
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
465 )
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
466 );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
467 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
468 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
469
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
470 if ($transcripts) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
471 # just return TranscriptVariations for the requested Transcripts
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
472 return [ map { $self->{transcript_variations}->{$_->stable_id} } @$transcripts ];
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
473 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
474 else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
475 # return all TranscriptVariations
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
476 return [ values %{ $self->{transcript_variations} } ];
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
477 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
478 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
479
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
480 =head2 get_all_RegulatoryFeatureVariations
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
481
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
482 Description : Get all the RegulatoryFeatureVariations associated with this VariationFeature.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
483 Returntype : listref of Bio::EnsEMBL::Variation::RegulatoryFeatureVariation objects
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
484 Exceptions : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
485 Status : At Risk
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
486
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
487 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
488
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
489 sub get_all_RegulatoryFeatureVariations {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
490 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
491 return $self->_get_all_RegulationVariations('RegulatoryFeature', @_);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
492 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
493
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
494 =head2 get_all_MotifFeatureVariations
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
495
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
496 Description : Get all the MotifFeatureVariations associated with this VariationFeature.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
497 Returntype : listref of Bio::EnsEMBL::Variation::MotifFeatureVariation objects
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
498 Exceptions : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
499 Status : At Risk
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
500
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
501 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
502
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
503 sub get_all_MotifFeatureVariations {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
504 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
505 return $self->_get_all_RegulationVariations('MotifFeature', @_);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
506 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
507
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
508 =head2 get_all_ExternalFeatureVariations
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
509
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
510 Description : Get all the ExternalFeatureVariations associated with this VariationFeature.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
511 Returntype : listref of Bio::EnsEMBL::Variation::ExternalFeatureVariation objects
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
512 Exceptions : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
513 Status : At Risk
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
514
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
515 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
516
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
517 sub get_all_ExternalFeatureVariations {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
518 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
519 return $self->_get_all_RegulationVariations('ExternalFeature', @_);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
520 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
521
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
522 sub _get_all_RegulationVariations {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
523 my ($self, $type) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
524
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
525 unless ($type && ($type eq 'RegulatoryFeature' || $type eq 'MotifFeature' || $type eq 'ExternalFeature')) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
526 throw("Invalid Ensembl Regulation type '$type'");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
527 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
528
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
529 unless ($self->{regulation_variations}->{$type}) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
530
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
531 my $fg_adaptor;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
532
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
533 if (my $adap = $self->adaptor) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
534 if(my $db = $adap->db) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
535 $fg_adaptor = Bio::EnsEMBL::DBSQL::MergedAdaptor->new(
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
536 -species => $adap->db->species,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
537 -type => $type,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
538 );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
539 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
540
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
541 unless ($fg_adaptor) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
542 warning("Failed to get adaptor for $type");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
543 return [];
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
544 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
545 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
546 else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
547 warning('Cannot get variation features without attached adaptor');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
548 return [];
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
549 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
550
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
551 my $slice = $self->feature_Slice;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
552
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
553 my $constructor = 'Bio::EnsEMBL::Variation::'.$type.'Variation';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
554
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
555 eval {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
556 $self->{regulation_variations}->{$type} = [
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
557 map {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
558 $constructor->new(
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
559 -variation_feature => $self,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
560 -feature => $_,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
561 );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
562 } map { $_->transfer($self->slice) } @{ $fg_adaptor->fetch_all_by_Slice($slice) }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
563 ];
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
564 };
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
565
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
566 $self->{regulation_variations}->{$type} ||= [];
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
567 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
568
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
569 return $self->{regulation_variations}->{$type};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
570 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
571
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
572 sub get_IntergenicVariation {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
573 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
574 my $no_ref_check = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
575
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
576 unless (exists $self->{intergenic_variation}) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
577 if (scalar(@{ $self->get_all_TranscriptVariations }) == 0) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
578 $self->{intergenic_variation} = Bio::EnsEMBL::Variation::IntergenicVariation->new(
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
579 -variation_feature => $self,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
580 -no_ref_check => $no_ref_check,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
581 );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
582 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
583 else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
584 $self->{intergenic_variation} = undef;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
585 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
586 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
587
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
588 return $self->{intergenic_variation};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
589 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
590
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
591 =head2 get_all_VariationFeatureOverlaps
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
592
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
593 Description : Get all the VariationFeatureOverlaps associated with this VariationFeature, this
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
594 includes TranscriptVariations and regulatory feature overlap object.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
595 Returntype : listref of Bio::EnsEMBL::Variation::VariationFeatureOverlap objects
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
596 Exceptions : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
597 Status : At Risk
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
598
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
599 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
600
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
601 sub get_all_VariationFeatureOverlaps {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
602 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
603
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
604 my $vfos = [
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
605 @{ $self->get_all_TranscriptVariations },
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
606 @{ $self->get_all_RegulatoryFeatureVariations },
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
607 @{ $self->get_all_MotifFeatureVariations },
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
608 @{ $self->get_all_ExternalFeatureVariations },
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
609 ];
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
610
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
611 if (my $iv = $self->get_IntergenicVariation) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
612 push @$vfos, $iv;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
613 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
614
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
615 return $vfos;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
616 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
617
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
618 =head2 add_TranscriptVariation
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
619
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
620 Arg [1] : Bio::EnsEMBL::Variation::TranscriptVariation
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
621 Example : $vf->add_TranscriptVariation($tv);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
622 Description : Adds a TranscriptVariation to the variation feature object.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
623 Exceptions : thrown on bad argument
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
624 Caller : Bio::EnsEMBL::Variation::TranscriptVariationAdaptor
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
625 Status : At Risk
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
626
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
627 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
628
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
629 sub add_TranscriptVariation {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
630 my ($self, $tv) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
631 assert_ref($tv, 'Bio::EnsEMBL::Variation::TranscriptVariation');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
632 # we need to weaken the reference back to us to avoid a circular reference
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
633 weaken($tv->{base_variation_feature});
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
634 $self->{transcript_variations}->{$tv->transcript_stable_id} = $tv;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
635 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
636
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
637 =head2 variation
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
638
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
639 Arg [1] : (optional) Bio::EnsEMBL::Variation::Variation $variation
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
640 Example : $v = $vf->variation();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
641 Description: Getter/Setter for the variation associated with this feature.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
642 If not set, and this VariationFeature has an associated adaptor
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
643 an attempt will be made to lazy-load the variation from the
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
644 database.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
645 Returntype : Bio::EnsEMBL::Variation::Variation
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
646 Exceptions : throw on incorrect argument
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
647 Caller : general
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
648 Status : Stable
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
649
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
650 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
651
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
652 sub variation {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
653 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
654
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
655 if(@_) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
656 if(!ref($_[0]) || !$_[0]->isa('Bio::EnsEMBL::Variation::Variation')) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
657 throw("Bio::EnsEMBL::Variation::Variation argument expected");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
658 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
659 $self->{'variation'} = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
660 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
661 elsif(!defined($self->{'variation'}) && $self->adaptor() &&
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
662 defined($self->{'_variation_id'})) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
663 # lazy-load from database on demand
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
664 my $va = $self->adaptor->db()->get_VariationAdaptor();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
665 $self->{'variation'} = $va->fetch_by_dbID($self->{'_variation_id'});
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
666 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
667
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
668 return $self->{'variation'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
669 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
670
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
671 =head2 consequence_type
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
672
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
673 Arg [1] : (optional) String $term_type
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
674 Description: Get a list of all the unique consequence terms of this
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
675 VariationFeature. By default returns Ensembl display terms
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
676 (e.g. 'NON_SYNONYMOUS_CODING'). $term_type can also be 'label'
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
677 (e.g. 'Non-synonymous coding'), 'SO' (Sequence Ontology, e.g.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
678 'non_synonymous_codon') or 'NCBI' (e.g. 'missense')
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
679 Returntype : listref of strings
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
680 Exceptions : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
681 Status : At Risk
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
682
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
683 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
684
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
685 sub consequence_type {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
686
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
687 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
688 my $term_type = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
689
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
690 my $method_name;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
691
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
692 # delete cached term
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
693 if(defined($term_type)) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
694 delete $self->{consequence_types};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
695 $method_name = $term_type.($term_type eq 'label' ? '' : '_term');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
696 $method_name = 'SO_term' unless @{$self->get_all_OverlapConsequences} && $self->get_all_OverlapConsequences->[0]->can($method_name);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
697 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
698
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
699 $method_name ||= 'SO_term';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
700
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
701 if (exists($self->{current_consequence_method}) && $self->{current_consequence_method} ne $method_name) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
702 delete $self->{consequence_type};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
703 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
704
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
705 unless ($self->{consequence_types}) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
706
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
707 # work out the terms from the OverlapConsequence objects
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
708
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
709 $self->{consequence_types} =
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
710 [ map { $_->$method_name } @{ $self->get_all_OverlapConsequences } ];
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
711 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
712
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
713 $self->{current_consequence_method} = $method_name;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
714
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
715 return $self->{consequence_types};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
716 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
717
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
718 =head2 get_all_OverlapConsequences
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
719
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
720 Description: Get a list of all the unique OverlapConsequences of this VariationFeature,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
721 calculating them on the fly from the TranscriptVariations if necessary
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
722 Returntype : listref of Bio::EnsEMBL::Variation::OverlapConsequence objects
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
723 Exceptions : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
724 Status : At Risk
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
725
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
726 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
727
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
728 sub get_all_OverlapConsequences {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
729 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
730
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
731 unless ($self->{overlap_consequences}) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
732
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
733 # work them out and store them in a hash keyed by SO_term as we don't
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
734 # want duplicates from different VFOs
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
735
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
736 my %overlap_cons;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
737
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
738 for my $vfo (@{ $self->get_all_TranscriptVariations }) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
739 for my $allele (@{ $vfo->get_all_alternate_VariationFeatureOverlapAlleles }) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
740 for my $cons (@{ $allele->get_all_OverlapConsequences }) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
741 $overlap_cons{$cons->SO_term} = $cons;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
742 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
743 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
744 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
745
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
746 # if we don't have any consequences we use a default from Constants.pm
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
747 # (currently set to the intergenic consequence)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
748
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
749 $self->{overlap_consequences} = [
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
750 %overlap_cons ? values %overlap_cons : $DEFAULT_OVERLAP_CONSEQUENCE
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
751 ];
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
752 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
753
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
754 return $self->{overlap_consequences};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
755 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
756
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
757 =head2 add_OverlapConsequence
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
758
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
759 Arg [1] : Bio::EnsEMBL::Variation::OverlapConsequence instance
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
760 Description: Add an OverlapConsequence to this VariationFeature's list
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
761 Returntype : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
762 Exceptions : throws if the argument is the wrong type
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
763 Status : At Risk
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
764
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
765 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
766
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
767 sub add_OverlapConsequence {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
768 my ($self, $oc) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
769 assert_ref($oc, 'Bio::EnsEMBL::Variation::OverlapConsequence');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
770 push @{ $self->{overlap_consequences} ||= [] }, $oc;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
771 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
772
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
773 =head2 most_severe_OverlapConsequence
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
774
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
775 Description: Get the OverlapConsequence considered (by Ensembl) to be the most severe
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
776 consequence of all the alleles of this VariationFeature
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
777 Returntype : Bio::EnsEMBL::Variation::OverlapConsequence
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
778 Exceptions : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
779 Status : At Risk
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
780
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
781 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
782
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
783 sub most_severe_OverlapConsequence {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
784 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
785
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
786 unless ($self->{_most_severe_consequence}) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
787
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
788 my $highest;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
789
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
790 for my $cons (@{ $self->get_all_OverlapConsequences }) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
791 $highest ||= $cons;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
792 if ($cons->rank < $highest->rank) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
793 $highest = $cons;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
794 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
795 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
796
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
797 $self->{_most_severe_consequence} = $highest;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
798 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
799
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
800 return $self->{_most_severe_consequence};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
801 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
802
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
803 =head2 display_consequence
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
804
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
805 Arg [1] : (optional) String $term_type
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
806 Description: Get the term for the most severe consequence of this
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
807 VariationFeature. By default returns Ensembl display terms
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
808 (e.g. 'NON_SYNONYMOUS_CODING'). $term_type can also be 'label'
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
809 (e.g. 'Non-synonymous coding'), 'SO' (Sequence Ontology, e.g.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
810 'non_synonymous_codon') or 'NCBI' (e.g. 'missense')
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
811 Returntype : string
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
812 Exceptions : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
813 Status : At Risk
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
814
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
815 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
816
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
817 sub display_consequence {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
818 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
819 my $term_type = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
820
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
821 my $method_name;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
822
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
823 # delete cached term
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
824 if(defined($term_type)) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
825 $method_name = $term_type.($term_type eq 'label' ? '' : '_term');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
826 $method_name = 'SO_term' unless @{$self->get_all_OverlapConsequences} && $self->get_all_OverlapConsequences->[0]->can($method_name);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
827 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
828
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
829 $method_name ||= 'SO_term';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
830
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
831 return $self->most_severe_OverlapConsequence->$method_name;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
832 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
833
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
834 =head2 add_consequence_type
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
835
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
836 Status : Deprecated, use add_OverlapConsequence instead
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
837
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
838 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
839
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
840 sub add_consequence_type{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
841 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
842 warning('Deprecated method, use add_OverlapConsequence instead');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
843 return $self->add_OverlapConsequence(@_);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
844 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
845
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
846 =head2 get_consequence_type
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
847
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
848 Status : Deprecated, use consequence_type instead
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
849
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
850 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
851
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
852 sub get_consequence_type {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
853 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
854 warning('Deprecated method, use consequence_type instead');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
855 return $self->consequence_type;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
856 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
857
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
858 =head2 ambig_code
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
859
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
860 Args : None
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
861 Example : my $ambiguity_code = $vf->ambig_code()
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
862 Description : Returns the ambigutiy code for the alleles in the VariationFeature
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
863 ReturnType : String $ambiguity_code
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
864 Exceptions : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
865 Caller : General
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
866 Status : At Risk
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
867
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
868 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
869
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
870 sub ambig_code{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
871 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
872
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
873 return &ambiguity_code($self->allele_string());
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
874 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
875
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
876 =head2 var_class
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
877
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
878 Args[1] : (optional) no_db - don't use the term from the database, always calculate it from the allele string
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
879 (used by the ensembl variation pipeline)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
880 Example : my $variation_class = $vf->var_class
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
881 Description : returns the Ensembl term for the class of this variation
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
882 ReturnType : string
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
883 Exceptions : throws if we can't find a corresponding display term for an SO term
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
884 Caller : General
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
885 Status : At Risk
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
886
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
887 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
888
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
889 sub var_class {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
890
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
891 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
892 my $no_db = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
893
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
894 unless ($self->{class_display_term}) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
895
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
896 my $so_term = $self->class_SO_term(undef, $no_db);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
897
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
898 # convert the SO term to the ensembl display term
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
899
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
900 $self->{class_display_term} = $self->is_somatic ?
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
901 $VARIATION_CLASSES{$so_term}->{somatic_display_term} :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
902 $VARIATION_CLASSES{$so_term}->{display_term};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
903 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
904
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
905 return $self->{class_display_term};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
906 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
907
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
908 =head2 class_SO_term
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
909
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
910 Args[1] : (optional) class_SO_term - the SO term for the class of this variation feature
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
911 Args[2] : (optional) no_db - don't use the term from the database, always calculate it from the allele string
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
912 (used by the ensembl variation pipeline)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
913 Example : my $SO_variation_class = $vf->class_SO_term()
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
914 Description : Get/set the SO term for the class of this variation
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
915 ReturnType : string
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
916 Exceptions : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
917 Caller : General
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
918 Status : At Risk
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
919
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
920 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
921
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
922 sub class_SO_term {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
923 my ($self, $class_SO_term, $no_db) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
924
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
925 $self->{class_SO_term} = $class_SO_term if $class_SO_term;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
926
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
927 if ($no_db || !$self->{class_SO_term}) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
928 $self->{class_SO_term} = SO_variation_class($self->allele_string);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
929 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
930
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
931 return $self->{class_SO_term};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
932 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
933
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
934 =head2 get_all_validation_states
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
935
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
936 Arg [1] : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
937 Example : my @vstates = @{$vf->get_all_validation_states()};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
938 Description: Retrieves all validation states for this variationFeature. Current
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
939 possible validation statuses are 'cluster','freq','submitter',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
940 'doublehit', 'hapmap'
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
941 Returntype : reference to list of strings
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
942 Exceptions : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
943 Caller : general
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
944 Status : At Risk
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
945
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
946 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
947
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
948 sub get_all_validation_states {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
949 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
950 return Bio::EnsEMBL::Variation::Utils::Sequence::get_all_validation_states($self->{'validation_code'});
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
951 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
952
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
953
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
954 =head2 add_validation_state
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
955
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
956 Arg [1] : string $state
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
957 Example : $vf->add_validation_state('cluster');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
958 Description: Adds a validation state to this variation.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
959 Returntype : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
960 Exceptions : warning if validation state is not a recognised type
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
961 Caller : general
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
962 Status : At Risk
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
963
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
964 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
965
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
966 sub add_validation_state {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
967 Bio::EnsEMBL::Variation::Utils::Sequence::add_validation_state(@_);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
968 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
969
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
970 =head2 source
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
971
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
972 Arg [1] : string $source_name (optional) - the new value to set the source attribute to
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
973 Example : $source = $vf->source;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
974 Description: Getter/Setter for the source attribute
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
975 Returntype : the source name as a string,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
976 Exceptions : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
977 Caller : general
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
978 Status : At Risk
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
979
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
980 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
981
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
982 sub source {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
983 my ($self, $source) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
984 $self->{source} = $source if $source;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
985 return $self->{source};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
986 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
987
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
988 =head2 source_version
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
989
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
990 Arg [1] : number $source_version (optional) - the new value to set the source version attribute to
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
991 Example : $source_version = $vf->source_version;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
992 Description: Getter/Setter for the source version attribute
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
993 Returntype : the source version as a number
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
994 Exceptions : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
995 Caller : general
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
996 Status : At Risk
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
997
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
998 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
999
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1000 sub source_version {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1001 my ($self, $source_version) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1002 $self->{source_version} = $source_version if $source_version;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1003 return $self->{source_version};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1004 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1005
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1006 =head2 is_somatic
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1007
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1008 Arg [1] : boolean $is_somatic (optional)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1009 The new value to set the is_somatic flag to
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1010 Example : $is_somatic = $vf->is_somatic
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1011 Description: Getter/Setter for the is_somatic flag, which identifies this variation feature as either somatic or germline
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1012 Returntype : boolean
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1013 Exceptions : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1014 Caller : general
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1015 Status : Stable
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1016
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1017 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1018
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1019 sub is_somatic {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1020 my ($self, $is_somatic) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1021 $self->{'is_somatic'} = $is_somatic if defined $is_somatic;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1022 return $self->{'is_somatic'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1023 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1024
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1025 =head2 is_tagged
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1026
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1027 Args : None
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1028 Example : my $populations = $vf->is_tagged();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1029 Description : If the variation is tagged in any population, returns an array with the populations where the variation_feature
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1030 is tagged (using a criteria of r2 > 0.99). Otherwise, returns null
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1031 ReturnType : list of Bio::EnsEMBL::Variation::Population
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1032 Exceptions : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1033 Caller : general
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1034 Status : At Risk
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1035
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1036 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1037
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1038 sub is_tagged{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1039 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1040
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1041 if ($self->adaptor()){
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1042 my $population_adaptor = $self->adaptor()->db()->get_PopulationAdaptor();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1043 return $population_adaptor->fetch_tagged_Population($self);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1044 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1045 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1046
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1047 =head2 is_tag
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1048
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1049 Args : None
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1050 Example : my $populations = $vf->is_tag();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1051 Description : Returns an array of populations in which this variation feature
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1052 is a tag SNP.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1053 ReturnType : list of Bio::EnsEMBL::Variation::Population
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1054 Exceptions : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1055 Caller : general
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1056 Status : At Risk
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1057
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1058 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1059
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1060 sub is_tag{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1061 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1062
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1063 if ($self->adaptor()){
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1064 my $population_adaptor = $self->adaptor()->db()->get_PopulationAdaptor();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1065 return $population_adaptor->fetch_tag_Population($self);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1066 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1067 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1068
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1069 =head2 get_all_tagged_VariationFeatures
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1070
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1071 Args : Bio::EnsEMBL::Variation::Population $pop (optional)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1072 Example : my $vfs = $vf->get_all_tagged_VariationFeatures();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1073 Description : Returns an arrayref of variation features that are tagged by
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1074 this variation feature, in the population $pop if specified.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1075 ReturnType : list of Bio::EnsEMBL::Variation::VariationFeature
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1076 Exceptions : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1077 Caller : general
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1078 Status : At Risk
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1079
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1080 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1081
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1082 sub get_all_tagged_VariationFeatures {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1083 return $_[0]->adaptor->fetch_all_tagged_by_VariationFeature(@_);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1084 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1085
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1086 =head2 get_all_tag_VariationFeatures
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1087
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1088 Args : Bio::EnsEMBL::Variation::Population $pop (optional)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1089 Example : my $vfs = $vf->get_all_tag_VariationFeatures();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1090 Description : Returns an arrayref of variation features that tag this
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1091 variation feature, in the population $pop if specified.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1092 ReturnType : list of Bio::EnsEMBL::Variation::VariationFeature
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1093 Exceptions : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1094 Caller : general
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1095 Status : At Risk
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1096
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1097 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1098
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1099 sub get_all_tag_VariationFeatures {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1100 return $_[0]->adaptor->fetch_all_tags_by_VariationFeature(@_);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1101 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1102
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1103 =head2 get_all_tag_and_tagged_VariationFeatures
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1104
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1105 Args : Bio::EnsEMBL::Variation::Population $pop (optional)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1106 Example : my $vfs = $vf->get_all_tag_and_tagged_VariationFeatures();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1107 Description : Returns an arrayref of variation features that either tag or are
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1108 tagged by this variation feature, in the population $pop if
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1109 specified.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1110 ReturnType : list of Bio::EnsEMBL::Variation::VariationFeature
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1111 Exceptions : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1112 Caller : general
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1113 Status : At Risk
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1114
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1115 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1116
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1117 sub get_all_tag_and_tagged_VariationFeatures {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1118 return $_[0]->adaptor->fetch_all_tags_and_tagged_by_VariationFeature(@_);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1119 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1120
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1121
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1122
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1123 =head2 is_reference
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1124 Arg : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1125 Example : my $reference = $vf->is_reference()
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1126 Description: Returns 1 if VF's slice is a reference slice else 0
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1127 Returntype : int
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1128 Caller : general
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1129 Status : At Risk
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1130
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1131 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1132
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1133 sub is_reference {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1134 my ($self) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1135 my $slice = $self->slice;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1136
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1137 if ( !defined( $self->{'is_reference'} ) ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1138 $self->{'is_reference'} = $slice->is_reference();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1139 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1140
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1141 return $self->{'is_reference'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1142 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1143
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1144 =head2 convert_to_SNP
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1145
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1146 Args : None
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1147 Example : my $snp = $vf->convert_to_SNP()
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1148 Description : Creates a Bio::EnsEMBL::SNP object from Bio::EnsEMBL::VariationFeature. Mainly used for
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1149 backwards compatibility
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1150 ReturnType : Bio::EnsEMBL::SNP
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1151 Exceptions : None
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1152 Caller : general
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1153 Status : At Risk
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1154
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1155 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1156
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1157 sub convert_to_SNP{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1158 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1159
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1160 require Bio::EnsEMBL::SNP; #for backwards compatibility. It will only be loaded if the function is called
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1161
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1162 my $snp = Bio::EnsEMBL::SNP->new_fast({
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1163 'dbID' => $self->variation()->dbID(),
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1164 '_gsf_start' => $self->start,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1165 '_gsf_end' => $self->end,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1166 '_snp_strand' => $self->strand,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1167 '_gsf_score' => 1,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1168 '_type' => $self->var_class,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1169 '_validated' => $self->get_all_validation_states(),
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1170 'alleles' => $self->allele_string,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1171 '_ambiguity_code' => $self->ambig_code,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1172 '_mapweight' => $self->map_weight,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1173 '_source' => $self->source
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1174 });
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1175 return $snp;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1176 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1177
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1178 =head2 get_all_LD_values
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1179
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1180 Args : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1181 Description : returns all LD values for this variation feature. This function will only work correctly if the variation
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1182 database has been attached to the core database.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1183 ReturnType : Bio::EnsEMBL::Variation::LDFeatureContainer
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1184 Exceptions : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1185 Caller : snpview
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1186 Status : At Risk
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1187 : Variation database is under development.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1188
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1189 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1190
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1191 sub get_all_LD_values{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1192 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1193
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1194 if ($self->adaptor()){
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1195 my $ld_adaptor = $self->adaptor()->db()->get_LDFeatureContainerAdaptor();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1196 return $ld_adaptor->fetch_by_VariationFeature($self);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1197 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1198 return {};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1199 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1200
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1201 =head2 get_all_LD_Populations
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1202
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1203 Args : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1204 Description : returns a list of populations that could produces LD values
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1205 for this VariationFeature
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1206 ReturnType : listref of Bio::EnsEMBL::Variation::Population objects
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1207 Exceptions : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1208 Caller : snpview
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1209 Status : At Risk
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1210
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1211 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1212
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1213 sub get_all_LD_Populations{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1214 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1215
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1216 my $pa = $self->adaptor->db->get_PopulationAdaptor;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1217 return [] unless $pa;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1218
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1219 my $ld_pops = $pa->fetch_all_LD_Populations;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1220 return [] unless $ld_pops;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1221
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1222 my $sth = $self->adaptor->db->prepare(qq{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1223 SELECT ip.population_sample_id, c.seq_region_start, c.genotypes
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1224 FROM compressed_genotype_region c, individual_population ip
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1225 WHERE c.sample_id = ip.individual_sample_id
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1226 AND c.seq_region_id = ?
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1227 AND c.seq_region_start < ?
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1228 AND c.seq_region_end > ?
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1229 });
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1230
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1231 my $this_vf_start = $self->seq_region_start;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1232
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1233 $sth->bind_param(1, $self->feature_Slice->get_seq_region_id);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1234 $sth->bind_param(2, $self->seq_region_end);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1235 $sth->bind_param(3, $this_vf_start);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1236
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1237 $sth->execute;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1238
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1239 my ($sample_id, $seq_region_start, $genotypes);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1240 $sth->bind_columns(\$sample_id, \$seq_region_start, \$genotypes);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1241
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1242 my %have_genotypes = ();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1243
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1244 while($sth->fetch()) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1245
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1246 next if $have_genotypes{$sample_id};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1247
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1248 if($seq_region_start == $this_vf_start) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1249 $have_genotypes{$sample_id} = 1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1250 next;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1251 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1252
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1253 my @genotypes = unpack '(www)*', $genotypes;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1254 my $gt_start = $seq_region_start;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1255
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1256 while(my( $var_id, $gt_code, $gap ) = splice @genotypes, 0, 3 ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1257 if($gt_start == $this_vf_start) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1258 $have_genotypes{$sample_id} = 1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1259 last;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1260 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1261 $gt_start += $gap + 1 if defined $gap;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1262 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1263 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1264
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1265 my @final_list = grep {$have_genotypes{$_->dbID}} @$ld_pops;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1266
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1267 return \@final_list;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1268 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1269
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1270 =head2 get_all_sources
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1271
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1272 Args : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1273 Example : my @sources = @{$vf->get_all_sources()};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1274 Description : returns a list of all the sources for this
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1275 VariationFeature
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1276 ReturnType : reference to list of strings
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1277 Exceptions : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1278 Caller : general
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1279 Status : At Risk
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1280 : Variation database is under development.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1281 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1282
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1283 sub get_all_sources{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1284 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1285
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1286 my @sources;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1287 my %sources;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1288 if ($self->adaptor()){
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1289 map {$sources{$_}++} @{$self->adaptor()->get_all_synonym_sources($self)};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1290 $sources{$self->source}++;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1291 @sources = keys %sources;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1292 return \@sources;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1293 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1294 return \@sources;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1295 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1296
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1297 =head2 ref_allele_string
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1298
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1299 Args : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1300 Example : $reference_allele_string = $self->ref_allele_string()
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1301 Description: Getter for the reference allele_string, always the first.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1302 Returntype : string
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1303 Exceptions : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1304 Caller : general
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1305 Status : Stable
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1306
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1307 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1308
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1309 sub ref_allele_string{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1310 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1311
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1312 my @alleles = split /[\|\\\/]/,$self->allele_string;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1313 return $alleles[0];
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1314 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1315
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1316
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1317 =head2 get_all_VariationSets
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1318
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1319 Args : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1320 Example : my @vs = @{$vf->get_all_VariationSets()};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1321 Description : returns a reference to a list of all the VariationSets this
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1322 VariationFeature is a member of
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1323 ReturnType : reference to list of Bio::EnsEMBL::Variation::VariationSets
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1324 Exceptions : if no adaptor is attached to this object
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1325 Caller : general
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1326 Status : At Risk
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1327 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1328
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1329 sub get_all_VariationSets {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1330 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1331
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1332 if (!$self->adaptor()) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1333 throw('An adaptor must be attached in order to get all variation sets');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1334 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1335 my $vs_adaptor = $self->adaptor()->db()->get_VariationSetAdaptor();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1336 my $variation_sets = $vs_adaptor->fetch_all_by_Variation($self->variation());
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1337
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1338 return $variation_sets;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1339 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1340
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1341
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1342 =head2 get_all_Alleles
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1343
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1344 Args : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1345 Example : @alleles = @{$vf->get_all_Alleles}
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1346 Description: Gets all Allele objects from the underlying variation object,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1347 with reference alleles first.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1348 Returntype : listref of Bio::EnsEMBL::Variation::Allele objects
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1349 Exceptions : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1350 Caller : general
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1351 Status : Stable
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1352
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1353 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1354
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1355 sub get_all_Alleles{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1356 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1357
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1358 my @alleles = @{$self->variation->get_all_Alleles};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1359
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1360 # put all alleles in a hash
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1361 my %order = ();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1362 foreach my $allele(@alleles) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1363 $order{$allele->allele} = 1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1364 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1365
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1366 $order{$self->ref_allele_string} = 2;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1367
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1368 # now sort them by population, submitter, allele
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1369 my @new_alleles = sort {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1370 ($a->population ? $a->population->name : "") cmp ($b->population ? $b->population->name : "") ||
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1371 ($a->subsnp ? $a->subsnp : "") cmp ($b->subsnp ? $b->subsnp : "") ||
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1372 $order{$b->allele} <=> $order{$a->allele}
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1373 } @alleles;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1374
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1375 return \@new_alleles;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1376 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1377
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1378
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1379 =head2 get_all_PopulationGenotypes
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1380
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1381 Args : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1382 Example : @pop_gens = @{$vf->get_all_PopulationGenotypes}
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1383 Description: Gets all PopulationGenotype objects from the underlying variation
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1384 object, with reference genotypes first.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1385 Returntype : listref of Bio::EnsEMBL::Variation::PopulationGenotype objects
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1386 Exceptions : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1387 Caller : general
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1388 Status : Stable
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1389
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1390 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1391
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1392 sub get_all_PopulationGenotypes{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1393 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1394
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1395 my @gens = @{$self->variation->get_all_PopulationGenotypes};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1396
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1397 # put all alleles in a hash
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1398 my %order = ();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1399 foreach my $gen(@gens) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1400 # homs low priority, hets higher
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1401 $order{$gen->allele1.$gen->allele2} = ($gen->allele1 eq $gen->allele2 ? 1 : 2);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1402 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1403
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1404 # ref hom highest priority
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1405 $order{$self->ref_allele_string x 2} = 3;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1406
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1407 # now sort them by population, submitter, genotype
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1408 my @new_gens = sort {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1409 ($a->population ? $a->population->name : "") cmp ($b->population ? $b->population->name : "") ||
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1410 ($a->subsnp ? $a->subsnp : "") cmp ($b->subsnp ? $b->subsnp : "") ||
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1411 $order{$b->allele1.$b->allele2} <=> $order{$a->allele1.$a->allele2}
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1412 } @gens;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1413
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1414 return \@new_gens;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1415 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1416
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1417 =head2 get_all_hgvs_notations
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1418
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1419 Arg [1] : Bio::EnsEMBL::Feature $ref_feature (optional)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1420 Get the HGVS notation of this VariationFeature relative to the slice it is on. If an optional reference feature is supplied, returns the coordinates
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1421 relative to this feature.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1422 Arg [2] : string (Optional)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1423 Indicate whether the HGVS notation should be reported in genomic coordinates or cDNA coordinates.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1424 'g' -> Genomic position numbering
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1425 'c' -> cDNA position numbering
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1426 'p' -> protein position numbering
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1427 Arg [3] : string (Optional)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1428 A name to use for the reference can be supplied. By default the name returned by the display_id() method of the reference feature will be used.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1429 Arg [4] : string (Optional)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1430 Return just the HGVS notation corresponding to this allele
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1431
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1432 Example : my $vf = $variation_feature_adaptor->fetch_by_dbID(565770);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1433 my $tr = $transcript_adaptor->fetch_by_stable_id('ENST00000335295');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1434 my $hgvs = $vf->get_all_hgvs_notations($tr,'p');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1435 while (my ($allele,$hgvs_str) = each(%{$hgvs})) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1436 print "Allele $allele :\t$hgvs_str\n"; # Will print 'Allele - : ENSP00000333994.3:p.Val34_Tyr36delinsAsp'
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1437 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1438
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1439 Description: Returns a reference to a hash with the allele as key and a string with the HGVS notation of this VariationFeature as value. By default uses the
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1440 slice it is plcaed on as reference but a different reference feature can be supplied.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1441 Returntype : Hash reference
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1442 Exceptions : Throws exception if VariationFeature can not be described relative to the feature_Slice of the supplied reference feature
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1443 Caller : general
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1444 Status : Experimental
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1445
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1446 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1447 sub get_all_hgvs_notations {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1448
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1449 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1450 my $ref_feature = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1451 my $numbering = shift; ## HGVS system g=genomic, c=coding, p=protein
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1452 my $reference_name = shift; ## If the ref_feature is a slice, this is over-written
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1453 my $use_allele = shift; ## optional single allele to check
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1454 my $transcript_variation = shift; ## optional transcript variation - looked up for c|p if not supplied
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1455
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1456 my %hgvs;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1457
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1458 ##### don't get them for HGMD mutations or CNV probes
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1459 return {} if ($self->allele_string =~ /INS|DEL|HGMD|CNV/ig || $self->var_class() =~ /microsat/i);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1460 ##### By default, use genomic position numbering
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1461 $numbering ||= 'g';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1462
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1463 # If no reference feature is supplied, set it to the slice underlying this VariationFeature
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1464 $ref_feature ||= $self->slice();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1465
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1466 # Special parsing for LRG
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1467 if (defined $reference_name && $reference_name =~ /^LRG_/) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1468 # Remove version
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1469 if ($reference_name =~ /(.+)\.\d+$/) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1470 $reference_name = $1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1471 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1472 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1473
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1474 ### Check/get transcript variation available for protein & coding
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1475 if ($ref_feature->isa('Bio::EnsEMBL::Transcript')) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1476
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1477 # Get a TranscriptVariation object for this VariationFeature and the supplied Transcript if it wasn't passed in the call
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1478 $transcript_variation = $self->get_all_TranscriptVariations([$ref_feature])->[0] if (!defined($transcript_variation));
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1479
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1480 ##### call new TranscriptVariationAllele method for each allele
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1481 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1482
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1483
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1484 if ($numbering eq 'p') {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1485
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1486 #### If there is no transcript variation supplied and the variant
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1487 #### is not in the translated region there is no protein change
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1488 return {} if (!defined($transcript_variation) ||
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1489 !defined($transcript_variation->translation_start()) ||
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1490 !defined($transcript_variation->translation_end()));
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1491
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1492 ##### call TranscriptVariationAllele method for each allele
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1493 foreach my $transcriptVariationAllele (@{$transcript_variation->get_all_alternate_TranscriptVariationAlleles()} ){
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1494
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1495 my $allele_string = $transcriptVariationAllele->feature_seq();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1496 my $hgvs_full_string = $transcriptVariationAllele->hgvs_protein();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1497
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1498 if($allele_string ne (split/\//,$self->allele_string())[1] ){
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1499 reverse_comp(\$allele_string); ### hash returned relative to input variation feature strand regardless of transcript strand
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1500 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1501 $hgvs{$allele_string} = $hgvs_full_string ;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1502 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1503 return \%hgvs;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1504 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1505
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1506 elsif ( $numbering =~ m/c|n/) { ### coding or non- coding transcript
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1507
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1508 return {} if (!defined $transcript_variation);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1509
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1510 foreach my $transcriptVariationAllele (@{$transcript_variation->get_all_alternate_TranscriptVariationAlleles()} ){
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1511
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1512 my $allele_string = $transcriptVariationAllele->feature_seq();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1513 my $hgvs_full_string = $transcriptVariationAllele->hgvs_transcript();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1514
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1515 if($allele_string ne (split/\//,$self->allele_string())[1] ){
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1516 reverse_comp(\$allele_string); ### hash returned relative to input variation feature strand regardless of transcript strand
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1517 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1518 $hgvs{$allele_string} = $hgvs_full_string ;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1519 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1520 return \%hgvs;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1521 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1522
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1523 elsif( $numbering =~ m/g/ ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1524 #### handling both alleles together locally for genomic class
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1525 my $hgvs = $self->hgvs_genomic($ref_feature, $reference_name, $use_allele );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1526 return $hgvs;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1527 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1528 else{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1529 warn("HGVS notation is not available for coordinate system: $numbering");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1530 return {};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1531 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1532 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1533
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1534 ### HGVS short flanking sequence required to check if HGVS variant class should be dup rather than ins
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1535 sub _get_flank_seq{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1536
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1537 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1538
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1539 # Get the underlying slice and sequence
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1540 my $ref_slice = $self->slice();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1541
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1542 my @allele = split(/\//,$self->allele_string());
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1543 #### add flank at least as long as longest allele to allow checking
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1544 my $add_length = 0;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1545
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1546 foreach my $al(@allele){ ## may have >2 alleles
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1547 if(length($al) > $add_length){
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1548 $add_length = length $al ;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1549 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1550 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1551 $add_length++;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1552
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1553 my $ref_start = $add_length ;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1554 my $ref_end = $add_length + ($self->end() - $self->start());
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1555 my $seq_start = ($self->start() - $ref_start);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1556
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1557 # Should we be at the beginning of the sequence, adjust the coordinates to not cause an exception
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1558 if ($seq_start < 0) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1559 $ref_start += $seq_start;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1560 $ref_end += $seq_start;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1561 $seq_start = 0;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1562 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1563
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1564 my $flank_seq = $ref_slice->subseq($seq_start +1 , $seq_start + $ref_end, 1);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1565
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1566
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1567 return ($flank_seq, $ref_start, $ref_end );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1568 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1569
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1570 #### format HGVS hash for genomic reference sequence
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1571 ### Input: Variation feature
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1572 ### Output: $hgvs_notation hash
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1573
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1574
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1575
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1576 =head2 hgvs_genomic
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1577
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1578 Arg [1] : Bio::EnsEMBL::Feature $ref_feature (optional)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1579 Get the HGVS notation of this VariationFeature relative to the slice it is on. If an optional reference feature is supplied, returns the coordinates
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1580 relative to this feature.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1581 Arg [2] : string (Optional)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1582 A name to use for the reference can be supplied. By default the name returned by the display_id() method of the reference feature will be used.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1583 Arg [4] : string (Optional)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1584 Return just the HGVS notation corresponding to this allele
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1585
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1586
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1587
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1588 Description: Returns a reference to a hash with the allele as key and a string with the genomic HGVS notation of this VariationFeature as value. By default uses the
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1589 slice it is placed on as reference but a different reference feature can be supplied.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1590 Returntype : Hash reference
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1591 Exceptions : Throws exception if VariationFeature can not be described relative to the feature_Slice of the supplied reference feature
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1592 Caller : general
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1593 Status : Experimental
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1594
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1595 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1596 sub hgvs_genomic{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1597
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1598 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1599 my $ref_feature = shift; ## can be a transcript
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1600 my $reference_name = shift; ## If the ref_feature is a slice, this is over-written
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1601 my $use_allele = shift; ## optional single allele to check
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1602
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1603 my %hgvs;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1604 ########set up sequence reference
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1605 my $ref_slice; #### need this for genomic notation
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1606
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1607 if ($ref_feature->isa('Bio::EnsEMBL::Slice')) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1608 $ref_slice = $ref_feature;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1609 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1610 else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1611 # get slice if not supplied
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1612 $ref_slice = $ref_feature->feature_Slice;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1613 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1614
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1615 # Create new VariationFeature on the slice of the reference feature (unless the reference feature is the slice the VF is on)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1616 my $tr_vf;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1617 if ( $self->slice->coord_system->name() eq "chromosome") {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1618 $tr_vf = $self;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1619 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1620 else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1621 $tr_vf = $self->transfer($ref_slice);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1622 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1623 # Return undef if this VariationFeature could not be transferred
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1624 return {} if (!defined($tr_vf));
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1625
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1626
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1627 # Return undef if this VariationFeature does not fall within the supplied feature.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1628 return {} if ($tr_vf->start < 1 ||
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1629 $tr_vf->end < 1 ||
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1630 $tr_vf->start > ($ref_feature->end - $ref_feature->start + 1) ||
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1631 $tr_vf->end > ($ref_feature->end - $ref_feature->start + 1));
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1632
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1633 ######### define reference sequence name ###################################
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1634
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1635 # If the reference is a slice, use the seq_region_name as identifier
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1636 $reference_name ||= $ref_feature->seq_region_name if ($ref_feature->isa('Bio::EnsEMBL::Slice'));
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1637
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1638 # Use the feature's display id as reference name unless specified otherwise.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1639 # If the feature is a transcript or translation, append the version number as well
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1640 $reference_name ||= $ref_feature->display_id() . ($ref_feature->isa('Bio::EnsEMBL::Transcript') &&
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1641 $ref_feature->display_id !~ /\.\d+$/ ? '.' . $ref_feature->version() : '');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1642
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1643
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1644 ##### get short flank sequence for duplication checking & adjusted variation coordinates
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1645 my ($ref_seq, $ref_start, $ref_end) = _get_flank_seq($tr_vf);;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1646
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1647 foreach my $allele ( split(/\//,$tr_vf->allele_string()) ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1648
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1649 ## If a particular allele was requested, ignore others
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1650 next if (defined($use_allele) && $allele ne $use_allele);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1651
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1652 # Skip if the allele contains weird characters
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1653 next if $allele =~ m/[^ACGT\-]/ig;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1654
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1655 ##### vf strand is relative to slice - if transcript feature slice, may need complimenting
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1656 my $check_allele = $allele;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1657 if( $self->strand() <0 && $ref_slice->strand >0 ||
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1658 $self->strand() >0 && $ref_slice->strand < 0
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1659 ){
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1660 reverse_comp(\$check_allele);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1661 if($DEBUG ==1){print "***************Flipping alt allele $allele => $check_allele to match coding strand\n";}
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1662 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1663
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1664 ## work out chrom coord for hgvs string if transcript slice supplied
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1665 my ($chr_start,$chr_end);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1666 if ( $tr_vf->slice->is_toplevel() == 1) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1667 $chr_start = $tr_vf->seq_region_start();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1668 $chr_end = $tr_vf->seq_region_end();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1669 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1670 else{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1671 ## add feature start to start of var-in-feature
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1672 if( $tr_vf->seq_region_start() < $tr_vf->seq_region_end()){
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1673 $chr_start = $tr_vf->start() + $tr_vf->seq_region_start() ;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1674 $chr_end = $tr_vf->end() + $tr_vf->seq_region_start() ;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1675 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1676 else{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1677 $chr_start = $tr_vf->seq_region_start() - $tr_vf->start() ;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1678 $chr_end = $tr_vf->seq_region_start() - $tr_vf->end() ;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1679 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1680 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1681
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1682
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1683 my $hgvs_notation = hgvs_variant_notation( $check_allele, ## alt allele in refseq strand orientation
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1684 $ref_seq, ## substring of slice for ref allele extraction
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1685 $ref_start, ## start on substring of slice for ref allele extraction
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1686 $ref_end,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1687 $chr_start, ## start wrt seq region slice is on (eg. chrom)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1688 $chr_end,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1689 "");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1690
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1691
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1692 # Skip if e.g. allele is identical to the reference slice
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1693 next if (!defined($hgvs_notation));
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1694
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1695 # Add the name of the reference
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1696 $hgvs_notation->{'ref_name'} = $reference_name;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1697 # Add the position_numbering scheme
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1698 $hgvs_notation->{'numbering'} = 'g';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1699
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1700 # Construct the HGVS notation from the data in the hash
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1701 $hgvs_notation->{'hgvs'} = format_hgvs_string( $hgvs_notation);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1702
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1703 $hgvs{$allele} = $hgvs_notation->{'hgvs'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1704 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1705 return \%hgvs;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1706
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1707 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1708
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1709
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1710
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1711 sub length {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1712 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1713 return $self->{'end'} - $self->{'start'} + 1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1714 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1715
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1716 =head2 summary_as_hash
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1717
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1718 Example : $feature_summary = $feature->summary_as_hash();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1719 Description : Extends Feature::summary_as_hash
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1720 Retrieves a summary of this VariationFeature object.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1721
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1722 Returns : hashref of descriptive strings
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1723
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1724 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1725
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1726 sub summary_as_hash {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1727 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1728 my $summary_ref = $self->SUPER::summary_as_hash;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1729 $summary_ref->{'consequence_type'} = $self->display_consequence;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1730 my @allele_list = split(/\//,$self->allele_string);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1731 $summary_ref->{'alt_alleles'} = \@allele_list;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1732 return $summary_ref;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1733 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1734
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1735 1;