annotate variant_effect_predictor/Bio/AlignIO.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 # $Id: AlignIO.pm,v 1.28 2002/10/22 07:38:23 lapp Exp $
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
3 # BioPerl module for Bio::AlignIO
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
4 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
5 # based on the Bio::SeqIO module
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
6 # 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 Peter Schattner
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 SeqIO largely rewritten by Lincoln Stein
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
15 # September, 2000 AlignIO written by Peter Schattner
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
16
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
17 # POD documentation - main docs before the code
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
18
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
19 =head1 NAME
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
20
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
21 Bio::AlignIO - Handler for AlignIO Formats
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
22
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
23 =head1 SYNOPSIS
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
24
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
25 use Bio::AlignIO;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
26
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
27 $inputfilename = "testaln.fasta";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
28 $in = Bio::AlignIO->new(-file => $inputfilename ,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
29 '-format' => 'fasta');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
30 $out = Bio::AlignIO->new(-file => ">out.aln.pfam" ,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
31 '-format' => 'pfam');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
32 # note: we quote -format to keep older perl's from complaining.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
33
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
34 while ( my $aln = $in->next_aln() ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
35 $out->write_aln($aln);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
36 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
37
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
38 or
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
39
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
40 use Bio::AlignIO;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
41
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
42 $inputfilename = "testaln.fasta";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
43 $in = Bio::AlignIO->newFh(-file => $inputfilename ,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
44 '-format' => 'fasta');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
45 $out = Bio::AlignIO->newFh('-format' => 'pfam');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
46
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
47 # World's shortest Fasta<->pfam format converter:
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
48 print $out $_ while <$in>;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
49
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
50 =head1 DESCRIPTION
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
51
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
52 Bio::AlignIO is a handler module for the formats in the AlignIO set
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
53 (eg, Bio::AlignIO::fasta). It is the officially sanctioned way of
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
54 getting at the alignment objects, which most people should use. The
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
55 resulting alignment is a Bio::Align::AlignI compliant object. See
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
56 L<Bio::Align::AlignI> for more information.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
57
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
58 The idea is that you request a stream object for a particular format.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
59 All the stream objects have a notion of an internal file that is read
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
60 from or written to. A particular AlignIO object instance is configured
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
61 for either input or output. A specific example of a stream object is
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
62 the Bio::AlignIO::fasta object.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
63
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
64 Each stream object has functions
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
65
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
66 $stream->next_aln();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
67
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
68 and
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
69
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
70 $stream->write_aln($aln);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
71
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
72 also
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
73
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
74 $stream->type() # returns 'INPUT' or 'OUTPUT'
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
75
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
76 As an added bonus, you can recover a filehandle that is tied to the
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
77 AlignIO object, allowing you to use the standard E<lt>E<gt> and print
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
78 operations to read and write sequence objects:
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
79
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
80 use Bio::AlignIO;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
81
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
82 # read from standard input
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
83 $stream = Bio::AlignIO->newFh(-format => 'Fasta');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
84
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
85 while ( $aln = <$stream> ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
86 # do something with $aln
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
87 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
88
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
89 and
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
90
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
91 print $stream $aln; # when stream is in output mode
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
92
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
93 This makes the simplest ever reformatter
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
94
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
95 #!/usr/local/bin/perl
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
96
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
97 $format1 = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
98 $format2 = shift ||
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
99 die "Usage: reformat format1 format2 < input > output";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
100
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
101 use Bio::AlignIO;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
102
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
103 $in = Bio::AlignIO->newFh(-format => $format1 );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
104 $out = Bio::AlignIO->newFh(-format => $format2 );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
105 # note: you might want to quote -format to keep
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
106 # older perl's from complaining.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
107
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
108 print $out $_ while <$in>;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
109
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
110 AlignIO.pm is patterned on the module SeqIO.pm and shares most the
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
111 SeqIO.pm features. One significant difference currently is that
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
112 AlignIO.pm usually handles IO for only a single alignment at a time
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
113 (SeqIO.pm handles IO for multiple sequences in a single stream.) The
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
114 principal reason for this is that whereas simultaneously handling
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
115 multiple sequences is a common requirement, simultaneous handling of
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
116 multiple alignments is not. The only current exception is format
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
117 "bl2seq" which parses results of the Blast bl2seq program and which
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
118 may produce several alignment pairs. This set of alignment pairs can
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
119 be read using multiple calls to next_aln.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
120
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
121 Capability for IO for more than one multiple alignment - other than
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
122 for bl2seq format -(which may be of use for certain applications such
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
123 as IO for Pfam libraries) may be included in the future. For this
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
124 reason we keep the name "next_aln()" for the alignment input routine,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
125 even though in most cases only one alignment is read (or written) at a
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
126 time and the name "read_aln()" might be more appropriate.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
127
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
128 =head1 CONSTRUCTORS
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
129
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
130 =head2 Bio::AlignIO-E<gt>new()
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
131
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
132 $seqIO = Bio::AlignIO->new(-file => 'filename', -format=>$format);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
133 $seqIO = Bio::AlignIO->new(-fh => \*FILEHANDLE, -format=>$format);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
134 $seqIO = Bio::AlignIO->new(-format => $format);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
135
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
136 The new() class method constructs a new Bio::AlignIO object. The
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
137 returned object can be used to retrieve or print BioAlign
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
138 objects. new() accepts the following parameters:
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
139
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
140 =over 4
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
141
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
142 =item -file
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
143
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
144 A file path to be opened for reading or writing. The usual Perl
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
145 conventions apply:
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
146
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
147 'file' # open file for reading
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
148 '>file' # open file for writing
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
149 '>>file' # open file for appending
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
150 '+<file' # open file read/write
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
151 'command |' # open a pipe from the command
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
152 '| command' # open a pipe to the command
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
153
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
154 =item -fh
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
155
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
156 You may provide new() with a previously-opened filehandle. For
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
157 example, to read from STDIN:
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
158
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
159 $seqIO = Bio::AlignIO->new(-fh => \*STDIN);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
160
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
161 Note that you must pass filehandles as references to globs.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
162
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
163 If neither a filehandle nor a filename is specified, then the module
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
164 will read from the @ARGV array or STDIN, using the familiar E<lt>E<gt>
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
165 semantics.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
166
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
167 =item -format
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
168
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
169 Specify the format of the file. Supported formats include:
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
170
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
171 fasta FASTA format
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
172 selex selex (hmmer) format
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
173 stockholm stockholm format
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
174 prodom prodom (protein domain) format
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
175 clustalw clustalw (.aln) format
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
176 msf msf (GCG) format
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
177 mase mase (seaview) format
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
178 bl2seq Bl2seq Blast output
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
179 nexus Swofford et al NEXUS format
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
180 pfam Pfam sequence alignment format
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
181 phylip Felsenstein's PHYLIP format
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
182 emboss EMBOSS water and needle format
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
183 mega MEGA format
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
184 meme MEME format
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
185 psi PSI-BLAST format
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
186
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
187 Currently only those formats which were implemented in L<Bio::SimpleAlign>
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
188 have been incorporated in AlignIO.pm. Specifically, mase, stockholm
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
189 and prodom have only been implemented for input. See the specific module
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
190 (e.g. L<Bio::AlignIO::meme>) for notes on supported versions.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
191
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
192 If no format is specified and a filename is given, then the module
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
193 will attempt to deduce it from the filename suffix. If this is unsuccessful,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
194 Fasta format is assumed.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
195
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
196 The format name is case insensitive. 'FASTA', 'Fasta' and 'fasta' are
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
197 all supported.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
198
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
199 =back
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
200
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
201 =head2 Bio::AlignIO-E<gt>newFh()
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
202
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
203 $fh = Bio::AlignIO->newFh(-fh => \*FILEHANDLE, -format=>$format);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
204 $fh = Bio::AlignIO->newFh(-format => $format);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
205 # etc.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
206
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
207 This constructor behaves like new(), but returns a tied filehandle
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
208 rather than a Bio::AlignIO object. You can read sequences from this
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
209 object using the familiar E<lt>E<gt> operator, and write to it using print().
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
210 The usual array and $_ semantics work. For example, you can read all
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
211 sequence objects into an array like this:
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
212
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
213 @sequences = <$fh>;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
214
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
215 Other operations, such as read(), sysread(), write(), close(), and printf()
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
216 are not supported.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
217
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
218 =over 1
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
219
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
220 =item -flush
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
221
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
222 By default, all files (or filehandles) opened for writing alignments
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
223 will be flushed after each write_aln() (making the file immediately
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
224 usable). If you don't need this facility and would like to marginally
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
225 improve the efficiency of writing multiple sequences to the same file
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
226 (or filehandle), pass the -flush option '0' or any other value that
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
227 evaluates as defined but false:
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
228
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
229 my $clustal = new Bio::AlignIO -file => "<prot.aln",
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
230 -format => "clustalw";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
231 my $msf = new Bio::AlignIO -file => ">prot.msf",
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
232 -format => "msf",
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
233 -flush => 0; # go as fast as we can!
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
234 while($seq = $clustal->next_aln) { $msf->write_aln($seq) }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
235
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
236 =back
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
237
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
238 =head1 OBJECT METHODS
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
239
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
240 See below for more detailed summaries. The main methods are:
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
241
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
242 =head2 $alignment = $AlignIO-E<gt>next_aln()
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
243
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
244 Fetch an alignment from a formatted file.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
245
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
246 =head2 $AlignIO-E<gt>write_aln($aln)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
247
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
248 Write the specified alignment to a file..
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
249
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
250 =head2 TIEHANDLE(), READLINE(), PRINT()
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
251
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
252 These provide the tie interface. See L<perltie> for more details.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
253
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
254 =head1 FEEDBACK
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
255
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
256 =head2 Mailing Lists
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
257
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
258 User feedback is an integral part of the evolution of this and other
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
259 Bioperl modules. Send your comments and suggestions preferably to one
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
260 of the Bioperl mailing lists. Your participation is much appreciated.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
261
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
262 bioperl-l@bioperl.org - General discussion
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
263 http://bio.perl.org/MailList.html - About the mailing lists
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
264
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
265 =head2 Reporting Bugs
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
266
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
267 Report bugs to the Bioperl bug tracking system to help us keep track
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
268 the bugs and their resolution.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
269 Bug reports can be submitted via email or the web:
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
270
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
271 bioperl-bugs@bio.perl.org
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
272 http://bugzilla.bioperl.org/
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
273
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
274 =head1 AUTHOR - Peter Schattner
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
275
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
276 Email: schattner@alum.mit.edu
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
277
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
278 =head1 CONTRIBUTORS
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
279
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
280 Jason Stajich, jason@bioperl.org
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
281
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
282 =head1 APPENDIX
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
283
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
284 The rest of the documentation details each of the object
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
285 methods. Internal methods are usually preceded with a _
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
286
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
287 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
288
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
289 # 'Let the code begin...
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
290
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
291 package Bio::AlignIO;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
292
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
293 use strict;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
294 use vars qw(@ISA);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
295
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
296 use Bio::Root::Root;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
297 use Bio::Seq;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
298 use Bio::LocatableSeq;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
299 use Bio::SimpleAlign;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
300 use Bio::Root::IO;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
301 @ISA = qw(Bio::Root::Root Bio::Root::IO);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
302
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
303 =head2 new
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
304
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
305 Title : new
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
306 Usage : $stream = Bio::AlignIO->new(-file => $filename,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
307 '-format' => 'Format')
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
308 Function: Returns a new seqstream
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
309 Returns : A Bio::AlignIO::Handler initialised with
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
310 the appropriate format
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
311 Args : -file => $filename
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
312 -format => format
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
313 -fh => filehandle to attach to
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
314
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
315 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
316
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
317 sub new {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
318 my ($caller,@args) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
319 my $class = ref($caller) || $caller;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
320
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
321 # or do we want to call SUPER on an object if $caller is an
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
322 # object?
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
323 if( $class =~ /Bio::AlignIO::(\S+)/ ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
324 my ($self) = $class->SUPER::new(@args);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
325 $self->_initialize(@args);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
326 return $self;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
327 } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
328
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
329 my %param = @args;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
330 @param{ map { lc $_ } keys %param } = values %param; # lowercase keys
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
331 my $format = $param{'-format'} ||
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
332 $class->_guess_format( $param{-file} || $ARGV[0] ) ||
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
333 'fasta';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
334 $format = "\L$format"; # normalize capitalization to lower case
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
335
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
336 # normalize capitalization
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
337 return undef unless( $class->_load_format_module($format) );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
338 return "Bio::AlignIO::$format"->new(@args);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
339 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
340 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
341
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
342
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
343 =head2 newFh
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
344
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
345 Title : newFh
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
346 Usage : $fh = Bio::AlignIO->newFh(-file=>$filename,-format=>'Format')
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
347 Function: does a new() followed by an fh()
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
348 Example : $fh = Bio::AlignIO->newFh(-file=>$filename,-format=>'Format')
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
349 $sequence = <$fh>; # read a sequence object
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
350 print $fh $sequence; # write a sequence object
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
351 Returns : filehandle tied to the Bio::AlignIO::Fh class
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
352 Args :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
353
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
354 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
355
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
356 sub newFh {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
357 my $class = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
358 return unless my $self = $class->new(@_);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
359 return $self->fh;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
360 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
361
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
362 =head2 fh
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
363
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
364 Title : fh
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
365 Usage : $obj->fh
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
366 Function:
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
367 Example : $fh = $obj->fh; # make a tied filehandle
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
368 $sequence = <$fh>; # read a sequence object
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
369 print $fh $sequence; # write a sequence object
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
370 Returns : filehandle tied to the Bio::AlignIO::Fh class
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
371 Args :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
372
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
373 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
374
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
375
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
376 sub fh {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
377 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
378 my $class = ref($self) || $self;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
379 my $s = Symbol::gensym;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
380 tie $$s,$class,$self;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
381 return $s;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
382 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
383
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
384 # _initialize is where the heavy stuff will happen when new is called
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
385
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
386 sub _initialize {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
387 my($self,@args) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
388
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
389 $self->_initialize_io(@args);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
390 1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
391 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
392
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
393 =head2 _load_format_module
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
394
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
395 Title : _load_format_module
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
396 Usage : *INTERNAL AlignIO stuff*
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
397 Function: Loads up (like use) a module at run time on demand
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
398 Example :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
399 Returns :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
400 Args :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
401
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
402 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
403
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
404 sub _load_format_module {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
405 my ($self,$format) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
406 my $module = "Bio::AlignIO::" . $format;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
407 my $ok;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
408
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
409 eval {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
410 $ok = $self->_load_module($module);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
411 };
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
412 if ( $@ ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
413 print STDERR <<END;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
414 $self: $format cannot be found
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
415 Exception $@
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
416 For more information about the AlignIO system please see the AlignIO docs.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
417 This includes ways of checking for formats at compile time, not run time
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
418 END
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
419 ;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
420 return;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
421 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
422 return 1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
423 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
424
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
425 =head2 next_aln
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
426
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
427 Title : next_aln
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
428 Usage : $aln = stream->next_aln
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
429 Function: reads the next $aln object from the stream
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
430 Returns : a Bio::Align::AlignI compliant object
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
431 Args :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
432
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
433 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
434
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
435 sub next_aln {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
436 my ($self,$aln) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
437 $self->throw("Sorry, you cannot read from a generic Bio::AlignIO object.");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
438 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
439
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
440 =head2 write_aln
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
441
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
442 Title : write_aln
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
443 Usage : $stream->write_aln($aln)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
444 Function: writes the $aln object into the stream
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
445 Returns : 1 for success and 0 for error
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
446 Args : Bio::Seq object
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
447
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
448 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
449
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
450 sub write_aln {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
451 my ($self,$aln) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
452 $self->throw("Sorry, you cannot write to a generic Bio::AlignIO object.");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
453 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
454
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
455 =head2 _guess_format
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
456
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
457 Title : _guess_format
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
458 Usage : $obj->_guess_format($filename)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
459 Function:
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
460 Example :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
461 Returns : guessed format of filename (lower case)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
462 Args :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
463
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
464 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
465
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
466 sub _guess_format {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
467 my $class = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
468 return unless $_ = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
469 return 'fasta' if /\.(fasta|fast|seq|fa|fsa|nt|aa)$/i;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
470 return 'msf' if /\.(msf|pileup|gcg)$/i;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
471 return 'pfam' if /\.(pfam|pfm)$/i;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
472 return 'selex' if /\.(selex|slx|selx|slex|sx)$/i;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
473 return 'phylip' if /\.(phylip|phlp|phyl|phy|phy|ph)$/i;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
474 return 'nexus' if /\.(nexus|nex)$/i;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
475 return 'mega' if( /\.(meg|mega)$/i );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
476 return 'clustalw' if( /\.aln$/i );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
477 return 'meme' if( /\.meme$/i );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
478 return 'emboss' if( /\.(water|needle)$/i );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
479 return 'psi' if( /\.psi$/i );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
480 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
481
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
482 sub DESTROY {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
483 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
484 $self->close();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
485 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
486
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
487 sub TIEHANDLE {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
488 my $class = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
489 return bless {'alignio' => shift},$class;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
490 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
491
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
492 sub READLINE {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
493 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
494 return $self->{'alignio'}->next_aln() unless wantarray;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
495 my (@list,$obj);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
496 push @list,$obj while $obj = $self->{'alignio'}->next_aln();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
497 return @list;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
498 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
499
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
500 sub PRINT {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
501 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
502 $self->{'alignio'}->write_aln(@_);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
503 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
504
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
505 1;