RNA 测序(RNA-seq)是揭示基因表达的利器。但测序仪给我们的并不是基因表达量,而是一堆短短的序列片段(reads)。这些 reads 是从细胞内的 RNA 片段化后随机测出来的,它们本身没有“地址”,我们不知道它们来自哪个基因、哪个外显子、甚至是哪条染色体。因此,在正式做表达量分析或差异分析之前,第一件事就是——
🔎 把这些 reads 找回它们在基因组上的“原籍地”。
这个过程就叫做 比对(alignment 或 mapping)。
一、为什么要进行比对?
比对的意义主要有三点:
确定来源基因
每个 read 对应于一个基因或转录本的特定区域。只有知道它来自哪里,才能统计某个基因的表达量。
识别剪接结构
RNA 在转录后会发生剪接(splicing),内含子被切除,外显子拼接在一起。比对的过程需要识别这些跨外显子连接的 reads(spliced reads),这对理解转录本结构至关重要。
计算基因或转录本表达量(如 featureCounts、StringTie)
二、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 | |
| GRCh38_index | 输出索引的前缀名。会生成多个以此开头的索引文件(如 .ht2 文件)。 |
# 2. 比对双端测序数据
hisat2 -p 8 \ -x GRCh38_index \ -1 sample_R1.fastq.gz \ -2 sample_R2.fastq.gz \ -S sample.sam
| | |
|---|
| 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 将包含:
✅ 最终文件结构示例
sample.sam # 原始比对结果
sample.bam # 压缩格式(便于存储)
sample.sorted.bam # 排序后的标准格式
sample.sorted.bam.bai # 索引文件
sample.flagstat.txt # 比对统计报告
最终获得了排序后的bam文件和bam文件索引,以及比对统计报告。