组装技术的新进展 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 容器:其次,会分享几个阿里 ...
随机推荐
- 数据库Sequence创建与使用
最近几天使用Oracle的sequence序列号,发现对如何创建.修改.使用存在很多迷茫点,在上网寻找答案后,根据各路大神的总结,汇总下对自己的学习成果: 在Oracle中sequence就是序号,每 ...
- 构建Hadoop监控共同体
HDFS监控背后那些事儿,构建Hadoop监控共同体 原创: 应用研发部 京东云 2018-12-19 https://mp.weixin.qq.com/s/kulwDgwu-rYf4SvQ1dOwc ...
- PHP判断是否在微信内部浏览器访问
<?php if(is_weixin()){ echo "这是微信内部浏览器"; }else{ echo "这是微信外部浏览器"; } function ...
- java调用科大讯飞流式(websocket)语音识别接口
要使用讯飞的能力,需先注册讯飞开发平台账号(讯飞官网参见https://www.xfyun.cn/). 再创建应用,点击右上角的控制台 -> 创建新应用: 每个应用都有一个appId,由这个ap ...
- Spring MVC Action参数类型 List集合类型(简单案例)
题目:定义一个员工实体(Employee),实现批量添加员工功能,在表单中可以一次添加多个员工,数据可以不持久化 1,新建一个项目 2, 然后选择Maven框架选择 maven-archetype-w ...
- win7下docker环境安装
最近公司涉及到对docker容器引擎的使用,所以就在网上各种搜索,由于是win7系统,所以在使用上更是麻烦,遇到各种错误就是无法成功启动docker,经过两天的各种尝试下,终于安装成功,在此记录一下使 ...
- Core Data 多表关联
1.概念简介 coreData中存在复杂的数据关系时,一张表难以满足需求,此时就需要了解使用coreData多表的关联使用. 如 课程表 和 章节表 的关系:一个课程跟章节的对应关系是 一对多,单一个 ...
- 【c# 学习笔记】类与结构体的区别
由于类与结构体在语法和使用上都非常类似,导致我们这些初学者容易混淆.为更好理解,特做以下区分记录: ① 语法上的区别在于,定义类要使用关键词class,而定义结构体则使用关键词struct. ② 结构 ...
- 渡鸦币(Raven)钱包交叉编译详解
1 环境准备 1.1 准备Ubuntu 准备虚拟机或物理机,操作系统为Ubuntu 16.04 1.2 安装Mingw sudo apt-get install g++-mingw-w64-i686 ...
- 【C/C++开发】C++ Thread对象封装
Pthread库是posix linux的线程库,调用接口如下,我们模仿JDK,对Thread进行封装,具体的业务逻辑只需要如同Thread一样实现run方法即可. 线程操纵函数(简介起见,省略参数) ...