作者,Evil Genius
希望我也无奈去搞盗版的时候,大家能理解~~~,辛苦创作是真的不如搞盗版,而且搞盗版的我发现在硕士博士,医学生群体口碑还挺好的。
在空间转录组学中,细胞的空间临近性分析(cell spatial proximity analysis)是理解细胞如何在空间中相互作用、协同工作以及形成组织结构的关键。通过分析细胞在空间中的位置关系,我们可以揭示细胞群体之间的相互关系及其在组织中的空间结构,进而推断它们在发育、免疫反应、肿瘤微环境等中的作用。
下面是常见的两种细胞空间临近性分析方法:
细胞邻近性分析(Cell-Cell Proximity):这类分析研究的是不同细胞之间的相对空间关系,通常基于细胞的空间坐标计算它们之间的距离或相邻性。
空间协同表达分析(Spatial Co-expression):通过比较细胞在空间中的基因表达模式,探讨基因表达相似的细胞是否在空间上聚集在一起,从而推断它们是否在功能上协同作用。
1. 细胞邻近性分析(Cell-Cell Proximity Analysis)
细胞邻近性分析主要关注细胞之间的空间相互作用,通常通过计算细胞之间的距离、邻接关系等来评估细胞间的“接近性”或相互作用。具体方法包括:
基于空间坐标计算距离:通过计算每对细胞之间的空间距离来评估它们的邻近性。
邻接矩阵与网络分析:使用细胞的空间坐标计算细胞之间的邻接关系,并将其表示为一个图或网络,可以进一步分析细胞群体之间的关联。
示例代码:基于细胞坐标计算细胞间距离(做好单细胞空间联合分析,得到h5ad文件)
import scanpy as sc
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.neighbors import NearestNeighbors
# 加载空间转录组数据
adata = sc.read_h5ad('your_spatial_data.h5ad') # 替换为实际数据路径
# 假设数据中包含细胞的空间坐标,通常存储在adata.obsm['spatial']
# 如果空间坐标不在obsm中,请根据实际数据调整代码
# 提取空间坐标信息
spatial_coordinates = adata.obsm['spatial']
# 计算细胞之间的距离
# 使用最近邻算法来计算每个细胞的邻居
nbrs = NearestNeighbors(n_neighbors=6, algorithm='auto').fit(spatial_coordinates)
distances, indices = nbrs.kneighbors(spatial_coordinates)
# `distances` 为每个细胞到其邻居的距离,`indices` 为邻居的索引
# 例如,第0个细胞到其最近邻的距离可以通过 distances[0] 获得
# `indices[0]` 是这个细胞最近邻的索引
# 可视化细胞的邻近关系
# 使用距离矩阵生成热图(例如,显示最近邻的距离)
plt.figure(figsize=(8, 6))
plt.imshow(distances, cmap='viridis', aspect='auto')
plt.colorbar(label='Distance')
plt.title('Cell-Cell Proximity (Distance Matrix)')
plt.show()
进一步分析
聚类分析:你可以基于细胞的邻近性进行聚类,识别相互接近的细胞群体。
邻接网络分析:将细胞视为图中的节点,使用图算法(例如Louvain算法)分析细胞群体间的结构和关联。
2. 空间协同表达分析(Spatial Co-expression Analysis)
空间协同表达分析是通过分析细胞间基因表达的相似性,结合细胞的空间信息,探索基因在空间上的共表达模式。如果某些基因的表达模式在空间上具有协同关系(例如,在同一区域表达的基因共同起作用),则可能说明这些细胞或基因在功能上有协同作用。
主要步骤:
提取基因表达信息:从数据中提取每个细胞的基因表达信息,通常存储在 adata.X 中。
计算基因表达相似性:使用皮尔逊相关系数、余弦相似性等方法计算基因表达的相似性。
基于空间分布的聚类:将空间信息和基因表达相似性结合,进行聚类,找出空间上具有类似基因表达的细胞群体。
示例代码:空间协同表达分析
import scanpy as sc
import numpy as np
import matplotlib.pyplot as plt
from sklearn.metrics.pairwise import cosine_similarity
# 加载空间转录组数据
adata = sc.read_h5ad('your_spatial_data.h5ad') # 替换为实际数据路径
# 提取基因表达矩阵和空间坐标
gene_expression_matrix = adata.raw.X # 假设基因表达数据存储在adata.raw.X
spatial_coordinates = adata.obsm['spatial']
# 计算基因表达的余弦相似性
# Cosine similarity用于评估细胞之间基因表达模式的相似性
cos_sim = cosine_similarity(gene_expression_matrix)
# 可视化细胞之间的基因表达相似性(余弦相似性矩阵)
plt.figure(figsize=(8, 6))
plt.imshow(cos_sim, cmap='coolwarm', aspect='auto')
plt.colorbar(label='Cosine Similarity')
plt.title('Cosine Similarity of Gene expression between Cells')
plt.show()
# 进一步分析:基于空间信息进行聚类
# 将细胞根据其基因表达相似性进行聚类,可以使用如K-means聚类
from sklearn.cluster import KMeans
kmeans = KMeans(n_clusters=3) # 假设我们将细胞聚类为3个群体
adata.obs['gene_expression_cluster'] = kmeans.fit_predict(cos_sim)
# 可视化聚类结果,颜色代表不同的基因表达聚类
sc.pl.spatial(adata, color='gene_expression_cluster', title='Spatial Co-expression Clusters')
plt.show()
# 可视化每个聚类的基因表达情况(每个聚类中的细胞基因表达模式)
sc.pl.matrixplot(adata, var_names=adata.var_names[:5], groupby='gene_expression_cluster', use_raw=True)
plt.show()