annotate variant_effect_predictor/Bio/TreeIO.pm @ 0:1f6dce3d34e0

Uploaded
author mahtabm
date Thu, 11 Apr 2013 02:01:53 -0400
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1 # $Id: TreeIO.pm,v 1.11 2002/11/05 17:26:04 heikki Exp $
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
3 # BioPerl module for Bio::TreeIO
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
4 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
5 # Cared for by Jason Stajich <jason@bioperl.org>
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
6 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
7 # Copyright Jason Stajich
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
8 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
9 # You may distribute this module under the same terms as perl itself
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
10
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
11 # POD documentation - main docs before the code
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
12
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
13 =head1 NAME
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
14
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
15 Bio::TreeIO - Parser for Tree files
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
16
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
17 =head1 SYNOPSIS
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
18
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
19 {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
20 use Bio::TreeIO;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
21 my $treeio = new Bio::TreeIO('-format' => 'newick',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
22 '-file' => 'globin.dnd');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
23 while( my $tree = $treeio->next_tree ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
24 print "Tree is ", $tree->size, "\n";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
25 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
26 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
27
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
28 =head1 DESCRIPTION
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
29
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
30 This is the driver module for Tree reading from data streams and
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
31 flatfiles. This is intended to be able to create Bio::Tree::TreeI
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
32 objects.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
33
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
34 =head1 FEEDBACK
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
35
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
36 =head2 Mailing Lists
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
37
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
38 User feedback is an integral part of the evolution of this and other
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
39 Bioperl modules. Send your comments and suggestions preferably to
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
40 the Bioperl mailing list. Your participation is much appreciated.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
41
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
42 bioperl-l@bioperl.org - General discussion
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
43 http://bioperl.org/MailList.shtml - About the mailing lists
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
44
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
45 =head2 Reporting Bugs
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
46
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
47 Report bugs to the Bioperl bug tracking system to help us keep track
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
48 of the bugs and their resolution. Bug reports can be submitted via
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
49 email or the web:
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
50
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
51 bioperl-bugs@bioperl.org
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
52 http://bugzilla.bioperl.org/
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
53
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
54 =head1 AUTHOR - Jason Stajich
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
55
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
56 Email jason@bioperl.org
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
57
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
58 Describe contact details here
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
59
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
60 =head1 CONTRIBUTORS
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
61
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
62 Additional contributors names and emails here
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
63
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
64 =head1 APPENDIX
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
65
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
66 The rest of the documentation details each of the object methods.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
67 Internal methods are usually preceded with a _
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
68
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
69 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
70
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
71
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
72 # Let the code begin...
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
73
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
74
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
75 package Bio::TreeIO;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
76 use vars qw(@ISA);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
77 use strict;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
78
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
79 # Object preamble - inherits from Bio::Root::Root
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
80
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
81 use Bio::Root::Root;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
82 use Bio::Root::IO;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
83 use Bio::Event::EventGeneratorI;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
84 use Bio::TreeIO::TreeEventBuilder;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
85 use Bio::Factory::TreeFactoryI;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
86
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
87 @ISA = qw(Bio::Root::Root Bio::Root::IO
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
88 Bio::Event::EventGeneratorI Bio::Factory::TreeFactoryI);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
89
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
90 =head2 new
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
91
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
92 Title : new
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
93 Usage : my $obj = new Bio::TreeIO();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
94 Function: Builds a new Bio::TreeIO object
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
95 Returns : Bio::TreeIO
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
96 Args :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
97
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
98
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
99 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
100
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
101 sub new {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
102 my($caller,@args) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
103 my $class = ref($caller) || $caller;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
104
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
105 # or do we want to call SUPER on an object if $caller is an
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
106 # object?
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
107 if( $class =~ /Bio::TreeIO::(\S+)/ ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
108 my ($self) = $class->SUPER::new(@args);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
109 $self->_initialize(@args);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
110 return $self;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
111 } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
112
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
113 my %param = @args;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
114 @param{ map { lc $_ } keys %param } = values %param; # lowercase keys
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
115 my $format = $param{'-format'} ||
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
116 $class->_guess_format( $param{'-file'} || $ARGV[0] ) ||
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
117 'newick';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
118 $format = "\L$format"; # normalize capitalization to lower case
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
119
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
120 # normalize capitalization
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
121 return undef unless( $class->_load_format_module($format) );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
122 return "Bio::TreeIO::$format"->new(@args);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
123 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
124 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
125
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
126
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
127 =head2 next_tree
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
128
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
129 Title : next_tree
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
130 Usage : my $tree = $treeio->next_tree;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
131 Function: Gets the next tree off the stream
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
132 Returns : Bio::Tree::TreeI or undef if no more trees
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
133 Args : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
134
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
135 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
136
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
137 sub next_tree{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
138 my ($self) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
139 $self->throw("Cannot call method next_tree on Bio::TreeIO object must use a subclass");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
140 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
141
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
142 =head2 write_tree
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
143
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
144 Title : write_tree
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
145 Usage : $treeio->write_tree($tree);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
146 Function: Writes a tree onto the stream
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
147 Returns : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
148 Args : Bio::Tree::TreeI
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
149
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
150
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
151 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
152
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
153 sub write_tree{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
154 my ($self,$tree) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
155 $self->throw("Cannot call method write_tree on Bio::TreeIO object must use a subclass");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
156 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
157
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
158
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
159 =head2 attach_EventHandler
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
160
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
161 Title : attach_EventHandler
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
162 Usage : $parser->attatch_EventHandler($handler)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
163 Function: Adds an event handler to listen for events
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
164 Returns : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
165 Args : Bio::Event::EventHandlerI
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
166
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
167 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
168
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
169 sub attach_EventHandler{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
170 my ($self,$handler) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
171 return if( ! $handler );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
172 if( ! $handler->isa('Bio::Event::EventHandlerI') ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
173 $self->warn("Ignoring request to attatch handler ".ref($handler). ' because it is not a Bio::Event::EventHandlerI');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
174 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
175 $self->{'_handler'} = $handler;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
176 return;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
177 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
178
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
179 =head2 _eventHandler
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
180
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
181 Title : _eventHandler
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
182 Usage : private
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
183 Function: Get the EventHandler
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
184 Returns : Bio::Event::EventHandlerI
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
185 Args : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
186
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
187
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
188 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
189
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
190 sub _eventHandler{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
191 my ($self) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
192 return $self->{'_handler'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
193 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
194
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
195 sub _initialize {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
196 my($self, @args) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
197 $self->{'_handler'} = undef;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
198
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
199 # initialize the IO part
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
200 $self->_initialize_io(@args);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
201 $self->attach_EventHandler(new Bio::TreeIO::TreeEventBuilder(-verbose => $self->verbose(), @args));
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
202 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
203
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
204 =head2 _load_format_module
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
205
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
206 Title : _load_format_module
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
207 Usage : *INTERNAL TreeIO stuff*
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
208 Function: Loads up (like use) a module at run time on demand
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
209 Example :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
210 Returns :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
211 Args :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
212
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
213 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
214
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
215 sub _load_format_module {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
216 my ($self,$format) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
217 my $module = "Bio::TreeIO::" . $format;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
218 my $ok;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
219
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
220 eval {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
221 $ok = $self->_load_module($module);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
222 };
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
223 if ( $@ ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
224 print STDERR <<END;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
225 $self: $format cannot be found
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
226 Exception $@
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
227 For more information about the TreeIO system please see the TreeIO docs.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
228 This includes ways of checking for formats at compile time, not run time
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
229 END
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
230 ;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
231 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
232 return $ok;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
233 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
234
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
235
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
236 =head2 _guess_format
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
237
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
238 Title : _guess_format
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
239 Usage : $obj->_guess_format($filename)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
240 Function:
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
241 Example :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
242 Returns : guessed format of filename (lower case)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
243 Args :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
244
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
245 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
246
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
247 sub _guess_format {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
248 my $class = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
249 return unless $_ = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
250 return 'newick' if /\.(dnd|newick|nh)$/i;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
251 return 'nhx' if /\.(nhx)$/i;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
252 return 'phyloxml' if /\.(xml)$/i;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
253 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
254
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
255 sub DESTROY {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
256 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
257
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
258 $self->close();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
259 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
260
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
261 sub TIEHANDLE {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
262 my $class = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
263 return bless {'treeio' => shift},$class;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
264 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
265
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
266 sub READLINE {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
267 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
268 return $self->{'treeio'}->next_tree() unless wantarray;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
269 my (@list,$obj);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
270 push @list,$obj while $obj = $self->{'treeio'}->next_tree();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
271 return @list;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
272 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
273
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
274 sub PRINT {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
275 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
276 $self->{'treeio'}->write_tree(@_);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
277 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
278
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
279 1;