單細(xì)胞Day8-1-單樣本擬時序

1.定義

做擬時序分析是為了探索自己感興趣的幾種細(xì)胞之間的發(fā)育關(guān)系钧唐,一般不是用全部類型的細(xì)胞來做的溪烤。以下是進(jìn)行擬時序分析的幾個主要目的:細(xì)胞狀態(tài)推斷县昂、細(xì)胞軌跡追蹤邢疙、細(xì)胞命運(yùn)預(yù)測棍弄、動態(tài)過程建模、細(xì)胞亞群識別疟游、基因調(diào)控網(wǎng)絡(luò)推斷呼畸、疾病機(jī)理探索、藥物作用機(jī)制研究颁虐。
輸入數(shù)據(jù)是seurat做完降維聚類分群注釋的數(shù)據(jù)蛮原,從調(diào)用之前注釋好的數(shù)據(jù)開始

rm(list = ls())
library(Seurat)
library(monocle)
library(dplyr)
load("sce.Rdata")
scRNA = sce
table(Idents(scRNA))
head(scRNA@meta.data)
DimPlot(scRNA,label = T)
scRNA$celltype = Idents(scRNA)  #celltype是細(xì)胞類型注釋,添加到數(shù)據(jù)中

做擬時序分析通常不是拿全部的細(xì)胞另绩,而是拿感興趣的一部分儒陨。用subset提取子集即可。因為要使用差異基因來排序板熊,所以要兩類及以上細(xì)胞框全。基于背景知識選擇有進(jìn)化關(guān)系的細(xì)胞類型干签。

levels(Idents(scRNA)) #打出來細(xì)胞類型供復(fù)制
scRNA = subset(scRNA,idents = c("NK","CD8 T"))
table(Idents(scRNA))
set.seed(1234)      #抽樣津辩,實戰(zhàn)時不能抽樣!!4亍U⒍取!
scRNA = subset(scRNA,downsample = 100)

因為monocle和seurat是兩個不同的體系蚜印,所以需要將seurat對象轉(zhuǎn)換為monocle可以接受的CellDataSet對象莺禁。雖然monocle3已經(jīng)出來很久了,但大家都不約而同的選擇monocle2窄赋,大概就是習(xí)慣了吧哟冬。。

2.創(chuàng)建CellDataSet對象

以下代碼無需改動

# count矩陣忆绰,官方建議用count
ct <- scRNA@assays$RNA$counts
# 基因注釋
gene_ann <- data.frame(
  gene_short_name = row.names(ct), 
  row.names = row.names(ct)
)
fd <- new("AnnotatedDataFrame",
          data=gene_ann)
# 臨床信息
pd <- new("AnnotatedDataFrame",
          data=scRNA@meta.data)
#新建CellDataSet對象
sc_cds <- newCellDataSet(
  ct, 
  phenoData = pd,
  featureData =fd,
  expressionFamily = negbinomial.size(),
  lowerDetectionLimit=1)
sc_cds

3.構(gòu)建細(xì)胞發(fā)育軌跡

1.使用seurat給出的高變化基因
2.按照平均表達(dá)量大于某個數(shù)字(比如0.1浩峡,官網(wǎng)用的是這個)的基因。
3.使用不同細(xì)胞類型之間的差異基因错敢,differentialGeneTest計算翰灾。
根據(jù)以往經(jīng)驗,選擇使用最后一個策略效果可能會更好稚茅。
以下代碼無需改動

sc_cds <- estimateSizeFactors(sc_cds)
sc_cds <- estimateDispersions(sc_cds)
fdif = "diff_test_res.Rdata"
if(!file.exists(fdif)){
  diff_test_res <- differentialGeneTest(sc_cds,
                                        fullModelFormulaStr = "~celltype",
                                        cores = 4)
  save(diff_test_res,file = fdif)
}
load(fdif)
ordering_genes <- row.names(subset(diff_test_res, qval < 0.01))
#查看基因纸淮,篩選適合用于排序的,設(shè)置為排序要使用的基因
head(ordering_genes)
length(ordering_genes)
sc_cds <- setOrderingFilter(sc_cds, ordering_genes)
#畫出選擇的基因
plot_ordering_genes(sc_cds)

plot_ordering_genes畫的圖縱坐標(biāo)是基因表達(dá)量的變異性(離散性),橫坐標(biāo)是每個基因在所有細(xì)胞種的平均表達(dá)量亚享。
紅線表示Monocle2基于橫縱坐標(biāo)的關(guān)系擬合的變異期望值咽块,為用于排序的基因是黑色,其他基因是灰色

image.png

#降維
sc_cds <- reduceDimension(sc_cds)
#細(xì)胞排序
sc_cds <- orderCells(sc_cds)

4.繪圖展示

4.1 發(fā)育軌跡圖
library(ggsci)
p1 = plot_cell_trajectory(sc_cds)+ scale_color_nejm()
p2 = plot_cell_trajectory(sc_cds, color_by = 'Pseudotime') 
p3 = plot_cell_trajectory(sc_cds, color_by = 'celltype')  + scale_color_npg()
library(patchwork)
p2+p1/p3

image.png

Pseudotime數(shù)值從小到大就是順序就是推斷的發(fā)育順序虹蒋。圖上的點(diǎn)顏色越深糜芳,時間越早,顏色越淺魄衅,時間越晚峭竣。
state是發(fā)育的不同階段,數(shù)值越小越靠前晃虫。
celltype則可以看到具體的細(xì)胞類型在時間軌跡圖上的分布皆撩。

4.2 經(jīng)典的擬時序熱圖

展示了一些基因是如何隨著時間軌跡的變化而漸變的,這個漸變不同于findmarkers哲银,是體現(xiàn)變化過程的扛吞,而不是直接給出差異表達(dá)的基因。
理論上應(yīng)該是一句代碼一行荆责,如果兩句代碼想放在同一行上就要用;隔開滥比。可以減少點(diǎn)Run或者按快捷鍵的次數(shù)做院。
選擇了q值最小的50個基因來畫熱圖盲泛。數(shù)量可以按需調(diào)整(head(50))濒持,其他代碼不用改。

gene_to_cluster = diff_test_res %>% arrange(qval) %>% head(50) %>% pull(gene_short_name);head(gene_to_cluster)
plot_pseudotime_heatmap(sc_cds[gene_to_cluster,],
                        num_clusters = nlevels(Idents(scRNA)),   #是把基因聚成幾簇寺滚,推薦是由幾類細(xì)胞就設(shè)置幾柑营,用nlevels實現(xiàn)了自動化
                        show_rownames = TRUE,    #是把3種顏色切割成漸變的100種顏色
                        cores = 4,return_heatmap = TRUE,
                        hmcols = colorRampPalette(c("navy", "white", "firebrick3"))(100))
image.png
4.3 基因軌跡圖

用感興趣的基因給軌跡圖著色

gs = head(gene_to_cluster)     #感興趣的基因
plot_cell_trajectory(sc_cds,markers=gs,
                     use_color_gradient=T)
image.png
4.4 基因擬時序點(diǎn)圖
plot_genes_in_pseudotime(sc_cds[gs,],
                 color_by = "celltype",
                 nrow= 3, #6個基因所以排了3行,數(shù)量有變化時要改
                 ncol = NULL )

橫坐標(biāo)是按照pseudotime排好順序的村视。


image.png
改成2個B細(xì)胞群:"naive B","plasma B"

改細(xì)胞群重新跑的時候官套,創(chuàng)建CellDataSet對象出bug


image.png

解決方法:更新igraph包
ps:另一個裝包error

install.packages("igraph")
Error in install.packages : Updating loaded packages

這種情況通常發(fā)生在某些需要更新的包當(dāng)前正在使用。需要重啟R蚁孔,在什么包都沒加載的時候再更新奶赔。
切換細(xì)胞子集重跑結(jié)果:


image.png

image.png

image.png

image.png

image.png

image.png
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市勒虾,隨后出現(xiàn)的幾起案子纺阔,更是在濱河造成了極大的恐慌,老刑警劉巖修然,帶你破解...
    沈念sama閱讀 217,907評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異质况,居然都是意外死亡愕宋,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,987評論 3 395
  • 文/潘曉璐 我一進(jìn)店門结榄,熙熙樓的掌柜王于貴愁眉苦臉地迎上來中贝,“玉大人,你說我怎么就攤上這事臼朗×谑伲” “怎么了?”我有些...
    開封第一講書人閱讀 164,298評論 0 354
  • 文/不壞的土叔 我叫張陵视哑,是天一觀的道長绣否。 經(jīng)常有香客問我,道長挡毅,這世上最難降的妖魔是什么蒜撮? 我笑而不...
    開封第一講書人閱讀 58,586評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮跪呈,結(jié)果婚禮上段磨,老公的妹妹穿的比我還像新娘。我一直安慰自己耗绿,他們只是感情好苹支,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,633評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著误阻,像睡著了一般债蜜。 火紅的嫁衣襯著肌膚如雪晴埂。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,488評論 1 302
  • 那天策幼,我揣著相機(jī)與錄音邑时,去河邊找鬼。 笑死特姐,一個胖子當(dāng)著我的面吹牛晶丘,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播唐含,決...
    沈念sama閱讀 40,275評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼浅浮,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了捷枯?” 一聲冷哼從身側(cè)響起滚秩,我...
    開封第一講書人閱讀 39,176評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎淮捆,沒想到半個月后郁油,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,619評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡攀痊,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,819評論 3 336
  • 正文 我和宋清朗相戀三年桐腌,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片苟径。...
    茶點(diǎn)故事閱讀 39,932評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡案站,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出棘街,到底是詐尸還是另有隱情蟆盐,我是刑警寧澤,帶...
    沈念sama閱讀 35,655評論 5 346
  • 正文 年R本政府宣布遭殉,位于F島的核電站石挂,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏恩沽。R本人自食惡果不足惜誊稚,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,265評論 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望罗心。 院中可真熱鬧里伯,春花似錦、人聲如沸渤闷。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,871評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽飒箭。三九已至狼电,卻和暖如春蜒灰,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背肩碟。 一陣腳步聲響...
    開封第一講書人閱讀 32,994評論 1 269
  • 我被黑心中介騙來泰國打工强窖, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人削祈。 一個月前我還...
    沈念sama閱讀 48,095評論 3 370
  • 正文 我出身青樓翅溺,卻偏偏與公主長得像,于是被迫代替她去往敵國和親髓抑。 傳聞我的和親對象是個殘疾皇子咙崎,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,884評論 2 354

推薦閱讀更多精彩內(nèi)容