组装技术的新进展 New advances in sequence assembly.
组装技术的新进展
1、测序和组装
很难想象今天距离提出测序和组装已经有40年啦。我们回头来看一下这个问题。
“With modern fast sequencing techniques and suitable computer programs it is now possible to sequence whole genomes without the need of restriction maps.”
“If the 5′ end of the sequence from one gel reading is the same as the 3′ end of the sequence from another the data is said to overlap. If the overlap is of sufficient length to distinguish it from being a repeat in the sequence the two sequences must be contiguous. The data from the two gel readings can then be joined to form one longer continuous sequence.”
众所周知,这个问题说起来很简单,就是序列如何测序组装的问题,但是这确实是一个NP-hard问题,非常难解决。
2、发展历史
从sanger测序仅仅利用与病毒的组装,到可以商业化的组装Mb级别的细菌,到果蝇。
这些进步依赖计算机并行技术和早期的组装工具。随着NGS测序技术的发展。测序从sanger变成了更短的illumina短reads。此时组装的方法也随之变化。组装更多的利用 de Bruijn graph 方法。比如Velvet 等这些软件火起来了。随着Pacbio 三代测序技术的普及,基于overlap的软件又开始抬头。
目前现有的测序技术包括sanger、NGS、PacBio、Nanopore等,甚至包括搭建骨架的光学图谱技术,Hi-C。这些使得我们得到一个完整的准确的基因组成为可能。
多种测序技术相结合的案例也有很多,比如山羊基因组,很多公司都在做宣传的山羊利器,就是综合NGS+三代+光学+Hi-C+遗传图。水稻基因组三代+遗传图等等。
3、那么问题来了,为啥要获取一个高质量的基因组呢,高质量的基因组的意义在于?
高质量的基因组可以清晰的显示重复结构和变化,而利用二代对于常见的重复区域难以跨过。这样得到的contig 比较碎,影响后面的分析结果。
三代测序技术平均长度在10Kb以上,这个长度比微生物和脊椎动物常见重复序列要长,因此三代测序技术在解决微生物和脊椎动物身上没什么问题,对于高重复的植物需要进行详细的评估,并借助其他测序手段,参考水稻基因组。通过和其他技术结合,比如光学,HiC等。通过这些最新技术,物种的基本区域都可以搞定,只有最大的分段重复和异色区域仍然是一个挑战。
4、常用的长片段组装软件
目前常用的针对长片段组装的软件有三个:Canu( Koren等人,2017),HINGE(Kamath等人,2017)和Racon(Vaser等人,2017)。
5、组装搞定了,生信人会不会失业?
幸运的是,即使序列组合被新技术淘汰,生物信息学家也将有大量的工作。低成本,完整的基因组将使生信人有很多的精力去进行更为大尺度大视角上的比较基因组学等研究,这样需要开发更多工具和算法。
6、期许
希望随着技术的不断进步,我们可以少花点时间来组装基因组,我们可以花更多的时间来探索它们的奇妙进化和功能复杂性。
7、参考文献
New advances in sequence assembly.
组装技术的新进展 New advances in sequence assembly.的更多相关文章
- 短序列组装Sequence Assembly(转载)
转载:http://blog.sina.com.cn/s/blog_4af3f0d20100fq5i.html 短序列组装(Sequence assembly)几乎是近年来next-generatio ...
- SQL Server 2012 开发新功能 序列对象(Sequence)(转)
转载链接:http://www.cnblogs.com/zhangyoushugz/archive/2012/11/09/2762720.html 众所周知,在之前的sqlserver版本中,一般采用 ...
- JAVA WEB新进展
哈哈,终于搞来页面来了,丑是丑,但是好的进展. 高手的思路,自己用库建连接池,确实利害. 最关键的一个HELPER代码: package org.smart4j.chapter2.helper; im ...
- Neutron新进展|DragonFlow在Mitaka版本中的Roadmap
OpenStack网络在Mitaka版本中将有哪些新变化?1月11日到12日,DragonFlow的PTL——Eran Gampel,Kuryr的PTL——Gal Sagie,和他们的老大从以色列来到 ...
- 工具箱之 IKVM.NET 项目新进展
在各种群里经常讨论的一个事情是.NET 如何调用 Java 的实现,最常见的场景之一就是在加解密方面Java提供的密钥,C#无法解密, C#中byte范围是[0,255],而Java中的byte范围是 ...
- JDBC读取新插入Oracle数据库Sequence值的5种方法
Oracle的sequence实现非常灵活,所以也带来一些易用性问题,如何取到新插入记录生成的sequence值与其它数据库有较大差别,本文详国介绍了5种实现读取新插入记录sequence值的方法. ...
- 2015 GOOGLE I/O大会看点总结:新的开发工具及云端测试工具
http://ask.android-studio.org/?/article/48 尽管凌晨开始的主题演讲略显晦涩并继承了谷歌一贯的东一句西一句想起啥说啥的混乱风格,但期待用技术改变世界的技 ...
- 关于k8s这项大动作,预示着边缘计算迎来“开源”发展的新周期……
在文章<最近在边缘计算领域,发生了一件足以载入物联网史册的大事…>我曾经提到Kubernetes(简称K8s)将从超大规模云计算环境,被带入到物联网边缘计算场景中. 事情有了新进展,从本周 ...
- 将 Sidecar 容器带入新的阶段
作者 | 徐迪.张晓宇 导读:本文根据徐迪和张晓宇在 KubeCon NA 2019 大会分享整理.分享将会从以下几个方面进行切入:首先会简单介绍一下什么是 Sidecar 容器:其次,会分享几个阿里 ...
随机推荐
- main方法的详解
格式 * public static void main(String[] args) {} 针对格式的解释 public 被jvm调用,访问权限足够大. static 被jvm调用,不用创建对象,直 ...
- ASP程序中调用Now()总显示“上午”和“下午”,如何解决?
ASP程序中调用Now()总显示这样的格式:“2007-4-20 下午 06:06:38”,我要的正确格式为“2007-4-20 18:06:38”,我已经通过控制面板==>区域和语言选项==& ...
- 算法习题---3.01猜数字游戏提示(UVa340)
一.题目 实现一个经典“猜数字”游戏.给定答案序列和用户猜的序列,统计有多少数字位置正确(A),有多少数字在两个序列都出现过但位置不对(B). 输入包含多组数据.每组输入第一行为序列长度n,第二行是答 ...
- python学习笔记-电子书
程序输入和raw_inoput() 内建函数 字符解释 f% :对应小数 >>> print "%s is number %d" % ("python& ...
- JQuery.BlockUI使用方法举例
JQuery.BlockUI是众多JQuery插件弹出层中的一个,它小巧(原版16k,压缩后10左右),容易使用, 功能齐全,支持Iframe,支持Modal,可定制性高也意味他默认谦虚的外表. jQ ...
- iOS技术面试03:Foundation
是否可以把比较耗时的操作放在NSNotificationCenter中 如果在异步线程发的通知,那么可以执行比较耗时的操作: 如果在主线程发的通知,那么就不可以执行比较耗时的操作 3.Foundati ...
- iOS-MJRefresh框架
1.用MJRefresh框架实现上下拉刷新 1.1 如何使用这个框架,只需要告诉控件的scrollView是谁,就能将框架添加到我们的滚动视图中了 // 下拉刷新 MJRefreshHeaderVie ...
- OpenLayers 根据坐标动态画多边形
找了一上午,发现都是鼠标点击画框的,那为什么不标明了是 “鼠标”点击 呢? 想实现的功能是数据库检索坐标集合,然后根据分组提取4点坐标,最后把多个多边形形成图层放在地图上. 最后的实现: <!D ...
- 【miscellaneous】MPEG2、MPEG4、H264的差异
MPEG2.MPEG4.H264的差异 MPEG-2简介 MPEG-2制定于1994年,设计目标是高级工业标准的图象质量以及更高的传输率.MPEG-2所能提供的传输率在3-10Mbits/sec间,其 ...
- 关于iframe的一些使用
在iframe页面,获取当前iframe的id var iframeId = window.frameElement.id.toString(); 获取父窗口中另一个iframe的iframe,注意返 ...