jimmy
生信技能樹聯盟創始人
有這個想法很久了,我教了很多人如何批量下載TCGA數據,以及分析各個癌症的somatic突變信息以及TMB,還有突變的特徵頻譜。
TCGA計劃的4個找somatic mutation的軟件使用體驗
但是限於時間和知識背景,雖然代碼方面問題不大,但是即使把所有的數據全部走一波我的流程我也可能會看不懂,所以希望某些背景相關朋友能根據我教的知識來分析一波。
腫瘤突變分析越來越火了,一起來學習一下吧。今天和大家一起探索TCGA數據中胃癌突變的情況。
今天的探索分爲兩個部分:
1.Mutation
1)數據下載
目前TCGA突變分析的數據vcf格式數據是受限的,所以我們這應用maf文件進行分析。具體下載方式。 直接去TCGA官網下載數據也不難,都很容易,並且工具都在添加一些新的功能,比如最近添加的CNV的分析,舉一反三的看ICGC的應用方式幾乎和TCGA的應用方式是一樣的。
2)工具
主要用的R包,maftools,deconstructSigs以及他們的依賴包,後面的代碼會詳細的解釋。安裝過程有時候會非常痛苦,但是一般都能解決,安裝R包的終結方式應該是“耐心”。如果網絡安裝不太好的話建議大家先下載下來,應用本地安裝,安裝後加載包時可能出現缺少依賴包,這時再耐心的安裝依賴包即可。應用這種方式,目前沒有遇到怎麼也安裝不上的包(當然了版本本身不支持的情況除外)。
3)代碼和結果
source("https://bioconductor.org/biocLite.R") chooseBioCmirror() #選擇一個就近的鏡像 biocLite("maftools")#安裝 (maftools:http://bioconductor.org/packages/release/bioc/vignettes/maftools/inst/doc/maftools.html) library(maftools) Mandatory fields(必須字段): Hugo_Symbol, Chromosome, Start_Position, End_Position, Reference_Allele, Tumor_Seq_Allele2, Variant_Classification, Variant_Type and Tumor_Sample_Barcode(樣本名,此字段溝通樣本的maf文件和臨牀信息的關鍵,前者). laml = read.maf(maf="STAD.mutectAdjustBarcode.maf.txt",clinicalData="clinical.STAD.tsv")#read.maf()函數有兩個最關鍵的參數maf,clinicalData,這個兩個數據框只需要共同的Tumor_Sample_Barcode,這個一點用起來非常方便,很多帖子並沒有提到此處,詳細信息可參考maftools的官網。注意:TCGA直接下載的maf文件第16列即爲樣品名(例如:TCGA-FP-A4BE-11A-11D-A24F-08),但是直接下載的臨牀數據的樣本名(例:TCGA-FP-A4BE)是不同的,此處需要整理成一致後讀入。 getFields(laml) #查看有哪些字段,TCGA下載的數據120個字段 getClinicalData(laml) #查看臨牀信息 getSampleSummary(laml) #查看每個樣品發生突變的情況,此處就可以計算tumor mutation load,TML=Missense_Mutation/外顯子數。
plotmafSummary(maf = laml, rmOutlier = TRUE, addStat = 'median', dashboard = TRUE, titvRaw=FALSE)#繪製整體的突變情況 #waterfall plot #We will draw oncoplots for top ten mutated genes. oncoplot(maf = laml, top = 20, fontSize = 12) #繪製前20個突變基因的瀑布圖。oncoplot()中參數gene=c()可以指定基因名,繪製感興趣的基因的瀑布圖
此圖繪製出了胃癌中突變前20的基因。其中可以看到TP53等著名基因的突變。渴望探索的小夥伴可以去TCGA的官網試試一樣可以繪製出此圖,點選即可。
maftools的最核心的功能可能就介紹完了,但是maftools的功能遠不止這些,其實臨牀信息方面我們還沒有進行探索,同時maftools還可以進行某個基因突變情況的生存分析,這個下次帶大家進行。網上有很多好的帖子介紹,最好的帖子還是官方的介紹。
2. Mutation Signature
首先了解mutation signature的概念,現在很多生信文章中提到Signature 1 ,Signature 3等,看到這個有點困惑,通讀了這篇文章Signatures of mutational processes in human cancer[https://www.nature.com/articles/nature12477]。
文章中提到Different mutational processes often generate different combinations of mutation types, termed ‘signatures’.
(不同的突變過程可以產生不同的突變類型的組合),稱爲“特徵”。
這個概念給我的感覺是在混亂中用數學統計分析查找規律,並應用規律。
那腫瘤的突變特徵如何計算呢?
source('http://bioconductor.org/biocLite.R'); chooseBioCmirror() install.packages('deconstructSigs') # dependencies 'BSgenome', 'BSgenome.Hsapiens.UCSC.hg19' BiocInstaller::biocLite('BSgenome') BiocInstaller::biocLite('BSgenome.Hsapiens.UCSC.hg19') BiocInstaller::biocLite('BSgenome.Hsapiens.UCSC.hg38') BiocInstaller::biocLite('BSgenome.Hsapiens.NCBI.GRCh38') #先把這些包裝上,後面幾個包比較大,建議大家先下載然後本地安裝。都可以安裝成功的。(BSgenome.Hsapiens.UCSC.hg38 vs BSgenome.Hsapiens.NCBI.GRCh38 https://www.biostars.org/p/340852/) ####這段代碼簡單可以看出,NCBI的chromosome直接用的數字,而UCSC用的是chrX,這點應該看到。 genome.ncbi <- BSgenome.Hsapiens.NCBI.GRCh38 seqlengths(genome.ncbi) genome.ucsc<-BSgenome.Hsapiens.UCSC.hg38 seqlengths(genome.ucsc) #### suppressPackageStartupMessages(library("deconstructSigs")) suppressPackageStartupMessages(library("BSgenome")) library("BSgenome.Hsapiens.NCBI.GRCh38")#此處加載這個註釋包的原因爲TCGA的maf文件目前註釋GRCh38 options(stringsAsFactors = F) str(laml) #查看數據結構,從maf文件中拿到我們需要的數據 mut = laml@data head(mut) getField(laml@data) a=mut[,c(16,5,6,11,13)] colnames(a)=c( "Sample","chr", "pos","ref", "alt") head(a) a$Sample=as.character(a$Sample) a=a[nchar(a$ref)==1 & nchar(a$alt)==1,] #NCBI.GRCh38染色體號無“chr”,所以要替換掉 a2=cbind(a[,-2],chr=gsub("chr","",a$chr)) dim(a2) head(a2) tail(a2) sigs.input <- mut.to.sigs.input(mut.ref = a2, sample.id = "Sample", chr = "chr", pos = "pos", ref = "ref", alt = "alt", bsg = BSgenome.Hsapiens.NCBI.GRCh38 #此處一定要注意到版本的問題否則結果可能是錯的。 ) class(sigs.input) head(t(sigs.input)) #下面的語句,批量計算每個樣本的signature。核心的函數就是whichSignatures() w=lapply(unique(a2$Sample), function(i){ ## signatures.cosmic signatures.nature2013 sample_1 = whichSignatures(tumor.ref = sigs.input, signatures.ref = signatures.cosmic, sample.id = i, contexts.needed = TRUE, tri.counts.method = 'default') return(sample_1$weights) }) w=do.call(rbind,w)
plotSignatures(plot_example, sub = 'example') library(pheatmap) #繪製熱圖 pheatmap(t(w),cluster_rows = F,cluster_cols = T) pheatmap(w,cluster_rows = T,cluster_cols = F)
繪製得到這些突變和突變特徵遠遠不是學習的結束,而是開始,利用這些突變可以挖掘文章探索突變以及突變特徵的意義等等,寫到這裏我感覺把文章都告訴你怎麼寫了,加油吧,小夥伴們。
參考文獻:
1. 下載TCGA所有癌症的maf文件做signature分析
其他參考內容文章內已經有鏈接。
後記:
寫貼子時反覆回顧代碼感覺,收穫很大。感謝技能樹!如有錯訛望及時批評指正,共同進步。