当前位置: 首页 > news >正文

scNiche识别空间组细胞微环境

目录

环境构建与导入

数据准备

预处理

训练分群

结果可视化


在空间转录组的研究中,与单纯依靠表达量分群的单细胞转录组数据不同,我们经常要考虑细胞之间的免疫微环境进行分群,测试一下近期的一个新方法GitHub - ZJUFanLab/scNiche: a computational framework to identify and characterize cell niches from spatial omics data at single-cell resolution

环境构建与导入

我这里是依据Github建议的方法在conda环境中构建的

import scniche as sn
import scanpy as sc
import pandas as pd
from sklearn.metrics import adjusted_rand_score
import matplotlib.pyplot as plt
import warnings
warnings.filterwarnings('ignore')print("Last run with scNiche version:", sn.__version__)# set seed
sn.pp.set_seed()

数据准备

这里需要的输入数据可以是带有注释标签的不同分辨率的空间组数据,转化成python读取的anndata格式,我这里读取示例数据如下

adata = sc.read('/data/work/scNiche-main/scniche/datasets/simulated_data.h5ad')
adata

这里注释标签为‘Cell_type’,空间组坐标位于obsm中的‘Spatial’

预处理

在进行正式训练前需要对我们的空间组数据进行一定的预处理

cutoff = 20#邻域细胞数量
lr = 0.01#学习率
epochs = 100#训练迭代次数
adata = sn.pp.cal_spatial_neighbors(adata=adata, celltype_key='Cell_type', mode='KNN', k_cutoff=cutoff, verbose=False)
adata = sn.pp.cal_spatial_exp(adata=adata, mode='KNN', k_cutoff=cutoff, is_pca=True, n_comps=50, verbose=False)
adata = sn.pp.prepare_data(adata=adata, verbose=False)

参数选择可以参照原文献或者Github,这里仅作测试

训练分群

训练过程中可以自定义需要的分群数量target_num,这里是根据注释分群的数量进行设定

model = sn.tr.Runner(adata=adata, device='cpu', verbose=False)#GPU可以替换成相应的设备
adata = model.fit(lr=lr, epochs=epochs)
# clustering
target_num = len(set(adata.obs['Cell_type']))
adata = sn.tr.clustering(adata=adata, target_k=target_num)

结果可视化

训练结束会自动生成一个“scNiche”的注释列和对应的坐标,29000左右的细胞数CPU使用默认参数,大约耗时4h,总体训练效率可以接受

plt.rcParams["figure.figsize"] = (3, 3)
sc.pl.embedding(adata, basis="spatial", color=['predict_Celltype', 'scNiche'], s=20, show=False)
plt.tight_layout()
plt.show()

最后简单展示我的数据分群情况,能看到明显的层次关系,但是该方法具体的生物学效应有待深入探索,可能更适宜较高分辨率下的病理学切片研究。

相关文章:

  • Index-AniSora模型论文速读:基于人工反馈的动漫视频生成
  • 系统思考:团队策略辅导
  • 02 if...else,switch,do..while,continue,break
  • List更简洁的编码构建
  • 基于C#的Modbus通信协议全面解析与实现指南
  • CSS 背景全解析:从基础属性到视觉魔法
  • Qt文件:XML文件
  • 使用 adb 命令截取 Android 设备的屏幕截图
  • CI/CD的演进之路
  • SpringBoot-4-Spring Boot项目配置文件和日志配置
  • RabbitMQ ⑤-顺序性保障 || 消息积压 || 幂等性
  • PyCharm2025的字体的设置
  • 【常用算法:进阶篇】13.位运算全解析:从底层原理到高效算法
  • 易路 AI 招聘:RPA+AI 颠覆传统插件模式,全流程自动化实现效率跃迁
  • 音视频之H.265/HEVC速率控制
  • 图的几种存储方法比较:二维矩阵、邻接表与链式前向星
  • 利用Spring Boot和Redis构建高性能缓存系统
  • 使用MybatisPlus实现sql日志打印优化
  • 洛谷P1093 [NOIP 2007 普及组] 奖学金
  • 丝杆升降机在锂电行业的自动化应用有什么?
  • 墨西哥城市长私人秘书及顾问遇袭身亡
  • 顶刊论文现“飙脏话辱骂第二作者”,期刊回应:正积极调查
  • 王楚钦球拍受损,乒乓球裁判揭秘大赛球拍检测
  • 每日475.52元!最高检公布最新侵犯公民人身自由的赔偿金标准
  • 《让世界爱中国》新书发布,探讨大变局下对外讲好中国故事
  • 19世纪的“表征之场”:弗洛伊德的精神分析椅