利用perl一键生成符合LEFse差异分析的Table表

利用perl一键生成符合LEFse差异分析的Table表利用perl一键生成符合在线LEFse差异分析的Table表LEfSe分析的在线+本地运行的详细教程参考刘尧博客基于Picrust2进行宏基因预测后,我们往往需要对数据进行可视化话,其中LEFse就是非常不错的选择,这里通过perl实现对表的格式化。LEFse–Galaxy平台:http://huttenhower.sph.harvard.edu/galaxyusestrict;usewarnings;my$mapFile=$ARGV[0];my$tableFile=$ARG

大家好,又见面了,我是你们的朋友全栈君。

利用perl一键生成符合在线LEFse差异分析的Table表

LEfSe分析的在线+本地运行的详细教程参考刘尧博客

基于Picrust2进行宏基因预测后,我们往往需要对数据进行可视化话,其中LEFse就是非常不错的选择,这里通过perl实现对表的格式化。
LEFse –Galaxy平台:http://huttenhower.sph.harvard.edu/galaxy

use strict;
use warnings;

my $mapFile=$ARGV[0];
my $tableFile=$ARGV[1];

my %mapHash=();
open(MAP,"$mapFile")or die $!;
while(my $line=<MAP>)
{ 
   
	chomp($line);
	my @arr=split(/\s+/,$line);
	$mapHash{ 
   $arr[0]}=$arr[3];
}
close(MAP);

my %hash=();
my @samples=();
my %sumHash=();
open(RF,"$tableFile") or die $!;
while(my $line=<RF>)
{ 
   
	next if($.==1);
	my @arr=split(/\t/,$line);
	if($.==2)
	{ 
   
		@samples=@arr;
		next;
	}
	my $taxonomy=$arr[$#arr];
	$taxonomy=~s/;/|/g;
	$taxonomy=~s/(k|p|c|o|f|g|s)__//g;
	$taxonomy=~s/\s+|\[|\]//g;
	$taxonomy=~s/\|*$//g;
	my @taxoArr=split(/\|/,$taxonomy);
	my $taxSetp="";
	for(my $tax=0;$tax<=$#taxoArr;$tax++)
	{ 
   
		if($tax==0)
		{ 
   
			$taxSetp=$taxoArr[$tax];
		}
		else
		{ 
   
			$taxSetp=$taxSetp . "|" . $taxoArr[$tax];
		}
		for(my $i=1;$i<$#samples;$i++)
		{ 
   
			${ 
   $hash{ 
   $taxSetp}}{ 
   $samples[$i]}+=$arr[$i];
		}
	}
	for(my $i=1;$i<$#samples;$i++)
	{ 
   
		$sumHash{ 
   $samples[$i]}+=$arr[$i];
	}
}
close(RF);

open(WF,">lefse_input.txt")or die $!;
#print WF "Taxonomy";
#for(my $i=1;$i<$#samples;$i++)
#{ 
   
# print WF "\t" .$samples[$i];
#}
#print WF"\n";
print WF "sampleType";
for(my $i=1;$i<$#samples;$i++)
{ 
   
	print WF "\t" . $mapHash{ 
   $samples[$i]};
}
print WF "\n";

foreach my $key(sort (keys %hash))
{ 
   
	next if($key=~/Unassigned/);
	print WF $key;
	for(my $i=1;$i<$#samples;$i++)
	{ 
   
		print WF "\t" . ${ 
   $hash{ 
   $key}}{ 
   $samples[$i]}/$sumHash{ 
   $samples[$i]}*100;
	}
	print WF "\n";
}
close(WF);

将以上代码保存为lefse.pl, 然后cd到相应目录,将输入文件lefse_input.txt(以picrust2输出的meta表为例) ,和map文件 sample-meta.txt,放到该pl同一目录下,然后运行

perl lefse.pl 

然后就可以根据官方教程,进行上传生成LEFse分析表格。
在这里插入图片描述
更多微生物组学分析代码与方法,欢迎访问zlab仓库https://github.com/zlabx
参考文献:

docker安装Lefse和分析流程

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/136569.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • wireshark抓包分析TCP和UDP_ipv4数据包分析

    wireshark抓包分析TCP和UDP_ipv4数据包分析在命令行输入ifconfig,查看本机网络接口。$ifconfigenp4s0:flags=4099<UP,BROADCAST,MULTICAST>mtu1500etherc8:5b:76:f6:44:d2txqueuelen1000(Ethernet)RXpackets0bytes0(0.0B)…

    2025年7月3日
    3
  • cs与bs模式的优缺点_什么是cs什么是bs

    cs与bs模式的优缺点_什么是cs什么是bscs与bs模式关于CS(Client-Server)模式和BS(Browser-Server)模式的水很深,盆地自己也认为对此了解不够透彻,但作为手机客户端设计,如果不对CS、BS做一定程度的了解,是很容易出现一些方向性的错误、走一些弯路抑或在实现性价比上付出过多代价。本文偏向于基础知识,产品人员很多情况下不仅仅要了解表现、交互,还需要一定程度上了解可实现性、实现代价、实现形式、实现限制等…

    2025年10月11日
    5
  • msdos分区是什么_msdos_partition

    msdos分区是什么_msdos_partition硬盘分区及格式化本例要求熟悉硬盘分区结构,使用fdisk分区工具在磁盘/dev/vdb上按以下要求建立分区:采用默认的msdos分区模式1、第1个分区/dev/vdb1的大小为200MiB2、第2个分区/dev/vdb2的大小为2000MiB3、第3个分区/dev/vdb3的大小为1000MiB,完成分区后4、能够配置开机自动挂载/dev/vdb2分区…

    2022年8月11日
    8
  • [排序算法]–冒泡排序的三种实现(Java)

    [排序算法]–冒泡排序的三种实现(Java)冒泡排序是非常好理解的,以从小到大排序为例,每一轮排序就找出未排序序列中最大值放在最后。设数组的长度为N:(1)比较前后相邻的二个数据,如果前面数据大于后面的数据,就将这二个数据交换。(2)这样对数组的第0个数据到N-1个数据进行一次遍历后,最大的一个数据就“沉”到数组第N-1个位置。(3)N=N-1,如果N不为0就重复前面二步,否则排序完成。以上就是冒泡排序的基本思想,按照这个定义很快就能写

    2022年6月22日
    26
  • 关于iptabels的-A与-I参数

    关于iptabels的-A与-I参数

    2021年6月1日
    75
  • pycharm 激活码2022[免费获取]

    (pycharm 激活码2022)好多小伙伴总是说激活码老是失效,太麻烦,关注/收藏全栈君太难教程,2021永久激活的方法等着你。IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.net/100143.htmlMLZPB5EL5Q-eyJsaWNlbnNlSW…

    2022年3月21日
    132

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号