annotate variant_effect_predictor/Bio/EnsEMBL/Funcgen/Collection/ResultFeature.pm @ 3:d30fa12e4cc5 default tip

Merge heads 2:a5976b2dce6f and 1:09613ce8151e which were created as a result of a recently fixed bug.
author devteam <devteam@galaxyproject.org>
date Mon, 13 Jan 2014 10:38:30 -0500
parents 1f6dce3d34e0
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::Collection::ResultFeature
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
3 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
4 =head1 LICENSE
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
5
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
6 Copyright (c) 1999-2011 The European Bioinformatics Institute and
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
7 Genome Research Limited. All rights reserved.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
8
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
9 This software is distributed under a modified Apache license.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
10 For license details, please see
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
11
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
12 http://www.ensembl.org/info/about/code_licence.html
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
13
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
14 =head1 CONTACT
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
15
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
16 Please email comments or questions to the public Ensembl
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
17 developers list at <ensembl-dev@ebi.ac.uk>.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
18
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
19 Questions may also be sent to the Ensembl help desk at
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
20 <helpdesk@ensembl.org>.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
21
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
22
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
23 =head1 NAME
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
24
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
25 Bio::EnsEMBL::Funcgen::Collection::ResultFeature - A module to represent a lightweight ResultFeature collection
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
26
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
27 =head1 SYNOPSIS
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
28
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
29 use Bio::EnsEMBL::Funcgen::Collection::ResultFeature;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
30
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
31 my $rfeature = Bio::EnsEMBL::Funcgen::Collection::ResultFeature->new_fast({
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
32 start => $start,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
33 end => $end,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
34 scores => [ $score ]
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
35 });
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
36
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
37 my @rfeatures = @{$rset->get_displayable_ResultFeatures_by_Slice($slice)};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
38
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
39 foreach my $rfeature (@rfeatures){
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
40 my $score = $rfeature->score();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
41 my $rf_start = $rfeature->start();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
42 my $rf_end = $rfeature->end();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
43 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
44
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
45 =head1 DESCRIPTION
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
46
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
47 This is a Collection feature which is designed to store compressed/collected
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
48 feature information for a defined window/bin size over a complete seq_region.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
49 Or alternatively a single feature at the natural resolution i.e. window_size == 0.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
50 The complete seq_region collections are cropped to provide a ResultFeature on any
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
51 given Slice. ResultFeatures are primarily stored in the result_feature table,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
52 but can also be generated on the fly from unprocessed data in the array result
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
53 tables.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
54
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
55
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
56 =head1 SEE ALSO
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
57
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
58 Bio::EnsEMBL::Funcgen::DBSQL::ResultFeatureAdaptor
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
59 Bio::EnsEMBL::Funcgen::Collector::ResultFeature
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
60
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
61 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
62
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
63
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
64 #This is distinct from a normal feature as the collection may have differen attributes and methods from the normal feature
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
65 #implementation. For example a Bio::EnsEMBL::Collection::Gene would only have summary information over several genes.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
66 #Altho', unlikely that we'll ever collect genes.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
67
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
68 use strict;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
69 use warnings;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
70
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
71
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
72 package Bio::EnsEMBL::Funcgen::Collection::ResultFeature;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
73 use base ('Bio::EnsEMBL::Feature');#@ISA
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
74
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
75 #This needs to inherit from Bio::EnsEMBL::Collection
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
76 #Which can host some of the below methods
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
77
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
78 #Reverted to hash implementation as we no longer deal with
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
79 #huge amounts of features due to collections.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
80 #This enables use of transform/seq_region_start/end methods
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
81 #and enable us to store on slices that do not begin at 1
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
82 #Altho need to remove code stipulating this
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
83
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
84
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
85
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
86 #To do
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
87 #Can we move any of these methods to a base Collection class?
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
88 #Should probably now use normal new method with validation?
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
89
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
90 =head2 new_fast
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
91
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
92 Args : Array with attributes start, end, strand, scores, probe, result_set_id, window_size, slice IN THAT ORDER.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
93 WARNING: None of these are validated, hence can omit some where not needed
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
94 Example : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
95 Description: Fast and list version of new. Only works if the code is very disciplined.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
96 Returntype : Bio::EnsEMBL::Funcgen::ResultFeature
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
97 Exceptions : None
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
98 Caller : ResultSetAdaptor
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
99 Status : At Risk
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
100
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
101 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
102
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
103 sub new_fast {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
104 #This is agnostic towards to type of reference
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
105 return bless ($_[1], $_[0]);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
106
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
107 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
108
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
109
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
110
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
111 =head2 scores
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
112
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
113 Example : my $score = $rf->score();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
114 Description: Getter of the scores attribute for ResultFeature
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
115 objects
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
116 Returntype : Arrayref.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
117 Exceptions : None
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
118 Caller : General
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
119 Status : At Risk
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
120
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
121 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
122
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
123 sub scores {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
124 return $_[0]->{scores};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
125 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
126
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
127
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
128
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
129 =head2 probe
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
130
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
131 Example : my $probe = $rf->probe();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
132 Description: Getter of the probe attribute for ResultFeature
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
133 objects
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
134 Returntype : Bio::EnsEMBL::Funcgen::Probe
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
135 Exceptions : None
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
136 Caller : General
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
137 Status : At Risk - This can only be used for Features with window 0.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
138
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
139 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
140
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
141 #probe_id is currently not available in the result_feature table, so this would be a result/probe_feature query.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
142
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
143 sub probe {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
144 return $_[0]->{probe};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
145 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
146
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
147
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
148 sub result_set_id {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
149 return $_[0]->{result_set_id};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
150 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
151
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
152 sub window_size {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
153 return $_[0]->{window_size};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
154 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
155
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
156
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
157 sub get_min_max_scores{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
158
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
159 if(! defined $_[0]->{'min_max_scores'}){
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
160 my @sorted_scores = sort { $a <=> $b } @{$_[0]->{'scores'}};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
161 $_[0]->{'min_max_scores'} = [$sorted_scores[0], $sorted_scores[$#sorted_scores]];
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
162 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
163
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
164 return $_[0]->{'min_max_scores'};
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 1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
169