终于回来继续写了。本节讲解一下对OTU表的一些基本处理,提取生成你所需要的OTU表。
查看OTU表的count数
当运行完基本的分析流程后,我们往往会想要查看一下每个样本的OTU count数量。知道所有样本的OTU count数量的最小值、最大值、中位数等信息,对我们选取OTU和分析十分重要。如果存在个别样本的测序结果并不理想,count数目过低,那我们可能就需要对之前分析流程的一些参数进行适当的修改。在qiime1我们可以使用来自biom包的命令对OTU表进行总结,具体如下:
biom summarize-table \
-i pick_otus/otu_table_rdp_nochimera.biom \
-o pick_otus/otu_table_rdp_nochimera_stats.txt
接着我们就要思考以下几个问题:
1、什么样的样本应该被保留进行下游分析?
Samples with low OTU-count depth.
Negative samples
OTU-depth cut off (1000 OTU's/sample are suggested)
2、什么样的OTU/Taxa应该被保留?
OTU丰度的阈值应该怎么确定?是使用0.01%还是0.001%?
有一些特殊的taxa是不是应该被剔除?比如Cyanobacteria?
3、针对一个多因素实验,怎么进一步分析仅有的一个OTU表?
为了解决上述的问题,我们就要对OTU表进行过滤,以获得我们需要的那一部分信息数据。
从OTU表中挑选所需的样本
1、正向选择:挑选你需要的想要保留的样本
#从OTU表中挑选所有正常健康人的样本
filter_samples_from_otu_table.py \
-i otu_table.biom \
-o otu_table_filtered.biom \
-m mapping_file.txt \
--output_mapping_fp mapping_file_filtered.txt \
-s 'Condition:CO'
2、反向选择:去除你不需要的要被剔除的样本
#剔除所有正常健康人的样本
filter_samples_from_otu_table.py \
-i otu_table.biom \
-o otu_table_no_gut.biom \
-m mapping_file.txt \
--output_mapping_fp mapping_file_no_gut.txt \
-s 'Condition:*,!CO'
3、多个条件的选择
#选择正常健康的男性样本
filter_samples_from_otu_table.py \
-i otu_table.biom \
-o otu_table_gut_d28.biom \
-m mapping_file.txt \
--output_mapping_fp mapping_file_gut_d28.txt \
-s 'Condition:CO;Sex:1'
基于分组信息分割OTU表
比如你的样本中有一栏信息是样本采集时间,现在你想要根据采集时间对OTU进行划组,那么你就可以输入以下的命令:
split_otu_table.py \
-i otu_table.biom \
-o split_by_month \
-m mapping_file.txt \
-f Month
去除低count数的样本
#去除count数在1000以下的样本
filter_samples_from_otu_table.py \
-i otu_table.biom \
-o otu_table_m1000.biom \
--output_mapping_fp mapping_file_m1000.txt \
--min_count 1000
从OTU表中过滤Taxa
1、OTU水平的过滤
#通常我们会按照万分之一进行过滤
filter_otus_from_otu_table.py \
-i otu_table.biom \
-o otu_table_n01.biom \
--min_count_fraction 0.0001
2、Taxa水平的过滤
a. 正向选择
#只保留phylum水平的Bacteroidetes和Firmicutes
filter_taxa_from_otu_table.py \
-i otu_table.biom \
-o otu_table_only_bacteroidetes_firmicutes.biom \
-p p__Bacteroidetes,p__Firmicutes
b.负向选择
#剔除phylum水平的Bacteroidetes和Firmicutes
filter_taxa_from_otu_table.py \
-i otu_table.biom \
-o otu_table_no_bacteroidetes_firmicutes.biom \
-n p__Bacteroidetes,p__Firmicutes
c.多个条件选择
#保留Firmicutes除了Clostridia class
filter_taxa_from_otu_table.py \
-i otu_table.biom \
-o otu_table_all_firmicutes_no_clostridia.biom \
-p p__Firmicutes \
-n c__Clostridia
3.依据分类水平分割OTU表
不同数字分别代表的分类水平:
1 = kingdom, 2 = phylum, 3 = class, 4 = order, 5 = family 6 = genus, 7 = species
#获得Class水平的OTU表
split_otu_table_by_taxonomy.py \
-i otu_table.biom \
-o otu_table_by_level3 \
-L 3
网友评论