前言

本文转载自微生物生态公众号,己获授权。主编刘永鑫对本文进行了测试、版本更新、添加部分操作代码。

前段时间卢瑟菌已经给大家普及了基于原核16S rDNA高通量测序结果对微生物群落功能或表型进行预测的四种方法——PICRUStTax4FunFAPROTAXBugBase(详细戳这里)。本篇软文针对功能预测的一支新秀——FAPROTAX,详细介绍其使用方法。

关于FAPROTAX的介绍可参阅官网说明或卢瑟菌的软文。

FAPROTAX官网链接:

http://www.zoology.ubc.ca/louca/FAPROTAX/lib/php/index.php?p=Instructions

这里简单一提

FAPROTAX原理

作者先根据文献资料手动构建了联系物种分类与功能注释的FAPROTAX数据库;后又编写了联系OTU分类表与FAPROTAX数据库的python脚本;最后,只要将基于16S的OTU分类表通过python脚本就可以输出微生物群落功能注释预测结果(如下图)。

FAPROTAX特点

FAPROTAX较适用于对环境样本(如海洋、湖泊等)的生物地球化学循环过程(特别是碳、氢、氮、磷、硫等元素循环)进行功能注释预测。因其基于已发表验证的可培养菌文献,其预测准确度较好,但相比于上述PICRUSt和Tax4Fun来说预测的覆盖度可能会降低

PICRUSt输入的物种丰度表目前只能用Greengene数据库进行物种注释,在这一点上FAPROTAX更灵活,因为它识别的是菌的属、种的名称,只要你注释到的菌己被报导有这方面的功能,无论注释数据库是Greengene、Silva和RDP,OTU是有参考还是de novo的结果都可以识别。!

1

准备工作

在使用FAPROTAX做功能预测前,有一些准备工作:

a、FAPROTAX脚本collapse_table.py下载(请使用python 2.7);

b、FAPROTAX功能注释数据库下载;

c、物种丰度表已生成(文本格式、Biom格式)。

FAPROTAX脚本数据库下载:

FAPROTAX是由python语言编写的脚本collapse_table.py

当前最新版本依然是FAPROTAX 1.1,2017年6月10日更新,安装方法如下:

wget http://www.zoology.ubc.ca/louca/FAPROTAX/SECTION_Download/MODULE_Downloads/CLASS_Latest%20release/UNIT_FAPROTAX_1.1/FAPROTAX_1.1.tar.gz # 下载
tar -xvzf FAPROTAX_1.1.tar.gz # 解压
python FAPROTAX_1.1/collapse_table.py # 测试是否可运行,弹出帮助即正常工作 June 10, 2017更新数据库

2

简单操作

假设说我们通过OTU聚类、物种分类注释,已经得到了物种丰度表,接下来我们就可以使用FAPROTAX进行功能预测了!

FAPROTAX可识别的物种丰度表有两种,一种是文本格式(classical (tabular) taxon tables),一种是Biom格式

我基于之前发布扩增子流程中的测试数据进行分析,详见链接原文

1)文本格式命令行:

# 文本OTU表中存在名为taxonomy的列,包括物种分类学信息

biom convert -i result/otu_table_tax.biom -o result/otu_table_tax.txt --table-type="OTU table" --to-tsv --header-key taxonomy

# 将包括物种信息的OTU表转换为功能注释分类表

python FAPROTAX_1.1/collapse_table.py -i result/otu_table_tax.txt -o result/otu_table_tax.faprotax -g FAPROTAX_1.1/FAPROTAX.txt --column_names_are_in last_comment_line -d 'taxonomy' -c '#' -v --force

# --column_names_are_in last_comment_line 指定注释为最后一行

# -d 批定物种信息的列名

2)Biom格式命令行:

# 注释在OTU表最后一列类型,常用

python FAPROTAX_1.1/collapse_table.py -i result/otu_table_tax.biom -o result/otu_table_tax.faprotax -g FAPROTAX_1.1/FAPROTAX.txt --collapse_by_metadata 'taxonomy' -v --force

# 另一种为OTU表行名即为物种信息,通常为summarize_taxa.py生成属水平biom格式

python FAPROTAX_1.1/collapse_table.py -i result/sum_taxa/otu_table4_L6.txt -o result/otu_table_tax.faprotax -g FAPROTAX_1.1/FAPROTAX.txt --force -v

上述,

-i输入文件,物种丰度表;

-g输入文件,FAPROTAX数据库;

-o输出文件,功能丰度表;

--collapse_by_metadata指定biom中的物种信息列

这三个是所有选项中最基本的选项!在其他选项均为默认的情况下,是最简短的命令行。

如果你觉得这三个选项满足不了你的需要,可详细了解更多选项:

http://www.zoology.ubc.ca/louca/FAPROTAX/lib/php/index.php?p=Instructions

以上不同格式得到一个相同的功能表。

3

更多选项

-i, --input_table(必选)

输入,OTU表,tabular或BIOM格式。

-g, --input_groups_file(必选)

输入,FAPROTAX数据库。

-o, --out_collapsed(可选)

输出,功能表,总表。

-s, --out_sub_tables_dir(可选)

输出,功能表,分表,每类功能单独生成一个表(one per functional group),表内仅包含功能相关的OTU。

-r, --out_report(可选)

输出,报告文件,记录每个OTU相关的功能group。

--out_groups2records_table(可选)

输出,列出哪些OTUs与哪组功能相关。1 (association),0 (no association)。

--out_group_overlaps(可选)

输出,列出两组功能共有的OTUs。

--out_group_definitions_used(可选)

输出,输出指定功能group。

-d, --row_names_are_in_column(可选)

指定行名(物种分类)所在列,仅限文本输入文件,首列列号为0,以此类推。

--collapse_by_metadata(可选)

指定行名(物种分类)所在列,仅限Biom输入文件,首列列号为0,以此类推。

--dont_parse_group_metadata(可选)

输出文件不包含任何功能信息。

--column_names_are_in(可选)

指定输入文本文件列名(e.g. sample names)所在位置:'none' (无列名), 'last_comment_line' 和 'first_data_line' (default).

--table_delimiter(可选)

指定输入文本文件分隔方式,默认为'tab'。

--omit_columns(可选)

忽略某列,首列列号为0,以此类推。如要去掉第1,102-104列:--omit_columns '0,101,102,103'。

--group_leftovers_as(可选)

命名未注释到功能的分类,如标记为 'other':--group_leftovers_as 'other'。

-n, --normalize_collapsed(可选)

标准化输出:'none'(不进行标准化, default), 'columns_before_collapsing' (TSS of the OTU table), 'columns_after_collapsing' (TSS of the function table), 'columns_before_collapsing_excluding_unassigned' (TSS of the OTU table restricted to functionally assigned OTUs)。

-v, --verbose(可选)

展示命令执行过程细节

-f, --force(可选)

强制覆盖已存在文件

-h, --help(可选)

帮助文件

如果你觉得看选项的解释不够形象,那么下面有一些选项运用实例。

4

选项应用

1)帮助选项

collapse_table.py -h

2)Biom格式输入、输出,-v 展示命令执行过程细节

collapse_table.py -i tax_table.biom -o func_table.biom -g FAPROTAX.txt -v

注:此处biom表内的IDs对应的是分类信息而不是OTU编号,可由Qiime脚本summarize_taxa.py或summarize_taxa_through_plots.py产生。

3)如果biom表内IDs对应的不是分类信息,则需要指定分类信息所在表内的位置(列),如“taxonomy”。

collapse_table.py -i tax_table.biom -o func_table.biom -g FAPROTAX.txt -v --collapse_by_metadata 'taxonomy'

注:make_otu_table.py或pick_open_reference_otus.py等Qiime脚本产生的biom表属于这种类型。--collapse_by_metadata仅限使用在Biom格式输入时。

4)文本格式(classical (tabular) taxon tables)输入、输出,-d指定分类信息所在表内的位置(列)。

制表符分隔的文本文件

collapse_table.py -i tax_table.tsv -o func_table.tsv -g FAPROTAX.txt -v -d 'taxonomy' -c '#'

注:-d仅限使用在文本格式输入时。输入文件格式,每一行表示一个分类taxa,每一列表示一个物种,物种分类信息存储在名为“taxonomy”的列内。-c # 是说,当文件内出现“#”时,忽略此行(即与“#”的通常用法一致),这就保证,文件的第一个非注释(无“#”)行是列名header line。

5)如果列名也含有“#”,可以使用"--column_names_are_in last_comment_line"告诉电脑,最后一个注释行是列名

collapse_table.py -i tax_table.tsv -o func_table.tsv -g FAPROTAX.txt --column_names_are_in last_comment_line -d 'taxonomy' -c '#' -v

6)如果文件内没有列名,可使用"--column_names_are_in none"告诉电脑列名为空,这样就需要指出物种分类存在于哪一列,如下0表示第一列,以此类推。

collapse_table.py -i tax_table.tsv -o func_table.tsv -g FAPROTAX.txt --column_names_are_in none  -c '#' -v -d 0

7)如果表格有多余的列,如第一列为OTU编号时,或是有样品列不想保存到输出文件,可运行如下指令(例,去掉第1,102-104列)

collapse_table.py -i tax_table.tsv -o func_table.tsv -g FAPROTAX.txt -d 'taxonomy' -c '#' --omit_columns '0,101,102,103' -v

8)未注释到功能的物种分类,标记上other

collapse_table.py -i tax_table.biom -o func_table.biom -g FAPROTAX.txt --group_leftovers_as 'other' -v

9)输出报告文件

collapse_table.py -i tax_table.biom -o func_table.biom -g FAPROTAX.txt -r report.txt -v

10)标准化输出

collapse_table.py -i tax_table.biom -o func_table.biom -g FAPROTAX.txt -n columns_after_collapsing -v

11)指定输出格式。默认情况下,输入和输出格式相同(同为biom或文本格式)。使用"--output_format_collapsed"可指定输出格式

collapse_table.py -i tax_table.biom -o func_table.tsv -g FAPROTAX.txt --output_format_collapsed classical -v

5

补充说明

1)物种分类格式

以下是三种可用的物种分类的格式,不同层次分类用分号隔开,分别表示界、门、纲、目、科、属、种…

k__Bacteria;p__Proteobacteria;c__Gammaproteobacteria;o__Xanthomonadales;f__Xanthomonadaceae;g__Thermomonas;s__fusca

D_0__Bacteria;D_1__Firmicutes;D_2__Bacilli;D_3__Bacillales;D_4__Bacillaceae;D_5__Bacillus;D_6__Bacillus sp. YZ5

Bacteria; Chlorobi; Chlorobia; Chlorobiales; Chlorobiaceae; Chlorobaculum; Chlorobaculum thiosulfatiphilum DSM249T

2)序列注释后,经常会产生一些不够详细的物种分类信息,如注释不到科、属水平。FAPROTAX也允许这种输入,但是这种情况下由于分类不够详细,相应的,能够预测出的功能也更少

6

最后之笔

FAPROTAX的输出结果格式如下:

1)report文件:详细记录了每个功能包含多少个OTU(物种分类),以及包含哪些OTU。基于此,我们可以根据关注的功能找到对应的OTU。

2)功能丰度表:第一列为预测的功能列表,其余为样品列,数值表示相对丰度。基于功能丰度表,我们就可以做出各种样式美美的图。

参考文献:

Louca S, Parfrey L W, Doebeli M. Decoupling function and taxonomy in the global ocean microbiome[J]. Science, 2016, 353(6305): 1272-1277.

猜你喜欢

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

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

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

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

必备技能:提问 搜索  Endnote

文献阅读 热心肠 SemanticScholar Geenmedical

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

16S功能预测   PICRUSt  FAPROTAX  Bugbase Tax4Fun

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

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

编程模板: Shell  R Perl

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

写在后面

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

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

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

如何用FAPROTAX预测微生物群落功能相关推荐

  1. python中序列和列表区别细菌真菌病毒_根据16S预测微生物群落功能最全攻略

    最近,越来越多的证据表明:自然环境(如海洋.土壤等)中的微生物群落功能(functional)组成而非物种(taxonomic)组成与环境因子密切相关:换言之,相似环境中的微生物群落功能更相似,而行使 ...

  2. 根据16S预测微生物群落功能最全攻略

    文章原文转载自"宏基因组"公众号,由于微信图片不支持外部网站访问.请点击原文链接跳转公众号阅读. 根据16S预测微生物群落功能最全攻略

  3. Kaggle比赛冠军经验分享:如何用 RNN 预测维基百科网络流量

    Kaggle比赛冠军经验分享:如何用 RNN 预测维基百科网络流量 from:https://www.leiphone.com/news/201712/zbX22Ye5wD6CiwCJ.html 导语 ...

  4. DL之Keras:基于Keras框架建立模型实现【预测】功能的简介、设计思路、案例分析、代码实现之详细攻略(经典,建议收藏)

    DL之Keras:基于Keras框架建立模型实现[预测]功能的简介.设计思路.案例分析.代码实现之详细攻略(经典,建议收藏) 目录 Keras框架使用分析 Keras框架设计思路 案例分析 代码实现 ...

  5. DeepFunc:一种深度学习框架,可根据蛋白质序列和相互作用准确预测蛋白质功能

    摘要 蛋白质功能的诠释对于从分子水平理解生命具有重要作用.高通量测序产生了大量的原始蛋白质序列,只有大约1%的蛋白质序列被人工标注了功能.函数的实验性注释是昂贵的.耗时的,并且跟不上序列号的快速增长. ...

  6. python预测房价走势_如何用 Python 预测房价走势?

    原标题:如何用 Python 预测房价走势? 买房应该是大多数都会要面临的一个选择,当前经济和政策背景下,未来房价会涨还是跌?这是很多人都关心的一个话题.今天分享的这篇文章,以波士顿的房地产市场为例, ...

  7. 如何用jxTMS开发一个功能(二)

    本文是讲解如何用jxTMS来开发jxTMS示例之故障排查的系列文章中的第二篇.整个系列的文章请查看:如何用jxTMS开发一个功能 维修工程师的现场操作 上文讲过,维修工程师在服务现场有三种操作: 如果 ...

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

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

  9. 一文教你如何用Python预测股票价格,程序员学以致用

    翻译 | AI科技大本营(rgznai100) 参与 | 刘畅 编辑 | 周翔 [AI科技大本营导读]最近,A股尤其是上证指数走势凌厉,让营长有种身在牛市中的错觉.然而大盘天天涨,营长账户中还是那几百 ...

最新文章

  1. Python(五)之迭代器和列表解析
  2. 【DB2】db2命令Export与Import
  3. php时间戳 今天昨天,php求今天、昨天、明天时间戳的简单实现方法
  4. MATLAB中floor、round、ceil、fix区别
  5. lintcode:最小编辑距离
  6. Go学习笔记—Go并发基础
  7. 网页版消消乐快速实现,无代码吗iVX 真那么简单?
  8. tomcat(10)安全性
  9. MacOS下MySQL配置
  10. SVN:show log问题
  11. Get Intellisense for .axml files in Visual Studio
  12. 一个简单的优酷视频链接探测与分享功能
  13. STC学习:按键消抖计数
  14. 【渝粤教育】电大中专电商运营实操 作业 题库
  15. java短视频开发技术_看Java学员如何用前后端分离技术搭建短视频健身APP
  16. 杭电oj 1426 Sudoku Killer(深度优先搜索 回溯)
  17. 区块链支付和第三方支付区别
  18. 猜数字游戏~~~~~~
  19. 提高企业用户量的3个套路
  20. 浪潮gs支持mysql么_浪潮gs中间件服务器,客户端,数据库sqlserver安装注意事项

热门文章

  1. Spring boot、微服务、OAuth、OpenID的爱恨情仇!
  2. 阿里老员工论坛炫耀:每年税前260万,还有三千万期权在握
  3. Java架构体系学习路线图,这六点尤为重要!
  4. LRU算法确定最后使用时间的顺序-栈
  5. Oracle的介绍及其在安装和使用Oracle过程中可能遇到的困难及其相应的解决措施
  6. python读取配置文件获取所有键值对_python笔记14-读取yaml配置文件(pyyaml)
  7. 【LeetCode-515 | 在每个树行中寻找最大值】
  8. go语言中的选择与循环
  9. 11JavaScript中的对象
  10. C++从键盘输入二维数组