10X單細(xì)胞(10X空間轉(zhuǎn)錄組)轉(zhuǎn)錄因子活性分析之DoRothEA

hello,大家好梨撞,今天給大家分享一個(gè)轉(zhuǎn)錄因子活性預(yù)測(cè)的工具雹洗,DoRothEA,在多篇高分文章中都有運(yùn)用卧波,我們就來(lái)看看這個(gè)軟件的優(yōu)勢(shì)吧时肿。大家可以參考DoRothEA

圖片.png

先來(lái)看看介紹

首先是數(shù)據(jù)庫(kù)港粱,DoRothEA是一種包含轉(zhuǎn)錄因子(TF)與其靶標(biāo)相互作用的基因集螃成。一個(gè)TF及其對(duì)應(yīng)靶點(diǎn)的集合被定義為調(diào)節(jié)子(regulons)。DoRothEA regulons 收集了文獻(xiàn)查坪,ChIP-seq peaks寸宏,TF結(jié)合位點(diǎn)基序,從基因表達(dá)推斷相互作用等不同類型的互作證據(jù)偿曙。TF和靶標(biāo)之間的互作可信度根據(jù)支持的證據(jù)數(shù)量劃分為A-E五個(gè)等級(jí)氮凝,A是最可信,E為可信度低望忆。
TF 活性是根據(jù)其靶標(biāo)的 mRNA 表達(dá)水平計(jì)算的罩阵。 因此竿秆,可以將 TF 活性視為給定轉(zhuǎn)錄狀態(tài)的代表 。

看一看代碼案例

安裝和加載
if (!requireNamespace("BiocManager", quietly = TRUE))
    install.packages("BiocManager")

BiocManager::install("dorothea")
## We load the required packages
library(dorothea)
library(dplyr)
library(Seurat)
library(tibble)
library(pheatmap)
library(tidyr)
library(viper)
讀取數(shù)據(jù)(以pbmc為例)
## Load the PBMC dataset
pbmc.data <- Read10X(data.dir = "filtered_gene_bc_matrices/hg19/")

## Initialize the Seurat object with the raw (non-normalized data).
pbmc <- CreateSeuratObject(counts = pbmc.data, project = "pbmc3k", 
                           min.cells = 3, min.features = 200)
前處理(可選稿壁,如果讀取的rds已經(jīng)做過(guò)處理幽钢,這一步就不需要了)
## Identification of mithocondrial genes
pbmc[["percent.mt"]] <- PercentageFeatureSet(pbmc, pattern = "^MT-")

## Filtering cells following standard QC criteria.
pbmc <- subset(pbmc, subset = nFeature_RNA > 200 & nFeature_RNA < 2500 & 
    percent.mt < 5)

## Normalizing the data
pbmc <- NormalizeData(pbmc, normalization.method = "LogNormalize", 
    scale.factor = 10000)

pbmc <- NormalizeData(pbmc)

## Identify the 2000 most highly variable genes
pbmc <- FindVariableFeatures(pbmc, selection.method = "vst", nfeatures = 2000)

## In addition we scale the data
all.genes <- rownames(pbmc)
pbmc <- ScaleData(pbmc, features = all.genes)
降維聚類(可選,Seurat的方法常摧,通常我們前面都已經(jīng)分析過(guò)了)
pbmc <- RunPCA(pbmc, features = VariableFeatures(object = pbmc), 
               verbose = FALSE)
pbmc <- FindNeighbors(pbmc, dims = 1:10, verbose = FALSE)
pbmc <- FindClusters(pbmc, resolution = 0.5, verbose = FALSE)
pbmc <- RunUMAP(pbmc, dims = 1:10, umap.method = "uwot", metric = "cosine")

pbmc.markers <- FindAllMarkers(pbmc, only.pos = TRUE, min.pct = 0.25, 
                               logfc.threshold = 0.25, verbose = FALSE)

## Assigning cell type identity to clusters
new.cluster.ids <- c("Naive CD4 T", "Memory CD4 T", "CD14+ Mono", "B", "CD8 T",
                     "FCGR3A+ Mono", "NK", "DC", "Platelet")
names(new.cluster.ids) <- levels(pbmc)
pbmc <- RenameIdents(pbmc, new.cluster.ids)
DimPlot(pbmc, reduction = "umap", label = TRUE, pt.size = 0.5) + NoLegend()
圖片.png
計(jì)算細(xì)胞的TF活性,案例中首先通過(guò)使用包裝函數(shù) run_viper() 在 DoRothEA 的regulons上運(yùn)行 VIPER 以獲得 TFs activity。 該函數(shù)可以處理不同的輸入類型威创,例如矩陣落午、數(shù)據(jù)框、表達(dá)式集甚至 Seurat 對(duì)象肚豺。 在 seurat 對(duì)象的情況下溃斋,該函數(shù)返回相同的 seurat 對(duì)象,其中包含一個(gè)名為 dorothea 的assay吸申,其中包含slot數(shù)據(jù)中的 TFs activity梗劫。
## We read Dorothea Regulons for Human:
dorothea_regulon_human <- get(data("dorothea_hs", package = "dorothea"))

## We obtain the regulons based on interactions with confidence level A, B and C
regulon <- dorothea_regulon_human %>%
    dplyr::filter(confidence %in% c("A","B","C"))

## We compute Viper Scores 
pbmc <- run_viper(pbmc, regulon,
                  options = list(method = "scale", minsize = 4, 
                                 eset.filter = FALSE, cores = 1, 
                                 verbose = FALSE))
然后我們應(yīng)用 Seurat 按照與上述相同的方法但使用 TFs activity分?jǐn)?shù)對(duì)細(xì)胞進(jìn)行聚類。
## We compute the Nearest Neighbours to perform cluster
DefaultAssay(object = pbmc) <- "dorothea"
pbmc <- ScaleData(pbmc)
pbmc <- RunPCA(pbmc, features = rownames(pbmc), verbose = FALSE)
pbmc <- FindNeighbors(pbmc, dims = 1:10, verbose = FALSE)
pbmc <- FindClusters(pbmc, resolution = 0.5, verbose = FALSE)

pbmc <- RunUMAP(pbmc, dims = 1:10, umap.method = "uwot", metric = "cosine")

pbmc.markers <- FindAllMarkers(pbmc, only.pos = TRUE, min.pct = 0.25, 
                               logfc.threshold = 0.25, verbose = FALSE)

## Assigning cell type identity to clusters
new.cluster.ids <- c("Naive CD4 T", "Memory CD4 T", "CD14+ Mono", "B", "CD8 T", 
                     "FCGR3A+ Mono", "NK", "DC", "Platelet")
names(new.cluster.ids) <- levels(pbmc)
pbmc <- RenameIdents(pbmc, new.cluster.ids)
DimPlot(pbmc, reduction = "umap", label = TRUE, pt.size = 0.5) + NoLegend()
圖片.png
每個(gè)細(xì)胞群的TF活性(相當(dāng)于每個(gè)細(xì)胞群的bulk RNAseq),根據(jù)先前計(jì)算的 DoRothEA regulons的 VIPER 分?jǐn)?shù)截碴,我們根據(jù)它們的TF activities來(lái)表征不同的細(xì)胞群梳侨。
## We transform Viper scores, scaled by seurat, into a data frame to better 
## handling the results
viper_scores_df <- GetAssayData(pbmc, slot = "scale.data", 
                                    assay = "dorothea") %>%
  data.frame(check.names = F) %>%
  t()

## We create a data frame containing the cells and their clusters
CellsClusters <- data.frame(cell = names(Idents(pbmc)), 
                            cell_type = as.character(Idents(pbmc)),
                            check.names = F)

## We create a data frame with the Viper score per cell and its clusters
viper_scores_clusters <- viper_scores_df  %>%
  data.frame() %>% 
  rownames_to_column("cell") %>%
  gather(tf, activity, -cell) %>%
  inner_join(CellsClusters)

## We summarize the Viper scores by cellpopulation
summarized_viper_scores <- viper_scores_clusters %>% 
  group_by(tf, cell_type) %>%
  summarise(avg = mean(activity),
            std = sd(activity))
選擇在細(xì)胞群間變化最大的20個(gè)TFs進(jìn)行可視化
## We select the 20 most variable TFs. (20*9 populations = 180)
highly_variable_tfs <- summarized_viper_scores %>%
  group_by(tf) %>%
  mutate(var = var(avg))  %>%
  ungroup() %>%
  top_n(180, var) %>%
  distinct(tf)

## We prepare the data for the plot
summarized_viper_scores_df <- summarized_viper_scores %>%
  semi_join(highly_variable_tfs, by = "tf") %>%
  dplyr::select(-std) %>%   
  spread(tf, avg) %>%
  data.frame(row.names = 1, check.names = FALSE) 
palette_length = 100
my_color = colorRampPalette(c("Darkblue", "white","red"))(palette_length)

my_breaks <- c(seq(min(summarized_viper_scores_df), 0, 
                   length.out=ceiling(palette_length/2) + 1),
               seq(max(summarized_viper_scores_df)/palette_length, 
                   max(summarized_viper_scores_df), 
                   length.out=floor(palette_length/2)))

viper_hmap <- pheatmap(t(summarized_viper_scores_df),fontsize=14, 
                       fontsize_row = 10, 
                       color=my_color, breaks = my_breaks, 
                       main = "DoRothEA (ABC)", angle_col = 45,
                       treeheight_col = 0,  border_color = NA) 
圖片.png

感覺(jué)還挺好,方便日丹,能說(shuō)明一些生物學(xué)的問(wèn)題

生活很好走哺,有你更好

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
禁止轉(zhuǎn)載,如需轉(zhuǎn)載請(qǐng)通過(guò)簡(jiǎn)信或評(píng)論聯(lián)系作者哲虾。
  • 序言:七十年代末丙躏,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子束凑,更是在濱河造成了極大的恐慌晒旅,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,013評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件汪诉,死亡現(xiàn)場(chǎng)離奇詭異废恋,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)扒寄,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,205評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門拴签,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人旗们,你說(shuō)我怎么就攤上這事蚓哩。” “怎么了上渴?”我有些...
    開(kāi)封第一講書人閱讀 152,370評(píng)論 0 342
  • 文/不壞的土叔 我叫張陵岸梨,是天一觀的道長(zhǎng)喜颁。 經(jīng)常有香客問(wèn)我,道長(zhǎng)曹阔,這世上最難降的妖魔是什么半开? 我笑而不...
    開(kāi)封第一講書人閱讀 55,168評(píng)論 1 278
  • 正文 為了忘掉前任,我火速辦了婚禮赃份,結(jié)果婚禮上寂拆,老公的妹妹穿的比我還像新娘。我一直安慰自己抓韩,他們只是感情好纠永,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,153評(píng)論 5 371
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著谒拴,像睡著了一般尝江。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上英上,一...
    開(kāi)封第一講書人閱讀 48,954評(píng)論 1 283
  • 那天炭序,我揣著相機(jī)與錄音,去河邊找鬼苍日。 笑死惭聂,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的相恃。 我是一名探鬼主播彼妻,決...
    沈念sama閱讀 38,271評(píng)論 3 399
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼豆茫!你這毒婦竟也來(lái)了侨歉?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書人閱讀 36,916評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤揩魂,失蹤者是張志新(化名)和其女友劉穎幽邓,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體火脉,經(jīng)...
    沈念sama閱讀 43,382評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡牵舵,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,877評(píng)論 2 323
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了倦挂。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片畸颅。...
    茶點(diǎn)故事閱讀 37,989評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖方援,靈堂內(nèi)的尸體忽然破棺而出没炒,到底是詐尸還是另有隱情,我是刑警寧澤犯戏,帶...
    沈念sama閱讀 33,624評(píng)論 4 322
  • 正文 年R本政府宣布送火,位于F島的核電站拳话,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏种吸。R本人自食惡果不足惜弃衍,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,209評(píng)論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望坚俗。 院中可真熱鬧镜盯,春花似錦、人聲如沸猖败。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 30,199評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)辙浑。三九已至激涤,卻和暖如春拟糕,著一層夾襖步出監(jiān)牢的瞬間判呕,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 31,418評(píng)論 1 260
  • 我被黑心中介騙來(lái)泰國(guó)打工送滞, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留侠草,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,401評(píng)論 2 352
  • 正文 我出身青樓犁嗅,卻偏偏與公主長(zhǎng)得像边涕,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子褂微,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,700評(píng)論 2 345

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