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:

https://spateo-release.readthedocs.io/en/latest/tutorials/notebooks/stain_segmentation.html

目录
相关文章
|
30天前
|
存储 数据可视化 数据挖掘
单细胞分析(Signac): PBMC scATAC-seq 基因组区域可视化
单细胞分析(Signac): PBMC scATAC-seq 基因组区域可视化
17 0
|
10天前
|
数据采集 机器学习/深度学习 算法框架/工具
探究肺癌患者的CT图像的图像特征并构建一个诊断模型
探究肺癌患者的CT图像的图像特征并构建一个诊断模型
14 0
|
1月前
|
数据可视化
数量生态学冗余分析(RDA)分析植物多样性物种数据结果可视化|数据分享
数量生态学冗余分析(RDA)分析植物多样性物种数据结果可视化|数据分享
|
1月前
R语言如何用潜类别混合效应模型(LCMM)分析抑郁症状
R语言如何用潜类别混合效应模型(LCMM)分析抑郁症状
|
1月前
|
数据可视化
cfDNAPro|cfDNA片段数据生物学表征及可视化的R包
cfDNA是指存在于血液中的游离DNA片段,来源于正常和异常细胞的死亡。这些片段长度通常为160-180碱基对,研究cfDNA在非侵入性诊断、疾病监测、早期检测和理解生理及病理状态方面有重要意义。cfDNAPro是一个工具,用于分析cfDNA的片段长度分布,提供数据表征和可视化。它能展示片段长度的整体、中位数和众数,以及峰和谷的分布,还有振荡周期性。通过上图和下图的对比,可以观察到不同队列中cfDNA片段长度的差异。此外,cfDNAPro还能展示DNA片段的模态长度,分析10bp周期性振荡模式,帮助科学家深入了解cfDNA的特征。
36 0
|
1月前
|
机器学习/深度学习 PyTorch 数据处理
零基础入门语义分割-地表建筑物识别 Task2 数据扩增-学习笔记
零基础入门语义分割-地表建筑物识别 Task2 数据扩增-学习笔记
50 1
|
1月前
|
数据可视化 计算机视觉 索引
零基础入门语义分割-地表建筑物识别 Task1 赛题理解 -学习笔记
零基础入门语义分割-地表建筑物识别 Task1 赛题理解 -学习笔记
59 1
|
6月前
|
机器学习/深度学习 人工智能 算法
AI Earth有没有相关文档或论文介绍平台地物分类、目标提取、变化检测等算法的原理呢?
AI Earth有没有相关文档或论文介绍平台地物分类、目标提取、变化检测等算法的原理呢?
313 1
|
传感器 机器学习/深度学习 安全
3D点云识别安全吗? 密歇根大学等提出稳健性分析数据集应对严重失真
3D点云识别安全吗? 密歇根大学等提出稳健性分析数据集应对严重失真
127 0
3D点云识别安全吗? 密歇根大学等提出稳健性分析数据集应对严重失真
|
数据可视化 数据库 Python
scRNA分析 | 解决可能的报错,从0开始教你完成细胞通讯分析-cellphoneDB
scRNA分析 | 解决可能的报错,从0开始教你完成细胞通讯分析-cellphoneDB
479 0