我完善了那个R包,可以简化多组的差异分析啦
测试开头


image.png

测试结尾
今天是生信星球陪你的第652天
大神一句话,菜鸟跑半年。我不是大神,但我可以缩短你走弯路的半年~
就像歌儿唱的那样,如果你不知道该往哪儿走,就留在这学点生信好不好~
这里有豆豆和花花的学习历程,从新手到进阶,生信路上有你有我!
0.R包安装和准备
rm(list = ls())
options(stringsAsFactors = F)
if(!require(tinyarray))devtools::install_github("xjsun1221/tinyarray")
if(!require(AnnoProbe))devtools::install_github("jmzeng1314/AnnoProbe")
library(stringr)
library(AnnoProbe)
library(ggplot2)
library(tinyarray)
1.数据下载和分组生成
这里只是举个芯片多分组数据处理栗子,基本上忽略了数据的背景意义,将A组和其他组作比较。
gse = "GSE32575"
geo = geo_download(gse)
geo$exp[1:4,1:4]
## GSM807339 GSM807340 GSM807341 GSM807342
## ILMN_1343289 19525.4400 20503.6100 18821.2200 17943.6300
## ILMN_1343290 20599.1000 21696.7000 16206.9200 18101.9800
## ILMN_1343291 25829.9200 24742.1800 23758.1200 24592.3600
## ILMN_1343292 383.6296 353.3019 303.2715 375.0452
geo$exp=log2(geo$exp+1)
library(dplyr)
pd = geo$pd
identical(rownames(pd),colnames(geo$exp))
## [1] TRUE
group_list = case_when(str_detect(pd$title,"lean_rep")~"A",
str_detect(pd$title,"lean_pool")~"B",
str_detect(pd$title,"obese_before")~"C",
str_detect(pd$title,"obese_after")~"D")
group_list=factor(group_list,levels = c("A","B","C","D"))
2.获取探针注释,进行差异分析
multi_deg_all目前可以完成3、4、5组数据数据的两两差异分析了,返回的dcp里有三个东西:差异分析结果表格,差异基因组成的列表以及可视化
find_anno(geo$gpl,install = T)
## [1] "`ids <- toTable(illuminaHumanv2SYMBOL)` and `ids <- AnnoProbe::idmap('GPL6102')` are both avaliable"
ids <- toTable(illuminaHumanv2SYMBOL)
dcp = multi_deg_all(geo$exp,group_list,ids,adjust = F)
## 'select()' returned 1:many mapping between keys and columns
## 'select()' returned 1:many mapping between keys and columns
## 'select()' returned 1:many mapping between keys and columns
## [1] "26 DEGs in all,0 DEGs in common."
names(dcp)
## [1] "deg" "cgs" "plots"
cgs = dcp[[2]]
dcp[[3]]

忽略有些图的统计学意义太差,我这里只拿他当个例子说一下,数据换了图就好看啦。
3.简易一点的富集分析
目前这个简易的富集分析,只支持人类的,其他物种数据库怎么添加我还没研究。。。
#如果想使用交集就把union_all换成intersect_all
cg <- union_all(
cgs[[1]]$diff$diffgenes,
cgs[[2]]$diff$diffgenes,
cgs[[3]]$diff$diffgenes
)
en = quick_enrich(cg)
## Warning in quick_enrich(cg): NAs introduced by coercion
## 'select()' returned 1:1 mapping between keys and columns
## wrong orderBy parameter; set to default `orderBy = "x"`
## wrong orderBy parameter; set to default `orderBy = "x"`
#enrich会提示引入NA 这个可以忽略。但如果出现了error 可能是因为富集不到任何东西,或者网络有问题。
en[[3]]

en[[4]]

这里的en变量里面包括两个富集分析结果和两个点图~再次重申我写这个只是为了提高效率减少一些代码的复制粘贴,有什么建议的话可以发邮件给我~
插个小广告!
答疑公告:生信星球答疑公告-2020年全年有效
请关注“恒诺新知”微信公众号,感谢“R语言“,”数据那些事儿“,”老俊俊的生信笔记“,”冷🈚️思“,“珞珈R”,“生信星球”的支持!