Palantir
是一種對單細胞測序數(shù)據(jù)進行分化發(fā)育軌跡推斷的算法盐肃,于2019年發(fā)表在Nature Biotechnology上罢缸。Palantir將細胞分化模擬為一個隨機的過程,其中干細胞通過一系列步驟最終分化為終末分化的細胞颠放。Palantir能有效地捕獲細胞分化狀態(tài)的連續(xù)性和細胞命運決定的隨機性岖是。
安裝所依賴的python包
Palantir是基于python3開發(fā)的,可以直接通過pip進行安裝
pip install PhenoGraph
pip install rpy2pip install palantir
下載示例數(shù)據(jù)集
在palantir包的data文件夾下存放了一個示例數(shù)據(jù)集铭乾,以下分析流程使用這個數(shù)據(jù)集進行分析。
wget -c https://github.com/dpeerlab/Palantir/raw/master/data/marrow_sample_scseq_counts.csv.gz
加載示例數(shù)據(jù)集
Palantir可以從csv文件邑雅,mtx文件片橡,10x count文件和HDF文件讀取scRNA-seq數(shù)據(jù)。csv文件應為count的cell X gene的表達矩陣淮野。
# 加載所需的python包
import palantir
# Plotting and miscellaneous imports
import os
import matplotlib
import matplotlib.pyplot as plt
import pandas as pd
%matplotlib inline
# 加載示例數(shù)據(jù)集
palantir_dir = os.path.expanduser('~/dongwei/palantir/data/')
counts = palantir.io.from_csv(palantir_dir + 'marrow_sample_scseq_counts.csv.gz')
counts
對于其他格式的文件捧书,可以使用palantir.io.from_mtx
,palantir.io.from_10x
骤星,palantir.io.from_10x_HDF5
等函數(shù)進行讀取经瓷。
原始數(shù)據(jù)進行質(zhì)控
Palantir可以對原始數(shù)據(jù)進行質(zhì)控,使用palantir.preprocess.filter_counts_data
函數(shù)用于刪除低分子計數(shù)的細胞和具有低檢測率的基因洞难。
# 查看原始數(shù)據(jù)的特征
fig, ax = palantir.plot.plot_molecules_per_cell_and_gene(counts)
# 過濾細胞和基因
filtered_counts = palantir.preprocess.filter_counts_data(counts, cell_min_molecules=1000, genes_min_cells=10)
數(shù)據(jù)的歸一化和標準化
Palantir將每個細胞的計數(shù)除以檢測到的總分子作為歸一化的指標舆吮,還可以對數(shù)據(jù)進行l(wèi)og值的轉(zhuǎn)換。
norm_df = palantir.preprocess.normalize_counts(counts)
norm_df = palantir.preprocess.log_transform(norm_df)
數(shù)據(jù)的PCA降維
# PCA reduction
pca_projections, _ = palantir.utils.run_pca(norm_df)
# Run diffusion maps
dm_res = palantir.utils.run_diffusion_maps(pca_projections, n_components=5)
ms_data = palantir.utils.determine_multiscale_space(dm_res)
Palantir可以使用MAGIC算法對單細胞的表達數(shù)據(jù)進行imputation處理
# MAGIC imputation
imp_df = palantir.utils.run_magic_imputation(norm_df, dm_res)
tSNE降維可視化
# tSNE visualization
tsne = palantir.utils.run_tsne(ms_data)
fig, ax = palantir.plot.plot_tsne(tsne)
fig, ax = palantir.plot.plot_tsne_by_cell_sizes(counts, tsne)
繪制特征基因的表達譜
使用plot_gene_expression
函數(shù)队贱,可以在tSNE圖上顯示一些特征基因的表達譜色冀。
palantir.plot.plot_gene_expression(imp_df, tsne, ['CD34', 'MPO', 'GATA1', 'IRF8'])
對降維后的數(shù)據(jù)進行聚類分群
Palantir使用Phenograph對數(shù)據(jù)進行聚類,并進行可視化
# 數(shù)據(jù)聚類
clusters = palantir.utils.determine_cell_clusters(pca_projections)
# 聚類結(jié)果可視化
palantir.plot.plot_cell_clusters(tsne, clusters )
運行Palantir進行分化發(fā)育軌跡推斷
可以指定一個近似的最早的起始細胞來運行Palantir柱嫌。Palantir可以自動確定終末分化狀態(tài)的細胞锋恬,也可以使用termine_states參數(shù)指定它們。
# 運行Palantir
start_cell = 'Run5_164698952452459'
pr_res = palantir.core.run_palantir(ms_data, start_cell, num_waypoints=500)
Palantir運行完后生成的結(jié)果包含以下數(shù)據(jù):
Pseudotime: Pseudo time ordering of each cell
Terminal state probabilities: Matrix of cells X terminal states. Each entry represents the probability of the corresponding cell reaching the respective terminal state
Entropy: A quantiative measure of the differentiation potential of each cell computed as the entropy of the multinomial terminal state probabilities
# 查看自動生成的終末分化的細胞
pr_res.branch_probs.columns
# 根據(jù)已有的生物學知識對終末分化的細胞進行重命名
mapping = pd.Series(index=['DC', 'Mono', 'Ery'])
mapping['DC'] = tsne.loc[pr_res.branch_probs.columns, 'x'].idxmax()
mapping['Ery'] = tsne.loc[pr_res.branch_probs.columns, 'y'].idxmin()
mapping['Mono'] = pr_res.branch_probs.columns.difference(mapping.values)[0]
mapping = pd.Series(mapping.index, index=mapping)
pr_res.branch_probs.columns = mapping[pr_res.branch_probs.columns]
pr_res.branch_probs = pr_res.branch_probs.loc[:, ['Ery', 'Mono', 'DC']]
可視化Palantir的結(jié)果
使用plot.plot_palantir_results
函數(shù)對palantir運行的結(jié)果進行可視化
palantir.plot.plot_palantir_results(pr_res, tsne)
查看一些細胞在不同終末分化細胞中的分布比例
cells = ['Run5_164698952452459', 'Run5_170327461775790', 'Run4_121896095574750', ]
palantir.plot.plot_terminal_state_probs(pr_res, cells)
高亮一些細胞查看他們的分布
palantir.plot.highlight_cells_on_tsne(tsne, cells)
基因表達趨勢分析
Palantir使用Generalized Additive Models(GAMs)模型計算基因在不同分化細胞中的表達趨勢
# 選擇特征基因
genes = ['CD34', 'MPO', 'GATA1', 'IRF8']
# 計算基因的表達趨勢
gene_trends = palantir.presults.compute_gene_trends( pr_res, imp_df.loc[:, genes])
基因表達趨勢的可視化
palantir.plot.plot_gene_trends(gene_trends)
繪制基因表達趨勢熱圖
palantir.plot.plot_gene_trend_heatmaps(gene_trends)
查看相關(guān)函數(shù)的使用說明
對于一些函數(shù)的參數(shù)和使用方法编丘,可以通過help()函數(shù)查看其相關(guān)使用說明与学,如:
help(palantir.core.run_palantir)