2023-05-21-單細胞 KEGG選取特定通路的基因集做GSVA分析

事先聲明弧呐,這是隨筆,著重記錄思路冒签、踩坑以及解決過程,以記錄自己的學習和之后可能需要復現(xiàn)钟病。

首先推薦閱讀幾篇教程萧恕,以了解需要做什么:

Pathway通路與GSEA基因集有何區(qū)別?

單細胞中應該如何做GSVA肠阱?

GSVA: gene set variation analysis-安裝

1.GSVA的安裝

我使用Bioconductor安裝票唆,非常方便。


2.獲取選定通路的基因集

(這里不確定自己使用的最簡單的方法屹徘,方法來自如下:

KEGG通路數(shù)據(jù)庫下載(人種)-BeeBee生信

這個代碼可以放心跑走趋,雖然看起來很長,但是用自己的電腦也可以跑通噪伊。有一步需要的時間比較長簿煌,耐心等待即可。解析如下:

2.1 首先需要下載兩個R包鉴吹,但通常情況下可能已經(jīng)裝載在R里面了啦吧,因此直接library一手先。沒有的話去裝包拙寡,都很好裝授滓。

 library(KEGGREST, quietly = TRUE)
 
 library(tidyverse, quietly = TRUE)

2.2 之后加載推文里的函數(shù)

 # keggGet(x)[[1]]$GENE 數(shù)據(jù)基因名是個向量,其中奇數(shù)位置是 entrezgene_id 偶數(shù)位置是 symbol
 
 geneEntrez <- function(x){
 
   geneList <- keggGet(x)[[1]]$GENE
 
   if(!is.null(geneList)){
 
     listLength <- length(geneList)
 
     entrezList <- geneList[seq.int(from = 1, by = 2, length.out = listLength/2)]
 
     entrez <- stringr::str_c(entrezList, collapse = ",")
 
     return(entrez)
 
   }else{
 
     return(NA)
 
   }
 
 }

keggGet(x)[[1]]$GENE 數(shù)據(jù)基因名是個向量肆糕,其中奇數(shù)位置是 entrezgene_id 偶數(shù)位置是 symbol

geneSymbol <- function(x){

  geneList <- keggGet(x)[[1]]$GENE

  if(!is.null(geneList)){

    listLength <- length(geneList)

    symbolList <- geneList[seq.int(from = 2, by = 2, length.out = listLength/2)] %% map_chr(symbolOnly)

    symbol <- stringr::str_c(symbolList, collapse = ",")

    return(symbol)

  }else{

    return("")

  }

}
 # 取得 hsaxxxxx 這種通路ID
 pathwayID <- function(x){
 
   items <- strsplit(x, ":", fixed = TRUE) %% unlist()
 
   return(items[2])
 
 }

2.3 正式獲取通路部分

建議從這里開始讀腳本般堆。建議自己在交互模式下試一下用到的KEGGREST函數(shù),看看返回數(shù)據(jù)的結(jié)構诚啃。

1.這是第一步淮摔,取得所有的KEGG通路列表

 hsaList <- keggList("pathway", "hsa")
 
 IDList <- names(hsaList) %% map_chr(pathwayID)

2. 將通路ID和通路名放在一個表格(tibble)里

 hsaPathway <- tibble::tibble(pathway_id=IDList, pathway_name=hsaList)
 
 head(hsaPathway, n=3) %% print()

3. 用前面定義函數(shù),獲得每個通路的基因始赎,然后也放在表格里

pathwayFull <- hsaPathway %% dplyr::mutate(entrezgene_id=map_chr(pathway_id, geneEntrez), hgnc_symbol=map_chr(pathway_id, geneSymbol))

4.查看數(shù)據(jù)維度

dim(pathwayFull) %% print()

5.會有通路沒有基因和橙,我的話只需要有基因的仔燕,所以把無基因的移除

pathwayWithGene <- dplyr::filter(pathwayFull, !is.na(entrezgene_id) & hgnc_symbol != "")

write_tsv(pathwayWithGene, path="KEGGREST_WithGene.tsv")

dim(pathwayWithGene) %% print()

所以最后得到的應該是pathwayWithGene這個變量!


3. 選定需要的通路魔招,輸入關鍵字晰搀,記錄下pathway_id

3.1 View(pathwayWithGene) 內(nèi)容如下

image

3.2 選取自己需要的通路成為新的變量

例如:c("hsa04350", "hsa04310", "hsa04014", "hsa04390", "hsa04330","hsa04110","hsa04151","hsa04115"),輸入代碼:

 pathwayWithGene_select <- pathwayWithGene[c("hsa04350", "hsa04310",
 "hsa04014", "hsa04390", "hsa04330","hsa04110","hsa04151","hsa04115"),]
image

3.3 將通路寫成gsva函數(shù)所需要的列表形式

 genelist <- list()
 
 for (i in seq(length(unique(pathwayWithGene_select$pathway_id)))){
 
   genelist[i] <- pathwayWithGene_select$hgnc_symbol[i]
 
 }
 
 names(genelist) <- paste0("gs",c(1:length(unique(pathwayWithGene_select$pathway_id))))
 
 save(genelist, file = "./genelist.RData")

結(jié)果如下:

image

到這里办斑,已經(jīng)完成了一半的工作外恕,但是這個還是不能用,因為參照正常的數(shù)據(jù)集是這樣的:

image

因此需要對我們的基因集進行改造:

一行函數(shù)輕松搞定乡翅,比較吃基本功!

genelist_2 <- lapply(genelist,function(x) unlist(strsplit(x,split = ",")))
image

4. 進行GSVA分析

4.1 首先取單細胞的表達量數(shù)據(jù)集

一定要是matrix格式的鳞疲!

 gene.expr <- as.matrix(sce_cnv[["RNA"]]@data)

進行分析

gsva.result <- GSVA::gsva(gene.expr, genelist_2,kcdf='Gaussian')

首先轉(zhuǎn)換為數(shù)據(jù)框格式,之后保存結(jié)果

 gsva.result_df <- as.data.frame(gsva.result)
 
 save(gsva.result_df,file = "./gsva.result_df.RData")

4.2 可以對GSVA Score進行做熱圖等相關分析

……

?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末蠕蚜,一起剝皮案震驚了整個濱河市尚洽,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌靶累,老刑警劉巖腺毫,帶你破解...
    沈念sama閱讀 217,277評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異尺铣,居然都是意外死亡拴曲,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,689評論 3 393
  • 文/潘曉璐 我一進店門凛忿,熙熙樓的掌柜王于貴愁眉苦臉地迎上來澈灼,“玉大人,你說我怎么就攤上這事店溢∪郏” “怎么了?”我有些...
    開封第一講書人閱讀 163,624評論 0 353
  • 文/不壞的土叔 我叫張陵床牧,是天一觀的道長荣回。 經(jīng)常有香客問我,道長戈咳,這世上最難降的妖魔是什么心软? 我笑而不...
    開封第一講書人閱讀 58,356評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮著蛙,結(jié)果婚禮上删铃,老公的妹妹穿的比我還像新娘。我一直安慰自己踏堡,他們只是感情好猎唁,可當我...
    茶點故事閱讀 67,402評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著顷蟆,像睡著了一般诫隅。 火紅的嫁衣襯著肌膚如雪腐魂。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,292評論 1 301
  • 那天逐纬,我揣著相機與錄音蛔屹,去河邊找鬼。 笑死风题,一個胖子當著我的面吹牛判导,可吹牛的內(nèi)容都是我干的嫉父。 我是一名探鬼主播沛硅,決...
    沈念sama閱讀 40,135評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼绕辖!你這毒婦竟也來了摇肌?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,992評論 0 275
  • 序言:老撾萬榮一對情侶失蹤仪际,失蹤者是張志新(化名)和其女友劉穎围小,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體树碱,經(jīng)...
    沈念sama閱讀 45,429評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡肯适,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,636評論 3 334
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了成榜。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片框舔。...
    茶點故事閱讀 39,785評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖赎婚,靈堂內(nèi)的尸體忽然破棺而出刘绣,到底是詐尸還是另有隱情,我是刑警寧澤挣输,帶...
    沈念sama閱讀 35,492評論 5 345
  • 正文 年R本政府宣布纬凤,位于F島的核電站,受9級特大地震影響撩嚼,放射性物質(zhì)發(fā)生泄漏停士。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,092評論 3 328
  • 文/蒙蒙 一完丽、第九天 我趴在偏房一處隱蔽的房頂上張望恋技。 院中可真熱鬧,春花似錦舰涌、人聲如沸猖任。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,723評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽朱躺。三九已至刁赖,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間长搀,已是汗流浹背宇弛。 一陣腳步聲響...
    開封第一講書人閱讀 32,858評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留源请,地道東北人枪芒。 一個月前我還...
    沈念sama閱讀 47,891評論 2 370
  • 正文 我出身青樓,卻偏偏與公主長得像谁尸,于是被迫代替她去往敵國和親舅踪。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,713評論 2 354

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