三代序列比对算法minimap2,就是快,快,快!

本文来自“生信算法”公众号。

        由于二代测序序列长度短(~300 bp),错误率低(<0.02%),其测序错误主要为替换错误,可通过哈希查找或数据压缩等方法直接查询每条序列在基因组中的准确比对区域,得到比对结果。而三代测序序列一方面错误率较高(~15%),且错误类型主要为插入或删除错误,难以通过文本查找直接找到序列在基因组中的比对区域,需要采用针对性的查询策略找到比对区域。另一方面,在比对阶段,由于三代序列读段长(平均长度超过10 kbp),直接采用全局比对(Needleman-Wunsch,NW)或局部比对(Smith-Waterman,SW)比对算法需构建L×L大小的得分矩阵(其中L表示序列长度),计算空间复杂度较高。基于以上两方面分析,目前绝大多数针对二代测序的比对方法不适合处理三代测序数据。因此, 需要开发针对三代测序数据的序列比对算法。

        minimap2算法是Heng Li大牛2018年在Bioinformatics期刊上发表的一篇三代序列比对算法文章。目前谷歌引用次数已经达到431次(截止时间2019.11.3日),可谓是三代序列处理一大利器。当时正好我也在研究三代序列比对,发现minimap2方法确实好用,最大的优势就是速度快,是真的快。而且比对结果比较不错,要说缺点,那主要的缺点就是耗内存,是牺牲内存换速度,毕竟二者不可兼得嘛。

minimap2主要思想

        minimap2的主要思想是:首先将基因组序列的minimizer存储在哈希表中(minimizer指一段序列内最小哈希值的种子);然后对于每一条待比对序列, 找到待比对序列所有的minimizer,通过哈希表找出其在基因组中的位置, 并利用chaining算法寻找待比对区域;最后将非种子区域用动态规划算法进行比对,得到比对结果。minimap2方法只对最小哈希值的种子进行存储,可有效降低时间复杂度。 

1. 搜索minimizer

        minimizer指的是一段序列内最小哈希值的种子,也就是哈希值最小的k-mer。k-mer是长度为k的序列子片段。DNA序列由A、C、G、T四个字符组成,按照计算机编码可以看成一个四进制数。那一个k-mer就可以看做k位的四进制数。比如GCT的哈希值就是2×4的2次方+1×4的1次方+3×4的0次方=39,所以GCT的哈希值就是39。那么可以算出每一个k-mer的哈希值,取w窗口内最小哈希值的k-mer,就是作者定义的minimizer。

        minimap2首先计算基因组序列的minimizer,存储到哈希表中。然后计算待比对序列的minimizer,通过哈希表就可以查找与基因组中一样的minimizer在基因组中的位置。这样每一个minimizer包含三个信息:(1)在基因组中的位置;(2)在待比对序列中的位置;(3)minimizer长度。

2. chaining算法

        通过chaining就找到一组minimizer后,一个minimizer就是一个种子,也是待比对序列和基因组匹配的区域。下一步只需将序列的非种子区域进行比对,与种子区域连接起来,就是最后的序列比对结果。类似于BLAST思想。非种子区域一般比较短,当然是相对整条待比对序列来说的。这样就可以运用传统的NW算法或者SW算法进行比对。

minimap2结果比较

        对于三代PacBio序列(模拟序列),minimap2与其他5个比对方法进行比较:blasr,bwa,graphmap、minialign和ngmlr。从图(a)可以看出,minimap在比对的序列条数上优势较大,明显高于其他5个三代序列比对方法。图(b)是对于二代测序序列数据的比对结果,由于minimap2主要针对三代序列,图(b)主要说明minimap2也可以比对二代测序数据。

        下表是minimap2对三代Nanopore测序数据的比对结果(人类基因组测序数据),从图中可以看出minimap2速度简直太快了,15.9分钟,至少速度提升了50%。

minimap2安装

        minimap2安装非常方便,直接在GitHub网站上进行下载后即可安装,(https://github.com/lh3/minimap2)。用C语言编写。下载后直接make就可以完成安装。

        安装及运行步骤如下:

git clone https://github.com/lh3/minimap2
cd minimap2 && make
# long sequences against a reference genome
./minimap2 -a test/MT-human.fa test/MT-orang.fa > test.sam
# create an index first and then map
./minimap2 -x map-ont -d MT-human-ont.mmi test/MT-human.fa
./minimap2 -a MT-human-ont.mmi test/MT-orang.fa > test.sam
# use presets (no test data)
./minimap2 -ax map-pb ref.fa pacbio.fq.gz > aln.sam       # PacBio genomic reads
./minimap2 -ax map-ont ref.fa ont.fq.gz > aln.sam         # Oxford Nanopore genomic reads
./minimap2 -ax asm20 ref.fa pacbio-ccs.fq.gz > aln.sam    # PacBio CCS genomic reads
./minimap2 -ax sr ref.fa read1.fa read2.fa > aln.sam      # short genomic paired-end reads
./minimap2 -ax splice ref.fa rna-reads.fa > aln.sam       # spliced long reads (strand unknown)
./minimap2 -ax splice -uf -k14 ref.fa reads.fa > aln.sam  # noisy Nanopore Direct RNA-seq
./minimap2 -ax splice:hq -uf ref.fa query.fa > aln.sam    # Final PacBio Iso-seq or traditional cDNA
./minimap2 -cx asm5 asm1.fa asm2.fa > aln.paf             # intra-species asm-to-asm alignment
./minimap2 -x ava-pb reads.fa reads.fa > overlaps.paf     # PacBio read overlap
./minimap2 -x ava-ont reads.fa reads.fa > overlaps.paf    # Nanopore read overlap
# man page for detailed command line options
man ./minimap2.1

 总结

        序列比对序列数据分析的重要研究内容。序列比对是为得到序列之间的相似性或同源性, 将两条序列或多条序列按照一定规则进行排列的操作。序列比对是序列分析最为基本和重要的步骤。通过序列比对, 可以确定序列间的相似性,方便序列聚类。二代测序平台输出的序列片段一般较短(~200 bp), 而最新的三代测序技术可以产生长度超过10 kbp的序列数据, 目前二代测序序列比对算法不能快速有效处理三代测序序列, 需要研究者开发快速高效的三代序列比对算法。 而minimap2就是针对三代序列设计的一款非常好用的比对软件。希望在你以后的测序数据分析中可以用到。

参考文献:

  1. Li H. Minimap2: pairwise alignment for nucleotide sequences[J]. Bioinformatics, 2018, 34(18): 3094-3100.

<think>好的,用户想了解如何使用minimap2进行三代测序数据的比对。首先,我需要回忆一下minimap2的基本用法和它在三代测序中的应用场景。minimap2是一个高效的序列比对工具,特别适合长读长数据,比如PacBio和Oxford Nanopore的测序数据。用户可能需要进行基因组组装或变异检测,所以需要正确的比对步骤。 首先,我得确认用户的数据类型,是PacBio CLR、HiFi还是Nanopore数据。不同的数据类型可能需要不同的预设参数。例如,PacBio的CLR数据使用map-pb,而Nanopore数据使用map-ont。HiFi数据可能更适合asm20预设。然后,安装minimap2是基础步骤,用户可能需要从GitHub克隆仓库并编译安装,或者使用conda安装,这样更方便。 接下来,基本命令结构是minimap2 [选项] 参考基因组.fa 测序数据.fq。输出结果通常是SAM格式,但用户可能需要转换为BAM并进行排序,这里需要用到samtools。记得提醒用户安装samtools,并给出具体的命令示例,比如samtools view和sort。 另外,用户可能需要了解一些高级参数,比如线程数-t,输出结果添加注释的选项,或者二次比对的情况。例如,-a参数用于输出SAM格式,-x指定预设参数,这些都是关键点。同时,提醒用户注意参考基因组的索引是否需要提前构建,但minimap2通常是即时索引的,所以不需要提前准备。 还有,实际案例对用户来说可能更有帮助。比如,使用PacBio数据比对到参考基因组,并输出结果。或者如果是基因组组装后的比对,可能需要不同的预设参数,比如asm20。用户的应用场景不同,参数选择也会不同,这点需要明确。 最后,常见问题解答也很重要。比如如何处理高错误率的长读长数据,是否需要调整参数,或者如何提高比对效率。此外,引用相关的资料,比如站内提到的NextDenovo配置文件中的minimap2选项,或者Sentieon软件在准确度方面的表现,可以增强回答的可信度。需要确保引用标记正确,比如[^3]和[^4]。 总结一下,回答的结构应该是先介绍minimap2的用途,然后安装步骤,基本命令,参数说明,实际案例,输出处理,常见问题,最后相关问题和引用。确保每个部分清晰,并且覆盖用户可能的疑问,比如性能优化和应用场景。同时,注意使用中文,保持口语化,避免使用Markdown格式,符合用户的要求。</think>### minimap2三代测序数据比对中的使用方法 minimap2三代测序数据分析中广泛使用的比对工具,特别适用于长读长数据(如PacBio、Oxford Nanopore)的速比对。以下是详细使用指南: --- #### **1. 工具安装** 推荐通过conda安装: ```bash conda install -c bioconda minimap2 ``` 或从GitHub源码编译: ```bash git clone https://github.com/lh3/minimap2 cd minimap2 && make ``` --- #### **2. 基本命令格式** ```bash minimap2 -a -x [预设参数] [参考基因组.fa] [测序数据.fq] > [输出.sam] ``` - **关键参数说明**: - `-x`:预设参数(核心选项) - `map-pb`:PacBio CLR数据 - `map-ont`:Oxford Nanopore数据 - `asm20`:高精度组装数据比对(适用于HiFi数据) - `-a`:输出SAM格式(默认PAF格式) - `-t`:线程数(如`-t 8`) - `-o`:指定输出文件 --- #### **3. 典型应用场景** **案例1:PacBio CLR数据比对** ```bash minimap2 -ax map-pb ref.fa pacbio.fq | samtools sort -o output.bam ``` **案例2:基因组组装比对** 使用NextDenovo组装流程时,配置文件中的`minimap2_options_raw = -t 8`即指定了比对线程数。 --- #### **4. 输出结果处理** 将SAM转换为BAM并排序: ```bash samtools view -Sb input.sam | samtools sort -o sorted.bam ``` --- #### **5. 性能优化建议** - 长读长数据的高错误率:使用`-k21 -w11`调整k-mer参数 - 高灵敏度需求:添加`--secondary=yes`保留二次比对结果 - 参考Sentieon软件中的优化方案:HiFi数据在16x深度时准确率已超越30x Illumina数据 --- #### **6. 常见问题** **Q:如何提高比对效率?** A:增加线程数(`-t`参数),但需注意内存消耗。对于大型基因组(如水稻380M基因组),建议分配充足计算资源。 **Q:比对结果中为何出现大量短比对?** A:可能因测序错误率较高导致,可尝试调整`-k`(k-mer大小)或使用`--score-N`参数调节空位罚分。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值