3-华大时空组学分析软件 Spateo 细胞分割示例

简介: 本分示例了使用 华大时空组学分析软件 Spateo 基于SSDNA和 表达谱进行圈细胞的用法,以供参考

1、Load Required Package

%time
exec('import warnings; warnings.filterwarnings("ignore")')
import matplotlib.pyplot as plt
import spateo as st
import numpy as np
import skimage
import sklearn
st.config.n_threads = 8

2、Required Data

进行圈细胞工作需要准备的数据有空间计数矩阵和ssDNA 染色图像,测试数据可以从数据库 https://db.cngb.org/stomics/mosta/ 下载使用。

2、Load Data

### 加载 UMI 计数矩阵和细胞核染色图像到 AnnData 对象
adata = st.io.read_bgi_agg("./E12.5_E1S3_GEM_bin1.tsv.gz", "./E12.5_E1S3.tif")
print(adata.layers["stain"].shape)
adata
|-----> Constructing count matrices.
|-----> <insert> __type to uns in AnnData Object.
|-----> <insert> pp to uns in AnnData Object.
|-----> <insert> spatial to uns in AnnData Object.
(22834, 17384)
AnnData object with n_obs × n_vars = 22834 × 17384
    uns: '__type', 'pp', 'spatial'
    layers: 'stain'

st.pl.imshow(adata, 'stain') ### 显示加载的 SSDNA stain image

3、Cell Segmentation

3.1 Watershed-based 细胞核标记
st.cs.mask_nuclei_from_stain(adata) ### 创建染色图像细胞核蒙版
st.pl.imshow(adata, 'stain_mask')
plt.savefig("stain_mask.png",dpi=600)
plt.close()

st.cs.find_peaks_from_mask(adata, 'stain', 7) 
st.cs.watershed(adata, 'stain', 5, out_layer='watershed_labels')

fig, ax = st.pl.imshow(adata, 'stain', save_show_or_return='return')
st.pl.imshow(adata, 'watershed_labels', labels=True, alpha=0.5, ax=ax)
plt.savefig("waterfall.png",dpi=600)
plt.close()
3.2 StarDist 细胞核标记

作者测试后表明 StarDist 在这些方法是比较其它几种荧光核方法分割表现最稳定的,推荐使用。

st.cs.stardist(adata, tilesize=2000, equalize=2.0, out_layer='stardist_labels')
fig, ax = st.pl.imshow(adata, 'stain', save_show_or_return='return')
st.pl.imshow(adata, 'stardist_labels', labels=True, alpha=0.5, ax=ax)
plt.savefig("fig5_stardist.png",dpi=600)
plt.close()
3.3 优化标记

Watershed 和 StarDist 方法在细胞核识别方面均表现良好,但它们各有局限性。由于阈值的性质,Watershed 方法往往会导致细胞边界粗糙,而 StarDist 有时难以识别密集区域中的细胞核。需要通过使用 Watershed 标签增加 StarDist 标签、复制不与任何 Stardist 标签重叠的 Watershed 标签以及删除不与任何 Watershed 标签重叠的 Stardist 标签来缓解这些问题。

st.cs.augment_labels(adata, 'watershed_labels', 'stardist_labels', out_layer='augmented_labels')

fig, ax = st.pl.imshow(adata, 'stain', save_show_or_return='return')
st.pl.imshow(adata, 'augmented_labels', labels=True, alpha=0.5, ax=ax)
plt.savefig("Argmented_labels.png",dpi=600)
plt.close()

4、扩展标记的核区域到 细胞质

由于 ssDNA 染色对细胞质的染色较弱,这里将使用宽松阈值对图像进行阈值处理来识别细胞质区域。

st.cs.mask_cells_from_stain(adata, out_layer='stain_cell_mask')
st.cs.watershed(adata,'stain',mask_layer='stain_cell_mask', markers_layer='augmented_labels',out_layer='cell_labels')
fig, ax = st.pl.imshow(adata, 'stain', save_show_or_return='return')
st.pl.imshow(adata, 'cell_labels', labels=True, alpha=0.5, ax=ax)
st.cs.expand_labels(adata, 'augmented_labels', distance=5, max_area=400)
st.cs.expand_labels(adata, 'cell_labels', distance=2, out_layer='cell_labels_expanded')

fig, ax = st.pl.imshow(adata, 'stain', save_show_or_return='return')
st.pl.imshow(adata, 'cell_labels_expanded', labels=True, alpha=0.5, ax=ax)

5、获取CELL BIN表达矩阵

cell_adata = st.io.read_bgi("E12.5_E1S3_GEM_bin1.tsv.gz",segmentation_adata=adata, labels_layer='cell_labels_expanded',)
cell_adata
|-----> <select> cell_labels_expanded layer in AnnData Object
|-----> Using labels provided with `segmentation_adata` and `labels_layer` arguments.
|-----> Constructing count matrices.
|-----> <insert> __type to uns in AnnData Object.
|-----> <insert> pp to uns in AnnData Object.
|-----> <insert> spatial to uns in AnnData Object.
AnnData object with n_obs × n_vars = 70475 × 26274
    obs: 'area'
    uns: '__type', 'pp', 'spatial'
    obsm: 'spatial', 'contour', 'bbox'
    layers: 'spliced', 'unspliced'

import joblib
joblib.dump(cell_adata,"cell_adata_segmentation.pkl")

6、For more examples please refer to

目录
相关文章
|
7月前
|
存储 数据可视化 算法
空间单细胞|基于图像的空间数据分析(2)
空间单细胞|基于图像的空间数据分析(2)
149 0
|
3月前
|
数据可视化 算法 JavaScript
基于图论的时间序列数据平稳性与连通性分析:利用图形、数学和 Python 揭示时间序列数据中的隐藏模式
本文探讨了如何利用图论分析时间序列数据的平稳性和连通性。通过将时间序列数据转换为图结构,计算片段间的相似性,并构建连通图,可以揭示数据中的隐藏模式。文章介绍了平稳性的概念,提出了基于图的平稳性度量,并展示了图分区在可视化平稳性中的应用。此外,还模拟了不同平稳性和非平稳性程度的信号,分析了图度量的变化,为时间序列数据分析提供了新视角。
94 0
基于图论的时间序列数据平稳性与连通性分析:利用图形、数学和 Python 揭示时间序列数据中的隐藏模式
|
3月前
|
数据采集
遥感语义分割数据集中的切图策略
该脚本用于遥感图像的切图处理,支持大尺寸图像按指定大小和步长切割为多个小图,适用于语义分割任务的数据预处理。通过设置剪裁尺寸(cs)和步长(ss),可灵活调整输出图像的数量和大小。此外,脚本还支持标签图像的转换,便于后续模型训练使用。
28 0
|
8月前
|
数据可视化 定位技术
R语言贝叶斯INLA空间自相关、混合效应、季节空间模型、SPDE、时空分析野生动物数据可视化
R语言贝叶斯INLA空间自相关、混合效应、季节空间模型、SPDE、时空分析野生动物数据可视化
|
8月前
|
数据可视化
数量生态学冗余分析(RDA)分析植物多样性物种数据结果可视化|数据分享
数量生态学冗余分析(RDA)分析植物多样性物种数据结果可视化|数据分享
|
8月前
R语言如何用潜类别混合效应模型(LCMM)分析抑郁症状
R语言如何用潜类别混合效应模型(LCMM)分析抑郁症状
|
8月前
|
数据可视化
cfDNAPro|cfDNA片段数据生物学表征及可视化的R包
cfDNA是指存在于血液中的游离DNA片段,来源于正常和异常细胞的死亡。这些片段长度通常为160-180碱基对,研究cfDNA在非侵入性诊断、疾病监测、早期检测和理解生理及病理状态方面有重要意义。cfDNAPro是一个工具,用于分析cfDNA的片段长度分布,提供数据表征和可视化。它能展示片段长度的整体、中位数和众数,以及峰和谷的分布,还有振荡周期性。通过上图和下图的对比,可以观察到不同队列中cfDNA片段长度的差异。此外,cfDNAPro还能展示DNA片段的模态长度,分析10bp周期性振荡模式,帮助科学家深入了解cfDNA的特征。
129 0
|
8月前
|
机器学习/深度学习 PyTorch 数据处理
零基础入门语义分割-地表建筑物识别 Task2 数据扩增-学习笔记
零基础入门语义分割-地表建筑物识别 Task2 数据扩增-学习笔记
105 1
|
8月前
|
机器学习/深度学习
零基础入门语义分割-地表建筑物识别 Task6 模型集成-学习笔记
零基础入门语义分割-地表建筑物识别 Task6 模型集成-学习笔记
93 1
|
机器学习/深度学习 人工智能 算法
AI Earth有没有相关文档或论文介绍平台地物分类、目标提取、变化检测等算法的原理呢?
AI Earth有没有相关文档或论文介绍平台地物分类、目标提取、变化检测等算法的原理呢?
352 1