annotate variant_effect_predictor/Bio/EnsEMBL/Funcgen/DataSet.pm @ 0:21066c0abaf5 draft

Uploaded
author willmclaren
date Fri, 03 Aug 2012 10:04:48 -0400
parents
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::DataSet
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
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
7 =head1 LICENSE
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
8
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
9 Copyright (c) 1999-2011 The European Bioinformatics Institute and
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
10 Genome Research Limited. All rights reserved.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
11
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
12 This software is distributed under a modified Apache license.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
13 For license details, please see
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
14
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
15 http://www.ensembl.org/info/about/code_licence.html
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
16
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
17 =head1 CONTACT
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
18
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
19 Please email comments or questions to the public Ensembl
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
20 developers list at <ensembl-dev@ebi.ac.uk>.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
21
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
22 Questions may also be sent to the Ensembl help desk at
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
23 <helpdesk@ensembl.org>.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
24
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
25
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
26 =head1 NAME
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
27
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
28 Bio::EnsEMBL::Funcgen::DataSet - A module to represent DataSet object.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
29
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
30
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
31 =head1 SYNOPSIS
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
32
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
33 use Bio::EnsEMBL::Funcgen::DataSet;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
34
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
35 my $data_set = Bio::EnsEMBL::Funcgen::DataSet->new(
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
36 -DBID => $dbID,
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
37 -ADAPTOR => $self,
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
38 -SUPPORTING_SETS => [$rset],
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
39 -FEATURE_SET => $fset,
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
40 -DISPLAYABLE => 1,
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
41 -NAME => 'DATASET1',
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
42 );
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
43
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
44
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
45
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
46 =head1 DESCRIPTION
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
47
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
48 A DataSet object provides access to either or both raw results and AnnotatedFeatures
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
49 for a given experiment within a Slice, associated with set wide experimental meta data.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
50 This was aimed primarily at easing access to data via the web API by creating
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
51 a wrapper class with convenience methods. The focus of this class is to contain raw and
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
52 associated processed/analysed data to be displayed as a set within the browser i.e. an
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
53 experiment may have different cell lines, features or time points, these would require different DataSets.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
54 # However a DataSet may contain mixed data types i.e. promoter & histone???? No give separate sets?
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
55 May have duplicates for raw data but only one predicted features track??
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
56 The data in this class is kept as lightweight as possible with data being loaded dynamically.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
57
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
58
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
59 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
60
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
61 use strict;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
62 use warnings;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
63
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
64 package Bio::EnsEMBL::Funcgen::DataSet;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
65
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
66 use Bio::EnsEMBL::Utils::Argument qw( rearrange );
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
67 use Bio::EnsEMBL::Utils::Exception qw( throw warning deprecate);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
68 use Bio::EnsEMBL::Funcgen::Storable;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
69
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
70 use vars qw(@ISA);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
71 @ISA = qw(Bio::EnsEMBL::Funcgen::Storable);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
72 #Should not be a Set as is sufficiently different
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
73
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
74
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
75 =head2 new
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
76
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
77
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
78
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
79 Example : my $dset = Bio::EnsEMBL::Funcgen::DataSet->new(
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
80 -SUPPORTING_SETS => [$fset1, $fset2],
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
81 -FEATURE_SET => $fset,
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
82 -DISPLAYABLE => 1,
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
83 -NAME => 'DATASET1',
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
84 );
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
85
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
86 Description: Constructor for DataSet objects.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
87 Returntype : Bio::EnsEMBL::Funcgen::DataSet
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
88 Exceptions : Throws if no experiment_id defined
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
89 Caller : General
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
90 Status : At risk
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
91
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
92 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
93
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
94 sub new {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
95 my $caller = shift;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
96
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
97 my $class = ref($caller) || $caller;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
98
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
99 my $self = $class->SUPER::new(@_);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
100
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
101 #do we need to add $fg_ids to this? Currently maintaining one feature_group focus.(combi exps?)
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
102 my ($fset, $sets, $name)
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
103 = rearrange(['FEATURE_SET', 'SUPPORTING_SETS', 'NAME'], @_);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
104
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
105
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
106 my @caller = caller();
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
107
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
108 #do we need to passexperiment_id to check that table_name/id correspond for storage?
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
109 #'EXPERIMENT_ID', 'EXPERIMENT_IDS',
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
110
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
111 #Can have more than one experiment_id for a combined feature set. But shouldn't query like that.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
112 #therefore we need to be able to track back from feature to ec's rather than exps.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
113 #as there may be mixed data in an exp which didn't necessarily contribute to the combined feature
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
114 #We are now separating potentially different featuretype from the same exp into different result_groups
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
115 #therefore we only have to track back to the result_group e.g. the contig chip set
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
116
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
117 #We also need a way of pulling back GOLDEN/combined resultssets based on feature_set_id
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
118 #Set status as GOLDEN, then pull back displayable or GOLDEN raw results
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
119
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
120 #Could link experiment_feature_type/feature_set to ec or result_set table?
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
121 #latter would mean we don't have to specifiy which ec, just part of set.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
122 #This will make it easier for populating pfs but will mean that we can't easily track back to a particular ec without doing some probe/slice look up via the array chip.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
123 #Not really a requirement, so let's take this hit.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
124
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
125 #Could then maybe use DataSet to store pfs, otherwise we'd have to pass the rset or at the very least the result_set_id.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
126 #do we need some control of creating new objects with dbID and adding result_groups/feature_sets and them storing/updating them
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
127 #potential for someone to create one from new using a duplicate dbID and then linking incorrect data to a pre-existing ResultGroup
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
128 #can we check wether caller is DataSetAdaptor if we have dbID?
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
129
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
130 if($self->dbID() && $caller[0] ne "Bio::EnsEMBL::Funcgen::DBSQL::DataSetAdaptor"){
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
131 throw('You must use the DataSetAdaptor to generate DataSets with dbID i.e. from the DB,'.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
132 ' as this module accomodates updating which may cause incorrect data if the object'.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
133 ' is not generated from the DB');
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
134 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
135
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
136
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
137 $self->{'supporting_sets'} ||= {};
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
138 #throw("Must specify at least one Result/FeatureSet") if((! $sets) && (! $fset));
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
139 #removed this to allow generation of DataSets without feature sets
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
140 #could reimplement this if we change the DataSetAdaptor::_obj_from_sth
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
141
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
142 $self->add_supporting_sets($sets) if $sets;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
143 $self->product_FeatureSet($fset) if $fset;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
144 $self->name($name) if $name;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
145
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
146 return $self;
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
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
151
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
152
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
153
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
154
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
155 #methods
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
156 #set wide display label(predicted_feature) + more wordy label for wiggle tracks?
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
157 #defined by experiment type i.e. time course would require timepoint in display label
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
158 #deal with this dynamically or have display_label in table
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
159 #Need call on type, or fetch all would
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
160
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
161 #_get_ec_ids or contigsets?
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
162 #this should now be an intrinsic part of this class/adaptor
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
163
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
164 #cell line
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
165 #feature_type
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
166 #displayable...should have one for the whole set and one for each raw and predicted?
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
167
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
168 #have analysis as arg? Or do we get all analysis sets?
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
169 #we need to be able to set analyses for DataSets dynamically from DB
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
170 #pick up all DataSets
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
171 #displayable field in DataSets also?
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
172
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
173 #If we have mixed types in the same experiment then we could get promoter features and histone wiggle tracks displayed togeter
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
174 #Not v.good for display purposes? We may want to separate the promoter and histone tracks, or we may want ll the experiment data together but of mixed types.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
175 #We need to be able to pull back the experiment type for each set, therefore this needs setting on an ec level, not an experiment level.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
176 #This is also v.reliant on putting contig set info in place, otherwise we may get mixed chip types in same set.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
177
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
178 #get_raw_analysis_name
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
179 #get_predicted_feature_analysis_name
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
180 #set ResultFeatures and AnnotatedFeatures in hash keyed by analysis_name?
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
181
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
182 #Need to change to simple accessor
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
183 #or should we maintain to provide explicit method for delineating between parent and supporting FeatureSets?
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
184 #yes, and sub the feature_type/cell_type checks
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
185
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
186
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
187 =head2 product_FeatureSet
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
188
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
189 Arg [1] : (optional) Bio::EnsEMBL::Funcgen::FeatureSet
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
190 Example : $data_set->product_FeatureSet($fset);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
191 Description: Getter and setter for the main feature_set attribute for this DataSet.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
192 Returntype : Bio::EnsEMBL::Funcgen::FeatureSet
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
193 Exceptions : Throws not a valid FeatureSet or if main feature_set has already been set.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
194 Caller : General
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
195 Status : At Risk - change to get_product_FeatureSet
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
196
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
197 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
198
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
199 sub product_FeatureSet {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
200 my ($self, $fset) = @_;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
201
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
202 if($fset){
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
203
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
204 if (! ($fset && ref($fset) && $fset->isa("Bio::EnsEMBL::Funcgen::FeatureSet"))){
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
205 throw("Need to pass a valid Bio::EnsEMBL::Funcgen::FeatureSet")
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
206 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
207
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
208 if(defined $self->{'feature_set'}){
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
209 throw("The main feature_set has already been set for this DataSet, maybe you want add_SupportingSets?");
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
210 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
211 else{
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
212 $self->_validate_and_set_types($fset);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
213 $self->{'feature_set'} = $fset;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
214 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
215 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
216
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
217 return $self->{'feature_set'};
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
218 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
219
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
220
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
221 =head2 add_supporting_sets
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
222
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
223 Arg [1] : Array of Bio::EnsEMBL::Feature/ResultSet object
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
224 Example : $dset->add_supporting_sets($rset);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
225 Description: Adds Result/FeatureSets to the DataSet
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
226 Returntype : none
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
227 Exceptions : Throws if set not valid for supporting_set type of DataSet
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
228 Throws if supporting_sets is not an array ref
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
229 Caller : General
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
230 Status : At Risk
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
231
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
232 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
233
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
234
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
235 sub add_supporting_sets {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
236 my ($self, $sets) = @_;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
237
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
238 #should we handle displayable here, and propogate to the ResultSet if update_status is set
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
239 #is there scope to write a Funcgen::Storable, which provides convenience methods to StatusAdaptor?
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
240 #would have to make sure Feature object also inherited from Funcgen::Storable aswell as BaseFeature
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
241
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
242 throw("Supporting sets need to be a reference to an ARRAY:\t".$sets) if ref($sets) ne 'ARRAY';
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
243
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
244 foreach my $set(@$sets){
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
245
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
246 if(!(ref($set) && $set->isa('Bio::EnsEMBL::Funcgen::Set') && $set->set_type ne 'data' && $set->dbID)){
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
247 throw("Need to pass a valid stored Bio::EnsEMBL::Funcgen::Set which is not a DataSet:\t$set");
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
248 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
249 #set type cannot be data at present as it does not inherit from Set.pm
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
250
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
251
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
252
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
253 #Only validate if we are dealing with result type data
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
254 #As we can have various cell/feature_types for compound analyses e.g. RegulatoryFeatures
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
255
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
256 $self->_validate_and_set_types($set) if $set->set_type() ne 'feature';
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
257
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
258 #should ResultSet/Adaptor contain all the fetch_methods, and leave DataSet as a kind of organisational class as a single point of access.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
259 #DataSetAdaptor to perform the ordering according to feature/celltype
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
260 #This will still not resolve the complex data sets which can be accomodated by the DB.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
261 #Maybe we can keep the data sets as simple as there are and confer the association by tracking back to the experiment?
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
262 #Would there only ever be one experiment for a complex data_set?
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
263
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
264
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
265 #Can have more than one experiment for a compound feature set, would we ever want to display raw data?
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
266 #This is actually an easier problem unless we are displaying two feature types(i.e. complex and compound)
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
267
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
268
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
269 $self->{'supporting_sets'}->{$set->analysis->dbID()} ||= ();
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
270 push @{$self->{'supporting_sets'}->{$set->analysis->dbID()}}, $set;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
271 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
272
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
273 return;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
274 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
275
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
276
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
277 =head2 _validate_and_set_types
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
278
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
279 Arg [1] : Bio::EnsEMBL::Feature/ResultSet object
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
280 Example : $dset->_validate_and_set_types($rset);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
281 Description: Validates and sets DataSet cell and feature types
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
282 Returntype : none
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
283 Exceptions : Throws if types not valid
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
284 Caller : General
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
285 Status : At Risk
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
286
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
287 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
288
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
289
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
290 sub _validate_and_set_types{
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
291 my ($self, $set) = @_;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
292
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
293 #slightly dodgy bypassing methods, but extendable
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
294
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
295 #This currently restricts all set types to one cell and feature type
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
296 #this is incorrect for feature_set types as we want to munge several feature and possibly cell types
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
297 #into one combined data set.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
298 #this should set it to the FeatureSet type if is feature_set data_set
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
299 #this only works as we only validate supporting_sets if type is not feature
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
300
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
301 for my $type('feature_type', 'cell_type'){
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
302
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
303 if(defined $self->{$type}){
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
304
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
305 #Need to test isa here? Why is this passing the defined test if not set?
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
306 if($set->{$type}->name() ne $self->{$type}->name()){
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
307
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
308 throw(ref($set)." $type(".$set->{$type}->name().
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
309 ") does not match DataSet $type(".$self->{$type}->name().")");
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
310
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
311 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
312 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
313 else{
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
314 $self->{$type} = $set->{$type};
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
315 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
316 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
317
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
318 return;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
319 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
320
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
321
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
322
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
323 =head2 get_supporting_sets_by_Analysis
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
324
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
325 Arg [1] : Bio::EnsEMBL::Funcgen:Analysis
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
326 Arg [2] : (optional) status - e.g 'DISPLAYABLE'
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
327 Example : my $anal_sets = @{$result_set->get_ResultSets_by_Analysis($analysis)};
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
328 Description: Getter for the SupportingSet objects of a given Analysis.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
329 Returntype : ARRAYREF
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
330 Exceptions : Throws if arg is not a valid stored Bio::EnsEMBL::Anaylsis
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
331 Caller : General
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
332 Status : At Risk
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
333
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
334 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
335
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
336 sub get_supporting_sets_by_Analysis {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
337 my ($self, $analysis, $status) = @_;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
338
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
339
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
340 my @rsets;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
341
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
342
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
343 #should we handle displayable here, and propogate to the ResultSet if update_status is set
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
344 #is there scope to write a Funcgen::Storable, which provides convenience methods to StatusAdaptor?
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
345 #would have to make sure Feature object also inherited from Funcgen::Storable aswell as BaseFeature
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
346
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
347
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
348 if (! ($analysis->isa("Bio::EnsEMBL::Analysis") && $analysis->dbID())){
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
349 throw("Need to pass a valid stored Bio::EnsEMBL::Funcgen::ResultSet");
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
350 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
351
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
352 #will have to generate new array of object here if we want to filter displayable
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
353 #This may result in returning a ref to the stored ResultSets for no status
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
354 #And a ref to the abstracted/filtered i.e. non-stored ResultSets if we have a status
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
355 #This could cause problems if people want to edit the real ResultSets via the refs
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
356 #If we edit the ResultSets like this, we would still store via their adaptor
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
357 #so would need to refresh DataSet anyway.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
358
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
359 #should ResultSet/Adaptor contain all the fetch_methods, and leave DataSet as a kind of organisational class as a single point of access.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
360 #DataSetAdaptor to perform the ordering according to feature/celltype
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
361 #This will still not resolve the complex data sets which can be accomodated by the DB.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
362 #Maybe we can keep the data sets as simple as there are and confer the association by tracking back to the experiment?
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
363 #Would there only ever be one experiment for a complex data_set?
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
364
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
365
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
366 #Can have more than one experiment for a compound feature set, would we ever want to display raw data?
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
367 #This is actually an easier problem unless we are displaying two feature types(i.e. complex and compound)
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
368
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
369 #could we have >1 rset with the same analysis?
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
370
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
371 foreach my $anal_rset(@{$self->{'supporting_sets'}->{$analysis->dbID()}}){
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
372
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
373 if(! defined $status){
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
374 push @rsets, $anal_rset;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
375 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
376 elsif($anal_rset->has_status($status)){
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
377 push @rsets, $anal_rset;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
378 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
379 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
380
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
381 return \@rsets;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
382 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
383
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
384
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
385
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
386 =head2 get_supporting_sets
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
387
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
388 Arg [1] : (optional) status - e.g 'DISPLAYABLE'
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
389 Example : my @status_sets = @{$data_set->get_supporting_sets($status)};
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
390 Description: Getter for the ResultSets for this DataSet.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
391 Returntype : Arrayref
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
392 Exceptions : None
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
393 Caller : General
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
394 Status : At Risk
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
395
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
396 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
397
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
398 sub get_supporting_sets{
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
399 my ($self, $status, $set_type) = @_;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
400 #swap the args here
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
401
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
402 #Add analysis here and make above method wrapper
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
403
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
404 #Validate type here
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
405 if($set_type &&
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
406 ($set_type ne 'result' &&
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
407 $set_type ne 'feature' &&
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
408 $set_type ne 'input')){
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
409 throw("You have specified an invalid supporting set type:\t$set_type");
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
410 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
411
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
412
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
413 my @ssets;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
414
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
415 foreach my $anal_id(keys %{$self->{'supporting_sets'}}){
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
416
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
417 foreach my $sset(@{$self->{'supporting_sets'}->{$anal_id}}){
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
418
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
419 if(defined $status &&
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
420 (! $sset->has_status($status))){
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
421 next;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
422 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
423
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
424 if(defined $set_type &&
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
425 ($sset->set_type ne $set_type)){
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
426 next;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
427 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
428
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
429 push @ssets, $sset;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
430 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
431 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
432
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
433 return \@ssets;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
434 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
435
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
436
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
437
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
438
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
439 =head2 get_displayable_supporting_sets
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
440
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
441 Example : my @displayable_rsets = @{$result_set->get_displayable_supporting_sets()};
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
442 Description: Convenience method for web display
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
443 Returntype : Arrayref
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
444 Exceptions : None
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
445 Caller : General
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
446 Status : At Risk
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
447
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
448 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
449
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
450 sub get_displayable_supporting_sets{
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
451 my ($self, $set_type) = @_;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
452
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
453 return $self->get_supporting_sets('DISPLAYABLE', $set_type);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
454 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
455
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
456
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
457
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
458 =head2 get_displayable_product_FeatureSet
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
459
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
460 Example : my $fset = $data_set->get_displayable_product_FeatureSet();
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
461 Description: Convenience method for web display
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
462 Returntype : Bio::EnsEMBL::Funcgen::FeatureSet
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
463 Exceptions : None
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
464 Caller : General
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
465 Status : At Risk
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
466
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
467 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
468
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
469 sub get_displayable_product_FeatureSet{
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
470 my $self = shift;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
471
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
472 return $self->product_FeatureSet->has_status('DISPLAYABLE') ? $self->product_FeatureSet() : undef;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
473 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
474
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
475
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
476
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
477
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
478
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
479 =head2 name
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
480
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
481 Example : my $dset->name('DATASET1');
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
482 Description: Getter/Setter for the name of this DataSet.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
483 Returntype : string
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
484 Exceptions : None
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
485 Caller : General
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
486 Status : At Risk
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
487
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
488 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
489
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
490 sub name {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
491 my $self = shift;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
492
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
493 $self->{'name'} = shift if @_;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
494
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
495 return $self->{'name'};
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
496 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
497
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
498
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
499
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
500
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
501 #The following attributes are generated dynamically from the consituent Result/FeatureSets
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
502
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
503 =head2 cell_type
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
504
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
505 Example : my $dset_ctype_name = $dset->cell_type->name();
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
506 Description: Getter for the cell_type for this DataSet.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
507 Returntype : Bio::EnsEMBL::Funcgen::CellType
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
508 Exceptions : None
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
509 Caller : General
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
510 Status : At Risk
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
511
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
512 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
513
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
514 sub cell_type {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
515 my $self = shift;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
516
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
517 return $self->{'cell_type'};
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
518 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
519
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
520 =head2 feature_type
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
521
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
522 Example : my $dset_ftype_name = $dset->feature_type->name();
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
523 Description: Getter for the feature_type for this DataSet.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
524 Returntype : Bio::EnsEMBL::Funcgen::FeatureType
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
525 Exceptions : None
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
526 Caller : General
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
527 Status : At Risk
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
528
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
529 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
530
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
531 sub feature_type {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
532 my $self = shift;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
533
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
534 return $self->{'feature_type'};
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
535 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
536
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
537
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
538
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
539
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
540
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
541 =head2 display_label
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
542
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
543 Example : print $rset->display_label();
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
544 Description: Getter for the display_label attribute for this DataSet.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
545 This is more appropriate for teh predicted_features of the set.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
546 Use the individual display_labels for each raw result set.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
547 Returntype : str
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
548 Exceptions : None
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
549 Caller : General
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
550 Status : At Risk
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
551
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
552 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
553
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
554 sub display_label {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
555 my $self = shift;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
556
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
557
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
558 #Add display label in table?
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
559
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
560 if(! $self->{'display_label'}){
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
561
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
562 #This does not account for DataSet without a product FeatureSet
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
563 my $fset = $self->product_FeatureSet;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
564
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
565 if($fset && ($fset->feature_type->class() eq 'Regulatory Feature')){
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
566 $self->{'display_label'} = 'Regulatory Features';
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
567 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
568 else{
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
569
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
570 $self->{'display_label'} = $self->feature_type->name()." -";
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
571 $self->{'display_label'} .= " ".($self->cell_type->display_label() ||
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
572 $self->cell_type->description() ||
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
573 $self->cell_type()->name());
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
574 $self->{'display_label'} .= " Enriched Sites";
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
575 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
576 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
577
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
578 return $self->{'display_label'};
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
579 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
580
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
581
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
582 #sub get_type_config{
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
583 # my ($self) = @_;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
584 #
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
585 # if (! defined $self->{type_config}){
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
586 # $self->{type_config} = $self->adaptor->fetch_type_config_by_DataSet($self);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
587 # }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
588 #
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
589 # return $self->{type_config};
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
590 #}
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
591
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
592
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
593
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
594 1;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
595