利用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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 超详细Anaconda安装教程

    超详细Anaconda安装教程超详细Anaconda安装教程

    2022年8月29日
    5
  • 用Python自动办公,做职场高手(完结)

    用Python自动办公,做职场高手(完结)

    2022年2月12日
    45
  • ringbuffer的常规用法_c语言fputs

    ringbuffer的常规用法_c语言fputs一、ringBuffer介绍ringBuffer称作环形缓冲,也有叫circleBuffer的。就是取内存中一块连续的区域用作环形缓冲区的数据存储区。这块连续的存储会被反复使用,向ringBuffer写入数据总是从写指针的位置开始,如写到实际存储区的末尾还没有写完,则将剩余的数据从存储区的头开始写;从该ringBuffer读出数据也是从读指针的位置开始,如读到实际存储区的末尾…

    2025年10月25日
    4
  • CentOS8快速部署轻量级自动化运维平台Spug

    CentOS8快速部署轻量级自动化运维平台SpugSpug面向中小型企业设计的轻量级无Agent的自动化运维平台,整合了主机管理、主机批量执行、主机在线终端、文件在线上传下载、应用发布部署、在线任务计划、配置中心、监控、报警等一系列功能。Spug的特性批量执行:主机命令在线批量执行在线终端:主机支持浏览器在线终端登录文件管理:主机文件在线上传下载任务计划:灵活的在线任务计划发布部署:支持自定义发布部署流程配置中心:支持KV、文本、json等格式的配置监控中心:支持站点、端口、进程、自定义等监控报警中心:支持短信、

    2022年5月16日
    44
  • MATLAB中神经网络工具箱的使用「建议收藏」

    MATLAB中神经网络工具箱的使用「建议收藏」今夕何夕兮,前些天把玩了一下MATLAB中神经网络工具箱的使用,忽有“扪参历井仰胁息”之感。别的倒是没什么,只是神经网络的数据组织结构有些“怪异”,要是不小心就会导致工具箱报错。以下便是神经网络工具箱的正确打开姿势,谨供诸君参考:1.打开MATLAB,在命令行输入nntool,将出现如下界面:图1神经网络工具箱主界面其中最主要的分为6个部分:第1部分中显示的是系统的输…

    2022年6月20日
    126
  • java定义byte类型,详解java中的byte类型[通俗易懂]

    java定义byte类型,详解java中的byte类型[通俗易懂]介绍byte,即字节,由8位的二进制组成。在Java中,byte类型的数据是8位带符号的二进制数。在计算机中,8位带符号二进制数的取值范围是[-128,127],所以在Java中,byte类型的取值范围也是[-128,127]。取值范围分析一直在想为什么不是-128到128呢?今天分析了一下这个问题。首先我们得明白一件事情,那就是运算规则:########################…

    2022年6月18日
    32

发表回复

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

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