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

Deleted selected files
author willmclaren
date Fri, 03 Aug 2012 10:05:43 -0400
parents 21066c0abaf5
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1 #
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2 # Ensembl module for Bio::EnsEMBL::Funcgen::FeatureSet
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
3 #
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
4
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
5 =head1 LICENSE
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
6
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
7 Copyright (c) 1999-2011 The European Bioinformatics Institute and
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
8 Genome Research Limited. All rights reserved.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
9
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
10 This software is distributed under a modified Apache license.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
11 For license details, please see
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
12
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
13 http://www.ensembl.org/info/about/code_licence.html
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
14
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
15 =head1 CONTACT
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
16
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
17 Please email comments or questions to the public Ensembl
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
18 developers list at <ensembl-dev@ebi.ac.uk>.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
19
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
20 Questions may also be sent to the Ensembl help desk at
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
21 <helpdesk@ensembl.org>.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
22
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
23
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
24 =head1 NAME
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
25
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
26 Bio::EnsEMBL::FeatureSet - A module to represent FeatureSet.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
27
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
28
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
29 =head1 SYNOPSIS
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
30
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
31 use Bio::EnsEMBL::Funcgen::FeatureSet;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
32
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
33 my $result_set = Bio::EnsEMBL::Funcgen::FeatureSet->new(
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
34
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
35 );
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
36
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
37
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
38
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
39 =head1 DESCRIPTION
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
40
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
41 A FeatureSet object provides access to a set of feature predictions and their details, which may have been generated from a
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
42 single or multiple Experiments with potentially differing analyses. The FeatureSet itself will only have a single analysis
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
43 which may be one or a combination of programs but will be represented by one analysis record.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
44
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
45 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
46
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
47 use strict;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
48 use warnings;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
49
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
50 package Bio::EnsEMBL::Funcgen::FeatureSet;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
51
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
52 use Bio::EnsEMBL::Utils::Argument qw( rearrange );
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
53 use Bio::EnsEMBL::Utils::Exception qw( throw warning deprecate);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
54 use Bio::EnsEMBL::Funcgen::Set;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
55
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
56 use vars qw(@ISA);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
57 @ISA = qw(Bio::EnsEMBL::Funcgen::Set);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
58
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
59 my %valid_classes = ( annotated => undef,
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
60 regulatory => undef,
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
61 external => undef,
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
62 segmentation => undef, );
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
63
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
64 =head2 new
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
65
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
66 -name => $name,
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
67 -feature_type => $ftype,
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
68 -cell_type => $ctype,
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
69 -name => $name,
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
70 -description => 'Release 3.1',
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
71 -display_label => 'Short name',
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
72 -analysis => $analysis,
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
73 Arg [-EXPERIMENT_ID] : Experiment dbID
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
74 -dbid => $dbid,
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
75 Arg [-ADAPTOR]
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
76
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
77 Example : my $feature = Bio::EnsEMBL::Funcgen::FeatureSet->new(
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
78 -dbid => $dbid,
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
79 -analysis => $analysis,
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
80 -feature_type => $ftype,
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
81 -cell_type => $ctype,
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
82 -name => $name,
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
83 -feature_class => 'annotated',
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
84 -description => 'Release 3.1',
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
85 -display_label => 'Short name',
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
86 -input_set => $iset,
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
87 );
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
88 Description: Constructor for FeatureSet objects.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
89 Returntype : Bio::EnsEMBL::Funcgen::FeatureSet
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
90 Exceptions : Throws if FeatureType defined
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
91 Caller : General
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
92 Status : At risk
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
93
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
94 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
95
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
96 sub new {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
97 my $caller = shift;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
98 my $class = ref($caller) || $caller;
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 my ( $desc, $dlabel, $iset_id, $iset, $exp_id, $exp ) =
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
102 rearrange( [
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
103 'DESCRIPTION', 'DISPLAY_LABEL',
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
104 'INPUT_SET_ID', 'INPUT_SET', 'EXPERIMENT_ID', 'EXPERIMENT'
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
105 ],
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
106 @_ );
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
107
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
108
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
109 if($exp_id || $exp){
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
110 throw('Passing an Experiment or an experiment_id is now deprecated,'.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
111 ' please use -input_set or -input_set_id instead');
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
112 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
113
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
114 #Allow exp or exp_id to be passed to support storing and lazy loading
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
115
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
116 #Mandatory params checks here (setting done in Set.pm)
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
117 throw('Must provide a FeatureType')
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
118 if ( !defined $self->feature_type );
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
119
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
120 #explicit type check here to avoid invalid types being imported as NULL
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
121 #subsequently throwing errors on retrieval
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
122 my $type = $self->feature_class;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
123
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
124 if ( !( $type && exists $valid_classes{$type} ) ) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
125 throw( 'You must define a valid FeatureSet type e.g. ' .
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
126 join( ', ', keys %valid_classes ) );
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
127 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
128
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
129 #Direct assignment to prevent need for set arg test in method
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
130
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
131 $self->{'description'} = $desc if defined $desc;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
132 $self->{'display_label'} = $dlabel if defined $dlabel;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
133 $self->{'input_set_id'} = $iset_id if defined $iset_id;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
134
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
135 if ( defined $iset ) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
136 #Exp obj is only passed during object storing
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
137 #so let the adaptor do is_stored_and_valid
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
138 $self->{'input_set'} = $iset;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
139 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
140
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
141 return $self;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
142 } ## end sub new
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
143
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
144
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
145
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
146 =head2 new_fast
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
147
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
148 Args : Hashref with all internal attributes set
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
149 Example : none
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
150 Description: Quick and dirty version of new. Only works if the code is very
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
151 disciplined.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
152 Returntype : Bio::EnsEMBL::Funcgen::FeatureSet
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
153 Exceptions : None
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
154 Caller : General
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
155 Status : At Risk
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
156
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
157 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
158
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
159
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
160 sub new_fast {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
161 return bless ($_[1], $_[0]);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
162 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
163
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
164
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
165 =head2 description
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
166
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
167 Example : print "Feature set description is:\t".$fset->description."\n";
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
168 Description: Getter for the description of this FeatureSet. e.g. Release 3.1
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
169 Returntype : String
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
170 Exceptions : None
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
171 Caller : General
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
172 Status : At Risk
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
173
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
174 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
175
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
176 sub description {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
177 return $_[0]->{'description'};
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
178 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
179
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
180
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
181
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
182 =head2 display_label
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
183
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
184 Example : print $rset->display_label;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
185 Description: Getter for the display_label attribute for this FeatureSet.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
186 Returntype : String
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
187 Exceptions : None
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
188 Caller : General
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
189 Status : At Risk
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
190
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
191 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
192
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
193 sub display_label {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
194 my $self = shift;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
195
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
196 if ( !$self->{'display_label'} ) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
197
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
198 if ( $self->feature_type->class() eq 'Regulatory Feature' ) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
199 $self->{'display_label'} = $self->name;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
200 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
201 else {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
202 #This still fails here if we don't have a class or a cell_type set
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
203
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
204 $self->{'display_label'} =
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
205 $self->feature_type->name() . " - " . $self->cell_type->name() .
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
206 " Enriched Sites";
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
207 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
208 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
209
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
210 return $self->{'display_label'};
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
211 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
212
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
213
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
214
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
215
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
216 =head2 get_FeatureAdaptor
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
217
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
218 Example :
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
219 Description: Retrieves and caches FeatureAdaptor of feature_set type
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
220 Returntype : Bio::EnsEMBL::Funcgen::DBSQL::ucfirst($self->feature_class())FeatureAdaptor
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
221 Exceptions : None
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
222 Caller : General
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
223 Status : At Risk
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
224
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
225 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
226
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
227
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
228 sub get_FeatureAdaptor{
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
229 my $self = shift;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
230
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
231 if(! exists $self->{'adaptor_refs'}){
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
232
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
233 foreach my $valid_class(keys %valid_classes){
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
234 my $method = 'get_'.ucfirst($valid_class).'FeatureAdaptor';
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
235
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
236 $self->{'adaptor_refs'}{$valid_class} = $self->adaptor->db->$method;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
237 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
238 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
239
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
240 return $self->{'adaptor_refs'}->{$self->feature_class()};
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
241
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
242 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
243
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
244
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
245
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
246 =head2 get_Features_by_Slice
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
247
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
248 Example : my @features = @{$FeatureSet->get_Features_by_Slice($slice)};
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
249 Description: Retrieves all Features for this FeatureSet for a given Slice
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
250 Returntype : ARRAYREF containing Features of the feature_set type i.e. Annotated, Regulatory or Supporting;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
251 Exceptions : None
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
252 Caller : General
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
253 Status : At Risk
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
254
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
255 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
256
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
257 sub get_Features_by_Slice{
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
258 my ($self, $slice) = @_;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
259
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
260 return $self->get_FeatureAdaptor->fetch_all_by_Slice_FeatureSets($slice, [$self]);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
261 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
262
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
263
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
264 =head2 get_Features_by_FeatureType
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
265
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
266 Arg[0] : Bio::EnsEMBL::Funcgen::FeatureType
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
267 Example : my @features = @{$FeatureSet->get_Features_by_FeatureType($ftype)};
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
268 Description: Retrieves all Features for this FeatureSet for a given FeatureType
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
269 or associated FeatureType. This is mainly used by external FeatureSets
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
270 which can sometimes have more than one associated FeatureType.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
271 Returntype : ARRAYREF
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
272 Exceptions : None
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
273 Caller : General
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
274 Status : At Risk
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
275
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
276 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
277
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
278
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
279 sub get_Features_by_FeatureType{
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
280 my ($self, $type) = @_;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
281
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
282 return $self->get_FeatureAdaptor->fetch_all_by_FeatureType_FeatureSets($type, [$self]);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
283 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
284
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
285
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
286 =head2 get_all_Features
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
287
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
288 Example : my @features = @{$FeatureSet->get_all_Features};
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
289 Description: Retrieves all Features for this FeatureSet
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
290 Returntype : ARRAYREF
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
291 Exceptions : None
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
292 Caller : General
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
293 Status : At Risk
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
294
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
295 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
296
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
297 sub get_all_Features{
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
298 my $self = shift;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
299
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
300 return $self->get_FeatureAdaptor->fetch_all_by_FeatureSets([$self]);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
301 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
302
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
303
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
304
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
305
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
306 =head2 is_focus_set
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
307
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
308 Args : None
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
309 Example : if($fset->is_focus_set){ ... }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
310 Description: Returns true if FeatureSet is a focus set used in the RegulatoryBuild
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
311 Returntype : Boolean
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
312 Exceptions : Throws if meta entry not present
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
313 Caller : General
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
314 Status : At Risk
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
315
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
316 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
317
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
318 sub is_focus_set{
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
319 my $self = shift;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
320
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
321 if(! defined $self->{focus_set}){
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
322
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
323 if(! defined $self->cell_type){
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
324 warn "FeatureSet without an associated CellType cannot be a focus set:\t".$self->name;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
325 $self->{focus_set} = 0;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
326 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
327 else{
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
328 $self->{focus_set} = $self->adaptor->fetch_focus_set_config_by_FeatureSet($self);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
329 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
330 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
331
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
332 return $self->{focus_set};
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
333 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
334
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
335
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
336 =head2 is_attribute_set
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
337
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
338 Args : None
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
339 Example : if($fset->is_attribute_set){ ... }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
340 Description: Returns true if FeatureSet is a supporting/attribute(focus or not) set used in the RegulatoryBuild
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
341 Returntype : Boolean
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
342 Exceptions : Throws if meta entry not present
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
343 Caller : General
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
344 Status : At Risk
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
345
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
346 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
347
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
348 sub is_attribute_set{
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
349 my $self = shift;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
350
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
351 if(! defined $self->{attribute_set}){
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
352
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
353 if(! defined $self->cell_type){
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
354 warn "FeatureSet without an associated CellType cannot be a attribute set:\t".$self->name;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
355 $self->{attribute_set} = 0;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
356 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
357 else{
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
358 $self->{attribute_set} = $self->adaptor->fetch_attribute_set_config_by_FeatureSet($self);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
359 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
360 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
361
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
362 return $self->{attribute_set};
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
363 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
364
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
365
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
366 =head2 get_InputSet
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
367
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
368 Example : my $input_set = $FeatureSet->get_InputSet;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
369 Description: Retrieves the InputSet for this FeatureSet
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
370 Returntype : Bio::EnsEMBL::Funcgen::InputSet
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
371 Exceptions : None
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
372 Caller : General
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
373 Status : At Risk
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
374
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
375 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
376
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
377 sub get_InputSet{
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
378 my $self = shift;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
379
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
380 if( (! defined $self->{input_set}) &&
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
381 (defined $self->{input_set_id}) ){
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
382 $self->{input_set} = $self->adaptor->db->get_InputSetAdaptor->fetch_by_dbID($self->{input_set_id});
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
383 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
384
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
385 return $self->{input_set};
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
386 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
387
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
388
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
389
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
390 =head2 source_label
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
391
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
392 Example : my $source_label = $fset->source_label;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
393 Description: Retrieves the source label this FeatureSet, used in zmenus
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
394 Returntype : Arrayref of Strings
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
395 Exceptions : None
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
396 Caller : Webcode zmenus
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
397 Status : At Risk - remove, to be done by webcode?
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
398
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
399 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
400
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
401 #These are used to link through to the experiment view based on feature_set_id
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
402
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
403 sub source_label{
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
404 my $self = shift;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
405
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
406 if (! defined $self->{source_label}) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
407 my $input_set = $self->get_InputSet;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
408 my @source_labels;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
409
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
410 if ($input_set) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
411
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
412
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
413 foreach my $isset(@{$input_set->get_InputSubsets}){
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
414
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
415 if(defined $isset->archive_id){
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
416 push @source_labels, $isset->archive_id;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
417 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
418 #Archive IDs e.g. SRX identifiers or undef.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
419 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
420
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
421 #Append project name
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
422 my $exp_group = $input_set->get_Experiment->experimental_group;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
423
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
424 if ($exp_group &&
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
425 $exp_group->is_project) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
426 push @source_labels, $exp_group->name;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
427 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
428 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
429
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
430
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
431 $self->{source_label} = join(' ', @source_labels);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
432 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
433
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
434 return $self->{source_label};
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
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
440 ### DEPRECATED ###
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
441
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
442 =head2 get_Experiment
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
443 #
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
444 # Example : my $exp = $FeatureSet->get_Experiment;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
445 # Description: Retrieves the Experiment for this FeatureSet
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
446 # Returntype : Bio::EnsEMBL::Funcgen::Experiment
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
447 # Exceptions : None
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
448 # Caller : General
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
449 Status : DEPRECATED
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
450
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
451 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
452
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
453 sub get_Experiment{
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
454 throw('FeatureSet::get_Experiment is not longer supported, please use FeatureSet::get_InputSet');
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 1;