annotate variant_effect_predictor/Bio/Factory/SequenceProcessorI.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: SequenceProcessorI.pm,v 1.1 2002/10/24 18:35:46 lapp Exp $
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
3 # BioPerl module for Bio::Factory::SequenceProcessorI
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
4 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
5 # Cared for by Hilmar Lapp <hlapp at gmx.net>
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
6 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
7 # Copyright Hilmar Lapp
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 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
12 # (c) Hilmar Lapp, hlapp at gmx.net, 2002.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
13 # (c) GNF, Genomics Institute of the Novartis Research Foundation, 2002.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
14 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
15 # You may distribute this module under the same terms as perl itself.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
16 # Refer to the Perl Artistic License (see the license accompanying this
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
17 # software package, or see http://www.perl.com/language/misc/Artistic.html)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
18 # for the terms under which you may use, modify, and redistribute this module.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
19 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
20 # THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
21 # WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
22 # MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
23 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
24
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
25 # POD documentation - main docs before the code
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
26
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
27 =head1 NAME
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
28
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
29 Bio::Factory::SequenceProcessorI - Interface for chained sequence
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
30 processing algorithms
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
31
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
32 =head1 SYNOPSIS
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
33
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
34 use Bio::SeqIO;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
35 use MySeqProcessor; # is-a Bio::Factory::SequenceProcessorI
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
36
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
37 # obtain your source stream, e.g., an EMBL file
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
38 my $seqin = Bio::SeqIO->new(-fh => \*STDIN, -format => 'embl');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
39 # create your processor (it must implement this interface)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
40 my $seqalgo = MySeqProcessor->new();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
41 # chain together
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
42 $seqalgo->source_stream($seqin);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
43 # you could create more processors and chain them one after another
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
44 # ...
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
45 # finally, the last link in the chain is your SeqIO stream
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
46 my $seqpipe = $seqalgo;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
47
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
48 # once you've established the pipeline, proceed as if you had a
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
49 # single SeqIO stream
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
50 while(my $seq = $seqpipe->next_seq()) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
51 # ... do something ...
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
52 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
53
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
54 =head1 DESCRIPTION
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
55
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
56 This defines an interface that allows seamless chaining of sequence
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
57 processing algorithms encapsulated in modules while retaining the
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
58 overall Bio::SeqIO interface at the end of the pipeline.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
59
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
60 This is especially useful if you want an easily configurable
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
61 processing pipeline of re-usable algorithms as building blocks instead
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
62 of (hard-)coding the whole algorithm in a single script.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
63
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
64 There are literally no restrictions as to what an individual module
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
65 can do with a sequence object it obtains from the source stream before
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
66 it makes it available through its own next_seq() method. It can
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
67 manipulate the sequence object, but otherwise keep it intact, but it
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
68 can also create any number of new sequence objects from it, or it can
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
69 discard some, or any combination thereof. The only requirement is that
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
70 its next_seq() method return Bio::PrimarySeqI compliant objects. In
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
71 order to play nice, if a processor creates new objects it should try
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
72 to use the same sequence factory that the source stream uses, but this
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
73 is not strongly mandated.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
74
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
75 =head1 FEEDBACK
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
76
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
77 =head2 Mailing Lists
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
78
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
79 User feedback is an integral part of the evolution of this and other
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
80 Bioperl modules. Send your comments and suggestions preferably to
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
81 the Bioperl mailing list. Your participation is much appreciated.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
82
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
83 bioperl-l@bioperl.org - General discussion
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
84 http://bioperl.org/MailList.shtml - About the mailing lists
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
85
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
86 =head2 Reporting Bugs
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
87
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
88 Report bugs to the Bioperl bug tracking system to help us keep track
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
89 of the bugs and their resolution. Bug reports can be submitted via
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
90 email or the web:
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
91
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
92 bioperl-bugs@bioperl.org
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
93 http://bioperl.org/bioperl-bugs/
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
94
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
95 =head1 AUTHOR - Hilmar Lapp
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
96
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
97 Email hlapp at gmx.net
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
98
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
99 Describe contact details here
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
100
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
101 =head1 CONTRIBUTORS
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
102
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
103 Additional contributors names and emails here
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
104
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
105 =head1 APPENDIX
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
106
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
107 The rest of the documentation details each of the object methods.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
108 Internal methods are usually preceded with a _
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
109
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
110 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
111
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
112
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
113 # Let the code begin...
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
114
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
115
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
116 package Bio::Factory::SequenceProcessorI;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
117 use vars qw(@ISA);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
118 use strict;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
119 use Carp;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
120 use Bio::Root::RootI;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
121 use Bio::Factory::SequenceStreamI;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
122
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
123 @ISA = qw( Bio::Factory::SequenceStreamI );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
124
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
125 =head2 source_stream
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
126
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
127 Title : source_stream
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
128 Usage : $obj->source_stream($newval)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
129 Function: Get/set the source sequence stream for this sequence
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
130 processor.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
131
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
132 An implementation is not required to allow set, but will
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
133 usually do so.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
134
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
135 Example :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
136 Returns : A Bio::Factory::SequenceStreamI compliant object
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
137 Args : on set, new value (a Bio::Factory::SequenceStreamI compliant
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
138 object)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
139
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
140
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
141 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
142
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
143 sub source_stream{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
144 shift->throw_not_implemented();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
145 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
146
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
147 =head1 Bio::Factory::SequenceStreamI methods
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
148
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
149 The requirement to implement these methods is inherited from
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
150 L<Bio::Factory::SequenceStreamI>. An implementation may not
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
151 necessarily have to implement all methods in a meaningful way. Which
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
152 methods will be necessary very much depends on the context in which
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
153 an implementation of this interface is used. E.g., if it is only used
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
154 for post-processing sequences read from a SeqIO stream, write_seq()
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
155 will not be used and hence does not need to be implemented in a
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
156 meaningful way (it may in fact even throw an exception).
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
157
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
158 Also, since an implementor will already receive built objects from a
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
159 sequence stream, sequence_factory() may or may not be relevant,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
160 depending on whether the processing method does or does not involve
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
161 creating new objects.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
162
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
163 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
164
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
165 =head2 next_seq
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
166
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
167 Title : next_seq
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
168 Usage : $seq = stream->next_seq
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
169 Function: Reads the next sequence object from the stream and returns it.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
170
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
171 In the case of a non-recoverable situation an exception
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
172 will be thrown. Do not assume that you can resume parsing
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
173 the same stream after catching the exception. Note that you
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
174 can always turn recoverable errors into exceptions by
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
175 calling $stream->verbose(2).
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
176
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
177 Returns : a Bio::Seq sequence object
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
178 Args : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
179
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
180 See L<Bio::Root::RootI>
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
181
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
182 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
183
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
184 =head2 write_seq
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
185
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
186 Title : write_seq
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
187 Usage : $stream->write_seq($seq)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
188 Function: writes the $seq object into the stream
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
189 Returns : 1 for success and 0 for error
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
190 Args : Bio::Seq object
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
191
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
192 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
193
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
194 =head2 sequence_factory
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
195
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
196 Title : sequence_factory
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
197 Usage : $seqio->sequence_factory($seqfactory)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
198 Function: Get the Bio::Factory::SequenceFactoryI
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
199 Returns : Bio::Factory::SequenceFactoryI
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
200 Args : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
201
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
202
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
203 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
204
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
205 1;