科学网

 找回密码
  注册
科学网 标签 ngs 相关日志

tag 标签: ngs

相关日志

关于提高映射速度的ASMA技术学习随笔
minekirito 2018-10-29 15:44
  最近看了一篇关于 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 是唯一利用自适应种子的全映射器。这项技术仍需要继续研究。
1624 次阅读|0 个评论
(译)flexbar3.0--单指令多数据(SIMD)和多核并行
zd200572 2017-12-22 09:15
文章原文: https://www.ncbi.nlm.nih.gov/pubmed/28541403 1.摘要 高通量测序仪可以一次运行处理多个样品。 对于Illumina系统中,测序reads分别用额外的DNA标签(barcode)标记。 因此条形码和接头序列的识别在下一代测序数据的分析中通常是需要的。 Flexbar根据barcode进行样本测序数据的修剪和分离。 现代测序仪上生成大量数据要求这个预处理尽可能地高效完成。 我们展示了flex bar 3.0,它是流行程序flexbar的继承者。它现在采用了双重并行性:多线程和SIMD矢量化。这两种类型的并行性都用于加速用于检测barcode和接头的成对序列比对计算。此外,还提供了 新功能 ,以涵盖各种应用。我们基于模拟序列数据集评估了Flexbar的性能。我们的程序在速度方面超过了一些工具,并且是所呈现的质量基准中 最好 的工具之一。 软件源代码: https://github.com/seqan/ flexbar 简介 :barcode和接头序列检测和移除是短读序列数据分析中的常见任务。barcode用于在一个测序lane上检测多个样本,并用于随后分离所获得的数据。接头污染源于比测序reads短的文库片段。这将导致机器读入目标片段后面的接头序列。因此,从测序数据中移除这些接头以防止它们干扰进一步的分析(例如比对和组装)是非常重要的。这在短RNA测序的情况下特别重要,因为分子通常比读取长度短。因此,许多接头序列在处理之前仍然存在于这样的数据集中。 对于基于barcode的测序数据分离和接头的去除,必须以容错的方式识别序列,因为测序仪会产生错误,参见(Minoche等2011年)。我们的流行软件flexbar (Dodt等2012)通过计算barcode或接头和顺序读取的完全重叠对齐来解决这一问题。然后,检测到的barcode和接头被移除,并且barcode被用于分离读取。此外, flexbar支持成对读取,并提供进一步的读取过滤和质量控制功能 。 有许多工具具有相同的功能。trimm omatic (Bolger等2014年)和cutadapt (Martin,2011年)是此类工具众所周知的示例。近年来,发表了进一步的接头修剪程序,例如PEAT (Li等,2015 )和skewer (Jiang等,2014年)。随着时间的推移,我们扩展了flexbar,并重新编写了关键部件,从而形成了一个新版本,该版本具有更多选项,比以前发布的版本快数倍。 2.方法 Fexbar是用c++编写的,并使用SeqAn库( dring等,2008)进行序列分析。多核并行化是使用TBB库(英特尔线程构建模块)实现的。每个线程对一组成对的读取操作。Fexbar现在还使用SIMD (单指令多数据)矢量化来利用扩展指令集(如现代CPU体系结构的SSE、AVX和avx2)的功能。根据支持的SIMD扩展(128到512位),可以向量化4到16个计算。SIMD机制使用数据级并行进行对齐,这意味着并行计算多个动态编程矩阵。这导致了除了多线程之外,用于在单个核的寄存器级上并行计算对准的又一层。通过这些方法,程序的性能关键比对部分可以通过提高速度来实现。用于对齐的SIMD加速动态编程模块由SeqAn库的最新版本2 . 2 .0提供。此模块用于flex bar3.0中的SIMD对齐。该模块的实施基于Rognes (2011年)。 除了集成SIMD之外,我们还优化了Flexbar3.0的源代码,以提高速度,例如批量输入读取。进一步扩展了基于质量的裁剪模块。我们 改进了结果统计 , 并添加各种其他选项,以提高灵活性,例如扩展barcode位置控制。不再支持颜色空间数据。在比对功能、数据类型、输入和输出操作下,flexbar使用SeqAn库的参数解析器在命令行上提供干净的用户界面。 此外,我们还扩展了Flexbar的功能,这些功能很少发现,但很方便。基于条形码的数据分离现在还能 处理用于PE读取的双条形码 。在这种情况下,条形码分布在读取对的两端,并用于样品识别。对于条形码和接头, 通配符N现在可用于指示序列中包含不同核苷酸的位置 ,例如在UMI(唯一分子标识符)的情况下使用。条形码或适配器的N个位置处的这些核苷酸可被捕获并作为读取名称的一部分提供给下游处理。该信息可用于例如区分读取折叠流程中的PCR重复。 3.结果 通过适配器修剪对Flexbar3.0的性能进行评估。我们使用BBTools套件( SourceForge.net/projects/bbmap )中的工具randomreads和adddapters模拟了100万次读取和适配器。使用秀丽隐杆线虫基因组( Ensembl release 86)作为读取模拟的参考。使用add dapters测量工具的精度和灵敏度,对修剪质量进行评估: trimomatum、BBDuk ( BBTools软件包的一部分)、PEAT、Skewer、cutadapt和Flexbar3.0。结果与修剪后的读取次数一起列于表1中。在适配器移除步骤之后,读取被限制为包含至少20bp。flex bar3.0的处理时间显示在表1和图1中,用于单个内核和工具的选择。本图中还包括我们以前出版物中的flex bar2.3。在2.93 GHz的16核专用英特尔至强x5570计算机上进行了基准测试。 4.讨论 flexbar3.0在单核模式下的速度几乎是以前版本的 10倍 ,请参见图1。Skewer的速度与flexbar3.0相同,它的速度稍慢,PEAT的速度相对较长。trimomatic和bb Duk的速度是flex bar的两倍,但它们的修剪质量低于Skewer、cuta dapt和flexbar。这三个程序在质量测试中具有最高的准确度和灵敏度,见表1。在精度、灵敏度和观察到的运行速度方面,PEAT位于下端。总之,flexbar3.0是一个非常快速的barcode和接头检测解决方案,它使用SIMD多核并行计算。与此同时,flexbar具有 出色的修剪质量 ,如带有接头的模拟序列数据基准测试所示。 只有Skewer具有相同的质量和速度水平。 但是, flexbar提供了更多与条形码相关的功能,例如UMI支持。 我的个人博客: http://blog.zd200572.com 和 www.zd200572.com
个人分类: biology|3957 次阅读|0 个评论
Speedseq的安装和使用
热度 1 luria 2017-10-30 22:01
题外音: speedseq 是一套流程,套用了大量三方软件,但是居然也能发到 Nature Methods 上!惊讶之余查看了一下代码,非常佩服,简直是教科书一样的模式,太赞了! 1. speedseq 的安装 1.1 安装前先需安装好 python (建议升级到 2.7 最新版 2.7.13 ),而且需要安装 pysam 库 ( 需升级到最新版,这里升级到 0.11.2 版本 ) ,如果没有升级,可能在 speedseq sv 方法中报如下错: 1.2 再安装 root ,只有安装了它 cnvnator 才可以正常安装。 从官网 〔1〕 下载 root ,有 Binary distributions 但是需要注意下载对应系统的版本(例如 我这里下载的 Ubuntu 14 版本的 )。 wget https://root.cern.ch/download/root_v6.10.08.Linux-ubuntu14-x86_64-gcc4.8.tar.gz tar -zxvf root_v6.10.08.Linux-ubuntu14-x86_64-gcc4.8.tar.gz # 解压为文件夹 root 再修改\\ $HOME/.bashrc ,添加以下两行 export PATH= /Path/to/rootdir /bin:\\$PATH export LD_LIBRARY_PATH= /Path/to/rootdir /lib:\\$LD_LIBRARY_PATH 注意:/Path/to/rootdir即上一步安装root包时压缩后root文件夹的位置,请用绝对路径! 如果后期运行cnvnator时报错如下,则表明此处LD_LIBRARY_PATH设置有误。 error while loading shared libraries: libCore.so: cannot open sh 〔出现这种报错,可查看http://blog.sciencenet.cn/blog-653020-626976.html〕 再运行以下代码 cd root . bin/thisroot.sh 以上安装过程参考 再按照官网 上的步骤下载安装 speedseq git clone --recursive https://github.com/hall-lab/speedseq cd speedseq make # 经测试 gcc 4.4.7 版安装会有报错, gcc 4.8.5 可正常安装 1.3 如果想用 VEP 做注释,还需先手动安装 正确安装方法如下: curl -OL https://github.com/Ensembl/ensembl-tools/archive/release/76.zip SPEEDSEQ_DIR= $PWD # 注意:这里是 speedseq 安装目录(也是我的当前目录),以下操作我都在speedseq目录下完成 ! unzip 76.zip 注意:因为 bioperl 下载地址改变,按照 speedseq 官网上安装会报错! 一定要修改 INSTALL.pl 再运行。 vim ensembl-tools-release-76/scripts/variant_effect_predictor/INSTALL.pl 将第 61 行的 BIOPERL_URL 修改为以下地址, INSTALL.pl 中的地址已失效, http://www.cpan.org/authors/id/C/CJ/CJFIELDS/BioPerl-1.6.924.tar.gz 截图如下: 如果你研究的是人,可以用以下代码在本地建立人的数据库 perl ensembl-tools-release-76/scripts/variant_effect_predictor/INSTALL.pl \\ -c \\$SPEEDSEQ_DIR/annotations/vep_cache \\ -a ac -s homo_sapiens -y GRCh38 # 它会自动下载人的全基因组序列,具体地址如下:ftp://ftp.ensembl.org/pub/release-76/variation/VEP/homo_sapiens_vep_76_GRCh38.tar.gz,大小约3.1G cp ensembl-tools-release-76/scripts/variant_effect_predictor/variant_effect_predictor.pl \\$SPEEDSEQ_DIR/bin cp -r Bio \\$SPEEDSEQ_DIR/bin speedseq 非常赞的原因之一是它几乎集成了所有需要的三方软件(注:其中有些比较难安装),而且在 /Path/to/speedseq/bin/ 目录下有个 speedseq.config ,其中记录了所有三方软件可执行程序的路径。这样就可以完全独立了(比方你系统环境变量中有多个 samtools ,或者多个 python ,你想用哪一个,就可以直接在这里指定) 安装完后进行测试,查看是否安装完整,建议将 speedseq.config 中每一行都测一下,看路径中的程序是否能正常运行。 我的 /Path/to/speedseq/bin/ 下的程序如下: 2. speedseq 的使用 像所有的好软件一样, speedseq 也提供了 example ,在 /Path/to/speedseq/example/ 目录下,该目录下有一个 data 目录(注意: data 目录中的 reference 是 bwa index 过的)。 建议按 /Path/to/speedseq/bin/run_speedseq.sh 中代码一句句运行 2.1 speedseq align 注意: speedseq 调用 bwa-mem 后,还生成了 discordants.bam 和 splitters.bam ,这 两个文件是 lumpyexpress 必须的(这个已整合在 speedseq 中),那么这两个 bam 是怎么来的? 按照 lumpy github 官网 上的描述 speedseq align -R @RG\\tID:id\\tSM:sample\\tLB:lib \\ human_g1k_v37.fasta \\ sample.1.fq \\ sample.2.fq 注意:使用speedseq align时建议加上-o选项,它指定输出文件(夹)前缀;-t选项,它指定线程数(默认单线程) 以上等价于 # Align the data bwa mem -R @RG\\tID:id\\tSM:sample\\tLB:lib human_g1k_v37.fasta sample.1.fq sample.2.fq | samblaster --excludeDups --addMateTags --maxSplitCount 2 --minNonOverlap 20 | samtools view -S -b - sample.bam # Extract the discordant paired-end alignments. samtools view -b -F 1294 sample.bam sample.discordants.unsorted.bam # Extract the split-read alignments samtools view -h sample.bam \\ | scripts/extractSplitReads_BwaMem -i stdin \\ | samtools view -Sb - \\ sample.splitters.unsorted.bam # Sort both alignments samtools sort sample.discordants.unsorted.bam sample.discordants samtools sort sample.splitters.unsorted.bam sample.splitters 2.2 speedseq var 这里调用的是 freebayes ,它的精确度与 GATK 不相伯仲,具体可能查看 speedseq 的引文 。 speedseq var 除例子中的 -o 选项 ( 指定输出文件前缀 ) 外,还有以下几个选项值得注意: -q 指定最低变异质量值(质量值小于这个值的将认为是不可信结果) -A 使用 VEP 对变异检测结果进行注释,当然前提是安装好了 vep , speedseq/bin 中 variant_effect_predictor.pl 可用 2.3 speedseq 的 sv 方法 建议加上 以下选项 -g 表示使用 svtyper 对 SV breakends 进行分型 -d 表示使用 CNVnator 来计算 read 深度 -P 在 vcf 中输出 LUMPY 的概率曲线 参考材料 https://root.cern.ch/content/release-61008 http://www.cpp.edu/~pbsiegel/phy499/rootinstall.html https://github.com/hall-lab/speedseq https://github.com/arq5x/lumpy-sv chiang C., Layer RM., Faust GG, et al. SpeedSeq: ultra-fast personal genome analysis and interpretation.Nature Methods. 2015 Oct;12(10):966- 96 8
个人分类: Reseq|12980 次阅读|2 个评论

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2024-5-29 20:01

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部