annotate variant_effect_predictor/Bio/EnsEMBL/Funcgen/MotifFeature.pm @ 1:d6778b5d8382 draft default tip

Deleted selected files
author willmclaren
date Fri, 03 Aug 2012 10:05:43 -0400
parents 21066c0abaf5
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1 #
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2 # Ensembl module for Bio::EnsEMBL::Funcgen::MotifFeature
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
3 #
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
4 # You may distribute this module under the same terms as Perl itself
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
5
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
6 =head1 NAME
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
7
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
8 Bio::EnsEMBL::MotifFeature - A module to represent a feature mapping as based
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
9 on a binding matrix e.g position weight matrix
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
10
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
11 =head1 SYNOPSIS
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
12
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
13 use Bio::EnsEMBL::Funcgen::MotifFeature;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
14
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
15 my $feature = Bio::EnsEMBL::Funcgen::MotifFeature->new(
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
16 -SLICE => $chr_1_slice,
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
17 -START => 1_000_000,
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
18 -END => 1_000_024,
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
19 -STRAND => -1,
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
20 -DISPLAY_LABEL => $text,
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
21 -SCORE => $score,
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
22 -FEATURE_TYPE => $ftype,
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
23 -INTERDB_STABLE_ID => 1,
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
24 );
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
25
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
26
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
27
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
28 =head1 DESCRIPTION
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
29
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
30 A MotifFeature object represents the genomic placement of a sequence motif.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
31 For example a transcription factor binding site motif associated with a
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
32 position weight matrix. These are generally associated with AnnotatedFeatures
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
33 of the corresponding FeatureType.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
34
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
35
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
36 =head1 SEE ALSO
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
37
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
38 Bio::EnsEMBL::Funcgen::DBSQL::MotifFeatureAdaptor
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
39
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
40
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
41 =head1 LICENSE
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
42
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
43 Copyright (c) 1999-2009 The European Bioinformatics Institute and
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
44 Genome Research Limited. All rights reserved.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
45
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
46 This software is distributed under a modified Apache license.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
47 For license details, please see
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
48
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
49 http://www.ensembl.org/info/about/code_licence.html
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
50
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
51 =head1 CONTACT
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
52
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
53 Please email comments or questions to the public Ensembl
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
54 developers list at <ensembl-dev@ebi.ac.uk>.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
55
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
56 Questions may also be sent to the Ensembl help desk at
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
57 <helpdesk@ensembl.org>.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
58
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
59
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
60 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
61
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
62 use strict;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
63 use warnings;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
64
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
65 package Bio::EnsEMBL::Funcgen::MotifFeature;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
66
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
67 use Bio::EnsEMBL::Utils::Argument qw( rearrange );
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
68 use Bio::EnsEMBL::Utils::Exception qw( throw );
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
69 use Bio::EnsEMBL::Feature;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
70 use Bio::EnsEMBL::Funcgen::Storable;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
71
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
72
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
73 use vars qw(@ISA);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
74 @ISA = qw(Bio::EnsEMBL::Feature Bio::EnsEMBL::Funcgen::Storable);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
75
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
76
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
77 =head2 new
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
78
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
79
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
80 Arg [-SCORE] : (optional) int - Score assigned by analysis pipeline
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
81 Arg [-SLICE] : Bio::EnsEMBL::Slice - The slice on which this feature is.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
82 Arg [-BINDING_MATRIX] : Bio::EnsEMBL::Funcgen::BindingMatrix - Binding Matrix associated to this feature.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
83 Arg [-START] : int - The start coordinate of this feature relative to the start of the slice
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
84 it is sitting on. Coordinates start at 1 and are inclusive.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
85 Arg [-END] : int -The end coordinate of this feature relative to the start of the slice
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
86 it is sitting on. Coordinates start at 1 and are inclusive.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
87 Arg [-DISPLAY_LABEL] : string - Display label for this feature
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
88 Arg [-STRAND] : int - The orientation of this feature. Valid values are 1, -1 and 0.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
89 Arg [-dbID] : (optional) int - Internal database ID.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
90 Arg [-ADAPTOR] : (optional) Bio::EnsEMBL::DBSQL::BaseAdaptor - Database adaptor.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
91
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
92 Example : my $feature = Bio::EnsEMBL::Funcgen::MotifFeature->new(
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
93 -SLICE => $chr_1_slice,
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
94 -START => 1_000_000,
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
95 -END => 1_000_024,
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
96 -STRAND => -1,
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
97 -BINDING_MATRIX => $bm,
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
98 -DISPLAY_LABEL => $text,
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
99 -SCORE => $score,
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
100 -INTERDB_STABLE_ID => 1,
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
101 );
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
102
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
103
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
104 Description: Constructor for MotifFeature objects.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
105 Returntype : Bio::EnsEMBL::Funcgen::MotifFeature
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
106 Exceptions : Throws if BindingMatrix not valid
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
107 Caller : General
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
108 Status : Medium Risk
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
109
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
110 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
111
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
112 sub new {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
113 my $caller = shift;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
114
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
115 my $class = ref($caller) || $caller;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
116 my $self = $class->SUPER::new(@_);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
117 my $bmatrix;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
118 ($self->{'score'}, $bmatrix, $self->{'display_label'}, $self->{'interdb_stable_id'})
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
119 = rearrange(['SCORE', 'BINDING_MATRIX', 'DISPLAY_LABEL', 'INTERDB_STABLE_ID'], @_);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
120
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
121
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
122 if(! (ref($bmatrix) && $bmatrix->isa('Bio::EnsEMBL::Funcgen::BindingMatrix'))){
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
123 throw('You must pass be a valid Bio::EnsEMBL::Funcgen::BindingMatrix');
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
124 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
125
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
126 $self->{'binding_matrix'} = $bmatrix;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
127
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
128 return $self;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
129 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
130
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
131 =head2 new_fast
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
132
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
133 Args : Hashref with all internal attributes set
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
134 Example : none
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
135 Description: Quick and dirty version of new. Only works if the calling code
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
136 is very disciplined.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
137 Returntype : Bio::EnsEMBL::Funcgen::MotifFeature
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
138 Exceptions : None
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
139 Caller : General
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
140 Status : At Risk
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
141
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
142 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
143
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
144 sub new_fast {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
145 return bless ($_[1], $_[0]);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
146 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
147
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
148
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
149
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
150 =head2 binding_matrix
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
151
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
152 Example : my $bmatrix_name = $mfeat->binding_matrix->name;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
153 Description: Getter for the BindingMatrix attribute for this feature.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
154 Returntype : Bio::EnsEMBL::Funcgen::BindingMatrix
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
155 Exceptions : None
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
156 Caller : General
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
157 Status : At risk
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
158
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
159 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
160
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
161 sub binding_matrix{
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
162 return $_[0]->{'binding_matrix'};
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
163 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
164
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
165 =head2 score
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
166
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
167 Example : my $score = $feature->score();
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
168 Description: Getter for the score attribute for this feature.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
169 Returntype : double
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
170 Exceptions : None
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
171 Caller : General
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
172 Status : Low Risk
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
173
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
174 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
175
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
176 sub score {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
177 return $_[0]->{'score'};
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
178 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
179
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
180
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
181 =head2 display_label
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
182
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
183 Example : my $label = $feature->display_label();
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
184 Description: Getter for the display label of this feature.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
185 Returntype : str
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
186 Exceptions : None
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
187 Caller : General
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
188 Status : Medium Risk
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
189
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
190 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
191
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
192 sub display_label {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
193 #If not set in new before store, a default is stored as:
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
194 #$mf->binding_matrix->feature_type->name.':'.$mf->binding_matrix->name();
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
195
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
196 return $_[0]->{'display_label'};
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
197 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
198
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
199
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
200
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
201 =head2 associated_annotated_features
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
202
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
203 Example : my @associated_afs = @{$feature->associated_annotated_features()};
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
204 Description: Getter/Setter for associated AnntoatedFeatures.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
205 Returntype : ARRAYREF of Bio::EnsEMBL::Funcgen:AnnotatedFeature objects
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
206 Exceptions : None
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
207 Caller : General
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
208 Status : At risk - may change to associated_transcript_factor_features
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
209
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
210 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
211
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
212 sub associated_annotated_features{
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
213 my ($self, $afs) = @_;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
214
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
215 #Lazy load as we don't want to have to do a join on all features when most will not have any
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
216
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
217
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
218 if(defined $afs){
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
219
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
220 if(ref($afs) eq 'ARRAY'){
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
221
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
222 foreach my $af(@$afs){
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
223
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
224 if( ! $af->isa('Bio::EnsEMBL::Funcgen::AnnotatedFeature') ){
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
225 throw('You must pass and ARRAYREF of stored Bio::EnsEMBL::Funcgen::AnnotatedFeature objects');
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
226 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
227 #test is stored in adaptor
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
228 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
229
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
230 if(defined $self->{'associated_annotated_features'}){
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
231 warn('You are overwriting associated_annotated_features for the MotifFeature');
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
232 #we could simply add the new ones and make them NR.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
233 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
234
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
235 $self->{'associated_annotated_features'} = $afs;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
236 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
237 else{
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
238 throw('You must pass and ARRAYREF of stored Bio::EnsEMBL::Funcgen::AnnotatedFeature objects');
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
239 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
240 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
241
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
242
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
243 if(! defined $self->{'associated_annotated_features'}){
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
244
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
245 if(defined $self->adaptor){
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
246 $self->{'associated_annotated_features'} =
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
247 $self->adaptor->db->get_AnnotatedFeatureAdaptor->fetch_all_by_associated_MotifFeature($self);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
248 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
249 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
250
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
251 #This has the potential to return undef, or an arrayref which may be empty.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
252 return $self->{'associated_annotated_features'};
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
253 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
254
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
255
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
256 =head2 is_position_informative
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
257
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
258 Arg [1] : int - 1-based position within the Motif
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
259 Example : $mf->is_position_informative($pos);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
260 Description: Indicates if a given position within the motif is highly informative
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
261 Returntype : boolean
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
262 Exceptions : throws if position out of bounds ( < 1 or > length of motif)
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
263 Caller : General
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
264 Status : At High risk
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
265
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
266 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
267
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
268 sub is_position_informative {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
269 my ($self,$position) = (shift,shift);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
270 throw "Need a position" if(!defined($position));
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
271 throw "Position out of bounds" if(($position<1) || ($position>$self->binding_matrix->length));
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
272 #if on the opposite strand, then need to reverse complement the position
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
273 if($self->strand < 0){ $position = $self->binding_matrix->length - $position + 1; }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
274 return $self->binding_matrix->is_position_informative($position);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
275 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
276
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
277
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
278 =head2 infer_variation_consequence
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
279
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
280 Arg [1] : Bio::EnsEMBL::Variation::VariationFeature
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
281 Arg [2] : boolean - 1 if results in linear scale (default is log scale)
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
282 Example : my $vfs = $vf_adaptor->fetch_all_by_Slice($slice_adaptor->fetch_by_region('toplevel',$mf->seq_region_name,$mf->start,$mf->end,$mf->strand));
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
283 foreach my $vf (@{$vfs}){
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
284 print $mf->infer_variation_consequence($vf)."\n";
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
285 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
286
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
287 Description: Calculates the potential influence of a given variation in a motif feature.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
288 Returns a value between -100% (lost) and +100% (gain) indicating the difference
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
289 in strength between the motif in the reference and after the variation.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
290
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
291 The variation feature slice needs to be the motif feature, including the strand
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
292 Returntype : float
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
293 Exceptions : throws if argument is not a Bio::EnsEMBL::Variation::VariationFeature
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
294 throws if the variation feature is not contained in the motif feature
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
295 Caller : General
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
296 Status : At High risk
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
297
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
298 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
299
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
300 sub infer_variation_consequence{
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
301 my ($self, $vf, $linear) = (shift, shift, shift);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
302
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
303 if(! $vf->isa('Bio::EnsEMBL::Variation::VariationFeature')){
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
304 throw "We expect a Bio::EnsEMBL::Variation::VariationFeature object, not a ".$vf->class;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
305 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
306
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
307 #See if these checks are required or if there are more efficient ways to do the checks...
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
308 #if(($self->slice->seq_region_name ne $vf->slice->seq_region_name) ||
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
309 # ($self->slice->start != $vf->slice->start) ||
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
310 # ($self->slice->end != $vf->slice->end) ){
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
311 # throw "Variation and Motif are on distinct slices";
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
312 #}
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
313 #if(!(($vf->start >= $self->start) && ($vf->end <= $self->end ))){
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
314 # throw "Variation should be entirely contained in the Motif";
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
315 #}
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
316
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
317 if( ($vf->start < 1) || ($vf->end > $self->binding_matrix->length)){ throw "Variation not entirely contained in the motif feature"; }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
318
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
319 if(!($vf->allele_string =~ /^[ACTG]\/[ACTG]$/)){ throw "Currently only SNPs are supported"; }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
320
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
321 my $ref_seq = $self->seq;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
322
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
323 my $variant = $vf->allele_string;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
324 $variant =~ s/^.*\///;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
325 $variant =~ s/\s*$//;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
326
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
327 my ($vf_start,$vf_end) = ($vf->start, $vf->end);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
328 if($vf->strand == -1){
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
329 #Needed for insertions
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
330 $variant = reverse($variant);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
331 $variant =~ tr/ACGT/TGCA/;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
332 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
333 my $var_seq = substr($ref_seq,0, $vf_start - 1).$variant.substr($ref_seq, $vf_start+length($variant)-1);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
334
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
335 my $bm = $self->{'binding_matrix'};
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
336 return 100 * ($bm->relative_affinity($var_seq,$linear) - $bm->relative_affinity($ref_seq,$linear));
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
337
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
338 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
339
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
340 =head2 interdb_stable_id
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
341
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
342 Arg [1] : (optional) int - stable_id e.g 1
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
343 Example : my $idb_sid = $feature->interdb_stable_id();
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
344 Description: Getter for the interdb_stable_id attribute for this feature.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
345 This is simply to avoid using internal db IDs for inter DB linking
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
346 Returntype : int
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
347 Exceptions : None
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
348 Caller : General
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
349 Status : At Risk
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
350
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
351 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
352
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
353 sub interdb_stable_id {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
354 return $_[0]->{'interdb_stable_id'};
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
355 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
356
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
357
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
358
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
359 1;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
360