GraphBin:利用组装图对宏基因组contigs进行精细化分类-阿里云开发者社区

开发者社区> 王先森Vicent> 正文

GraphBin:利用组装图对宏基因组contigs进行精细化分类

简介: GraphBin图组装
+关注继续查看

GraphBin:利用组装图对宏基因组contigs进行精细化分类

Bins在文章中的具体含义

动机:宏基因组分析的关键步骤是将reads组装成更长的contigs,然后将contigs分组,这些分组属于宏基因样本中存在的不同物种。

结果:新的分类方法GraphBin,利用装配图并应用标签传播算法来细化现有工具的分类结果。第一次在宏基因组分类中使用组装图和标签传播方法。

1.介绍

为了研究给定宏基因组样本的分类结构,我们需要鉴定现有物种,在组装前将读取的数据进行分类(Reads can be binned)。

虽然(binning reads)可以通过减少计算成本来简化组装过程,但由于读取长度短,可靠性差。

因此许多宏基因组分析先将reads组装成包含更多基因组信息的更长的configs,然后将这些contigs归入不同分类组。

得到binned contigs,他们就可以用来构建宏基因组样本中发现的不同物种的部分或全部基因组。

常用的组装方法:

1.基于成分的方法(composition):每个分类组都有独特的核苷酸,并通过比较核苷酸含量进行分类(为了能够计算,将序列组成信息转化为数值特征向量,根据k-mers频率对物种进行划分)大多数采用传统的机器学习方法

2.基于丰度的分类方法(Abundance-based binning methods)是基于一种假设:在单个样本中,宏基因组序列丰度分布遵循Lander-Waterman模型或者在多个宏基因组样本中高度相关。使用泊松分布,计算量较大,对密切相关菌株序列效果较好。

3.上面两种方法的结合:采用了PCA,概率模型,EM算法等技术

除了以上三种方法,还有BMC3C,COCACOLA,d2sBin等方法

现有方法对短序列,低丰度物种以及近缘物种的序列分类效果不好。因此希望使用装配过程中的contigs的附加信息解决这些问题。


2.方法

GraphBin流程图:

image

首先预处理步骤获得组装图,将reads组装到contigs中获得组装图,然后使用现有的装箱工具将contigs装箱,同时标记组装图,Graph精炼/优化组装图中contigs中的标签(step1),最后,GraphBin执行标签传播和精炼,并输出精炼的装箱结果(分类的过程)

2.1 预处理

2.1.1 将reads组装成configs然后构建组装图

组装工具通过reads中的重叠信息来构造组装图,然后利用重叠信息连接,形成一个连续的序列,该序列中每个read可以通过正确的方式被访问。

在组装图中,contigs表示顶点,configs之间的连接信息表示边

(如果两个contigs之间有显著重叠,组装图中会有一条边连接两个相应的顶点)

该论文中每个边有相同的权重。

相互连接的contigs更可能属于相同的物种。

因此我们可以通过contigs之间的连通信息来判断bin,通常在可视化组装图之后,通过手动细化contigs,可以改善bin结果。

metaSPAdes,SGA,MEGAHIT都是可以从reads构建组装图(算是一些组装工具吧)

metaSPAdes是从原始reads中构建de Bruijin图,然后将其转换为组装图,然后重构组装图中与宏基因组中configs相对应的路径。

SGA使用重叠布局共识的思想,首先修正原始读取中的错误,然后基于修正后的读取之间的重叠构建一个字符串图。

MEGAHIT基于简洁的de Bruijin图。

2.1.2 使用现有的工具组装contigs并标记组装图

选择两种组装工具:MetaWatt(最大似然估计)和MaxBin2(只能对长度大于1000bp的contigs进行组装)来进行组装(在2017年CAMI challenge中表现较好,但是现在是否表现好有待商榷

reference-free binning tools?MetaBat2(2019)(组装长度大于1500bp)、SolidBin(2019)(光谱聚类方法,对长度超过1000bp的configs进行组装)、BusyBeeWeb(2017)(500bp或更长的contigs进行分类,基于web的应用程序通常计算资源有限,因此对于输入的数据的大小进行限制)三种装箱工具

在组装图中,contigs表示顶点,configs之间的连接信息表示边

当contigs被组装后,初始组装图中的相应的顶点就会被标记。顶点用不同的颜色表示属于不同容器的contigs

2.2 基于组装图优化contigs的标签

对于连接在一起的顶点或者位于附近的顶点很有可能是一类,他们之间有更多的相似性,因此,这些顶点应该有相同的标签。优化这些标签使得分类结果更准确。

广度优先搜索:分层搜索过程:从图中某一个顶点开始,由该顶点开始依次访问所有未被访问过的邻居节点,然后,再顺序访问所有邻居中还未被访问的节点,直到所有节点能被访问到。

如果节点被标记,则$L_{(i)}=1$,若未被标记则$L_{(i)}=0$

$d_{L_{(i)}}$表示已经标记的顶点与顶点之间的距离。当$d_{L_{(i)}} \rightarrow \infty $表示所有被标记的顶点不能从i到达。

$CLV_{(i)}$表示顶点i最近的标记顶点的集合,当$d_{L_{(i)}} \rightarrow \infty $,$CLV_{(i)}=\varnothing$

$CLV_{(i)}={j|d(i,j)=d_{l_{(i)}}\ and\ \ L_{(j)}=1}$

给定一个顶点,使用广度优先搜索,找到该顶点与标记顶点之间的距离满足$d_{L_{(i)}}$的点的集合,记作$CLV_{(i)}$

如上图中,$d_{L_{(4)}}=1$则$CLV_{(4)}=\{2,6\}$,同理得到$d_{L_{(13)}}=2$,$CLV_{(13)}=\{8,9\}$

模糊顶点:如果顶点i最近的标记顶点中至少有一个不同于顶点标记的顶点,则该顶点成为模糊顶点,如上图的顶点13就是模糊顶点。

模糊顶点会影响后续的传播过程,因此它会被删除,如上图中的6、7、13顶点,优化后就变成了(b)图。

2.3 运行标签传播和改进

标签传播是一种半监督机器学习技术,可以使用标记数据将标签传播到邻近的未标记数据

标签传播算法通过将标签分配给图中相应标记数据的顶点来进行初始化,在迭代过程中,顶点将其标签传播到邻近的顶点,最后,对具有相似标签的顶点进行聚类。

如果孤立组件中的所有顶点都没有通过现有的装配标签进行预测,则无法通过标签传播来推断孤立组件中的顶点的标签。

改进过程就是删除图中的模糊顶点。

3.实验设计

3.1 数据集

根据未出生婴儿的肠道宏基因组(通常称为沙龙数据集)模拟了几个宏基因组数据集,进而获得了三个最丰富的物种,比例如下:

1.(Enterococcus faecalis)粪肠球菌:70.8%

2.(Staphylococcus aureus)金黄色酿脓葡萄球菌:18.9%

3.Cutibacterium avidum 3.4%

同时在NCBI数据库中下载了完整的参考基因组.

模拟两个数据集,一个包含1和2,简称ES,另外一个包含1,2,3,简称ESC

沙龙数据集:通过对reads进行18次组合形成沙龙数据集

CAMI DATA数据集:选择三个不同的复杂性的微生物群落.

• CAMI_l: Sample from low complexity
• CAMI_m: Sample 1 with 5 kbp insert size from medium complexity
• CAMI_h: Sample 1 from high complexity

3.2 获得contigs,组装图和标签

六个模拟数据集:ES+metaSPAdes, ES+SGA, ES+MEGAHIT,ESC+metaSPAdes, ESC+SGA and ESC+MEGAHIT.

沙龙(sharon)数据集:Sharon+metaSPAdes, Sharon+SGA and Sharon+MEGAHIT

CAM_1数据集:CAMI_l+metaSPAdes, CAMI_l+SGA and CAMI_l+MEGAHIT

CAM_m数据集:CAMI_m+metaSPAdes, CAMI_m+SGA and CAMI_m+MEGAHIT.

CAM_h数据集:CAMI_h+metaSPAdes, CAMI_h+SGA and CAMI_h+MEGAHIT

利用2.1.2中现成的组装工具来得到组装图和标签.

3.3 评估标准

为了确定所有数据集中的contigs的ground-truth物种,我们能使用TAXAssign v0.4对contigs进行标记(https://github.com/umerijaz/TAXAassign)

这个工具:TAXAssign使用BLAST(基本局部对比搜索工具)在NCBI中以给定百分比进行搜索,而对于孤立的contigs(对应的零度顶点)不进行搜索.

为了评估GraphBin,使用了四个量:1.precision,2.recall召回率,3.F1-score,4.ARI(Adjusted Rand Index).

4 结果和讨论

Graph能够提升性能的因素是提供了contigs连接之间的有价值的信息,这些信息是其他工具所没有的.

image

蓝色表示原始工具得分,橙色代表graphbin得分.

可以看到graphbin在每一个数据集中都能获得更好的效果.

4.1 模拟数据集的结果

对于某些性能指标效果不好的原因是丢弃了一些短的bp序列,因此一些相关的指标大大降低.

4.2 沙龙数据集的结果

F1的增加不像模拟数据集那么显著,主要是因为真实数据集的复杂性增加,不均匀的覆盖和物种之间共享的基因组片段,导致装配图出现变化.

4.3 CAMI数据集的结果

随着数据集复杂性的增加,分类结果的改善逐渐减小,也就不是很明显了.

高复杂度数据集可能组装错误的contigs或者物种之间共享的contigs,导致初始分箱结果错误,

影响标签传播过程,导致精度和ARI下降,同时对于高复杂度的数据集,bintools对于bins数量的估计可能变得不准确.

4.4 装配图的可视化

image

属于粪肠杆菌和金黄色葡萄球菌的Contigs分别呈绿色和黄色,灰色表示未考虑和被丢弃的contigs表示灰色,红色圈表示被错置的contigs.

4.5 配置环境

实验的源代码是使用Python 3.6.5实现的,运行在Linux系统上,该系统有Ubuntu 18.04.1 LTS、16G内存和Intel(R) Core(TM) i7-7700 CPU @ 3.60GHz, 4个CPU核。

5 结论

现有的分类工具在分类短序列,低丰度物种序列以及近缘物种序列时存在问题,大多数现有的bin工具会丢弃短序列(如小于1000bp)

GraphBin通过使用装配图中发现的信息,然后进行标签传播,来细化现有的分箱工具的分箱结果。

实验结果表明,该方法通过修正误分的contigs和对被现有工具丢弃的contigs进行bin分享,对bins结果进行了改进

存在的问题:

我们的方法目前使用二元连通性信息(即未加权边),标签传播算法在预测物种边界上顶点的标签时存在不一致的问题,可能会导致GraphBin的精度降低

我们还打算通过引入概率模型和更多基因组特征(如重叠长度和覆盖信息)来改进标签传播算法。

此外,复杂宏基因组数据集的组装过程可能会在组装图中产生错误组装的contigs(例如,来自不同基因组的片段拼接)以及不可靠的连接(例如,由于嵌合读)。因此,

可以改进地方:如何利用噪声组装图改进宏基因组分类是值得探讨的问题。

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
怎么设置阿里云服务器安全组?阿里云安全组规则详细解说
阿里云服务器安全组设置规则分享,阿里云服务器安全组如何放行端口设置教程
6915 0
阿里云服务器端口号设置
阿里云服务器初级使用者可能面临的问题之一. 使用tomcat或者其他服务器软件设置端口号后,比如 一些不是默认的, mysql的 3306, mssql的1433,有时候打不开网页, 原因是没有在ecs安全组去设置这个端口号. 解决: 点击ecs下网络和安全下的安全组 在弹出的安全组中,如果没有就新建安全组,然后点击配置规则 最后如上图点击添加...或快速创建.   have fun!  将编程看作是一门艺术,而不单单是个技术。
4485 0
使用OpenApi弹性释放和设置云服务器ECS释放
云服务器ECS的一个重要特性就是按需创建资源。您可以在业务高峰期按需弹性的自定义规则进行资源创建,在完成业务计算的时候释放资源。本篇将提供几个Tips帮助您更加容易和自动化的完成云服务器的释放和弹性设置。
7758 0
阿里云服务器安全组设置内网互通的方法
虽然0.0.0.0/0使用非常方便,但是发现很多同学使用它来做内网互通,这是有安全风险的,实例有可能会在经典网络被内网IP访问到。下面介绍一下四种安全的内网互联设置方法。 购买前请先:领取阿里云幸运券,有很多优惠,可到下文中领取。
9426 0
windows server 2008阿里云ECS服务器安全设置
最近我们Sinesafe安全公司在为客户使用阿里云ecs服务器做安全的过程中,发现服务器基础安全性都没有做。为了为站长们提供更加有效的安全基础解决方案,我们Sinesafe将对阿里云服务器win2008 系统进行基础安全部署实战过程! 比较重要的几部分 1.
5458 0
腾讯云服务器 设置ngxin + fastdfs +tomcat 开机自启动
在tomcat中新建一个可以启动的 .sh 脚本文件 /usr/local/tomcat7/bin/ export JAVA_HOME=/usr/local/java/jdk7 export PATH=$JAVA_HOME/bin/:$PATH export CLASSPATH=.
2141 0
阿里云服务器如何登录?阿里云服务器的三种登录方法
购买阿里云ECS云服务器后如何登录?场景不同,云吞铺子总结大概有三种登录方式: 登录到ECS云服务器控制台 在ECS云服务器控制台用户可以更改密码、更换系统盘、创建快照、配置安全组等操作如何登录ECS云服务器控制台? 1、先登录到阿里云ECS服务器控制台 2、点击顶部的“控制台” 3、通过左侧栏,切换到“云服务器ECS”即可,如下图所示 通过ECS控制台的远程连接来登录到云服务器 阿里云ECS云服务器自带远程连接功能,使用该功能可以登录到云服务器,简单且方便,如下图:点击“远程连接”,第一次连接会自动生成6位数字密码,输入密码即可登录到云服务器上。
16829 0
+关注
王先森Vicent
You may create better art.
32
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
文娱运维技术
立即下载
《SaaS模式云原生数据仓库应用场景实践》
立即下载
《看见新力量:二》电子书
立即下载