脚本更新----Xenium、CODEX、CosMx范围邻域矩阵的获得与亚群分析

作者,Evil Genius
今日继续更新脚本,为个性化分析项目做准备。

核心分析目标,使用200 µm(一定距离)的范围来构建每个细胞的邻域并使用Leiden聚类进行分析。其中空间距离用于定义邻域,而Leiden聚类算法通常用于基于邻域关系的图聚类。
做好数据的细胞注释,保存h5ad文件。
任务步骤
  • 提取空间坐标:从数据中提取每个细胞的空间坐标(例如x和y坐标)。
  • 基于空间距离构建邻域矩阵:根据细胞之间的空间距离来确定哪些细胞在200 µm的范围内相互接近。可以通过计算每对细胞之间的欧氏距离,并选择距离小于200 µm的细胞作为邻居。
  • 构建邻接图:根据邻域关系构建图。
  • 使用Leiden聚类:基于图结构使用Leiden聚类算法进行聚类。
  • 可视化:使用UMAP等方法降维并可视化聚类结果。
import scanpy as sc
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.metrics.pairwise import euclidean_distances
from sklearn.neighbors import NearestNeighbors
import umap
from sklearn.decomposition import PCA
import leidenalg
import igraph as ig

# 假设你已经有10X Xenium数据的AnnData对象
adata = sc.read("10X_Xenium_data.h5ad")  # 请根据实际路径加载你的数据

# 检查数据内容,确认包含空间坐标
print(adata)

# 假设空间坐标存在于adata.obs['x']和adata.obs['y']字段中
# 如果数据使用不同的字段,调整为实际情况
cell_coords = adata.obs[['x', 'y']].values  # 取得每个细胞的x, y坐标

# 1. 构建邻域矩阵:根据空间距离选择200um范围内的邻居
distance_threshold = 200  # 设置200um的距离阈值

# 计算细胞之间的欧氏距离矩阵
dist_matrix = euclidean_distances(cell_coords)

# 找到距离小于200um的细胞对
neighbor_indices = dist_matrix < distance_threshold  # 返回布尔矩阵,表示是否在200um内
np.fill_diagonal(neighbor_indices, False)  # 去除自己与自己的邻接关系

# 2. 构建邻接图:根据邻域矩阵构建图
# 采用igraph
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值