scATAC分析神器ArchR初探-簡介(1)
scATAC分析神器ArchR初探-ArchR進(jìn)行doublet處理(2)
scATAC分析神器ArchR初探-創(chuàng)建ArchRProject(3)
scATAC分析神器ArchR初探-使用ArchR降維(4)
scATAC分析神器ArchR初探--使用ArchR進(jìn)行聚類(5)
scATAC分析神器ArchR初探-單細(xì)胞嵌入(6)
scATAC分析神器ArchR初探-使用ArchR計(jì)算基因活性值和標(biāo)記基因(7)
scATAC分析神器ArchR初探-scRNA-seq確定細(xì)胞類型(8)
scATAC分析神器ArchR初探-ArchR中的偽批次重復(fù)處理(9)
scATAC分析神器ArchR初探-使用ArchR-peak-calling(10)
scATAC分析神器ArchR初探-使用ArchR識(shí)別標(biāo)記峰(11)
scATAC分析神器ArchR初探-使用ArchR進(jìn)行主題和功能豐富(12)
scATAC分析神器ArchR初探-利用ArchR豐富ChromVAR偏差(13)
scATAC分析神器ArchR初探-使用ArchR進(jìn)行足跡(14)
scATAC分析神器ArchR初探-使用ArchR進(jìn)行整合分析(15)
scATAC分析神器ArchR初探-使用ArchR進(jìn)行軌跡分析(16)
16-使用ArchR進(jìn)行軌跡分析
為了在偽時(shí)間內(nèi)對(duì)單元進(jìn)行排序畦戒,ArchR創(chuàng)建了細(xì)胞軌跡闲礼,該軌跡對(duì)ArchRProject中較低N維子空間上的單元進(jìn)行排序畴蒲。以前僵蛛,我們已經(jīng)在二維UMAP子空間中執(zhí)行了此排序纬向,但是ArchR在此方法上進(jìn)行了改進(jìn)缝龄,可以在N維子空間(即LSI)中進(jìn)行對(duì)齊旺韭。首先础嫡,ArchR需要用戶定義的軌跡主干指么,該主干可提供細(xì)胞組/簇的大致順序。例如,給定用戶確定的簇身份涧尿,可以提供干細(xì)胞簇的簇ID系奉,然后是祖細(xì)胞簇,然后是與已知或推測的生物學(xué)相關(guān)細(xì)胞軌跡相對(duì)應(yīng)的分化細(xì)胞簇(即提供簇) HSC姑廉,GMP缺亮,單核細(xì)胞的ID)。接下來桥言,對(duì)于每個(gè)群集萌踱,ArchR計(jì)算N維中每個(gè)單元組/集群的平均坐標(biāo),并保留與這些平均坐標(biāo)的歐幾里得距離在所有單元的前5%中的單元号阿。接下來并鸵,ArchR為每個(gè)單元計(jì)算從群集i到群集i + 1沿著軌跡的平均坐標(biāo)的距離,并基于這些距離為i的每次迭代計(jì)算一個(gè)偽時(shí)間向量扔涧。這使得ArchR可以基于到單元格組/簇平均坐標(biāo)的歐幾里得距離园担,為作為軌跡一部分保留的每個(gè)單元格確定N維坐標(biāo)和偽時(shí)間值。接下來枯夜,ArchR使用偽時(shí)間基于偽時(shí)間值將連續(xù)軌跡擬合到每個(gè)N維坐標(biāo)弯汰。ArchR計(jì)算沿著軌跡從簇i到簇i + 1的平均坐標(biāo)的每個(gè)單元的距離,并基于這些距離為i的每次迭代計(jì)算一個(gè)偽時(shí)間向量湖雹。這使得ArchR可以基于到單元格組/簇平均坐標(biāo)的歐幾里得距離咏闪,為作為軌跡一部分保留的每個(gè)單元格確定N維坐標(biāo)和偽時(shí)間值。接下來摔吏,ArchR使用偽時(shí)間基于偽時(shí)間值將連續(xù)軌跡擬合到每個(gè)N維坐標(biāo)鸽嫂。ArchR計(jì)算沿著軌跡從簇i到簇i + 1的平均坐標(biāo)的每個(gè)單元的距離,并基于這些距離為i的每次迭代計(jì)算一個(gè)偽時(shí)間向量征讲。這使得ArchR可以基于到單元格組/簇平均坐標(biāo)的歐幾里得距離据某,為作為軌跡一部分保留的每個(gè)單元格確定N維坐標(biāo)和偽時(shí)間值。接下來稳诚,ArchR使用偽時(shí)間基于偽時(shí)間值將連續(xù)軌跡擬合到每個(gè)N維坐標(biāo)哗脖。這使得ArchR可以基于到單元格組/簇平均坐標(biāo)的歐幾里得距離,為作為軌跡一部分保留的每個(gè)單元格確定N維坐標(biāo)和偽時(shí)間值扳还。接下來才避,ArchR使用偽時(shí)間基于偽時(shí)間值將連續(xù)軌跡擬合到每個(gè)N維坐標(biāo)。這使得ArchR可以基于到單元格組/簇平均坐標(biāo)的歐幾里得距離氨距,為作為軌跡一部分保留的每個(gè)單元格確定N維坐標(biāo)和偽時(shí)間值桑逝。接下來,ArchR使用偽時(shí)間基于偽時(shí)間值將連續(xù)軌跡擬合到每個(gè)N維坐標(biāo)俏让。smooth.spline功能楞遏。然后茬暇,ArchR基于所有單元格到沿流形的最近點(diǎn)的歐幾里德距離,將所有單元格與軌跡對(duì)齊寡喝。然后糙俗,ArchR將此對(duì)齊比例縮放為100,并將此偽時(shí)間存儲(chǔ)在ArchRProject中以進(jìn)行下游分析预鬓。
ArchR可以創(chuàng)建矩陣巧骚,以在Arrow文件中存儲(chǔ)的要素之間傳遞偽時(shí)間趨勢。例如格二,ArchR可以分析跨偽時(shí)間的TF偏差劈彪,基因得分或整合的基因表達(dá)的變化,以識(shí)別在整個(gè)細(xì)胞軌跡中動(dòng)態(tài)的調(diào)節(jié)子或調(diào)節(jié)元件顶猜。首先沧奴,ArchR以用戶定義的小幅度增量(默認(rèn)= 1/100)在整個(gè)細(xì)胞軌跡上對(duì)細(xì)胞進(jìn)行分組。然后长窄,ArchR使用該功能使用用戶定義的平滑窗口(默認(rèn)值= 9/100)對(duì)每個(gè)功能對(duì)該矩陣進(jìn)行平滑data.table::frollmean滔吠。然后,ArchR將此平滑的偽時(shí)間x特征矩陣返回為SummarizedExperiment用于下游分析抄淑。此外屠凶,ArchR可以使用名稱匹配(即具有chromVAR TF偏差和基因得分/整合譜的正調(diào)控子)或通過基因組位置重疊法(即峰與基因的關(guān)聯(lián))使用低位相關(guān)性來關(guān)聯(lián)這些平滑的偽時(shí)間x特征矩陣中的兩個(gè)如前面部分所述驰后,重疊的細(xì)胞聚集體肆资。因此,ArchR促進(jìn)了跨細(xì)胞軌跡的綜合分析灶芝,揭示了跨多模態(tài)數(shù)據(jù)的相關(guān)監(jiān)管動(dòng)態(tài)郑原。
16.1髓系軌跡-單核細(xì)胞分化
在本節(jié)中,我們將創(chuàng)建一個(gè)近似于HSCs向完全分化的單核細(xì)胞分化的細(xì)胞軌跡夜涕。首先犯犁,讓我們檢查一下我們先前定義的群集和單元格類型,它們存儲(chǔ)在cellColData
名為“ Clusters”和“ Clusters2”的列中女器。將這些單元格分組覆蓋在我們的UMAP嵌入上會(huì)顯示我們感興趣的不同單元格類型酸役。
p1 <- plotEmbedding(ArchRProj = projHeme5, colorBy = "cellColData", name = "Clusters", embedding = "UMAP")
p2 <- plotEmbedding(ArchRProj = projHeme5, colorBy = "cellColData", name = "Clusters2", embedding = "UMAP")
ggAlignPlots(p1, p2, type = "h")
16.1.1偽時(shí)間UMAP和單個(gè)特征圖
我們將使用存儲(chǔ)在“ Clusters2”中的單元格類型定義。如上所述驾胆,我們正在創(chuàng)建一條從干細(xì)胞(“祖細(xì)胞”)到定型的髓祖細(xì)胞(“ GMP”)到單核細(xì)胞(“單核”)的軌跡涣澡。創(chuàng)建軌跡的第一步是以細(xì)胞組標(biāo)簽的有序向量形式創(chuàng)建軌跡主干。
trajectory <- c("Progenitor", "GMP", "Mono")
trajectory
我們使用addTrajectory()
函數(shù)創(chuàng)建軌跡丧诺,并將其添加到ArchRProject
入桂。我們將這個(gè)軌跡稱為“ MyeloidU”。這樣做是在cellColData
“ MyeloidU”中創(chuàng)建一個(gè)新列驳阎,該列存儲(chǔ)軌跡中每個(gè)單元的偽時(shí)間值抗愁。不屬于軌跡的像元標(biāo)記為NA
馁蒂。
projHeme5 <- addTrajectory(
ArchRProj = projHeme5,
name = "MyeloidU",
groupBy = "Clusters2",
trajectory = trajectory,
embedding = "UMAP",
force = TRUE
)
我們可以查看此信息,并看到每個(gè)像元都有一個(gè)介于0到100之間的唯一偽時(shí)間值蜘腌。我們排除了具有NA
這些值的像元沫屡,因?yàn)樗鼈儾皇擒壽E的一部分。
head(projHeme5$MyeloidU[!is.na(projHeme5$MyeloidU)])
要繪制此軌跡撮珠,我們使用在plotTrajectory()
UMAP嵌入中覆蓋偽時(shí)間值的函數(shù)谁鳍,并顯示一個(gè)近似于樣條曲線擬合的軌跡路徑的箭頭。不屬于軌跡的像元被涂成灰色劫瞳。在此示例中倘潜,我們用于colorBy = "cellColData"
告訴ArchR在cellColData
由name
- 指定的列(在本例中為“ MyeloidU”偽時(shí)間軌跡)內(nèi)查找。雖然同時(shí)為trajectory
和列出“ MyeloidU”似乎很反常name
志于,但這是因?yàn)?code>trajectory告訴ArchR我們感興趣的是哪個(gè)細(xì)胞子集涮因,并且name
告訴ArchR如何為該細(xì)胞子集著色内边。
p <- plotTrajectory(projHeme5, trajectory = "MyeloidU", colorBy = "cellColData", name = "MyeloidU")
要保存此圖的可編輯矢量化版本晓殊,請使用plotPDF()
朋其。
plotPDF(p, name = "Plot-MyeloidU-Traj-UMAP.pdf", ArchRProj = projHeme5, addDOC = FALSE, width = 5, height = 5)
我們還可以在UMAP嵌入中將其他要素疊加在軌跡上仰猖。這使我們僅在與我們的軌跡相關(guān)的像元內(nèi)顯示特定特征吼肥。
如果尚未將估算權(quán)重添加到projHeme5
項(xiàng)目中硬梁,請立即執(zhí)行贯涎。
projHeme5 <- addImputeWeights(projHeme5)
然后芹敌,我們可以繪制“ MyeloidU”軌跡杖挣,但通過CEBPB基因的基因得分值對(duì)細(xì)胞著色肩榕,CEBPB基因是已知的單核細(xì)胞功能調(diào)節(jié)劑,在分化過程中會(huì)活躍惩妇。我們指出要通過colorBy
參數(shù)使用的矩陣和要通過參數(shù)使用的特征name
株汉。
p1 <- plotTrajectory(projHeme5, trajectory = "MyeloidU", colorBy = "GeneScoreMatrix", name = "CEBPB", continuousSet = "horizonExtra")
我們可以重復(fù)這個(gè)過程,但是通過細(xì)胞的連鎖基因表達(dá)使細(xì)胞著色GeneIntegrationMatrix
歌殃。
p2 <- plotTrajectory(projHeme5, trajectory = "MyeloidU", colorBy = "GeneIntegrationMatrix", name = "CEBPB", continuousSet = "blueYellow")
該plotTrajectory()
函數(shù)實(shí)際上返回相關(guān)圖的列表乔妈。列表中的第一個(gè)圖是UMAP嵌入,按函數(shù)調(diào)用中的指定進(jìn)行著色氓皱。
并排比較這些UMAP圖的基因得分和基因表達(dá)路召,我們發(fā)現(xiàn)CEBPB基因的活性在偽時(shí)間軌跡的后期對(duì)單核細(xì)胞具有高度特異性。
ggAlignPlots(p1[[1]], p2[[1]], type = "h")
返回的第二個(gè)圖是plotTrajectory()
偽時(shí)間與相關(guān)特征值(在這種情況下為CEBPB的基因得分或基因表達(dá))的點(diǎn)圖波材。在這種情況下股淡,單元格通過其偽時(shí)間著色。
ggAlignPlots(p1[[2]], p2[[2]], type = "h")
16.1.2偽時(shí)間熱圖
我們可以使用熱圖可視化跨偽時(shí)間的許多功能的變化各聘。為此揣非,我們首先ArchRProject
使用getTrajectory()
函數(shù)返回感興趣的軌跡,該函數(shù)將軌跡作為SummarizedExperiment
對(duì)象返回躲因。通過將相應(yīng)的矩陣傳遞給useMatrix
參數(shù)早敬,我們將為模體忌傻,基因得分,基因表達(dá)和峰值可及性創(chuàng)建這些偽時(shí)間熱圖搞监。
trajMM <- getTrajectory(ArchRProj = projHeme5, name = "MyeloidU", useMatrix = "MotifMatrix", log2Norm = FALSE)
然后水孩,我們將此傳遞SummarizedExperiment
給plotTrajectoryHeatmap()
函數(shù)。
p1 <- plotTrajectoryHeatmap(trajMM, pal = paletteContinuous(set = "solarExtra"))
通過設(shè)置琐驴,我們可以執(zhí)行相同的步驟來獲得基因分?jǐn)?shù)的偽時(shí)間熱圖useMatrix = "GeneScoreMatrix"
俘种。
trajGSM <- getTrajectory(ArchRProj = projHeme5, name = "MyeloidU", useMatrix = "GeneScoreMatrix", log2Norm = TRUE)
p2 <- trajectoryHeatmap(trajGSM, pal = paletteContinuous(set = "horizonExtra"))
同樣,我們可以通過設(shè)置獲得基因表達(dá)的偽時(shí)間熱圖useMatrix = "GeneIntegrationMatrix"
绝淡。
trajGIM <- getTrajectory(ArchRProj = projHeme5, name = "MyeloidU", useMatrix = "GeneIntegrationMatrix", log2Norm = FALSE)
p3 <- plotTrajectoryHeatmap(trajGIM, pal = paletteContinuous(set = "blueYellow"))
最后宙刘,我們可以通過設(shè)置獲得峰值可訪問性的偽時(shí)間熱圖useMatrix = "PeakMatrix"
。
trajPM <- getTrajectory(ArchRProj = projHeme5, name = "MyeloidU", useMatrix = "PeakMatrix", log2Norm = TRUE)
p4 <- plotTrajectoryHeatmap(trajPM, pal = paletteContinuous(set = "solarExtra"))
要保存此圖的可編輯矢量化版本牢酵,請使用plotPDF()
悬包。
plotPDF(p1, p2, p3, p4, name = "Plot-MyeloidU-Traj-Heatmaps.pdf", ArchRProj = projHeme5, addDOC = FALSE, width = 6, height = 8)
16.1.3集成偽時(shí)間分析
我們還可以進(jìn)行綜合分析,例如通過整合基因得分/基因表達(dá)和偽時(shí)間中的基元可及性來鑒定陽性TF調(diào)節(jié)劑馍乙。例如布近,在識(shí)別差異驅(qū)動(dòng)因素時(shí),這可能非常強(qiáng)大丝格。為此撑瞧,我們使用該correlateTrajectories()
函數(shù),該函數(shù)接受SummarizedExperiment
從該getTrajectories()
函數(shù)檢索的兩個(gè)對(duì)象显蝌。
首先预伺,讓我們找到其偽時(shí)間可訪問性與TF基因的基因得分相關(guān)的基序。
corGSM_MM <- correlateTrajectories(trajGSM, trajMM)
的主要輸出correlateTrajectories()
是一個(gè)列表對(duì)象琅束,其中包含一個(gè)DataFrame
對(duì)象作為列表中的第一個(gè)條目扭屁。此DataFrame
已命名的列idx1
,matchname1
涩禀,name1
,和VarAssay1
其對(duì)應(yīng)于索引然眼,匹配名艾船,未改變的名字,并從第一軌跡的特征的方差位數(shù)傳遞給(基因分)correlateTrajectories()
功能高每∮炱瘢“方差分位數(shù)”是對(duì)給定特征的歸一化度量,它使我們能夠得出不同分析之間的相關(guān)性鲸匿。它DataFrame
包含滿足功能中指定的臨界值的所有correlateTrajectories()
功能爷怀。
corGSM_MM[[1]]
然后,我們可以將相應(yīng)的軌跡SummarizedExperiment
對(duì)象子集化带欢,以僅包含通過上述意義的元素运授。
trajGSM2 <- trajGSM[corGSM_MM[[1]]$name1, ]
trajMM2 <- trajMM[corGSM_MM[[1]]$name2, ]
為了最好地排序這些功能烤惊,我們可以創(chuàng)建一條新的軌跡,將這兩個(gè)軌跡的值相乘吁朦。這將使我們能夠創(chuàng)建并排排列的熱圖柒室,它們按行順序相同。
trajCombined <- trajGSM2
assay(trajCombined) <- t(apply(assay(trajGSM2), 1, scale)) + t(apply(assay(trajMM2), 1, scale))
我們可以從plotTrajectoryHeatmap()
函數(shù)的返回值中提取最佳行順序逗宜。
combinedMat <- plotTrajectoryHeatmap(trajCombined, returnMat = TRUE, varCutOff = 0)
rowOrder <- match(rownames(combinedMat), rownames(trajGSM2))
這樣雄右,我們現(xiàn)在準(zhǔn)備創(chuàng)建配對(duì)的熱圖。首先纺讲,我們將為基因得分軌跡創(chuàng)建熱圖擂仍。我們通過rowOrder
參數(shù)指定所需的行順序。
ht1 <- plotTrajectoryHeatmap(trajGSM2, pal = paletteContinuous(set = "horizonExtra"), varCutOff = 0, rowOrder = rowOrder)
然后熬甚,我們將為主題軌跡創(chuàng)建熱圖防楷,再次通過rowOrder
參數(shù)指定行順序
ht2 <- plotTrajectoryHeatmap(trajMM2, pal = paletteContinuous(set = "solarExtra"), varCutOff = 0, rowOrder = rowOrder)
并排繪制這兩個(gè)熱圖,我們看到在兩個(gè)熱圖之間行是匹配的则涯。您可能會(huì)注意到复局,該分析同時(shí)捕獲了GATA3和GATA3-AS1(GATA3的反義轉(zhuǎn)錄本)。這是由于如何執(zhí)行功能匹配粟判,并且反義轉(zhuǎn)錄本條目可以在后期處理中手動(dòng)刪除亿昏,也可以根據(jù)需要通過編程方式刪除。
ht1 + ht2
我們可以重復(fù)相同的確切過程档礁,但是使用來自
GeneIntegrationMatrix
而不是基因得分的基因表達(dá)角钩。因?yàn)檫@是相同的分析工作流程,所以我們不會(huì)在每個(gè)步驟上重復(fù)說明呻澜。
corGIM_MM <- correlateTrajectories(trajGIM, trajMM)
corGIM_MM[[1]]
trajGIM2 <- trajGIM[corGIM_MM[[1]]$name1, ]
trajMM2 <- trajMM[corGIM_MM[[1]]$name2, ]
trajCombined <- trajGIM2
assay(trajCombined) <- t(apply(assay(trajGIM2), 1, scale)) + t(apply(assay(trajMM2), 1, scale))
combinedMat <- plotTrajectoryHeatmap(trajCombined, returnMat = TRUE, varCutOff = 0)
rowOrder <- match(rownames(combinedMat), rownames(trajGIM2))
ht1 <- plotTrajectoryHeatmap(trajGIM2, pal = paletteContinuous(set = "blueYellow"), varCutOff = 0, rowOrder = rowOrder)
ht2 <- plotTrajectoryHeatmap(trajMM2, pal = paletteContinuous(set = "solarExtra"), varCutOff = 0, rowOrder = rowOrder)
ht1 + ht2
16.2淋巴彈道-B細(xì)胞凋亡
作為軌跡的第二個(gè)例子递礼,我們將從祖細(xì)胞到常見的淋巴樣祖細(xì)胞和前B細(xì)胞一直到完全分化的B細(xì)胞,來創(chuàng)建B細(xì)胞軌跡羹幸。因?yàn)閺纳弦还?jié)中的單核細(xì)胞軌跡開始基本上重復(fù)了此分析脊髓,所以我們不提供代碼片段的解釋。如果您想學(xué)習(xí)如何執(zhí)行軌跡分析栅受,請查看本章中的單核細(xì)胞軌跡部分将硝。
p1 <- plotEmbedding(ArchRProj = projHeme5, colorBy = "cellColData", name = "Clusters", embedding = "UMAP")
p2 <- plotEmbedding(ArchRProj = projHeme5, colorBy = "cellColData", name = "Clusters2", embedding = "UMAP")
ggAlignPlots(p1, p2, type = "h")
16.2.1偽時(shí)UMAP和單個(gè)特征圖
trajectory <- c("Progenitor", "CLP", "PreB", "B")
trajectory
projHeme5 <- addTrajectory(
ArchRProj = projHeme5,
name = "LymphoidU",
groupBy = "Clusters2",
trajectory = trajectory,
embedding = "UMAP",
force = TRUE
)
head(projHeme5LymphoidU)]) #NA means not in trajectory
p <- plotTrajectory(projHeme5, trajectory = "LymphoidU", colorBy = "cellColData", name = "LymphoidU")
p[[1]]
要保存此圖的可編輯矢量化版本,請使用plotPDF()
屏镊。
plotPDF(p, name = "Plot-LymphoidU-Traj-UMAP.pdf", ArchRProj = projHeme5, addDOC = FALSE, width = 5, height = 5)
p1 <- plotTrajectory(projHeme5, trajectory = "LymphoidU", colorBy = "GeneScoreMatrix", name = "PAX5", continuousSet = "horizonExtra")
p2 <- plotTrajectory(projHeme5, trajectory = "LymphoidU", colorBy = "GeneIntegrationMatrix", name = "PAX5", continuousSet = "blueYellow")
ggAlignPlots(p1[[1]], p2[[1]], type = "h")
ggAlignPlots(p1[[2]], p2[[2]], type = "h")
16.2.2偽時(shí)間熱圖
trajMM <- getTrajectory(ArchRProj = projHeme5, name = "LymphoidU", useMatrix = "MotifMatrix", log2Norm = FALSE)
p1 <- plotTrajectoryHeatmap(trajMM, pal = paletteContinuous(set = "solarExtra"))
trajGSM <- getTrajectory(ArchRProj = projHeme5, name = "LymphoidU", useMatrix = "GeneScoreMatrix", log2Norm = TRUE)
p2 <- plotTrajectoryHeatmap(trajGSM, pal = paletteContinuous(set = "horizonExtra"))
trajGIM <- getTrajectory(ArchRProj = projHeme5, name = "LymphoidU", useMatrix = "GeneIntegrationMatrix", log2Norm = FALSE)
p3 <- plotTrajectoryHeatmap(trajGIM, pal = paletteContinuous(set = "blueYellow"))
p4 <- plotTrajectoryHeatmap(trajPM, pal = paletteContinuous(set = "solarExtra"))
要保存此圖的可編輯矢量化版本依疼,請使用
plotPDF()
。
plotPDF(p1, p2, p3, p4, name = "Plot-LymphoidU-Traj-Heatmaps.pdf", ArchRProj = projHeme5, addDOC = FALSE, width = 6, height = 8)
16.2.3綜合偽時(shí)間分析
corGSM_MM <- correlateTrajectories(trajGSM, trajMM)
corGSM_MM[[1]]$matchname1
corGSM_MM[[1]]
trajGSM2 <- trajGSM[corGSM_MM[[1]]$name1, ]
trajMM2 <- trajMM[corGSM_MM[[1]]$name2, ]
trajCombined <- trajGSM2
assay(trajCombined) <- t(apply(assay(trajGSM2), 1, scale)) + t(apply(assay(trajMM2), 1, scale))
combinedMat <- plotTrajectoryHeatmap(trajCombined, returnMat = TRUE, varCutOff = 0)
rowOrder <- match(rownames(combinedMat), rownames(trajGSM2))
ht1 <- plotTrajectoryHeatmap(trajGSM2, pal = paletteContinuous(set = "horizonExtra"), varCutOff = 0, rowOrder = rowOrder)
ht2 <- plotTrajectoryHeatmap(trajMM2, pal = paletteContinuous(set = "solarExtra"), varCutOff = 0, rowOrder = rowOrder)
ht1 + ht2
corGIM_MM <- correlateTrajectories(trajGIM, trajMM)
corGIM_MM[[1]]$matchname1
corGIM_MM[[1]]
trajGIM2 <- trajGIM[corGIM_MM[[1]]$name1, ]
trajMM2 <- trajMM[corGIM_MM[[1]]$name2, ]
trajCombined <- trajGIM2
assay(trajCombined) <- t(apply(assay(trajGIM2), 1, scale)) + t(apply(assay(trajMM2), 1, scale))
combinedMat <- plotTrajectoryHeatmap(trajCombined, returnMat = TRUE, varCutOff = 0)
rowOrder <- match(rownames(combinedMat), rownames(trajGIM2))
ht1 <- plotTrajectoryHeatmap(trajGIM2, pal = paletteContinuous(set = "blueYellow"), varCutOff = 0, rowOrder = rowOrder)
ht2 <- plotTrajectoryHeatmap(trajMM2, pal = paletteContinuous(set = "solarExtra"), varCutOff = 0, rowOrder = rowOrder)
ht1 + ht2