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