课前准备---空间轨迹
2024-08-08 本文已影响0人
单细胞空间交响乐
作者,Evil Genius
什么是空间轨迹?
![](https://img.haomeiwen.com/i18814178/a044fb6f6b65f464.png)
以一个空间位置为起点(例如上图的交界区域),沿着固定方向上的细胞、基因表达的变化。
还有如下的分析结果,沿着相同方向、以相同的区域为起点,分析细胞类型空间分布的轨迹变化。
![](https://img.haomeiwen.com/i18814178/5d098413079f4648.png)
![](https://img.haomeiwen.com/i18814178/b944f6fbbc1880b8.png)
以及如下的区域细胞/基因转换
![](https://img.haomeiwen.com/i18814178/9ca54050474cd5b5.png)
但我们最常见的空间轨迹分析如下:
![](https://img.haomeiwen.com/i18814178/01dfc427304e59d3.png)
![](https://img.haomeiwen.com/i18814178/93f7239970e9efa0.png)
![](https://img.haomeiwen.com/i18814178/e87a577869e53478.png)
我们需要实现的空间轨迹分析正是如此,分析示例(visium平台)
import warnings
warnings.filterwarnings("ignore")
import scanpy as sc
import pandas as pd
import SOAPy_st as sp
import matplotlib.pyplot as plt
# input adata
adata = sc.read_h5ad('1516761_10X_adata.h5ad')
# delete genes with same names
adata.var_names_make_unique()
# preprocessing
adata.var["mt"] = adata.var_names.str.startswith("MT-")
sc.pp.calculate_qc_metrics(adata, qc_vars=["mt"], inplace=True)
sc.pp.filter_genes(adata, min_counts=10)
sc.pp.filter_genes(adata, min_cells=2)
sc.pp.normalize_total(adata, inplace=True)
sc.pp.log1p(adata)
sc.pl.spatial(adata, img_key="hires", color='cluster')
![](https://img.haomeiwen.com/i18814178/d72e2b42bf97449b.png)
##### Generate a mask image from the domain cluster
mask = sp.tl.get_mask_from_domain(adata, clusters='WM', KSize=35, cluster_key='cluster')
plt.imshow(mask, cmap='gray')
plt.show()
![](https://img.haomeiwen.com/i18814178/41d01c61ec73ecc4.png)
统计与回归
wilcoxon_res = sp.tl.wilcoxon_test(
adata,
mask,
radius=1000,
location='out',
cut=500
)
pearman_res = sp.tl.spearman_correlation(
adata,
mask,
radius=1000,
num=5
)
sp.tl.spatial_tendency(
adata,
mask, #
radius=1000,
location='out',
frac=5
)
sp.pl.show_tendency(adata, gene_name = 'PCP4', show=True)
![](https://img.haomeiwen.com/i18814178/e2211e95622b6e27.png)
sc.pl.spatial(adata, img_key="hires", color='PCP4')
![](https://img.haomeiwen.com/i18814178/7af49a39142b73a3.png)
Clustering genes based on regression curves
sp.tl.gene_cluster(adata=adata, k=10, range_min=0.03, fdr=True, pvalue=0.05)
sp.pl.show_curves_cluster(adata)
![](https://img.haomeiwen.com/i18814178/13c64caa3fd2c29b.png)
分析示例,高精度平台大家可以借鉴squidpy,不过离我们想要的效果还是差点。
sq.gr.co_occurrence(
adata_subsample,
cluster_key="leiden",
)
sq.pl.co_occurrence(
adata_subsample,
cluster_key="leiden",
clusters="12",
figsize=(10, 10),
)
sq.pl.spatial_scatter(
adata_subsample,
color="leiden",
shape=None,
size=2,
)
![](https://img.haomeiwen.com/i18814178/94163a86cbbac95e.png)
或者其他很好的方法
sm.pl.spatial_distance (adata, method='distribution',distance_from='ECAD+',distance_to = 'SMA+', imageid='ROI', log=True, height=3, aspect=9/8)
![](https://img.haomeiwen.com/i18814178/a879b867fe089677.png)