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

相关文章
|
16天前
|
存储 SQL 分布式计算
手把手教你搞定大数据上云:数据迁移的全流程解析
本文深入探讨了企业数据迁移的核心价值与复杂挑战,重点分析了离线大数据平台在物理传输、系统耦合与数据校验三方面的难题。文章系统阐述了存储格式、表格式、计算引擎等关键技术原理,并结合LHM等工具介绍了自动化迁移的实践演进,展望了未来智能化、闭环化的数据流动方向。
337 11
手把手教你搞定大数据上云:数据迁移的全流程解析
|
7天前
|
人工智能 供应链 算法
TsingtaoAI荣膺2025澳门首届DSA国际创新创业大赛奖项,RISC-V AI机器人引领行业新突破
2025澳门首届DSA国际创新创业大赛圆满落幕,TsingtaoAI凭借RISC-V AI协作机器人项目摘得优胜奖。该项目融合轻量设计与2.0TOPS算力,支持图形化编程与模块化扩展,已落地高校实验室并构建开源生态,获澳门专项孵化及产业链支持,助力中国芯赋能实体经济。(238字)
79 27
|
11天前
|
机器学习/深度学习 数据采集 自然语言处理
基于深度学习+NLP豆瓣电影数据爬虫可视化推荐系统
本研究构建基于深度学习与NLP的豆瓣电影数据系统,融合LSTM、BERT与CNN技术,实现高效爬取、情感分析、个性化推荐与动态可视化,提升影视数据分析效率与推荐精准度,推动产业智能化升级。
|
9天前
|
人工智能 Java API
【Azure AI Search】如何通过Entra ID RBAC认证连接中国区 Azure AI Search
本文介绍如何在Java SDK中配置中国区AI Search资源访问。由于默认认证地址为全球环境(https://search.azure.com),在中国区需修改为https://search.azure.cn,并通过设置SearchAudience.AZURE_CHINA解决认证失败问题,确保资源正常获取。
99 18
|
9天前
|
存储 缓存 编解码
《低端机硬件适配的非表层方案》
本文聚焦Unity低端机显存不足的核心痛点,分享一套兼顾视觉体验与硬件适配的非传统优化体系。从低端机显存带宽窄、容量有限的硬件特性出发,跳出单纯压缩资源的固化思维,构建多维度优化逻辑:通过纹理梯度适配与模型拓扑精简的资源预处理,从源头控制显存消耗;以场景分块加载、资源优先级排序的动态管理机制,平衡加载峰值与复用效率;重构渲染流程,用烘焙光照替代实时光照,降低显存交互压力;借助分层监测与硬件画像的精准排查,定位核心消耗靶点;建立多梯队硬件分级与显存预算分配的长效机制,应对设备多样性与场景迭代需求。
84 17
|
24天前
|
SQL 人工智能 自然语言处理
Apache Doris 4.0 版本正式发布:全面升级 AI 与搜索能力,强化离线计算
Apache Doris 4.0 正式发布!深度融合AI与搜索能力,支持向量索引、AI函数、全文检索打分,强化离线计算稳定性,提升查询性能与数据质量,助力企业构建高效实时数仓。
249 11
Apache Doris 4.0 版本正式发布:全面升级 AI 与搜索能力,强化离线计算
|
8天前
|
数据采集 弹性计算 供应链
包年包月、按量付费和抢占式实例有什么区别?阿里云ECS付费类型如何选择?
阿里云ECS提供三种付费模式:包年包月适合长期稳定使用,价格优惠且支持备案;按量付费按小时计费,灵活但成本较高,适合短期或突发业务;抢占式实例价格低至1折,但可能被释放,仅推荐用于无状态应用。根据业务需求选择合适模式可优化成本与稳定性。
64 20
|
4天前
|
算法 安全 量子技术
量子来了,RSA要凉?聊聊后量子加密的未来与现实(含代码!)
量子来了,RSA要凉?聊聊后量子加密的未来与现实(含代码!)
74 11
|
16天前
|
搜索推荐 数据可视化 图形学
《Unity原生融合:体验生态构建与玩法裂变的实战指南》
本文聚焦Unity游戏开发的创新技术实践,跳出传统“模块拼接”思维,提出“玩法原生融合”的核心。文章围绕六大关键技术维度展开:以“叙事化场景基因植入”让场景成为叙事载体;通过“体感化交互势能传递”构建沉浸式操作体验;打造“多维成长裂变”体系实现个性化养成;构建“情绪化光影语法”让光影传递情感;运用“体验无缝缝合技术”打破场景切换割裂感。整套方案融合实战经验与创新思维,强调体验元素的底层共生与生态化构建,摒弃冗余理论,聚焦实操逻辑,为开发者提供兼具深度与实用性的技术路径,助力游戏实现从“功能叠加”到“体验升维”的跨越。
|
10天前
|
新能源 数据挖掘 关系型数据库
基于python大数据的新能源汽车数据分析系统
在全球能源与环境双重压力下,新能源汽车快速发展,产生海量数据。本文设计基于Python的新能源汽车数据分析系统,结合MySQL与B/S架构,实现数据高效管理与可视化分析,助力企业优化产品、提升服务,推动产业智能化与可持续发展。