annotate variant_effect_predictor/Bio/SeqFeature/Computation.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 # $Id: Computation.pm,v 1.11 2002/10/22 07:38:41 lapp Exp $
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2 #
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
3 # BioPerl module for Bio::SeqFeature::Generic
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
4 #
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
5 # Cared for by mark Fiers <m.w.e.j.fiers@plant.wag-ur.nl>
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
6 #
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
7 # Copyright Ewan Birney, Mark Fiers
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
8 #
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
9 # You may distribute this module under the same terms as perl itself
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
10
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
11 # POD documentation - main docs before the code
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
12
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
13 =head1 NAME
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
14
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
15 Bio::SeqFeature::Computation - Computation SeqFeature
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
16
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
17 =head1 SYNOPSIS
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
18
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
19 $feat = new Bio::SeqFeature::Computation (
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
20 -start => 10, -end => 100,
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
21 -strand => -1, -primary => 'repeat',
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
22 -program_name => 'GeneMark',
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
23 -program_date => '12-5-2000',
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
24 -program_version => 'x.y',
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
25 -database_name => 'Arabidopsis',
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
26 -database_date => '12-dec-2000',
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
27 -computation_id => 2231,
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
28 -score => { no_score => 334 } );
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
29
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
30
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
31 =head1 DESCRIPTION
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
32
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
33 Bio::SeqFeature::Computation extends the Generic seqfeature object with
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
34 a set of computation related fields and a more flexible set of storing
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
35 more types of score and subseqfeatures. It is compatible with the Generic
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
36 SeqFeature object.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
37
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
38 The new way of storing score values is similar to the tag structure in the
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
39 Generic object. For storing sets of subseqfeatures the array containg the
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
40 subseqfeatures is now a hash which contains arrays of seqfeatures
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
41 Both the score and subSeqfeature methods can be called in exactly the same
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
42 way, the value's will be stored as a 'default' score or subseqfeature.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
43
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
44 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
45
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
46 #'
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
47
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
48 =head1 FEEDBACK
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
49
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
50 =head2 Mailing Lists
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
51
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
52 User feedback is an integral part of the evolution of this and other
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
53 Bioperl modules. Send your comments and suggestions preferably to one
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
54 of the Bioperl mailing lists. Your participation is much appreciated.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
55
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
56 bioperl-l@bioperl.org - General discussion
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
57 http://bio.perl.org/MailList.html - About the mailing lists
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
58
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
59 =head2 Reporting Bugs
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
60
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
61 Report bugs to the Bioperl bug tracking system to help us keep track
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
62 the bugs and their resolution. Bug reports can be submitted via email
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
63 or the web:
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
64
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
65 bioperl-bugs@bio.perl.org
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
66 http://bugzilla.bioperl.org/
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
67
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
68 =head1 AUTHOR - Ewan Birney, Mark Fiers
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
69
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
70 Ewan Birney E<lt>birney@sanger.ac.ukE<gt>
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
71 Mark Fiers E<lt>m.w.e.j.fiers@plant.wag-ur.nlE<gt>
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
72
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
73 =head1 DEVELOPERS
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
74
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
75 This class has been written with an eye out of inheritance. The fields
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
76 the actual object hash are:
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
77
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
78 _gsf_sub_hash = reference to a hash containing sets of sub arrays
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
79 _gsf_score_hash= reference to a hash for the score values
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
80
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
81 =head1 APPENDIX
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
82
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
83 The rest of the documentation details each of the object
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
84 methods. Internal methods are usually preceded with a _
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
85
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
86 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
87
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
88 # Let the code begin...
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
89
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
90 package Bio::SeqFeature::Computation;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
91 use vars qw(@ISA);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
92 use strict;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
93
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
94 use Bio::Root::Root;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
95 use Bio::SeqFeature::Generic;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
96
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
97 @ISA = qw(Bio::SeqFeature::Generic);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
98
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
99 sub new {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
100 my ( $class, @args) = @_;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
101
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
102 my $self = $class->SUPER::new(@args);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
103
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
104
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
105 my ( $computation_id,
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
106 $program_name, $program_date, $program_version,
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
107 $database_name, $database_date, $database_version) =
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
108 $self->_rearrange([qw(COMPUTATION_ID
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
109 PROGRAM_NAME
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
110 PROGRAM_DATE
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
111 PROGRAM_VERSION
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
112 DATABASE_NAME
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
113 DATABASE_DATE
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
114 DATABASE_VERSION
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
115 )],@args);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
116
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
117 $program_name && $self->program_name($program_name);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
118 $program_date && $self->program_date($program_date);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
119 $program_version && $self->program_version($program_version);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
120 $database_name && $self->database_name($database_name);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
121 $database_date && $self->database_date($database_date);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
122 $database_version && $self->database_version($database_version);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
123 $computation_id && $self->computation_id($computation_id);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
124
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
125 return $self;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
126 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
127
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
128 =head2 has_score
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
129
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
130 Title : has_score
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
131 Usage : $value = $self->has_score('some_score')
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
132 Function: Tests wether a feature contains a score
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
133 Returns : TRUE if the SeqFeature has the score,
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
134 and FALSE otherwise.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
135 Args : The name of a score
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
136
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
137 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
138
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
139 sub has_score {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
140 my ($self, $score) = @_;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
141 return undef unless defined $score;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
142 return exists $self->{'_gsf_score_hash'}->{$score};
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
143 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
144
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
145 =head2 add_score_value
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
146
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
147 Title : add_score_value
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
148 Usage : $self->add_score_value('P_value',224);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
149 Returns : TRUE on success
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
150 Args : score (string) and value (any scalar)
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
151
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
152 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
153
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
154 sub add_score_value {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
155 my ($self, $score, $value) = @_;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
156 if( ! defined $score || ! defined $value ) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
157 $self->warn("must specify a valid $score and $value to add_score_value");
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
158 return 0;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
159 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
160
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
161 if ( !defined $self->{'_gsf_score_hash'}->{$score} ) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
162 $self->{'_gsf_score_hash'}->{$score} = [];
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
163 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
164
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
165 push(@{$self->{'_gsf_score_hash'}->{$score}},$value);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
166 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
167
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
168 =head2 score
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
169
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
170 Title : score
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
171 Usage : $value = $comp_obj->score()
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
172 $comp_obj->score($value)
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
173 Function: Returns the 'default' score or sets the 'default' score
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
174 This method exist for compatibility options
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
175 It would equal ($comp_obj->each_score_value('default'))[0];
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
176 Returns : A value
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
177 Args : (optional) a new value for the 'default' score
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
178
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
179 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
180
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
181 sub score {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
182 my ($self, $value) = @_;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
183 my @v;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
184 if (defined $value) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
185
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
186 if( ref($value) =~ /HASH/i ) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
187 while( my ($t,$val) = each %{ $value } ) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
188 $self->add_score_value($t,$val);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
189 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
190 } else {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
191 @v = $value;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
192 $self->add_score_value('default', $value);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
193 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
194
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
195 } else {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
196 @v = $self->each_score_value('default');
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
197 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
198 return $v[0];
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
199 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
200
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
201 =head2 each_score_value
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
202
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
203 Title : each_score_value
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
204 Usage : @values = $gsf->each_score_value('note');
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
205 Function: Returns a list of all the values stored
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
206 under a particular score.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
207 Returns : A list of scalars
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
208 Args : The name of the score
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
209
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
210 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
211
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
212 sub each_score_value {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
213 my ($self, $score) = @_;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
214 if ( ! exists $self->{'_gsf_score_hash'}->{$score} ) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
215 $self->warn("asking for score value that does not exist $score");
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
216 return undef;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
217 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
218 return @{$self->{'_gsf_score_hash'}->{$score}};
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
219 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
220
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
221
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
222 =head2 all_scores
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
223
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
224 Title : all_scores
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
225 Usage : @scores = $feat->all_scores()
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
226 Function: Get a list of all the scores in a feature
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
227 Returns : An array of score names
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
228 Args : none
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
229
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
230
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
231 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
232
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
233 sub all_scores {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
234 my ($self, @args) = @_;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
235
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
236 return keys %{$self->{'_gsf_score_hash'}};
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 =head2 remove_score
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
241
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
242 Title : remove_score
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
243 Usage : $feat->remove_score('some_score')
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
244 Function: removes a score from this feature
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
245 Returns : nothing
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
246 Args : score (string)
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
247
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
248
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
249 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
250
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
251 sub remove_score {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
252 my ($self, $score) = @_;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
253
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
254 if ( ! exists $self->{'_gsf_score_hash'}->{$score} ) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
255 $self->warn("trying to remove a score that does not exist: $score");
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
256 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
257
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
258 delete $self->{'_gsf_score_hash'}->{$score};
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
259 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
260
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
261 =head2 computation_id
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
262
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
263 Title : computation_id
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
264 Usage : $computation_id = $feat->computation_id()
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
265 $feat->computation_id($computation_id)
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
266 Function: get/set on program name information
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
267 Returns : string
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
268 Args : none if get, the new value if set
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
269
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
270
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
271 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
272
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
273 sub computation_id {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
274 my ($self,$value) = @_;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
275
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
276 if (defined($value)) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
277 $self->{'_gsf_computation_id'} = $value;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
278 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
279
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
280 return $self->{'_gsf_computation_id'};
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
281 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
282
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 program_name
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
287
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
288 Title : program_name
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
289 Usage : $program_name = $feat->program_name()
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
290 $feat->program_name($program_name)
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
291 Function: get/set on program name information
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
292 Returns : string
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
293 Args : none if get, the new value if set
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
294
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
295
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
296 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
297
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
298 sub program_name {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
299 my ($self,$value) = @_;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
300
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
301 if (defined($value)) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
302 $self->{'_gsf_program_name'} = $value;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
303 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
304
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
305 return $self->{'_gsf_program_name'};
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
306 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
307
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
308 =head2 program_date
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
309
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
310 Title : program_date
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
311 Usage : $program_date = $feat->program_date()
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
312 $feat->program_date($program_date)
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
313 Function: get/set on program date information
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
314 Returns : date (string)
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
315 Args : none if get, the new value if set
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
316
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
317
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
318 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
319
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
320 sub program_date {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
321 my ($self,$value) = @_;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
322
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
323 if (defined($value)) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
324 $self->{'_gsf_program_date'} = $value;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
325 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
326
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
327 return $self->{'_gsf_program_date'};
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
328 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
329
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
330
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
331 =head2 program_version
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
332
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
333 Title : program_version
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
334 Usage : $program_version = $feat->program_version()
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
335 $feat->program_version($program_version)
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
336 Function: get/set on program version information
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
337 Returns : date (string)
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
338 Args : none if get, the new value if set
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
339
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
340
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
341 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
342
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
343 sub program_version {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
344 my ($self,$value) = @_;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
345
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
346 if (defined($value)) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
347 $self->{'_gsf_program_version'} = $value;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
348 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
349
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
350 return $self->{'_gsf_program_version'};
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
351 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
352
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
353 =head2 database_name
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
354
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
355 Title : database_name
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
356 Usage : $database_name = $feat->database_name()
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
357 $feat->database_name($database_name)
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
358 Function: get/set on program name information
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
359 Returns : string
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
360 Args : none if get, the new value if set
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
361
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
362 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
363
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
364 sub database_name {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
365 my ($self,$value) = @_;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
366
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
367 if (defined($value)) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
368 $self->{'_gsf_database_name'} = $value;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
369 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
370
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
371 return $self->{'_gsf_database_name'};
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
372 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
373
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
374 =head2 database_date
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
375
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
376 Title : database_date
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
377 Usage : $database_date = $feat->database_date()
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
378 $feat->database_date($database_date)
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
379 Function: get/set on program date information
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
380 Returns : date (string)
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
381 Args : none if get, the new value if set
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
382
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
383
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
384 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
385
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
386 sub database_date {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
387 my ($self,$value) = @_;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
388
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
389 if (defined($value)) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
390 $self->{'_gsf_database_date'} = $value;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
391 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
392
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
393 return $self->{'_gsf_database_date'};
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
394 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
395
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
396
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
397 =head2 database_version
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
398
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
399 Title : database_version
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
400 Usage : $database_version = $feat->database_version()
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
401 $feat->database_version($database_version)
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
402 Function: get/set on program version information
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
403 Returns : date (string)
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
404 Args : none if get, the new value if set
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
405
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
406
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
407 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
408
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
409 sub database_version {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
410 my ($self,$value) = @_;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
411
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
412 if (defined($value)) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
413 $self->{'_gsf_database_version'} = $value;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
414 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
415
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
416 return $self->{'_gsf_database_version'};
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
417
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
418 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
419
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
420 =head2 sub_SeqFeature_type
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
421
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
422 Title : sub_SeqFeature_type
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
423 Usage : $sub_SeqFeature_type = $feat->sub_SeqFeature_type()
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
424 $feat->sub_SeqFeature_type($sub_SeqFeature_type)
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
425 Function: sub_SeqFeature_type is automatically set when adding
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
426 a sub_computation (sub_SeqFeature) to a computation object
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
427 Returns : sub_SeqFeature_type (string)
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
428 Args : none if get, the new value if set
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
429
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
430 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
431
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
432 sub sub_SeqFeature_type {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
433 my ($self, $value) = @_;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
434
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
435 if (defined($value)) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
436 $self->{'_gsf_sub_SeqFeature_type'} = $value;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
437 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
438 return $self->{'_gsf_sub_SeqFeature_type'};
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
439 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
440
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
441 =head2 all_sub_SeqFeature_types
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
442
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
443 Title : all_Sub_SeqFeature_types
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
444 Usage : @all_sub_seqfeature_types = $comp->all_Sub_SeqFeature_types();
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
445 Function: Returns an array with all subseqfeature types
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
446 Returns : An array
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
447 Args : none
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
448
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
449 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
450
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
451 sub all_sub_SeqFeature_types {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
452 my ($self) = @_;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
453 return keys ( %{$self->{'gsf_sub_hash'}} );
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
454 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
455
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
456 =head2 sub_SeqFeature
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
457
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
458 Title : sub_SeqFeature('sub_feature_type')
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
459 Usage : @feats = $feat->sub_SeqFeature();
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
460 @feats = $feat->sub_SeqFeature('sub_feature_type');
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
461 Function: Returns an array of sub Sequence Features of a specific
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
462 type or, if the type is ommited, all sub Sequence Features
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
463 Returns : An array
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
464 Args : (optional) a sub_SeqFeature type (ie exon, pattern)
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
465
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
466 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
467
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
468 sub sub_SeqFeature {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
469 my ($self, $ssf_type) = @_;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
470 my (@return_array) = ();
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
471 if ($ssf_type eq '') {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
472 #return all sub_SeqFeatures
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
473 foreach (keys ( %{$self->{'gsf_sub_hash'}} )){
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
474 push @return_array, @{$self->{'gsf_sub_hash'}->{$_}};
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
475 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
476 return @return_array;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
477 } else {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
478 if (defined ($self->{'gsf_sub_hash'}->{$ssf_type})) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
479 return @{$self->{'gsf_sub_hash'}->{$ssf_type}};
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
480 } else {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
481 $self->warn("$ssf_type is not a valid sub SeqFeature type");
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
482 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
483 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
484 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
485
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
486 =head2 add_sub_SeqFeature
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
487
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
488 Title : add_sub_SeqFeature
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
489 Usage : $feat->add_sub_SeqFeature($subfeat);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
490 $feat->add_sub_SeqFeature($subfeat,'sub_seqfeature_type')
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
491 $feat->add_sub_SeqFeature($subfeat,'EXPAND')
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
492 $feat->add_sub_SeqFeature($subfeat,'EXPAND','sub_seqfeature_type')
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
493 Function: adds a SeqFeature into a specific subSeqFeature array.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
494 with no 'EXPAND' qualifer, subfeat will be tested
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
495 as to whether it lies inside the parent, and throw
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
496 an exception if not.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
497 If EXPAND is used, the parents start/end/strand will
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
498 be adjusted so that it grows to accommodate the new
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
499 subFeature,
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
500 optionally a sub_seqfeature type can be defined.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
501 Returns : nothing
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
502 Args : An object which has the SeqFeatureI interface
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
503 : (optional) 'EXPAND'
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
504 : (optional) 'sub_SeqFeature_type'
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
505
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
506 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
507
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
508 sub add_sub_SeqFeature{
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
509 my ($self,$feat,$var1, $var2) = @_;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
510 $var1 = '' unless( defined $var1);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
511 $var2 = '' unless( defined $var2);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
512 my ($expand, $ssf_type) = ('', $var1 . $var2);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
513 $expand = 'EXPAND' if ($ssf_type =~ s/EXPAND//);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
514
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
515 if ( !$feat->isa('Bio::SeqFeatureI') ) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
516 $self->warn("$feat does not implement Bio::SeqFeatureI. Will add it anyway, but beware...");
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
517 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
518
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
519 if($expand eq 'EXPAND') {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
520 $self->_expand_region($feat);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
521 } else {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
522 if ( !$self->contains($feat) ) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
523 $self->throw("$feat is not contained within parent feature, and expansion is not valid");
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
524 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
525 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
526
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
527 $ssf_type = 'default' if ($ssf_type eq '');
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
528
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
529 if (!(defined ($self->{'gsf_sub_hash'}->{$ssf_type}))) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
530 @{$self->{'gsf_sub_hash'}->{$ssf_type}} = ();
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
531 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
532 $feat->sub_SeqFeature_type($ssf_type);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
533 push @{$self->{'gsf_sub_hash'}->{$ssf_type}}, $feat;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
534 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
535
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
536 =head2 flush_sub_SeqFeature
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
537
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
538 Title : flush_sub_SeqFeature
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
539 Usage : $sf->flush_sub_SeqFeature
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
540 $sf->flush_sub_SeqFeature('sub_SeqFeature_type');
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
541 Function: Removes all sub SeqFeature or all sub SeqFeatures
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
542 of a specified type
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
543 (if you want to remove a more specific subset, take
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
544 an array of them all, flush them, and add
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
545 back only the guys you want)
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
546 Example :
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
547 Returns : none
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
548 Args : none
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
549
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
550
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
551 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
552
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
553 sub flush_sub_SeqFeature {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
554 my ($self, $ssf_type) = @_;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
555 if ($ssf_type) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
556 if ((defined ($self->{'gsf_sub_hash'}->{$ssf_type}))) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
557 delete $self->{'gsf_sub_hash'}->{$ssf_type};
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
558 } else {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
559 $self->warn("$ssf_type is not a valid sub SeqFeature type");
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
560 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
561 } else {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
562 $self->{'_gsf_sub_hash'} = {}; # zap the complete hash implicitly.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
563 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
564 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
565
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
566
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
567
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
568 1;