前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >利用perl一键生成符合LEFse差异分析的Table表

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

作者头像
全栈程序员站长
发布2022-09-07 16:53:48
3650
发布2022-09-07 16:53:48
举报
文章被收录于专栏:全栈程序员必看

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

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

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

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

代码语言:javascript
复制
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同一目录下,然后运行

代码语言:javascript
复制
perl lefse.pl 

然后就可以根据官方教程,进行上传生成LEFse分析表格。

在这里插入图片描述
在这里插入图片描述

更多微生物组学分析代码与方法,欢迎访问zlab仓库https://github.com/zlabx 参考文献:

docker安装Lefse和分析流程

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

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022年6月3,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 利用perl一键生成符合在线LEFse差异分析的Table表
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档