Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >为了更精确的定量:宏基因组gene丰度分析工具的比较

为了更精确的定量:宏基因组gene丰度分析工具的比较

作者头像
SYSU星空
发布于 2022-05-05 06:25:20
发布于 2022-05-05 06:25:20
1.4K00
代码可运行
举报
运行总次数:0
代码可运行

之前常有做宏基因组的朋友问我,为什么他们计算基因丰度获得的结果中,有些基因的丰度为零。理论上所有的contig序列均由reads拼装而得,而基因作为contig序列上一个区域,不该没有reads比对上。其实,这些丰度为零的基因反映了宏基因组gene丰度计算一个很容易犯的错误。非常抱歉的是,我在之前文章零代码计算contigs与genes丰度一文中,并没有及时认识并纠正这个错误,现在亡羊补牢,希望对大家能有所帮助!

宏基因组分析Pipeline

测序数据的解析:Fastq与FastQC

测序数据的质控:Trimmomatic!

宏基因组reads筛选:去除宿主序列

测序数据的组装:常用软件工具

宏基因组多样品的混合组装

Contigs与genes丰度计算

宏基因组gene丰度不同工具比较

免组装宏基因组群落分析

GraPhlAn物种谱可视化

宏基因组编码基因预测

宏基因组bins质量评估

宏基因组binning: Metabat

更新中……

在宏基因组项目中,微生物的DNA被随机打断成短的序列片段,经过测序获得reads,然后使用组装工具将reads进行拼接复原DNA序列,也即contig序列。要想获得contigs的测序深度(即depth),我们可以使用Bowtie2将reads回帖到contigs,再根据回贴情况分析平均depth。

基因序列为contigs上预测的编码区域。因此理论上,同一条contig序列上的genes应该具有相似的深度。由于在contigs回贴时,我们很容易根据bam文件获得一条contig不同区域的depth,再结合gene的起止位置,我们可以获得一条contig上所有genes的真实depth信息:

图中红线为该contig的平均depth。可以看到,虽然gene的depth并不严格等于contig的平均depth,但总体上围绕着该值呈近似的高斯分布。如果你具备小小的编程基础,完全可以根据这些depth信息进行标准化,从而获得基因的丰度。不过,可能很多朋友直接对gene进行回贴:

直接对gene进行回贴的结果出人意料,获得的gene深度呈现了一定的长度依赖性,长度超过1000bp的gene深度比较正常,而1000bp以下的gene其depth随着长度的减小快速降低,甚至有些短gene的深度为零。实际上,很大一部分的原核生物的基因长度小于1000bp,这样获得的depth信息会给后续的分析带来很大的困扰。

究其原因,Bowtie2默认为ene-to-end的回帖方法,也即要求reads必须全部比对到gene序列,而gene仅为contig中间区域,gene两端部分匹配的reads会被丢弃,导致回帖率降低。极端情况下,假如gene的长度小于reads长度,其depth肯定为零。根据这个原理,我们可以推断gene的depth与contig的depth关系:

第二幅图中的红色曲线即为上述公式的图像,可以看到实际情况正好符合我们的推测。Bowtie2也支持local的比对方式(添加参数--local),获得的结果如下所示:

可以看到,结果大为改善,但仍不甚理想,可以明显看到短gene深度的降低。接下来我们试一下其他回贴工具,首先是BBmap:

结果和Bowtie2的默认模式一样糟糕,接下来是BWA的MEM算法,该算法也支持剪接比对,结果如下所示:

可以看到,结果非常完美,与我们自己计算获得的真实depth几乎一样,我们可以比较BWA-MEM和Bowtie2-local的结果:

可以看到,BWA-MEM的比对结果要大大好于Bowtie2-local,能很好地还原gene的实际depth结果。因此,假如你一定要采用gene回贴的方法计算gene的depth和丰度,非常推荐BWA-MEM。

最近也有人推荐使用一款基于非比对方法的快速gene丰度计算工具Salmon,该工具来自转录组和宏转录组领域,速度非常快,它在宏基因组的结果如下:

该工具可以直接给出标准化后的TPM,因此受到很多人追捧。然而其对宏基因组的分析结果非常诡异,短gene的丰度急剧升高,甚至超过正常水平一个数量级。因此,十分不建议在宏基因组的分析中使用Salmon。

当然,一条contig序列的depth不一定是均匀的。当我们提取DNA时,一些微生物的DNA可能正在复制中,此时复制起点附近已经复制完毕,而复制终点附近还未被复制。由于大多数细菌是典型的θ型复制,因此可能出现一个细菌基因组中一半depth较高、一半depth较低:

这也是一条contig上gene丰度产生变化的主要原因之一。

附BWA-MEM的安装方法:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
git clone https://github.com/lh3/bwa.git
cd bwa
make

使用方法:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#首先对参考序列构建idex:
bwa index -p 83_armatimo_gene 83_armatimo_gene.fna
#使用BWA-MEM进行比对:
bwa mem -t 20 83_armatimo_gene 83_clean_1.fq.gz 83_clean_2.fq.gz
bwa mem -t 20 83_armatimo_gene 83_clean_1.fq.gz 83_clean_2.fq.gz > 83_armatimo_gene.sam
#接下来的处理与bowtie2相同。

—END—

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-12-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 微生态与微进化 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
IPtables中SNAT、DNAT和MASQUERADE的含义
IPtables中可以灵活的做各种网络地址转换(NAT),网络地址转换主要有两种:SNAT和DNAT。
全栈程序员站长
2022/07/02
9490
Iptables防火墙规则使用梳理
iptables是组成Linux平台下的包过滤防火墙,与大多数的Linux软件一样,这个包过滤防火墙是免费的,它可以代替昂贵的商业防火墙解决方案,完成封包过滤、封包重定向和网络地址转换(NAT)等功能。在日常Linux运维工作中,经常会设置iptables防火墙规则,用来加固服务安全。以下对iptables的规则使用做了总结性梳理: iptables首先需要了解的: 1)规则概念 规则(rules)其实就是网络管理员预定义的条件,规则一般的定义为“如果数据包头符合这样的条件,就这样处理这个数据包”。规则存储
洗尽了浮华
2018/01/23
3.9K0
Iptables防火墙规则使用梳理
iptables回流方法
遇到的问题:私网内要被访问的(对外网提供服务的)机器这里表示为:私网服务器,它已经通过端口映射功能可以通过公网IP被访问。但是其自身和私网内的其他机器却不能通过公网IP访问这台服务器。 要实现的目标:私网内的机器可以通过其公网IP访问私网内的其它机器或者自身机器。 解决方法: PREROUTING -s 私网网段 -d 公网IP -j DNAT --to-destination 私网服务器地址 POSTROUTING -s 私网网段 -d 私网服务器地址 -j SNAT --to-source 私网网关
用户2135432
2018/06/04
3.3K1
一步步搭建内外网互联:SNAT 和 DNAT 实战教程
最近在学习网络技术时,我对内外网互联的实际应用非常感兴趣,尤其是如何通过 SNAT 和 DNAT 来解决内网访问外网和外网访问内网的问题。为了更好地理解这些概念,我决定亲自动手搭建一个实验环境。这个过程既充满挑战,也让我收获满满。如果你也对网络技术感兴趣或者正在学习 NAT 技术,那么这篇文章一定会对你有所帮助!
神秘泣男子
2024/12/29
3450
一步步搭建内外网互联:SNAT 和 DNAT 实战教程
Iptables NAT:实现网络中转
在本文中,我们将深入解析iptables NAT(网络地址转换)的功能,以及如何使用它进行网络中转。我们会详细解释NAT中使用的PREROUTING、POSTROUTING和OUTPUT链的含义,介绍如何配置DNAT(目标网络地址转换)和SNAT(源网络地址转换),并在内网场景中演示这些概念。最后,我们将阐述如何持久化iptables配置,以保证在重启后仍然生效。
ppxai
2023/11/18
2.6K0
Iptables NAT:实现网络中转
iptable端口重定向 MASQUERADE[通俗易懂]
首先简述下NAT服务器在负载均衡中做了什么,简单的说就是Linux (内核2.4以后是Netfilter肩负起这个使命滴)内核缓冲区修改来源,目标地址。
全栈程序员站长
2022/07/02
12.5K0
iptable端口重定向 MASQUERADE[通俗易懂]
网络地址转换的两种模式:SNAT和DNAT,网络通信的核心
网络地址转换(NAT)是一种在IP网络环境中使用的技术。它的主要功能是在公网和私网之间进行IP地址的转换,从而解决了IPv4地址短缺的问题。NAT可以使得内部网络的主机能够通过一个或者少量的公网IP地址与外部网络进行通信。
网络技术联盟站
2024/06/03
6K0
网络地址转换的两种模式:SNAT和DNAT,网络通信的核心
防火墙之地址转换SNAT DNAT
1、原理:在路由器后(PSOTROUTING)将内网的ip地址修改为外网网卡的ip地址。
拓荒者
2019/03/15
3.2K0
防火墙之地址转换SNAT DNAT
Docker 容器如何访问外部网络以及端口映射原理?
不必太纠结于当下,也不必太忧虑未来,当你经历过一些事情的时候,眼前的风景已经和从前不一样了。——村上春树
山河已无恙
2024/04/11
3.6K0
Docker 容器如何访问外部网络以及端口映射原理?
Linux防火墙-iptables filter表
环境: A机器两块网卡ens33(192.168.8.125)、ens37(192.168.100.1),ens33可以上外网,ens37仅仅是内部网络,B机器只有ens37(192.168.100.100),和A机器ens37可以通信互联。
阿dai学长
2019/04/03
1.2K0
iptables网络数据包工具使用指南,入门使用详解
iptables是 Linux系统中用于管理网络包过滤的工具。它可以用来设置规则,以控制网络数据包的流动。iptables可以用于防火墙、网络地址转换(NAT)和网络包过滤等多种用途。
Mintimate
2023/07/28
2.7K0
iptables网络数据包工具使用指南,入门使用详解
网关服务器iptables的SNAT与DNAT地址转换
SNAT(Source Network Address Translation 源地址转换)是Linux防火墙的一种地址转换操作,也是iptables命令中的一种数据包控制类型,其作用是根据指定条件修改数据包的源IP地址。 DNAT(Destination Network Address Translation 目标地址转换)是Linux防火墙的另一种地址转换操作,同样也是iptables命令中的一种数据包控制类型,其作用是可以根据指定条件修改数据包的目标IP地址和目标端口。
星哥玩云
2022/07/14
2.1K0
网关服务器iptables的SNAT与DNAT地址转换
linux iptable设置防火墙
iptables是组成Linux平台下的包过滤防火墙,与大多数的Linux软件一样,这个包过滤防火墙是免费的,它可以代替昂贵的商业防火墙解决方案,完成封包过滤、封包重定向和网络地址转换(NAT)等功能。在日常Linux运维工作中,经常会设置iptables防火墙规则,用来加固服务安全。以下对iptables的规则使用做了总结性梳理:
全栈程序员站长
2022/09/01
6.1K0
Linux防火墙-nat表
作者介绍:简历上没有一个精通的运维工程师。请点击上方的蓝色《运维小路》关注我,下面的思维导图也是预计更新的内容和当前进度(不定时更新)。
运维小路
2024/11/01
2220
Linux防火墙-nat表
iptables防火墙(三)
NAT(net address translation)网络地址转换,功能是为了实现内网访问公网的。我们知道,IPv4由于可用ip数量有限,不能满足于全球主机网络通信的需求,所以人们设计了内、公网分类的方式。即有些IP仅允许在企业内部局域网使用,不同企业的局域网允许使用相同的IP段。这些IP我们称之为内网IP,内网IP共有以下三大段:
晓天
2019/07/04
2K0
iptables防火墙(三)
Iptables防火墙基础讲解
描述:iptables是常见于linux系统下的应用层防火墙也就是我们所说的软防火墙,从逻辑上隔离开来有效的避免了恶意攻击,还能进行访问过滤;所以使用防火墙正是强有力的防护措施之一。
全栈工程师修炼指南
2022/09/28
1.5K0
Linux系统怎么设置双网卡?教程如下
Linux系统配置双网卡网络接口eth0和eth1,并在服务器上配置NAT(网络地址转换),在公网ip和内部网私有ip地址间配置静态NAT重定向数据包,使服务器成为透明网关从而使得内部网计算机可以无障碍访问外部互联网。   关键词:Redhat Linux;DNS(域名解析服务器);NAT(网络地址转换);iptables规则   步骤:   Step1配置两块网卡的接口地址   设置第一块网卡eth0的IP地址和子网掩码:
会长君
2023/04/26
9.9K0
Iptables 最佳实践 !
考虑一种网络拓扑应用情景,一个内部局域网中有多台服务器提供不同的服务,如web服务、FTP服务、ssh、telnet等,通过服务器(或网关、防火墙)连接外部网络,如果外部网络上的主机需要访问这些服务器,则需要在网关上实现转发。
民工哥
2020/11/09
1.4K0
Iptables 最佳实践 !
快速了解iptables
iptables是一个在Linux操作系统上使用的防火墙工具,它可以用于配置和管理网络数据包的过滤、转发和修改等操作。
编程黑洞
2023/05/16
6130
快速了解iptables
iptables网络安全服务详细使用
iptables防火墙概念说明 开源的基于数据包过滤的网络安全策略控制工具。 centos6.9  --- 默认防火墙工具软件iptables centos7    --- 默认防火墙工具软件firewalld(zone) iptables主要工作在OSI七层的二、三、四层,如果重新编译内核,iptables也可以支持7层控制(squid代理+iptables)。 iptables工作流程(规则匹配流程) iptables是采用数据包过滤机制工作的,所以它会对请求的数据包的包头数据进行分析,并根据我们预先设
863987322
2018/01/24
1.4K0
iptables网络安全服务详细使用
相关推荐
IPtables中SNAT、DNAT和MASQUERADE的含义
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验