STAR — RNA-seq 专用高速剪接比对工具¶
一句话说明¶
STAR(Spliced Transcripts Alignment to a Reference)是 RNA-seq 数据比对的金标准工具,能快速准确地处理跨外显子的剪接比对,速度比同类工具快 10-50 倍。
安装与配置¶
# 方法1:conda 安装(推荐)
conda install -c bioconda star # 从 bioconda 安装 STAR
# 方法2:预编译二进制
wget https://github.com/alexdobin/STAR/releases/download/2.7.11b/STAR_2.7.11b.zip
unzip STAR_2.7.11b.zip # 解压后直接可用
# 验证安装
STAR --version # 当前最新 2.7.11b(2024年)
内存要求¶
- 人类基因组索引构建:约 32GB RAM
- 比对运行时:约 30GB RAM
- 这是 STAR 最大的"门槛",小内存机器跑不动
核心用法¶
构建基因组索引¶
# 构建 STAR 索引(只需一次,人类基因组约 30 分钟)
STAR --runMode genomeGenerate \
--runThreadN 16 \ # 使用 16 个线程
--genomeDir star_index/ \ # 索引输出目录
--genomeFastaFiles ref.fa \ # 参考基因组 FASTA
--sjdbGTFfile genes.gtf \ # 基因注释 GTF 文件(提升剪接检测)
--sjdbOverhang 149 # 读段长度 - 1(150bp 测序填 149)
基本比对¶
# 标准 RNA-seq 双端比对
STAR --runMode alignReads \
--runThreadN 16 \ # 16 线程
--genomeDir star_index/ \ # 索引目录
--readFilesIn R1.fq.gz R2.fq.gz \ # 输入文件(双端)
--readFilesCommand zcat \ # 输入是 gzip 压缩文件时必须加
--outSAMtype BAM SortedByCoordinate \ # 直接输出排序好的 BAM
--outFileNamePrefix sample1_ # 输出文件前缀
进阶用法¶
# 带定量的比对(替代 featureCounts/HTSeq 单独定量)
STAR --runMode alignReads \
--runThreadN 16 \
--genomeDir star_index/ \
--readFilesIn R1.fq.gz R2.fq.gz \
--readFilesCommand zcat \
--outSAMtype BAM SortedByCoordinate \
--quantMode GeneCounts \ # 同时输出基因计数矩阵
--outFileNamePrefix sample1_
# 两步比对法(Two-pass,提高新剪接位点检测灵敏度)
# 第一步:初始比对,发现新剪接位点
STAR --runThreadN 16 --genomeDir star_index/ \
--readFilesIn R1.fq.gz R2.fq.gz --readFilesCommand zcat \
--outSAMtype None \ # 第一步不需要输出 BAM
--outFileNamePrefix pass1_
# 第二步:用发现的剪接位点重新比对
STAR --runThreadN 16 --genomeDir star_index/ \
--readFilesIn R1.fq.gz R2.fq.gz --readFilesCommand zcat \
--sjdbFileChrStartEnd pass1_SJ.out.tab \ # 第一步发现的剪接位点
--outSAMtype BAM SortedByCoordinate \
--outFileNamePrefix pass2_
# 或者用内置的 twopassMode 自动完成
STAR --runThreadN 16 --genomeDir star_index/ \
--readFilesIn R1.fq.gz R2.fq.gz --readFilesCommand zcat \
--twopassMode Basic \ # 自动两步比对
--outSAMtype BAM SortedByCoordinate \
--outFileNamePrefix twopass_
常见问题与踩坑¶
问题1:内存不足(EXITING: fatal error)¶
原因:STAR 索引加载需要约 30GB 内存
解决:使用大内存节点,或用 --genomeSAindexNbases 减小索引(小基因组时)
问题2:压缩文件无法读取¶
原因:忘记加 --readFilesCommand zcat
解决:.gz 文件必须加 --readFilesCommand zcat,.bz2 文件用 bzcat
问题3:比对率异常低¶
原因:--sjdbOverhang 与实际读段长度不匹配,或参考基因组版本不对
解决:--sjdbOverhang 设为读段长度 - 1,确认参考基因组和注释版本一致
问题4:输出目录已存在导致报错¶
原因:STAR 不会覆盖已有输出
解决:删除旧输出文件或更换 --outFileNamePrefix
速查卡片¶
| 命令/参数 | 用途 |
|---|---|
--runMode genomeGenerate | 构建基因组索引 |
--runMode alignReads | 运行比对(默认模式) |
--sjdbGTFfile genes.gtf | 提供基因注释 |
--sjdbOverhang 149 | 读段长度 - 1 |
--readFilesCommand zcat | 读取 .gz 压缩文件 |
--outSAMtype BAM SortedByCoordinate | 输出排序 BAM |
--quantMode GeneCounts | 同时输出基因计数 |
--twopassMode Basic | 两步比对模式 |
--outFilterMultimapNmax 20 | 最大多重比对数 |
--chimSegmentMin 20 | 检测嵌合体/融合基因 |