我們做過單細胞的童鞋們來說,軌跡分析并不陌生,然而如果將單細胞的軌跡分析結果運用到空間轉錄組上,就可以幫助我們了解到細胞隨著時間進行的過程中,細胞位置的遷移。其中最常用的方式,是對軌跡分析結果各個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)
這里需要注意的是,如果我們想要把自己已經分好的聚類結果導入進去,而不想采用該軟件的結果,可以將其他結果導入,甚至是細胞定義的結果。
第三步,指定時間起點
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")
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)
第五步 Running the local trajectory inference
First, the visualization of sub-clustering results of cluster 6 (DICS) would be showed by:
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)
可見這個地方是對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)
st.pl.trajectory.tree_plot(data)
第七步,轉變基因
這個方法大家可以嘗試,至少可視化做的不錯。