关于提高映射速度的ASMA测序技术学习随笔

 

  最近看了一篇关于NGS(下一代测序)、ASAM的论文。名字为《AMAS: Optimizing the Partition and Filtration of Adaptive Seeds to Speed up Read Mapping》。这篇论文介绍了一种可以提高映射速度的测序技术——AMAS。总体上来说这个技术的映射速度、内存占用、稳定性都是最优的。ASAM测序方法使用的核心是与GEM(The Genome Multitool)相同的自适应种子。之后又介绍了与其他主流测序算法的对比。最后展示了在不同参数下,自身算法的效果。

  本文只是学习随笔,简单介绍,如想深入学习请仔细研究原文。

ASMA的特点:

  读取映射是NGS数据分析中的关键任务。现在比较主流的读取映射器包括:SOAP 2, mrsFAST ,mrFAST , RazerS 3, GEM , Masai,Hobbes 1, 2。而ASMA与其他技术不同在于以下几个方面:

  1. 当当前种子的匹配数下降到预定频率阈值“F”以下时,将其位置添加到候选空间然后启动一个新种子,直到获得所需数量的种子或达到读数结束。对于100k读取的整个模拟数据集,候选位置的总数减少了6.61倍

  2. AMAS在索引步骤为每个参考基因组预先计算一次自适应种子,并将其信息存储在基数树中,用于每个未来的映射任务

  3. 读取的自适应分区中的最后一个种子可能太短,其频率可能超过其他种子的频率以及阈值“F”。这些位置的大部分是误报,但是去除它们可能会导致映射灵敏度的丢失。ASMA只过滤掉那些匹配数量远远高于预期频率的种子,这种过滤步骤只影响少量的读数。但是从结果上看显著地减少了50%以上总候选空间。

  4. ASMA将候选位置存储在二叉搜索树中,允许对其快速排序并识别多个种子报告。在映射步骤期间避免重复自适应种子的计算以减少映射时间。

和其他技术的对比:

  表1为100k,长度为100bp读数下,各个算法的效果。AMAS中引入的最大种子长度的附加约束保证了所有映射位置的完全灵敏度(100%)。GEM在运行时间和灵敏度方面都优于其他映射器,展示了自适应种子的优势。 

  表2为在1000基因组计划的真实数据集上运行映射器,单线程和八线程模式下ASMA都是很优秀的。这清楚地显示了AMAS中实现的优化分区和过滤方法的好处。

处理大规模数据集:

  在处理大规模数据集上,AMAS在运行时间,映射速率和灵敏度方面优于GEM和mrsFAST。内存占用AMAS和GEM相比其他算法是比较高的,这也是自适应种子以后需要改进的地方。在八线程处理大规模数据集上,GEM有时会出现错误,内存占用量会显着增加甚至会崩溃。

  AMAS通过参数“fse”控制最小种子数,如果设置过高将抑制自适应种子的优点,产生大量候选者并因此消耗更长的运行时间。设置”fse=2”时,AMAS花费的映射时间最少,所以将”fse=2”设为ASAM的默认值。

  “F”为自适应种子的频率阈值,降低”F”会减少候选命中数,从而减少了映射时间。但然而,较低的“F”也导致种子长度过长,每个分区的种子过少,因此会降低映射灵敏度。而且减少“F”也扩大了自适应种子的索引树导致消耗了更多的内存。

总结:

  首先,AMAS在索引步骤中预先计算所有可能的自适应种子,以避免在映射步骤中重复不必要的自适应种子计算基于高度重复的最后种子和额外种子的精确过滤进一步大大收紧候选空间,有效地减少种子扩展所需的时间。并且AMAS允许用户控制每个读取分区的最小自适应种子数,从而在运行时间和灵敏度之间实现理想的平衡。在多线程环境中AMAS也可以很好地处理数据,并且无论数据的大小如何,都能保持内存占用稳定。

  但是自适应种子的优势未得到充分发掘,目前GEM是唯一利用自适应种子的全映射器。这项技术仍需要继续研究。

原文地址:https://www.cnblogs.com/liangfengqingye/p/9865330.html

时间: 2024-08-29 05:58:05

关于提高映射速度的ASMA测序技术学习随笔的相关文章

servlet技术学习随笔

进入这里学习的第二天!开始着手想看servlet,前面看到javabean jsp 跟这个servlet的MVC框架!真心觉得很重要,技术这种东西学会了就很懂!学不会再怎么解释都不明白.看了一整上午!没怎么搞明白!才想起来以前学习c#的土办法!各种去百度!起查……终于算是有点懂得了! (1).  PrintWriter out = response.getWriter();当一个Servlet响应的时候将响应信息通过out对象输出到网页上,当响应结束时它自动被关闭.PrintWriter用处是将

测序技术检测拷贝数变异在染色体疾病综合检测中的应用--转载

http://www.cogonline.com/Article/zyyd/yjsj/144070515.html Desheng Liang,* Ying Peng,* Weigang Lv,* Linbei Deng,* Yanghui Zhang,* Haoxian Li,* Pu Yang,* Jianguang Zhang,? Zhuo Song,? Genming Xu,? David S. Cram,? and Lingqian Wu* 医学遗传学国家重点实验室,*中南大学,湖南长

解读生命密码的基本手段 ——DNA测序技术的前世今生

解读生命密码的基本手段 ——DNA测序技术的前世今生 任鲁风  于军 (中国科学院基因组科学及信息重点实验室,北京基因组研究所) DNA(脱氧核糖核酸)和RNA(核糖核酸)是生命体的两种最基本组成物质,其序列的组成和变化造就了形形色色的生命世界.这两种承担了生命体遗传信息载体功能的物质,一方面在生命的不断繁衍中保持了各个物种的独特面目,另一方面又通过不断的演变改变着自身性状,同时又影响着与之相关的物种,这一规律在生命科学领域被归纳为“中心法则”.笼统而言,几乎全部的生命现象均来源于A.T.C.G

数据提高查询速度的方法(摘抄)

处理百万级以上的数据提高查询速度的方法: 1.应尽量避免在 where 子句中使用!=或<>操作符,否则将引擎放弃使用索引而进行全表扫描. 2.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引. 3.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描,如:     select id from t where num is null     可以在num上设置默认值0,确保表中num列没有

处理百万级以上的数据提高查询速度的方法

处理百万级以上的数据提高查询速度的方法: 1.应尽量避免在 where 子句中使用!=或<>操作符,否则将引擎放弃使用索引而进行全表扫描. 2.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引. 3.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描,如:     select id from t where num is null     可以在num上设置默认值0,确保表中num列没有

Ratatype - 在线打字教程,提高打字速度

Ratatype 是一个在线的打字教程网站,帮助人们提高键盘输入速度.开始掌握你的技能,挑战你的朋友或得到一个打字的证书.如果打字慢会浪费你宝贵的时间.如果你的打字速度提高30%,您可以每天节省20分钟的,20年就可以节省一年!这就是为什么你需要 Ratatype,它是无比轻松的,完全免费的. 立即去学习 您可能感兴趣的相关文章 网站开发中很有用的 jQuery 效果[附源码] 分享35个让人惊讶的 CSS3 动画效果演示 十分惊艳的8个 HTML5 & JavaScript 特效 Web 开发

利用SQL索引提高查询速度

1.合理使用索引 索引是数据库中重要的数据结构,它的根本目的就是为了提高查询效率.现在大多数的数据库产品都采用IBM最先提出的ISAM索引结构. 索引的使用要恰到好处,其使用原则如下: 在经常进行连接,但是没有指定为外键的列上建立索引,而不经常连接的字段则由优化器自动生成索引. 在频繁进行排序或分组(即进行group by或order by操作)的列上建立索引. 在条件表达式中经常用到的不同值较多的列上建立检索,在不同值少的列上不要建立索引.比如在雇员表的“性别”列上只有“男”与“女”两个不同值

【转】处理百万级以上的数据提高查询速度的方法

处理百万级以上的数据提高查询速度的方法: 1.应尽量避免在 where 子句中使用!=或<>操作符,否则将引擎放弃使用索引而进行全表扫描. 2.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引. 3.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描,如:     select id from t where num is null     可以在num上设置默认值0,确保表中num列没有

处理百万级以上的数据提高查询速度的方法(收藏)

处理百万级以上的数据提高查询速度的方法: 1.应尽量避免在 where 子句中使用!=或<>操作符,否则将引擎放弃使用索引而进行全表扫描. 2.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引. 3.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描,如:     select id from t where num is null     可以在num上设置默认值0,确保表中num列没有