软件minimap2

之前查了一下 minimap2 的官方文档,但是没有整理,下面内容是让AI自动写的。

minimap2 使用文档

minimap2:高效序列比对工具,适用于长读长(ONT / PacBio)、短读长、组装比对、RNA 剪接比对、读段重叠检测。
默认输出 PAF,可输出 SAM;基于 minimizer 索引,速度快、内存友好。

官方仓库:https://github.com/lh3/minimap2


1. 安装

源码编译

1
2
3
git clone https://github.com/lh3/minimap2
cd minimap2
make

conda

1
conda install -c bioconda minimap2

验证

1
minimap2 --version

2. 基本思想

1
2
参考序列(target) → 建索引
查询序列(query) → 比对到参考
  • 输入:FASTA / FASTQ(支持 gzip)
  • 输出:
    • 默认:PAF(轻量比对格式)
    • -a:SAM
    • -c:带 CIGAR 的 PAF

最小示例:

1
minimap2 ref.fa query.fq > approx.paf


3. 索引(推荐先建)

对大参考基因组,重复比对时先建索引可大幅节省时间。

1
2
3
4
5
# 建索引
minimap2 -d ref.mmi ref.fa

# 用索引比对
minimap2 -ax map-ont ref.mmi reads.fq.gz > aln.sam

注意: - 索引一旦建成,-k/-w/-H/-I 等索引参数不能改 - 不同数据类型建议建不同索引


4. 常用 Preset(核心)

规则:-x 放前面,后面参数会覆盖 preset 内部设置

场景 命令
ONT 长读长 -ax map-ont
PacBio CLR -ax map-pb
PacBio HiFi -ax map-hifi
高质量 ONT(Q20+) -ax lr:hq
Illumina 短读长 -ax sr
组装比对(近缘,~0.1% 差异) -ax asm5
组装比对(~1% 差异) -ax asm10
组装比对(几个百分点差异) -ax asm20
RNA 长读长剪接 -ax splice
高质量 RNA 长读长 -ax splice:hq
读段自重叠(ONT) -x ava-ont
读段自重叠(PacBio) -x ava-pb

5. 典型实战命令

5.1 ONT 基因组读段比对

1
2
3
minimap2 -t 16 -ax map-ont ref.mmi ont.reads.fq.gz > aln.sam
samtools sort -o aln.bam aln.sam
samtools index aln.bam

5.2 PacBio HiFi

1
minimap2 -t 16 -ax map-hifi ref.fa hifi.fq.gz > aln.sam

5.3 短读长(双端)

1
minimap2 -t 16 -ax sr ref.fa r1.fq.gz r2.fq.gz > aln.sam

5.4 组装比对到参考

1
minimap2 -ax asm10 ref.fa assembly.fa > asm.paf

5.5 组装间互相比对

1
minimap2 -ax asm20 ref.fa query_assembly.fa > asm.paf

5.6 RNA 剪接比对

1
2
3
4
5
# 未知链
minimap2 -ax splice ref.fa cdna.fq > rna.sam

# 已知正义链(Iso-seq / cDNA)
minimap2 -ax splice -uf ref.fa iso.fq > rna.sam

5.7 读段重叠检测

1
minimap2 -x ava-ont reads.fq reads.fq > ovlp.paf

6. 输出格式

6.1 PAF(默认,12 列)

列 含义
1 Query 名
2 Query 长度
3 Query 起始(0-based)
4 Query 结束
5 链方向(+/-)
6 Target 名
7 Target 长度
8 Target 起始
9 Target 结束
10 匹配碱基数
11 比对块长度(含 gap)
12 比对质量 0–255

常见可选 tag: - cg:CIGAR - NM:错配+gap 数 - cs:差异字符串(变异检测用) - dv:近似碱基分歧度 - tp:P/S(primary/secondary)

带 CIGAR 的 PAF:

1
minimap2 -cx map-ont ref.fa reads.fq > aln.paf

6.2 SAM

1
minimap2 -ax map-ont ref.fa reads.fq > aln.sam

7. 常用参数

通用

参数 说明
-t 线程数
-a 输出 SAM
-c PAF 中输出 CIGAR
-d 输出索引文件 .mmi
-o 输出文件
-Q 忽略质量值
-N 次要比对条数(默认 5)
--cs 输出差异字符串(变异用)

索引

参数 默认 说明
-k 15 minimizer k-mer 长度
-w 10 minimizer 窗口
-H 关 同聚物压缩(HPC)
-I 4G 索引内存上限

比对调优

参数 说明
-p 次要比对分数比例阈值
-r chaining 带宽
-g 最大 gap
--mask-level 重叠屏蔽比例

8. 性能建议

HPC / 集群环境

1
2
minimap2 -t 32 -ax map-ont ref.mmi reads.fq.gz \
| samtools sort -@ 8 -o aln.bam
  • 大基因组:先建索引
  • 多样本:共用同一个 .mmi
  • 内存受限:降低 -I,配合 --split-prefix
  • 不需要碱基级比对:用 PAF,不加 -a/-c

不输出碱基比对(最快)

1
minimap2 -x asm10 ref.fa qry.fa > aln.paf

9. 典型流程:长读长 → BAM

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#!/usr/bin/env bash
set -e

REF=ref.fa
READS=ont.fq.gz
THREADS=16

# 1. 建索引(只需一次)
minimap2 -t $THREADS -d ref.mmi $REF

# 2. 比对
minimap2 -t $THREADS -ax map-ont ref.mmi $READS > aln.sam

# 3. 排序建索引
samtools sort -@ $THREADS -o aln.bam aln.sam
samtools index aln.bam

# 4. 统计
samtools flagstat aln.bam

10. 常见坑

  1. preset 选错
    • ONT 别用 map-pb
    • HiFi 别用 map-ont
  2. 索引参数不能改
    • 建索引后换 -k/-w 无效
  3. PAF 没有 CIGAR
    • 需要 CIGAR:加 -c 或 -a
  4. 多分片索引影响 MAPQ
    • 大参考降低 -I 会触发多分片索引,MAPQ 可能不准
  5. RNA 比对没开 splice
    • 基因组 preset 不会识别内含子

11. 一句话速查

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 建索引
minimap2 -d ref.mmi ref.fa

# ONT
minimap2 -ax map-ont ref.mmi reads.fq.gz > aln.sam

# HiFi
minimap2 -ax map-hifi ref.mmi reads.fq.gz > aln.sam

# 组装
minimap2 -x asm10 ref.fa asm.fa > aln.paf

# RNA
minimap2 -ax splice ref.fa cdna.fq > rna.sam

参考资料

  1. https://github.com/lh3/minimap2
  2. https://deepwiki.com/lh3/minimap2/2.1-input-and-output-formats
  • 版权声明: 本博客所有文章除特别声明外,著作权归作者所有。转载请注明出处!
  • Copyrights © 2019-2026 Vincere Zhou
  • 访问人数: | 浏览次数:

请我喝杯茶吧~

支付宝
微信