文章目录

  • 论文地址
  • GSE65635数据下载到表达矩阵
    • GSE65635数据下载
    • getGEO包下载的探针注释文件不全,需要在GEO网站下载
    • 筛选探针
    • 分位数标准化预处理
    • 分组
    • log2数据转换
  • 差异表达
    • 表达矩阵
    • 分组矩阵
    • 差异表达矩阵
    • 按照logFC排序
    • 保存差异表达矩阵
    • 火山图
    • 热图,按p值从小到大筛选前100个差异基因(|logFC| > 1)

论文地址

GSE65635数据下载到表达矩阵

GSE65635数据下载

setwd("./1.GEO_datasets/GSE65635")
library(GEOquery)gset = getGEO('GSE65635',destdir = '.',getGPL = F,AnnotGPL = T)gset = gset[[1]]          # 转为对象expr = exprs(gset)        # 表达矩阵pdata = pData(gset)       # 样本信息gset@annotation           # 查看芯片平台

getGEO包下载的探针注释文件不全,需要在GEO网站下载

probe = read.table(file = 'GPL14951-11332.txt',sep = '\t',quote = '',         comment.char = '#',    # 过滤掉'GPL14951-11332.txt'文件中以‘#’开头的注释信息header = T,fill = T,                #  如果文件中某行的数据少于其他行,则自动添加空白域。     stringsAsFactors = F)  # 字符串不改为因子ids = probe[probe$Symbol != '',c(1,12)] # 提取探针和geneID

筛选探针

library(dplyr)colnames(ids)expr = as.data.frame(expr)expr$ID = rownames(expr)#ids = ids[-grep('///',ids$Symbol),]      # 一个探针对应多个基因,去除exprSet = inner_join(ids,expr,by = 'ID')        #  探针没有对应基因,去除library(limma)exprSet= avereps(exprSet[,-c(1,2)],             # 多个探针对应一个基因,取均值ID = exprSet$Symbol)exprSet = as.data.frame(exprSet)pdf(file = 'rowbox.pdf')p <- boxplot(exprSet,outline=FALSE,las=2,col = 'blue',xaxt = 'n',ann = F)title(main = list('Before normalization',cex = 2 ,font = 2),xlab = list('Sample list',cex = 1.5,font = 2),ylab = '',line = 0.7)mtext('Expression value',side = 2,padj = -3,font = 2,cex = 1.5)dev.off()

分位数标准化预处理

library(limma)normalized_expr = normalizeBetweenArrays(exprSet) # 分位数标准化 method默认为quantilepdf(file = 'normalized_box.pdf')p1 <- boxplot(normalized_expr,outline=FALSE,las=2,col = 'red',xaxt = 'n',ann = F)title(main = list('Normalization',cex = 2 ,font = 2),xlab = list('Sample list',cex = 1.5,font = 2),ylab = '',line = 0.7)mtext('Expression value',side = 2,padj = -3,font = 2,cex = 1.5)dev.off()

分组

group_list = pdata$source_name_ch1control = normalized_expr[,-grep('cancer',group_list)]tumor   = normalized_expr[,grep('cancer',group_list)]exprSet1 = cbind(tumor,control)group_list = c(rep('tumor',ncol(tumor)),rep('normal',ncol(control)))

log2数据转换

exprSet1 = log2(exprSet1)  # 表达矩阵数值较大时,在差异表达之前先对数据log2变换

差异表达

表达矩阵

data = exprSet1

分组矩阵

group_list = factor(group_list)design <- model.matrix( ~0 + group_list)colnames( design ) = levels(group_list)rownames( design ) = colnames(data)contrast.matrix <- makeContrasts( "tumor-normal", levels = design)

差异表达矩阵

fit <- lmFit( data, design )fit2 <- contrasts.fit( fit, contrast.matrix ) fit2 <- eBayes( fit2 )allDiff=topTable(fit2,adjust='fdr',number=200000)write.table(allDiff,file="alldiff.xls",sep="\t",quote=F)

按照logFC排序

allLimma=allDiffallLimma=allLimma[order(allLimma$logFC),]allLimma=rbind(Gene=colnames(allLimma),allLimma)write.table(allLimma,file="GSE65635_limmaTab.txt",sep="\t",quote=F,col.names=F)

保存差异表达矩阵

logFoldChange=1adjustP=0.05diffSig <- allDiff[with(allDiff, (abs(logFC)>logFoldChange & adj.P.Val < adjustP )), ]write.table(diffSig,file="diff.xls",sep="\t",quote=F)diffUp <- allDiff[with(allDiff, (logFC>logFoldChange & adj.P.Val < adjustP )), ]write.table(diffUp,file="up.xls",sep="\t",quote=F)diffDown <- allDiff[with(allDiff, (logFC<(-logFoldChange) & adj.P.Val < adjustP )), ]write.table(diffDown,file="down.xls",sep="\t",quote=F)hmExp=data[rownames(diffSig),]diffExp=rbind(id=colnames(hmExp),hmExp)write.table(diffExp,file="diffExp.txt",sep="\t",quote=F,col.names=F)

火山图

xMax=max(-log10(allDiff$adj.P.Val))   yMax=max(abs(allDiff$logFC))library(ggplot2)allDiff$change <- ifelse(allDiff$adj.P.Val < 0.05 & abs(allDiff$logFC) > 1,ifelse(allDiff$logFC > 1,'UP','DOWN'),'NOT')table(allDiff$change)pdf(file = 'volcano.pdf')ggplot(data= allDiff, aes(x = -log10(adj.P.Val), y = logFC, color = change)) +geom_point(alpha=0.8, size = 1) +theme_bw(base_size = 15) +theme(plot.title=element_text(hjust=0.5),   #  标题居中panel.grid.minor = element_blank(),panel.grid.major = element_blank()) + # 网格线设置为空白geom_hline(yintercept= 0 ,linetype= 2 ) +scale_color_manual(name = "", values = c("red", "green", "black"),limits = c("UP", "DOWN", "NOT")) +xlim(0,xMax) + ylim(-yMax,yMax) +labs(title = 'Volcano', x = '-Log10(adj.P.Val)', y = 'LogFC')dev.off()

热图,按p值从小到大筛选前100个差异基因(|logFC| > 1)

 top100exp = exprSet1[rownames(diffSig)[1:100],]annotation_col = data.frame(group = group_list)rownames(annotation_col) = colnames(exprSet1)library(pheatmap)pdf(file = 'heatmap.pdf')pheatmap(top100exp,annotation_col = annotation_col,color = colorRampPalette(c("green", "black", "red"))(50),fontsize  = 5)dev.off()

本博客内容将同步更新到个人微信公众号生信玩家。欢迎大家关注~~~

2018年SCI论文--整合GEO数据挖掘完整复现 四 :差异表达(GSE65635)相关推荐

  1. 2018年SCI论文--整合GEO数据挖掘完整复现 八 :STRING数据库构建蛋白质相互作用网络(PPI),cytoscape软件筛选hub基因

    文章目录 论文地址 STRING数据库 PPI网络构建 输入差异基因list PPI图 保存结果 cytoscape软件筛选hub基因.功能模块 输入"string_interactions ...

  2. 科研ABC - SCI论文写作

    SCI论文写作 1 IMRD 结构难易程度解析 1.1 I--前言(Introduction) 1.2 M--研究方法(Methods,描述你做过的工作) 1.3 R--研究结果(Results) 1 ...

  3. 自称“房奴”的博士靠开店卖SCI论文10年盈利近百万,论文买卖你怎么看?

    本文来源:中国青年报.武汉晚报 首席记者杨佳峰 导读: 10年前,一位自称"房奴博士"的刚毕业博士生在网上开启了他的SCI售卖小铺.每篇 1-2 万元,声称一年内卖出去的论文中有 ...

  4. SCI论文写作视频1.论文的三段式结构

    导语: 本期,投必得学术邀请了堪萨斯州立大学刘子非教授为大家讲<论文的三段式结构>,本次讲座是视频推送的形式,分多期推送.欢迎大家观看和分享,如果您不想错过任何一期,请一定锁定投必得唯一官 ...

  5. 本科发表6篇SCI论文,获多个荣誉,他刚入学就享受研究生待遇!

    他身着一身黑色运动服,留着清爽的寸头,带着腼腆的微笑--武汉大学基础医学院2016级基础医学专业本科生谢天,这样一个平易近人的大男孩,谁又能想到他大二时就以第一作者发表了两篇SCI论文,是一位负责国家 ...

  6. 记住这9点,SCI论文结果轻松写

    SCI论文结果是论文的重要组成部分,目的是呈现研究的主要结果.结果的内容包括真实可靠的观察和研究结果,测定的数据,导出的公式,典型病例.取得的图像.效果的差异(有效与无效).科学研究的理论结论等.结果 ...

  7. SCI论文全攻略:选刊\投稿\修回与退稿

    选刊与投稿 一.拟投期刊的选择: (1)选用SCI收录期刊.目前SCI收录核心刊 3000种,加上增补期刊约 5600种.研究者可事先将SCI中自己感兴趣的期刊找出来备用. (2)利用SCI收录期刊的 ...

  8. java sci论文,SCI论文中那些容易被混淆的部分!你写错过吗?

    原标题:SCI论文中那些容易被混淆的部分!你写错过吗? 点击上图,查看教学大纲 作者:晨星 唐代大诗人白居易在<游大林寺>里有一句"人间四月芳菲尽,山寺桃花始盛开."许 ...

  9. 厉害!23岁本科生发14篇SCI论文,并任外审专家……

    点击上方"AI遇见机器学习",选择"星标"公众号 重磅干货,第一时间送达 "我是来自肿瘤154班的王子恒,是南通大学附属医院生物样本库的研究成员,同时 ...

最新文章

  1. SQL 利用merge 同步数据库之间表的数据
  2. linux内核编译练习
  3. 基于zynq的千兆网udp项目_随时随地感受“沉浸式千兆体验”!海南互联网络迈入“三千兆”时代...
  4. java接口注入空指针_spring 注入空指针是怎么回事?
  5. 2020最新直播源地址下载txt_TXT追书免费小说app安卓版下载-TXT追书免费小说最新版下载v5.0.0...
  6. c语言程序编程实践总结,c语言编程实习心得
  7. linux 如何添加字体
  8. python电影数据分析报告_电影数据可视化项目分析报告
  9. 工信部宣布新规,微信支付存在漏洞必须整改,网友:马化腾会赔偿损失吗?
  10. 12306个人敏感信息泄露
  11. 小水管也要有尊严 网络限速优化实际案例
  12. 程序员的外功和内功的修炼
  13. 奥利给!!字体/颜色对话框这么豪横的解释,赶紧PICK一下吧!!
  14. PCI/CA体系下使用USBkey实现认证与加密(一)整体架构
  15. (JavaSE 学习记录) 自定义类加载器
  16. sql:查询选修了全部课程的学生姓名
  17. 实验四——恶意代码技术
  18. C#如何开发扫雷游戏
  19. 墨珩科技荣获“高新技术企业”认定
  20. 宾西法尼亚大学强制对齐标注软件(P2FA)介绍以及使用说明

热门文章

  1. 样式的新建、修改和导入/导出
  2. 路由器与交换机配置测试题及答案
  3. 在php中.=什么意思,在算法中mod是什么意思?
  4. linux管道只能运输参数吗,oeasy教您玩转 linux 010212 管道 pipe
  5. 【2021知识蒸馏】Show, Attend and Distill:Knowledge Distillation via Attention-based Feature Matching
  6. 【c++ primer】第五版第十四章习题答案
  7. 为什么OpenCV4 “pkg-config --modversion opencv”显示“ No package ‘opencv‘ found”?解决方法!
  8. 抖音+今日头条副业项目,新玩法,后期收益月入过万
  9. 线性回归系数的几个性质
  10. ACPI 待机/睡眠/休眠有啥区别?