GEO数据挖掘-第四期-肝细胞癌(HCC)

文章来源:生信技能树
原文:GEO数据挖掘-第四期-肝细胞癌(HCC)

疾病背景

肝细胞癌(HCC),起源于肝细胞,是全球第七大常见癌症。

每年全球约诊断HCC病例50万例,约占所有癌症病例的5.4%,每年因肝细胞癌而死亡得人数约70万人。

绝大多数HCC发生在亚洲和撒哈拉以南非洲,美国和其他发展中国家的HCC发病率正在上升。

GEO数据框:GSE54238

◎ 10个正常样本          (NL)

◎ 10个慢性肝炎          (IL)

◎ 10个肝硬化              (CL)

◎ 13个早期肝细胞癌   (eHCC)

◎ 13个晚期肝细胞癌   (aHCC) 

****■ ■ ■****

这一期还是WGCNA。。。。。。

rm( list = ls() )load( './gset.Rdata' )load('./exprSet_for_WGCNA.Rdata')options( stringsAsFactors = F )

◎ gset包含原始数据

◎ exprSet是已经处理并注释好的数据集

第一步 准备样本表型数据和数据集

library( "GEOquery" )## 取表达矩阵和样本信息表{  gset = gset[[1]]  pdata = pData( gset )}colnames(pdata)hclust_table = pdata[,38:42]colnames(hclust_table) = c("age", "condition", "gender", "hbeag", "hbsag")hclust_table[hclust_table$gender=="M", 3] = 1## 这样就得到了一个样本特性的数据框##            age    condition gender    hbeag    hbsag## GSM1310758  44 normal liver      1 Negative Negative## GSM1310759  41 normal liver      1 Negative Negative## GSM1310760  49 normal liver      1 Negative Negative
exprSet[1:5,1:5]##              GSM1310758 GSM1310759 GSM1310760 GSM1310761 GSM1310762## FAM138C        6.944570   6.248560   7.526373   8.255203   8.717276## FLJ39609       6.594915   6.269244   6.801226   6.705848   6.784622## LOC100128842   9.240880   9.793829   9.232292   8.533079   8.549601## LOC148413     10.696339  10.126397  10.274773   9.017882   8.310329## LOC100128003   7.156712   8.209122   7.413724   6.254033   6.980212group_list = as.character( pdata[, 8] )table( group_list )## advanced HCC   chronic inflammatory liver   cirrhotic livers##           13                           10                 10## early HCC    normal liver ##        13              10colnames( exprSet ) = paste( group_list, 1:ncol( exprSet ), sep = '_' )exprSet[1:5,1:5]##              normal liver_1 normal liver_2 normal liver_3 normal liver_4## FAM138C            6.944570       6.248560       7.526373       8.255203## FLJ39609           6.594915       6.269244       6.801226       6.705848## LOC100128842       9.240880       9.793829       9.232292       8.533079## LOC148413         10.696339      10.126397      10.274773       9.017882## LOC100128003       7.156712       8.209122       7.413724       6.254033# 计算数据集的每个基因的平均绝对离差,取排在前面最大的5000个基因。datExpr = t(exprSet[order(apply(exprSet,1,mad), decreasing = T)[1:5000],])# 上面这步实际就是把一个基因在个样本间表达变化最大的基因跳出来,继续下面的分析dim( datExpr )# [1]   56 5000## 接下来就是对这56个样本的5000个基因做分析

第二步 绘制进化树

library("WGCNA"){  # 样本信息不同特征值赋予不同的颜色  status_colors <- numbers2colors(as.numeric(factor(hclust_table$condition)),                                   colors = c("red","white","pink"),signed = FALSE)  age_colors <- numbers2colors(as.numeric(factor(hclust_table$age)),                                colors = c("red","white","pink"),signed = FALSE)  sex_colors[,1] <- rep( 'white', 56 )  hbeag_colors <- numbers2colors(as.numeric(factor(hclust_table$hbeag)),                                colors = c("red","white"),signed = FALSE)  hbsag_colors <- numbers2colors(as.numeric(factor(hclust_table$hbsag)),                                colors = c("red","white"),signed = FALSE)  par(mar = c(1,4,3,1),cex=0.8)  plotDendroAndColors(datExpr_tree, cbind(status_colors, age_colors, sex_colors, hbeag_colors, hbsag_colors),                      groupLabels = colnames(hclust_table),                      cex.dendroLabels = 0.8,                      marAll = c(1, 4, 3, 1),                      cex.rowText = 0.01,                      main = "Sample dendrogram and trait heatmap")}
image

第三步 确定软阀值

powers = c( c(1:10), seq(12, 20, by = 2) )## [1]  1  2  3  4  5  6  7  8  9 10 12 14 16 18 20sft = pickSoftThreshold(datExpr, powerVector = powers, verbose = 0)str(sft)par(mfrow = c(1,2))cex1 = 0.9## 两种方法挑选软阀值# Scale independenceplot(sft$fitIndices$Power,     -sign(sft$fitIndices$slope) * sft$fitIndices$SFT.R.sq,     xlab="Soft Threshold (power)",     ylab="Scale Free Topology Model Fit,signed R^2",     type="n",      main = paste("Scale independence"))text(sft$fitIndices$Power,     -sign(sft$fitIndices$slope) * sft$fitIndices$SFT.R.sq,     labels=powers,     cex=cex1,     col="red")abline(h=0.85,col="RED")# Mean connectivityplot(sft$fitIndices$Power,     sft$fitIndices$mean.k.,     xlab="Soft Threshold (power)",     ylab="Mean Connectivity",     type="n",     main = paste("Mean connectivity"))text(sft$fitIndices$Power,     sft$fitIndices$mean.k.,     labels=powers,     cex=cex1,     col="red")best_beta=sft$powerEstimate
image

第四步 构建共表达矩阵

## blockwiseModules自动网络构建和模块检测,单个基因水平上的net = blockwiseModules(datExpr, power = best_beta,                       TOMType = "unsigned", minModuleSize = 30,                       reassignThreshold = 0, mergeCutHeight = 0.25,                       numericLabels = TRUE, pamRespectsDendro = FALSE,                       saveTOMs = TRUE,                       saveTOMFileBase = "HCCTOM",                       verbose = 3)table(net$colors)# 这里的color是标签,下一步转换为对应的颜色moduleColors <- labels2colors(net$colors)# 计算模块特征基因,为第一主成分MEs0 = moduleEigengenes(datExpr, moduleColors)$eigengenes# 计算根据模块特征基因计算模块相异度MEDiss = 1-cor(MEs0)# 计算模块特征基因间的距离,并聚类METree = hclust(as.dist(MEDiss), method = "average");plot(METree,      main = "Clustering of module eigengenes",     xlab = "",      sub = "")# 在聚类图中画出剪切线MEDissThres = 0.25abline(h=MEDissThres, col = "red")# 合并特征基因相近的模块,特征基因水平上的merge_modules = mergeCloseModules(datExpr, moduleColors, cutHeight = MEDissThres, verbose = 3)mergedColors = merge_modules$colorsmergedMEs = merge_modules$newMEsplotDendroAndColors(net$dendrograms[[1]], cbind(moduleColors, mergedColors),                    c("Dynamic Tree Cut", "Merged dynamic"),                    dendroLabels = FALSE, hang = 0.03,                    addGuide = TRUE, guideHang = 0.05)
image

第五步 绘制TOM图

# 每个块中基因的层次聚类树状图geneTree = net$dendrograms[[1]]dissTOM = 1-TOMsimilarityFromExpr(datExpr)set.seed(10)select = sample(ncol(datExpr), size = 400)selectTOM = dissTOM[select, select]selectTree = hclust(as.dist(selectTOM), method = "average")selectColors = moduleColors[select]sizeGrWindow(9,9)plotDiss = selectTOM^7diag(plotDiss) = NATOMplot(plotDiss, selectTree, selectColors, main = "Network heatmap plot, selected genes")
image

第六步 模块与性状的关系

design=model.matrix(~0+ group_list)colnames(design)=levels(factor(group_list))# 根据相关性重新排序MEs = orderMEs(MEs0)# 计算两个相关性值moduleTraitCor = cor(MEs, design , use = "p")moduleTraitPvalue = corPvalueStudent(moduleTraitCor, nrow(datExpr))sizeGrWindow(10,6)textMatrix = paste(signif(moduleTraitCor, 2), "(",                   signif(moduleTraitPvalue, 1), ")", sep = "");dim(textMatrix) = dim(moduleTraitCor)par(mar = c(6, 8.5, 3, 3))# 可视化labeledHeatmap(Matrix = moduleTraitCor,               xLabels = names(hclust_table[,1:5]),               yLabels = names(MEs),               ySymbols = names(MEs),               colorLabels = FALSE,               colors = blueWhiteRed(50),               textMatrix = textMatrix,               setStdMargins = FALSE,               cex.text = 0.5,               zlim = c(-1,1),               main = paste("Module-trait relationships"))
image
sizeGrWindow(5,7.5);par(cex = 0.9)# 特征基因网络图plotEigengeneNetworks(MEs, "", marDendro = c(0,4,1,2), marHeatmap = c(3,4,1,2), cex.lab = 0.8,                       xLabelsAngle= 90)# Plot the dendrogramsizeGrWindow(6,6);par(cex = 1.0)## 聚类图plotEigengeneNetworks(MEs, "Eigengene dendrogram", marDendro = c(0,4,2,0),                      plotHeatmaps = FALSE)# Plot the heatmap matrix (note: this plot will overwrite the dendrogram plot)par(cex = 1.0)## 性状与模块热图plotEigengeneNetworks(MEs, "Eigengene adjacency heatmap", marHeatmap = c(3,4,2,2),                      plotDendrograms = FALSE, xLabelsAngle = 90)
image

第七步 对感兴趣模块的进一步分析

<pre style="margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; font-size: inherit; color: inherit; line-height: inherit;">

modNames = substring(names(MEs), 3)geneModuleMembership = as.data.frame(cor(datExpr, MEs, use = "p"));## 算出每个模块跟特征基因的皮尔森相关系数矩阵## MEs是每个模块在每个样本里面的值MMPvalue = as.data.frame(corPvalueStudent(as.matrix(geneModuleMembership), nSamples));names(geneModuleMembership) = paste("MM", modNames, sep="");names(MMPvalue) = paste("p.MM", modNames, sep="");geneTraitSignificance = as.data.frame(cor(datExpr,use = "p"));GSPvalue = as.data.frame(corPvalueStudent(as.matrix(geneTraitSignificance), nSamples));module = "turquoise"column = match(module, modNames);moduleGenes = moduleColors==module;sizeGrWindow(7, 7);par(mfrow = c(1,1));verboseScatterplot(abs(geneModuleMembership[moduleGenes, column]),                   abs(geneTraitSignificance[moduleGenes, 1]),                   xlab = paste("Module Membership in", module, "module"),                   ylab = "Gene significance for condition",                   main = paste("Module membership vs. gene significance"),                   cex.main = 1.2, cex.lab = 1.2, cex.axis = 1.2, col = module)module = "blue"column = match(module, modNames);moduleGenes = moduleColors==module;sizeGrWindow(7, 7);par(mfrow = c(1,1));verboseScatterplot(abs(geneModuleMembership[moduleGenes, column]),                   abs(geneTraitSignificance[moduleGenes, 1]),                   xlab = paste("Module Membership in", module, "module"),                   ylab = "Gene significance for condition",                   main = paste("Module membership vs. gene significance"),                   cex.main = 1.2, cex.lab = 1.2, cex.axis = 1.2, col = module)
image
image

</pre>

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

推荐阅读更多精彩内容