跟着Cell学单细胞转录组分析(十三):单细胞GSVA分析|这个包涵盖大多数物种

之前我们发过GSVA分析(有了这个包,猪的GSEA和GSVA分析也不在话下(第一集)【后续来了】有了这个包,猪的GSEA和GSVA分析也不在话下(第二集)),接着单细胞系列,重新说一下GSVA分析。

首先是数据集的问题,通常只做人和小鼠的,想要做其他物种的,苦于没有数据集,不过这里说的这个包,即使猪的GSVA分析也都可以做。

这里我们以小鼠为示例,也是常见物种的GSVA分析,结合单细胞的数据!GSVA其实就是对功能富集的量化,然后进行差异分析,寻找感兴趣的通路在样本中的变化。不同于常规的GO、KEGG受差异基因阈值的影响,GSEA受实验分组的影响,GSVA能够对通路量化,看感兴趣通路在多组之间的变化!

首先加载和安装必要的包并加载单细胞数据。

library(Seurat)
#source("http://bioconductor.org/biocLite.R")
#biocLite("GSVA")
library(GSVA)
library(tidyverse)
library(ggplot2)
library(clusterProfiler)
library(org.Mm.eg.db)
library(dplyr)

immuneT <- subset(immune, celltype=="T cells")#提取我们需要分析的细胞类型
immuneT <- as.matrix(immuneT@assays$RNA@counts)#提取count矩阵
meta <- immuneT@meta.data[,c("orig.ident", "sex", "age", "stim", "samples")]#分组信息,为了后续作图

之前一直苦于MSigDB数据库只有人的数据集,没有小鼠和其他物种的,网上也有教程如何根据基因同源性进行转化的,但是很麻烦,也不一定成功。还好有一个新的数据包被发现了,简直是福音---msigdbr包,可以做GSEA和GSVA。


#install.packages("msigdbr")
library(msigdbr)
msigdbr_species() #可以看到,这个包涵盖了20个物种
# A tibble: 20 x 2
   species_name                 species_common_name                                   
   <chr>                        <chr>                                                 
 1 Anolis carolinensis          Carolina anole, green anole                           
 2 Bos taurus                   bovine, cattle, cow, dairy cow, domestic cattle, dome~
 3 Caenorhabditis elegans       roundworm                                             
 4 Canis lupus familiaris       dog, dogs                                             
 5 Danio rerio                  leopard danio, zebra danio, zebra fish, zebrafish     
 6 Drosophila melanogaster      fruit fly                                             
 7 Equus caballus               domestic horse, equine, horse                         
 8 Felis catus                  cat, cats, domestic cat                               
 9 Gallus gallus                bantam, chicken, chickens, Gallus domesticus          
10 Homo sapiens                 human                                                 
11 Macaca mulatta               rhesus macaque, rhesus macaques, Rhesus monkey, rhesu~
12 Monodelphis domestica        gray short-tailed opossum                             
13 Mus musculus                 house mouse, mouse                                    
14 Ornithorhynchus anatinus     duck-billed platypus, duckbill platypus, platypus     
15 Pan troglodytes              chimpanzee                                            
16 Rattus norvegicus            brown rat, Norway rat, rat, rats                      
17 Saccharomyces cerevisiae     baker's yeast, brewer's yeast, S. cerevisiae          
18 Schizosaccharomyces pombe 9~ NA                                                    
19 Sus scrofa                   pig, pigs, swine, wild boar                           
20 Xenopus tropicalis           tropical clawed frog, western clawed frog    
查看下小鼠的基因集,是否与MSigDB数据库一样

mouse <- msigdbr(species = "Mus musculus")
mouse[1:5,1:5]
# A tibble: 5 x 5
  gs_cat gs_subcat      gs_name        gene_symbol entrez_gene
  <chr>  <chr>          <chr>          <chr>             <int>
1 C3     MIR:MIR_Legacy AAACCAC_MIR140 Abcc4            239273
2 C3     MIR:MIR_Legacy AAACCAC_MIR140 Abraxas2         109359
3 C3     MIR:MIR_Legacy AAACCAC_MIR140 Actn4             60595
4 C3     MIR:MIR_Legacy AAACCAC_MIR140 Acvr1             11477
5 C3     MIR:MIR_Legacy AAACCAC_MIR140 Adam9             11502
table(mouse$gs_cat) #查看目录,与MSigDB一样,包含9个数据集
###C1      C2      C3      C4      C5      C6      C7      C8       H 
  20049  533767  795972   92353 1248327   30556  988358  109328    7411

本例中,我们要分析GO,因为mouse文件包含了所有的基因集,所以要查看GO在哪里,然后将需要的文件提出来。

table(mouse$gs_subcat)
  CGN             CGP              CM              CP 
         167344           42770          376981           49583            3881 
    CP:BIOCARTA         CP:KEGG          CP:PID     CP:REACTOME CP:WIKIPATHWAYS 
           4860           13694            8196           98232           27923 
          GO:BP           GO:CC           GO:MF             HPO     IMMUNESIGDB 
         660368          100991          105717          381251          944068 
 MIR:MIR_Legacy       MIR:MIRDB        TFT:GTRD  TFT:TFT_Legacy             VAX 
          34118          372658          235886          153310           44290 
mouse_GO_bp = msigdbr(species = "Mus musculus",
                      category = "C5", #GO在C5
                      subcategory = "GO:BP") %>% 
                      dplyr::select(gs_name,gene_symbol)#这里可以选择gene symbol,也可以选择ID,根据自己数据需求来,主要为了方便
mouse_GO_bp_Set = mouse_GO_bp %>% split(x = .$gene_symbol, f = .$gs_name)#后续gsva要求是list,所以将他转化为list

表达矩阵数据有了,通路信息有了,就可以进行GEVA分析了,代码简单就一句!保存结果!

T_gsva <- gsva(expr = immuneT, 
                gset.idx.list = mouse_GO_bp_Set,
                kcdf="Poisson", #查看帮助函数选择合适的kcdf方法 
                parallel.sz = 5)

write.table(T_gsva, 'T_gsva.xls', row.names=T, col.names=NA, sep="\t")

接着差异分析可以用limma包,类似于转录组芯片数据分析流程。

group <- c(rep("control", 50), rep("test", 71)) %>% as.factor()#设置分组,对照在前
desigN <- model.matrix(~ 0 + group) #构建比较矩阵
colnames(desigN) <- levels(group)
fit = lmFit(test_control, desigN)
fit2 <- eBayes(fit)
diff=topTable(fit2,adjust='fdr',coef=2,number=Inf)#校准按照需求修改 ?topTable
write.csv(diff, file = "Diff.csv")

最后对差异的感兴趣的通路进行可视化:



up <- c("GOBP_EGG_ACTIVATION",
        "GOBP_TENDON_DEVELOPMENT",
        "GOBP_SOMITE_SPECIFICATION",
        "GOBP_THREONINE_CATABOLIC_PROCESS",
        "GOBP_REGULATION_OF_GLUTAMATE_RECEPTOR_CLUSTERING",
        "GOBP_NEGATIVE_CHEMOTAXIS",
        "GOBP_NEGATIVE_REGULATION_OF_FAT_CELL_PROLIFERATION",
        "GOBP_REGULATION_OF_T_HELPER_17_CELL_LINEAGE_COMMITMENT",
        "GOBP_REGULATION_OF_ANTIMICROBIAL_HUMORAL_RESPONSE")
down <- c("GOBP_DETERMINATION_OF_PANCREATIC_LEFT_RIGHT_ASYMMETRY",
          "GOBP_MITOTIC_DNA_REPLICATION",
          "GOBP_EOSINOPHIL_CHEMOTAXIS",
          "GOBP_NEUTROPHIL_MEDIATED_CYTOTOXICITY",
          "GOBP_POTASSIUM_ION_EXPORT_ACROSS_PLASMA_MEMBRANE",
          "GOBP_REGULATION_OF_LEUKOCYTE_MEDIATED_CYTOTOXICITY",
          "GOBP_REGULATION_OF_SEQUESTERING_OF_ZINC_ION",
          "GOBP_ENDOTHELIN_RECEPTOR_SIGNALING_PATHWAY",
          "GOBP_PRE_REPLICATIVE_COMPLEX_ASSEMBLY_INVOLVED_IN_CELL_CYCLE_DNA_REPLICATION",
          "GOBP_ESTABLISHMENT_OF_PLANAR_POLARITY_OF_EMBRYONIC_EPITHELIUM")
TEST <- c(up,down)
diff$ID <- rownames(diff) 
Q <- diff[TEST,]
group1 <- c(rep("treat", 9), rep("control", 10)) 
df <- data.frame(ID = Q$ID, score = Q$t,group=group1 )
# 按照t score排序
sortdf <- df[order(df$score),]
sortdf$ID <- factor(sortdf$ID, levels = sortdf$ID)#增加通路ID那一列

ggplot(sortdf, aes(ID, score,fill=group)) + geom_bar(stat = 'identity',alpha = 0.7) + 
  coord_flip() + 
  theme_bw() + #去除背景色
  theme(panel.grid =element_blank())+
  theme(panel.border = element_rect(size = 0.6))+
  labs(x = "",
       y="t value of GSVA score")+
  scale_fill_manual(values = c("#008020","#08519C"))#设置颜色
image.png

整个流程就结束了,希望对你们的研究能有启发,GO、KEGG做多了,可以换着做一下GSVA分析!

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 205,236评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,867评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,715评论 0 340
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,899评论 1 278
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,895评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,733评论 1 283
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,085评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,722评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,025评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,696评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,816评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,447评论 4 322
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,057评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,009评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,254评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,204评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,561评论 2 343

推荐阅读更多精彩内容