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

Uploaded
author mahtabm
date Thu, 11 Apr 2013 02:01:53 -0400
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1 =head1 LICENSE
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
3 Copyright (c) 1999-2012 The European Bioinformatics Institute and
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
4 Genome Research Limited. All rights reserved.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
5
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
6 This software is distributed under a modified Apache license.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
7 For license details, please see
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
8
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
9 http://www.ensembl.org/info/about/code_licence.html
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
10
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
11 =head1 CONTACT
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
12
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
13 Please email comments or questions to the public Ensembl
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
14 developers list at <dev@ensembl.org>.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
15
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
16 Questions may also be sent to the Ensembl help desk at
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
17 <helpdesk@ensembl.org>.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
18
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
19 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
20
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
21 # Ensembl module for Bio::EnsEMBL::Variation::AlleleFeature
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
22 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
23 # Copyright (c) 2005 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::AlleleFeature - A genomic position for an allele in a sample.
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 # Allele feature representing a single nucleotide polymorphism
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
34 $af = Bio::EnsEMBL::Variation::AlleleFeature->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',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
40 -variation_name => 'rs635421',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
41 -variation => $v);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
42 ...
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
43
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
44 # a allele feature is like any other ensembl feature, can be
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
45 # transformed etc.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
46 $af = $af->transform('supercontig');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
47
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
48 print $af->start(), "-", $af->end(), '(', $af->strand(), ')', "\n";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
49
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
50 print $af->name(), ":", $af->allele_string();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
51
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
52 # Get the Variation object which this feature represents the genomic
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
53 # position of. If not already retrieved from the DB, this will be
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
54 # transparently lazy-loaded
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
55 my $v = $af->variation();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
56
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
57 =head1 DESCRIPTION
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
58
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
59 This is a class representing the genomic position of a allele in a sample
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
60 from the ensembl-variation database. The actual variation information is
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
61 represented by an associated Bio::EnsEMBL::Variation::Variation object. Some
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
62 of the information has been denormalized and is available on the feature for
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
63 speed purposes. A AlleleFeature behaves as any other Ensembl feature.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
64 See B<Bio::EnsEMBL::Feature> and B<Bio::EnsEMBL::Variation::Variation>.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
65
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
66 =head1 METHODS
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
67
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
68 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
69
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
70 use strict;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
71 use warnings;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
72
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
73 package Bio::EnsEMBL::Variation::AlleleFeature;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
74
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
75 use Bio::EnsEMBL::Feature;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
76 use Bio::EnsEMBL::Utils::Exception qw(throw warning);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
77 use Bio::EnsEMBL::Utils::Argument qw(rearrange);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
78 use Bio::EnsEMBL::Variation::Utils::Sequence qw(unambiguity_code);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
79 use Bio::EnsEMBL::Variation::ConsequenceType;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
80
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
81 our @ISA = ('Bio::EnsEMBL::Feature');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
82
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
83 =head2 new
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
84
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
85 Arg [-ADAPTOR] :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
86 see superclass constructor
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
87
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
88 Arg [-START] :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
89 see superclass constructor
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
90 Arg [-END] :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
91 see superclass constructor
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
92
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
93 Arg [-STRAND] :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
94 see superclass constructor
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
95
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
96 Arg [-SLICE] :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
97 see superclass constructor
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
98
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
99 Arg [-VARIATION_NAME] :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
100 string - the name of the variation this feature is for (denormalisation
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
101 from Variation object).
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
102
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
103 Arg [-SOURCE] :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
104 string - the name of the source where the SNP comes from
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
105
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
106 Arg [-VARIATION] :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
107 int - the variation object associated with this feature.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
108
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
109 Arg [-VARIATION_ID] :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
110 int - the internal id of the variation object associated with this
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
111 identifier. This may be provided instead of a variation object so that
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
112 the variation may be lazy-loaded from the database on demand.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
113
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
114 Arg [-SAMPLE_ID] :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
115 int - the internal id of the sample object associated with this
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
116 identifier. This may be provided instead of the object so that
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
117 the population/individual may be lazy-loaded from the database on demand.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
118
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
119 Arg [-ALLELE_STRING] :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
120 string - the allele for this AlleleFeature object.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
121
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
122 Arg [-OVERLAP_CONSEQUENCES] :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
123 listref of Bio::EnsEMBL::Variation::OverlapConsequence objects.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
124
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
125 Example :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
126 $af = Bio::EnsEMBL::Variation::AlleleFeature->new
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
127 (-start => 100,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
128 -end => 100,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
129 -strand => 1,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
130 -slice => $slice,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
131 -allele_string => 'A',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
132 -consequence_type => 'NON_SYNONYMOUS_CODING',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
133 -variation_name => 'rs635421',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
134 -source => 'Celera',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
135 -sample_id => $sample_id,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
136 -variation => $v);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
137
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
138 Description: Constructor. Instantiates a new AlleleFeature object.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
139 Returntype : Bio::EnsEMBL::Variation::AlleleFeature
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
140 Exceptions : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
141 Caller : general
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
142 Status : At Risk
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
143
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
144 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
145
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
146 sub new {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
147 my $caller = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
148 my $class = ref($caller) || $caller;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
149
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
150 my $self = $class->SUPER::new(@_);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
151 my ($allele, $overlap_consequences, $var_name, $variation, $variation_id, $population, $sample_id, $source) =
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
152 rearrange([qw(ALLELE_STRING OVERLAP_CONSEQUENCES VARIATION_NAME
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
153 VARIATION VARIATION_ID SAMPLE_ID SOURCE)], @_);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
154
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
155 $self->{'allele_string'} = $allele;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
156 $self->{'overlap_consequences'} = $overlap_consequences;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
157 $self->{'variation_name'} = $var_name;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
158 $self->{'variation'} = $variation;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
159 $self->{'_variation_id'} = $variation_id;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
160 $self->{'_sample_id'} = $sample_id;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
161 $self->{'source'} = $source;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
162
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
163 return $self;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
164 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
165
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
166
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
167
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
168 sub new_fast {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
169 my $class = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
170 my $hashref = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
171 return bless $hashref, $class;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
172 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
173
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
174
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
175 =head2 allele_string
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
176
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
177 Arg [1] : string $newval (optional)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
178 The new value to set the allele attribute to
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
179 Example : $allele = $obj->allele_string()
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
180 Description: Getter/Setter for the allele attribute.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
181 Returntype : string
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
182 Exceptions : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
183 Caller : general
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
184 Status : At Risk
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
185
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
186 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
187
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
188 sub allele_string{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
189 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
190 return $self->{'allele_string'} = shift if(@_);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
191
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
192 return $self->{'allele_string'} if ($self->{'_half_genotype'}); #for half genotypes
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
193 return join('|',split (//,unambiguity_code($self->{'allele_string'}))); #for heterozygous alleles
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
194 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
195
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
196
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
197
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
198 =head2 consequence_type
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
199
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
200 Arg [1] : (optional) String $term_type
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
201 Description: Get a list of all the unique consequence terms of this
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
202 AlleleFeature. By default returns Ensembl display terms
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
203 (e.g. 'NON_SYNONYMOUS_CODING'). $term_type can also be 'label'
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
204 (e.g. 'Non-synonymous coding'), 'SO' (Sequence Ontology, e.g.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
205 'non_synonymous_codon') or 'NCBI' (e.g. 'missense')
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
206 Returntype : listref of strings
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
207 Exceptions : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
208 Status : At Risk
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
209
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
210 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
211
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
212 sub consequence_type {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
213
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
214 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
215 my $term_type = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
216
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
217 if($self->_is_sara) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
218 return ['SARA'];
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
219 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
220 else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
221 delete $self->{consequence_type} if defined($term_type);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
222
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
223 unless ($self->{consequence_type}) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
224
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
225 $term_type ||= 'SO';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
226 my $method_name = $term_type.($term_type eq 'label' ? '' : '_term');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
227 $method_name = 'SO_term' unless $self->most_severe_OverlapConsequence->can($method_name);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
228
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
229 # work out the terms from the OverlapConsequence objects
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
230 $self->{consequence_type} =
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
231 [ $self->_is_sara ? 'SARA' : map { $_->$method_name } @{ $self->get_all_OverlapConsequences } ];
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
232
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
233 return $self->{consequence_type};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
234 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
235 }
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 =head2 get_all_OverlapConsequences
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
240
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
241 Description: Get a list of all the unique OverlapConsequences of this AlleleFeature
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
242 Returntype : listref of Bio::EnsEMBL::Variation::OverlapConsequence objects
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
243 Exceptions : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
244 Status : At Risk
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
245
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
246 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
247
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
248 sub get_all_OverlapConsequences {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
249 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
250 return $self->{overlap_consequences}
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
251 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
252
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
253
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
254 =head2 most_severe_OverlapConsequence
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
255
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
256 Description: Get the OverlapConsequence considered (by Ensembl) to be the most severe
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
257 consequence of all the alleles of this AlleleFeature
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
258 Returntype : Bio::EnsEMBL::Variation::OverlapConsequence
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
259 Exceptions : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
260 Status : At Risk
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
261
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
262 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
263
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
264 sub most_severe_OverlapConsequence {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
265 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
266
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
267 unless ($self->{_most_severe_consequence}) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
268
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
269 my $highest;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
270
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
271 for my $cons (@{ $self->get_all_OverlapConsequences }) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
272 $highest ||= $cons;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
273 if ($cons->rank < $highest->rank) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
274 $highest = $cons;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
275 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
276 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
277
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
278 $self->{_most_severe_consequence} = $highest;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
279 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
280
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
281 return $self->{_most_severe_consequence};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
282 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
283
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
284 =head2 display_consequence
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
285
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
286 Arg [1] : (optional) String $term_type
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
287 Description: Get the term for the most severe consequence of this
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
288 AlleleFeature. By default returns Ensembl display terms
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
289 (e.g. 'NON_SYNONYMOUS_CODING'). $term_type can also be 'label'
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
290 (e.g. 'Non-synonymous coding'), 'SO' (Sequence Ontology, e.g.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
291 'non_synonymous_codon') or 'NCBI' (e.g. 'missense')
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
292 Returntype : string
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
293 Exceptions : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
294 Caller : webteam
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
295 Status : At Risk
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
296
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
297 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
298
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
299 sub display_consequence {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
300 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
301 my $term_type = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
302
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
303 if($self->_is_sara) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
304 return 'SARA';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
305 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
306 else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
307 $term_type ||= 'SO';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
308 my $method_name = $term_type.($term_type eq 'label' ? '' : '_term');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
309 $method_name = 'SO_term' unless $self->most_severe_OverlapConsequence->can($method_name);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
310
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
311 return $self->most_severe_OverlapConsequence->$method_name;
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
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
316 =head2 get_all_TranscriptVariations
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
317
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
318 Arg [1] : (optional) listref of Bio::EnsEMBL::Transcript objects
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
319 Example : $af->get_all_TranscriptVariations;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
320 Description : Get all the TranscriptVariations associated with this AlleleFeature.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
321 If the optional list of Transcripts is supplied, get only TranscriptVariations
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
322 associated with those Transcripts.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
323 Returntype : listref of Bio::EnsEMBL::Variation::TranscriptVariation objects
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
324 Exceptions : Thrown on wrong argument type
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 get_all_TranscriptVariations {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
331 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
332 my $trs = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
333
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
334 my $cons = $self->variation_feature->get_all_TranscriptVariations($trs);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
335
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
336 # convert the TV to a SARA one if this is a SARA genotype
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
337 if($self->_is_sara) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
338 $_->_convert_to_sara foreach @$cons;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
339 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
340
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
341 # otherwise we need to rearrange the TranscriptVariationAlleles based
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
342 # on the alleles of this genotype
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
343 else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
344 my %alleles;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
345 $alleles{$_} = 1 foreach split /\||\/|\\/, $self->allele_string;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
346
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
347 $_->_rearrange_alleles(\%alleles) foreach @$cons;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
348 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
349
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
350 return $cons;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
351 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
352
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
353 =head2 variation_name
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
354
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
355 Arg [1] : string $newval (optional)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
356 The new value to set the variation_name attribute to
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
357 Example : $variation_name = $obj->variation_name()
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
358 Description: Getter/Setter for the variation_name attribute. This is the
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
359 name of the variation associated with this feature.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
360 Returntype : string
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
361 Exceptions : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
362 Caller : general
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
363 Status : At Risk
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
364
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
365 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
366
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
367 sub variation_name{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
368 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
369 return $self->{'variation_name'} = shift if(@_);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
370 return $self->{'variation_name'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
371 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
372
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
373 =head2 variation
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
374
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
375 Arg [1] : (optional) Bio::EnsEMBL::Variation::Variation $variation
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
376 Example : $v = $af->variation();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
377 Description: Getter/Setter for the variation associated with this feature.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
378 If not set, and this AlleleFeature has an associated adaptor
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
379 an attempt will be made to lazy-load the variation from the
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
380 database.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
381 Returntype : Bio::EnsEMBL::Variation::Variation
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
382 Exceptions : throw on incorrect argument
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
383 Caller : general
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
384 Status : At Risk
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
385
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
386 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
387
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
388 sub variation {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
389 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
390
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
391 if(@_) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
392 if(!ref($_[0]) || !$_[0]->isa('Bio::EnsEMBL::Variation::Variation')) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
393 throw("Bio::EnsEMBL::Variation::Variation argument expected");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
394 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
395 $self->{'variation'} = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
396 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
397 elsif(!defined($self->{'variation'}) && $self->{'adaptor'} &&
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
398 defined($self->{'_variation_id'})) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
399 # lazy-load from database on demand
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
400 my $va = $self->{'adaptor'}->db()->get_VariationAdaptor();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
401 $self->{'variation'} = $va->fetch_by_dbID($self->{'_variation_id'});
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
402 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
403
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
404 return $self->{'variation'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
405 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
406
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
407 =head2 variation_feature
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
408
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
409 Arg [1] : (optional) Bio::EnsEMBL::Variation::VariationFeature $vf
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
410 Example : $vf = $af->variation_feature();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
411 Description: Getter/Setter for the variation feature associated with this feature.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
412 If not set, and this AlleleFeature has an associated adaptor
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
413 an attempt will be made to lazy-load the variation from the
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
414 database.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
415 Returntype : Bio::EnsEMBL::Variation::VariationFeature
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
416 Exceptions : throw on incorrect argument
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
417 Caller : general
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
418 Status : At Risk
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
419
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
420 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
421
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
422 sub variation_feature {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
423 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
424
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
425 if(@_) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
426 if(!ref($_[0]) || !$_[0]->isa('Bio::EnsEMBL::Variation::VariationFeature')) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
427 throw("Bio::EnsEMBL::Variation::VariationFeature argument expected");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
428 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
429 $self->{'variation_feature'} = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
430 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
431 elsif(!defined($self->{'variation_feature'}) && $self->{'adaptor'} &&
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
432 defined($self->{'_variation_feature_id'})) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
433 # lazy-load from database on demand
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
434 my $va = $self->{'adaptor'}->db()->get_VariationFeatureAdaptor();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
435 $self->{'variation_feature'} = $va->fetch_by_dbID($self->{'_variation_feature_id'});
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
436 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
437
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
438 return $self->{'variation_feature'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
439 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
440
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
441 =head2 individual
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
442
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
443 Arg [1] : (optional) Bio::EnsEMBL::Variation::Individual $individual
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
444 Example : $p = $af->individual();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
445 Description: Getter/Setter for the individual associated with this feature.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
446 If not set, and this AlleleFeature has an associated adaptor
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
447 an attempt will be made to lazy-load the individual from the
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
448 database.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
449 Returntype : Bio::EnsEMBL::Variation::Individual
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
450 Exceptions : throw on incorrect argument
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
451 Caller : general
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
452 Status : At Risk
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
453
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
454 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
455
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
456 sub individual {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
457 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
458
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
459 if(@_) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
460 if(!ref($_[0]) || !$_[0]->isa('Bio::EnsEMBL::Variation::Individual')) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
461 throw("Bio::EnsEMBL::Variation::Individual argument expected");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
462 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
463 $self->{'individual'} = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
464 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
465 elsif(!defined($self->{'individual'}) && $self->{'adaptor'} &&
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
466 defined($self->{'_sample_id'})) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
467 # lazy-load from database on demand
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
468 my $ia = $self->{'adaptor'}->db()->get_IndividualAdaptor();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
469 $self->{'individual'} = $ia->fetch_by_dbID($self->{'_sample_id'});
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
470 if (!defined $self->{'individual'}){
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
471 warning("AlleleFeature attached to Strain, not Individual");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
472 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
473 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
474
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
475 return $self->{'individual'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
476 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
477
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
478
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
479 =head2 apply_edit
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
480
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
481 Arg [1] : reference to string $seqref
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
482 Arg [2] : int $start of the seq_ref
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
483 Example : $sequence = 'ACTGAATATTTAAGGCA';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
484 $af->apply_edit(\$sequence,$start);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
485 print $sequence, "\n";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
486 Description: Applies this AlleleFeature directly to a sequence which is
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
487 passed by reference.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
488 If either the start or end of this AlleleFeature are not defined
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
489 this function will not do anything to the passed sequence.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
490 Returntype : reference to the same sequence that was passed in
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
491 Exceptions : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
492 Caller : Slice
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
493 Status : At Risk
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
494
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
495 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
496
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
497 sub apply_edit {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
498
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
499 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
500 my $seqref = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
501
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
502 if(ref($seqref) ne 'SCALAR') {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
503 throw("Reference to scalar argument expected");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
504 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
505
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
506 if(!defined($self->{'start'}) || !defined($self->{'end'})) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
507 return $seqref;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
508 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
509
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
510
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
511 my $len = $self->length;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
512 my $as = $self->{'allele_string'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
513 $as =~ s/\-//g;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
514
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
515 substr($$seqref, $self->{'start'}-1, $len) = $as;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
516
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
517 return $seqref;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
518
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
519 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
520
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
521 =head2 length_diff
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
522
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
523 Arg [1] : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
524 Example : my $diff = $af->length_diff();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
525 Description: Returns the difference in length caused by applying this
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
526 AlleleFeature to a sequence. This may be be negative (deletion),
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
527 positive (insertion) or 0 (replacement).
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
528 If either start or end are not defined 0 is returned.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
529 Returntype : int
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
530 Exceptions : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
531 Caller : general
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
532 Status : At Risk
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
533
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
534 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
535
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
536 sub length_diff {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
537
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
538 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
539
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
540 return 0 if(!defined($self->{'end'}) || !defined($self->{'start'}));
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
541
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
542 return length($self->{'allele_string'}) - ($self->{'end'} - $self->{'start'} + 1) if ($self->{'allele_string'} ne '-');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
543 return 0 - ($self->{'end'} - $self->{'start'} +1) if ($self->{'allele_string'} eq '-'); #do we need the +1 in the distance ??
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
544
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
545 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
546
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
547
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
548 sub length {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
549 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
550 return $self->{'end'} - $self->{'start'} + 1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
551 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
552
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
553 =head2 source
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
554
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
555 Arg [1] : string $source (optional)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
556 The new value to set the source attribute to
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
557 Example : $source = $vf->source()
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
558 Description: Getter/Setter for the source attribute
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
559 Returntype : string
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
560 Exceptions : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
561 Caller : general
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
562 Status : At Risk
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
563
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
564 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
565
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
566 sub source{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
567 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
568 return $self->{'source'} = shift if(@_);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
569 return $self->{'source'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
570 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
571
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
572 =head2 ref_allele_string
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
573
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
574 Args : None
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
575 Example : $allele = $obj->ref_allele_string()
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
576 Description: Getter for the reference allele.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
577 Returntype : string
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
578 Exceptions : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
579 Caller : general
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
580 Status : At Risk
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
581
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
582 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
583
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
584 sub ref_allele_string{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
585 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
586
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
587 my $reference_allele;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
588 if ( ref ($self->slice) eq 'Bio::EnsEMBL::Slice' ){
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
589 #we already have the reference slice, so just get the sequence
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
590 $reference_allele = $self->seq;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
591 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
592 else{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
593 #we have a Strain or IndividualSlice, get the reference sequence from the method
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
594 $reference_allele = $self->slice->ref_subseq($self->start,$self->end,$self->strand) || '-';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
595 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
596
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
597 return $reference_allele;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
598 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
599
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
600 =head2 get_all_sources
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
601
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
602 Args : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
603 Example : my @sources = @{$af->get_all_sources()};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
604 Description : returns a list of all the sources for this
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
605 AlleleFeature
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
606 ReturnType : reference to list of strings
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
607 Exceptions : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
608 Caller : general
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
609 Status : At Risk
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
610 : Variation database is under development.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
611 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
612
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
613 sub get_all_sources{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
614 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
615
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
616 my @sources;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
617 my %sources;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
618 if ($self->{'adaptor'}){
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
619 map {$sources{$_}++} @{$self->{'adaptor'}->get_all_synonym_sources($self)};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
620 $sources{$self->source}++;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
621 @sources = keys %sources;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
622 return \@sources;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
623 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
624 return \@sources;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
625 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
626
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
627 sub _is_sara{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
628 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
629
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
630 if(!defined($self->{_is_sara})) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
631 my $allele_string = $self->allele_string;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
632 my $ref = $self->ref_allele_string;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
633
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
634 my $is_sara = 1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
635
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
636 foreach my $a(split /\/|\||\\/, $allele_string) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
637 $is_sara = 0 if $ref !~ /$a/i;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
638 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
639
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
640 $self->{_is_sara} = $is_sara;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
641 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
642
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
643 return $self->{_is_sara};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
644 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
645
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
646 1;