基于16S的细菌群落功能预测工具Tax4Fun2

回想第一次接触微生物组分析时是2017年,那会儿主流的两个基于16S的细菌群落功能预测工具就是PICRUSt和Tax4Fun,均可以获得类似于宏基因组的功能丰度数据。不过当时来看Tax4Fun更推荐一些,Tax4Fun以 SILVA数据库的物种注释为基础(支持115、119和123三个版本,对应的程序最后一次更新是2015年,当时仅时隔2年),而PICRUSt以GreenGene数据库的物种注释为基础(最后更新是2013年,当时已时隔4年)。并且当时SILVA已经取代GreenGene成为了主流的16S细菌物种注释库,最后小编选择了Tax4Fun作分析。

其实再往后来看,这两个工具所依据的数据库也已经很老了。现在是2020年,SILVA都更新到138版本了,即便再使用Tax4Fun也很勉强(Tax4Fun最高仅支持SILVA123,但是再返回使用旧的数据库注释明显不是一个好选择)。

当然,生信工具也是与时俱进的。为了满足如今的所需,PICRUSt和 Tax4Fun都推出了全新版本,即PICRUSt2和Tax4Fun2。PICRUSt2的使用请参考隔壁的推文,本篇简介Tax4Fun2。

评估微生物群落的功能和冗余度是环境微生物学的主要挑战。Tax4Fun2是一个R程序包,可基于16S rRNA基因序列快速预测原核生物的功能谱和功能冗余。通过合并用户定义的、特定于栖息地的基因组信息,可以显著提高预测功能图谱的准确性和鲁棒性(Wemheuer et al, 2018)。与旧版Tax4Fun相比,Tax4Fun2的具有如下优点。

(1)不再局限于仅SILVA的特定版本注释的OTU丰度表,允许直接以OTU代表序列作为输入,通过与指定参考数据库的比对实现物种注释。除了Tax4Fun2提供的已构建好的参考集(相比之前大幅扩大),也允许我们提供自定义的参考集,使用非常灵活。

(2)侧重于原核数据,但也可以合并真核数据。

(3)提供了计算特定功能冗余的方法,对于预测特定功能在环境扰动期间丢失的可能性至关重要。

(4)精度和稳定性显著提升。

(5)目前Tax4Fun2仍处于不断的更新状态。

Tax4Fun2的工作流程。首先将16S rRNA基因序列与参考序列(可以为内置的,也允许使用用户自定义的)进行比对,以识别最近的邻居。根据最近邻居搜索的结果,汇总各样本的OTU丰度。一个关联矩阵(AM)包含在16S rRNA搜索中识别的参考功能概况。整合OTU丰度与AM功能谱,预测每个样品的宏基因组。

下文继续简介Tax4Fun2的使用。如果想了解关于旧版Tax4Fun的内容,可参考前文。

Tax4Fun2官方文档:https://github.com/bwemheu/Tax4Fun2

下文部分测试结果文件及R代码等,可在百度盘获取(提取码:kr9p):

https://pan.baidu.com/s/1nogKmaDSnexF34_WlfEWng

Tax4Fun2安装及配置

本篇的所有操作都是在linux平台下进行的,包括程序包的安装及测试过程。Windows或Mac平台下的方法可能存在不同,我未再尝试,大家若有需要可参考官方文档的说明。

参考自:https://github.com/bwemheu/Tax4Fun2

#下载 tax4fun2 程序包,shell 命令行
wget https://github.com/bwemheu/Tax4Fun2/releases/download/1.1.5/Tax4Fun2_1.1.5.tar.gz

然后打开R,手动安装Tax4Fun2程序包(它是一个R包)。

#安装 tax4fun2
install.packages(pkgs = 'Tax4Fun2_1.1.5.tar.gz', repos = NULL, source = TRUE)#加载
library(Tax4Fun2)

随后,需要配置Tax4Fun2依赖环境,包括参考数据库,以及功能实现的其它R包或程序等。总体上来说安装无任何难度,都是命令行傻瓜式安装的。

加载Tax4Fun2包后,使用内部函数buildReferenceData()下载并构建默认的Tax4Fun2参考数据库,以及检查是否需要安装ape和seqinr包。此外,它还将测试用户PATH中是否存在blastn,为了确保下载成功,该功能还将使用md5sums自动检查下载数据的一致性。

#下载并构建默认的 Tax4Fun2 参考数据库
#path_to_working_directory='.',Tax4Fun2 默认在当前工作路径中构建库,如有需要,通过该参数指定位置
#use_force=FALSE,是否覆盖已有的文件夹,默认为 FALSE
#install_suggested_packages=TRUE,安装 ape 和 seqinr 包,默认为 TRUE
buildReferenceData(path_to_working_directory = '.', use_force = FALSE, install_suggested_packages = TRUE)

等待一会儿,执行成功后,可在当前工作路径下看到生成新路径“Tax4Fun2_ReferenceData_v2”,即为当前构建的Tax4Fun2参考数据库。在随后的功能预测环节,物种注释、基因组功能预测等,将通过这些库文件实现。

安装依赖,该函数将下载blast(v2.9.0)的当前最新版本,并将二进制程序放置在Tax4Fun2参考库路径中。另外,它还将测试ape和seqinr包是否可用。

#安装依赖
#path_to_working_directory,默认值为在当前工作路径中构建的库,如有需要,通过该参数指定位置
#use_force=FALSE,是否覆盖已有的文件夹,默认为 FALSE
#install_suggested_packages=TRUE,安装 ape 和 seqinr 包,默认为 TRUE
buildDependencies(path_to_reference_data = './Tax4Fun2_ReferenceData_v2', use_force = FALSE, install_suggested_packages = TRUE)

Tax4Fun2参考数据库路径“Tax4Fun2_ReferenceData_v2”中,新添加了blast程序。

Tax4Fun2预测细菌群落功能

接下来,测试Tax4Fun2的使用。

默认过程参考自:https://github.com/bwemheu/Tax4Fun2

1、测试数据集

使用官方提供的数据集测试。

#此命令将自动下载 Tax4Fun2 测试数据
#path_to_working_directory='.',自动下载到当前工作路径下,如有需要,通过该参数指定位置
getExampleData(path_to_working_directory = '.')

或者在以下链接手动获取(此外,我在网盘中也保存了一份)。

https://cloudstor.aarnet.edu.au/plus/s/4htgFinDIpzOuKK/download

通过如上命令获取后,这些测试数据自动下载到当前工作路径(以下除“Tax4Fun2_ReferenceData_v2”外,都是)。

接下来使用其中两个重要的文件。

“KELP_otu_table.txt”,就是常说的OTU丰度表(尽管它不是以OTU作为命名,但在习惯上,请允许我继续这样称呼),仅OTU ID及其在各样本(列)中的丰度信息,无OTU注释列。

“KELP_otus.fasta”,即各OTU的代表16S rRNA序列,fasta文件。

2、群落功能预测

第一步,物种注释

可以看到,和旧版Tax4Fun相比,新版Tax4Fun2中不再要求输入带SILVA特定版本注释的OTU丰度表。Tax4Fun2中,将使用提供的OTU代表16S rRNA序列,和已构建好的参考数据库中的已知物种的16S rRNA序列进行比对(默认调用blastn程序实现),根据相似性获得物种注释。

#物种注释
#指定 OTU 代表序列、Tax4Fun2 库的位置、参考数据库版本、序列比对(blastn)线程数等
runRefBlast(path_to_otus = 'KELP_otus.fasta', path_to_reference_data = './Tax4Fun2_ReferenceData_v2', path_to_temp_folder = 'Kelp_Ref99NR', database_mode = 'Ref99NR', use_force = TRUE, num_threads = 4)

Tax4Fun2参考库“Tax4Fun2_ReferenceData_v2”中,有SILVA、NR库等可选(不妨自己点开看一下),上述使用了Ref99NR。

运行等待一会儿后,工作路径下获得“Kelp_Ref99NR”,存放了比对结果,输入序列和库中目标序列的最佳匹配。

第二步,KEGG OrthologyKO)功能及代谢途径丰度预测

在获得物种注释后,继续根据物种基因组的功能特征,结合OTU丰度表给出的物种丰度信息,推断群落功能丰度。

#预测群落功能
#指定 OTU 丰度表、Tax4Fun2 库的位置、参考数据库版本、上步的物种注释结果路径等
makeFunctionalPrediction(path_to_otu_table = 'KELP_otu_table.txt', path_to_reference_data = './Tax4Fun2_ReferenceData_v2', path_to_temp_folder = 'Kelp_Ref99NR', database_mode = 'Ref99NR', normalize_by_copy_number = TRUE, min_identity_to_reference = 0.97, normalize_pathways = FALSE)#或者
makeFunctionalPrediction(path_to_otu_table = 'KELP_otu_table.txt', path_to_reference_data = './Tax4Fun2_ReferenceData_v2', path_to_temp_folder = 'Kelp_Ref99NR', database_mode = 'Ref99NR', normalize_by_copy_number = TRUE, min_identity_to_reference = 0.97, normalize_pathways = TRUE)

normalize_by_copy_number=TRUE,对于很多细菌而言,一个个体可能包含多条16S(多拷贝16S),因此推荐在原始OTU 16S rRNA丰度表的基础上,根据物种所含16S rRNA拷贝数对物种丰度进行标准化,得到校正16S rRNA拷贝数后的OTU丰度表后进行功能丰度映射。

normalize_pathways=FALSE,将每个KO的相对丰度关联到它所属的每个pathway;normalize_pathways=TRUE,每个KO的相对丰度平均分配给分配给它的所有pathway。

最后获得两个结果文件,如下所示。

“functional_prediction.txt”,预测到的功能基因在各样本中的相对丰度,功能基因映射到KO功能中(即KO第4级分类单元)。根据KO ID及功能描述信息,若有感兴趣的,可在KEGG官网(https://www.genome.jp/kegg/pathway.html)查询获得更多细节。

“pathway_prediction.txt”,将功能基因丰度映射到其所属的代谢途径(KEGG pathway,即KO第3级分类单元)中,获得各样本中各pathway的相对丰度。在这里也能看到Tax4Fun2和早期版本的Tax4Fun相比的一个改进点,就是将这些pathway所属的更高级KO分类单元也给了出来,方便我们归类分析;而早期版本的Tax4Fun中是没有这些高级分类信息的(通常还需手动添加,我在前文Tax4Fun教程中也提到了手动添加到方法)。

3、统计分析

获得群落功能丰度表后,就可以按照OTU丰度表的统计分析方法,去执行类似的分析了。这点可以找一些文献作参考,看别人是怎样做的。例如,首先计算特定功能丰度在组间的显著性,获得组间差异显著的功能,然后再从数据库官网上查询该功能的细节,解释生物学现象等。

Tax4Fun2的其它实用功能

除了基于16S rRNA丰度的细菌群落功能预测,Tax4Fun2还提供了其它很多实用功能。上述我们下载了Tax4Fun2的示例数据。除了OTU丰度表以及OTU代表序列外,还有很多其它文件,继续使用这些示例数据作展示。

同样地,参考自:https://github.com/bwemheu/Tax4Fun2

构建自定义参考集

Tax4Fun2还允许我们自定义构建参考集,充分体现了它的灵活性。

1、提取SSU序列

指定一个单一物种基因组序列fasta文件,或者包含多个基因组fasta文件的文件夹。基因组序列中必须含有至少一个拷贝的16S rRNA基因序列,运行命令可获取其中的16S rRNA序列,并删除“空”基因组。

#提取 SSU 序列,16S rRNA
#给定单个基因组
extractSSU(genome_file = 'OneProkaryoticGenome.fasta', file_extension = 'fasta', path_to_reference_data = './Tax4Fun2_ReferenceData_v2')#给定多个基因组
extractSSU(genome_folder = 'MoreProkaryoticGenomes', file_extension = 'fasta', path_to_reference_data = './Tax4Fun2_ReferenceData_v2')

2、为原核基因组分配功能

类似地,指定一个单一物种基因组序列fasta文件,或者包含多个基因组fasta文件的文件夹。Tax4Fun2将调用prodigal、diamond blast等程序,实现类似原核物种基因组功能注释的过程。

#为原核基因组分配功能
#给定单个基因组
assignFunction(genome_file = 'OneProkaryoticGenome.fasta', file_extension = 'fasta', path_to_reference_data = './Tax4Fun2_ReferenceData_v2', num_of_threads = 1, fast = TRUE)#给定多个基因组
assignFunction(genome_folder = 'MoreProkaryoticGenomes/', file_extension = 'fasta', path_to_reference_data = './Tax4Fun2_ReferenceData_v2', num_of_threads = 1, fast = TRUE)

3、生成参考数据

提取SSU序列以及完成基因组功能分配后,对于每个给定的基因组至少获得两个文件:一个记录SSU序列,一个记录功能注释概况。最后指定这些文件所在的文件夹并提供正确的文件扩展名,生成最终数据集。

#生成参考数据,文档中提供了 3 种方法
#推荐选择第二种,该命令包含一个 uclust 聚类步骤,可消除数据中的冗余
# 1) Generate user-defined reference data without uclust from a single genome
generateUserData(path_to_reference_data = './Tax4Fun2_ReferenceData_v2', path_to_user_data = '.', name_of_user_data = 'User_Ref0', SSU_file_extension = '_16SrRNA.ffn', KEGG_file_extension = '_funPro.txt')# 2) Generate user-defined reference data without uclust
generateUserData(path_to_reference_data = './Tax4Fun2_ReferenceData_v2', path_to_user_data = 'MoreProkaryoticGenomes', name_of_user_data = 'User_Ref1', SSU_file_extension = '_16SrRNA.ffn', KEGG_file_extension = '_funPro.txt')# 3) Generate user-defined reference data without uclust
generateUserDataByClustering(path_to_reference_data = './Tax4Fun2_ReferenceData_v2', path_to_user_data = 'MoreProkaryoticGenomes', name_of_user_data = 'User_Ref2', SSU_file_extension = '_16SrRNA.ffn', KEGG_file_extension = '_funPro.txt', use_force = TRUE)

计算(多)功能冗余指数(functional redundancy indices,FRI)

计算KEGG功能的系统发育分布(高FRI->高冗余度,低FRI ->低冗余度,并可能随群落变化而丢失)。

##计算(多)功能冗余指数(FRIs)
#OTU 代表序列与数据库参考序列的 blast
runRefBlast(path_to_otus = 'Water_otus.fna', path_to_reference_data = './Tax4Fun2_ReferenceData_v2', path_to_temp_folder = 'Water_Ref99NR', database_mode = 'Ref99NR', use_force = TRUE, num_threads = 4)#计算 FRIs 值
calculateFunctionalRedundancy(path_to_otu_table = 'Water_otu_table.txt', path_to_reference_data = './Tax4Fun2_ReferenceData_v2', path_to_temp_folder = 'Water_Ref99NR', database_mode = 'Ref99NR', min_identity_to_reference = 0.97)

参考文献

Wemheuer F, Taylor J A, Daniel R, et al. Tax4Fun2: a R-based tool for the rapid prediction of habitat-specific functional profiles and functional redundancy based on 16S rRNA gene marker gene sequences. bioRxiv, 2018.

猜你喜欢

10000+:菌群分析 宝宝与猫狗 梅毒狂想曲 提DNA发Nature Cell专刊 肠道指挥大脑

系列教程:微生物组入门 Biostar 微生物组  宏基因组

专业技能:学术图表 高分文章 生信宝典 不可或缺的人

一文读懂:宏基因组 寄生虫益处 进化树

必备技能:提问 搜索  Endnote

文献阅读 热心肠 SemanticScholar Geenmedical

扩增子分析:图表解读 分析流程 统计绘图

16S功能预测   PICRUSt  FAPROTAX  Bugbase Tax4Fun

在线工具:16S预测培养基 生信绘图

科研经验:云笔记  云协作 公众号

编程模板: Shell  R Perl

生物科普:  肠道细菌 人体上的生命 生命大跃进  细胞暗战 人体奥秘

写在后面

为鼓励读者交流、快速解决科研困难,我们建立了“宏基因组”专业讨论群,目前己有国内外5000+ 一线科研人员加入。参与讨论,获得专业解答,欢迎分享此文至朋友圈,并扫码加主编好友带你入群,务必备注“姓名-单位-研究方向-职称/年级”。PI请明示身份,另有海内外微生物相关PI群供大佬合作交流。技术问题寻求帮助,首先阅读《如何优雅的提问》学习解决问题思路,仍未解决群内讨论,问题不私聊,帮助同行。

学习16S扩增子、宏基因组科研思路和分析实战,关注“宏基因组”

点击阅读原文,跳转最新文章目录阅读

基于16S的细菌群落功能预测工具Tax4Fun2相关推荐

  1. 16S的细菌群落功能预测工具PICRUSt2学习

    2018年推出了全新版本的PICRUSt,即PICRUSt2(https://github.com/picrust/picrust2) PICRUSt2 (Phylogenetic Investiga ...

  2. 微生物群落功能预测工具

    微生物群落研究主要有16S/ITS多样性测序.宏基因组测序还有宏转录组测序等研究手段.其中16S/ITS等多样性测序由于价格便宜,性价比高而经常使用. 利用16S/ITS多样性测序,我们可以准确知道群 ...

  3. 计算机与科学唐家琪,基于网络分析的蛋白质功能预测方法研究

    摘要: 蛋白质是执行生物体内各种重要生物活动的大分子,认识其功能对推动生命科学.农业.医疗等领域的发展意义重大.传统的生物实验测定蛋白质的功能需要消耗大量的人力.物力.财力,并且效率低下,已无法满足数 ...

  4. 【R生态】基于16S的细菌群落的功能预测

  5. 基因功能预测工具-HMMER的安装

    最近几天需要集中安装软件,尤其是不需要conda安装的,存在依赖的软件,尽量的自己去配置环境变量,针对个别在安装时报错的软件,简单记录一下,等过段时间有了数据后,会再具体的写一些这些软件的具体使用方法 ...

  6. PICRUSt2功能预测分析

    16S高通量测序的群落数据分析中,更深层次的数据挖掘是很重要的一环,但是微生物群落标记基因测序的一个局限性就在于它无法提供有关采样群落功能组成的信息.所以我们引入了功能预测分析. "功能&q ...

  7. 论文解读:PF磷酸:基于机器学习的磷酸化位点预测疟原虫蛋白的工具

    Title:Pf-Phospho: a machine learning-based phosphorylation sites prediction tool for Plasmodium prot ...

  8. MicFunPred——最新16S rRNA扩增子数据功能预测数据库

    近年来,基于扩增子测序进行物种的功能预测是研究微生物群落功能的主要方面,目前最常用的软件包括Tax4Fun以及PICRUSt2.关于这两款软件的使用方法详可参见凌波微课|扩增子研究第十六讲:扩增子测序 ...

  9. 16S+功能预测发Sciences:尸体降解过程中的微生物组

    Metcalf, J. L., et al. (2016). "Microbial community assembly and metabolic function during mamm ...

最新文章

  1. ASP.NET MVC 5 入门教程 (2) 控制器Controller
  2. 【Python基础】嵌套 JSON 秒变 Dataframe!
  3. 因OpenCV版本不一致所引发的报错
  4. oracle 自治数据库 培训,Oracle数据库掌门人,Andrew Mendelsohn 谈自治数据库
  5. 用python turtle库画正方形_用Python Turtle画一个正方形
  6. 百望税控服务器管理系统安装,电子发票客户端安装和配置操作说明
  7. 共享hp无线扫描到计算机,共享HP / HP扫描仪的OpenWrt路由器
  8. theano java_theano安装问题(示例代码)
  9. 公历转农历C语言课程设计,(只为学习)公历转农历代码以完成,请高手在此代码基础上写出个农历转公历的代码出来...
  10. oracle赋权directory,ORACLE DIRECTORY目录管理步骤
  11. 一种高效查找树-radix的实现
  12. 出现Illegal invocation的报错
  13. 红孩儿编辑器模块设计7
  14. Mybatis-----实验小结
  15. 3D人体姿态估计论文汇总(CVPR/ECCV/ACCV/AAAI)
  16. 360卫士锁定IE主页之更换主页
  17. 03 ,线性代数 :集合,空间,群,阿贝尔群,向量,向量空间
  18. 计算机学院写论文格式,写作计算机论文的标准格式是什么
  19. Appium 常用初始化启动参数 Capability详解
  20. 【百问网】七天智能家居实战

热门文章

  1. 数据库访问层中间件Zebra
  2. Telink TL825X 安信可TB-02在水塔水位控制器中的应用
  3. 工程打包是什么意思_各位前辈,请问工程合同大包价是什么意思?是包死价吗?...
  4. 【解决方案】RTMP推流协议视频智能分析/直播点播/人脸识别平台EasyDSS打造智能多媒体展厅解决方案
  5. 凝胶色谱法GPC仪器原理
  6. iOS自动化测试-环境搭建
  7. 解决win10电脑无法卸载matlab7.1的问题
  8. 【Java】Java 开发手册以及规范
  9. 基于matlab和FFT算法实现信号频谱分析
  10. Halcon不使用标定板如何矫正畸变?