annotate variant_effect_predictor/Bio/Tools/Genemark.pm @ 0:1f6dce3d34e0

Uploaded
author mahtabm
date Thu, 11 Apr 2013 02:01:53 -0400
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1 # $Id: Genemark.pm,v 1.11.2.1 2003/04/24 08:51:48 heikki Exp $
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
3 # BioPerl module for Bio::Tools::Genemark
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
4 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
5 # Cared for by Mark Fiers <hlapp@gmx.net>
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
6 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
7 # Copyright Hilmar Lapp, Mark Fiers
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
8 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
9 # You may distribute this module under the same terms as perl itself
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
10
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
11 # POD documentation - main docs before the code
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
12
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
13 =head1 NAME
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
14
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
15 Bio::Tools::Genemark - Results of one Genemark run
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
16
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
17 =head1 SYNOPSIS
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
18
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
19 $Genemark = Bio::Tools::Genemark->new(-file => 'result.Genemark');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
20 # filehandle:
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
21 $Genemark = Bio::Tools::Genemark->new( -fh => \*INPUT );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
22
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
23 # parse the results
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
24 # note: this class is-a Bio::Tools::AnalysisResult which implements
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
25 # Bio::SeqAnalysisParserI, i.e., $Genemark->next_feature() is the same
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
26 while($gene = $Genemark->next_prediction()) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
27 # $gene is an instance of Bio::Tools::Prediction::Gene, which inherits
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
28 # off Bio::SeqFeature::Gene::Transcript.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
29 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
30 # $gene->exons() returns an array of
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
31 # Bio::Tools::Prediction::Exon objects
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
32 # all exons:
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
33 @exon_arr = $gene->exons();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
34
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
35 # initial exons only
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
36 @init_exons = $gene->exons('Initial');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
37 # internal exons only
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
38 @intrl_exons = $gene->exons('Internal');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
39 # terminal exons only
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
40 @term_exons = $gene->exons('Terminal');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
41 # singleton exons:
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
42 ($single_exon) = $gene->exons();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
43 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
44
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
45 # essential if you gave a filename at initialization (otherwise the file
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
46 # will stay open)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
47 $Genemark->close();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
48
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
49 =head1 DESCRIPTION
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
50
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
51 The Genemark module provides a parser for Genemark gene structure prediction
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
52 output. It parses one gene prediction into a Bio::SeqFeature::Gene::Transcript-
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
53 derived object.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
54
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
55 This module has been developed around genemark.hmm for eukaryots v2.2a and will
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
56 probably not work with other versions.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
57
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
58
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
59 This module also implements the Bio::SeqAnalysisParserI interface, and thus
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
60 can be used wherever such an object fits. See L<Bio::SeqAnalysisParserI>.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
61
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
62 =head1 FEEDBACK
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
63
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
64 =head2 Mailing Lists
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
65
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
66 User feedback is an integral part of the evolution of this and other
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
67 Bioperl modules. Send your comments and suggestions preferably to one
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
68 of the Bioperl mailing lists. Your participation is much appreciated.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
69
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
70 bioperl-l@bioperl.org - General discussion
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
71 http://bio.perl.org/MailList.html - About the mailing lists
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
72
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
73 =head2 Reporting Bugs
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
74
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
75 Report bugs to the Bioperl bug tracking system to help us keep track
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
76 the bugs and their resolution. Bug reports can be submitted via email
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
77 or the web:
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
78
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
79 bioperl-bugs@bio.perl.org
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
80 http://bugzilla.bioperl.org/
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
81
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
82 =head1 AUTHOR - Hilmar Lapp, Mark Fiers
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
83
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
84 Email hlapp@gmx.net
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
85 m.w.e.j.fiers@plant.wag-ur.nl
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
86
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
87 Describe contact details here
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
88
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
89 =head1 APPENDIX
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
90
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
91 The rest of the documentation details each of the object methods. Internal methods are usually preceded with a _
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
92
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
93 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
94
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
95
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
96 # Let the code begin...
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
97
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
98
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
99 package Bio::Tools::Genemark;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
100 use vars qw(@ISA);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
101 use strict;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
102 use Symbol;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
103
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
104 use Bio::Root::Root;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
105 use Bio::Tools::AnalysisResult;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
106 use Bio::Tools::Prediction::Gene;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
107 use Bio::Tools::Prediction::Exon;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
108 use Bio::Seq;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
109
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
110 @ISA = qw(Bio::Tools::AnalysisResult);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
111
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
112 sub _initialize_state {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
113 my ($self,@args) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
114
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
115 # first call the inherited method!
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
116 $self->SUPER::_initialize_state(@args);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
117
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
118 # our private state variables
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
119 $self->{'_preds_parsed'} = 0;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
120 $self->{'_has_cds'} = 0;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
121 # array of pre-parsed predictions
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
122 $self->{'_preds'} = [];
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
123 # seq stack
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
124 $self->{'_seqstack'} = [];
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
125 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
126
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
127 =head2 analysis_method
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
128
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
129 Usage : $Genemark->analysis_method();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
130 Purpose : Inherited method. Overridden to ensure that the name matches
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
131 /GeneMark.hmm/i.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
132 Returns : String
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
133 Argument : n/a
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
134
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
135 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
136
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
137 #-------------
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
138 sub analysis_method {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
139 #-------------
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
140 my ($self, $method) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
141 if($method && ($method !~ /Genemark\.hmm/i)) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
142 $self->throw("method $method not supported in " . ref($self));
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
143 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
144 return $self->SUPER::analysis_method($method);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
145 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
146
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
147 =head2 next_feature
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
148
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
149 Title : next_feature
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
150 Usage : while($gene = $Genemark->next_feature()) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
151 # do something
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
152 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
153 Function: Returns the next gene structure prediction of the Genemark result
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
154 file. Call this method repeatedly until FALSE is returned.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
155
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
156 The returned object is actually a SeqFeatureI implementing object.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
157 This method is required for classes implementing the
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
158 SeqAnalysisParserI interface, and is merely an alias for
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
159 next_prediction() at present.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
160
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
161 Example :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
162 Returns : A Bio::Tools::Prediction::Gene object.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
163 Args :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
164
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
165 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
166
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
167 sub next_feature {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
168 my ($self,@args) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
169 # even though next_prediction doesn't expect any args (and this method
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
170 # does neither), we pass on args in order to be prepared if this changes
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
171 # ever
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
172 return $self->next_prediction(@args);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
173 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
174
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
175 =head2 next_prediction
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
176
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
177 Title : next_prediction
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
178 Usage : while($gene = $Genemark->next_prediction()) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
179 # do something
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
180 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
181 Function: Returns the next gene structure prediction of the Genemark result
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
182 file. Call this method repeatedly until FALSE is returned.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
183
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
184 Example :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
185 Returns : A Bio::Tools::Prediction::Gene object.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
186 Args :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
187
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
188 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
189
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
190 sub next_prediction {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
191 my ($self) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
192 my $gene;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
193
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
194 # if the prediction section hasn't been parsed yet, we do this now
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
195 $self->_parse_predictions() unless $self->_predictions_parsed();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
196
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
197 # get next gene structure
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
198 $gene = $self->_prediction();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
199
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
200 return $gene;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
201 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
202
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
203 =head2 _parse_predictions
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
204
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
205 Title : _parse_predictions()
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
206 Usage : $obj->_parse_predictions()
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
207 Function: Parses the prediction section. Automatically called by
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
208 next_prediction() if not yet done.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
209 Example :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
210 Returns :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
211
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
212 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
213
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
214 sub _parse_predictions {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
215 my ($self) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
216 my %exontags = ('Initial' => 'Initial',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
217 'Internal' => 'Internal',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
218 'Terminal' => 'Terminal',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
219 'Single' => '',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
220 '_na_' => '');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
221 my $exontag;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
222 my $gene;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
223 my $seqname;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
224 my $exontype;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
225 my $current_gene_no = -1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
226
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
227 while(defined($_ = $self->_readline())) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
228
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
229 if( (/^\s*(\d+)\s+(\d+)/) || (/^\s*(\d+)\s+[\+\-]/)) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
230
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
231 # this is an exon, Genemark doesn't predict anything else
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
232 # $prednr corresponds to geneno.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
233 my $prednr = $1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
234
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
235 #exon no:
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
236 my $signalnr = 0;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
237 if ($2) { my $signalnr = $2; } # used in tag: exon_no
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
238
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
239 # split into fields
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
240 chomp();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
241 my @flds = split(' ', $_);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
242
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
243 # create the feature (an exon) object
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
244 my $predobj = Bio::Tools::Prediction::Exon->new();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
245
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
246
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
247 # define info depending on it being eu- or prokaryot
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
248 my ($start, $end, $orientation, $prediction_source);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
249
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
250 if ($self->analysis_method() =~ /PROKARYOTIC/i) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
251 $prediction_source = "Genemark.hmm.pro";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
252 $orientation = ($flds[1] eq '+') ? 1 : -1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
253 ($start, $end) = @flds[(2,3)];
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
254 $exontag = "_na_";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
255
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
256 } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
257 $prediction_source = "Genemark.hmm.eu";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
258 $orientation = ($flds[2] eq '+') ? 1 : -1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
259 ($start, $end) = @flds[(4,5)];
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
260 $exontag = $flds[3];
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
261 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
262
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
263 #store the data in the exon object
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
264 $predobj->source_tag($prediction_source);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
265 $predobj->start($start);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
266 $predobj->end($end);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
267 $predobj->strand($orientation);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
268
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
269 $predobj->primary_tag($exontags{$exontag} . "Exon");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
270
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
271 $predobj->add_tag_value('exon_no',"$signalnr") if ($signalnr);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
272
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
273 $predobj->is_coding(1);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
274
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
275
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
276 # frame calculation as in the genscan module
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
277 # is to be implemented...
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
278
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
279 #If the $prednr is not equal to the current gene, we
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
280 #need to make a new gene and close the old one
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
281 if($prednr != $current_gene_no) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
282 # a new gene, store the old one if it exists
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
283 if (defined ($gene)) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
284 $gene->seq_id($seqname);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
285 $gene = undef ;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
286 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
287 #and make a new one
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
288 $gene = Bio::Tools::Prediction::Gene->new
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
289 (
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
290 '-primary' => "GenePrediction$prednr",
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
291 '-source' => $prediction_source);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
292 $self->_add_prediction($gene);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
293 $current_gene_no = $prednr;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
294 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
295
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
296 # Add the exon to the gene
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
297 $gene->add_exon($predobj, ($exontag eq "_na_" ?
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
298 undef : $exontags{$exontag}));
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
299
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
300 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
301
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
302 if(/^(Genemark\.hmm\s*[PROKARYOTIC]*)\s+\(Version (.*)\)$/i) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
303 $self->analysis_method($1);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
304
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
305 my $gm_version = $2;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
306
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
307 $self->analysis_method_version($gm_version);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
308 next;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
309 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
310
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
311 #Matrix file for eukaryot version
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
312 if (/^Matrices file:\s+(\S+)?/i) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
313 $self->analysis_subject($1);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
314 # since the line after the matrix file is always the date
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
315 # (in the output file's I have seen!) extract and store this
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
316 # here
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
317 if (defined(my $_date = $self->_readline())) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
318 chomp ($_date);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
319 $self->analysis_date($_date);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
320 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
321 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
322
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
323 #Matrix file for prokaryot version
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
324 if (/^Model file name:\s+(\S+)/) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
325 $self->analysis_subject($1);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
326 # since the line after the matrix file is always the date
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
327 # (in the output file's I have seen!) extract and store this
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
328 # here
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
329 my $_date = $self->_readline() ;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
330 if (defined($_date = $self->_readline())) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
331 chomp ($_date);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
332 $self->analysis_date($_date);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
333 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
334 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
335
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
336 if(/^Sequence[ file]? name:\s+(.+)\s*$/i) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
337 $seqname = $1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
338 # $self->analysis_subject($seqname);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
339 next;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
340 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
341
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
342
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
343 /^>/ && do {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
344 $self->_pushback($_);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
345
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
346 # section of predicted aa sequences on recognition
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
347 # of a fasta start, read all sequences and find the
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
348 # appropriate gene
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
349 while (1) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
350 my ($aa_id, $seq) = $self->_read_fasta_seq();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
351 last unless ($aa_id);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
352
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
353 #now parse through the predictions to add the pred. protein
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
354 FINDPRED: foreach my $gene (@{$self->{'_preds'}}) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
355 $gene->primary_tag() =~ /[^0-9]([0-9]+)$/;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
356 my $geneno = $1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
357 if ($aa_id =~ /\|gene.$geneno\|/) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
358 #print "x SEQ : \n $seq \nXXXX\n";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
359 my $seqobj = Bio::Seq->new('-seq' => $seq,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
360 '-display_id' => $aa_id,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
361 '-alphabet' => "protein");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
362 $gene->predicted_protein($seqobj);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
363 last FINDPRED;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
364 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
365
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
366 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
367 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
368
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
369 last;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
370 };
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
371 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
372
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
373 # if the analysis query object contains a ref to a Seq of PrimarySeq
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
374 # object, then extract the predicted sequences and add it to the gene
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
375 # object.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
376 if (defined $self->analysis_query()) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
377 my $orig_seq = $self->analysis_query();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
378 FINDPREDSEQ: foreach my $gene (@{$self->{'_preds'}}) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
379 my $predseq = "";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
380 foreach my $exon ($gene->exons()) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
381 #print $exon->start() . " " . $exon->end () . "\n";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
382 $predseq .= $orig_seq->subseq($exon->start(), $exon->end());
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
383 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
384
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
385 my $seqobj = Bio::PrimarySeq->new('-seq' => $predseq,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
386 '-display_id' => "transl");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
387 $gene->predicted_cds($seqobj);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
388 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
389 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
390
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
391
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
392 $self->_predictions_parsed(1);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
393 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
394
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
395 =head2 _prediction
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
396
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
397 Title : _prediction()
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
398 Usage : $gene = $obj->_prediction()
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
399 Function: internal
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
400 Example :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
401 Returns :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
402
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
403 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
404
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
405 sub _prediction {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
406 my ($self) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
407
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
408 return undef unless(exists($self->{'_preds'}) && @{$self->{'_preds'}});
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
409 return shift(@{$self->{'_preds'}});
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
410 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
411
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
412 =head2 _add_prediction
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
413
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
414 Title : _add_prediction()
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
415 Usage : $obj->_add_prediction($gene)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
416 Function: internal
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
417 Example :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
418 Returns :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
419
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
420 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
421
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
422 sub _add_prediction {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
423 my ($self, $gene) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
424
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
425 if(! exists($self->{'_preds'})) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
426 $self->{'_preds'} = [];
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
427 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
428 push(@{$self->{'_preds'}}, $gene);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
429 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
430
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
431 =head2 _predictions_parsed
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
432
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
433 Title : _predictions_parsed
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
434 Usage : $obj->_predictions_parsed
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
435 Function: internal
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
436 Example :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
437 Returns : TRUE or FALSE
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
438
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
439 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
440
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
441 sub _predictions_parsed {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
442 my ($self, $val) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
443
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
444 $self->{'_preds_parsed'} = $val if $val;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
445 if(! exists($self->{'_preds_parsed'})) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
446 $self->{'_preds_parsed'} = 0;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
447 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
448 return $self->{'_preds_parsed'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
449 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
450
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
451 =head2 _has_cds
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
452
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
453 Title : _has_cds()
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
454 Usage : $obj->_has_cds()
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
455 Function: Whether or not the result contains the predicted CDSs, too.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
456 Example :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
457 Returns : TRUE or FALSE
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
458
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
459 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
460
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
461 sub _has_cds {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
462 my ($self, $val) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
463
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
464 $self->{'_has_cds'} = $val if $val;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
465 if(! exists($self->{'_has_cds'})) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
466 $self->{'_has_cds'} = 0;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
467 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
468 return $self->{'_has_cds'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
469 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
470
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
471 =head2 _read_fasta_seq
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
472
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
473 Title : _read_fasta_seq()
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
474 Usage : ($id,$seqstr) = $obj->_read_fasta_seq();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
475 Function: Simple but specialised FASTA format sequence reader. Uses
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
476 $self->_readline() to retrieve input, and is able to strip off
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
477 the traling description lines.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
478 Example :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
479 Returns : An array of two elements.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
480
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
481 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
482
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
483 sub _read_fasta_seq {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
484 my ($self) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
485 my ($id, $seq);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
486 local $/ = ">";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
487
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
488 return 0 unless (my $entry = $self->_readline());
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
489
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
490 $entry =~ s/^>//;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
491 # complete the entry if the first line came from a pushback buffer
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
492 while(! ($entry =~ />$/)) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
493 last unless ($_ = $self->_readline());
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
494 $entry .= $_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
495 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
496
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
497 # delete everything onwards from an new fasta start (>)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
498 $entry =~ s/\n>.*$//s;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
499 # id and sequence
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
500
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
501 if($entry =~ s/^(.+)\n//) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
502 $id = $1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
503 $id =~ s/ /_/g;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
504 $seq = $entry;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
505 $seq =~ s/\s//g;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
506 #print "\n@@ $id \n@@ $seq \n##\n";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
507 } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
508 $self->throw("Can't parse Genemark predicted sequence entry");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
509 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
510 $seq =~ s/\s//g; # Remove whitespace
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
511 return ($id, $seq);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
512 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
513
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
514 1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
515