我們做過(guò)單細(xì)胞的童鞋們來(lái)說(shuō)鳄哭,軌跡分析并不陌生,然而如果將單細(xì)胞的軌跡分析結(jié)果運(yùn)用到空間轉(zhuǎn)錄組上纲熏,就可以幫助我們了解到細(xì)胞隨著時(shí)間進(jìn)行的過(guò)程中妆丘,細(xì)胞位置的遷移。其中最常用的方式局劲,是對(duì)軌跡分析結(jié)果各個(gè)state進(jìn)行空間映射勺拣,以此來(lái)判斷時(shí)間上的早期和晚期的細(xì)胞,也可以將不同細(xì)胞類(lèi)型進(jìn)行空間的映射鱼填,幫助我們知道各個(gè)時(shí)期細(xì)胞類(lèi)型的空間分布药有,這兩種方式都值得借鑒,今天我們來(lái)說(shuō)一種方式苹丸,借助空間轉(zhuǎn)錄組數(shù)據(jù)進(jìn)行軌跡分析的一種方法----stlearn愤惰。
我們這里就來(lái)分享一下軌跡分析的方法苇经。
數(shù)據(jù)預(yù)處理
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)
這個(gè)地方需要注意,讀取10X空間轉(zhuǎn)錄組的文件夾需要包含的文件羊苟,以及預(yù)處理塑陵,從函數(shù)的名字來(lái)看,主要運(yùn)用的是scanpy的方式蜡励。
聚類(lèi)令花,我們這里不需要再進(jìn)行tsne或者umap,因?yàn)槲覀兿胍亩豢臻g信息已經(jīng)存在
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)
這里需要注意的是凉倚,如果我們想要把自己已經(jīng)分好的聚類(lèi)結(jié)果導(dǎo)入進(jìn)去兼都,而不想采用該軟件的結(jié)果,可以將其他結(jié)果導(dǎo)入稽寒,甚至是細(xì)胞定義的結(jié)果扮碧。
第三步,指定時(shí)間起點(diǎn)
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)
可見(jiàn)這個(gè)地方是對(duì)cluster內(nèi)部的一個(gè)軌跡推斷,這里需要注意的是宏侍,cluster只有被分割成多個(gè)區(qū)域才可能運(yùn)用這個(gè)方法赖淤。
第六步,對(duì)多個(gè)cluster進(jìn)行軌跡推斷谅河,(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)
第七步咱旱,轉(zhuǎn)變基因
這個(gè)方法大家可以嘗試,至少可視化做的不錯(cuò)绷耍。