Archives

扩增子数据分析之标准化:抽样 or 还是标准化?

扩增子测序数据会遇到样品之间数据量相差很大的情况,这是可能有数据抽平或者数据标准化概念,从技术上可认为有以下操作的方式:

1. 针对序列文件进行抽样,可以是原始测序文件,也可以是合并后的双端序列;
2. 针对OTU表进行标准化;
3. 采用DESeq2进行对原始数值进行标准化。

下面仅仅从技术操作上进行描述:

1. 序列文件进行抽样

使用seqtk samples 对原始数据进行抽样, 操作很简单:

seqtk sample -s 11  OS2_1.R1.fq.gz  5000   > OS2_1.R1.5000.fq.gz
seqtk sample -s 11  OS2_1.R2.fq.gz  5000   > OS2_1.R2.5000.fq.gz

采用相同的seed值, 可以保证可重复,也可以保证R1和R2序列抽样结果可以对应。

针对合并后后序列也是同样操作:

seqtk sample -s 11  merged.fq  5000   > merged.5000.fq

这种策略虽然在概念上对数据进行重新抽样,但是会对构建OTU表构成影响,比如会人为丢掉低丰度序列, 不管uparse或者unoise对丰度都有最低需求, Uparse构建的OTU表会丢掉size<2的序列, unoise 参数默认会设置 <4个。

2. OTU表进行标准换

通常我们使用相对丰度(OTU频率表)进行描述数据,这样可以不用去考虑每个样本的测序量的大小,但是还是可以将所有的序列数(Tags数)映射到统一的测序量上,比如30000条, 可以保证相互丰度不变的情况下对数据进行标准化,该数值会对基于counts 数的计算有影响, 比如多样性指数计算等。 该操作可以通过USEARCH otutab_norm进行计算:

计算标准化需要将浮点数转换成整数,为了避免太多小数,比如0, USEARCH推荐大于2倍样本中典型样本大小, 比如大部分都是30000条, 这时可以选择 60000条。

计算公式:

new = (old * sample_size) / total 

实例:

usearch -otutab_norm otutable_counts.txt  -sample_size 50000  -output otutab_norm.txt
3. VST变换

phyloseq 使用DESeq / DESeq2 进行标准化,并计算丰度差异差异OTU, QIIME也提供了normalize_table.py 用于标准化原始OTU count数。
DESEQ2 提供了 varianceStabilizingTransformation函数对counts进行变化,即VST变换。

实例:

varianceStabilizingTransformation(dds, blind = TRUE, fitType = "parametric")
ps_dds <- estimateSizeFactors(ps_dds)
ps_dds <- estimateDispersions(ps_dds)
getVarianceStabilizedData(dds)

本文材料为 BASE (Biostack Applied bioinformatic SEies ) 课程 Linux Command Line Tools for Life Scientists 材料, 版权归 上海逻捷信息科技有限公司 所有。

Last Update: 2017-10-31 3:36 PM

Comments are closed.