中文字幕理论片,69视频免费在线观看,亚洲成人app,国产1级毛片,刘涛最大尺度戏视频,欧美亚洲美女视频,2021韩国美女仙女屋vip视频

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
萌新學(xué)完GEO課程復(fù)現(xiàn)SCI文章差異基因的熱圖

文章標(biāo)題是:Tinagl1 Suppresses Triple-Negative Breast Cancer Progression and Metastasis by Simultaneously Inhibiting Integrin/FAK and EGFR Signaling .

菜鳥一枚,所以現(xiàn)在只是復(fù)現(xiàn)這篇文章里的B圖;C圖里的通路GO/KEGG注釋及A圖中的GSEA下回分解?? (感覺任重而道遠(yuǎn))

從文章中,我們找到GSE號

All microarray data generated in this study have been deposited as a superseries at the NCBI Gene Expression Omnibus with the accession code GSE99507, and can be accessed at https://www.ncbi.nlm.nih.gov/geo/query/acc.cgi?acc=GSE99507.

點(diǎn)開,看到如下分組,這里面的分組信息先留個(gè)懸念

<從下面開始,跟著老大的嗶哩嗶哩GEO挖掘視頻一步一步走>

1. 現(xiàn)在我們需要找到這個(gè)GSE號對應(yīng)的GPL平臺,然后找到這個(gè)GPL平臺所對應(yīng)的注釋R包

老大GEO視頻中一閃而過的文章是:從GEO數(shù)據(jù)庫下載得到表達(dá)矩陣 一文就夠

現(xiàn)在我們需要通這個(gè)GPL平臺找到對應(yīng)的注釋R包然后找到下面這個(gè)包裝函數(shù)的板塊,截圖如下:

圖片中是老大已經(jīng)包裝好的函數(shù),我們這次要下載的GSE號是99507,因此在R里代碼框輸入下面即可,如圖:

得到當(dāng)前GSE號所對應(yīng)的芯片平臺,如下圖:即GPL17077.

這個(gè)時(shí)候,我們需要非常熟悉這個(gè)對象哦

我們也可以在GEO網(wǎng)站上看到平臺信息是這樣的,截圖如下

接下來,因此我們可以去老大的搜集貼找對應(yīng)關(guān)系,參考老大的這篇文章:(16)芯片探針與基因的對應(yīng)關(guān)系-生信菜鳥團(tuán)博客2周年精選文章集,截圖如下:

從以上列表中,用GPL17077去找對應(yīng)的注釋包,發(fā)現(xiàn)沒有。(老大已經(jīng)總結(jié)地很全了,但是依然有些GPL平臺是沒有注釋包或者是有我們沒有找到。)

而老大GEO視頻里的GPL平臺其實(shí)是有注釋R包的,就是下圖中的這個(gè)hgu95av2.db,視頻中老大從R語言20練習(xí)題里有關(guān)于ID轉(zhuǎn)換的代碼,如下圖:

總之,現(xiàn)在的GPL17077平臺現(xiàn)在并沒有對應(yīng)的注釋R包,當(dāng)然更不是視頻中的這個(gè)hgu95av2.db了。為了能繼續(xù)跟著按照老大視頻中講的繼續(xù)做,我去Google搜索,用的是前面在GEO網(wǎng)站里GPL平臺對應(yīng)的平臺信息,前面也有截圖,如下

Google找的說是這個(gè)hgug4110b.db的注釋R包,其實(shí)在老大總結(jié)里這個(gè)包對應(yīng)的是GPL887平臺,但是我想還是試試,于是我嘗試了下載下,代碼如下啦

# 首先我下載了一個(gè)錯(cuò)誤的包
BiocManager::install('hgug4110b.db')
library('hgug4110b.db')
?hgug4110b
ls("package:hgug4110b.db")

#下面這段很眼熟,就是我上面在R語言20題里的截圖,我把視頻中的hgu95av2.db包換成我在谷歌搜索到的hgug4110b.db包
library('hgug4110b.db')
ids=toTable(hgug4110bSYMBOL)
length(unique(ids$symbol))
tail(sort(table(ids$symbol)))
table(sort(table(ids$symbol)))
plot(table(sort(table(ids$symbol))))


exprSet<-dat
table(rownames(exprSet) %in% ids$probe_id)
dim(exprSet)
exprSet=exprSet[rownames(exprSet) %in% ids$probe_id,]
dim(exprSet)


ids=ids[match(rownames(exprSet),ids$probe_id),]
head(ids)
exprSet[1:5,1:5]
tmp = by(exprSet,ids$symbol,
         function(x) rownames(x)[which.max(rowMeans(x))] )
probes = as.character(tmp)
exprSet=exprSet[rownames(exprSet) %in% probes ,]
dim(exprSet)
#寫一個(gè)函數(shù),可以之間過濾掉其他探針并且進(jìn)行ID轉(zhuǎn)換,
#此時(shí)的id轉(zhuǎn)換是用bioconductor包來轉(zhuǎn)換的,如果下載的matrix,則不用轉(zhuǎn)換
jimmy <- function(exprSet,ids){
                             tmp = by(exprSet,
                             ids$symbol,
                              function(x) rownames(x)[which.max(rowMeans(x))] )
                probes = as.character(tmp)
                print(dim(exprSet))
                exprSet=exprSet[rownames(exprSet) %in% probes ,]
                print(dim(exprSet))
                return(exprSet)
}
new.exprSet <- jimmy(exprSet,ids)


#此時(shí)會報(bào)錯(cuò),因?yàn)楝F(xiàn)在的exprSet和ids的長度不一樣

由于expeSet里的ID能在ids里對應(yīng)的很少,大部分都是對應(yīng)不上的,如下圖

對應(yīng)上的基因數(shù)TRUE只有8190,因此我認(rèn)為我谷歌到的這個(gè)hgug4110b.db并不對。

不過==沒關(guān)系==鼓起勇氣,繼續(xù)探索

而且老大視頻里又給了找不到對應(yīng)的注釋R包時(shí),通過下面的代碼來實(shí)現(xiàn)探針名和基因名的對接,代碼網(wǎng)址:https://github.com/jmzeng1314/my-R/blob/master/9-microarray-examples/E-MTAB-3017.R

#代碼如下
gpl <- getGEO('GPL17077', destdir=".")
colnames(Table(gpl)) 
head(Table(gpl)[,c(1,6,7)])  ## you need to check this , which column do you need 
write.csv(Table(gpl)[,c(1,6,7)],"GPL17077.csv")
ids=read.csv('GPL17077.csv')
#這樣我們就同樣獲得了探針對應(yīng)基因的表達(dá)矩陣?yán)?/span>

前面我所認(rèn)為的第一步剛剛結(jié)束了,獲得了探針對應(yīng)基因的表達(dá)矩陣

2.下載數(shù)據(jù),獲得分組信息

下載數(shù)據(jù):老大在視頻里講了三種找到數(shù)據(jù)集后的數(shù)據(jù)下載方式,我簡單羅列如下(目的得到表達(dá)矩陣):

1.直接下載raw data,但不推薦大家用,原始數(shù)據(jù)

2.下載表達(dá)矩陣 series matrix file(s),下載后可讀到R里面,考驗(yàn)網(wǎng)速

a=read.table('GSE42872_series_matrix.txt.gz')
class(a)
[1"data.frame"
> str(gset)

3.在R里面讀取GSE號.

gset <- getGEO("GSE42589")

加載GEO包下載

library(GEOquery)
gset <- getGEO('GSE42872',destdir=".",AnnotGPL = F,getGPL = F

老大推薦第三種方式,下面是代碼

# 就這么來就對了,沒毛病
###step1-downloadR
rm(list = ls())  ## 魔幻操作,一鍵清空~
options(stringsAsFactors = F)
# 注意查看下載文件的大小,檢查數(shù)據(jù) 
f='GSE99507_eSet.Rdata'

library(GEOquery)
# 這個(gè)包需要注意兩個(gè)配置,一般來說自動化的配置是足夠的。
#Setting options('download.file.method.GEOquery'='auto')
#Setting options('GEOquery.inmemory.gpl'=FALSE)
if(!file.exists(f)){
  gset <- getGEO('GSE99507', destdir=".",
                 AnnotGPL = F,     ## 注釋文件
                 getGPL = F)       ## 平臺文件
  save(gset,file=f)   ## 保存到本地
}
load('GSE99507_eSet.Rdata')  ## 載入數(shù)據(jù)
class(gset)
length(gset)
class(gset[[1]])
# 因?yàn)檫@個(gè)GEO數(shù)據(jù)集只有一個(gè)GPL平臺,所以下載到的是一個(gè)含有一個(gè)元素的list
a=gset[[1]]
dat=exprs
dim(dat)
#  GPL3921  [HT_HG-U133A] Affymetrix HT Human Genome U133A Array
# Bioconductor - hgu133a.db
dat[1:4,1:4]


pd=pData(a) #獲得分組信息,就得到了前面一張截圖,即前面懸念的解答處-GSE號對應(yīng)的Samples分組信息,主要是根據(jù)文章里的那個(gè)截圖的分組信息來對字符串進(jìn)行拆分(str_split)和替換(str_replace)
library(stringr)
group_list = trimws(str_split(pd$title,' ',simplify = T)[,5])#拆分
group_list = str_replace(group_list,'LM2','Vector')
table(group_list)
save(dat,group_list,file = 'step1-output.Rdata')
#此時(shí),要注意保存的這個(gè)文件step1-output.Rdata,我們要知道此時(shí)的dat表達(dá)矩陣是什么樣的

3.ID轉(zhuǎn)換

###step2-ids-filter.R

rm(list = ls())  ## 魔幻操作,一鍵清空~
options(stringsAsFactors = F)
load('step1-output.Rdata')
gpl <- getGEO('GPL17077', destdir=".")
colnames(Table(gpl)) ## [1] 41108    17
head(Table(gpl)[,c(1,7)])  ## you need to check this , which column do you need 
write.csv(Table(gpl)[,c(1,7)],"GPL17077.csv")
ids=read.csv('GPL17077.csv')
ids=ids[,-1]
dat[1:4,1:4
rownames(dat)

#如前所述,現(xiàn)在沒有這個(gè)平臺對應(yīng)的注視R包,所以下面是根據(jù)下載的dat和ids來進(jìn)行的ID轉(zhuǎn)換步驟
ids[ids$GENE_SYMBOL!='',]
ids=ids[ids$GENE_SYMBOL!='',]
match(rownames(dat),ids$ID)
ids[match(rownames(dat),ids$ID),]
ids=ids[match(rownames(dat),ids$ID),]
ids=ids[complete.cases(ids),]
dat=dat[ids$ID,]

#下面是針對那些有多個(gè)基因去重的步驟,注意理解為什么要取median(中位數(shù)),巧妙
ids$median=apply(dat,1,median)
ids=ids[order(ids$GENE_SYMBOL,ids$median,decreasing = T),]
ids=ids[!duplicated(ids$GENE_SYMBOL),]
dat=dat[ids$ID,]
rownames(dat)=ids$GENE_SYMBOL
dat[1:4,1:4]  
dim(dat)

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

#此時(shí)此時(shí),要注意保存的這個(gè)文件step2-output.Rdata,我們要知道此時(shí)的dat表達(dá)矩陣是什么樣的

4.PCA和Heatmap

###step3-pca-heatmap

##PCA主成分分析

(list = ls())  ## 魔幻操作,一鍵清空~
options(stringsAsFactors = F)
load(file = 'step1-output.Rdata')
# 每次都要檢測數(shù)據(jù)
dat[1:4,1:4]
## 下面是畫PCA的必須操作,需要看說明書。
dat=t(dat)
dat=as.data.frame(dat)
dat=cbind(dat,group_list)
library("FactoMineR")
library("factoextra"
# The variable group_list (index = ) is removed
# before PCA analysis
dat.pca <- PCA(dat[,-ncol(dat)], graph = FALSE)
fviz_pca_ind(dat.pca,repel =T,
             #geom.ind = "point", # show points only (nbut not "text")
             col.ind = dat$group_list, # color by groups
             palette = c("#00AFBB""#E7B800"),
             addEllipses = TRUE, # Concentration ellipses
             legend.title = "Groups"
)



##熱圖:heatmap-sd

rm(list = ls())  ## 魔幻操作,一鍵清空~
options(stringsAsFactors = F)
load(file = 'step1-output.Rdata')
# 每次都要檢測數(shù)據(jù)
dat[1:4,1:4]
cg=names(tail(sort(apply(dat, 1, sd)),1000))
library(pheatmap)
pheatmap(dat[cg,],show_colnames =F,show_rownames = F)
rowMeans(dat[,1:3]) -  rowMeans(dat[,4:6]) 
cg1=names(tail(sort(rowMeans(dat[,1:3]) -  rowMeans(dat[,4:6]) ),500))
cg2=names(head(sort(rowMeans(dat[,1:3]) -  rowMeans(dat[,4:6]) ),500))
cg=c(cg1,cg2)
n=t(scale(t(dat[cg,])))
n[n>2]=2
n[n< -2]= -2
n[1:4,1:4]
pheatmap(n,show_colnames =F,show_rownames = F)
ac=data.frame(g=group_list)
rownames(ac)=colnames(n)
pheatmap(n,show_colnames =F,
         show_rownames = F,
         cluster_cols = F,
         annotation_col=ac)

5.差異分析

##step4-DEG
rm(list = ls())  ## 魔幻操作,一鍵清空~
options(stringsAsFactors = F)
load(file = 'step2-output.Rdata')######要知道此時(shí)是step2中的dat哦
# 每次都要檢測數(shù)據(jù)
dat[1:4,1:4]
table(group_list)

##boxplot圖
boxplot(dat[1,]~group_list)
t.test(dat[1,]~group_list)
bp=function(g){
  library(ggpubr)
  df=data.frame(gene=g,stage=group_list)
  p <- ggboxplot(df, x = "stage", y = "gene",
                 color = "stage", palette = "jco",
                 add = "jitter")
  #  Add p-value
  p + stat_compare_means()
}
bp(dat[1,])
bp(dat[2,])
bp(dat[3,])
bp(dat[4,])

##DEG-limma包

library(limma)
design=model.matrix(~factor( group_list ))
fit=lmFit(dat,design)
fit=eBayes(fit)
options(digits = 4)
#topTable(fit,coef=2,adjust='BH') 
topTable(fit,coef=2,adjust='BH')
bp(dat['KLK10',])
bp(dat['FXYD3',])
deg=topTable(fit,coef=2,adjust='BH',number = Inf)

head(deg) 
save(deg,file = 'deg.Rdata')


## for volcano 
if(T){
  nrDEG=deg
  head(nrDEG)
  attach(nrDEG)
  plot(logFC,-log10(P.Value))
  library(ggpubr)
  df=nrDEG
  df$v= -log10(P.Value)
  ggscatter(df, x = "logFC", y = "v",size=0.5)

  df$g=ifelse(df$P.Value>0.01,'stable',
              ifelse( df$logFC >1.5,'up',
                      ifelse( df$logFC < -1.5,'down','stable') )
  )
  table(df$g)#此時(shí)獲得的上調(diào)基因?yàn)?0,下調(diào)基因?yàn)?45
  df$symbol=rownames(df)
  ggscatter(df, x = "logFC", y = "v",size=0.5,color = 'g')
  ggscatter(df, x = "logFC", y = "v", color = "g",size = 0.5,
            label = "symbol", repel = T,
            #label.select = rownames(df)[df$g != 'stable'] ,
            label.select = rownames(head(head(deg))),
            palette = c("#00AFBB""#E7B800""#FC4E07") )

  ggscatter(df, x = "AveExpr", y = "logFC",size = 0.2)
  df$p_c = ifelse(df$P.Value<0.001,'p<0.001',
                  ifelse(df$P.Value<0.01,'0.001<p<0.01','p>0.01'))
  table(df$p_c )
  ggscatter(df,x = "AveExpr", y = "logFC", color = "p_c",size=0.2
            palette = c("green""red""black") )


}


## 熱圖:for heatmap 
rm(list = ls())  ## 魔幻操作,一鍵清空~
options(stringsAsFactors = F)
if(T){ 
  load(file = 'step2-output.Rdata')
  # 每次都要檢測數(shù)據(jù)
  dat[1:4,1:4]
  table(group_list)
  load(file = 'deg.Rdata')
  x=deg$logFC
  names(x)=rownames(deg)
  cg=c(names(head(sort(x),20)),#老大的代碼中是100、100,由于我獲得上下調(diào)基因少,就改了 
       names(tail(sort(x),145)))
  library(pheatmap)
  pheatmap(dat[cg,],show_colnames =F,show_rownames = F)
  n=t(scale(t(dat[cg,])))
  n[n>2]=2
  n[n< -2]= -2
  n[1:4,1:4]
  pheatmap(n,show_colnames =F,show_rownames = F)
  ac=data.frame(g=group_list)
  rownames(ac)=colnames(n)
  pheatmap(n,show_colnames =F,
           show_rownames = F,
           cluster_cols = F,
           annotation_col=ac)


}

到這里就差不多結(jié)束了,基本得到和文章中差不多的熱圖。還有很多做圖技巧需要慢慢學(xué)習(xí)。其中的代碼均從老大那copy過來的,需要邊做邊理解,注意每一步變量的變化,以不變應(yīng)萬變,這點(diǎn)很重要哇。

十分<感謝老大>的指導(dǎo)和幫助,第一次做到這里,很開心哇~??

本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊舉報(bào)。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
GEO數(shù)據(jù)挖掘流程——代碼版(方便抄襲)
log還是不log,表達(dá)矩陣說了算
差異分析及KEGG注釋簡介
GEO學(xué)習(xí)筆記
TCGA數(shù)據(jù)庫中三陰性乳腺癌在亞洲人群中的差異表達(dá)
批量生存分析(logrank和單因素COX)
更多類似文章 >>
生活服務(wù)
熱點(diǎn)新聞
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服