Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Perl 将PHYLIP文本文件转换为PNG图像_Perl_Tree_Bioinformatics_Scientific Computing_Bioperl - Fatal编程技术网

Perl 将PHYLIP文本文件转换为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::

有人知道如何用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::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;