Pipeline整体架构:流程步骤、工具链、输入输出规范
空间转录组分析Pipeline,说白了就是一套“从图像到基因表达矩阵”的自动化流水线。我在做项目时发现,很多人觉得这就是跑个软件的事,结果一断连,完全不知道断在哪、怎么接。所以这一章,咱们把整个架构拆开看看。
先给你一张全貌图,心里有个谱。
1. 流程步骤——从原始数据到生物学结论
我个人习惯把Pipeline拆成四个阶段,每个阶段的输出就是下个阶段的输入。你在中断恢复时,首先得搞明白断在哪一关。
| 阶段 | 主要步骤 | 输出文件 | 典型耗时 |
|---|---|---|---|
| 数据输入 | FASTQ获取、Image获取、目录组织 | 原始FASTQ、TIFF图像 | 5-30分钟 |
| 质量控制 | FastQC、MultiQC、barcode过滤 | QC报告、过滤后的FASTQ | 1-4小时 |
| 比对定量 | STARsolo / Space Ranger的count | BAM、特征-条形码矩阵 | 4-48小时 |
| 分析可视化 | Seurat / Scanpy 聚类、SpatialDE | h5Seurat、annData、图像标注 | 2-12小时 |
关键点:比对定量阶段是Pipeline中最容易出问题的环节。我在项目中遇到过一次STAR跑了36小时,最后因为磁盘写满挂掉了——你想想看,如果没做好中间检查,前面全白干。
2. 工具链——每个节点用谁家的刀
工具选型这事儿挺有讲究。我用过的空间转录组Pipeline,核心工具基本就那几把。
- 10x Visium 官方方案:Space Ranger + Loupe Browser,全流程闭源。优点是开箱即用,缺点是出了错不好定位。我建议新手先用它跑通流程,再考虑切换。
- 开源方案:STARsolo + Seurat/Scanpy + Giotto,灵活度高。我自己项目里偏好这套,中断后可以直接从某一步续跑。
我的小套路:在正式跑全管道前,先做一次Mini测试——只跑100万条reads。很多配置问题、路径问题、软件版本冲突,都能在这轮暴露出来。比全量跑崩了再排查,省心太多。
3. 输入输出规范——文件路径和命名要统一
中断恢复最怕什么?最怕你找不到中间文件在哪。我见过一个团队,每个人目录风格都不一样,结果断链后根本不知道上一步输出放哪了。我的建议是——强一致性。
project/
├── 00_raw_data/
│ ├── sample1_S1_L001_R1_001.fastq.gz
│ ├── sample1_S1_L001_R2_001.fastq.gz
│ └── tissue_image.tif
├── 01_qc/
│ ├── fastqc/
│ ├── filtered_fastq/
│ └── qc_report.html
├── 02_alignment/
│ ├── star_out/
│ ├── barcodes.tsv
│ ├── features.tsv
│ └── matrix.mtx
├── 03_analysis/
│ ├── seurat_object.rds
│ └── clustering_results.csv
└── logs/
├── pipeline_20250320.log
└── error_summary.txt
你看,目录编号清晰,每个阶段独立。就算中间跑崩了,你也能准确定位到哪个环节挂了。
4. 中断的高风险区域——提前预警
嗯,这里要注意。空间转录组Pipeline有几个“鬼门关”,一旦中断,恢复成本很高。
| 中断点 | 常见原因 | 恢复策略 |
|---|---|---|
| 比对阶段 | 内存不足、磁盘写满、reference版本错 | 检查log,调整资源后从上次checkpoint续跑 |
| 定量生成矩阵 | barcode白名单不匹配、细胞数阈值过低 | 重新生成或手动修正白名单文件 |
| 聚类分析 | Seurat版本不匹配、对象损坏 | 用备份的rds文件重新加载,并锁R包版本 |
避坑指南:我曾经因为没做磁盘预留,STAR跑到一半直接挂了。从那以后,我每个大步骤前都会执行 df -h 检查空间,并且估算输出文件大小。养成这个习惯,能帮你省掉至少一半的恢复工作。