annotate variant_effect_predictor/Bio/SeqIO.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
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2 # $Id: SeqIO.pm,v 1.59.2.4 2003/09/14 19:16:53 jason Exp $
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
3 #
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
4 # BioPerl module for Bio::SeqIO
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
5 #
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
6 # Cared for by Ewan Birney <birney@sanger.ac.uk>
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
7 # and Lincoln Stein <lstein@cshl.org>
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
8 #
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
9 # Copyright Ewan Birney
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
10 #
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
11 # You may distribute this module under the same terms as perl itself
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
12 #
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
13 # _history
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
14 # October 18, 1999 Largely rewritten by Lincoln Stein
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
15
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
16 # POD documentation - main docs before the code
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
17
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
18 =head1 NAME
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
19
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
20 Bio::SeqIO - Handler for SeqIO Formats
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
21
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
22 =head1 SYNOPSIS
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
23
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
24 use Bio::SeqIO;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
25
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
26 $in = Bio::SeqIO->new(-file => "inputfilename" , '-format' => 'Fasta');
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
27 $out = Bio::SeqIO->new(-file => ">outputfilename" , '-format' => 'EMBL');
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
28 # note: we quote -format to keep older Perls from complaining.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
29
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
30 while ( my $seq = $in->next_seq() ) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
31 $out->write_seq($seq);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
32 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
33
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
34 Now, to actually get at the sequence object, use the standard Bio::Seq
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
35 methods (look at L<Bio::Seq> if you don't know what they are)
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
36
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
37 use Bio::SeqIO;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
38
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
39 $in = Bio::SeqIO->new(-file => "inputfilename" , '-format' => 'genbank');
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
40
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
41 while ( my $seq = $in->next_seq() ) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
42 print "Sequence ",$seq->id," first 10 bases ",$seq->subseq(1,10),"\n";
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
43 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
44
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
45
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
46 The SeqIO system does have a filehandle binding. Most people find this
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
47 a little confusing, but it does mean you write the world's smallest
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
48 reformatter
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
49
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
50 use Bio::SeqIO;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
51
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
52 $in = Bio::SeqIO->newFh(-file => "inputfilename" , '-format' => 'Fasta');
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
53 $out = Bio::SeqIO->newFh('-format' => 'EMBL');
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
54
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
55 # World's shortest Fasta<->EMBL format converter:
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
56 print $out $_ while <$in>;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
57
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
58
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
59 =head1 DESCRIPTION
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
60
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
61 Bio::SeqIO is a handler module for the formats in the SeqIO set (eg,
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
62 Bio::SeqIO::fasta). It is the officially sanctioned way of getting at
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
63 the format objects, which most people should use.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
64
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
65 The Bio::SeqIO system can be thought of like biological file handles.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
66 They are attached to filehandles with smart formatting rules (eg,
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
67 genbank format, or EMBL format, or binary trace file format) and
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
68 can either read or write sequence objects (Bio::Seq objects, or
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
69 more correctly, Bio::SeqI implementing objects, of which Bio::Seq is
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
70 one such object). If you want to know what to do with a Bio::Seq
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
71 object, read L<Bio::Seq>.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
72
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
73 The idea is that you request a stream object for a particular format.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
74 All the stream objects have a notion of an internal file that is read
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
75 from or written to. A particular SeqIO object instance is configured
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
76 for either input or output. A specific example of a stream object is
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
77 the Bio::SeqIO::fasta object.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
78
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
79 Each stream object has functions
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
80
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
81 $stream->next_seq();
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
82
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
83 and
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
84
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
85 $stream->write_seq($seq);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
86
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
87 As an added bonus, you can recover a filehandle that is tied to the
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
88 SeqIO object, allowing you to use the standard E<lt>E<gt> and print operations
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
89 to read and write sequence objects:
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
90
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
91 use Bio::SeqIO;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
92
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
93 $stream = Bio::SeqIO->newFh(-format => 'Fasta'); # read from standard input
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
94
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
95 while ( $seq = <$stream> ) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
96 # do something with $seq
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
97 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
98
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
99 and
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
100
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
101 print $stream $seq; # when stream is in output mode
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
102
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
103 This makes the simplest ever reformatter
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
104
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
105 #!/usr/local/bin/perl
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
106
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
107 $format1 = shift;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
108 $format2 = shift || die "Usage: reformat format1 format2 < input > output";
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
109
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
110 use Bio::SeqIO;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
111
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
112 $in = Bio::SeqIO->newFh(-format => $format1 );
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
113 $out = Bio::SeqIO->newFh(-format => $format2 );
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
114 #note: you might want to quote -format to keep older perl's from complaining.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
115
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
116 print $out $_ while <$in>;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
117
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
118
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
119 =head1 CONSTRUCTORS
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
120
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
121 =head2 Bio::SeqIO-E<gt>new()
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
122
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
123 $seqIO = Bio::SeqIO->new(-file => 'filename', -format=>$format);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
124 $seqIO = Bio::SeqIO->new(-fh => \*FILEHANDLE, -format=>$format);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
125 $seqIO = Bio::SeqIO->new(-format => $format);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
126
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
127 The new() class method constructs a new Bio::SeqIO object. The
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
128 returned object can be used to retrieve or print Seq objects. new()
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
129 accepts the following parameters:
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
130
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
131 =over 4
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
132
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
133 =item -file
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
134
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
135 A file path to be opened for reading or writing. The usual Perl
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
136 conventions apply:
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
137
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
138 'file' # open file for reading
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
139 '>file' # open file for writing
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
140 '>>file' # open file for appending
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
141 '+<file' # open file read/write
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
142 'command |' # open a pipe from the command
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
143 '| command' # open a pipe to the command
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
144
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
145 =item -fh
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
146
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
147 You may provide new() with a previously-opened filehandle. For
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
148 example, to read from STDIN:
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
149
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
150 $seqIO = Bio::SeqIO->new(-fh => \*STDIN);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
151
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
152 Note that you must pass filehandles as references to globs.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
153
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
154 If neither a filehandle nor a filename is specified, then the module
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
155 will read from the @ARGV array or STDIN, using the familiar E<lt>E<gt>
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
156 semantics.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
157
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
158 A string filehandle is handy if you want to modify the output in the
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
159 memory, before printing it out. The following program reads in EMBL
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
160 formatted entries from a file and prints them out in fasta format with
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
161 some HTML tags:
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
162
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
163 use Bio::SeqIO;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
164 use IO::String;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
165 my $in = Bio::SeqIO->new('-file' => "emblfile" ,
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
166 '-format' => 'EMBL');
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
167 while ( my $seq = $in->next_seq() ) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
168 # the output handle is reset for every file
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
169 my $stringio = IO::String->new($string);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
170 my $out = Bio::SeqIO->new('-fh' => $stringio,
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
171 '-format' => 'fasta');
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
172 # output goes into $string
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
173 $out->write_seq($seq);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
174 # modify $string
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
175 $string =~ s|(>)(\w+)|$1<font color="Red">$2</font>|g;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
176 # print into STDOUT
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
177 print $string;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
178 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
179
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
180 =item -format
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
181
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
182 Specify the format of the file. Supported formats include:
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
183
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
184 Fasta FASTA format
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
185 EMBL EMBL format
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
186 GenBank GenBank format
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
187 swiss Swissprot format
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
188 PIR Protein Information Resource format
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
189 GCG GCG format
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
190 raw Raw format (one sequence per line, no ID)
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
191 ace ACeDB sequence format
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
192 game GAME XML format
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
193 phd phred output
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
194 qual Quality values (get a sequence of quality scores)
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
195 Fastq Fastq format
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
196 SCF SCF tracefile format
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
197 ABI ABI tracefile format
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
198 ALF ALF tracefile format
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
199 CTF CTF tracefile format
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
200 ZTR ZTR tracefile format
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
201 PLN Staden plain tracefile format
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
202 EXP Staden tagged experiment tracefile format
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
203
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
204 If no format is specified and a filename is given then the module
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
205 will attempt to deduce the format from the filename suffix. If this
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
206 is unsuccessful then Fasta format is assumed.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
207
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
208 The format name is case insensitive. 'FASTA', 'Fasta' and 'fasta' are
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
209 all valid suffixes.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
210
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
211 Currently, the tracefile formats (except for SCF) require installation
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
212 of the external Staden "io_lib" package, as well as the
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
213 Bio::SeqIO::staden::read package available from the bioperl-ext
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
214 repository.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
215
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
216 =item -flush
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
217
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
218 By default, all files (or filehandles) opened for writing sequences
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
219 will be flushed after each write_seq() (making the file immediately
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
220 usable). If you don't need this facility and would like to marginally
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
221 improve the efficiency of writing multiple sequences to the same file
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
222 (or filehandle), pass the -flush option '0' or any other value that
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
223 evaluates as defined but false:
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
224
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
225 my $gb = new Bio::SeqIO -file => "<gball.gbk",
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
226 -format => "gb";
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
227 my $fa = new Bio::SeqIO -file => ">gball.fa",
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
228 -format => "fasta",
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
229 -flush => 0; # go as fast as we can!
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
230 while($seq = $gb->next_seq) { $fa->write_seq($seq) }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
231
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
232
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
233 =back
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
234
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
235 =head2 Bio::SeqIO-E<gt>newFh()
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
236
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
237 $fh = Bio::SeqIO->newFh(-fh => \*FILEHANDLE, -format=>$format);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
238 $fh = Bio::SeqIO->newFh(-format => $format);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
239 # etc.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
240
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
241 This constructor behaves like new(), but returns a tied filehandle
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
242 rather than a Bio::SeqIO object. You can read sequences from this
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
243 object using the familiar E<lt>E<gt> operator, and write to it using
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
244 print(). The usual array and $_ semantics work. For example, you can
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
245 read all sequence objects into an array like this:
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
246
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
247 @sequences = <$fh>;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
248
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
249 Other operations, such as read(), sysread(), write(), close(), and printf()
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
250 are not supported.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
251
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
252 =head1 OBJECT METHODS
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
253
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
254 See below for more detailed summaries. The main methods are:
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
255
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
256 =head2 $sequence = $seqIO-E<gt>next_seq()
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
257
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
258 Fetch the next sequence from the stream.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
259
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
260 =head2 $seqIO-E<gt>write_seq($sequence [,$another_sequence,...])
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
261
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
262 Write the specified sequence(s) to the stream.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
263
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
264 =head2 TIEHANDLE(), READLINE(), PRINT()
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
265
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
266 These provide the tie interface. See L<perltie> for more details.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
267
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
268 =head1 FEEDBACK
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
269
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
270 =head2 Mailing Lists
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
271
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
272 User feedback is an integral part of the evolution of this
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
273 and other Bioperl modules. Send your comments and suggestions preferably
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
274 to one of the Bioperl mailing lists.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
275
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
276 Your participation is much appreciated.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
277
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
278 bioperl-l@bioperl.org - General discussion
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
279 http://bioperl.org/MailList.shtml - About the mailing lists
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
280
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
281 =head2 Reporting Bugs
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
282
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
283 Report bugs to the Bioperl bug tracking system to help us keep track
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
284 the bugs and their resolution.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
285 Bug reports can be submitted via email or the web:
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
286
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
287 bioperl-bugs@bioperl.org
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
288 http://bugzilla.bioperl.org/
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
289
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
290 =head1 AUTHOR - Ewan Birney, Lincoln Stein
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
291
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
292 Email birney@ebi.ac.uk
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
293
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
294 =head1 APPENDIX
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
295
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
296 The rest of the documentation details each of the object
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
297 methods. Internal methods are usually preceded with a _
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
298
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
299 =cut
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
300
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
301 #' Let the code begin...
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
302
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
303 package Bio::SeqIO;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
304
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
305 use strict;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
306 use vars qw(@ISA);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
307
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
308 use Bio::Root::Root;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
309 use Bio::Root::IO;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
310 use Bio::Factory::SequenceStreamI;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
311 use Bio::Factory::FTLocationFactory;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
312 use Bio::Seq::SeqBuilder;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
313 use Symbol();
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
314
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
315 @ISA = qw(Bio::Root::Root Bio::Root::IO Bio::Factory::SequenceStreamI);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
316
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
317 sub BEGIN {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
318 eval { require Bio::SeqIO::staden::read; };
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
319 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
320
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
321 my %valid_alphabet_cache;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
322
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
323 =head2 new
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
324
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
325 Title : new
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
326 Usage : $stream = Bio::SeqIO->new(-file => $filename, -format => 'Format')
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
327 Function: Returns a new seqstream
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
328 Returns : A Bio::SeqIO stream initialised with the appropriate format
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
329 Args : Named parameters:
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
330 -file => $filename
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
331 -fh => filehandle to attach to
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
332 -format => format
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
333
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
334 Additional arguments may be used to set factories and
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
335 builders involved in the sequence object creation. None of
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
336 these must be provided, they all have reasonable defaults.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
337 -seqfactory the L<Bio::Factory::SequenceFactoryI> object
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
338 -locfactory the L<Bio::Factory::LocationFactoryI> object
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
339 -objbuilder the L<Bio::Factory::ObjectBuilderI> object
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
340
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
341 See L<Bio::SeqIO::Handler>
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
342
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
343 =cut
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
344
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
345 my $entry = 0;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
346
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
347 sub new {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
348 my ($caller,@args) = @_;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
349 my $class = ref($caller) || $caller;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
350
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
351 # or do we want to call SUPER on an object if $caller is an
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
352 # object?
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
353 if( $class =~ /Bio::SeqIO::(\S+)/ ) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
354 my ($self) = $class->SUPER::new(@args);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
355 $self->_initialize(@args);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
356 return $self;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
357 } else {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
358
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
359 my %param = @args;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
360 @param{ map { lc $_ } keys %param } = values %param; # lowercase keys
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
361 my $format = $param{'-format'} ||
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
362 $class->_guess_format( $param{-file} || $ARGV[0] ) ||
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
363 'fasta';
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
364 $format = "\L$format"; # normalize capitalization to lower case
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
365
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
366 # normalize capitalization
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
367 return undef unless( $class->_load_format_module($format) );
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
368 return "Bio::SeqIO::$format"->new(@args);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
369 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
370 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
371
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
372 =head2 newFh
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
373
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
374 Title : newFh
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
375 Usage : $fh = Bio::SeqIO->newFh(-file=>$filename,-format=>'Format')
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
376 Function: does a new() followed by an fh()
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
377 Example : $fh = Bio::SeqIO->newFh(-file=>$filename,-format=>'Format')
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
378 $sequence = <$fh>; # read a sequence object
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
379 print $fh $sequence; # write a sequence object
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
380 Returns : filehandle tied to the Bio::SeqIO::Fh class
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
381 Args :
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
382
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
383 See L<Bio::SeqIO::Fh>
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
384
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
385 =cut
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
386
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
387 sub newFh {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
388 my $class = shift;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
389 return unless my $self = $class->new(@_);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
390 return $self->fh;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
391 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
392
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
393 =head2 fh
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
394
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
395 Title : fh
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
396 Usage : $obj->fh
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
397 Function:
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
398 Example : $fh = $obj->fh; # make a tied filehandle
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
399 $sequence = <$fh>; # read a sequence object
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
400 print $fh $sequence; # write a sequence object
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
401 Returns : filehandle tied to Bio::SeqIO class
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
402 Args : none
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
403
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
404 =cut
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
405
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
406
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
407 sub fh {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
408 my $self = shift;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
409 my $class = ref($self) || $self;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
410 my $s = Symbol::gensym;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
411 tie $$s,$class,$self;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
412 return $s;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
413 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
414
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
415 # _initialize is chained for all SeqIO classes
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
416
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
417 sub _initialize {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
418 my($self, @args) = @_;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
419
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
420 # flush is initialized by the Root::IO init
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
421
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
422 my ($seqfact,$locfact,$objbuilder) =
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
423 $self->_rearrange([qw(SEQFACTORY
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
424 LOCFACTORY
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
425 OBJBUILDER)
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
426 ], @args);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
427
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
428 $locfact = Bio::Factory::FTLocationFactory->new(-verbose => $self->verbose) if ! $locfact;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
429 $objbuilder = Bio::Seq::SeqBuilder->new(-verbose => $self->verbose) unless $objbuilder;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
430 $self->sequence_builder($objbuilder);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
431 $self->location_factory($locfact);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
432 # note that this should come last because it propagates the sequence
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
433 # factory to the sequence builder
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
434 $seqfact && $self->sequence_factory($seqfact);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
435
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
436 # initialize the IO part
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
437 $self->_initialize_io(@args);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
438 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
439
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
440 =head2 next_seq
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
441
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
442 Title : next_seq
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
443 Usage : $seq = stream->next_seq
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
444 Function: Reads the next sequence object from the stream and returns it.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
445
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
446 Certain driver modules may encounter entries in the stream that
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
447 are either misformatted or that use syntax not yet understood
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
448 by the driver. If such an incident is recoverable, e.g., by
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
449 dismissing a feature of a feature table or some other non-mandatory
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
450 part of an entry, the driver will issue a warning. In the case
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
451 of a non-recoverable situation an exception will be thrown.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
452 Do not assume that you can resume parsing the same stream after
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
453 catching the exception. Note that you can always turn recoverable
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
454 errors into exceptions by calling $stream->verbose(2).
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
455 Returns : a Bio::Seq sequence object
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
456 Args : none
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
457
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
458 See L<Bio::Root::RootI>, L<Bio::Factory::SeqStreamI>, L<Bio::Seq>
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
459
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
460 =cut
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
461
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
462 sub next_seq {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
463 my ($self, $seq) = @_;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
464 $self->throw("Sorry, you cannot read from a generic Bio::SeqIO object.");
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
465 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
466
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
467 =head2 write_seq
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
468
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
469 Title : write_seq
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
470 Usage : $stream->write_seq($seq)
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
471 Function: writes the $seq object into the stream
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
472 Returns : 1 for success and 0 for error
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
473 Args : Bio::Seq object
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
474
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
475 =cut
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
476
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
477 sub write_seq {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
478 my ($self, $seq) = @_;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
479 $self->throw("Sorry, you cannot write to a generic Bio::SeqIO object.");
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
480 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
481
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
482
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
483 =head2 alphabet
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
484
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
485 Title : alphabet
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
486 Usage : $self->alphabet($newval)
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
487 Function: Set/get the molecule type for the Seq objects to be created.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
488 Example : $seqio->alphabet('protein')
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
489 Returns : value of alphabet: 'dna', 'rna', or 'protein'
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
490 Args : newvalue (optional)
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
491 Throws : Exception if the argument is not one of 'dna', 'rna', or 'protein'
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
492
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
493 =cut
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
494
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
495 sub alphabet {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
496 my ($self, $value) = @_;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
497
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
498 if ( defined $value) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
499 $value = lc $value;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
500 unless ($valid_alphabet_cache{$value}) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
501 # instead of hard-coding the allowed values once more, we check by
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
502 # creating a dummy sequence object
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
503 eval {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
504 require Bio::PrimarySeq;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
505 my $seq = Bio::PrimarySeq->new('-verbose' => $self->verbose,
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
506 '-alphabet' => $value);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
507
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
508 };
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
509 if ($@) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
510 $self->throw("Invalid alphabet: $value\n. See Bio::PrimarySeq for allowed values.");
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
511 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
512 $valid_alphabet_cache{$value} = 1;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
513 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
514 $self->{'alphabet'} = $value;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
515 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
516 return $self->{'alphabet'};
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
517 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
518
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
519 =head2 _load_format_module
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
520
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
521 Title : _load_format_module
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
522 Usage : *INTERNAL SeqIO stuff*
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
523 Function: Loads up (like use) a module at run time on demand
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
524 Example :
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
525 Returns :
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
526 Args :
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
527
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
528 =cut
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
529
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
530 sub _load_format_module {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
531 my ($self, $format) = @_;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
532 my $module = "Bio::SeqIO::" . $format;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
533 my $ok;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
534
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
535 eval {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
536 $ok = $self->_load_module($module);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
537 };
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
538 if ( $@ ) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
539 print STDERR <<END;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
540 $self: $format cannot be found
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
541 Exception $@
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
542 For more information about the SeqIO system please see the SeqIO docs.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
543 This includes ways of checking for formats at compile time, not run time
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
544 END
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
545 ;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
546 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
547 return $ok;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
548 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
549
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
550 =head2 _concatenate_lines
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
551
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
552 Title : _concatenate_lines
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
553 Usage : $s = _concatenate_lines($line, $continuation_line)
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
554 Function: Private. Concatenates two strings assuming that the second stems
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
555 from a continuation line of the first. Adds a space between both
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
556 unless the first ends with a dash.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
557
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
558 Takes care of either arg being empty.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
559 Example :
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
560 Returns : A string.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
561 Args :
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
562
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
563 =cut
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
564
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
565 sub _concatenate_lines {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
566 my ($self, $s1, $s2) = @_;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
567
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
568 $s1 .= " " if($s1 && ($s1 !~ /-$/) && $s2);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
569 return ($s1 ? $s1 : "") . ($s2 ? $s2 : "");
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
570 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
571
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
572 =head2 _filehandle
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
573
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
574 Title : _filehandle
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
575 Usage : $obj->_filehandle($newval)
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
576 Function: This method is deprecated. Call _fh() instead.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
577 Example :
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
578 Returns : value of _filehandle
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
579 Args : newvalue (optional)
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
580
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
581
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
582 =cut
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
583
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
584 sub _filehandle {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
585 my ($self,@args) = @_;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
586 return $self->_fh(@args);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
587 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
588
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
589 =head2 _guess_format
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
590
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
591 Title : _guess_format
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
592 Usage : $obj->_guess_format($filename)
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
593 Function: guess format based on file suffix
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
594 Example :
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
595 Returns : guessed format of filename (lower case)
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
596 Args :
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
597 Notes : formats that _filehandle() will guess include fasta,
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
598 genbank, scf, pir, embl, raw, gcg, ace, bsml, swissprot,
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
599 fastq and phd/phred
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
600
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
601 =cut
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
602
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
603 sub _guess_format {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
604 my $class = shift;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
605 return unless $_ = shift;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
606 return 'fasta' if /\.(fasta|fast|seq|fa|fsa|nt|aa)$/i;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
607 return 'genbank' if /\.(gb|gbank|genbank|gbk|gbs)$/i;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
608 return 'scf' if /\.scf$/i;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
609 return 'scf' if /\.scf$/i;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
610 return 'abi' if /\.abi$/i;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
611 return 'alf' if /\.alf$/i;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
612 return 'ctf' if /\.ctf$/i;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
613 return 'ztr' if /\.ztr$/i;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
614 return 'pln' if /\.pln$/i;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
615 return 'exp' if /\.exp$/i;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
616 return 'pir' if /\.pir$/i;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
617 return 'embl' if /\.(embl|ebl|emb|dat)$/i;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
618 return 'raw' if /\.(txt)$/i;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
619 return 'gcg' if /\.gcg$/i;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
620 return 'ace' if /\.ace$/i;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
621 return 'bsml' if /\.(bsm|bsml)$/i;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
622 return 'swiss' if /\.(swiss|sp)$/i;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
623 return 'phd' if /\.(phd|phred)$/i;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
624 return 'fastq' if /\.fastq$/i;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
625 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
626
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
627 sub DESTROY {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
628 my $self = shift;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
629
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
630 $self->close();
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
631 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
632
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
633 sub TIEHANDLE {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
634 my ($class,$val) = @_;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
635 return bless {'seqio' => $val}, $class;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
636 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
637
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
638 sub READLINE {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
639 my $self = shift;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
640 return $self->{'seqio'}->next_seq() unless wantarray;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
641 my (@list, $obj);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
642 push @list, $obj while $obj = $self->{'seqio'}->next_seq();
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
643 return @list;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
644 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
645
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
646 sub PRINT {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
647 my $self = shift;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
648 $self->{'seqio'}->write_seq(@_);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
649 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
650
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
651 =head2 sequence_factory
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
652
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
653 Title : sequence_factory
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
654 Usage : $seqio->sequence_factory($seqfactory)
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
655 Function: Get/Set the Bio::Factory::SequenceFactoryI
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
656 Returns : Bio::Factory::SequenceFactoryI
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
657 Args : [optional] Bio::Factory::SequenceFactoryI
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
658
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
659
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
660 =cut
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
661
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
662 sub sequence_factory{
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
663 my ($self,$obj) = @_;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
664 if( defined $obj ) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
665 if( ! ref($obj) || ! $obj->isa('Bio::Factory::SequenceFactoryI') ) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
666 $self->throw("Must provide a valid Bio::Factory::SequenceFactoryI object to ".ref($self)."::sequence_factory()");
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
667 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
668 $self->{'_seqio_seqfactory'} = $obj;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
669 my $builder = $self->sequence_builder();
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
670 if($builder && $builder->can('sequence_factory') &&
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
671 (! $builder->sequence_factory())) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
672 $builder->sequence_factory($obj);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
673 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
674 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
675 $self->{'_seqio_seqfactory'};
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
676 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
677
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
678 =head2 object_factory
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
679
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
680 Title : object_factory
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
681 Usage : $obj->object_factory($newval)
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
682 Function: This is an alias to sequence_factory with a more generic name.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
683 Example :
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
684 Returns : value of object_factory (a scalar)
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
685 Args : on set, new value (a scalar or undef, optional)
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
686
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
687
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
688 =cut
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
689
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
690 sub object_factory{
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
691 return shift->sequence_factory(@_);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
692 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
693
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
694 =head2 sequence_builder
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
695
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
696 Title : sequence_builder
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
697 Usage : $seqio->sequence_builder($seqfactory)
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
698 Function: Get/Set the L<Bio::Factory::ObjectBuilderI> used to build sequence
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
699 objects.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
700
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
701 If you do not set the sequence object builder yourself, it
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
702 will in fact be an instance of L<Bio::Seq::SeqBuilder>, and
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
703 you may use all methods documented there to configure it.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
704
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
705 Returns : a L<Bio::Factory::ObjectBuilderI> compliant object
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
706 Args : [optional] a L<Bio::Factory::ObjectBuilderI> compliant object
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
707
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
708
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
709 =cut
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
710
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
711 sub sequence_builder{
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
712 my ($self,$obj) = @_;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
713 if( defined $obj ) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
714 if( ! ref($obj) || ! $obj->isa('Bio::Factory::ObjectBuilderI') ) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
715 $self->throw("Must provide a valid Bio::Factory::ObjectBuilderI object to ".ref($self)."::sequence_builder()");
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
716 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
717 $self->{'_object_builder'} = $obj;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
718 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
719 $self->{'_object_builder'};
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
720 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
721
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
722 =head2 location_factory
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
723
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
724 Title : location_factory
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
725 Usage : $seqio->location_factory($locfactory)
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
726 Function: Get/Set the Bio::Factory::LocationFactoryI object to be used for
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
727 location string parsing
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
728 Returns : a L<Bio::Factory::LocationFactoryI> implementing object
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
729 Args : [optional] on set, a L<Bio::Factory::LocationFactoryI> implementing
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
730 object.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
731
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
732
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
733 =cut
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
734
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
735 sub location_factory{
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
736 my ($self,$obj) = @_;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
737 if( defined $obj ) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
738 if( ! ref($obj) || ! $obj->isa('Bio::Factory::LocationFactoryI') ) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
739 $self->throw("Must provide a valid Bio::Factory::LocationFactoryI".
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
740 " object to ".ref($self)."->location_factory()");
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
741 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
742 $self->{'_seqio_locfactory'} = $obj;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
743 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
744 $self->{'_seqio_locfactory'};
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
745 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
746
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
747 1;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
748