生信技能

生信技能

RNA测序分析(三)基因组比对:HISAT2 实操

2025-11-08

RNA测序分析(三)基因组比对:HISAT2 实操

GBhouse专用扉页.gifimage.png



RNA 测序(RNA-seq)是揭示基因表达的利器。但测序仪给我们的并不是基因表达量,而是一堆短短的序列片段(reads)。这些 reads 是从细胞内的 RNA 片段化后随机测出来的,它们本身没有“地址”,我们不知道它们来自哪个基因、哪个外显子、甚至是哪条染色体。因此,在正式做表达量分析或差异分析之前,第一件事就是——

🔎 把这些 reads 找回它们在基因组上的“原籍地”
这个过程就叫做 比对(alignment 或 mapping)

一、为什么要进行比对?

比对的意义主要有三点:

  1. 确定来源基因
    每个 read 对应于一个基因或转录本的特定区域。只有知道它来自哪里,才能统计某个基因的表达量。

  2. 识别剪接结构
    RNA 在转录后会发生
    剪接(splicing),内含子被切除,外显子拼接在一起。比对的过程需要识别这些跨外显子连接的 reads(spliced reads),这对理解转录本结构至关重要。

  3. 支持后续分析
    高质量的比对结果是以下分析的基础:

    • 计算基因或转录本表达量(如 featureCounts、StringTie)

    • 发现新的转录本或可变剪接事件

    • 鉴定 RNA 编辑、融合基因、突变等事件

二、HISAT2 是什么?

HISAT2,全称为 Hierarchical Indexing for Spliced Alignment of Transcripts 2,是由约翰霍普金斯大学的生物信息学团队开发的一款高效 RNA-seq 比对工具
它的最大特点是——既快又准。

HISAT2 采用一种叫 FM-index 的压缩索引算法,并结合了 基于图的基因组索引(graph-based genome index) 技术,可以高效地识别 RNA 中的外显子-内含子边界,也就是剪接位点(splicing junctions)

三、HISAT2 的基本使用流程

RNA-seq 比对主要分两步:
① 构建参考基因组索引
② 进行 reads 比对 假设我们已经下载好了参考基因组(例如 Ensembl 的 Homo_sapiens.GRCh38.dna.primary_assembly.fa),需要先生成HISAT2的索引文件。 运行命令示例如下👇

# 1. 构建索引(仅需一次)

hisat2-build Homo_sapiens.GRCh38.dna.primary_assembly.fa GRCh38_index

参数
含义
hisat2-build
HISAT2 的建索引命令,用来把参考基因组 .fa 文件转换成可供比对的索引结构。只需执行一次。
Homo_sapiens.GRCh38.dna.primary_assembly.fa
输入的参考基因组序列文件(FASTA 格式)。
GRCh38_index
输出索引的前缀名。会生成多个以此开头的索引文件(如 .ht2 文件)。

# 2. 比对双端测序数据

hisat2 -p 8 \ -x GRCh38_index \ -1 sample_R1.fastq.gz \ -2 sample_R2.fastq.gz \ -S sample.sam

参数
全称 / 作用
说明
hisat2
主命令
启动 HISAT2 进行比对。
-p 8--threads
使用 8 个线程(CPU 核心)并行加速。根据服务器配置可调整,如 4、16 等。
-x GRCh38_index--index
指定前面生成的索引文件前缀名。比对时 HISAT2 会自动加载对应的 .ht2 文件。
-1 sample_R1.fastq.gz--read1
双端测序的 第一端(forward reads) 文件。
-2 sample_R2.fastq.gz--read2
双端测序的 第二端(reverse reads) 文件。
-S sample.sam--samout
输出结果文件名,格式为 SAM(Sequence Alignment/Map)。

输出的 .sam 文件即为比对结果,后续可用 samtools 转换为 .bam 并进行排序、统计、定量等分析。

HISAT2 比对后处理的标准流程

假设前面你得到了比对输出文件:

sample.sam

🧱 第一步:将 SAM 转为压缩格式 BAM

samtools view -@ 32 -bS sample.sam -o sample.bam

-@ 32 使用 32 个线程加速;-bS 表示输入为 SAM,输出为 BAM。


🧩 第二步:排序 BAM 文件(按基因组坐标)

echo "Sorting BAM..." 

samtools sort -@ 32 -o sample.sorted.bam sample.bam

排序后的文件命名为 sample.sorted.bam,是后续定量与可视化的标准输入。


🧬 第三步:为排序后的 BAM 建立索引

echo "Indexing sorted BAM..." 

samtools index sample.sorted.bam

会自动生成一个名为 sample.sorted.bam.bai 的索引文件,方便 IGV 或 featureCounts 等工具快速定位。


📊 第四步:统计比对结果(生成报告)

samtools flagstat sample.sorted.bam > sample.flagstat.txt

输出文件 sample.flagstat.txt 将包含:

  • 总 reads 数量

  • 成功比对 reads 数

  • 成对比对比例

  • 比对率等关键质量指标


✅ 最终文件结构示例

sample.sam # 原始比对结果

 sample.bam # 压缩格式(便于存储)

 sample.sorted.bam # 排序后的标准格式

 sample.sorted.bam.bai # 索引文件 

sample.flagstat.txt # 比对统计报告

最终获得了排序后的bam文件和bam文件索引,以及比对统计报告。