Cell Ranger 计数实操:从 fastq 到矩阵


文档摘要

2.5 Cell Ranger 计数实操:从 fastq 到矩阵 本节摘要:计数软件把 fastq 变成细胞×基因矩阵,核心动作是比对、按条码归组、按 UMI 去重、判定哪些条码对应真细胞。本节给出 Cell Ranger 的完整命令、输出目录的阅读顺序、网页报告里必须核对的指标,并对比 STARsolo 与 kallisto|bustools 两条开源路线。 从 fastq 到矩阵的一条命令 Cell Ranger 是与液滴化学版本配套的官方计数软件,跑一次计数分两步:准备参考基因组(物种参考,人鼠都有现成包可下载),然后执行 count 子命令。下面是一次典型运行的完整会话: 参数对应 fastq 文件名里的样本标识,软件靠它在目录里找到属于自己的 reads;

2.5 Cell Ranger 计数实操:从 fastq 到矩阵

本节摘要:计数软件把 fastq 变成细胞×基因矩阵,核心动作是比对、按条码归组、按 UMI 去重、判定哪些条码对应真细胞。本节给出 Cell Ranger 的完整命令、输出目录的阅读顺序、网页报告里必须核对的指标,并对比 STARsolo 与 kallisto|bustools 两条开源路线。

从 fastq 到矩阵的一条命令

Cell Ranger 是与液滴化学版本配套的官方计数软件,跑一次计数分两步:准备参考基因组(物种参考,人鼠都有现成包可下载),然后执行 count 子命令。下面是一次典型运行的完整会话:

# 第一步:解压现成的参考包(人,GRCh38),只需做一次 tar -xzvf refdata-gex-GRCh38-2024-A.tar.gz # 第二步:计数。四个关键参数分别指定输出名、参考、fastq 目录、样本名 cellranger count --id=pbmc_run1 \ --transcriptome=refdata-gex-GRCh38-2024-A \ --fastqs=./fastqs \ --sample=pbmc_donorA \ --expect-cells=8000 # 运行数小时后,输出在 pbmc_run1/outs/ 目录下

--sample 参数对应 fastq 文件名里的样本标识,软件靠它在目录里找到属于自己的 reads;--expect-cells 是可选的先验提示,当你对回收量有把握时给出,能帮条码判定更稳——没把握就别给,让它自己从数据里估。输出目录里真正的干货在 outs 子目录:filtered_feature_bc_matrix 是"判定为真细胞"的矩阵(h5 与 mtx 两种格式),raw_feature_bc_matrix 是所有条码的原始矩阵,web_summary.html 是汇总报告,bam 与 molecule_info 存着比对细节与分子级信息,供深度排查使用。

读报告:六个指标定优劣

网页报告信息很多,但定生死的就六项。读的顺序也有讲究——先看细胞数合理不合理,再看质量水位,最后看饱和度:

指标 健康区间(参考) 异常时先怀疑
Estimated Number of Cells 与上机目标回收数同量级 上机浓度失控或样本降解
Mean Reads per Cell 达到下单预算(两万以上) 通量不足或细胞判定过松
Median Genes per Cell 数百到两千多 样本质量差或深度不足
Valid Barcodes 七成五以上 建库或测序问题,条码错读多
Fraction Reads in Cells 七成以上 死细胞多、环境 RNA 污染重
Sequencing Saturation 图谱类两成到五成起步 过低说明还值得加测

Fraction Reads in Cells 特别值得多说一句:它衡量所有 reads 里有多大比例落在真细胞条码上。这个值偏低,意味着大量 reads 来自空液滴里的环境 RNA——通常是死细胞释放、或培养上清里的游离 mRNA。数值差到五成以下时,问题在上游而不在参数,换样本比换软件管用。

图:条码排序曲线与细胞判定

图:条码排序曲线与细胞判定

细胞判定:拐点背后的两种思路

矩阵里"哪些条码算真细胞"这一步叫细胞判定。最直观的方法是找条码排序曲线的拐点:真细胞条码 UMI 数高、数量少,在曲线上形成陡峭的头部;空液滴靠环境 RNA 攒出几十几百个 UMI,形成又长又平的尾巴。拐点上下就是两群条码的分界。更严谨的思路是空液滴模型:用尾巴条码的背景分布,给每个头部条码算"它是空滴"的概率,只有显著高于背景的才收进 filtered 矩阵——这类方法能捞回拐点法容易漏掉的小细胞(比如血小板、部分淋巴细胞)。

对判定结果不满意时的调节手段有限且有代价:force-cells 类参数可以强制指定细胞数,但那是把你的猜测压过数据的判断,除非有上机记录背书,否则不建议用。分析端更常见的做法是把 raw 矩阵读进来,用分析侧工具重新判定一遍,与官方 filtered 结果对照。

开源替代:两条成熟路线

Cell Ranger 不是唯一选择,两条开源路线已经足够成熟。STARsolo 复用久经考验的 STAR 比对器,加了对条码 UMI 结构的支持,输出格式与官方工具对齐,适合已有比对管线、想精细控制比对参数的团队;kallisto|bustools 走伪比对待路线,不逐碱基比对、直接把片段指派给转录本,速度快一个量级,内存占用也小,适合大规模数据的快速迭代。三个工具在多数常规样本上给出的矩阵高度一致,差异集中在低表达基因与背景估计上。选型建议朴实一点:第一次跑通选官方工具少折腾,建流水线与省钱选开源,两边互相验证也是一种质控。

计数完成后,把 filtered 矩阵读进 Scanpy 只要三行:adata = sc.read_10x_h5("outs/filtered_feature_bc_matrix.h5"),随后 adata.var_names_make_unique() 去掉重复基因名。到这里,细胞×基因矩阵正式到手——第三章开始,全册进入分析主场。

常见疑问两则

计数要跑多久、吃多少资源

以单通道八千细胞、每细胞三万 reads 的常规规模为例,官方工具在十六核六十四 G 内存的机器上跑数小时量级完成,中间峰值内存主要被比对环节吃掉。开源路线的资源需求差着量级:伪比对方案的运行时间可以压到官方工具的零头,一张笔记本就能跑动中等规模样本。规划资源时给参考基因组建库、输出目录(bam 与中间文件动辄几十 G)留足磁盘,比给内存留余量更容易被忽略。

内含子读段要不要统计

默认的计数范围只统计外显子比对,这对常规细胞测序是合理的。但两种场景要改:单核测序数据的转录本大多未完全剪接,内含子读段占比极高,必须打开内含子统计选项,否则矩阵会薄得离谱;研究未剪接转录本的场景(比如要做 RNA 速率分析)也会主动收集内含子。参数是计数软件的一个开关项,跑之前确认它与你的数据类型匹配,比事后发现矩阵异常再排查省得多。

本节要点回顾

  • 计数四件事:比对、条码归组、UMI 去重、细胞判定;官方工具与两条开源路线殊途同归。
  • 报告六个指标:细胞数、每细胞 reads、中位基因数、有效条码、reads 落细胞比、饱和度,按此顺序读。
  • knee plot 会看就够:陡头是真细胞、长尾是空液滴,空液滴模型能捞回更接近背景的小细胞。
  • 矩阵进 Scanpy 三行代码:读 h5、基因名去重、看一眼形状,然后进入质控。

矩阵到手还远不能直接用:里面混着死细胞、双联体和空滴残留,表达量还带着测序深度带来的假差异。第三章从质控开始,把这张表逐层洗干净。


作者与出处
原作者: 灏天文库
来源:灏天文库
整理: 灏天文库整理
由灏天文库平台收录,内容或由平台用户上传,仅供学习交流
发布者: 作者: 灏天文库 转发
评论区 (0)
U