11.1 前言
單細胞測序分析提供生物組織的高分辨率測量。因此,此類技術可以幫助破譯和理解細胞異質性和生物過程的動態。相應的研究包括量化細胞命運以及識別驅動該過程的基因。然而,由于在經典單細胞 RNA 測序(scRNA-seq)方案中進行測序時細胞會被破壞,因此無法跟蹤它們的發育情況,例如隨時間變化的基因表達譜。因此,需要根據測量的快照snapshot數據來估計底層動態過程。
盡管傳統上樣品是從單個實驗時間點采集的,但仍可以觀察到多種細胞類型。這種多樣性源于生物過程的異步性質。因此,可以觀察到一系列的發育過程。重建發展過程是該領域的軌跡推斷(trajectory inference,TI)的目標。這項任務是通過根據發育過程對觀察到的細胞狀態進行排序來實現的。通過將離散注釋映射到連續域(即所謂的偽時間),狀態沿著發展方向對齊。
偽時間根據細胞在發育過程中各自的階段對細胞進行相對排列。不太成熟的細胞分配較小的值,成熟的細胞分配較大的值。例如,在研究骨髓樣本時,造血干細胞被指定為低偽時間,而紅細胞被指定為高偽時間。對于單細胞RNA測序數據,分配是基于細胞的轉錄組圖譜。此外,構建通常需要指定整個過程開始的初始或等效的根細胞。
11.2 擬時序的建立
偽時間構建通常遵循一個常見的工作流程:第一步,將超高維單細胞數據投影到較低維的表示上。這一過程通過觀察動態過程在低維流形上進展而得到證實。在實踐中,偽時間方法可能依賴于主成分或擴散成分(例如擴散偽時間 (DPT) 。接下來,偽時間是根據以下原則之一構建的。
首先對觀察結果進行聚類,然后確定這些聚類之間的連接。可以對簇進行排序,從而構建偽時間。今后,我們將這種方法稱為集群方法。經典的聚類算法包括k-means,Leiden或層次聚類。簇可以基于相似性或通過構建最小生成樹(MST)來連接。
圖方法graph approach首先找到觀測值的低維表示之間的聯系。此過程定義了一個圖表,基于該圖表定義了集群,從而定義了排序。例如,PAGA將圖劃分為Leiden簇并估計它們之間的連接。直觀上,這種方法保留了數據的全局拓撲,同時以較低的分辨率進行分析。因此,提高了計算效率。
基于流形學習的方法Manifold-learning based approaches與集群方法類似。然而,簇之間的連接是通過使用主曲線或圖形來估計基礎軌跡來定義的。主曲線找到一條連接高維空間中的細胞觀察結果的一維曲線。這種方法的一個著名代表是Slingshot。
概率框架將轉移概率分配給有序的細胞對。每個轉移概率都量化參考細胞是另一個細胞的祖先的可能性。這些概率定義了用于定義偽時間的隨機過程。例如,DPT被定義為隨機游走的連續狀態之間的差異。相比之下,Palantir將軌跡本身建模為馬爾可夫鏈。雖然這兩種方法都依賴于概率框架,但它們需要指定根細胞。偽時間本身是相對于該細胞計算的。
TI是一個經過深入研究的領域,提供了豐富的方法。要應用適當的方法來分析單細胞數據集,首先需要了解生物過程本身。這種理解尤其包括該過程的性質,即,例如,它是否是線性的、環狀的或支化的。類似地,同一數據集中的正交過程限制了適用的TI方法。為了幫助識別合適的工具,dynguidelines[Deconinck et al., 2021]提供了算法及其特征的詳盡概述。
11.3 下游任務及展望
盡管TI和偽時間已經可以提供有價值的見解,但它們通常充當更細粒度分析的墊腳石。例如,識別終態是一個可以研究的經典生物學問題。同樣,可以根據TI和偽時間來識別譜系分歧和驅動命運決定的基因。可以回答哪個問題以及如何找到答案通常是特定于方法的。例如,Palantir將終端狀態識別為其構建的馬爾可夫鏈的吸收狀態。
軌跡推斷的成功有據可查,因此,人們提出了許多方法。然而,隨著測序技術的進步,新的信息來源變得可用。例如,ATAC-seq、CITE-seq和 DOGMA-seq可測量轉錄組以外的其他模式。譜系追蹤和代謝標記甚至提供給定細胞的(可能的)未來狀態。因此,未來的TI工具將能夠包含更多信息來更準確、更穩健地估計軌跡和偽時間,并允許回答新問題。例如,RNA velocity是一種使用未剪接和剪接mRNA來推斷超越經典靜態信息的定向動態信息的技術。
11.4 推斷成人骨髓的偽時間
為了展示如何構建偽時間并比較不同的偽時間,我們研究了成人骨髓的數據集[Setty et al., 2019]。
11.4.1 環境設置
from pathlib import Path
import scanpy as sc
11.4.2 常規設置
DATA_DIR = Path("../../data/")
DATA_DIR.mkdir(parents=True, exist_ok=True)
FILE_NAME = DATA_DIR / "bone_marrow.h5ad"
11.4.3 數據加載
adata = sc.read(
filename=FILE_NAME,
backup_url="https://figshare.com/ndownloader/files/35826944",
)
adata
AnnData object with n_obs × n_vars = 5780 × 27876
obs: 'clusters', 'palantir_pseudotime', 'palantir_diff_potential'
var: 'palantir'
uns: 'clusters_colors', 'palantir_branch_probs_cell_types'
obsm: 'MAGIC_imputed_data', 'X_tsne', 'palantir_branch_probs'
layers: 'spliced', 'unspliced'
要構建偽時間,必須對數據進行預處理。在這里,我們過濾掉僅在少數細胞(此處至少20個)中表達的基因。值得注意的是,稍后的偽時間的構造對于閾值的精確選擇是穩健的。在第一次基因過濾之后,細胞大小被歸一化,并計數log1p轉換以減少異常值的影響。像往常一樣,我們還識別和注釋高度可變的基因。最后,構建一個最近鄰圖,我們將在此基礎上定義偽時間。主成分的數量是根據解釋的方差來選擇的。
sc.pp.filter_genes(adata, min_counts=20)
sc.pp.normalize_total(adata)
sc.pp.log1p(adata)
sc.pp.highly_variable_genes(adata)
sc.tl.pca(adata)
sc.pp.neighbors(adata, n_pcs=10)
由細胞類型注釋著色的二維t-SNE表示表明細胞類型很好地聚集在一起。此外,分化層次是可見的。
sc.pl.scatter(adata, basis="tsne", color="clusters")
11.4.4 擬時序構建
為了計算擴散擬時間(diffusion pseudotime,DPT),首先需要計算相應的擴散圖。
sc.tl.diffmap(adata)
骨髓中的分化層次是眾所周知的。然而,我們只知道發育過程以造血干細胞的形式開始,但不知道我們數據集中相應簇中的具體細胞是哪個細胞。為了識別假定的初始細胞,我們研究了各個擴散成分。我們識別出在一維(在我們的例子中為 3 維)中具有最極端擴散成分的干細胞。
# Setting root cell as described above
root_ixs = adata.obsm["X_diffmap"][:, 3].argmin()
sc.pl.scatter(
adata,
basis="diffmap",
color=["clusters"],
components=[2, 3],
)
adata.uns["iroot"] = root_ixs
sc.tl.dpt(adata)
不同的偽時間方法給出不同的結果。有時,一個偽時間可以更準確地捕捉潛在的發展過程。在這里,我們將剛剛計算的DPT與預先計算的Palantir偽時間進行比較。比較不同偽時間的一種選擇是對數據的低維嵌入(此處為 t-SNE)進行著色。在這里,與所有其他細胞類型相比,CLP簇中的DPT極高。相比之下,Palantir假時間隨著發育成熟而不斷增加。
sc.pl.scatter(
adata,
basis="tsne",
color=["dpt_pseudotime", "palantir_pseudotime"],
color_map="gnuplot2",
)
我們可以研究分配給每個細胞類型簇的偽時間值的分布,而不是對數據的低維表示進行著色。該表示再次表明CLP簇在DPT情況下形成異常值。此外,HSC_1和HSC_2等簇包含多個偽時間增加的細胞。 這些夸大的值與我們先前的生物學知識形成鮮明對比,即這些簇構成了發育過程的開始。
sc.pl.violin(
adata,
keys=["dpt_pseudotime", "palantir_pseudotime"],
groupby="clusters",
rotation=45,
order=[
"HSC_1",
"HSC_2",
"Precursors",
"Ery_1",
"Ery_2",
"Mono_1",
"Mono_2",
"CLP",
"DCs",
"Mega",
],
)
考慮到這些觀察和關于骨髓發育的先驗知識,我們認為可以繼續使用Palantir擬時間。