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