专栏名称: 生信菜鸟团
生信菜鸟团荣誉归来,让所有想分析生物信息学数据的小伙伴找到归属,你值得拥有!
目录
相关文章推荐
BioArt  ·  PNAS丨高大兴、项晟祺揭示cGAS蛋白的相 ... ·  18 小时前  
生信菜鸟团  ·  空间组学 | NatMethods | ... ·  4 天前  
生物制品圈  ·  仿制药一致性评价流程解析 ·  2 天前  
BioArt  ·  Mol Cell | ... ·  2 天前  
BioArt  ·  Nat Genet | ... ·  2 天前  
51好读  ›  专栏  ›  生信菜鸟团

空间组学 | NatMethods | SpatialData: 一个开放和通用的空间组学数据框架

生信菜鸟团  · 公众号  · 生物  · 2025-01-23 10:00

正文

Basic Information

  • 英文标题: SpatialData: an open and universal data framework for spatial omics
  • 中文标题:SpatialData: 一个开放和通用的空间组学数据框架
  • 发表日期:20 March 2024
  • 文章类型:Brief Communication
  • 所属期刊:Nature Methods
  • 文章作者:Luca Marconato | Oliver Stegle
  • 文章链接:https://www.nature.com/articles/s41592-024-02212-x

Abstract

Para_01
  1. 空间解析组学技术正在改变我们对生物组织的理解。
  2. 然而,由于数据量庞大、数据类型异质性以及缺乏灵活的空间感知数据结构,处理单模态和多模态空间组学数据集仍然是一项挑战。
  3. 在这里,我们介绍SpatialData,这是一个框架,它建立了一个统一且可扩展的多平台文件格式,超过内存大小的数据的惰性表示,转换和对齐到通用坐标系。
  4. SpatialData促进了空间注释和跨模态聚合与分析,其实用性在多个实例中得到展示,包括对多模态Xenium和Visium乳腺癌研究的综合分析。

Main

Para_01
  1. 生物组织的功能与其组成和组织结构密切相关。
  2. 成像技术和空间分子谱分析技术的进步使得通过越来越全面、高分辨率和灵敏度的方式探究组织结构成为可能。
  3. 现有的空间分子谱分析方法可以就地定量DNA、RNA、蛋白质和/或代谢物的丰度。
  4. 其中一些技术使用光学显微镜,能够从亚细胞到整个有机体的长度尺度上解析形态特征。
  5. 空间组学技术正在快速发展,各个数据模式和方法都有各自的优势和局限性,例如空间分辨率、分子多重化程度以及检测灵敏度之间的权衡。
  6. 高效整合并操作来自不同空间组学模式的数据的能力有望成为构建生物系统整体视图的关键工具。
Para_02
  1. 虽然在分析单个空间组学数据集方面已经取得了一些进展,但整合单模态和多模态空间组学数据带来了重要的实际挑战,而现有的解决方案并未充分解决这些问题(扩展数据表1、补充注释1和补充表1)。
  2. 即使是最基本的操作,如将数据集一致地加载到分析管道中,也因数据类型(例如,用于测序的表格数据和用于图像的数十至数百千兆字节密集数组)和文件格式(例如,技术特定的供应商格式)的多样性而受阻。
  3. 此外,各个空间组学模态在空间分辨率上可能相差很大,并且组织中的数据采集空间区域通常不一致。
  4. 因此,为了整合此类数据,必须将其适当地转换并对齐到一个公共坐标系统(CCS),这是建立全球通用坐标框架(CCF)的前提条件。
  5. 最后,解开多模态空间组学数据集的复杂性需要专家知识和动机,这些方法能够支持大规模交互式数据探索和注释。
  6. 因此,为了充分发挥新兴的空间多组学研究的潜力,需要计算基础设施来存储、探索、分析和注释跨越空间组学技术全范围的数据,并提供统一的编程接口。
Para_03
  1. SpatialData框架实现了可查找、可访问、互操作和可重用(FAIR)的空间多模态组学数据集成。
  2. 独立于语言的存储格式增加了数据源的互操作性,而Python库标准化了不同数据类型之间的访问和操作。
  3. SpatialData格式支持所有主要的空间组学技术和派生量(图1a,c,补充说明2和补充表2)。
  4. 简而言之,空间数据集使用五种基本元素来表示:图像(栅格图像)、标签(例如,栅格分割掩膜)、点(例如,分子探针)、形状(例如,多边形感兴趣区域、阵列捕获位置等)以及表格(例如,分子定量和注释)(补充表2和3)。
  5. 文件格式还跟踪应用于各个数据集的坐标转换或对齐步骤。
  6. 数据集集合可以存储在一个单一的SpatialData存储中,从而促进联合整合分析。
  7. SpatialData格式基于开放显微镜环境-下一代文件格式(OME-NGFF)规范,并利用Zarr文件格式(补充图1),从而为传统文件系统和基于云的存储提供了高性能且互操作的访问方式(补充说明3)。

Fig. 1: Design overview and core functionality of SpatialData.

image
  • SpatialData 存储格式以统一的方式表示来自广泛的空间组学技术的原始和派生数据。该格式基于五个基本元素(SpatialElements),这些元素以符合 OME-NGFF 标准的方式序列化到 Zarr 存储中。
  • SpatialData Python 库实现了对空间数据集的数据访问、对齐、查询和聚合操作。可以指定坐标转换以将多种模式对齐到一个 CCS,从而允许跨模式部署空间查询和聚合运算符。
  • SpatialData 与常见的数据格式兼容,包括特定供应商的文件格式。数据集集合可以存储在单个 Zarr 存储中,并且表示为一个 SpatialData 对象。
  • 使用集成的 napari-spatialdata 插件,可以交互式地注释存储在 SpatialData 格式中的数据集;SpatialData 提供了生成交互式和静态图表的功能。
  • SpatialData 实现了一个 PyTorch 数据集类,从而方便地从 SpatialData 对象直接训练深度学习模型。
  • SpatialData 基于已建立的标准和软件,因此提供了与现有多模态分析方法的互操作性,其中包括 Squidpy15、Scanpy14、MONAI23 和 scvi-tools24 等。
Para_04
  1. SpatialData Python 库将这种格式表示为内存中的 SpatialData 对象,支持加载大于内存的数据(图 1b)。
  2. 该库还提供了用于广泛使用的空间组学技术的读取器函数(图 1c 和补充表 3),以及用于操作和访问 SpatialData 对象并定义生物组织的 CCS 的多功能功能8。
  3. 简而言之,每个单独的数据集都与一种特定模式的坐标转换相关联(图 1b),其中包括仿射变换和复合操作。
  4. 一旦对齐,数据集集合可以被查询(扩展数据图 1)和聚合(扩展数据图 2)——例如,使用不同尺度的空间注释(细胞、网格、解剖区域)以及在模式内和模式间。
  5. 查询和聚合接口还允许从大型数据集集合中创建新的按生物学信息因素分组的数据集,从而促进探索、选定数据共享和访问。
Para_05
  1. SpatialData 有一个用于交互注释的 napari 插件(napari-spatialdata;图 1d 和扩展数据图 3)。
  2. 该 napari-spatialdata 插件可用于交互定义空间注释,例如绘制感兴趣区域,或定义地标以指导多数据集配准。
  3. 可以使用 spatialdata-plot 库创建静态图像和图形(扩展数据图 4)。
Para_06
  1. SpatialData 库通过构建在标准科学 Python 数据类型之上,与 Python 生态系统无缝集成。
  2. 我们实现了一个 PyTorch 数据集类,可以从 SpatialData 对象有效训练深度学习模型(图 1e、补充说明 4 和扩展数据图 5)。
  3. 此外,由于数据表示的模块化性质,scverse13 生态系统中的分析包如 Scanpy14、Squidpy15 和 scvi-tools16 可用于分析 SpatialData 对象(图 1f 和补充图 2)。
  4. 综上所述,SpatialData 框架为整合和分析空间组学数据提供了基础设施。
Para_07
  1. 为了说明SpatialData在多模态集成和分析中的实用性,我们使用该框架来表示和处理来自乳腺癌研究的数据,该研究结合了苏木精和伊红(H&E)图像以及10x Genomics Visium和Xenium测定法17。该研究包括两个原位测序数据集(Xenium)和一个空间转录组学数据集(10x Visium CytAssist),这些数据集来自于乳腺癌肿瘤的连续切片。
  2. 首先,我们使用napari-spatialdata定义了所有数据集中存在的地标点,然后通过变换对所有三个数据集进行对齐,以定义CCS(图2a)。由于对齐的结果,SpatialData使我们能够识别共同的空间区域,这可以通过SpatialData查询在数据集之间访问。

Fig. 2: Alignment and integrative analysis of three spatial datasets from breast cancer.

image
  • 注册两个乳腺癌Xenium重复(rep.)载玻片、一个Visium载玻片及其对应的HE图像到基于交互选择地标的一个CCS。
  • 说明如何通过CCS在数据集之间转移空间注释。
  • 从上到下,来自多个数据集的空间注释,包括组织学区域(HE图像)、肿瘤克隆(Visium衍生的拷贝数异常)和细胞类型(Xenium和scRNA-seq)。
  • 空间注释由不同的空间元素(多边形、圆、分子)表示,可以通过CCS在数据集之间进行转移。
  • SpatialData查询促进了跨模态聚合、质量控制和基准测试。
  • 左边和中间,计算在与Visium量化位置相对应的圆形区域内Xenium中的细胞类型比例;右边,基于Visium数据(使用cell2location)的解卷积方法得出的细胞类型比例估计。
  • 使用SpatialData查询进行任意几何量化。
  • 如b所示,在注释的ROIs和克隆中展示了Xenium(源自配对的scRNA-seq数据集)和Visium(cell2location估计)中的细胞类型比例估计。
  • 比较Xenium和Visium中基因表达量化的结果,使用SpatialData在Visium捕获位置处的聚合。
  • 左边,散点图显示Xenium复制物之间的聚合基因表达量化之间的相关系数(x轴)与Xenium和Visium之间的相关系数(y轴)的对比。
  • 展示Xenium和Visium中313个基因(点)的基因表达量化,这些基因同时存在于Xenium和Visium中。颜色表示Xenium复制物1中的log表达。
  • 右边,可视化在Visium位置处的聚合表达水平。颜色条表示原始计数。
  • FOXA1(顶部)和UCP1(底部)的聚合表达水平可视化。
Para_08
  1. 接下来,我们使用所有三个数据集的集体信息创建了一组共享的空间注释。简而言之,我们使用napari-spatialdata(扩展数据图6)基于H&E图像中的组织学特征选择了四个感兴趣区域(ROIs)。然后,我们使用Visium中的全基因组转录组信息来估计拷贝数状态(使用CopyKat18),并标注主要的遗传亚克隆。最后,通过从一个独立的乳腺癌单细胞RNA测序(scRNA-seq)图谱转移细胞类型标签,我们在两个Xenium重复实验中标注了细胞类型(ingest,实现于scanpy14;图2b)。
Para_09
  1. 为了举例说明SpatialData如何用于在数据集之间转移空间注释,我们考虑了来自Visium捕获位置的掩膜,并汇总了重叠的Xenium细胞的细胞类型信息以估计每个位置的细胞类型比例。
  2. 为了比较,我们还考虑了基于反卷积的Visium计数分析(使用cell2location20),并使用相同的scRNA-seq衍生细胞类型作为参考。
  3. 我们观察到Xenium重复实验之间的细胞类型丰度估计高度一致(所有Visium位置的中位皮尔逊相关系数R=0.88),并且Xenium和基于反卷积的估计总体上具有良好的一致性(中位皮尔逊相关系数R=0.69)。
  4. 类似于Visium位置的聚集,我们考虑了从H&E定义的ROIs以及由Visium的子克隆位置联合定义的区域(图2d和补充图3a)。
  5. 同样地,我们在每个区域内量化了细胞类型的比率,要么直接使用来自Xenium的细胞计数比率,要么通过解卷积相应的Visium数据来计算。
  6. 两个Xenium重复样本展示了细胞类型比率的高度一致性,并且Xenium和Visium之间也是一致的。
  7. 作为第二次聚合使用案例,我们比较了在Visium捕获位置处单个基因的表达估计,使用的是Xenium或Visium数据。
  8. 我们再次将Visium捕获位置转移到聚合来自Xenium的单个分子计数到Visium掩膜中(图2e和补充图3b)。
  9. 正如预期的那样,Xenium重复样本之间的聚集计数高度一致(中位皮尔逊相关系数R = 0.62;图2e和补充图3c-e)。
  10. 而在较小程度上,Xenium和Visium计数之间的聚集计数也具有一致性(中位皮尔逊相关系数R = 0.48;补充图3c-e)。
  11. 我们还注意到,总体转录物丰度与不同组织切片和技术之间的一致性之间存在直接关系(图2e)。
  12. 这些例子说明了可以在不同类型的SpatialElements(点、圆形捕获位置、细胞和较大的解剖学ROI)之间应用的聚合功能的灵活性,用于传输不同类型的空间注释(细胞表达、细胞类型比例)。进一步的例子和高级用例讨论见扩展数据图2。
  13. SpatialData 促进了各种单模态和多模态数据集的处理。
  14. SpatialData 的在线文档附带有插图,展示了额外的应用案例。
  15. 例如,我们展示了 SpatialData 如何作为后端来促进深度学习模型的训练(扩展数据图 5 和补充说明 4),以及如何使用空间解释工具(如 Squidpy)进行下游分析(补充图 2)。
  16. 作为使用 SpatialData 结合不同技术的起点,我们目前提供了来自八种技术的 >40 个数据集的预格式化 SpatialData 对象(补充表 2)。
  17. 可以在单模态和多模态数据集上执行交互式注释。
  18. 最后,我们探索了 SpatialData 如何通过将 12 张 Visium 切片映射到一个大的前列腺切片上来将多个视场对齐到一个全局参考坐标系统中(扩展数据图 7)。
  19. 更多信息,包括 SpatialData Python 库的全面文档、教程、示例数据集和贡献者指南,可在线获取(https://spatialdata.scverse.org)。
  20. 进一步的信息,包括 SpatialData Python 库的全面文档、教程、示例数据集和贡献者指南,可在线获取(https://spatialdata.scverse.org)。
  21. 这里我们介绍了SpatialData,一个灵活的、基于社区标准的框架,用于存储、处理和注释迄今为止几乎所有可用的空间组学技术的数据。
  22. 通过对齐数据集来灵活创建通用坐标系统的能力是建立全面CCFs的关键基石,这将解锁新的分析方法,促进跨研究样本的稳健比较和重用。
  23. 总之,SpatialData框架提供的灵活性和易于访问的解决方案开启了分析的新可能性,并增强了综合空间分析的可重复性。
  24. 随着SpatialData的使用不断增加,其效用将进一步增强。
  25. 正在进行的发展(详见补充说明5和6)扩展了SpatialData与R/Bioconductor21的互操作性,
  26. 提供了对多尺度点和多边形表示的支持——例如多边形网格和五维体积图像(即czyx图像,具有额外的时间组件)——
  27. 并且支持通过编程方式和可视化工具Vitessce22进行基于云的数据访问。
  28. 总之,SpatialData提供了一个开放且通用的空间组学数据框架。

Methods

SpatialData framework

SpatialData框架

Para_01
  1. SpatialData 框架包含一个核心包、空间数据及相关卫星包 napari-spatialdata、spatialdata-io 和 spatialdata-plot,兼容 Python 3.9 及以上版本。
  2. 所有代码作为 scverse 组织的一部分在 GitHub 上提供,并根据宽松的‘BSD 3 条款许可’进行授权。
  3. 项目结构继承自 scverse cookiecutter 和 napari 插件 cookiecutter,因此在持续集成环境中实现了单元测试和预提交检查。
  4. 文档使用 Sphinx 构建并在 Read the Docs 上托管。
  5. 它包括应用程序编程接口(API)描述、示例笔记本以及一个链接到可下载的空间组学数据集表格。
  6. 每个数据集可以完整下载(.zip),甚至可以直接从云中访问(公共 S3 存储)。
  7. 文档、教程和样本数据可以在下面的链接中找到。
  • 文档: https://spatialdata.scverse.org
  • 安装指南: https://spatialdata.scverse.org/en/latest/installation.html
  • 教程: https://spatialdata.scverse.org/en/latest/tutorials/notebooks/notebooks.html
  • 示例数据: https://spatialdata.scverse.org/en/latest/tutorials/notebooks/datasets/README.html
Para_02
  1. 我们还提供了贡献指南和技术设计文档以鼓励采用。
  2. 用户可以通过 GitHub Issues 错误跟踪系统联系核心开发团队。
  3. 为了鼓励成像和 scverse 社区之间的协作,我们在 imagesc Zulip 消息平台创建了一个公共聊天流:https://imagesc.zulipchat.com/#narrow/stream/329057-scverse。

SpatialData framework dependencies

空间数据框架依赖项

Para_01
  1. 该框架依赖于常用的Python库。具体来说,spatialdata包依赖于networkx、numpy(科学栈)、anndata(单细胞数据)、dask-image、multiscale-spatial-image、ome-zarr-py、spatial-image、xarray、xarray-schema、xarray-spatial、zarr(栅格空间数据)、geopandas、pyarrow、pygeos、shapely(矢量空间数据)、fsspec、rich、tqdm、typing_extensions(实用工具)和torch(深度学习,可选依赖)。
Para_02
  1. 卫星软件包spatialdata-io、spatialdata-plot和napari-spatialdata需要额外的依赖项;我们建议读者参阅报告摘要以获取完整的列表,并查阅相应GitHub仓库中的pyproject.toml和setup.cfg文件以获取最新的列表,因为这些软件包及其依赖项在不断更新。
  2. ,
Para_03
  1. 所有在SpatialData框架中的包都通过GitHub Actions定期发布到PyPI,因此可以使用pip轻松安装软件及其所有依赖库。Conda支持正在准备中。

Raw human breast cancer Xenium and Visium data

原始的人类乳腺癌Xenium和Visium数据

Para_01
  1. 我们从 https://www.10xgenomics.com/products/xenium-in-situ/preview-dataset-human-breast 下载了原始数据。

Loading Xenium and Visium datasets into SpatialData

将 Xenium 和 Visium 数据集加载到 SpatialData 中

Para_01
  1. 使用了来自spatialdata-io的10x Xenium和Visium读取器将数据读入SpatialData对象。
  2. 对于Xenium数据集,DAPI通道被存储为多尺度图像,细胞和细胞核分割掩模及边界被存储为形状元素,而转录本则被存储为点。
  3. 元数据和计数矩阵被存储为SpatialData对象中的表格。
  4. 对于Visium数据集,H&E图象被存储为多尺度图像,阵列捕获区域(圆)被存储为形状,并且计数矩阵和注释被存储在表格中。

Cell-type annotation of Xenium replicates

Xenium 复制品的细胞类型注释

Para_01
  1. 我们使用了一个公开可用的单细胞RNA测序乳腺癌图谱(包含九种恶性细胞和正常细胞类型以及二十九种子类型)来注释Xenium重复样本中的细胞。
  2. 在将图谱缩减到存在于Xenium面板中的313个基因子集后,我们应用了Scanpy包(版本1.9)中实现的摄入方法进行标签转移,以注释Xenium重复样本中的细胞。
  3. 我们首先转移了主要细胞类型的标签(粗粒度),然后在每个类别内部映射次要细胞类型(细粒度)。
  4. 在当前分析中仅显示主要细胞类型。
  5. 九种主要细胞类型包括B细胞、癌症相关成纤维细胞(CAF)、癌症上皮细胞、内皮细胞、正常上皮细胞、浆母细胞和血管周围样细胞(PVL)以及T细胞。

Alignment to create common coordinate systems

创建共同坐标系统对齐

Para_01
  1. 我们从两个Xenium复制样本和Visium数据集中的图像中选择了三个标志点。
  2. 标志点应在每张图像上按相同的顺序选择,并且各组点之间应该有一一对应的空间关系。
  3. Xenium复制样本1被用作参考,使用SpatialData函数align_elements_using_landmarks将Xenium复制样本2和Visium对齐。
  4. 我们使用napari-spatialdata来标注标志点,并查看对齐结果。
  5. 在内部,Dask的惰性加载和Zarr的多尺度表示使得即使在像标准笔记本电脑这样的低内存设备上也能高效地探索和缩放数据集。

Computation of cell-type fractions for Visium

Visium细胞类型比例的计算

Para_01
  1. 对齐后,计算了每个细胞与Xenium复制物和Visium位置之间的共享区域。
  2. 然后根据每个细胞类型覆盖的每个位置表面的比例,计算了每个Visium位置的细胞类型比例。
  3. 这是使用SpatialData聚合函数,并且fractions参数设置为True来完成的。
  4. 该过程分别针对Xenium复制物1和2进行。

Cell-type deconvolution using cell2location

使用cell2location进行细胞类型解卷积

Para_01
  1. 我们使用了 cell2location (v.0.1.3) 来估计 Visium 位置的细胞类型比例,以前述的乳腺癌图谱作为参考。
  2. 为了完成此任务,我们在包含 313 个基因的 Xenium 重复样本子集上进行操作,并将 Visium 数据集和乳腺癌图谱限制在这组基因内。
  3. 我们将 cell2location 教程中建议的默认参数设置为(https://cell2location.readthedocs.io/en/latest/notebooks/cell2location_tutorial.html)。
  4. 分析可以在 https://github.com/scverse/spatialdata-notebooks/tree/main/notebooks/paper_reproducibility 查找。
  5. 对于可视化,只考虑每个 Visium 捕获位置至少贡献 5% 的细胞类型,然后在每个位置的数量被标准化为总和为 1。

ROI selection with napari-spatialdata

使用 napari-spatialdata 进行 ROI 选择

Para_01
  1. 对齐后,使用napari-spatial数据插件从Visium数据集的H&E图像中选择了四个ROI,并将这些ROI添加到与Xenium重复项对齐的数据中。
  2. 每个ROI的选择基于其独特的微解剖学特征,并且根据Xenium重复项中的细胞类型组成手动进行了标记。

Clone detection on Visium using CopyKat

使用 CopyKat 在 Visium 上进行克隆检测

Para_01
  1. 我们使用了默认参数的CopyKat(v.1.1.0)18来从Visium计数矩阵估计拷贝数状态,随后进行了层次聚类,识别出三个主要位于标记为‘非整倍体’区域的簇;这三个簇被用作遗传亚克隆。
  2. 我们也将克隆标签转移到了Xenium重复实验中的重叠细胞上;这些标签被存储为一个SpatialData表元素。
  3. 这项分析是在R中单独进行的(笔记本仓库:https://github.com/scverse/spatialdata-notebooks/tree/main/notebooks/paper_reproducibility)。
Para_02
  1. Visium 的 anndata 表格保存为 .h5ad AnnData 格式,以便在 R 中加载和分析,然后通过 .h5ad 将克隆标签传回到 SpatialData。
  2. Bioconductor 社区正在进行一些工作,以实现直接从 Zarr 加载 anndata 表格到 R,例如 anndataR,这将使得完成时无需导出为 .h5ad(HDF5 格式)。
  3. 这里提到的参考文献编号如 '14', '25' 和 '26' 在翻译结果中没有出现。

ROI cell-type fractions

ROI细胞类型比例

Para_01
  1. 我们接下来计算了每个ROI和克隆中包含的细胞类型的分数。
  2. SpatialData聚合API提供了一个方便的接口来计算这些指标,无论被聚合的是圆的集合还是多边形,以及目标区域是一个多边形ROI还是一组定义特定克隆的圆。

Transcript aggregations

聚合记录

Para_01
  1. 对于每个Visium捕获位置,我们将Xenium复制样本中落入该Visium位置的所有转录组聚集在一起;我们分别对Xenium复制样本1和2进行了此分析。
  2. 这产生了两个聚合计数矩阵,这些矩阵被保存为Visium的空间数据对象表中的独立层。

Reporting summary

报告摘要

Para_01
  1. 关于研究设计的更多信息,请参阅本文链接的Nature Portfolio报告摘要。

Data availability

Para_01
  1. 我们使用SpatialData包将几个示例数据集转换为Zarr。
  2. 在撰写本文时,我们包含了来自以下技术的数据:NanoString CosMx、10x Genomics Xenium、10x Genomics Visium、CyCIF、MERFISH、MIBI-TOF和成像质谱流式技术。
  3. 用于转换数据的脚本以及转换后的数据可以从https://spatialdata.scverse.org/en/latest/tutorials/notebooks/datasets/README.html访问。
  4. 有关数据集及其相应来源出版物的概述,请参阅补充表2。

Code availability

Para_01
  1. SpatialData 可以通过 pip 作为 Python 包使用,并附带了一整套可以从 https://spatialdata.scverse.org 的文档中访问的示例和教程。
  2. 此外,文档还包括一份贡献指南,面向有兴趣参与框架设计和实现的研究人员。
  3. 所有用于重现本文档中包含的分析的脚本可以从 spatialdata-notebook 存储库下载:https://github.com/scverse/spatialdata-notebooks/tree/main/notebooks/paper_reproducibility。