16S 基础知识、分析工具和分析流程详解
工作中有个真理:如果你连自己所做的工作的来龙去脉都讲不清楚,那你是绝对不可能把这份工作做好的。
这适用于任何行业。如果你支支吾吾,讲不清楚,那么说难听点,你在混日子,没有静下心来工作。
检验标准:随时向别人解释你的工作,让别人提出尖锐的问题,看你是不是答不上来。
16S概念
- 什么是16S?S是什么意思?
- 16S分析是用来干嘛的?能分析什么?
- 16S大致的分析原理是什么?
有点生物学基础的会知道16S和核糖体有关,但大多数还是搞不清楚它们之间的关系。
先明确一些概念:
核糖体:Ribosome,由 RNA(rRNA)和蛋白质 组成,配合 tRNA 来翻译 mRNA。核糖体按沉降系数来分类,S就是沉降系数,原核70S,真核80S。我们一般研究微生物,70S,由50S和30S两个亚基组成。再细分为 5S、16S、23S,我们的 16S 就是指核糖体的亚基的一个组分,16S rRNA。(记住,这是原核生物核糖体的一个组分)
16S rRNA:这并不是我们的研究对象,因为我们测序的不是它,而是它对应在DNA双链上的基因序列,
16S rDNA。可以这样理解,我们所说的16S 就是指 16S rDNA。
分子钟:即氨基酸在单位时间以同样的速度进行置换。16S 的进化具有良好的时钟性质,在结构与功能上具有高度的保守性,在大多数原核生物中rDNA都具有多个拷贝,5S、16S、23S rDNA的拷贝数相同。16S rDNA由于大小适中,约1.5Kb左右,既能体现不同菌属之间的差异,又能利用测序技术较容易地得到其序列,故被细菌学家和分类学家接受。(来源百度)
所以,16S测序的大致逻辑就是:
拿到一个样品,我们捕获其16S区域(引物PCR),然后测序,16S既然有极好的保守性,那就可以用于鉴别不同的物种(相当于一个物种的独一无二的条形码)(有很大一部分是鉴定不到物种的)。
分析逻辑就是聚类成OTU,然后注释(比对已知数据库),后续分析。
偶然看到一篇好的科普文,转载一下:来自伯豪生物
1、16S
通常所说的16S是指16S rDNA(或16S rRNA),16S rRNA 基因是编码原核生物核糖体小亚基的基因,长度约1542bp,包括9个可变区和10个保守区,保守区序列反映了物种间的亲缘关系,而可变区序列则能反映物种间的差异。
因16S rDNA分子大小适中,突变率小,故成为细菌系统发育和分类鉴定最常用的标签。
16S测序是指选择16S rDNA某个或某几个变异区域,选择通用引物对环境样本(肠道、土壤、水体等)微生物进行PCR扩增,然后对PCR产物进行高通量测序,并将得到的测序数据与已有的16S rDNA数据库进行比对分析,从而对环境群落多样性进行研究,核心是物种分析,包括微生物的种类,不同种类间的相对丰度,不同分组间的物种差异以及系统进化等。
16S rDNA序列结构
2、OTU
OTU即Operational Taxonomic Units的缩写(千万表手滑写成OUT,否则就OUT了),在系统发生学或群体遗传学研究中,为了便于进行分析,人为给某一个分类单元(品系,属,种、分组等)设置的同一标志。理论上一个OTU代表一个微生物物种。
通过测序获得的大量reads,如何才能转变为我们需要的物种信息呢?首先需要对这些reads进行归类(cluster),通常在97%的相似水平划分为不同的OTU,将OTU代表序列与相应的微生物数据库比对(Silva、RDP、Greengene等),得到每个样本所含的物种信息,进而进行后续生物信息统计分析。
3、Q值
Q值评估用来测序的碱基质量,Q值与测序错误E值之间关系为如果一个碱基的Q值为20,那表示这个碱基的可能测错的可能性为1%。实际操作中常用Q20/Q30作为标准,Q20大于90%妥妥的。
4、Coverage
Coverage值是指各样本文库的覆盖率,数值越高,则样本中序列被检测出来的概率越高,该数值可反映本次测序结果是否代表样本的真实情况。数值越接近于100%,代表本次测序结果越符合样本中微生物的实际情况。
5、Alpha-diversity
Alpha多样性用于度量群落生态单样本的物种多样性,是反映丰富度和均匀度的综合指标。
菌群丰富度(Community richness)指数有:Chao、Ace,Chao或Ace指数越大,说明菌群丰富度越高。
菌群多样性(Community diversity)指数有:Shannon、Simpson,Shannon值越大,说明群落多样性越高;Simpson指数值越大,说明菌群多样性越低。
根据各样本生成的OTU,对样本序列进行随机取样,以取出的序列数及这些序列所能代表的OTU数构建曲线,计算样本的Alpha多样性。
通常Alpha多样性指数均以表格形式呈现,这显然不利于论文颜值的提升,那么可以将Alpha多样性指数结合起来,出个箱线图(Box-plot)或可有所帮助。
6、Beta-diversity
Beta多样性用于不同生态系统之间多样性的比较,利用各样本序列间的进化关系及丰度信息来计算样本间距离,反映样本(组)间是否具有显著的微生物群落差异。目前应用比较多的是PCA、PCoA、NMDS分析等。由于微生物多样性研究通常会涉及到大样本数量的样本,因此通过Beta-diversity分析可以直观地反映样本组间的差异情况。距离越远,微生物群落差异越大,即相似性越高。
7、LEfSe
LEfSe分析即LDA Effect Size分析,多用于多个分组(≧2)之间的比较,或者进行亚组比较分析,进而找到组间在丰度上有显著差异的物种(biomaker)。
基本过程是首先在多组样本中采用非参数因子Kruskal-Wallis秩和检验检测不同分组间丰度差异显著的物种;然后基于获得的显著差异物种,利用成组的Wilcoxon秩和检验进行组间差异分析;最后采用线性判别分析(LDA)对数据进行降维并评估差异显著的物种的影响力大小(即LDA score)。
LEfSe分析包含了不同分类学水平(门到属或者种)的物种信息,并且是显著差异的物种,因而是一项信息量大、采用率(biger)高的分析,值得拥有~~~
16S分析流程
建库测序暂且跳过,一下是我们拿到测序数据后的分析步骤:
- 过滤Filter
- 连接Connect Tags
- 聚类OTU Cluster
- 分类Taxonomy
- 多样性Alpha_Beta
- 。。。
Hiseq 的 16S分析流程已经比较成熟了,网上能搜到一些pipeline。
PacBio的 16S分析是最近才开发出来的。
参考文章:High-resolution phylogenetic microbial community profiling
以下是该文章的分析流程:
可以看到,PacBio 16S中大部分都在使用 mothur,这真是个好工具啊,还有详细的教程。
还有详细的数据库: Alignment database(greengenes 和 SILVA)
16S分析细节
- step01.OTU_Cluster.sh
- step02.OTU_Taxonomy.sh
- step03.Alpha_Diversity.sh
- step04.OTU_Analysis.sh
以下一次详解:
step01.OTU_Cluster.sh 的核心就是聚类得到 OTU,使用的是mothur,步骤很多。
得到OTU后,将原来的序列比对回得到的OTU上。
usearch7.0.1090/usearch7.0.1090_i86linux32 -usearch_global ./1.Clean_Tags/All_Sample.fasta -db ./2.OTU_Cluster/OTU.fasta -strand both -id 0.97 -uc ./2.OTU_Cluster/global.map.uc
usearch_global command
转化格式
bin/usearch7.0.1090/uc2otutab.py ./2.OTU_Cluster/global.map.uc > ./2.OTU_Cluster/OTU_shared_all.xls
待续~
参考:
16Sr DNA 百科
附录:
稀释性曲线(rarefaction curve)
稀释性曲线(rarefaction curve):一般是从样本中随机抽取一定数量的个体,统计出这些个体所代表物种数目,并以个体数与物种数来构建曲线。它可以用来比较测序数量不同的样本物种的丰富度,也可以用来说明样本的取样大小是否合理。分析采用对优化序列进行随机抽样的方法,以抽到的序列数与它们所能代表OTU的数目构建rarefaction curve。稀释性曲线图中,当曲线趋向平坦时,说明取样的数量合理,更多的取样只会产生少量新的OTU,反之则表明继续取样还可能产生较多新的OTU。因此,通过作稀释性曲线,可以得出样品的取样深度情况。 默认是在 97%相似性水平下划分OUT并制作各样品的稀疏曲线。
画OTU Rank curve
data <- read.table("Sample.OTU_rank_percent.xls",header=T,check.names=F)
data <- t(data)
data <- data[rowSums(is.na(data)) != 16,]
library("RColorBrewer")
col=c("#00FF40FF","#FF0000FF","#00FFFFFF")
x_point=as.numeric(rownames(data))
x=max(x_point,na.rm=T)
x=x*1.1
y=max(data[,1:ncol(data)],na.rm=T) pdf("Sample.OTU_rank.pdf",width=6+1*1,height=6)
par(mai=c(1,1,0.5,1*1))
par("usr")
plot(x,y,xlim=c(0,x),ylim=c(0.0005,100),type="n",xlab="Number of OTUs",ylab="Relative abundance(%)",main="OTU Rank Curve",tcl=-0.2,mgp=c(3,0.3,0),cex.lab=1.2,las=1,log="y",yaxt="n")
axis(2,tcl=-0.2,at=c(0.001,0.01,0.1,1,10,100),labels=c(0.001,0.01,0.1,1,10,100),las=1,hadj=0.6) points(x_point,data[,1],lwd=2,lty=1,cex=0.6,col=col[1],type="l") #C1
points(x_point,data[,2],lwd=2,lty=1,cex=0.6,col=col[2],type="l") #C3.1
points(x_point,data[,3],lwd=2,lty=1,cex=0.6,col=col[3],type="l") #C3.2 legend(par("usr")[2],10^par("usr")[4],legend=colnames(data),col=col[1:3],pch=15,pt.cex=1.2,cex=0.9,bty="n",ncol=1,xpd=TRUE)
dev.off() png("Sample.OTU_rank.png",type="cairo",width=6+1*1,height=6,units="in",res=120)
par(mai=c(1,1,0.5,1*1))
plot(x,y,xlim=c(0,x),ylim=c(0.0005,100),type="n",xlab="Number of OTUs",ylab="Relative abundance(%)",main="OTU Rank Curve",tcl=-0.2,mgp=c(3,0.3,0),cex.lab=1.2,las=1,log="y",yaxt="n")
axis(2,tcl=-0.2,at=c(0.001,0.01,0.1,1,10,100),labels=c(0.001,0.01,0.1,1,10,100),las=1,hadj=0.6) points(x_point,data[,1],lwd=2,lty=1,cex=0.6,col=col[1],type="l") #C1
points(x_point,data[,2],lwd=2,lty=1,cex=0.6,col=col[2],type="l") #C3.1
points(x_point,data[,3],lwd=2,lty=1,cex=0.6,col=col[3],type="l") #C3.2 legend(par("usr")[2],10^par("usr")[4],legend=colnames(data),col=col[1:16],pch=15,pt.cex=1.2,cex=0.9,bty="n",ncol=1,xpd=TRUE)
dev.off()
16S 基础知识、分析工具和分析流程详解的更多相关文章
- 网络基础知识-TCP/IP协议各层详解
TCP/IP简介 虽然大家现在对互联网很熟悉,但是计算机网络的出现比互联网要早很多. 计算机为了联网,就必须规定通信协议,早期的计算机网络,都是由各厂商自己规定一套协议,IBM.Apple和Micro ...
- Android学习之基础知识二(build.gradle文件详解)
一.详解build.gradle文件 1.Android Studio是采用Gradle来创建项目的,Gradle是非常先进的构建的项目的工具,基于Groovy领域特定的语言(DSL)来声明项目配置, ...
- Jvm(jdk8)源码分析1-java命令启动流程详解
JDK8加载源码分析 1.概述 现在大多数互联网公司都是使用java技术体系搭建自己的系统,所以对java开发工程师以及java系统架构师的需求非常的多,虽然普遍的要求都是需要熟悉各种java开发框架 ...
- linux分析工具之top命令详解
Linux系统可以通过top命令查看系统的CPU.内存.运行时间.交换分区.执行的线程等信息.通过top命令可以有效的发现系统的缺陷出在哪里.是内存不够.CPU处理能力不够.IO读写过高. 一.top ...
- Android学习之基础知识十三 — 四大组件之服务详解第一讲
一.服务是什么 服务(Service)是Android中实现程序后台运行的解决方案,它非常适合去执行那些不需要和用户交互而且还要求长期运行的任务.服务的运行不依赖于任何用户界面,即使程序被切换到后台, ...
- MySQL 基础知识梳理学习(五)----详解MySQL两次写的设计及实现
一 . 两次写提出的背景或要解决的问题 两次写(InnoDB Double Write)是Innodb中很独特的一个功能点.因为Innodb中的日志是逻辑的,所谓逻辑就是比如插入一条记录时,它可能会在 ...
- Android学习之基础知识十三 — 四大组件之服务详解第二讲(完整版的下载示例)
上一讲学习了很多关于服务的使用技巧,但是当在真正的项目里需要用到服务的时候,可能还会有一些棘手的问题让你不知所措.接下来就来综合运用一下,尝试实现一下在服务中经常会使用到的功能——下载. 在这一讲我们 ...
- Android学习之基础知识六—Android四种布局详解
一.Android基本布局 布局是一种可以放置多个控件的容器,它可以按照一定规律调整内部控件的位置,而且布局内部除了可以放置控件外,还可以放置布局,实现多层布局嵌套.布局和控件.布局和布局之间的关系如 ...
- 基础知识《七》---Java多线程详解
- vue.js基础知识篇(7):表单校验详解
目录 网盘 第12章:表单校验 1.npm安装vue-validator $ npm install vue-validator 代码示例: var Vue=require("vue&quo ...
随机推荐
- webstorm使用心得
收藏夹功能:当工程目录很庞大时,有些子目录很经常打开,但层级又很深,这时候可以把目录添加到收藏夹里面,添加成功后,左侧有个“Favorites”菜单 面包屑导航:除了左侧的工程页面,可以选择目录之外, ...
- 公司里面用的iTextSharp(教程)---关于PDF的属性设置
下面介绍下怎么添加属性,代码如下: protected void Button1_Click(object sender, EventArgs e) { Document doc = new Do ...
- Java线程基础知识(状态、共享与协作)
1.基础概念 CPU核心数和线程数的关系 核心数:线程数=1:1 ;使用了超线程技术后---> 1:2 CPU时间片轮转机制 又称RR调度,会导致上下文切换 什么是进程和线程 进程:程序运行资源 ...
- linux常用命令:which 命令
我们经常在linux要查找某个文件,但不知道放在哪里了,可以使用下面的一些命令来搜索: which 查看可执行文件的位置. whereis 查看文件的位置. locate 配合数据库查看文件位置 ...
- linux基础命令---umask
umask 指定创建文件时所需要的权限掩码,掩码的执行权限对于文件没有效果.如果模式以数字开头,则解释为八进制数字:否则解释为符号模式掩码,类似于chmod(1)所接受的模式掩码.如果省略模式,则打印 ...
- Linux服务器配置---phpmyadmin
phpMyAdmin 工具 1.检测是否已安装php.php-mysql.apache等工具 [root@localhost src]# rpm -qa |grep php php-cli-5.3.3 ...
- Linux基础命令---rmdir
rmdir 删除一个空目录,可以同时删除途经的父目录,但是要确保父目录中没有其他内容. 此命令的适用范围:RedHat.RHEL.Ubuntu.CentOS.SUSE.openSUSE.Fedora. ...
- MySQL数据库读写分离、读负载均衡方案选择
MySQL数据库读写分离.读负载均衡方案选择 一.MySQL Cluster外键所关联的记录在别的分片节点中性能很差对需要进行分片的表需要修改引擎Innodb为NDB因此MySQL Cluster不适 ...
- 中国用户通过rchange用银联充值到PerfectMoney再给BTC-E充值进行搬砖的方法
最近迷上了比特币这个疯狂的东西,相信很多技术人员都感兴趣. 比特币.莱特币钱包下载和把数据迁移到C盘以外其他盘的方法. 莱特币和山寨币的原理跟比特币基本上一样,可以参考这个方法进行,莱特币的钱包数据迁 ...
- php多进程结合Linux利器split命令实现把大文件分批高效处理
有时候会遇到这样的需求,比如log日志文件,这个文件很大,甚至上百M,需要把所有的日志拿来做统计,这时候我们如果用单进程来处理,效率会很慢.如果我们想要快速完成这项需求,我们可以利用Linux的一个利 ...