annotate variant_effect_predictor/Bio/SeqIO.pm @ 3:d30fa12e4cc5 default tip

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