研究需要,不得不斷的學(xué)習(xí)新的軟件包,R的突出特點(diǎn)即在于開源,和眾多的軟件包,其學(xué)習(xí)的難點(diǎn)也在于需要包太多,每用新的包都需要學(xué)習(xí),了解軟件的使用參數(shù)。該文記錄genefu包的學(xué)使用,我自己構(gòu)建的模型已經(jīng)有了一定的結(jié)果,最后希望與現(xiàn)有的多基因芯片模型比較,其實(shí)我也不知道自己基于測序的模型能否與現(xiàn)有的芯片模型比較,我也完全可以到現(xiàn)在就整理數(shù)據(jù),告一段落,然后繼續(xù)學(xué)習(xí)其它的套路。只是因?yàn)槲蚁肷钊胍恍?,真正的做一些有意義的工作,也許可以在時間的長河里留下痕跡,提醒自己時間的力量。
####genefu包的使用
##修改鏡像
options(BioC_mirror="https://mirrors.ustc.edu.cn/bioc/")
if(FALSE){BiocManager::install("genefu")
}
##
library(genefu)
library(xtable)
library(rmeta)
library(Biobase)
library(caret)
##
if(FALSE){BiocManager::install("breastCancerMAINZ")
BiocManager::install("breastCancerTRANSBIG")
BiocManager::install("breastCancerUPP")
BiocManager::install("breastCancerUNT")
BiocManager::install("breastCancerNKI")
}
##加載各數(shù)據(jù)集
library(breastCancerMAINZ)
library(breastCancerTRANSBIG)
library(breastCancerUPP)
library(breastCancerUNT)
library(breastCancerNKI)
##case1比較風(fēng)險(xiǎn)預(yù)測模型
##5個芯片數(shù)據(jù)集已整合為R包
##
data(breastCancerData)
##查看數(shù)據(jù)結(jié)構(gòu)
str(nki7g)
dim(nki7g)
cinfo <- colnames(pData(mainz7g))
##整合數(shù)據(jù)到向量
data.all <- c("transbig7g"=transbig7g, "unt7g"=unt7g, "upp7g"=upp7g,
"mainz7g"=mainz7g, "nki7g"=nki7g)
##mainz與NKI數(shù)據(jù)集無重復(fù)
idtoremove.all <- NULL
duplres <- NULL
##關(guān)注transbig7g數(shù)據(jù)集, unt7g upp7g
dim(pData(transbig7g))
dim(pData(unt7g))
dim(pData(upp7g))
##可觀察到都為21列的臨床信息,sample數(shù)不同
##rbind整合三個臨床信息,
demo.all <- rbind(pData(transbig7g), pData(unt7g), pData(upp7g))
dn2 <- c("TRANSBIG", "UNT", "UPP")
## 檢索VDXKIU, KIU, UPPU 三個series
ds2 <- c("VDXKIU", "KIU", "UPPU")
##is.element(A,B) A中元素屬于B返回TRUE or FALSE
##有完整series信息并且留下想要的
demot <- demo.all[complete.cases(demo.all[ , c("series")]) & is.element(demo.all[ , "series"], ds2), ]
dim(demot)#可見篩選留下了290個sample
## 找到 series中相同的病人
##因demot中包含21列信息
colnames(demot)
# 找到 series id中重復(fù)的id
duplid <- sort(unique(demot[duplicated(demot[ , "id"]), "id"]))
duplrest <- NULL
##for循環(huán)中提取出游完整id dataset,且滿足要求
for(i in 1:length(duplid)) {
tt <- NULL
for(k in 1:length(dn2)) {
myx <- sort(row.names(demot)[complete.cases(demot[ , c("id", "dataset")]) &
demot[ , "id"] == duplid[i] & demot[ , "dataset"] == dn2[k]])
if(length(myx) > 0) { tt <- c(tt, myx) }
}
duplrest <- c(duplrest, list(tt))
}
##只要屬于我們關(guān)注的3個數(shù)據(jù)集
names(duplrest) <- duplid
duplres <- c(duplres, duplrest)
## 檢索 VVDXOXFU, OXFU series
ds2 <- c("VDXOXFU", "OXFU")
demot <- demo.all[complete.cases(demo.all[ , c("series")]) & is.element(demo.all[ , "series"], ds2), ]
# Find the duplicated patients in that series
duplid <- sort(unique(demot[duplicated(demot[ , "id"]), "id"]))
duplrest <- NULL
for(i in 1:length(duplid)) {
tt <- NULL
for(k in 1:length(dn2)) {
myx <- sort(row.names(demot)[complete.cases(demot[ , c("id", "dataset")]) &
demot[ , "id"] == duplid[i] & demot[ , "dataset"] == dn2[k]])
if(length(myx) > 0) { tt <- c(tt, myx) }
}
duplrest <- c(duplrest, list(tt))
}
names(duplrest) <- duplid
duplres <- c(duplres, duplrest)
#### 得到完整的重復(fù)patients
##代碼較復(fù)雜拆解查看下
a<-lapply(duplres, function(x) { return(x[-1]) })##對列表每個元素操作
unlist(a)##解開列表
duPL <- sort(unlist(lapply(duplres, function(x) { return(x[-1]) } )))
str(duPL)#duPL屬于character