[Bioperl-l] reading and writing tree
Peter Menzel
pmenzel at googlemail.com
Mon Mar 30 09:56:02 EDT 2009
Hi,
using the TreeIO class, I try to read a tree from a newick file,
delete some nodes, and write the tree using write_tree().
Besides that I cannot write to files, that don't exist already, it's
also not possible to write to existing files.
The following error message is written:
Filehandle GEN1 opened only for input at
/usr/share/perl5/Bio/Root/IO.pm line 421.
So apparently somehow a file handle is associated with the tree, since
different TreeIO objects are used.
Is there a workaround for this problem?
The actual code I run:
#!/usr/bin/perl -w
use strict;
use Bio::TreeIO;
my $filename = shift @ARGV;
# parse in newick/new hampshire format
my $input = new Bio::TreeIO(-file => $filename,
-format => "newick");
my $tree = $input->next_tree;
foreach my $nodename (@ARGV) {
my @nodes = $tree->find_node(-id => $nodename);
if(@nodes > 0) {
foreach my $n (@nodes) {
$tree->remove_Node($n);
}
}
}
$input->close();
#write tree to new file
my $output = new Bio::TreeIO(-file => $filename.".new", -format => "newick");
$output->write_tree($tree);
kind regards, Peter
More information about the Bioperl-l
mailing list