Cell Ranger 的替代方案:STARsolo
TL;DR: STARsolo 是用于 10x scRNA-seq 定量分析的快速、开源替代方案,可产生与 Cell Ranger 几乎相同的结果,速度提升约 10 倍,并提供完整的参数控制。当您需要速度、灵活性,或者您的平台无法使用 Cell Ranger 时,请使用 STARsolo。
为什么选择 STARsolo?
Cell Ranger 与 STARsolo 对比
| 特性 | Cell Ranger | STARsolo |
|---|---|---|
| 速度 | 基准 | 快 10 倍 |
| 内存 | ~30-40 GB | ~30-40 GB |
| 平台 | 仅限 Linux | Linux, macOS*, Windows (WSL) |
| 许可证 | 专有 | 开源 (MIT) |
| 输出格式 | Cell Ranger 特定格式 | 兼容 Cell Ranger |
| 自定义 | 有限 | 完整的参数控制 |
| 内含子计数 | 仅基因外显子 | 基因外显子 + Velocyto 模式 |
*macOS 需要变通方案(见下文)
何时选择 STARsolo
✅ 在以下情况下使用 STARsolo:
- 无法使用 Cell Ranger(例如,在 macOS、Windows 上)
- 需要更快的处理速度(大型队列)
- 需要 RNA 速率分析(内含子/外显子计数)
- 需要自定义参考基因组
- 批量处理自动化
⚠️ 在以下情况下坚持使用 Cell Ranger:
- 使用 10x Feature Barcoding(CITE-seq, hashtags)
- 需要 Loupe Browser 文件
- 需要 10x 技术支持进行故障排除

安装
Linux(推荐)
# 下载 STAR(包含 STARsolo)
wget https://github.com/alexdobin/STAR/archive/2.7.11a.tar.gz
tar -xzf 2.7.11a.tar.gz
cd STAR-2.7.11a/source
# 编译
make STAR
# 添加到 PATH
export PATH=$PWD:$PATH
echo 'export PATH=/path/to/STAR-2.7.11a/source:$PATH' >> ~/.bashrc
# 验证
STAR --version
macOS(Apple Silicon)
已知问题: 最近的 STAR 版本在 Apple Silicon 上存在错误。请使用此特定的预发布版本:
# 下载可工作的版本
wget https://github.com/dobinlab/STAR_pre_releases/archive/refs/tags/2.7.11b_alpha_2024-02-09.tar.gz
tar -xzf 2.7.11b_alpha_2024-02-09.tar.gz
cd STAR_pre_releases-2.7.11b_alpha_2024-09/source
# 编译(请勿使用 STARstaticformac)
make STAR
# 增加文件描述符限制(临时文件所需)
ulimit -n 2048 # 添加到 ~/.zshrc 以持久化
# 测试
./STAR --version
资源:
- Issue #2142 - Apple Silicon 修复
- Issue #1953 - macOS 编译
conda(任何操作系统)
conda install -c bioconda star
准备参考基因组
1. 下载参考文件
关键: GTF 和 FASTA 文件的染色体命名必须匹配(CHR vs ALL vs PRI)。
# 用于基因组比对(推荐 - 可发现剪接位点)
wget ftp://ftp.ensembl.org/pub/release-110/fasta/homo_sapiens/dna/Homo_sapiens.GRCh38.dna.primary_assembly.fa.gz
wget ftp://ftp.ensembl.org/pub/release-110/gtf/homo_sapiens/Homo_sapiens.GRCh38.110.gtf.gz
gunzip *.gz
| 文件类型 | 染色体集 | 使用场景 |
|---|---|---|
| primary_assembly (PRI) | 仅主要染色体 | 基因定量(推荐) |
| toplevel (ALL) | 包含支架/补丁 | 完整基因组 |
| CHR | 仅转录本 | cDNA 比对(无剪接) |
2. 构建 STAR 索引
STAR --runMode genomeGenerate \
--genomeDir ./STARindex \
--genomeFastaFiles Homo_sapiens.GRCh38.dna.primary_assembly.fa \
--sjdbGTFfile Homo_sapiens.GRCh38.110.gtf \
--runThreadN 16 \
--genomeSAindexNbases 14 # 针对小基因组进行调整
时间: 人类基因组约 30-60 分钟
磁盘: 索引基因组约 30 GB
运行 STARsolo
基本 10x v3 化学方法
STAR --runThreadN 16 \
--genomeDir ./STARindex \
--readFilesIn R2.fastq.gz R1.fastq.gz \ # 注意:R2 在前!
--readFilesCommand zcat \
--soloType CB_UMI_Simple \
--soloCBwhitelist 3M-february-2018.txt \ # 10x 条形码白名单
--soloUMIlen 12 \
--outSAMtype BAM SortedByCoordinate \
--outSAMattributes NH HI nM AS CR UR CB UB GX GN sS sQ sM \
--outFileNamePrefix output_
10x 条形码白名单: 10x-barcode-lists
用于 RNA 速率分析的 STARsolo
同时计数外显子(基因表达)和内含子(新生 RNA):
STAR --runThreadN 16 \
--genomeDir ./STARindex \
--readFilesIn R2.fastq.gz R1.fastq.gz \
--readFilesCommand zcat \
--soloType CB_UMI_Simple \
--soloCBwhitelist 3M-february-2018.txt \
--soloUMIlen 12 \
--soloFeatures Gene Velocyto \ # 关键添加项
--outSAMtype BAM SortedByCoordinate \
--outFileNamePrefix velocyto_
输出: 同时包含 Gene/(标准)和 Velocyto/(内含子/外显子)矩阵。
多样本批量处理
#!/bin/bash
samples=(sample1 sample2 sample3)
for sample in "${samples[@]}"; do
STAR --runThreadN 8 \
--genomeDir ./STARindex \
--readFilesIn ${sample}_R2.fastq.gz ${sample}_R1.fastq.gz \
--readFilesCommand zcat \
--soloType CB_UMI_Simple \
--soloCBwhitelist 3M-february-2018.txt \
--soloUMIlen 12 \
--outSAMtype None \ # 跳过 BAM 以节省时间
--outFileNamePrefix ${sample}_ &
done
wait
echo "All samples processed"
参数调优以实现与 Cell Ranger 等效
为了精确匹配 Cell Ranger 的输出:
STAR --runThreadN 16 \
--genomeDir ./STARindex \
--readFilesIn R2.fastq.gz R1.fastq.gz \
--readFilesCommand zcat \
--soloType CB_UMI_Simple \
--soloCBwhitelist 3M-february-2018.txt \
--soloUMIlen 12 \
--soloCBstart 1 --soloCBlen 16 --soloUMIstart 17 \
--soloCellFilter EmptyDrops_CR \ # Cell Ranger 的细胞识别算法
--soloUMIdedup 1MM_CR \ # Cell Ranger UMI 去重
--soloUMIfiltering MultiGeneUMI_CR \
--soloBarcodeReadLength 0 \ # 允许条形码长度变化
--outSAMtype BAM SortedByCoordinate \
--outSAMattributes NH HI nM AS CR UR CB UB GX GN sS sQ sM \
--outFileNamePrefix CR_equivalent_
关键参数解释
| 参数 | Cell Ranger 默认值 | 目的 |
|---|---|---|
--soloCellFilter EmptyDrops_CR |
是 | 细胞识别算法 |
--soloUMIdedup 1MM_CR |
是 | 允许 UMI 有 1 个错配 |
--soloUMIfiltering MultiGeneUMI_CR |
是 | 过滤多基因 UMI |
--clipAdapterType CellRanger4 |
是 (CR4+) | 接头剪切 |
输出文件
STARsolo 创建与 Cell Ranger 类似的文件夹结构:
output_Solo.out/
├── Gene/
│ ├── filtered/
│ │ ├── matrix.mtx.gz
│ │ ├── barcodes.tsv.gz
│ │ └── features.tsv.gz
│ ├── raw/
│ │ ├── matrix.mtx.gz
│ │ ├── barcodes.tsv.gz
│ │ └── features.tsv.gz
│ └── Summary.csv
└── Velocyto/ (如果使用了 --soloFeatures Velocyto)
├── filtered/
└── raw/
兼容: Seurat, Scanpy, Cell Ranger 分析流程。
加载到 Seurat
library(Seurat)
# 加载 STARsolo 输出(与 Cell Ranger 相同)
counts <- Read10X("output_Solo.out/Gene/filtered/")
pbmc <- CreateSeuratObject(counts, project = "PBMC")
# 标准 Seurat 工作流程
pbmc <- NormalizeData(pbmc)
pbmc <- FindVariableFeatures(pbmc)
# ... 按常规继续
加载到 Scanpy
import scanpy as sc
# 读取 STARsolo 输出
adata = sc.read_10x_mtx("output_Solo.out/Gene/filtered/")
# 标准预处理
sc.pp.filter_cells(adata, min_genes=200)
sc.pp.normalize_total(adata, target_sum=1e4)
故障排除
"samOutBufferSizeMax too small"
原因: 基因组复杂或读段过多
修复:
--limitOutSAMoneReadBytes 1000000 # 增加缓冲区大小
"Too many open files"
原因: 系统文件描述符限制
修复:
ulimit -n 4096 # 增加限制 (macOS/Linux)
GTF/FASTA 染色体不匹配
症状: 很少或没有读段比对成功
修复: 确保 GTF 和 FASTA 使用相同的命名:
# 检查 GTF 染色体
zcat Homo_sapiens.GRCh38.110.gtf.gz | cut -f1 | sort -u | head
# 检查 FASTA 染色体
grep "^>" Homo_sapiens.GRCh38.dna.primary_assembly.fa | head
# 两者都应显示 "1", "2", ... 或 "chr1", "chr2", ...
细胞回收率低
原因: 错误的化学方法或条形码白名单
修复:
- 10x v2: 使用
737K-august-2016.txt - 10x v3: 使用
3M-february-2018.txt - 使用
fastqc检查 R1 是否以条形码开头
对比:速度基准测试
| 数据集 | Cell Ranger | STARsolo | 加速比 |
|---|---|---|---|
| 5K PBMC | 30 分钟 | 3 分钟 | 10x |
| 10K 肿瘤 | 90 分钟 | 9 分钟 | 10x |
| 50K 多组学 | 6 小时 | 35 分钟 | 10x |
硬件: 16 核,64GB RAM,NVMe SSD
进阶:自定义化学方法
对于非 10x 方案(例如,inDrop, Drop-seq):
STAR --soloType CB_UMI_Simple \
--soloCBstart 1 --soloCBlen 8 \ # 条形码位置
--soloUMIstart 9 --soloUMIlen 6 \ # UMI 位置
--soloCBwhitelist custom_barcodes.txt # 自定义列表
资源
- STAR 手册: github.com/alexdobin/STAR/blob/master/doc/STARmanual.pdf
- 10x 条形码列表: github.com/10XGenomics/cellranger/tree/master/lib/python/cellranger/barcodes
- STARsolo 论文: He et al., Genome Biology 2021
另请参阅: