美文网首页NGS避坑指南鸡易呕
公共数据库没有错误吗?

公共数据库没有错误吗?

作者: mayoneday | 来源:发表于2019-11-21 01:23 被阅读0次

我们对GSE17215进行分析

按照原数据3X3分组

image.png

1.注释基因,整理数据

rm(list = ls())  ## 魔幻操作,一键清空~
options(stringsAsFactors = F)#在调用as.data.frame的时,将stringsAsFactors设置为FALSE可以避免character类型自动转化为factor类型

# 注意查看下载文件的大小,检查数据 

f='GSE17215_eSet.Rdata'

# https://www.ncbi.nlm.nih.gov/geo/query/acc.cgi?acc=GSE12452

library(GEOquery)

# 这个包需要注意两个配置,一般来说自动化的配置是足够的。

#Setting options('download.file.method.GEOquery'='auto')
#Setting options('GEOquery.inmemory.gpl'=FALSE)
if(!file.exists(f)){
  gset <- getGEO('GSE17215', destdir=".",
                 AnnotGPL = F,     ## 注释文件
                 getGPL = F)       ## 平台文件
  save(gset,file=f)   ## 保存到本地
}
load('GSE17215_eSet.Rdata')  ## 载入数据
class(gset)  #查看数据类型
length(gset)  #
class(gset[[1]])
gset

# 因为这个GEO数据集只有一个GPL平台,所以下载到的是一个含有一个元素的list

a=gset[[1]] #
dat=exprs(a) #a现在是一个对象,取a这个对象通过看说明书知道要用exprs这个函数
dim(dat)#看一下dat这个矩阵的维度
dat<-log2(dat+1)

dat[1:4,1:4] #查看dat这个矩阵的1至4行和1至4列,逗号前为行,逗号后为列
boxplot(dat,las=2)
pd=pData(a) #通过查看说明书知道取对象a里的临床信息用pData

## 挑选一些感兴趣的临床表型。

pd$characteristics_ch1.3
group_list= ifelse(grepl("agent: paclitaxel",pd$characteristics_ch1.3),"paclitaxel",'salinomycin')
table(group_list)

dat[1:4,1:4] 

if(F){
  library(GEOquery)
  #Download GPL file, put it in the current directory, and load it:
  gpl <- getGEO('GPL3921', destdir=".")
  colnames(Table(gpl))  
  head(Table(gpl)[,c(1,15)]) ## you need to check this , which column do you need
  probe2gene=Table(gpl)[,c(1,15)]
  head(probe2gene)
  library(stringr)  
  save(probe2gene,file='probe2gene.Rdata')
}
# 

load(file='probe2gene.Rdata')
ids=probe2gene 

head(ids)
colnames(ids)=c('probe_id','symbol')  
ids=ids[ids$symbol != '',]
ids=ids[ids$probe_id %in%  rownames(dat),]

dat[1:4,1:4]   
dat=dat[ids$probe_id,] 

ids$median=apply(dat,1,median) #ids新建median这一列,列名为median,同时对dat这个矩阵按行操作,取每一行的中位数,将结果给到median这一列的每一行
ids=ids[order(ids$symbol,ids$median,decreasing = T),]#对ids$symbol按照ids$median中位数从大到小排列的顺序排序,将对应的行赋值为一个新的ids
ids=ids[!duplicated(ids$symbol),]#将symbol这一列取取出重复项,'!'为否,即取出不重复的项,去除重复的gene ,保留每个基因最大表达量结果s
dat=dat[ids$probe_id,] #新的ids取出probe_id这一列,将dat按照取出的这一列中的每一行组成一个新的dat
rownames(dat)=ids$symbol#把ids的symbol这一列中的每一行给dat作为dat的行名
dat[1:4,1:4]  #保留每个基因ID第一次出现的信息
dim(dat)

save(dat,group_list,file = 'step1-output.Rdata')

2.检查数据

发现按照3X3分组样本主成分和聚类,有一个样本表现很奇怪

image.png
image.png

3.差异分析

rm(list = ls())  ## 魔幻操作,一键清空~
options(stringsAsFactors = F)
load(file = 'step1-output.Rdata')
library(limma)
design <- model.matrix(~0+factor(group_list))
colnames(design)=levels(factor(group_list))
head(design)
exprSet=dat
rownames(design)=colnames(exprSet)
design
contrast.matrix<-makeContrasts("salinomycin-paclitaxel",
                               levels = design)
contrast.matrix ##这个矩阵声明,我们要把 Tumor 组跟 Normal 进行差异分析比较

deg = function(exprSet,design,contrast.matrix){
  ##step1
  fit <- lmFit(exprSet,design)
  ##step2
  fit2 <- contrasts.fit(fit, contrast.matrix) 
  ##这一步很重要,大家可以自行看看效果

  fit2 <- eBayes(fit2)  ## default no trend !!!
  ##eBayes() with trend=TRUE
  ##step3
  tempOutput = topTable(fit2, coef=1, n=Inf)
  nrDEG = na.omit(tempOutput) 
  #write.csv(nrDEG2,"limma_notrend.results.csv",quote = F)
  head(nrDEG)
  return(nrDEG)
}

deg = deg(exprSet,design,contrast.matrix)

head(deg)

save(deg,file = 'deg.Rdata')
image.png

重新分组

而且adjP值也没有差异,怀疑此样本分组命名有问题

从新查看了分组,把这个单出来的样本放到其他3个一起,分成4x2两组

通过查看样本排序得出分组是:group_list=c(rep("paclitaxel",2),rep('salinomycin',4))

1.检查分组

可以看到样本主成分和热图可以看到样本有呈现相同特点的趋势了

image.png
image.png

2.差异分析

image.png

这时候可以看adjP值是有意义的了


image.png

3.富集分析

kegg_up_down.png kegg_up_down_gsea.png kk.diff.dotplot.png kk.down.dotplot.png kk.up.dotplot.png

两次不同分组logFC的散点图(比较两次的结果)

rm(list = ls())  ## 魔幻操作,一键清空~
load(file = 'deg.Rdata')
load(file = 'degxiuzheng.Rdata')
degxiu<-deg
a<-data.frame(xiu<-degxiu$logFC,yuan<-degyuan$logFC)
a$xiu<-degxiu$logFC
a$yuan<-degyuan$logFC
# 基函数:colour设置分组

a$group<-degxiu$logFC#随便赋值生成一个组,方便下面代码运行
#根据一致性进行分组
for(i in 1:nrow(a)){
  a[i,"group"]<-ifelse(abs(a[i,1]-a[i,2])<1,"yizhi","buzhiyi")
}#绝对值小于1就认为他是一致的
table(a$group)


ggplot(a, aes(x = xiu, y = yuan, colour = group)) +
  # 散点图函数
  geom_point()
image.png

把logFC相差絕對值小于1的认为是一致画图

可以看到,它成斜角的不一致的数据挺多的

最后

感谢jimmy的生信技能树团队!

感谢导师岑洪老师!

感谢健明、孙小洁等生信技能树团队的老师一路以来的指导和鼓励!

文中代码来自生信技能树jimmy老师!

相关文章

  • 公共数据库没有错误吗?

    我们对GSE17215进行分析 按照原数据3X3分组 1.注释基因,整理数据 2.检查数据 发现按照3X3分组样本...

  • 通过建立隧道链接内网数据库

    内网有两台主机,一台做公共服务,一台做数据库,其中公共服务有外网ip,而数据库服务没有。公共服务可以链接数据库,但...

  • 你关注了多少个公共号?

    上次见到表妹的时候,她顺便问到了我公共号的情况。 “你还在做艾米正能量吗?” “当然,难道你没有看我的公共号吗?”...

  • Android开发日志

    GreenDao 数据库实体修改后一直报错(在没有升级数据库的前提)错误提示:has been changed a...

  • 数据库1055错误

    数据库1055错误 问题描述:在MySQL数据库下,执行SQL插入语句报错或者进入数据库时。出现1055错误信息。...

  • 计算机二级java程序语言设计

    公共基础 数据库 数据库设计过程主要包括需求分析、概要结构设计、逻辑结构分析、数据库物理设计、数据库实施、数据库运...

  • sqlite2和sqlite3版本差异大,3+读取必须PDO

    1 连接sqlit数据库出现错误(当使用sqlite_open() 连接数据库时出现以下错误) Warning: ...

  • SpringMVC 环境搭建遇到问题

    一、数据库登录错误 解决: 开始以为是没有授权远程IP登录,后来发现是root后面多空格 二、map绑定错误: 解...

  • postgresql tcp 连接超时问题

    错误现象 应用中遇到一个错误 问题分析 Connection timed out 数据库侧记录 的日志之一 数据库...

  • 错误永远都是错误吗?

    错误永远都是错误吗? 对,错误永远都是错误。 当你对此有一丝反感,这很正常。假使没有,那也挺好。 当我在说「错误永...

网友评论

    本文标题:公共数据库没有错误吗?

    本文链接:https://www.haomeiwen.com/subject/udfzictx.html