GEO常用代码片段

芯片数据质控

1.前后对比箱线图

## --------------------------------------------数据检验和聚类------------------------------
exprSet_L <- melt(exprSet)
colnames(exprSet_L) <- c("sample", "value")
exprSet_L$group <- rep(pdata$group, each = nrow(exprSet))

exprSet_L[1:10, ]
## 箱线图
p21 <- ggplot(exprSet_L, aes(x = sample, y = value, fill = group)) +
  geom_boxplot() +
  theme(
    axis.title.x = element_text(face = "italic"),
    axis.text.x = element_text(angle = 45, vjust = 0.5),
    legend.position = "top"
  )
p21 # 数据不太规整
# #ggsave(p21,filename = ".\\plots\\bar_before.pdf",width = 18,height = 9,units = "cm")
# ##标准化后再图
# exprSet_1 <- normalizeBetweenArrays(exprSet) %>% data.frame()
# exprSet_L <- melt(exprSet_1)
# colnames(exprSet_L) = c('sample','value')
# exprSet_L$group = rep(group_info$group,each = nrow(exprSet))
# p22 <-  ggplot(exprSet_L,aes(x = sample, y = value,fill = group)) +geom_boxplot()+
#   theme(axis.title.x  = element_text(face = 'italic'),
#         axis.text.x =  element_text(angle = 45 , vjust = 0.5),
#         legend.position = 0)
# p22            #表准化后规整多了,但知道效果咋样
#
# plot_qc <- plot_grid(p21,p22,labels = "AUTO",nrow = 2)
#
# ggsave(plot_qc,filename = ".\\plots\\plot_qc.pdf",width = 18,height = 18,units = "cm")

# 把标准化后的数据赋值给原始数据,暂时不做
# exprSet <- exprSet_1

2.提琴图

## 小提琴图
# p1 <-  ggplot(exprSet_L,aes(x = sample, y = value,fill = group)) +geom_violin()
# p1

3.密度图

## 密度图
# p3 <-  ggplot(exprSet_L,aes(value,col=group)) +geom_density() + facet_wrap(~sample,nrow = 2)
# print(p3)

4.聚类图1

## hclust聚类图
colnames(exprSet) <- paste(pdata$title1, sep = "")    ## 样本名称改变
# hc <- hclust(dist(t(exprSet)))                      #hclust需要用plot画图,此例不用
dist.r <- dist(t(exprSet))
res <- hcut(dist.r, k = 2, stand = TRUE)
# Visualize
cluster_unbatch <- fviz_dend(res,
                             # 加边框
                             rect = TRUE,
                             # 边框颜色
                             rect_border = "cluster",
                             # 边框线条类型
                             rect_lty = 2,
                             # 边框线条粗细
                             lwd = 1.2,
                             # 边框填充
                             rect_fill = T,
                             # 字体大小
                             cex = 0.8,
                             # 字体颜色
                             color_labels_by_k = T,
                             # 平行放置
                             horiz = T,
                             k_colors = "lancet",      #指定色板
                             labels_track_height = 7,
                             main = element_blank()
)+theme(text = element_text(size = 8))
cluster_unbatch
# 数据不可用,需要校正批次效应
# 把样本名改回来
colnames(exprSet) <- pdata$geo_accession

5.PCA图1

# 画主成分分析图需要加载这两个包
library(FactoMineR)
library(factoextra)
# pca
dat.pca <- PCA(as.data.frame(t(exprSet)), graph = FALSE)
pca_plot1 <- fviz_pca_ind(dat.pca,
  geom.ind = "point", # show points only (nbut not "text")
  col.ind = group_list, # color by groups
  # palette = c("#00AFBB", "#E7B800"),  #修改颜色
  addEllipses = TRUE, # Concentration ellipses
  # legend.title = "GROUP"
) + theme(
  legend.position = c(0.80, 1),
  text = element_text(size = 8),
  legend.key.size = unit(3, "mm"),
  legend.title = element_blank()
)
pca_plot1

6.处理批次效应

library(sva)
model <- model.matrix(~ as.factor(pdata$group))    # "group"为分组所在列,pdata是表型文件(元数据)
### 重点来了!!!
### 重点来了!!!
### 重点来了!!!
# 方法一(ComBat)
combat_edata <- ComBat(dat = exprSet, batch = pdata$batch, mod = model) # exprSet是表达矩阵,batch是批次信息列,在表型文件里,下同
# 使用sva包中的combat函数!
# 依次是什么数据、批次来自于哪、想保留什么信息

7.再次查看聚类图

# 再次聚类查看
colnames(combat_edata) <- paste(pdata$title1, sep = "") ## 样本名称再次改变
hc <- hclust(dist(t(combat_edata)))
dist.r <- dist(t(combat_edata))
res <- hcut(dist.r, k = 2, stand = TRUE)
# Visualize
cluster_batched <- fviz_dend(res,
                             # 加边框
                             rect = TRUE,
                             # 边框颜色
                             rect_border = "cluster",
                             # 边框线条类型
                             rect_lty = 2,
                             # 边框线条粗细
                             lwd = 1.2,
                             # 边框填充
                             rect_fill = T,
                             # 字体大小
                             cex = 0.8,
                             # 字体颜色
                             color_labels_by_k = T,
                             # 平行放置
                             horiz = T,
                             k_colors = "lancet",      #指定色板
                             labels_track_height = 7,
                             main = element_blank()
)+theme(text = element_text(size = 8))
cluster_batched
plot_batch <- plot_grid(cluster_unbatch,cluster_batched,labels = "AUTO",label_size = 10)
ggsave(plot_batch,filename = ".\\plots\\cluster_batched.pdf",width = 180,height = 89,units = "mm")

8.再次作图PCA

# pca
dat.pca <- PCA(as.data.frame(t(combat_edata)), graph = FALSE)
pca_plot2 <- fviz_pca_ind(dat.pca,
  geom.ind = "point", # show points only (nbut not "text")
  col.ind = group_list, # color by groups
  # palette = c("#00AFBB", "#E7B800"),  #修改颜色
  addEllipses = TRUE, # Concentration ellipses
  # legend.title = "GROUP"
) + theme(
  legend.position = c(0.80, 1),
  text = element_text(size = 8),
  legend.key.size = unit(3, "mm"),
  legend.title = element_blank()
)
pca_plot2
plot_batch <- plot_grid(pca_plot1,pca_plot2,labels = "AUTO",label_size = 10)
ggsave(plot_batch,filename = ".\\plots\\pca_batched.pdf",width = 180,height = 89,units = "mm")

9.后续处理

# 把校正批次效应后的文件赋给表达矩阵
exprSet <- combat_edata %>% data.frame()
# 再次改回样本名
colnames(exprSet) <- pdata$geo_accession
# 这样写就行,不用加其他参数,供CIBERSORT使用,生成TXT后需要到文件里把第一行向后tab一下,否则报错。
write.table(exprSet,paste0(".\\data\\",gse_id,"_exprset_to_cibersort.txt"),row.names = T,quote = F,sep = "\t")

质控处理完毕,准备差异表达分析。

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

推荐阅读更多精彩内容