HISAT2 — 低内存 RNA-seq 剪接比对工具¶
一句话说明¶
HISAT2 是基于 HGFM(Hierarchical Graph FM)索引的 RNA-seq 比对工具,内存需求仅 8GB(STAR 要 30GB),特别适合内存有限的服务器环境。
安装与配置¶
# 方法1:conda 安装(推荐)
conda install -c bioconda hisat2 # 从 bioconda 安装
# 方法2:直接下载预编译版本
wget https://cloud.biohpc.swmed.edu/index.php/s/oTtGWbWjaxsQ2Ho/download -O hisat2.zip
unzip hisat2.zip # 解压即可使用
# 验证安装
hisat2 --version # 当前最新 2.2.1
# 下载预构建的人类基因组索引(推荐,省去自己构建的时间)
wget https://genome-idx.s3.amazonaws.com/hisat2/grch38.tar.gz
tar -xzf grch38.tar.gz # 解压即可使用
核心用法¶
构建索引¶
# 构建基本索引
hisat2-build \
-p 16 \ # 使用 16 个线程
ref.fa \ # 参考基因组 FASTA
hisat2_index # 索引前缀名
# 构建包含 SNP 和剪接位点信息的索引(推荐)
# 先从 GTF 提取剪接位点和外显子信息
hisat2_extract_splice_sites.py genes.gtf > splice_sites.txt # 提取剪接位点
hisat2_extract_exons.py genes.gtf > exons.txt # 提取外显子
hisat2-build \
-p 16 \
--ss splice_sites.txt \ # 已知剪接位点
--exon exons.txt \ # 已知外显子
ref.fa \
hisat2_index_with_ss # 带注释的索引
基本比对¶
# 双端 RNA-seq 比对
hisat2 \
-p 16 \ # 16 线程
--dta \ # 为下游 StringTie 组装优化输出
-x hisat2_index \ # 索引前缀
-1 R1.fq.gz \ # Read 1
-2 R2.fq.gz \ # Read 2
| samtools sort -@ 4 -o aligned.bam # 排序输出 BAM
samtools index aligned.bam # 建 BAM 索引
# 单端比对
hisat2 -p 16 --dta -x hisat2_index -U reads.fq.gz \
| samtools sort -o se_aligned.bam
进阶用法¶
# 链特异性文库比对(dUTP 法,最常见)
hisat2 -p 16 --dta \
--rna-strandness RF \ # RF = dUTP 法(Read 1 反义链,Read 2 正义链)
-x hisat2_index \
-1 R1.fq.gz -2 R2.fq.gz \
| samtools sort -o stranded.bam
# 输出未比对的读段(用于后续分析)
hisat2 -p 16 --dta \
-x hisat2_index \
-1 R1.fq.gz -2 R2.fq.gz \
--un-conc-gz unmapped_%.fq.gz \ # 未比对的双端读段
| samtools sort -o aligned.bam
# 下游 StringTie 组装转录本
stringtie aligned.bam \
-G genes.gtf \ # 参考注释引导组装
-o assembly.gtf \ # 组装结果
-p 16 # 线程数
常见问题与踩坑¶
问题1:链特异性参数选错¶
原因:不同建库方法的 strandness 不同
解决:dUTP 法用 --rna-strandness RF(双端)或 R(单端);不确定时先跑 infer_experiment.py(RSeQC)检测
问题2:比对率低于预期¶
原因:索引没有包含剪接位点信息
解决:用 hisat2_extract_splice_sites.py 提取剪接位点并构建带注释的索引
问题3:下游 StringTie 结果异常¶
原因:比对时没加 --dta 参数
解决:--dta(downstream transcriptome assembly)会调整比对策略,用 StringTie 时必须加
问题4:内存溢出¶
原因:使用了带 SNP 信息的大索引
解决:不需要 SNP 感知比对时,用基本索引即可(约 8GB 内存)
速查卡片¶
| 命令/参数 | 用途 |
|---|---|
hisat2-build ref.fa prefix | 构建索引 |
hisat2 -x idx -1 R1 -2 R2 | 双端比对 |
hisat2 -x idx -U reads | 单端比对 |
--dta | 为 StringTie 优化输出 |
--rna-strandness RF | dUTP 链特异性(双端) |
--rna-strandness R | dUTP 链特异性(单端) |
--known-splicesite-infile | 提供已知剪接位点 |
--novel-splicesite-outfile | 输出新发现的剪接位点 |
-k 5 | 每条读段最多报告 5 个比对 |
--un-conc-gz | 输出未比对的双端读段 |