「BioNano系列」光学图谱混合组装应该怎么做?

2024-06-23 20:48

本文主要是介绍「BioNano系列」光学图谱混合组装应该怎么做?,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

评估从头组装结果

Bionano从头组装出光学图谱CMAP可以和参考序列的CMAP进行比对,通过Access上可视化检查参考基因组的组装质量,比较两者间的不同。

这里所用的CMAP图谱来自于一篇发表在NC的拟南芥的基因组文章(原本计划用他们的bnx文件介绍从头组装,但是通讯作者根本不搭理我),

光学图谱的下载方式为:

wget https://submit.ncbi.nlm.nih.gov/ft/byid/w4jcevedkbs-mac-74_bng_contigs2017.cmap

我通过Canu以原始错误率0.5纠错后直接以纠错后错误率0.144进行组装, 得到的物理图谱, 可通过百度网盘(链接:https://pan.baidu.com/s/1PGYvCE0Ku65vwNQ3cEscKA 提取码:88us )进行下载。

分析代码如下:

#模拟酶切
perl /opt/biosoft/Solve3.3_10252018/Pipeline/10252018/fa2cmap_multi_color.pl -i R05C0144.fa -e BspQI 1
# 两个图谱比较
python /opt/biosoft/Solve3.3_10252018/Pipeline/10252018/runCharacterize.py \-t /opt/biosoft/Solve3.3_10252018/RefAligner/7915.7989rel/RefAligner \-q kbs-mac-74_bng_contigs2017.cmap -r R05C0144_BSPQI_0kb_0labels.cmap \-p /opt/biosoft/Solve3.3_10252018/Pipeline/10252018 \-a /opt/biosoft/Solve3.3_10252018/RefAligner/7915.7989rel/optArguments_nonhaplotype_noES_irys.xml \-n 10

运行之后会在当前目录下生成一个"alignref"文件夹, 将其中的"q.cmap","r.cmap",".xmap"下载到本地,上传到access中进行可视化

2013053-017b5e6c70b64be8.png
组装肉眼评估

上图中,箭头指示的部分可能就是光学图谱能用于锚定其他contig的部分,这就是下一节光学图谱辅助组装的原理。

光学图谱辅助组装

NGM(Next-Generation Mapping) Scaffold 流程:

  1. 为序列数据产生 in silico 图谱
  2. 将序列和Bionano基因组图谱进行比较,找到两者之间的冲突并尝试解决
  3. 将不冲突的图谱合并成 hybrid scafold
  4. 在序列图谱和hybrid scaffold之间形成联配
  5. 得到scaffold的AGP和FASTA文件

整个流程和Bionano Access完美整合,为使用者提供了方便的操作界面,用于对scafflod结果进行可视化。流程的脚本在"/opt/biosoft/Solve3.3_10252018/HybridScaffold/10252018"

单酶系统

流程控制脚本为: Solve3.3_版本日期HybridScaffold/版本日期/hybridScaffold.pl, 他接受输入文件,输出运行过程中的信息,产生输出文件,最后得到结果描述。

有四个必须文件: FASTA格式组装结果,CMAP格式的Bionano 基因组图谱组装,XML格式的配置文件, RefAligner.

perl hybridScaffold.pl -n FASTA格式序列 (必须)-b BIonano CMAP文件 (必须)-c  Merge 的XML配置文件 (必须)-r RefAligner运行工具路径 (必须)-o 输出文件夹 (必须)-B conflict filter level genome maps; 1,2 or3, 决定如何处理冲突,1表示不过滤,2表示在冲突处分割contig,3表示删除冲突的contig,没有-M时一定要加入-N conflict filter level for sequences; 1,2 or 3, 决定如何处理冲突,1表示不过滤,2表示在冲突处分割contig,3表示删除冲突的contig,没有-M时一定要加入-f 是否覆盖之前的输出-x 分别进行hybrid scaffold 和 genome map的相互比对-y 为输入的genome maps生成嵌合质量分-M 输入手工解决过冲突的文件-m: 如果使用了-x或-y参数,则需要输入Bionano molecules的BNX文件-p 从头组装流程的文件路径,如果使用了-x或, -y 选项,就需要加入这一项-q 从头组装流程的XML配置文件,如果使用了-x或, -y 选项,就需要加入这一项-e 从头组装时的噪音参数, .errbin或err文件-v 输出流程版本信息

明确一点: -c 要求的XML文件真的不是无脑用,需要修改其中fasta2cmap的enzyme部分

实际运行案例:

cp /opt/biosoft/Solve3.3_10252018/HybridScaffold/10252018/hybridScaffold_config.xml .
# 用vim修改hybridScaffold_config.xml中的enzyme
perl /opt/biosoft/Solve3.3_10252018/HybridScaffold/10252018/hybridScaffold.pl \-n R05C0144.fa \-b kbs-mac-74_bng_contigs2017.cmap \-c hybridScaffold_config.xml \-r /opt/biosoft/Solve3.3_10252018/RefAligner/7915.7989rel/RefAligner \-o R05C0144 \-B 2 -N 2 \-f 

运行过程中会输出scaffold N50等一些参数。N50仅仅提升了1.1M,估计是作者bionano数据不够多。

组装的FASTA在"R05C0144/agp_fasta"文件下,而"R05C0144/hybridScaffold_archive.tar.gz"可以上传到Access查看组装效果, 下图就是一个典型的混合组装

2013053-27911b5648ebbd3b.png
典型的混合组装结果

当然具体分为哪几步,以及每一步调用的脚本如下所示:

第一步: 将FASTA转成CMAP格式,

2013053-e69587528c953296.png
Step 1

用到一个perl脚本, fa2cmap_multi_color.pl, 通过对基因组序列进行模式搜索寻找可能的酶切位点,默认输出在"fa2cmap"文件夹下

第二步: 识别并解决冲突。

2013053-b8b75f5f4afbc48d.png
Step 2

冲突可能来自于真实的等位基因,或者时组装错误,最终的结果就是在联配中出现过多无法比对上的标记(labels). Hybrid Scaffold流程会先用RefAligner将第一步得到的cmp去跟Bionano基因组图谱比,然后用AssignAlignType.pl识别冲突交界处。输入文件为RefAligner运行后得到的XMAP和CMAP文件,以及原始序列和原始Bionano基因组图谱。统计每个联配中比对和未必对标记数,根据XML配置文件中"assignAlignType.max_overhang" 参数设置最大可以容忍的无法联配的标记数。最后会输出"assginAlignType.xmap"(列出冲突位置),以及"assignAlignType_r.cmap"(无冲突序列), "assignAlignType_q.cmap"(无冲突图谱)。更重要的是"conflicts.txt",记录着每个可能的位置。

之后流程用cut_conflicts.pl解决不一致的位置, 输出"conflicts_cut_status.txt", 可以手工编辑,有监督的进行处理。

第三步: 合并两者的组装结果,形成Hybrid scaffold

2013053-0266016d7aa20f80.png
Step 3

这一步用MergeNGS_BN.pl脚本完成,它会调用RefAligner进行迭代两两配对合并,输入文件是下面的其中一个

  • 原始输入
  • 冲突解决后的组装(cut_conflicts.pl输出结果)
  • 没有冲突的组装(AssignAlignType.pl的结果)

每一种输入都是一种选项,我们可以尝试不同的输入,最后进行比较。

第四步: 将序列图图谱和基因组图谱比对到hybrid scaffold

2013053-731aaa0d99720619.png
Step 4

第五步: 生成hybrid scaffold表征的AGP和FASTA文件

2013053-b5c827e30acb4bd9.png
Step 5

一些注意事项:

  • Bionano很难处理Hi-C数据引起的基因组中朝向/排序的错误。所以先Bionano混合组装,然后才是Hi-C
  • 覆盖度: 至少50X,NLRS随着覆盖度提高并不会有明显增强图谱连续性,DLS(例如DLE0-1) 100X以上的覆盖度能够明显提高某些植物和东西的图谱连续性。
  • 当前的Hybrid Scaffold 流程无法很好处理单倍体信息,所以上一步的从头组装一定要是nonhaplotype.

这篇关于「BioNano系列」光学图谱混合组装应该怎么做?的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1088241

相关文章

[职场] 护理专业简历怎么写 #经验分享#微信

护理专业简历怎么写   很多想成为一名护理方面的从业者,但是又不知道应该怎么制作一份简历,现在这里分享了一份护理方面的简历模板供大家参考。   蓝山山   年龄:24   号码:12345678910   地址:上海市 邮箱:jianli@jianli.com   教育背景   时间:2011-09到2015-06   学校:蓝山大学   专业:护理学   学历:本科

Java面试八股之怎么通过Java程序判断JVM是32位还是64位

怎么通过Java程序判断JVM是32位还是64位 可以通过Java程序内部检查系统属性来判断当前运行的JVM是32位还是64位。以下是一个简单的方法: public class JvmBitCheck {public static void main(String[] args) {String arch = System.getProperty("os.arch");String dataM

电脑不小心删除的文件怎么恢复?4个必备恢复方法!

“刚刚在对电脑里的某些垃圾文件进行清理时,我一不小心误删了比较重要的数据。这些误删的数据还有机会恢复吗?希望大家帮帮我,非常感谢!” 在这个数字化飞速发展的时代,电脑早已成为我们日常生活和工作中不可或缺的一部分。然而,就像生活中的小插曲一样,有时我们可能会在不经意间犯下一些小错误,比如不小心删除了重要的文件。 当那份文件消失在眼前,仿佛被时间吞噬,我们不禁会心生焦虑。但别担心,就像每个问题

ABAP怎么把传入的参数刷新到内表里面呢?

1.在执行相关的功能操作之前,优先执行这一段代码,把输入的数据更新入内表里面 DATA: lo_guid TYPE REF TO cl_gui_alv_grid.CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR'IMPORTINGe_grid = lo_guid.CALL METHOD lo_guid->check_changed_data.CALL M

JavaWeb系列二十: jQuery的DOM操作 下

jQuery的DOM操作 CSS-DOM操作多选框案例页面加载完毕触发方法作业布置jQuery获取选中复选框的值jQuery控制checkbox被选中jQuery控制(全选/全不选/反选)jQuery动态添加删除用户 CSS-DOM操作 获取和设置元素的样式属性: css()获取和设置元素透明度: opacity属性获取和设置元素高度, 宽度: height(), widt

电子盖章怎么做_电子盖章软件

使用e-章宝(易友EU3000智能盖章软件)进行电子盖章的步骤如下: 一、准备阶段 软件获取: 访问e-章宝(易友EU3000智能盖章软件)的官方网站或相关渠道,下载并安装软件。账户注册与登录: 首次使用需注册账户,并根据指引完成注册流程。注册完成后,使用用户名和密码登录软件。 二、电子盖章操作 文档导入: 在e-章宝软件中,点击“添加”按钮,导入待盖章的PDF文件。支持批量导入多个文件,

C语言入门系列:探秘二级指针与多级指针的奇妙世界

文章目录 一,指针的回忆杀1,指针的概念2,指针的声明和赋值3,指针的使用3.1 直接给指针变量赋值3.2 通过*运算符读写指针指向的内存3.2.1 读3.2.2 写 二,二级指针详解1,定义2,示例说明3,二级指针与一级指针、普通变量的关系3.1,与一级指针的关系3.2,与普通变量的关系,示例说明 4,二级指针的常见用途5,二级指针扩展到多级指针 小结 C语言的学习之旅中,二级

说一说三大运营商的流量类型,看完就知道该怎么选运营商了!

说一说三大运营商的流量类型,看完就知道该怎么选运营商了?目前三大运营商的流量类型大致分为通用流量和定向流量,比如: 中国电信:通用流量+定向流量 电信推出的套餐通常由通用流量+定向流量所组成,通用流量比较多,一般都在100G以上,而且电信套餐长期套餐较多,大多无合约期,自主激活的卡也是最多的,适合没有通话需求的朋友办理。 中国移动:通用流量+定向流量 移动推出的套餐通常由通用流量+定向

JavaWeb系列六: 动态WEB开发核心(Servlet) 上

韩老师学生 官网文档为什么会出现Servlet什么是ServletServlet在JavaWeb项目位置Servlet基本使用Servlet开发方式说明快速入门- 手动开发 servlet浏览器请求Servlet UML分析Servlet生命周期GET和POST请求分发处理通过继承HttpServlet开发ServletIDEA配置ServletServlet注意事项和细节 Servlet注

js小题:通过字符串执行同名变量怎么做

在JavaScript中,你不能直接使用一个字符串来直接引用一个变量,因为JavaScript是一种静态类型语言(尽管它的类型在运行时可以变化),变量的名字在编译时就被确定了。但是,有几种方法可以实现类似的功能: 使用对象(或Map)来存储变量: 你可以使用一个对象来存储你的变量,然后使用字符串作为键来访问这些变量。 let myVars = { 'var1': 'Hello', 'var