空间转录组: Visium HD 数据集分析 (完结)

简介: 空间转录组: Visium HD 数据集分析 (完结)

引言

本系列讲解 空间转录组学 (Spatial Transcriptomics) 相关基础知识与数据分析教程,持续更新,欢迎关注,转发,文末有交流群

一致性

我们可以在空间上可视化结果:

plotVisium(.vhd16, 
    annotate="cluster", zoom=TRUE, 
    point_shape=22, point_size=1.6, 
    pal=unname(pals::kelly())) + 
plot_spacer() +
plotVisium(.vhd16, 
    annotate="Banksy", zoom=TRUE, 
    point_shape=22, point_size=1.6, 
    pal=unname(pals::kelly())) + 
plot_spacer() +
plotVisium(.vhd16, 
    annotate=".DeconLabel1", zoom=TRUE, 
    point_shape=22, point_size=1.6, 
    pal=unname(pals::trubetskoy())) +
plot_layout(nrow=1, widths=c(1, 0.05, 1, 0.05, 1)) & 
    facet_null() & theme(legend.key.size=unit(0, "lines"))

我们观察到 Banksy 非常清晰地描绘出组织边界,而 deconvolution 则直接提供了对底层聚类的生物学洞察。它们的一致性可以通过热图进行可视化:

fq <- prop.table(table(.vhd16$Banksy, .vhd16$.DeconLabel1), 1)
pheatmap(fq, cellwidth=10, cellheight=10, treeheight_row=5, treeheight_col=5)

从上述热图来看,cluster 5 和 7 大多是免疫细胞;cluster 9 对应内皮细胞;cluster 1 和 13 分别对应肠上皮细胞和平滑肌细胞;成纤维细胞对应 cluster 10;肿瘤跨越 clusters 3、11 和 12。

Neighborhood 分析

在此,我们希望量化 8 µm 放大区域中 T 细胞、B 细胞或 Myeloid 分仓与 Fibroblast 或 Tumor 分仓之间的丰度。我们使用来自 Statial(Ameen 等,2024)的 getAbundances() 函数,为每个分仓计算半径 200 px 范围内其他细胞类型的丰度;得到的(分仓 × 类型)矩阵被存储在 reducedDim 槽 "abundances" 中。

.vhd8 <- .vhd8[, !is.na(.vhd8$.DeconLabel1)]
xy <- data.frame(spatialCoords(.vhd8))
colData(.vhd8)[names(xy)] <- xy
.vhd8 <- getAbundances(.vhd8, 
    spatialCoords=names(xy),
    cellType=".DeconLabel1", 
    imageID="sample_id", 
    r=200, nCores=4)

让我们看一下丰度和距离结果,还包括反卷积结果:

df <- reducedDim(.vhd8, "abundances")
df$CT <- .vhd8$.DeconLabel1
df[1:5, 1:5]

接下来,我们只挑出 T 细胞、B 细胞和髓系细胞所在的格子,看看在它们周围,成纤维细胞或肿瘤细胞的“数量”是否存在空间上的亲疏差异。

source <- df$CT %in% c("T cells", "B cells", "Myeloid")
target <- c("Tumor", "Fibroblast", "CT")
fd <- pivot_longer(
    df[source, target], cols=-CT,
    names_to="target", values_to="n")
head(fd)

在该区域,我们观察到每个免疫分仓周围出现的 fibroblast 分仓数量多于 tumor 分仓。然而,请注意,在此放大区域内,fibroblast 分仓的总数本身就比 tumor 分仓多出约 1.4 倍。因此,必须将丰度值按该区域中目标细胞类型分仓的总数进行归一化。

n_tum <- table(.vhd8$.DeconLabel1)["Tumor"]
n_fib <- table(.vhd8$.DeconLabel1)["Fibroblast"]
fd$p <- ifelse(fd$target == "Tumor", fd$n/n_tum, fd$n/n_fib)
ggplot(fd, aes(x=CT, y=n, fill=target)) + 
    labs(y="# cells within 200px") +
ggplot(fd, aes(x=CT, y=p, fill=target)) + 
    labs(y="relative abundance") +
plot_layout(nrow=1, guides="collect") & 
    geom_boxplot(key_glyph="point") & 
    scale_fill_manual(values=c("yellow", "pink")) & 
    guides(fill=guide_legend(override.aes=list(shape=21, size=2))) &
    theme_classic() & theme(
        axis.title.x=element_blank(),
        legend.key.size=unit(0, "lines"))

校正后,我们观察到在该放大区域内,每种免疫细胞类型周围的 fibroblast 分仓相对于 tumor 分仓的相对丰度差异被进一步放大。

我们还可以基于给定半径内两种细胞类型之间的最小距离来研究“cell-cell-marker”关系。所有细胞类型两两之间的最小距离矩阵被存储在降维结果中,与之前存储丰度矩阵的方式类似。

# NOTE: conversion to SCE is a temporary fix for a 'Statial' bug 
# reported here: https://github.com/SydneyBioX/Statial/issues/16
tmp <- as(.vhd8, "SingleCellExperiment")
tmp <- getDistances(tmp, 
    cellType=".DeconLabel1", imageID="sample_id",
    spatialCoords=names(xy), maxDist=200, nCores=4)
reducedDim(.vhd8, "distances") <- reducedDim(tmp, "distances")

在此,我们旨在确定肿瘤标记物的表达水平是否随着与 fibroblast 的距离变化而改变。以 FTH1 为例,我们观察到肿瘤分仓中 FTH1 的表达随着与 fibroblast 距离的增加而下降。这一趋势可用散点图进行可视化。

p <- plotStateChanges(
    cells=.vhd8, 
    image="sample01", 
    from="Tumor", 
    to="Fibroblast",
    marker="FTH1", 
    cellType=".DeconLabel1", 
    imageID="sample_id",
    spatialCoords=c("array_col", "array_row"))
p$image + facet_null() | p$scatter

整套分析流程同样适用于 16 µm 分辨率、未经过滤的 Visium HD 数据及其配套去卷积结果。

总结

在本工作流程中,我们展示了如何对 16 µm 分仓的 Visium HD 数据子集执行标准分析管道。

相关文章
|
5月前
|
存储 数据可视化
单细胞分析: Scanpy 核心绘图 (3)
单细胞分析: Scanpy 核心绘图 (3)
单细胞分析: Scanpy 核心绘图 (3)
|
5月前
|
数据采集 数据挖掘 Serverless
空间转录组学: 质控处理(1)
空间转录组学: 质控处理(1)
空间转录组学: 质控处理(1)
|
机器学习/深度学习 数据可视化 TensorFlow
TensorFlow的可视化工具:TensorBoard的使用
【4月更文挑战第17天】TensorBoard是TensorFlow的官方可视化工具,用于展示和分析模型训练过程、结构和数据。它包括标量、图像、音频、模型图和直方图等多种可视化功能。通过`tf.summary`记录数据,使用`tensorboard --logdir`启动。高级功能包括自定义仪表板、嵌入和插件,助力深度学习的调试与优化。
|
3月前
|
编解码 数据可视化 数据挖掘
空间转录组: Visium HD 数据集分析 (1)
空间转录组: Visium HD 数据集分析 (1)
276 27
空间转录组: Visium HD 数据集分析 (1)
|
2月前
|
存储 SQL 分布式计算
手把手教你搞定大数据上云:数据迁移的全流程解析
本文深入探讨了企业数据迁移的核心价值与复杂挑战,重点分析了离线大数据平台在物理传输、系统耦合与数据校验三方面的难题。文章系统阐述了存储格式、表格式、计算引擎等关键技术原理,并结合LHM等工具介绍了自动化迁移的实践演进,展望了未来智能化、闭环化的数据流动方向。
593 14
手把手教你搞定大数据上云:数据迁移的全流程解析
|
1月前
|
消息中间件 运维 监控
后台数据的“毒警”:指标噪声和空洞指标不治理,你的监控就永远是个“聋子”
后台数据的“毒警”:指标噪声和空洞指标不治理,你的监控就永远是个“聋子”
86 12
|
2月前
|
缓存 运维 监控
一次内存诊断,让资源利用率提升 40%:揭秘隐式内存治理
阿里云云监控 2.0 推出 SysOM 底层操作系统诊断能力,基于 eBPF + BTF 协同分析,无需侵入业务,即可一键完成从物理页到文件路径、再到容器进程的全栈内存归因,让“黑盒内存”无所遁形。
597 83
|
2月前
|
存储 数据采集 监控
分钟级定位 IO 瓶颈:多租户云环境下的智能诊断
阿里云推出IO一键诊断功能,智能识别IO延迟高、流量异常等问题,通过动态阈值与多指标关联分析,实现秒级异常发现与根因定位,提升云环境存储性能问题解决效率。
196 12
分钟级定位 IO 瓶颈:多租户云环境下的智能诊断
|
1月前
|
人工智能 自然语言处理 数据可视化
构建AI智能体:五十六、从链到图:LangGraph解析--构建智能AI工作流的艺术工具
本文介绍了LangGraph这一基于LangChain的库,它突破了传统线性链式开发的局限,通过图计算模型实现复杂AI应用的构建。LangGraph的核心优势在于:1)支持动态图结构,实现循环和条件路由;2)内置状态管理,维护应用数据流;3)天然支持多智能体协作。与传统开发方式相比,LangGraph通过节点、边和状态的抽象,提供了更清晰的业务逻辑表达、更健壮的错误处理、更好的可观测性,以及更便捷的团队协作和功能扩展能力。
341 10
|
1月前
|
数据挖掘 C++ 计算机视觉
Python:ImportError:DLL loadfailed while importing onnxruntime_pybind11_state: 动态链接库(DLL)初始化例程失败 报错解决
在进行文件夹内人脸识别与对比聚类时,遇到onnxruntime库报错,通常因版本不兼容或环境冲突导致。本文整理了五种解决方案:降级onnxruntime至1.14.1、重装库、区分GPU/CPU版本、安装Visual C++运行库、创建Python虚拟环境。通过版本匹配与环境隔离,有效解决DLL初始化失败等问题,提升项目稳定性。