空间转录组: 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 数据子集执行标准分析管道。

相关文章
|
25天前
|
运维 负载均衡 自动驾驶
自动化运维卷到最后,都卷成了“智能决策”?——从脚本到AIOps的进化史
自动化运维卷到最后,都卷成了“智能决策”?——从脚本到AIOps的进化史
92 7
|
5月前
|
数据采集 数据挖掘 Serverless
空间转录组学: 质控处理(1)
空间转录组学: 质控处理(1)
空间转录组学: 质控处理(1)
|
25天前
|
机器学习/深度学习 人工智能 自然语言处理
AI Compass前沿速览:Open-AutoGLM智能体框架、Z-Image图像生成、GLM-4.6V多模态理解与可灵2.6音画同步技术
AI Compass前沿速览:Open-AutoGLM智能体框架、Z-Image图像生成、GLM-4.6V多模态理解与可灵2.6音画同步技术
AI Compass前沿速览:Open-AutoGLM智能体框架、Z-Image图像生成、GLM-4.6V多模态理解与可灵2.6音画同步技术
|
25天前
|
机器学习/深度学习 人工智能 自然语言处理
2025年中国数字人企业排名与新推荐榜及新技术指南
AI数字人正重塑人机交互,具备情感共鸣、多语言沟通、全天候服务、个性化定制与持续学习五大优势,广泛应用于教育、医疗、客服等领域。它们不仅是高效工具,更成为有温度的智慧伙伴,推动科技向人性化迈进,开启“人人拥有数字分身”的未来新图景。
|
25天前
|
人工智能 自然语言处理 数据可视化
构建AI智能体:五十六、从链到图:LangGraph解析--构建智能AI工作流的艺术工具
本文介绍了LangGraph这一基于LangChain的库,它突破了传统线性链式开发的局限,通过图计算模型实现复杂AI应用的构建。LangGraph的核心优势在于:1)支持动态图结构,实现循环和条件路由;2)内置状态管理,维护应用数据流;3)天然支持多智能体协作。与传统开发方式相比,LangGraph通过节点、边和状态的抽象,提供了更清晰的业务逻辑表达、更健壮的错误处理、更好的可观测性,以及更便捷的团队协作和功能扩展能力。
289 10
|
2月前
|
存储 SQL 分布式计算
手把手教你搞定大数据上云:数据迁移的全流程解析
本文深入探讨了企业数据迁移的核心价值与复杂挑战,重点分析了离线大数据平台在物理传输、系统耦合与数据校验三方面的难题。文章系统阐述了存储格式、表格式、计算引擎等关键技术原理,并结合LHM等工具介绍了自动化迁移的实践演进,展望了未来智能化、闭环化的数据流动方向。
515 14
手把手教你搞定大数据上云:数据迁移的全流程解析
|
11天前
|
存储 SQL Apache
Flink + Fluss 实战: Delta Join 原理解析与操作指南
Flink Delta Join 通过复用源表数据替代本地状态,解决双流 Join 状态膨胀问题。结合 Fluss 流存储,实现高效双向 Lookup,显著降低资源消耗与 Checkpoint 时间,提升作业稳定性与恢复速度,已在阿里大规模落地。
173 25
Flink + Fluss 实战: Delta Join 原理解析与操作指南
|
8天前
|
机器学习/深度学习 监控 自动驾驶
基于 YOLOv8 的交通标识与设施识别系统(含完整源码)
基于YOLOv8的交通标识识别系统,实现对人行横道、限速、停车、信号灯等目标的高精度检测。支持图像、视频、摄像头输入,集成PyQt5可视化界面,提供完整源码、模型权重与数据集。适用于智能交通、自动驾驶等场景,具备良好扩展性与工程落地价值。
121 7
|
24天前
|
人工智能 监控 Cloud Native
架构级拆解:AI数字人与数字员工的核心差异,玄晶引擎云原生实践启示
本文揭示AI数字人与AI数字员工的本质差异:前者仅为可视化交互组件,后者是具备业务闭环能力的云原生智能体。基于玄晶引擎与阿里云PAI实测,从架构、系统对接到弹性部署,解析如何实现“交互→决策→执行”全流程自动化,助力开发者精准选型,避免落地陷阱。
179 11
|
18天前
|
SQL 人工智能 自然语言处理
让AI真正懂数据:猫超Matra项目中的AI知识库建设之路
本文介绍猫超基于大模型的AI数据助手Matra实践,构建面向Data Agent的知识库体系,通过知识图谱与ReAct框架实现智能取数,提升数据研发效率与业务分析能力。
203 27
让AI真正懂数据:猫超Matra项目中的AI知识库建设之路