annotate variant_effect_predictor/Bio/SeqFeature/Computation.pm @ 0:2bc9b66ada89 draft default tip

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