Perl 将PHYLIP文本文件转换为PNG图像
有人知道如何用perl编程将文本格式的文件转换为PNG图像吗 树文件:Perl 将PHYLIP文本文件转换为PNG图像,perl,tree,bioinformatics,scientific-computing,bioperl,Perl,Tree,Bioinformatics,Scientific Computing,Bioperl,有人知道如何用perl编程将文本格式的文件转换为PNG图像吗 树文件: ( B:6.0, ( A:5.0, C:3.0, E:4.0) :5.0, D:11.0); 我尝试使用该模块,但它将不正确的节点写入SVG文件 此代码在标准输出上生成SVG输出(我没有资格评论是否显示了正确的节点): 为了生成PNG图像,我使用脚本将SVG输出定向到一个文件,并使用ImageMagick的convert实用程序将其转换为PNG。看起来是这样的: Bio::Phylo::
(
B:6.0,
(
A:5.0,
C:3.0,
E:4.0)
:5.0,
D:11.0);
我尝试使用该模块,但它将不正确的节点写入SVG文件 此代码在标准输出上生成SVG输出(我没有资格评论是否显示了正确的节点): 为了生成PNG图像,我使用脚本将SVG输出定向到一个文件,并使用ImageMagick的
convert
实用程序将其转换为PNG。看起来是这样的:
Bio::Phylo::Treedraweroutput“>
还有一些工具可以使用Bio::Phylo::Treedrawer
直接创建PNG图像。要让Bio::Phylo::Treedrawer
输出PNG图像,可以使用以下命令修改对象的属性:$Treedrawer->set_format('PNG');
但是,在我的系统中,当使用PNG图像格式时,我收到一条警告:
WARN Bio::Phylo::Treedrawer::Abstract:_draw_legend[Bio/Phylo/Treedrawer/Abstract.pm:106]-Bio::Phylo::Treedrawer::Png无法绘制图例
。我不认为这是一个bug。信息最好放在下面:
Bio::Phylo::Treedrawer::Png不支持绘制图例
如果
Bio::Phylo::Treedrawer
的SVG输出优于Bio::Tree::Tree
的SVG输出,则您可能只想将其用作数据格式。您可以使用图像编辑器或perl模块转换输出文件,该模块可以将SVG数据转换为PNG作为脚本的一部分。此代码在STDOUT
(我没有资格评论是否显示了正确的节点):
为了生成PNG图像,我使用脚本将SVG输出定向到一个文件,并使用ImageMagick的convert
实用程序将其转换为PNG
Bio::Phylo::Treedraweroutput“>
还有一些工具可以使用Bio::Phylo::Treedrawer
直接创建PNG图像。要使Bio::Phylo::Treedrawer
输出PNG图像,您可以使用以下命令修改对象的属性:$Treedrawer->set_format('PNG')代码>
但是,在我的系统中,当使用PNG图像格式时,我收到一条警告:
WARN Bio::philo::Treedrawer::Abstract:_draw_legend[Bio/philo/Treedrawer/Abstract.pm:106]-Bio::philo::Treedrawer::Png无法绘制图例
。我不认为这是一个错误。这条信息最好是:
Bio::Phylo::Treedrawer::Png不支持绘制图例
如果Bio::Phylo::Treedrawer
的SVG输出优于Bio::Tree::Tree
的SVG输出,那么您可能只想将其用作数据格式。您可以使用图像编辑器或perl模块转换输出文件,该模块可以将SVG数据转换为PNG作为脚本的一部分。您可以使用下面描述的模块吗?生成的SVG输出是否符合您的期望?当您尝试下面的代码时,在尝试PNG之前使用SVG输出:-)对于PNG,我建议直接从脚本内部写入文件句柄。您能够使用下面描述的模块吗?生成的SVG输出是否符合您的期望?当您尝试下面的代码时,请在尝试PNG之前使用SVG输出:-)对于PNG,我建议直接从脚本内部写入文件句柄。它说,全局符号“$tree”需要在第25行显式的包名。@Nari2 typo。。。->set_tree
方法应该在$forest
上被调用,而不是$tree
我不仅错过了那个打字错误,我还错过了一个事实,我本可以说我没有看到$forest
,因为$tree
:-)它说,全局符号“$tree”在第25行需要显式的包名。@Nari2 typo。。。->set_tree
方法应该在$forest
上被调用,而不是$tree
我不仅错过了那个打字错误,我还错过了一个事实,我可以说我没有看到$forest
,因为$tree
:-)
use v5.16; # sets strict and warnings
use Bio::Phylo::Forest;
use Bio::Phylo::Treedrawer;
my $string = '(B:6.0,(A:5.0,C:3.0,E:4.0):5.0,D:11.0);';
my $forest
= Bio::Phylo::IO->parse( -format => 'newick', -string => $string )->first;
my $treedrawer = Bio::Phylo::Treedrawer->new(
-width => 800,
-height => 600,
-shape => 'CURVY', # curvogram
-mode => 'PHYLO', # phylogram
-format => 'SVG'
);
$treedrawer->set_scale_options(
-width => '100%',
-major => '10%', # major cross hatch interval
-minor => '2%', # minor cross hatch interval
-label => 'MYA',
);
$treedrawer->set_tree($forest);
$treedrawer->set_format('Svg');
print $treedrawer->draw;