Mercurial > repos > mahtabm > ensembl
comparison variant_effect_predictor/Bio/EnsEMBL/Funcgen/SetFeature.pm @ 0:1f6dce3d34e0
Uploaded
author | mahtabm |
---|---|
date | Thu, 11 Apr 2013 02:01:53 -0400 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
-1:000000000000 | 0:1f6dce3d34e0 |
---|---|
1 # | |
2 # Ensembl module for Bio::EnsEMBL::Funcgen::SetFeature | |
3 # | |
4 | |
5 | |
6 =head1 LICENSE | |
7 | |
8 Copyright (c) 1999-2012 The European Bioinformatics Institute and | |
9 Genome Research Limited. All rights reserved. | |
10 | |
11 This software is distributed under a modified Apache license. | |
12 For license details, please see | |
13 | |
14 http://www.ensembl.org/info/about/code_licence.html | |
15 | |
16 =head1 CONTACT | |
17 | |
18 Please email comments or questions to the public Ensembl | |
19 developers list at <ensembl-dev@ebi.ac.uk>. | |
20 | |
21 Questions may also be sent to the Ensembl help desk at | |
22 <helpdesk@ensembl.org>. | |
23 | |
24 | |
25 =head1 NAME | |
26 | |
27 Bio::EnsEMBL::Funcgen::SetFeature - Base class for features of a Set. | |
28 | |
29 =head1 SYNOPSIS | |
30 | |
31 # Would normally be created from an in inheriting class e.g. AnnotatedFeature.pm | |
32 | |
33 use base qw(Bio::Ensembl::Funcgen::SetFeature); | |
34 | |
35 sub new { | |
36 my $caller = shift; | |
37 my $class = ref($caller) || $caller; | |
38 my $self = $class->SUPER::new(@_); | |
39 # More construction here | |
40 } | |
41 | |
42 # Alternative direct contruction | |
43 | |
44 my $feat = Bio::EnsEMBL::Funcgen::SetFeature-> | |
45 ( | |
46 -start => 100, | |
47 -end => 220, | |
48 -strand => -1, | |
49 -slice => $slice, | |
50 -set => $fset, | |
51 -feature_type => $ftype, | |
52 -display_label => $label, | |
53 ); | |
54 | |
55 # Accessing some attributes | |
56 | |
57 | |
58 my $start = $feat->start; | |
59 my $end = $feat->end; | |
60 my $strand = $feat->strand; | |
61 my $fset = $feat->set; | |
62 my $cell_type = $feat->cell_type; | |
63 | |
64 # Printing some information | |
65 | |
66 print $feature->display_label.' has the FeatureType '.$feat->feature_type->name."\n"; | |
67 | |
68 =head1 DESCRIPTION | |
69 | |
70 This is a base class for features which are contained within a Funcgen FeatureSet or ResultSet. | |
71 It provides generic methods for attributes which are common across all inheriting classes. | |
72 | |
73 =cut | |
74 | |
75 | |
76 package Bio::EnsEMBL::Funcgen::SetFeature; | |
77 | |
78 use strict; | |
79 use warnings; | |
80 | |
81 use Bio::EnsEMBL::Feature; | |
82 use Bio::EnsEMBL::Funcgen::Storable; | |
83 use Bio::EnsEMBL::Utils::Argument qw(rearrange); | |
84 use Bio::EnsEMBL::Utils::Exception qw(throw); | |
85 | |
86 use vars qw(@ISA); | |
87 @ISA = qw(Bio::EnsEMBL::Feature Bio::EnsEMBL::Funcgen::Storable); | |
88 #can't use base with dual inheritance | |
89 | |
90 =head2 new | |
91 | |
92 | |
93 Arg [-SET] : Bio::EnsEMBL::Funcgen::ResultSet or FeatureSet. | |
94 Arg [-DISPLAY_LABEL]: (optional) String - Display label for this feature | |
95 Arg [-FEATURE_TYPE] : (optional) Bio::EnsEMBL::Funcgen::FeatureType. | |
96 Defaults to Feature/ResultSet FeatureType. | |
97 | |
98 #Bio::EnsEMBL::Feature arguments | |
99 Arg [-SLICE] : Bio::EnsEMBL::Slice - The slice on which this feature is. | |
100 Arg [-STRAND] : (optional) Int - The orientation of this feature relative to the | |
101 strand it is on. Valid values are 1, -1 and 0. | |
102 Arg [-START] : Int - The start coordinate of this feature relative to the start of the slice | |
103 it is sitting on. Coordinates start at 1 and are inclusive. | |
104 Arg [-END] : Int -The end coordinate of this feature relative to the start of the slice | |
105 it is sitting on. Coordinates start at 1 and are inclusive. | |
106 Arg [-ANALYSIS] : (optional) Bio::EnsEMBL::Analysis. Defaults to Feature/ResultSet Analysis. | |
107 Arg [-dbID] : (optional) Int - Internal database ID. | |
108 Arg [-ADAPTOR] : (optional) Bio::EnsEMBL::Funcgen::DBSQL::BaseFeatureAdaptor | |
109 | |
110 | |
111 | |
112 Example : my $feature = Bio::EnsEMBL::Funcgen::SetFeature->new | |
113 ( | |
114 -SLICE => $chr_1_slice, | |
115 -START => 1000000, | |
116 -END => 1000024, | |
117 -STRAND => -1, | |
118 -DISPLAY_LABEL => $text, | |
119 -SET => $fset, | |
120 ); | |
121 | |
122 Description: Constructor for SetFeature objects. Should never be called directly, only by its children. | |
123 Returntype : Bio::EnsEMBL::Funcgen::SetFeature | |
124 Exceptions : Throws if no valid ResultSet or FeatureSet passed | |
125 Throws if FeatureType is passed but not valid | |
126 Caller : General | |
127 Status : At Risk - FEATURE_SET arg to be removed, superceded by SET in v67 | |
128 | |
129 =cut | |
130 | |
131 sub new { | |
132 my $caller = shift; | |
133 my $class = ref($caller) || $caller; | |
134 | |
135 my ($display_label, $fset, $ftype, $set) | |
136 = rearrange(['DISPLAY_LABEL', 'FEATURE_SET', 'FEATURE_TYPE', 'SET'], @_); | |
137 | |
138 $set ||= $fset; | |
139 | |
140 if( ( ref($set) ne 'Bio::EnsEMBL::Funcgen::FeatureSet') && | |
141 ( ref($set) ne 'Bio::EnsEMBL::Funcgen::ResultSet') ){ | |
142 throw("Must pass valid Bio::EnsEMBL::Funcgen::FeatureSet or ResultSet object"); | |
143 } | |
144 | |
145 #Grab FeatureSet first so we can pass analysis to base Feature class | |
146 #Funcgen analysis is currently always at the Set level | |
147 #if this ever changes the SetFeature->analysis method will also need changing | |
148 my $self = $class->SUPER::new(@_, -analysis => $set->analysis); | |
149 | |
150 if($ftype){ | |
151 | |
152 if (ref($ftype) ne 'Bio::EnsEMBL::Funcgen::FeatureType') { | |
153 throw('feature_type param must be a valid Bio::EnsEMBL::Funcgen::FeatureType'); | |
154 } | |
155 | |
156 $self->{feature_type} = $ftype; | |
157 } | |
158 | |
159 #Setting attrs directly removes the need for setter code in methods | |
160 $self->{set} = $set; | |
161 $self->{display_label} = $display_label if defined $display_label; | |
162 | |
163 return $self; | |
164 } | |
165 | |
166 | |
167 | |
168 =head2 feature_set | |
169 | |
170 Example : my $set = $efeature->feature_set(); | |
171 Description: WARNING: Can now also return ResultSet aswell as FeatureSet attribute for this feature. | |
172 Returntype : Bio::EnsEMBL::Funcgen::FeatureSet or ResultSet | |
173 Exceptions : None | |
174 Caller : General | |
175 Status : At Risk - marked as to be removed in v67 | |
176 | |
177 =cut | |
178 | |
179 sub feature_set { | |
180 #??? deprecate | |
181 #check webcode? | |
182 | |
183 return $_[0]->{set}; | |
184 } | |
185 | |
186 | |
187 =head2 set | |
188 | |
189 Example : my $set = $set_feature->set(); | |
190 Description: Getter for the set attribute for this feature. | |
191 Returntype : Bio::EnsEMBL::Funcgen::FeatureSet or ResultSet | |
192 Exceptions : None | |
193 Caller : General | |
194 Status : At Risk | |
195 | |
196 =cut | |
197 | |
198 sub set { | |
199 return $_[0]->{set}; | |
200 } | |
201 | |
202 =head2 cell_type | |
203 | |
204 Example : my $cell_name = $set_feature->cell_type->name; | |
205 Description: Getter for the CellType attribute for the Set of this Feature. | |
206 May not always be for some Set types e.g. ExternalFeatures. | |
207 Returntype : Bio::EnsEMBL::Funcgen::CellType | |
208 Exceptions : None | |
209 Caller : General | |
210 Status : stable | |
211 | |
212 =cut | |
213 | |
214 sub cell_type{ | |
215 return $_[0]->set->cell_type; | |
216 } | |
217 | |
218 | |
219 =head2 feature_type | |
220 | |
221 Example : my $ft_name = $set_feature->feature_type->name; | |
222 Description: Getter for the FeatureType attribute for this feature. | |
223 If not explicitly set, defaults to the Set FeatureType | |
224 Returntype : Bio::EnsEMBL::Funcgen::FeatureType | |
225 Exceptions : None | |
226 Caller : General | |
227 Status : stable | |
228 | |
229 =cut | |
230 | |
231 sub feature_type{ | |
232 my $self = shift; | |
233 | |
234 if(! defined $self->{feature_type}){ | |
235 $self->{feature_type} = $self->set->feature_type; | |
236 } | |
237 | |
238 return $self->{feature_type}; | |
239 } | |
240 | |
241 | |
242 =head2 analysis | |
243 | |
244 Example : my $analysis = $setfeature->analysis; | |
245 Description: Getter for the Analysis attribute for this feature. | |
246 Re-implementation of Bio::EnsEMBL::Feature->analysis. | |
247 Returntype : Bio::EnsEMBL::Analysis | |
248 Exceptions : None | |
249 Caller : General | |
250 Status : stable | |
251 | |
252 =cut | |
253 | |
254 #what about MFs? add as feature_set as MOODS/PWM analysis not represented | |
255 #This is a mandatory requirement for Bio::EnsEMBL::Feature | |
256 #Do we ever actually have analysis at the feature level? | |
257 | |
258 sub analysis{ | |
259 return $_[0]->set->analysis; | |
260 } | |
261 | |
262 | |
263 =head2 display_label | |
264 | |
265 Example : my $label = $feature->display_label; | |
266 Description: Getter for the display label of this feature. | |
267 This will most likely be over-ridden by inheriting class | |
268 Returntype : String | |
269 Exceptions : None | |
270 Caller : General | |
271 Status : Stable | |
272 | |
273 =cut | |
274 | |
275 sub display_label{ | |
276 return $_[0]->{display_label}; | |
277 } | |
278 | |
279 | |
280 1; |