單細胞分析之發(fā)育軌跡分析(monocle2)

大家好摘能,好久沒有分享單細胞分析的流程啦沪饺,今天給大家分享一個單細胞中常見的分析--細胞發(fā)育軌跡分析者甲。之前也給大家分享過RNA velocity怜姿,今天就給大家介紹另一個軟件包(monocle)慎冤。

monocle更新得很快,目前已經更新到3了沧卢,但是今天我們主要是講一個monocle2的使用方法蚁堤。moncole2中進行軌跡分析的流程主要分為以下幾個步驟:

圖片

1. 數據預處理

1.1 安裝monocle2

如果之前沒有安裝過monocl2,則需要先運行以下命名但狭,如果已經安裝則忽略披诗。

install.packages("BiocManager")
BiocManager::install("monocle")
install.packages("RColorBrewer") #畫圖配色板

1.2 加載安裝包

library(monocle)
library(RColorBrewer)
setwd("工作路徑")

1.3 讀取數據

測試數據來源于2017 年北大徐成冉課題組發(fā)表在《Hepatology》雜志上小鼠胚胎E10.5-E17.5雙潛能的成肝細胞分化為肝實質細胞和肝內膽管細胞的表達數據(GSE90047)×⒋牛可以在GEO中通過輸入GSE90047下載單細胞的表達矩陣藤巢。


# TPM矩陣(行為基因名,列為細胞名)
expr_matrix <- read.table("0.data/scRNA-seq_TPM_GSE90047.xls",header=T,row.names=1, sep = "\t")
# 細胞注釋矩陣(行為細胞名)
sample_sheet <- read.table("0.data/XCR_paper_cell_anno_sub.txt",header=T,row.names=1, sep ="\t") 
# 基因注釋矩陣(行為基因名)
gene_annotation <- read.table("0.data/Mus_ref.txt",header=T,row.names=1, sep = "\t")
# 從注釋信息中篩選出有表達的基因
pos <- which(rownames(gene_annotation) %in% rownames(expr_matrix))
gene_annotation <- gene_annotation[pos,]
# 注意:expr_matrix中列名的順序和 sample_sheet中行名的順序必須一致
expr_matrix <- expr_matrix[rownames(gene_annotation),rownames(sample_sheet)]

pd <- new("AnnotatedDataFrame", data = sample_sheet)
fd <- new("AnnotatedDataFrame", data = gene_annotation)

2. 創(chuàng)建對象

2.1 創(chuàng)建monocle2的對象

# 創(chuàng)建monocle對象
cd <- newCellDataSet(as.matrix(expr_matrix), 
      phenoData = pd, 
      featureData = fd, 
      lowerDetectionLimit = 0.1, 
      expressionFamily = tobit(Lower = 0.1))
# expressionFamily: 數據為TPM/FPKM時設置為tobit(Lower = 0.1)息罗,數據為count時設置為negbinomial.size())

# 將FPKM/TPM數據轉換為UMI數據(read count)
rpc_matrix <- relative2abs(cd)

# 重新創(chuàng)建monocle對象
cd <- newCellDataSet(as(as.matrix(rpc_matrix),"sparseMatrix"), 
      phenoData = pd, 
      featureData = fd,
      lowerDetectionLimit = 0.5,
      expressionFamily = negbinomial.size())

根據表達量數據的類型選擇合適的分布(默認為文本計數數據輸入,適用于負二項分布才沧;FPKM/TPM 適用于對數正態(tài)分布)迈喉。

2.2 計算數據的size factors和dispersions

size factors有助于消除細胞間mRNA捕獲的差異;dispersions用于后續(xù)的差異表達分析

cd <- estimateSizeFactors(cd)
cd <- estimateDispersions(cd)

2.3 數據過濾

# 過濾低于1%細胞中檢出的基因温圆,最低表達閾值為0.5
cd <- detectGenes(cd, min_expr = 0.5)
expressed_genes <- row.names(subset(fData(cd), num_cells_expressed > nrow(sample_sheet) * 0.01))
# 查看篩選后的基因個數(用于后面基因的篩選)
length(expressed_genes)

3. 構建軌跡

3.1 關鍵基因的篩選

發(fā)育過程中細胞處于動態(tài)變化的過程挨摸,細胞在不同狀態(tài)表達的基因表達譜有所差異,monocle根據每個細胞基因的表達譜的相似和連續(xù)變化對細胞構建發(fā)育軌跡岁歉。第一個步驟是挑選合適的基因得运,包括3種方法,分別是:

1)挑選細胞間高度離散的基因

2)挑選在指定類型間差異表達的基因

3)根據已知標記基因對細胞進行排序

3.1.1 挑選細胞間高度離散的基因

disp_table <- dispersionTable(cd)
# 高度離散基因的篩選標準锅移,可根據數據情況設置mean_expression的值
ordering_genes <- as.character(subset(disp_table,mean_expression >= 0.3 & dispersion_empirical >= dispersion_fit)$gene_id)
cd <- setOrderingFilter(cd, ordering_genes)
plot_ordering_genes(cd)
圖片

每一個點代表一個基因熔掺,X軸是每個基因的表達量均值,Y軸是每個基因的離散程度非剃,紅線為擬合的基因離散程度隨著表達量變化的趨勢線置逻,黑色的點是用于后續(xù)分析的基因。

3.1.2 挑選在指定類型間差異表達的基因

# 根據數據的某種分類(如本例中根據Stage的類型)進行差異分析
diff_test_res <- differentialGeneTest(cd[expressed_genes,],fullModelFormulaStr = "~Stage")
# 篩選差異基因(q < 1e-5并且屬于之前計算的expressed_genes列表中)
ordering_genes <- row.names (subset(diff_test_res, qval < 1e-5))
ordering_genes <- intersect(ordering_genes, expressed_genes)
cd <- setOrderingFilter(cd, ordering_genes)
plot_ordering_genes(cd)
圖片

其中黑色的點就是根據分類篩選出的差異基因并且用于后續(xù)的分析备绽。

3.1.3 根據已知標記基因對細胞進行排序

這種方法需要參考一些已發(fā)表的文獻或者先驗知識收集到的基因券坞。

3.2 細胞降維

# 選取的基因數目為每個細胞的維度鬓催,基于默認的'DDRTree'方法進行數據降維
cd <- reduceDimension(cd, max_components = 2, method = 'DDRTree')

3.3 細胞排序

# 對細胞進行排序,由于排序無法區(qū)分起點和終點恨锚,若分析所得時序與實際相反宇驾,根據“reverse”參數進行調整,默認reverse=F
cd <- orderCells(cd, reverse = F) 

3.4 軌跡可視化

# 排序好的細胞可以進行可視化猴伶,可標注細胞的各注釋信息"Stage", "Putative_cell_type", "Sort_by", "State", "Pseudotime"等)
# 查看細胞注釋信息
head(cd@phenoData@data)
圖片
# 設置顏色
color1 <- c(brewer.pal(6, "Set1"))
getPalette <- colorRampPalette(brewer.pal(6, "Set1"))
# 按照時間點進行映射
plot_cell_trajectory(cd, show_cell_names = F, color_by = "Stage") + scale_color_manual(values = getPalette(length(unique(sample_sheet[,"Stage"]))))
圖片
# 按照細胞類型進行映射(手動設置顏色)
plot_cell_trajectory(cd, show_cell_names = F, color_by = "Putative_cell_type") + scale_color_manual(values = c("#E41A1C", "#999999"))
圖片
# 按照State進行映射
plot(plot_cell_trajectory(cd, show_cell_names = F, color_by = "State") +  scale_color_manual(values = color1))
圖片
# 按照計算的Pseudotime進行映射
plot(plot_cell_trajectory(cd, show_cell_names = F, color_by = "Pseudotime") + scale_color_viridis_c())
圖片

每一個點代表一個細胞课舍,Pseudotime代表計算的發(fā)育時間,值越小則表示該細胞作為發(fā)育起始蜗顽,值越大代表該細胞更接近發(fā)育終點

如果發(fā)現發(fā)育軌跡和真實的時間不一致布卡,那么可以通過運行cd <- orderCells(cd, reverse = F),其中reverse = T重新計算發(fā)育軌跡雇盖。

運行完上面的命令這樣就能構建好一個發(fā)育軌跡啦忿等,這期的內容就先到這里啦,下一期我們在繼續(xù)學習發(fā)育軌跡中的差異分析~

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末崔挖,一起剝皮案震驚了整個濱河市贸街,隨后出現的幾起案子,更是在濱河造成了極大的恐慌狸相,老刑警劉巖薛匪,帶你破解...
    沈念sama閱讀 206,013評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現場離奇詭異脓鹃,居然都是意外死亡逸尖,警方通過查閱死者的電腦和手機,發(fā)現死者居然都...
    沈念sama閱讀 88,205評論 2 382
  • 文/潘曉璐 我一進店門瘸右,熙熙樓的掌柜王于貴愁眉苦臉地迎上來娇跟,“玉大人,你說我怎么就攤上這事太颤“” “怎么了?”我有些...
    開封第一講書人閱讀 152,370評論 0 342
  • 文/不壞的土叔 我叫張陵龄章,是天一觀的道長吃谣。 經常有香客問我,道長做裙,這世上最難降的妖魔是什么岗憋? 我笑而不...
    開封第一講書人閱讀 55,168評論 1 278
  • 正文 為了忘掉前任,我火速辦了婚禮锚贱,結果婚禮上澜驮,老公的妹妹穿的比我還像新娘。我一直安慰自己惋鸥,他們只是感情好杂穷,可當我...
    茶點故事閱讀 64,153評論 5 371
  • 文/花漫 我一把揭開白布悍缠。 她就那樣靜靜地躺著,像睡著了一般耐量。 火紅的嫁衣襯著肌膚如雪飞蚓。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 48,954評論 1 283
  • 那天廊蜒,我揣著相機與錄音趴拧,去河邊找鬼。 笑死山叮,一個胖子當著我的面吹牛著榴,可吹牛的內容都是我干的。 我是一名探鬼主播屁倔,決...
    沈念sama閱讀 38,271評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼脑又,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了锐借?” 一聲冷哼從身側響起问麸,我...
    開封第一講書人閱讀 36,916評論 0 259
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎钞翔,沒想到半個月后严卖,有當地人在樹林里發(fā)現了一具尸體,經...
    沈念sama閱讀 43,382評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡布轿,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 35,877評論 2 323
  • 正文 我和宋清朗相戀三年哮笆,在試婚紗的時候發(fā)現自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片汰扭。...
    茶點故事閱讀 37,989評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡疟呐,死狀恐怖,靈堂內的尸體忽然破棺而出东且,到底是詐尸還是另有隱情,我是刑警寧澤本讥,帶...
    沈念sama閱讀 33,624評論 4 322
  • 正文 年R本政府宣布珊泳,位于F島的核電站,受9級特大地震影響拷沸,放射性物質發(fā)生泄漏色查。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,209評論 3 307
  • 文/蒙蒙 一撞芍、第九天 我趴在偏房一處隱蔽的房頂上張望秧了。 院中可真熱鬧,春花似錦序无、人聲如沸验毡。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,199評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽晶通。三九已至璃氢,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間狮辽,已是汗流浹背一也。 一陣腳步聲響...
    開封第一講書人閱讀 31,418評論 1 260
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留喉脖,地道東北人椰苟。 一個月前我還...
    沈念sama閱讀 45,401評論 2 352
  • 正文 我出身青樓,卻偏偏與公主長得像树叽,于是被迫代替她去往敵國和親舆蝴。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 42,700評論 2 345

推薦閱讀更多精彩內容