从原始数据到聚类结果:Visium分析全流程概览
老实说,刚接触Visium数据的人,最容易被各种文件格式和参数搞晕。我在新手期就吃过这个亏——对着bam文件和loupe文件发愁,不知道从哪下手。这一章我带你把整条链路跑一遍,心里有个谱。
整体数据流
一条典型的Visium数据分析管线,说白了就是四步走:
- 原始数据处理——从测序仪出来的FASTQ文件,加上一个关键的HE染色图像
- 表达定量——把reads比对到参考基因组,生成基因表达矩阵
- 降维与聚类——常规scRNA-seq那套方法,加上空间坐标约束
- 结果验证——用病理图像做视觉校验
我个人习惯把这四步看作“生产-验证”闭环。你想想看,没有图像验证,你的聚类可能只是统计上的假象。
原始数据处理
这一步由Space Ranger完成。输入和输出长这样:
输入:
FASTQ文件(测序数据)
参考基因组(GRCh38或mm10)
探针集文件(Visium特有)
输出:
raw_feature_bc_matrix.h5 # 原始表达矩阵
filtered_feature_bc_matrix.h5 # 过滤后矩阵
spatial/tissue_hires_image.png # 高分辨率组织图像
spatial/tissue_lowres_image.png # 低分辨率图像
spatial/scalefactors_json.json # 尺度系数
spatial/tissue_positions.csv # 每个spot的空间坐标
analysis/clustering/ # 预计算的聚类结果
嗯,这里要注意的是raw_feature_bc_matrix.h5和filtered_feature_bc_matrix.h5的区别。我在项目中遇到过有人直接用raw matrix做降维,结果组织背景里的残留RNA全被纳入了分析,聚类效果惨不忍睹。
tissue_positions.csv里的in_tissue标志是唯一的抢救方案。
表达定量核心命令
跑一条完整的Space Ranger命令,大概长这样:
spaceranger count \
--id=sample1 \
--transcriptome=/data/references/GRCh38 \
--fastqs=/data/fastqs \
--sample=SAMPLE1 \
--image=/data/images/SAMPLE1.tif \
--slide=V10M30-004 \
--area=A1 \
--loupe-alignment=/data/alignments/SAMPLE1.json \
--localcores=16 \
--localmem=64
这里--loupe-alignment文件是你在Loupe Browser里手动对齐图像和阵列得到的。我个人强烈建议这一步别偷懒,自动对齐经常对不准,尤其是针对脂肪组织或纤维化组织——图像特征太少,算法容易漂。
降维与聚类管线
拿到filtered_feature_bc_matrix.h5之后,后面的分析逻辑和单细胞非常接近。我用一个表格帮你对比一下:
| 步骤 | 方法/工具 | 输入 | 输出 |
|---|---|---|---|
| 质量控制 | 过滤低质量spot(UMI数、基因数、线粒体比例) | filtered h5 | clean h5 |
| 标准化 | SCTransform或LogNormalize | clean h5 | 归一化矩阵 |
| 特征选择 | 高变基因(top 2000-5000) | 归一化矩阵 | 基因子集 |
| 降维 | PCA(默认50个主成分) | 归一化矩阵 | PC score矩阵 |
| 聚类 | Leiden或Louvain算法 | PC scores | 聚类标签 |
| 空间可视化 | 对接组织图像坐标 | 聚类标签+spatial/tissue_positions.csv | 空间映射图 |
你可以看到,聚类这一步本质上和单细胞没有区别。真正让Visium独特的地方在于最后一步——把你的聚类结果绘制到组织切片上。我见过太多人做完聚类就收工了,但如果你不回到组织图像上去验证,你永远不知道你的聚类是否具有生物学意义。
为什么需要Singularity容器
你想想看,上面这条管线依赖的软件环境有多复杂:
- Space Ranger需要特定版本的Python、GCC和R
- Scanpy/Seurat又对库版本有严格依赖
- GPU加速需要CUDA和cuDNN的精确组合
我最初处理Visium数据时,光是配环境就花了整整两天。更别说换一台机器重装一次了。Singularity容器就是用来干这个的——把整个环境打包成一个.sif文件,别人拿到手直接跑。
SVG:全流程概览图
本章小结
整个Visium数据分析核心就是:Space Ranger加工原始数据 → 经典单细胞工具做降维聚类 → 用组织图像做空间验证。这四步跑通之后,你就拿到了带有空间坐标的聚类结果。