DoRothEA:scRNAseq轉(zhuǎn)錄因子活性預測工具

在看文獻Single-cell RNA sequencing of blood antigen-presenting cells in severe COVID-19 reveals multi-process defects in antiviral immunity的時候看到一個沒用過的轉(zhuǎn)錄因子預測方法DoRothEA滋饲。

Fig.6b, Heatmap of top 50 highly variable TF activities among the three severity groups; the z-scores of TF activities are colour-coded

官網(wǎng):https://bioconductor.org/packages/release/data/experiment/vignettes/dorothea/inst/doc/single_cell_vignette.html

DoRothEA是一種包含轉(zhuǎn)錄因子(TF)與其靶標相互作用的基因集。一個TF及其對應靶點的集合被定義為調(diào)節(jié)子(regulons)劫乱。DoRothEA regulons 收集了文獻膊畴,ChIP-seq peaks掘猿,TF結(jié)合位點基序,從基因表達推斷相互作用等不同類型的互作證據(jù)唇跨。TF和靶標之間的互作可信度根據(jù)支持的證據(jù)數(shù)量劃分為A-E五個等級稠通,A是最可信,E為可信度低买猖。
DoRothEA可以用于bulk RNAseq和scRNAseq的數(shù)據(jù)改橘。
DoRothEA regulon可以與幾種統(tǒng)計方法結(jié)合使用,從而產(chǎn)生一種功能分析工具玉控,以從基因表達數(shù)據(jù)推斷TF活性飞主。通過不考慮TF本身的基因表達,而是考慮其直接轉(zhuǎn)錄靶標的mRNA水平來計算活性高诺。

R包安裝和載入

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)

導入注釋好的pbmc數(shù)據(jù)集

pbmc <- readRDS("pbmc.rds")
DimPlot(pbmc,label = T,repel = T)

計算細胞的TF活性

## We read Dorothea Regulons for Human:
dorothea_regulon_human <- get(data("dorothea_hs", package = "dorothea"))
##如果是小鼠碌识,就用
##dorothea_regulon_mouse <- get(data("dorothea_mm", 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))

這一步之后,assays中除了"RNA"以外懒叛,多了一個"dorothea"丸冕。

266x2638的矩陣是266個TFx2638個細胞

隨后可以用TFx細胞的矩陣對細胞進行重新聚類,方法和用GENEx細胞的矩陣做聚類一樣薛窥。

## 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()
轉(zhuǎn)錄因子的聚類圖

每個細胞群的TF活性(相當于每個細胞群的bulk RNAseq)

## 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))

根據(jù)前一步計算的score胖烛,選擇在細胞群間變化最大的20個TFs進行可視化

## 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) 
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
禁止轉(zhuǎn)載,如需轉(zhuǎn)載請通過簡信或評論聯(lián)系作者诅迷。
  • 序言:七十年代末佩番,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子罢杉,更是在濱河造成了極大的恐慌趟畏,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,013評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件滩租,死亡現(xiàn)場離奇詭異赋秀,居然都是意外死亡,警方通過查閱死者的電腦和手機律想,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,205評論 2 382
  • 文/潘曉璐 我一進店門猎莲,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人技即,你說我怎么就攤上這事著洼。” “怎么了?”我有些...
    開封第一講書人閱讀 152,370評論 0 342
  • 文/不壞的土叔 我叫張陵身笤,是天一觀的道長豹悬。 經(jīng)常有香客問我,道長液荸,這世上最難降的妖魔是什么瞻佛? 我笑而不...
    開封第一講書人閱讀 55,168評論 1 278
  • 正文 為了忘掉前任,我火速辦了婚禮莹弊,結(jié)果婚禮上涤久,老公的妹妹穿的比我還像新娘。我一直安慰自己忍弛,他們只是感情好,可當我...
    茶點故事閱讀 64,153評論 5 371
  • 文/花漫 我一把揭開白布考抄。 她就那樣靜靜地躺著细疚,像睡著了一般。 火紅的嫁衣襯著肌膚如雪川梅。 梳的紋絲不亂的頭發(fā)上疯兼,一...
    開封第一講書人閱讀 48,954評論 1 283
  • 那天,我揣著相機與錄音贫途,去河邊找鬼吧彪。 笑死,一個胖子當著我的面吹牛丢早,可吹牛的內(nèi)容都是我干的姨裸。 我是一名探鬼主播,決...
    沈念sama閱讀 38,271評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼怨酝,長吁一口氣:“原來是場噩夢啊……” “哼傀缩!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起农猬,我...
    開封第一講書人閱讀 36,916評論 0 259
  • 序言:老撾萬榮一對情侶失蹤赡艰,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后斤葱,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體慷垮,經(jīng)...
    沈念sama閱讀 43,382評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,877評論 2 323
  • 正文 我和宋清朗相戀三年揍堕,在試婚紗的時候發(fā)現(xiàn)自己被綠了料身。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 37,989評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡鹤啡,死狀恐怖惯驼,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤祟牲,帶...
    沈念sama閱讀 33,624評論 4 322
  • 正文 年R本政府宣布隙畜,位于F島的核電站,受9級特大地震影響说贝,放射性物質(zhì)發(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

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