加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

kegg的某种svg展示图

发布时间:2020-12-13 20:44:42 所属栏目:PHP教程 来源:网络整理
导读:#!perluse warnings;use strict;use SVG;use File::Basename qw(basename);die perl $0 sample.list pathway.sorted outprefixNote: support 24 colors to sample~ if @ARGV != 3;my (@file,@pwtmp,@pw2sp);my $i = 0;open PW,$ARGV[1] or die $!;while(PW){
#!perl use warnings; use strict; use SVG; use File::Basename qw(basename); die "perl $0 <sample.list> <pathway.sorted> <outprefix> Note: support 24 colors to sample~ " if @ARGV != 3; my (@file,@pwtmp,@pw2sp); my $i = 0; open PW,$ARGV[1] or die $!; while(<PW>) { chomp; my @tmp = split / /; $pwtmp[$i]{$tmp[0]} = 1; $i ++; } my $f = 0; open SP,$ARGV[0] or die $!; while(<SP>) { chomp; my @ft = split; my $name = basename($ft[0]); my ($id) = $ft[0] =~ /^([^.]+)/; push @file,$ft[1]; open FA,$ft[0] or die $!; <FA>; for(my $n = 0; $n < @pwtmp; $n ++) { $pw2sp[$f][$n] = 1; } while(my $line = <FA>) { chomp($line); my @tmp = split / /,$line; for(my $j = 0; $j < @pwtmp; $j ++) { if(exists $pwtmp[$j]{$tmp[0]}) { $pw2sp[$f][$j] = $tmp[4]; last; } } } $f ++; } my $fn = @file; my $pwn = @pwtmp; my $svg = SVG->new(width => ($fn * 50 + 1100),height => ($pwn * 50 + 300)); $svg->rect(x => 55,y => 55,width => (($fn + 1) * 50 + 10),height => (($pwn + 1) * 50 + 10),fill => "white",stroke => "grey",'stroke-width' => 8); for(my $j = 0; $j < @pwtmp; $j ++) { my $n = $j + 1; $svg->line(x1 => 60,y1 => (60 + $n * 50),x2 => (60 + ($fn+1) * 50),y2 => (60 + $n * 50),stroke => "orange",'stroke-width' => 3); foreach my $pc(keys %{$pwtmp[$j]}) { $svg->text(x => (($fn + 1) * 50 + 70),y => 65 + $n * 50,style => {'font' => 'Times new roman','font-size' => 30,'font-weight' => 'bold'})->cdata($pc); } } my @color = ('red','green','blue','yellow','cyan','purple','sandybrown','navy','violet','darksalmon','bisque','fuchsia','lightcoral','goldenrod','silver','brown','lawngreen','skyblue','indigo','forestgreen','lightseagreen','aqua','lime'); #my @color = ('red','red','yellow'); my $column = 0; my $row = 0; for(my $j = 0; $j < @file; $j ++) { my $n = $j + 1; my $rx = 75 + $n * 50 + int(length($file[$j]) / 2) * 14; my $ry = 80 + ($pwn + 1) * 50 + length($file[$j]) * 12; $svg->line(x1 => (60 + $n * 50),y1 => 60,x2 => (60 + $n * 50),y2 => (60 + ($pwn + 1) * 50),'stroke-width' => 3); $svg->text(x => (60 + $n * 50),y => (80 + ($pwn + 1) * 50),'font-size' => 25,'font-weight' => 'bold'},'transform' => "rotate(⑷5,$rx,$ry)")->cdata($file[$j]); for(my $k = 0; $k < @{$pw2sp[$j]}; $k ++) { if($pw2sp[$j][$k] >= 0.05) { $svg->circle(cx => (60 + $n * 50),cy => (60 + ($k+1) * 50),r => 1,fill => $color[$j],stroke => 'black'); }elsif($pw2sp[$j][$k] < 0.05 and $pw2sp[$j][$k] >= 0.01){ $svg->circle(cx => (60 + $n * 50),r => 20,stroke => 'black'); }else{ $svg->circle(cx => (60 + $n * 50),r => 45,stroke => 'black'); } } if(($n / 6) =~ /./) { $svg->circle(cx => (250 + (@file + 1) * 50 + $column * 100),cy => (75 + ($pwn + 1) * 50 + $row * 75),fill => "$color[$j]",stroke => 'black'); $svg->text(x => (250 + (@file + 1) * 50 + $column * 100),y => (110 + ($pwn + 1) * 50 + $row * 75),'font-size'=> 15,'font-weight' => 'bold'})->cdata($file[$j]); $column ++; }else{ $svg->circle(cx => (250 + (@file + 1) * 50 + $column * 100),'font-weight' => 'bold'})->cdata($file[$j]); $row ++; $column = 0; } } $svg->circle(cx => (100 + (@file + 1) * 50),cy => (75 + ($pwn + 1) * 50),fill => 'sandybrown',stroke => 'black'); $svg->circle(cx => (100 + (@file + 1) * 50),cy => (150 + ($pwn + 1) * 50),stroke => 'black'); $svg->text(x => (122 + (@file + 1) * 50),y => (75 + ($pwn + 1) * 50),'font-weight' => 'bold'})->cdata("FDR < 0.05"); $svg->text(x => (147 + (@file + 1) * 50),y => (150 + ($pwn + 1) * 50),'font-weight' => 'bold'})->cdata("FDR < 0.01"); open OUT,"> $ARGV[2].svg" or die $!; print OUT $svg->xmlify;

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读