课前准备---空间轨迹

2024-08-09 09:43:38 浏览数 (2)

作者,Evil Genius

什么是空间轨迹?

以一个空间位置为起点(例如上图的交界区域),沿着固定方向上的细胞、基因表达的变化。

还有如下的分析结果,沿着相同方向、以相同的区域为起点,分析细胞类型空间分布的轨迹变化。

以及如下的区域细胞/基因转换

但我们最常见的空间轨迹分析如下:

Indicated cell signatures from sc/snRNA-seq mapped onto the Visium zonation data

我们需要实现的空间轨迹分析正是如此,分析示例(visium平台)

代码语言:javascript复制
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')
代码语言:javascript复制
##### 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()

统计与回归

代码语言:javascript复制
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)
代码语言:javascript复制
sc.pl.spatial(adata, img_key="hires", color='PCP4') 

Clustering genes based on regression curves

代码语言:javascript复制
sp.tl.gene_cluster(adata=adata, k=10, range_min=0.03, fdr=True, pvalue=0.05) 
sp.pl.show_curves_cluster(adata) 

分析示例,高精度平台大家可以借鉴squidpy,不过离我们想要的效果还是差点。

代码语言:javascript复制
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,
)

或者其他很好的方法

代码语言:javascript复制
sm.pl.spatial_distance (adata, method='distribution',distance_from='ECAD ',distance_to = 'SMA ', imageid='ROI', log=True, height=3, aspect=9/8) 

生活很好,有你更好

0 人点赞