久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

甜過(guò)初戀!這次是真的批量做TCGA的生存分析

 微笑如酒 2017-12-04


在剛剛進(jìn)入生信領(lǐng)域的時(shí)候,,我想做的事情就是三個(gè),, 

第一知道任何我想研究的基因在組織中的表達(dá)情況,

第二,,我選的基因?qū)δ[瘤的生存有無(wú)影響,, 

第三這個(gè)基因可能的作用是什么?

這是來(lái)自臨床醫(yī)生的視角,,研究疾病,,最終希望能夠服務(wù)臨床,臨床離不開(kāi)診斷和治療,,假設(shè)一個(gè)基因的表達(dá)對(duì)腫瘤的預(yù)后有影響,,他很可能就是我的盤(pán)中餐,。

有一大堆網(wǎng)頁(yè)工具可以實(shí)現(xiàn)生存分析,但是你看看jimmy已經(jīng)寫(xiě)的帖子

都可以批量做生存分析了,,還要網(wǎng)頁(yè)工具干嘛,?

一拳把人打翻在地,扶都扶不起來(lái),。 但是沒(méi)有辦法他是群主,。即使會(huì)隨時(shí)被朝陽(yáng)群眾扭送到派出所,他依然是群主,,他的排版有問(wèn)題,,但是架不住他的內(nèi)容有深度,群主喜聞樂(lè)見(jiàn),。

那么問(wèn)題來(lái)了,,上面的問(wèn)題也可以反過(guò)來(lái)問(wèn),既然別人已經(jīng)準(zhǔn)備好了網(wǎng)頁(yè)工具給你用,,你還寫(xiě)代碼做什么,?,!

四個(gè)字,,批量,自由

大氣一點(diǎn)就是高端定制,。

就這么簡(jiǎn)單,。 那開(kāi)始我們的表演:

今天我們要對(duì)TCGA里面的任意基因做生存分析,最關(guān)鍵的我們要批量做生存分析,,然后選取生存差異最顯著的基因,。

首先安裝需要的包:

  1. # Load the bioconductor installer.

  2. source('https:///biocLite.R')

  3. options(BioC_mirror='https://mirrors.ustc.edu.cn/bioc/')

  4. # Install the main RTCGA package

  5. biocLite('RTCGA')

  6. # Install the clinical and mRNA gene expression data packages

  7. biocLite('RTCGA.clinical')

  8. biocLite('RTCGA.mRNA')

然后是加載包

  1. library(RTCGA)

  2. #了解數(shù)據(jù)

  3. infoTCGA <> infoTCGA() #這個(gè)命令會(huì)返回一個(gè)數(shù)據(jù)框,可以知道有哪些數(shù)據(jù)可被下載

  4. #獲得臨床數(shù)據(jù):

  5. # Create the clinical data

  6. library(RTCGA.clinical)

  7. clin <> survivalTCGA(BRCA.clinical) #到這里臨床部分的信息已經(jīng)獲得啦

得到數(shù)據(jù)后我們先看一下他是什么結(jié)構(gòu)

  1. class()

[1] 'data.frame'

再看一下前面幾行數(shù)據(jù)

  1. head(clin)

times bcrpatientbarcode patient.vital_status 1 3767 TCGA-3C-AAAU 0 2 3801 TCGA-3C-AALI 0 3 1228 TCGA-3C-AALJ 0 4 1217 TCGA-3C-AALK 0 5 158 TCGA-4H-AAAK 0 6 1477 TCGA-5L-AAT0 0

簡(jiǎn)單說(shuō)就是三列,,TCAGid,,生存時(shí)間,和發(fā)生的事件

獲得gene表達(dá)數(shù)據(jù):

  1. library(RTCGA.mRNA) #加載數(shù)據(jù)包

  2. class(BRCA.mRNA)  #查看數(shù)據(jù)類(lèi)型發(fā)現(xiàn)是個(gè)數(shù)據(jù)框

  3. dim(BRCA.mRNA)  #看一下數(shù)據(jù)維度發(fā)現(xiàn)有590個(gè)樣本,,17815個(gè)基因

  4. BRCA.mRNA[1:5, 1:5] #看一下部分?jǐn)?shù)據(jù)樣子

  1.      bcr_patient_barcode    ELMO2  CREB3L1    RPS11  PNMA1

1 TCGA-A1-A0SD-01A-11R-A115-07 0.5070833 1.43450 0.765000 0.52600 2 TCGA-A1-A0SE-01A-11R-A084-07 0.1814167 0.89075 0.716000 0.13175 3 TCGA-A1-A0SH-01A-11R-A084-07 0.4615000 2.25925 0.417125 0.32500 4 TCGA-A1-A0SJ-01A-11R-A084-07 0.8770000 0.43775 0.115000 0.75775 5 TCGA-A1-A0SK-01A-12R-A084-07 1.4123333 -0.63725 0.492875 0.94325

好了,,行是樣本,列為gene 下面我們挑選幾個(gè)基因的表達(dá)數(shù)據(jù)出來(lái),,融合到生存的數(shù)據(jù)上去,,因?yàn)楸磉_(dá)量數(shù)據(jù)中TCGA的id號(hào)要長(zhǎng)一點(diǎn) 所以在融合前,需要先裁剪一下,,為了避免產(chǎn)生過(guò)多的中間變量,,我們使用管道符號(hào)%>%,他的作用是 把前一個(gè)計(jì)算得到結(jié)果,作為第二個(gè)函數(shù)的參數(shù),,示例如下:

  1. library(dplyr)

  2. exprSet <> BRCA.mRNA %>%

  3.  # then make it a tibble (nice printing while debugging)

  4.  as_tibble() %>%

  5.  # then get just a few genes,這里是測(cè)試用

  6.  select(bcr_patient_barcode, PAX8, GATA3, ESR1) %>%

  7.  # then trim the barcode (see head(clin), and substr)

  8.  mutate(bcr_patient_barcode = substr(bcr_patient_barcode, 1, 12)) %>%

  9.  # then join back to clinical data

  10.  inner_join(clin, by='bcr_patient_barcode')

看一下數(shù)據(jù),,發(fā)現(xiàn)就是表達(dá)量加上time,,event兩列,所以記住這規(guī)律,,最終批量的時(shí)候需要減掉這兩列


mark


開(kāi)始做生存分析

  1. library(survival)

  2. library(survminer)

對(duì)需要做生存分析的樣本分組,,把連續(xù)變量變成分類(lèi)變量,這里選擇測(cè)試的基因是GATA3

  1. group <> ifelse(esprSet$GATA3>median(esprSet$GATA3),'high','low')

構(gòu)建生存對(duì)象,,并且進(jìn)行數(shù)據(jù)處理,,這里是兩步,我只是融合在了一起

  1. sfit <> survfit(Surv(times, patient.vital_status)~group, data=esprSet)

  2. sfit

  3. summary(sfit)

直接繪圖

  1. ggsurvplot(sfit, conf.int=F, pval=TRUE)


mark



單個(gè)基因繪制成功,,我看一下能不能小規(guī)模循環(huán)操作 首先得到得到生存對(duì)象my.surv

  1. my.surv <> Surv(esprSet$times, esprSet$patient.vital_status)

使用apply循環(huán),對(duì)數(shù)據(jù)的2到4列進(jìn)行操作,,實(shí)際上就是PAX8, GATA3, ESR1這三個(gè)基因, 這里面使用了survdiff,,用來(lái)比較差異大小,,獲得p值

  1. log_rank_p <> apply(esprSet[,2:4], 2, function(values1){

  2.  group=ifelse(values1>median(values1),'high','low')

  3.  kmfit2 <> survfit(my.surv~group,data=esprSet)

  4.  #plot(kmfit2)

  5.  data.survdiff=survdiff(my.surv~group)

  6.  p.val = 1 - pchisq(data.survdiff$chisq, length(data.survdiff$n) - 1)

  7. })

運(yùn)行完了之后返回的找出小于0.05的P.val,在這個(gè)例子里面因?yàn)闆](méi)有基因的p.val小于0.05,,所以篩選不出來(lái)

  1. log_rank_p <> log_rank_p[log_rank_p0.05]

篩選后排序,,并獲得基因名 genediff <->rank_p))


好了生存數(shù)據(jù)已經(jīng)獲取,

表達(dá)數(shù)據(jù)小規(guī)模試驗(yàn)可行,,

批量操作也能實(shí)現(xiàn),,

下面就進(jìn)入實(shí)戰(zhàn)環(huán)節(jié),前戲?qū)嵲谔L(zhǎng),,但是你要相信你只要不睡著,,這些都是值得的

獲得完整的表達(dá)量數(shù)據(jù)

  1. library(dplyr)

  2. esprSet <> BRCA.mRNA %>%

  3.  # then make it a tibble (nice printing while debugging)

  4.  as_tibble() %>%

  5.  # then trim the barcode (see head(clin), and ?substr)

  6.  mutate(bcr_patient_barcode = substr(bcr_patient_barcode, 1, 12)) %>%

  7.  # then join back to clinical data

  8.  inner_join(clin, by='bcr_patient_barcode')

構(gòu)建生存對(duì)象my.surv

  1. library(survival)

  2. my.surv <> Surv(esprSet$times, esprSet$patient.vital_status)

在進(jìn)行下一步之前,我居然突發(fā)奇想,,我想看一看,,這個(gè)表達(dá)數(shù)據(jù)里面哪些基因的NA值最多,有沒(méi)有NA值多過(guò)樣本數(shù)量一般的基因呢,? 先構(gòu)建了一個(gè)函數(shù),,他對(duì)數(shù)據(jù)的列起作用,統(tǒng)計(jì)NA值的個(gè)數(shù),,最終返回成一個(gè)數(shù)據(jù)框

  1. rem <> function(x){

  2.  r <>as.numeric(apply(x,2,function(i) sum(is.na(i))))

  3.  return(data.frame(geneName=names(x)[which(r > 0)],na_num=r[which(r > 0)]))

  4. }

然后對(duì)表達(dá)量數(shù)據(jù)進(jìn)行統(tǒng)計(jì)

  1. na_count <> rem(esprSet)

最終發(fā)現(xiàn)NA最多的基因是LCE1B,,有17個(gè),所以數(shù)據(jù)不需要特殊處理啦

  1. na_count <> dplyr::arrange(na_count,desc(na_num))

那就開(kāi)始批量運(yùn)算了,,一開(kāi)始就用apply,,發(fā)現(xiàn)大概需要運(yùn)行50分鐘以上,所以嘗試使用并行化處理 R語(yǔ)言里面的并行化有個(gè)專(zhuān)門(mén)的項(xiàng)目就是給apply的,,使用起來(lái)也是很方便

  1. #嘗試使用并行運(yùn)算

  2. library(parallel)

  3. #detectCores()檢查當(dāng)前電腦可用核數(shù)

  4. cl.cores <> detectCores()

  5. #makeCluster(cl.cores)使用剛才檢測(cè)的核并行運(yùn)算,,我的服務(wù)器是28核56線程,我就用50吧

  6. cl <> makeCluster(50)

  7. #這是坑,,parApply里面用到的函數(shù)以及變量都需要申明,,不聲明就必須用模塊

  8. clusterExport(cl,c('esprSet','my.surv'))

  9. #length(names(esprSet))-2,,為什么減去2,因?yàn)橹靶∫?guī)模測(cè)試時(shí),,我們知道最后兩個(gè)是time和event,,不是表達(dá)量

  10. #數(shù)據(jù)從25開(kāi)始,原因是從2開(kāi)始會(huì)報(bào)錯(cuò),,暫時(shí)無(wú)法解決,還有要注意是parApply,,A要大寫(xiě)的

  11. log_rank_p <> parApply(cl,esprSet[,25:length(names(esprSet))-2],2,function(values){

  12.  group=ifelse(values>median(na.omit(values)),'high','low')

  13.  kmfit2 <> survival::survfit(my.surv~group,data=esprSet)

  14.  #plot(kmfit2)

  15.  data.survdiff=survival::survdiff(my.surv~group)

  16.  p.val = 1 - pchisq(data.survdiff$chisq, length(data.survdiff$n) - 1)

  17. })

這個(gè)運(yùn)行的時(shí)間可能就是2分鐘 終止并行化

  1. stopCluster(cl)

找出小于0.05的P.val

  1. log_rank_p <> log_rank_p[log_rank_p0.05]

篩選后排序,并獲得基因名

  1. gene_diff <> as.data.frame(sort(log_rank_p))

最終得到的gene是2153個(gè),,這個(gè)數(shù)據(jù)是我之前留下的,,本次寫(xiě)貼時(shí)要帶孩子,在家沒(méi)法運(yùn)行運(yùn)算,。 數(shù)據(jù)保存可以這樣:

  1. save(gene_diff,file = 'gene_df.Rda')

如果想用的時(shí)候就這樣:

  1. load(file = 'gene_df.Rda')

沒(méi)有必要先寫(xiě)成txt格式,,然后要用的時(shí)候再讀取進(jìn)來(lái),直接保存成R語(yǔ)言的格式即可,,

你能想象每次用完word保存成圖片,,下次再使用時(shí)用OCR識(shí)別圖片變成文字再編輯的狀態(tài)么?

既然到了這一步,,我們隨便選取一個(gè)基因來(lái)作圖,,閉著眼睛都知道,都是有差異的

  1. library(survminer)

  2. group <> ifelse(esprSet$LRRC8D>median(esprSet$LRRC8D),'high','low')

  3. sfit <> survfit(Surv(times, patient.vital_status)~group, data=esprSet)

  4. ggsurvplot(sfit, conf.int=FALSE, pval=TRUE)


mark

好吧效果很不錯(cuò)嘛

這時(shí)候把癌和癌旁的數(shù)據(jù)作差異分析,,得到的基因與今天獲得的基因取交集,,就可以獲得又差異表達(dá),,又對(duì)生存有影響的基因了,。

今天我們是用的別人已經(jīng)下載好的數(shù)據(jù),明天我們來(lái)嘗試自己下載并且清理數(shù)據(jù),,而且只用一種語(yǔ)言,,就是R語(yǔ)言

要知道,今天往后的ceRNA網(wǎng)絡(luò)構(gòu)建,,單基因GSEA都是基于這些表達(dá)量數(shù)據(jù)的,。

今天很美好,明天更有用,,但是大部分人都,。。,。,。馬云說(shuō)的。


    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,,所有內(nèi)容均由用戶(hù)發(fā)布,,不代表本站觀點(diǎn),。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買(mǎi)等信息,,謹(jǐn)防詐騙,。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào),。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶(hù) 評(píng)論公約

    類(lèi)似文章 更多