實驗記錄9:Monocle包的使用方法

梗概

參照官網(wǎng)教程:http://cole-trapnell-lab.github.io/monocle-release/docs/#getting-started-with-monocle
或在R中運行以下命令:

browseVignettes("monocle")

關(guān)于Monocle

Monocle introduced the strategy of ordering single cells in pseudotime,
placing them along a trajectory corresponding to a biological process such as cell differentiation. Monocle learns this trajectory directly from the data, in either a fully unsupervised or a semi-supervised manner. It also performs differential gene expression and clustering to identify important genes and cell states.

Monocle是用于分析single-cell RNA-seq的R包的烁,能夠?qū)⒓?xì)胞按照模擬的時間順序進(jìn)行排列诈闺,顯示它們的發(fā)展軌跡如細(xì)胞分化等生物學(xué)過程买雾。Monocle從數(shù)據(jù)中用無監(jiān)督或半監(jiān)督(?)的方式直接獲得這個軌跡嗤军。除此之外晃危,它還能夠做差異表達(dá)分析和聚類來揭示重要的基因和細(xì)胞。

在發(fā)育過程中震叮,為了響應(yīng)刺激和生命苇瓣,細(xì)胞從一種功能性“狀態(tài)”轉(zhuǎn)變?yōu)榱硪环N功能性“狀態(tài)”偿乖。處于不同狀態(tài)的細(xì)胞表達(dá)不同的基因組哲嘲,產(chǎn)生蛋白質(zhì)和代謝物的動態(tài)重復(fù)序列眠副,從而完成它們的工作竣稽。當(dāng)細(xì)胞在狀態(tài)之間移動時,經(jīng)歷轉(zhuǎn)錄重組的過程娃弓,一些基因被沉默岛宦,另一些被新激活恋博。這些瞬態(tài)通常難以表征私恬,因為在更穩(wěn)定的端點狀態(tài)之間純化細(xì)胞可能是困難的或不可能的。單細(xì)胞RNA-Seq可以讓您在不需要純化的情況下查看這些狀態(tài)疫衩。但是闷煤,為此涮瞻,我們必須確定每個單元格的可能狀態(tài)范圍。

Monocle介紹了使用RNA-Seq進(jìn)行單細(xì)胞軌跡分析的策略近顷。Monocle不是通過實驗將細(xì)胞純化為離散狀態(tài)宁否,而是使用算法來學(xué)習(xí)每個細(xì)胞必須經(jīng)歷的基因表達(dá)變化的序列慕匠,作為動態(tài)生物過程的一部分。一旦它了解了基因表達(dá)變化的整體“軌跡”蓉媳,Monocle就可以將每個細(xì)胞放置在軌跡中的適當(dāng)位置。然后殴瘦,您可以使用Monocle的差異分析工具包來查找在軌跡過程中受到調(diào)控的基因号杠,如“ 查找作為假性函數(shù)的變化的基因 ”一節(jié)中所述姨蟋。如果該過程有多個結(jié)果,Monocle將重建“分支”軌跡悠砚。這些分支對應(yīng)于細(xì)胞“決策”堂飞,Monocle提供了強大的工具來識別受其影響的基因并參與制作它們绰筛。您可以在“分析單細(xì)胞軌跡中的分支”一節(jié)中查看如何分析分支。Monocle依賴于稱為反向圖嵌入的機器學(xué)習(xí)技術(shù)來構(gòu)建單細(xì)胞軌跡衡蚂。您可以 在Monocle理論背后的部分中閱讀更多關(guān)于Monocle方法的理論基礎(chǔ)骏庸,或參考小插圖末尾顯示的參考文獻(xiàn)

什么是偽時間具被?

Pseudotime是衡量單個細(xì)胞通過細(xì)胞分化等過程取得多少進(jìn)展的量度。在許多生物過程中补箍,細(xì)胞不能完美同步啸蜜。在諸如細(xì)胞分化的過程的單細(xì)胞表達(dá)研究中衬横,捕獲的細(xì)胞可以在進(jìn)展方面廣泛分布。也就是說遥诉,在完全同時捕獲的細(xì)胞群中,一些細(xì)胞可能很遠(yuǎn)霉翔,而其他細(xì)胞甚至可能尚未開始該過程苞笨。當(dāng)您想要了解細(xì)胞從一個狀態(tài)轉(zhuǎn)換到另一個狀態(tài)時發(fā)生的調(diào)節(jié)變化的順序時瀑凝,這種不同步會產(chǎn)生重大問題。跟蹤同時捕獲的細(xì)胞的表達(dá)產(chǎn)生非常壓縮的基因動力學(xué)感覺谚中,以及該基因的明顯變異性' 的表達(dá)會非常高宪塔。通過沿著學(xué)習(xí)軌跡根據(jù)其進(jìn)度對每個單元進(jìn)行排序囊拜,Monocle減輕了由于不同步引起的問題。Monocle不是根據(jù)時間跟蹤表達(dá)式的變化,而是根據(jù)軌跡上的進(jìn)度跟蹤變化蔽莱,我們稱之為pseudotime'戚长。Pseudotime是一個抽象的進(jìn)展單元:它只是一個單元格與軌跡起點之間的距離同廉,沿著最短路徑測量。軌跡的總長度是根據(jù)細(xì)胞從起始狀態(tài)移動到最終狀態(tài)時經(jīng)歷的轉(zhuǎn)錄變化的總量來定義的锅劝。


實驗記錄

偽時間分析實驗技術(shù)流程主要包括三個步驟故爵,而每一步都是一個機器學(xué)習(xí)任務(wù):

step1:選擇輸入基因用于機器學(xué)習(xí)

這個過程稱為feature selection(特征選擇)隅津,這些基因?qū)壽E的形狀有著最重要的影響劲室。我們應(yīng)該要選擇的是最能反映細(xì)胞狀態(tài)的基因很洋。
如果直接通過Seurat輸出的一些重要的基因(比如每個cluster中的高FC值基因)作為輸入對象的話就能夠?qū)崿F(xiàn)一個“無監(jiān)督”分析隧枫∮贫猓或者也可以利用生物學(xué)知識手動選擇一些重要的基因進(jìn)行“半監(jiān)督”分析。

step2:數(shù)據(jù)降維

利用Reversed graph embedding算法將數(shù)據(jù)降維斤讥。沒有太懂湾趾。
相對于PCA來說這個算法更能夠反應(yīng)數(shù)據(jù)的內(nèi)部結(jié)構(gòu)(據(jù)說是這樣)

step3:將細(xì)胞按照偽時間排序

這個過程稱為manifold learning(流形學(xué)習(xí))搀缠。Monocle利用軌跡來描述細(xì)胞如何從一個狀態(tài)轉(zhuǎn)換到另一個狀態(tài)。得到的是一個樹狀圖簸州,樹的根部或樹干表示的是細(xì)胞最初的狀態(tài)(如果有的話)歧譬,隨著細(xì)胞的變化就沿著分叉樹枝發(fā)展瑰步。一個細(xì)胞的偽時間值(pseudotime value)為它的位置沿著樹枝到根部的距離。


以下是正式實驗記錄:

step0:數(shù)據(jù)輸入

下載與安裝

實驗要求——
R version 3.4 or higher, Bioconductor version 3.5, and monocle 2.4.0 or higher to have access to the latest features.
查看R版本:

sessionInfo()
R version 3.4.4 (2018-03-15)
Platform: x86_64-apple-darwin15.6.0 (64-bit)
Running under: OS X El Capitan 10.11.6

安裝bioconductor以及monocle

source("http://bioconductor.org/biocLite.R")
biocLite("monocle")

加載程輯包:

library(monocle)

將Seurat Object導(dǎo)入

Monocle包可以利用importCDS()命令將Seurat包中的數(shù)據(jù)導(dǎo)入,同時也能用exportCDS()將數(shù)據(jù)導(dǎo)出到其他包中袁滥。
由于之前的Seurat變量已經(jīng)被覆蓋题翻,故重新創(chuàng)建一個。

spleen_monocle <- CreateSeuratObject(raw.data = spleen.data, min.cells = 3, min.genes = 200, project = "10X_spleen")
spleen_monocle <- importCDS(spleen_monocle, import_all = TRUE)

查看數(shù)據(jù):

spleen_monocle
CellDataSet (storageMode: environment)
assayData: 15655 features, 1959 samples 
  element names: exprs 
protocolData: none
phenoData
  sampleNames: AAACCTGAGGTGATAT AAACCTGAGTCATCCA ... TTTGTCAGTCGTCTTC (1959 total)
  varLabels: nGene nUMI orig.ident Size_Factor
  varMetadata: labelDescription
featureData
  featureNames: RP11-34P13.7 FO538757.2 ... AC240274.1 (15655 total)
  fvarLabels: gene_short_name
  fvarMetadata: labelDescription
experimentData: use 'experimentData(object)'
Annotation:  
head(fData(spleen_monocle))
              gene_short_name
RP11-34P13.7     RP11-34P13.7
FO538757.2         FO538757.2
AP006222.2         AP006222.2
RP4-669L17.10   RP4-669L17.10
RP11-206L10.9   RP11-206L10.9
LINC00115           LINC00115

head(pData(spleen_monocle))
                 nGene nUMI orig.ident Size_Factor
AAACCTGAGGTGATAT  1072 3999 10X_spleen          NA
AAACCTGAGTCATCCA  1562 4640 10X_spleen          NA
AAACCTGCAGTGAGTG   995 3489 10X_spleen          NA
AAACGGGAGACTGGGT  1704 7397 10X_spleen          NA
AAACGGGAGACTTGAA   976 3102 10X_spleen          NA
AAACGGGAGATAGGAG  1236 4548 10X_spleen          NA

15655個基因垃喊,1959個細(xì)胞本谜,與之前創(chuàng)建的的Seurat對象相符偎窘。
(細(xì)胞名是一些barcode序列)


step1:選擇輸入基因用于機器學(xué)習(xí)

①脾臟數(shù)據(jù)subset的獲取

因為脾臟是在4個時間點經(jīng)過缺血處理的陌知,

spleen_monocle <- detectGenes(spleen_monocle)

查看數(shù)據(jù),添加了一列num_cells_expressed

head(fData(spleen_monocle))
              gene_short_name num_cells_expressed
RP11-34P13.7     RP11-34P13.7                   3
FO538757.2         FO538757.2                 214
AP006222.2         AP006222.2                 157
RP4-669L17.10   RP4-669L17.10                  10
RP11-206L10.9   RP11-206L10.9                  25
LINC00115           LINC00115                  35
print(pData(spleen_monocle))
                 nGene  nUMI orig.ident percent.mito res.0.6 Size_Factor num_genes_expressed
AAACCTGAGGTGATAT  1072  3999 10X_spleen 0.0115086315       3          NA                1070
AAACCTGAGTCATCCA  1562  4640 10X_spleen 0.0370929480       5          NA                1560
AAACCTGCAGTGAGTG   995  3489 10X_spleen 0.0395528805       3          NA                 995
AAACGGGAGACTGGGT  1704  7397 10X_spleen 0.0285250777       0          NA                1704
AAACGGGAGACTTGAA   976  3102 10X_spleen 0.0493230174       2          NA                 976
AAACGGGAGATAGGAG  1236  4548 10X_spleen 0.0268249780       1          NA                1236
AAACGGGGTCCGAACC  2430  6863 10X_spleen 0.0379119277       6          NA                2425
AAACGGGTCAGGTAAA  1256  4750 10X_spleen 0.0381052632       1          NA                1256
AAACGGGTCGTCACGG  1887  8095 10X_spleen 0.0302730755       5          NA                1885
AAAGATGAGCGATGAC  1473  5729 10X_spleen 0.0185088179       4          NA                1471

…………

step2:數(shù)據(jù)降維

step3:將細(xì)胞按照偽時間排序



(此段內(nèi)容舍棄)將Seurat Object導(dǎo)入

Monocle包可以利用importCDS()命令將Seurat包中的數(shù)據(jù)導(dǎo)入,同時也能用exportCDS()將數(shù)據(jù)導(dǎo)出到其他包中把篓。

spleen_monocle <- importCDS(spleen, import_all = TRUE)

查看數(shù)據(jù):

spleen_monocle
CellDataSet (storageMode: environment)
assayData: 15655 features, 1940 samples 
  element names: exprs 
protocolData: none
phenoData
  sampleNames: AAACCTGAGGTGATAT AAACCTGAGTCATCCA ... TTTGTCAGTCGTCTTC (1940 total)
  varLabels: nGene nUMI ... Size_Factor (6 total)
  varMetadata: labelDescription
featureData
  featureNames: RP11-34P13.7 FO538757.2 ... AC240274.1 (15655 total)
  fvarLabels: gene_short_name
  fvarMetadata: labelDescription
experimentData: use 'experimentData(object)'
Annotation:  

15655個基因韧掩,1940個細(xì)胞窖铡,與之前的Seurat對象相符费彼。

選擇數(shù)據(jù)分布類型

需要根據(jù)實驗的數(shù)據(jù)類型選擇數(shù)據(jù)的分布,比如是相對表達(dá)量的數(shù)據(jù)/基于計數(shù)的數(shù)據(jù)(如UMI),官方認(rèn)為:“FPKM/TPM values are generally log-normally distributed, while UMIs or read counts are better modeled with the negative binomial.”即利用負(fù)二項式的模型會更加適合UMI計數(shù)的實驗數(shù)據(jù)虹钮。

參數(shù)描述.png
spleen_M <- newCellDataSet(spleen_monocle, expressionFamily=negbinomial.size())

報錯:spleen_monocle不是矩陣.

Error in newCellDataSet(spleen_monocle, expressionFamily = negbinomial.size()) : 
  Error: argument cellData must be a matrix (either sparse from the Matrix package or dense)
In addition: Warning message:
In newCellDataSet(spleen_monocle, expressionFamily = negbinomial.size()) :
  Warning: featureData must contain a column verbatim named 'gene_short_name' for certain functions

預(yù)估size factors和分散

spleen_monocle <- estimateSizeFactors(spleen_monocle)
spleen_monocle <- estimateDispersions(spleen_monocle)
removing 9 outliers.

比較奇怪芙粱,在輸入這兩個命令之后顯示去除了9個異常值春畔,但是查看spleen_monocle變量時返回:

CellDataSet (storageMode: environment)
assayData: 15655 features, 1940 samples 
  element names: exprs 
protocolData: none
phenoData
  sampleNames: AAACCTGAGGTGATAT AAACCTGAGTCATCCA ... TTTGTCAGTCGTCTTC (1940 total)
  varLabels: nGene nUMI ... Size_Factor (6 total)
  varMetadata: labelDescription
featureData
  featureNames: RP11-34P13.7 FO538757.2 ... AC240274.1 (15655 total)
  fvarLabels: gene_short_name
  fvarMetadata: labelDescription
experimentData: use 'experimentData(object)'
Annotation:  
> dim(spleen_monocle)
Features  Samples 
   15655     1940 

仍然是15655個基因,1940個細(xì)胞振峻,與之前無異扣孟。因此采用了另一種輸入方式荣赶。

remove(spleen_monocle)
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末拔创,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子慢逾,更是在濱河造成了極大的恐慌躏吊,老刑警劉巖比伏,帶你破解...
    沈念sama閱讀 206,126評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件赁项,死亡現(xiàn)場離奇詭異,居然都是意外死亡舰攒,警方通過查閱死者的電腦和手機悔醋,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,254評論 2 382
  • 文/潘曉璐 我一進(jìn)店門芬骄,熙熙樓的掌柜王于貴愁眉苦臉地迎上來猾愿,“玉大人,你說我怎么就攤上這事账阻〉倜兀” “怎么了?”我有些...
    開封第一講書人閱讀 152,445評論 0 341
  • 文/不壞的土叔 我叫張陵淘太,是天一觀的道長姻僧。 經(jīng)常有香客問我规丽,道長,這世上最難降的妖魔是什么撇贺? 我笑而不...
    開封第一講書人閱讀 55,185評論 1 278
  • 正文 為了忘掉前任赌莺,我火速辦了婚禮显熏,結(jié)果婚禮上雄嚣,老公的妹妹穿的比我還像新娘。我一直安慰自己喘蟆,他們只是感情好缓升,可當(dāng)我...
    茶點故事閱讀 64,178評論 5 371
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著蕴轨,像睡著了一般港谊。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上橙弱,一...
    開封第一講書人閱讀 48,970評論 1 284
  • 那天歧寺,我揣著相機與錄音,去河邊找鬼棘脐。 笑死斜筐,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的蛀缝。 我是一名探鬼主播顷链,決...
    沈念sama閱讀 38,276評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼屈梁!你這毒婦竟也來了嗤练?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 36,927評論 0 259
  • 序言:老撾萬榮一對情侶失蹤在讶,失蹤者是張志新(化名)和其女友劉穎煞抬,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體构哺,經(jīng)...
    沈念sama閱讀 43,400評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡革答,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,883評論 2 323
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了曙强。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片残拐。...
    茶點故事閱讀 37,997評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖旗扑,靈堂內(nèi)的尸體忽然破棺而出蹦骑,到底是詐尸還是另有隱情慈省,我是刑警寧澤臀防,帶...
    沈念sama閱讀 33,646評論 4 322
  • 正文 年R本政府宣布眠菇,位于F島的核電站,受9級特大地震影響袱衷,放射性物質(zhì)發(fā)生泄漏捎废。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,213評論 3 307
  • 文/蒙蒙 一致燥、第九天 我趴在偏房一處隱蔽的房頂上張望登疗。 院中可真熱鬧,春花似錦嫌蚤、人聲如沸辐益。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,204評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽智政。三九已至,卻和暖如春箱蝠,著一層夾襖步出監(jiān)牢的瞬間续捂,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,423評論 1 260
  • 我被黑心中介騙來泰國打工宦搬, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留牙瓢,地道東北人。 一個月前我還...
    沈念sama閱讀 45,423評論 2 352
  • 正文 我出身青樓间校,卻偏偏與公主長得像矾克,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子撇簿,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,722評論 2 345

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