1. 空间转录组到底解决了什么痛点
做单细胞测序的人都有一个共同的遗憾:把组织打碎成单个细胞之后,细胞的位置信息全丢了。你知道这块组织里有T细胞、有上皮细胞、有基质细胞,但你不知道它们各自待在哪里,谁挨着谁,谁在跟谁“对话”。而传统的原位杂交或者免疫组化,虽然能保留位置,但一次只能看一个或几个基因,通量太低,根本拼不出全局图景。
空间转录组学就是冲着这个矛盾来的。它的核心思路是:在保留组织切片空间位置的前提下,同时捕获成千上万个转录本的表达信息。而10X Visium是目前商业化最成熟、使用最广泛的空间转录组平台之一。它把一张载玻片做成微阵列芯片,上面铺了几千个带有空间条形码的捕获点,每个点直径55微米,点间距100微米,每个点里藏着数以亿计的捕获探针。你把组织切片贴上去,做透化,mRNA就被捕获点“抓”住,然后反转录、建库、测序。测完之后,每个测序read都带着一个空间条形码,你就能反推它来自哪个位置。
这套流程听起来不复杂,但真正上手之后你会发现,从样本准备到数据分析,每一步都有坑。我自己做过的Visium项目里,有因为切片厚度不对导致透化过度的,有因为组织贴片时留了气泡导致大片区域无信号的,也有在Space Ranger跑完之后发现聚类结果跟组织形态对不上的。这篇文章就把整个流程从头到尾拆一遍,把那些“只有踩过才知道”的细节都讲清楚。
这篇文章适合谁看?如果你是刚接触空间转录组的生物信息人员,或者你是做湿实验的想了解下游数据分析能给出什么,又或者你正在评估要不要上这个平台,那这篇内容应该能帮你省下不少试错时间。我尽量不堆术语,用做实验的逻辑把每一步讲透。
2. 芯片结构决定了你该怎么设计实验
2.1 一张Visium玻片上到底有什么
Visium芯片的外观跟普通载玻片差不多,但表面有一块6.5mm × 6.5mm的捕获区域,这个区域里排列着大约5000个捕获点。每个捕获点是一个直径55微米的小圆,相邻点的中心间距是100微米。捕获区域四周有四个基准标记,用于图像对齐和空间坐标定位。
每个捕获点上固定着大量捕获探针,这些探针的序列结构是这样的:一段poly-T序列用来抓mRNA的poly-A尾巴,接着是一段空间条形码,再接着是UMI,最后是测序接头。空间条形码是每个点独有的,通过它就能知道这个转录本来自哪个位置。UMI用来去重,避免PCR扩增偏好导致表达量虚高。
这里有一个关键参数需要记住:每个捕获点理论上能捕获的转录本数量是有限的,实际有效捕获效率跟组织透化程度、mRNA丰度都有关系。我实测下来,一个点捕获到几千到几万个UMI是比较常见的范围,如果某个点的UMI数低于500,基本可以认为这个点没有有效数据。
2.2 芯片选择与组织尺寸的匹配逻辑
Visium目前有两种捕获区域规格:标准版是6.5mm × 6.5mm,还有一个更大面积的版本是11mm × 11mm。选哪个取决于你的组织切片尺寸。这里有一个很容易犯的错误:直接把组织切片贴上去,没有考虑组织是否完全落在捕获区域内。
如果组织超出了捕获区域,超出部分的数据就丢了,而且你没法事后补救。如果组织太小,比如只占了捕获区域的20%,那大部分捕获点都是空的,测序成本就浪费了。我的经验是,组织切片应该占据捕获区域面积的50%到80%之间,这样既能保证有足够的空间信息,又不至于浪费太多捕获点。
实际操作中,你需要在切片前用显微镜确认组织尺寸,然后决定用哪种规格的芯片。如果组织形状不规则,尽量让关键区域落在捕获区域内。有些实验室会先用HE染色的相邻切片来评估组织形态,再决定切片位置,这个做法很稳妥。
2.3 芯片保存与处理的注意事项
Visium芯片对湿度非常敏感。捕获探针是固定在玻片表面的,如果芯片受潮,探针可能降解或者空间条形码之间的交叉污染会增加。芯片从包装里取出来之后,要尽快使用,不要长时间暴露在空气中。如果确实需要短暂存放,放在干燥器中,并且避免温度剧烈变化。
还有一个细节:芯片表面有一层保护涂层,在贴组织之前需要做一次预处理,把涂层去掉,暴露捕获探针。这个步骤的时间和温度要严格按照试剂盒说明书来,不同批次的芯片可能略有差异。我遇到过因为预处理不充分导致捕获效率整体偏低的情况,后来每次都会在预处理后用一个质控切片快速验证一下。
3. 样本准备与切片:湿实验阶段的核心环节
3.1 组织冷冻与包埋的实操要点
Visium对样本质量的要求比单细胞测序更高,因为空间转录组本质上是在组织切片上做原位捕获,mRNA的完整性直接决定了数据质量。组织离体后要尽快冷冻,最好在30分钟内完成。冷冻方式推荐用异戊烷加干冰,或者直接用液氮,但要注意避免冰晶形成。冰晶会破坏细胞结构,导致mRNA降解,最终表现为基因检出数偏低。
包埋的时候,OCT包埋剂要完全覆盖组织,避免气泡。气泡在切片时会形成空洞,贴片后这些区域就没有组织,捕获点也就没有信号。我自己的做法是:包埋后先在-20度预冷几分钟,让OCT稍微固化,再转移到-80度长期保存。切片前把组织块从-80度拿出来,放在-20度平衡30分钟,这样切片时不容易碎裂。
切片厚度通常推荐10微米,但这个厚度不是绝对的。如果组织比较致密,比如肝脏或心脏,可以适当薄一点,8微米左右,避免透化时mRNA扩散过度。如果组织比较疏松,比如脑组织或肺组织,可以厚一点,12微米,保证有足够的mRNA被捕获。切片厚度需要根据组织类型做预实验来优化。
3.2 组织贴片与透化的关键控制点
切片漂浮在水浴中之后,要用干净的载玻片把切片捞起来,然后贴到Visium芯片的捕获区域上。这一步最怕的是气泡和褶皱。气泡会在透化时形成局部隔离,导致气泡下方的捕获点无法接触到试剂。褶皱会让组织厚度不均匀,透化程度不一致。
贴片后要把芯片放在37度烘箱里烘干,让组织紧密贴合在芯片表面。烘干时间一般是1到2分钟,但具体要看组织含水量。烘干不足,组织容易在后续步骤中脱落;烘干过度,mRNA会降解。我通常会在显微镜下观察组织边缘是否开始变干,作为判断依据。
透化是湿实验阶段最关键的步骤。透化液含有蛋白酶K等成分,用来消化细胞膜和核膜,让mRNA释放出来被捕获探针抓住。透化时间太短,mRNA释放不充分,捕获效率低;透化时间太长,mRNA会扩散到相邻捕获点,导致空间分辨率下降。10X官方推荐的时间是几分钟,但不同组织差异很大。我的建议是:第一次做某个组织类型时,先做一个透化时间梯度预实验,用几个相邻切片分别透化不同时间,然后看哪个时间的基因检出数和空间特异性最好。
3.3 文库构建与测序参数选择
透化完成后,捕获点上的探针已经抓到了mRNA,接下来做反转录,把mRNA变成cDNA,同时加上测序接头。然后回收cDNA,做PCR扩增,再建库测序。Visium的文库结构跟单细胞测序类似,但空间条形码的引入让每个read都带上了位置信息。
测序深度方面,官方推荐每个捕获点至少读到5000到10000条read。但实际需要多少,取决于你的组织复杂度和研究目的。如果只是看组织区域划分,每个点5000条read可能就够了;如果要看低表达基因或者做差异表达分析,建议每个点至少10000条read。测序模式推荐用双端测序,read1用来读空间条形码和UMI,read2用来读转录本序列。
这里有一个成本优化的技巧:如果你的组织切片只占了捕获区域的一部分,可以只对组织覆盖的区域进行测序数据分析,空点可以过滤掉,这样有效数据量会更高。但测序本身还是要覆盖整个捕获区域,因为空间条形码的分布是固定的。
4. Space Ranger:从原始数据到表达矩阵
4.1 Space Ranger的输入文件与运行逻辑
Space Ranger是10X官方提供的分析流程,输入文件包括:测序得到的FASTQ文件、显微镜拍摄的组织图像、以及一个描述芯片和图像对应关系的JSON文件。JSON文件里记录了芯片的基准标记在图像中的像素坐标,Space Ranger会根据这些坐标把图像坐标和捕获点的空间坐标对齐。
运行Space Ranger的核心命令是spaceranger count,需要指定转录组参考、图像文件、JSON文件、FASTQ路径等参数。运行时间取决于数据量,一般几个小时到十几个小时不等。运行完成后会输出一个包含表达矩阵、空间坐标、聚类结果和质控指标的文件夹。
这里有一个容易忽略的点:JSON文件的准确性直接影响空间坐标对齐。如果基准标记的坐标标错了,整个空间映射就会偏移。我通常会在运行前用Space Ranger提供的图像查看工具确认一下基准标记的位置是否正确。
4.2 质控指标解读与过滤标准
Space Ranger输出的质控指标里,有几个需要重点关注。第一个是每个捕获点的UMI数,这个指标反映了捕获效率。如果大部分点的UMI数低于500,说明透化或捕获环节有问题。第二个是每个点的基因数,通常跟UMI数正相关。第三个是线粒体基因比例,如果某个点的线粒体基因比例超过20%,说明这个点的细胞可能已经死亡或降解。
还有一个空间转录组特有的质控指标:组织覆盖区域的点占比。如果组织只覆盖了捕获区域的30%,那有效数据量就比较有限。我一般会建议组织覆盖至少50%以上。
过滤标准方面,我通常会把UMI数低于500的点过滤掉,同时过滤线粒体基因比例高于20%的点。但这不是绝对的,如果组织本身RNA含量低,标准可以适当放宽。关键是要在过滤后保留足够的空间信息,如果过滤太狠,组织形态就看不出来了。
4.3 空间坐标与图像对齐的验证方法
Space Ranger运行完成后,会生成一个空间散点图,每个点代表一个捕获点,颜色代表聚类结果或基因表达。你需要把这个散点图跟原始组织图像对比,看聚类结果是否跟组织形态对应。如果聚类结果跟组织形态完全对不上,可能是空间坐标对齐出了问题。
验证方法很简单:在Space Ranger的输出里找到spatial文件夹,里面有一个tissue_positions_list.csv文件,记录了每个捕获点的行列坐标和是否在组织内。你可以把这个文件里的坐标跟图像上的位置做叠加,看是否吻合。如果偏移明显,需要检查JSON文件里的基准标记坐标。
我遇到过一次因为图像分辨率设置不对导致对齐偏移的情况。后来发现是显微镜拍摄时用了错误的放大倍数,JSON文件里的坐标是按另一个倍数标的。重新拍图并更新JSON后问题解决。所以拍图时一定要记录好放大倍数和像素尺寸。
5. Seurat空间数据分析:从聚类到差异表达
5.1 数据读入与Seurat对象构建
Space Ranger的输出可以直接读入Seurat。用Read10X函数读取表达矩阵,用Read10X_Image读取空间图像信息,然后用CreateSeuratObject构建Seurat对象,再把图像信息加到对象里。Seurat会自动把表达矩阵和空间坐标关联起来。
读入之后,先做基础质控。用PercentageFeatureSet计算线粒体基因比例,用subset函数过滤低质量点。过滤标准跟前面说的一样,UMI数低于500、线粒体比例高于20%的点去掉。过滤后检查一下剩余点数,如果少于1000个点,后续分析的统计效力可能不够。
归一化用NormalizeData,默认用LogNormalize方法。然后找高变基因,用FindVariableFeatures,默认选2000个。接着做标准化,用ScaleData,把表达量缩放到均值为0、方差为1。这一步是为了后续的PCA降维。
5.2 降维聚类与空间可视化
降维用RunPCA,然后选主成分数。选多少主成分?可以用肘部图来判断,一般选10到30个。我通常选20个,因为空间转录组的点数量比单细胞少,主成分太多容易过拟合。聚类用FindNeighbors和FindClusters,分辨率参数决定聚类粒度。分辨率越高,聚类越多。我一般从0.5开始试,根据组织复杂度调整。
聚类完成后,用SpatialDimPlot把聚类结果画在组织切片上。这一步是空间转录组最直观的输出:你能看到不同的聚类是否对应不同的组织区域。如果聚类结果跟组织形态吻合,说明分析流程没问题。如果不吻合,可能是聚类分辨率不对,或者空间坐标对齐有问题。
还有一个可视化方法是SpatialFeaturePlot,用来展示某个基因在组织上的表达分布。比如你可以看上皮标志基因是否在上皮区域高表达,免疫细胞标志基因是否在免疫浸润区域高表达。这种可视化能帮你快速验证数据的生物学合理性。
5.3 空间差异表达与区域互作分析
找到聚类之后,下一步是找每个聚类的标志基因。用FindAllMarkers或者FindMarkers做差异表达分析。跟单细胞不同的是,空间转录组的差异表达分析要考虑空间自相关,因为相邻的点表达模式可能相似。Seurat本身没有专门处理空间自相关,但你可以用其他工具比如SPARK或SpatialDE来做空间变异基因分析。
区域互作分析是空间转录组的一个高级应用。你可以计算不同聚类之间的空间邻接关系,看哪些区域倾向于相邻。比如肿瘤区域和免疫区域是否相邻,相邻区域的配体受体表达是否互补。这需要用到细胞通讯分析工具,比如CellChat或NicheNet,把空间信息整合进去。
我做过一个肿瘤样本的分析,发现肿瘤区域和基质区域的交界处有一群特殊的巨噬细胞,它们的配体表达跟肿瘤区域的受体表达高度互补。这种发现是单细胞测序做不到的,因为单细胞丢了空间信息,你不知道哪些细胞是相邻的。
6. 常见问题与避坑指南
6.1 湿实验阶段的典型问题
问题一:组织切片贴片后有气泡。气泡会导致气泡下方的捕获点无信号。解决方法:贴片时用镊子轻轻按压组织边缘,把气泡赶出去。如果气泡已经形成,可以在透化前用针尖轻轻刺破气泡,但要注意不要破坏组织。
问题二:透化过度导致空间分辨率下降。透化过度时,mRNA会扩散到相邻捕获点,表现为基因表达的空间特异性变差。解决方法:做透化时间梯度预实验,选最优时间。如果已经过度,可以在数据分析时用反卷积算法部分恢复空间分辨率,但效果有限。
问题三:测序数据中空间条形码匹配率低。如果Space Ranger报告的空间条形码匹配率低于70%,说明测序质量有问题或者文库构建有问题。解决方法:检查测序仪的校准,检查文库的片段大小分布,必要时重新建库。
6.2 数据分析阶段的典型问题
问题一:聚类结果跟组织形态对不上。可能原因有三个:空间坐标对齐偏移、聚类分辨率不对、数据质量太差。排查顺序:先检查空间坐标对齐,再调整聚类分辨率,最后检查质控指标。
问题二:某些区域没有捕获到信号。可能是组织没有覆盖到那些区域,或者那些区域的mRNA含量太低。解决方法:如果是组织覆盖问题,下次实验调整切片位置;如果是mRNA含量低,可以增加测序深度或者用信号增强试剂。
问题三:差异表达分析结果不显著。空间转录组的点数量比单细胞少,统计效力天然偏低。解决方法:放宽显著性阈值,或者用空间信息辅助分析,比如把相邻的点合并成区域再做差异表达。
6.3 常见问题速查表
| 问题现象 | 可能原因 | 排查方法 | 解决方案 |
|---|---|---|---|
| 捕获点UMI数普遍偏低 | 透化不足或组织降解 | 检查透化时间、组织RNA完整性 | 优化透化时间、改用新鲜组织 |
| 空间特异性差 | 透化过度 | 检查透化时间、看基因表达是否弥散 | 缩短透化时间、用反卷积算法 |
| 聚类与形态不符 | 坐标对齐偏移 | 检查JSON文件、叠加坐标与图像 | 重新标定基准标记 |
| 部分区域无信号 | 组织未覆盖或气泡 | 检查组织位置、看图像是否有气泡 | 调整切片位置、去除气泡 |
| 差异表达不显著 | 点数量少、统计效力低 | 检查过滤后点数 | 放宽阈值、合并区域分析 |
6.4 我个人踩过的坑与经验总结
第一个坑:第一次做Visium时,我没有做透化预实验,直接按官方推荐时间操作。结果透化过度,基因表达的空间分布非常弥散,聚类结果跟组织形态完全对不上。后来补做了透化梯度,发现最优时间比官方推荐短了将近一半。所以我的建议是:不管官方推荐什么,第一次做某个组织类型一定要做预实验。
第二个坑:有一次组织切片贴片时留了一个小气泡,我当时觉得气泡很小应该不影响。结果数据分析时发现气泡位置对应的捕获点全部无信号,而且因为气泡边缘的透化不均匀,周围点的表达模式也受到了影响。从那以后,我每次贴片都会在显微镜下仔细检查,确保没有气泡。
第三个坑:Space Ranger运行完成后,我没有及时检查空间坐标对齐,直接跑了下游分析。结果聚类结果跟组织形态对不上,排查了很久才发现是JSON文件里的基准标记坐标标错了。后来我养成了一个习惯:Space Ranger跑完后第一件事就是看空间散点图和原始图像的叠加,确认对齐没问题再往下做。
第四个坑:差异表达分析时,我一开始用了单细胞测序的阈值,结果几乎找不到显著差异基因。后来意识到空间转录组的点数量少,统计效力低,调整了阈值并加入了空间邻接信息,才得到了合理的生物学结论。
7. 从数据到生物学结论的完整链路
空间转录组的最终价值不在于技术本身,而在于它能回答什么生物学问题。我做过的一个项目是研究肿瘤微环境中的免疫排斥现象。用Visium数据,我们发现了肿瘤区域周围有一圈“免疫排斥带”,这个区域里的T细胞数量不少,但它们的杀伤功能基因表达很低。进一步分析发现,这个区域里的基质细胞高表达免疫抑制分子,而且这些基质细胞跟T细胞在空间上高度邻近。这个发现用单细胞测序是做不出来的,因为单细胞丢了空间信息,你不知道哪些基质细胞跟T细胞挨着。
另一个应用场景是发育生物学。用Visium可以追踪胚胎发育过程中不同区域的分化轨迹,看哪些基因在哪些区域先表达,哪些区域后表达。这种时空动态信息对于理解发育调控网络非常关键。
还有一个场景是神经科学。大脑的不同区域有不同的基因表达模式,Visium可以在保留脑区结构的前提下,同时看所有基因的表达。这对于研究脑区特异性的基因调控很有价值。
从技术角度看,Visium的分辨率是55微米,一个捕获点里可能包含几个到几十个细胞。所以它给出的不是单细胞分辨率,而是“区域分辨率”。如果你的研究问题需要单细胞分辨率,那Visium可能不够,需要考虑更高分辨率的技术。但如果你关注的是组织区域层面的差异,Visium的性价比和成熟度目前是最好的。
数据分析方面,Seurat是目前最主流的工具,但也有一些专门针对空间转录组的工具值得关注。比如BayesSpace可以做空间聚类,SPARK可以做空间变异基因分析,CellChat可以做空间细胞通讯分析。这些工具各有侧重,可以根据研究问题选择。
最后分享一个小技巧:如果你做的是多个样本的Visium项目,建议在分析时做整合分析,把多个样本的聚类结果统一起来。Seurat的IntegrateLayers函数可以做整合,但要注意空间转录组的整合跟单细胞不同,需要同时考虑表达相似性和空间邻接性。我通常先用单细胞整合方法做初步整合,再用空间信息做微调。