生信技能樹(shù)-R語(yǔ)言小作業(yè)(中級(jí))

當(dāng)看完幾遍R語(yǔ)言書(shū)籍時(shí)躯嫉,可以適當(dāng)做些題目,而jimmy在生信技能樹(shù)的這幾道題目是很適合練習(xí)雳灵,每一行代碼自己都要著去理解,在Rstudio中可以不斷修改和試錯(cuò)闸盔,直到弄明白悯辙。http://www.bio-info-trainee.com/3750.html 其實(shí)這些題目有很多好的答案了。
但佛系筆記嘛迎吵,可能在做筆記前花了很多時(shí)間才搞懂為什么是這樣寫(xiě)那樣寫(xiě)躲撰,身邊有很多小伙伴可以一起學(xué)習(xí),終于做出來(lái)的感覺(jué)挺爽的击费。

第一題
請(qǐng)根據(jù)R包org.Hs.eg.db找到下面ensembl 基因ID 對(duì)應(yīng)的基因名(symbol)
ENSG00000000003.13
ENSG00000000005.5
ENSG00000000419.11
ENSG00000000457.12
ENSG00000000460.15
ENSG00000000938.11
提示:
library(org.Hs.eg.db)
g2s=toTable(org.Hs.egSYMBOL)
g2e=toTable(org.Hs.egENSEMBL)

先甩個(gè)生信技能樹(shù)博客鏈接—了解常用數(shù)據(jù)庫(kù)ID表示方式 http://www.biotrainee.com/thread-411-1-1.html

答1 
> rm(list=ls()) #刪除已存在變量拢蛋,可刪可不刪,看個(gè)人習(xí)慣
> if (!requireNamespace("BiocManager", quietly = TRUE))
  install.packages("BiocManager")
BiocManager::install("org.Hs.eg.db")     # Bioconductor 命令行下載安裝org.Hs.eg.db 包
> suppressMessages(library(org.Hs.eg.db))     #去除加載包時(shí)的警告蔫巩,可用可不用
> ls("package:org.Hs.eg.db")  #查看包的內(nèi)容

[1] "org.Hs.eg"                "org.Hs.eg.db"            
[3] "org.Hs.eg_dbconn"         "org.Hs.eg_dbfile"        
[5] "org.Hs.eg_dbInfo"         "org.Hs.eg_dbschema"      
[7] "org.Hs.egACCNUM"          "org.Hs.egACCNUM2EG"      
[9] "org.Hs.egALIAS2EG"        "org.Hs.egCHR"            
[11] "org.Hs.egCHRLENGTHS"      "org.Hs.egCHRLOC"         
[13] "org.Hs.egCHRLOCEND"       "org.Hs.egENSEMBL"        
[15] "org.Hs.egENSEMBL2EG"      "org.Hs.egENSEMBLPROT"    
[17] "org.Hs.egENSEMBLPROT2EG"  "org.Hs.egENSEMBLTRANS"   
[19] "org.Hs.egENSEMBLTRANS2EG" "org.Hs.egENZYME"         
[21] "org.Hs.egENZYME2EG"       "org.Hs.egGENENAME"       
[23] "org.Hs.egGO"              "org.Hs.egGO2ALLEGS"      
[25] "org.Hs.egGO2EG"           "org.Hs.egMAP"            
[27] "org.Hs.egMAP2EG"          "org.Hs.egMAPCOUNTS"      
[29] "org.Hs.egOMIM"            "org.Hs.egOMIM2EG"        
[31] "org.Hs.egORGANISM"        "org.Hs.egPATH"           
[33] "org.Hs.egPATH2EG"         "org.Hs.egPFAM"           
[35] "org.Hs.egPMID"            "org.Hs.egPMID2EG"        
[37] "org.Hs.egPROSITE"         "org.Hs.egREFSEQ"         
[39] "org.Hs.egREFSEQ2EG"       "org.Hs.egSYMBOL"         
[41] "org.Hs.egSYMBOL2EG"       "org.Hs.egUCSCKG"         
[43] "org.Hs.egUNIGENE"         "org.Hs.egUNIGENE2EG"     
[45] "org.Hs.egUNIPROT"
> library("org.Hs.eg.db")   #加載包
> keytypes(org.Hs.eg.db)  # org.Hs.eg.db 包里面的數(shù)據(jù)有哪些類(lèi)型谆棱,可以看到這題中我們需要的是ENSEMBL,和SYMBOL
[1] "ACCNUM"       "ALIAS"        "ENSEMBL"      "ENSEMBLPROT"  "ENSEMBLTRANS"
[6] "ENTREZID"     "ENZYME"       "EVIDENCE"     "EVIDENCEALL"  "GENENAME"    
[11] "GO"           "GOALL"        "IPI"          "MAP"          "OMIM"        
[16] "ONTOLOGY"     "ONTOLOGYALL"  "PATH"         "PFAM"         "PMID"        
[21] "PROSITE"      "REFSEQ"       "SYMBOL"       "UCSCKG"       "UNIGENE"     
[26] "UNIPROT"

> x<-c("ENSG00000000003","ENSG00000000005","ENSG00000000419","ENSG00000000457","ENSG00000000460","ENSG00000000938") 
# 將這些ENSEMBL ID 賦值給x
> cols <- c("SYMBOL", "GENENAME")
> z <- select(org.Hs.eg.db,keys=x,columns=cols,keytype="ENSEMBL")
# select 函數(shù)圆仔,將ensembl ID 對(duì)應(yīng)到 gene name,賦值給z
> View(z) #查看z

第二題
根據(jù)R包hgu133a.db找到下面探針對(duì)應(yīng)的基因名(symbol)
1053_at
117_at
121_at
1255_g_at
1316_at
1320_at
1405_i_at
1431_at
1438_at
1487_at
1494_f_at
1598_g_at
160020_at
1729_at
177_at

提示:
library(hgu133a.db)
ids=toTable(hgu133aSYMBOL)
head(ids)

答2
>  if (!requireNamespace("BiocManager", quietly = TRUE))
  install.packages("BiocManager")
  BiocManager::install("hgu95av2.db")   #Bioconductor 下載安裝hgu95av2.db 包垃瞧,
> suppressMessages(library(hgu133a.db))   #去除加載包的警告
> library(hgu133a.db)  #加載包 
> keytypes(hgu133a.db)  #查看包的的內(nèi)容
[1] "ACCNUM"       "ALIAS"        "ENSEMBL"      "ENSEMBLPROT"  "ENSEMBLTRANS"
[6] "ENTREZID"     "ENZYME"       "EVIDENCE"     "EVIDENCEALL"  "GENENAME"    
[11] "GO"           "GOALL"        "IPI"          "MAP"          "OMIM"        
[16] "ONTOLOGY"     "ONTOLOGYALL"  "PATH"         "PFAM"         "PMID"        
[21] "PROBEID"      "PROSITE"      "REFSEQ"       "SYMBOL"       "UCSCKG"      
[26] "UNIGENE"      "UNIPROT" 
> x <-c("1053_at","117_at","121_at","1255_g_at","1316_at","1320_at","1405_i_at",
"1431_at","1438_at","1487_at","1494_f_at","1598_g_at","160020_at","1729_at","177_at")
> cols <- c("PROBEID","SYMBOL")
> tmp<- select(hgu133a.db,keys=keys(hgu133a.db),columns = cols)  #select 函數(shù)得到
> tmp2<-tmp[match(x,tmp$PROBEID),]  #match 函數(shù)
> View(tmp2)

第三題:
找到R包CLL內(nèi)置的數(shù)據(jù)集的表達(dá)矩陣?yán)锩娴腡P53基因的表達(dá)量,并且繪制在 progres.-stable分組的boxplot圖

提示:
suppressPackageStartupMessages(library(CLL))
data(sCLLex)
sCLLex
exprSet=exprs(sCLLex)
library(hgu95av2.db)
想想如何通過(guò) ggpubr 進(jìn)行美化坪郭。

答3
> if (!requireNamespace("BiocManager", quietly = TRUE))
  install.packages("BiocManager")
BiocManager::install("CLL")  #下載安裝CLL包
> suppressMessages(library(CLL)) 
> library(CLL)  #加載CLL包
> data(sCLLex) #調(diào)用sCLLex
> library(hgu95av2.db)  #加載hgu95av2.db包
> exprSet <- exprs(sCLLex) 
> pdata <- pData(sCLLex) 
> p2s <- toTable(hgu95av2SYMBOL) 
> p3 <- filter(p2s,symbol=='TP53') 

第四題
找到BRCA1基因在TCGA數(shù)據(jù)庫(kù)的乳腺癌數(shù)據(jù)集(Breast Invasive Carcinoma (TCGA, PanCancer Atlas))的表達(dá)情況

提示:使用http://www.cbioportal.org/index.do 定位數(shù)據(jù)集:http://www.cbioportal.org/datasets

可以在網(wǎng)站中直接查看个从,也可以用將數(shù)據(jù)下載后,R代碼得到

第五題
找到TP53基因在TCGA數(shù)據(jù)庫(kù)的乳腺癌數(shù)據(jù)集的表達(dá)量分組看其是否影響生存

提示使用:http://www.oncolnc.org/

找到官網(wǎng)歪沃,[http://www.oncolnc.org/](http://www.oncolnc.org/)

第六題
下載數(shù)據(jù)集GSE17215的表達(dá)矩陣并且提取下面的基因畫(huà)熱圖

提示:根據(jù)基因名拿到探針I(yè)D嗦锐,縮小表達(dá)矩陣?yán)L制熱圖,沒(méi)有檢查到的基因直接忽略即可沪曙。

ACTR3B ANLN BAG1 BCL2 BIRC5 BLVRA CCNB1 CCNE1 CDC20 CDC6 CDCA1 CDH3 CENPF CEP55 CXXC5 EGFR ERBB2 ESR1 EXO1 FGFR4 FOXA1 FOXC1 GPR160 GRB7 KIF2C KNTC2 KRT14 KRT17 KRT5 MAPT MDM2 MELK MIA MKI67 MLPH MMP11 MYBL2 MYC NAT1 ORC6L PGR PHGDH PTTG1 RRM2 SFRP1 SLC39A6 TMEM45B TYMS UBE2C UBE2T

第七題
下載數(shù)據(jù)集GSE24673的表達(dá)矩陣計(jì)算樣本的相關(guān)性并且繪制熱圖奕污,需要標(biāo)記上樣本分組信息

rm(list=ls())  #刪除已有變量
options(stringsAsFactors = F)
if (!requireNamespace("BiocManager", quietly = TRUE))
  install.packages("BiocManager")
BiocManager::install('GEOquery')   
library(GEOquery)  #下載安裝GEOquery
GSE <- "GSE24673"     下載GSE24673 數(shù)據(jù)集
if(!file.exists(GSE)){
  geo <- getGEO(GSE, destdir = '.', getGPL = F, AnnotGPL = F)
  save(geo, file = paste0(GSE,'.eSet.Rdata'))
}    #if 函數(shù) 得到并保存GSE,'.eSet.Rdata' 命名為pasteo文件,賦值給geo
load(paste0(GSE,'.eSet.Rdata'))  #加載pasteo 
expr <- exprs(geo[[1]]) #獲得geo的exprimentData數(shù)據(jù)珊蟀,并賦值給expr
dim(expr) 查看expr有幾行幾列
expr[1:4,1:4]  #查看expr中一至四行菊值,一至四列的內(nèi)容
pdata <- pData(geo[[1]])  #提取phenoData的數(shù)據(jù),并賦值給pdata
# 自己根據(jù)pdata第八列做一個(gè)分組信息矩陣
grp <- c('rbc','rbc','rbc',
         'rbn','rbn','rbn',
         'rbc','rbc','rbc',
         'normal','normal')

grp_df <- data.frame(group=grp) #將grp 得到一個(gè)數(shù)據(jù)框
rownames(grp_df) <- colnames(expr) #列名等于expr中的名字
new_cor <- cor(expr)  
pheatmap::pheatmap(new_cor, annotation_col = grp_df) #熱圖

第八題
找到 GPL6244 platform of Affymetrix Human Gene 1.0 ST Array 對(duì)應(yīng)的R的bioconductor注釋包育灸,并且安裝它腻窒!

options()$repos
options()$BioC_mirror 
options(BioC_mirror="https://mirrors.ustc.edu.cn/bioc/")#Bioconductor 鏡像
options("repos" = c(CRAN="https://mirrors.tuna.tsinghua.edu.cn/CRAN/")) #清華鏡像
BiocManager::install("hugene10sttranscriptcluster",ask = F,update =T) #R包是"hugene10sttranscriptcluster",更新到最新版本
options()$repos
options()$BioC_mirror
#參考芯片與注釋包的關(guān)系 [http://www.reibang.com/p/f6906ba703a0](http://www.reibang.com/p/f6906ba703a0)

第九題
下載數(shù)據(jù)集GSE42872的表達(dá)矩陣磅崭,并且分別挑選出 所有樣本的(平均表達(dá)量/sd/mad/)最大的探針儿子,并且找到它們對(duì)應(yīng)的基因。

library(GEOquery)  #加載GEOquery包
GSE<-GSE42872
if(!file.exists(GSE)){
  geo <- getGEO(GSE, destdir = '.', getGPL = F, AnnotGPL = F)
  save(geo, file = paste0(GSE,'.eSet.Rdata'))
}
exprSet = exprs(gset[[1]])  #獲得表達(dá)矩陣
# exprSet <- exprSet[apply(exprSet, 1, function(x) sum(x>1) > 5),]
# exprSet <- log(edgeR::cpm(exprSet) + 1) 
# 處理中平均值最大的探針 
max_mean <- names(sort(apply(exprSet,1, mean), decreasing = T))[1]
# 處理中sd最大的探針 
max_sd <- names(sort(apply(exprSet,1, sd), decreasing = T))[1]
# 處理中mad最大的探針
max_mad <- names(sort(apply(exprSet,1, mad), decreasing = T))[1]
# 查詢(xún)探針I(yè)D對(duì)應(yīng)基因的symbol
library(hugene10sttranscriptcluster.db)
select(hugene10sttranscriptcluster.db,
       keys = c(max_mean, max_sd, max_mad),
       columns = c("SYMBOL"),
       keytype = "PROBEID")

第十題
下載數(shù)據(jù)集GSE42872的表達(dá)矩陣砸喻,并且根據(jù)分組使用limma做差異分析柔逼,得到差異結(jié)果矩陣


gset = getGEO('GSE42872', GSEMatrix = TRUE, AnnotGPL = FALSE, getGPL= FALSE)
s <- toTable(hugene10sttranscriptclusterSYMBOL)
exprSet = exprs(gset[[1]])
group_list <- as.character(c(rep("Control",3),rep("Vemurafenib",3)))
dim(exprSet)
# 過(guò)濾【只保留和注釋文件探針id相同的探針】
efilt <- exprSet[rownames(exprSet)%in%s$probe_id,]
dim(efilt)
## 整合1【目的:保證一個(gè)基因?qū)?yīng)一個(gè)探針;如果基因和探針一一對(duì)應(yīng)很好說(shuō)割岛,但如果一個(gè)基因?qū)?yīng)多個(gè)探針:每個(gè)探針取一行的均值-》對(duì)應(yīng)同一基因的探針取表達(dá)量最大的探針-》按照基因名給他們建索引愉适,因?yàn)槭前凑栈騺?lái)過(guò)濾探針(不用s$probe_id構(gòu)建索引的原因是,看清楚我們的目的是讓注釋包的一個(gè)基因?qū)?yīng)我們自己表達(dá)矩陣的一個(gè)探針癣漆。如果用s$probe_id那么結(jié)果就成了讓注釋包的一個(gè)探針對(duì)應(yīng)我們自己表達(dá)矩陣的一個(gè)探針维咸,當(dāng)然這樣也運(yùn)行不成功,因?yàn)樽约罕磉_(dá)矩陣的探針過(guò)濾后的數(shù)量和注釋包的探針數(shù)量不相等惠爽,這樣沒(méi)法一一對(duì)應(yīng)癌蓖。但基因名數(shù)量是不變的,什么是索引婚肆?以不變應(yīng)萬(wàn)變的就是索引)】
maxp = by(efilt,s$symbol,function(x) rownames(x)[which.max(rowMeans(x))]) 
uniprobes = as.character(maxp)
efilt=efilt[rownames(efilt)%in%uniprobes,]
## 整合2【目的:將我們表達(dá)矩陣的行名換成剛才一對(duì)一的基因名租副,并且match這個(gè)函數(shù)保證了表達(dá)矩陣和注釋包的順序是一致的】
rownames(efilt)=s[match(rownames(efilt),s$probe_id),2]

# 差異分析
suppressMessages(library(limma))
#limma需要三個(gè)矩陣:表達(dá)矩陣(efilt)、分組矩陣(design)较性、比較矩陣(contrast)
#先做一個(gè)分組矩陣~design用僧,說(shuō)明MAO是哪幾個(gè)樣本,MNO又是哪幾個(gè)赞咙,其中1代表“是”
design <- model.matrix(~0+factor(group_list))
colnames(design) <- levels(factor(group_list))
rownames(design) <- colnames(efilt)
design
#再做一個(gè)比較矩陣【一般是case比control】
contrast<-makeContrasts(paste0(unique(group_list),collapse = "-"),levels = design)
contrast
DEG <- function(efilt,design,contrast){
  ##step1
  fit <- lmFit(efilt,design)
  ##step2
  fit2 <- contrasts.fit(fit, contrast) 
  fit2 <- eBayes(fit2)  
  ##step3
  mtx = topTable(fit2, coef=1, n=Inf)
  deg_mtx = na.omit(mtx) 
  return(deg_mtx)
}
DEG_mtx <- DEG(efilt,design,contrast) #得到全部的差異基因矩陣
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末永毅,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子人弓,更是在濱河造成了極大的恐慌沼死,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,284評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件崔赌,死亡現(xiàn)場(chǎng)離奇詭異意蛀,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)健芭,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,115評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén)县钥,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人慈迈,你說(shuō)我怎么就攤上這事若贮∈∮校” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 164,614評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵谴麦,是天一觀(guān)的道長(zhǎng)蠢沿。 經(jīng)常有香客問(wèn)我,道長(zhǎng)匾效,這世上最難降的妖魔是什么舷蟀? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,671評(píng)論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮面哼,結(jié)果婚禮上野宜,老公的妹妹穿的比我還像新娘。我一直安慰自己魔策,他們只是感情好匈子,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,699評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著闯袒,像睡著了一般旬牲。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上搁吓,一...
    開(kāi)封第一講書(shū)人閱讀 51,562評(píng)論 1 305
  • 那天原茅,我揣著相機(jī)與錄音,去河邊找鬼堕仔。 笑死擂橘,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的摩骨。 我是一名探鬼主播通贞,決...
    沈念sama閱讀 40,309評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼恼五!你這毒婦竟也來(lái)了昌罩?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 39,223評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤灾馒,失蹤者是張志新(化名)和其女友劉穎茎用,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體睬罗,經(jīng)...
    沈念sama閱讀 45,668評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡轨功,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,859評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了容达。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片古涧。...
    茶點(diǎn)故事閱讀 39,981評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖花盐,靈堂內(nèi)的尸體忽然破棺而出羡滑,到底是詐尸還是另有隱情菇爪,我是刑警寧澤,帶...
    沈念sama閱讀 35,705評(píng)論 5 347
  • 正文 年R本政府宣布柒昏,位于F島的核電站凳宙,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏昙楚。R本人自食惡果不足惜近速,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,310評(píng)論 3 330
  • 文/蒙蒙 一诈嘿、第九天 我趴在偏房一處隱蔽的房頂上張望堪旧。 院中可真熱鬧,春花似錦奖亚、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,904評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)松邪。三九已至,卻和暖如春作郭,著一層夾襖步出監(jiān)牢的瞬間陨囊,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,023評(píng)論 1 270
  • 我被黑心中介騙來(lái)泰國(guó)打工夹攒, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留蜘醋,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,146評(píng)論 3 370
  • 正文 我出身青樓咏尝,卻偏偏與公主長(zhǎng)得像压语,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子编检,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,933評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容