跳转至

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检测嵌合体/融合基因