我们做过单细胞的童鞋们来说,轨迹分析并不陌生,然而如果将单细胞的轨迹分析结果运用到空间转录组上,就可以帮助我们了解到细胞随着时间进行的过程中,细胞位置的迁移。其中最常用的方式,是对轨迹分析结果各个state进行空间映射,以此来判断时间上的早期和晚期的细胞,也可以将不同细胞类型进行空间的映射,帮助我们知道各个时期细胞类型的空间分布,这两种方式都值得借鉴,今天我们来说一种方式,借助空间转录组数据进行轨迹分析的一种方法----stlearn。
我们这里就来分享一下轨迹分析的方法。
数据预处理
import stlearn as st
st.settings.set_figure_params(dpi=120)
# Reading data
data = st.Read10X(path="/home/d.pham/10X/BCBA/")
# Save raw_count
data.layers["raw_count"] = data.X
# Preprocessing
st.pp.filter_genes(data,min_cells=3)
st.pp.normalize_total(data)
st.pp.log1p(data)
# Keep raw data
data.raw = data
st.pp.scale(data)
# Run PCA
st.em.run_pca(data,n_comps=50,random_state=0)
这个地方需要注意,读取10X空间转录组的文件夹需要包含的文件,以及预处理,从函数的名字来看,主要运用的是scanpy的方式。
聚类,我们这里不需要再进行tsne或者umap,因为我们想要的二位空间信息已经存在
st.pp.neighbors(data,n_neighbors=25,use_rep='X_pca',random_state=0)
st.pp.neighbors(data,n_neighbors=25,use_rep='X_pca',random_state=0)
st.pl.cluster_plot(data,use_label="louvain",tissue_alpha=1,spot_size=5,show_legend=True)
图片.png
这里需要注意的是,如果我们想要把自己已经分好的聚类结果导入进去,而不想采用该软件的结果,可以将其他结果导入,甚至是细胞定义的结果。
第三步,指定时间起点
import numpy as np
data.uns["iroot"] = np.flatnonzero(data.obs["louvain"] == str(6))[50]
st.spatial.trajectory.pseudotime(data,eps=50,use_rep="X_pca")
这里我们以cluster6为例。
第四步,推断轨迹
Here we called global trajectory because it does the same method of trajectory inference in single cell analysis.
We used PAGA and DPT to perform this step. It also does the function of sub-clustering.
st.pl.non_spatial_plot(data,use_label="louvain")
图片.png
图片.png
图片.png
This is the DPT visualization in tissue morphology
st.pl.trajectory.pseudotime_plot(data,list_cluster="all",show_graph=True,node_alpha=1,tissue_alpha=1,edge_alpha=0.1,node_size=5)
图片.png
第五步 Running the local trajectory inference
First, the visualization of sub-clustering results of cluster 6 (DICS) would be showed by:
图片.png
The local trajectory could be constructed by this function. It calculate the spatio-temporal distance between each pair-wise of sub-clusters.
st.spatial.trajectory.pseudotimespace_local(data,use_label="louvain",cluster=6)
st.pl.trajectory.local_plot(data,use_cluster=6,branch_alpha=0.2,reverse=True)
图片.png
可见这个地方是对cluster内部的一个轨迹推断,这里需要注意的是,cluster只有被分割成多个区域才可能运用这个方法。
第六步,对多个cluster进行轨迹推断,(cluster6,7为例)
st.spatial.trajectory.pseudotimespace_global(data,use_label="louvain",list_cluster=[6,7])
st.pl.cluster_plot(data,use_label="louvain",show_trajectory=True,list_cluster=[6,7],show_subcluster=False)
图片.png
st.pl.trajectory.tree_plot(data)
图片.png
第七步,转变基因
图片.png这个方法大家可以尝试,至少可视化做的不错。
网友评论