续昨天的学习,不过是重启了一下,临床富集分析又可以做了,但是Signature分析这一步开始出现了新的错误,后面解决。不知道为什么GitHub都打不开连接了,好多资料都找不到。桑心
9.7 临床富集分析
clinicalEnrichment
是另一个函数,它提取与样本相关的任何临床特征并进行富集分析。它执行各种groupwise和pairwise成对比较,以确定临床特征中每个类别的丰富突变。下面是一个识别与FAB_classfication
相关的突变的示例。
fab.ce = clinicalEnrichment(maf = laml, clinicalFeature = 'FAB_classification')
#>
#> M0 M1 M2 M3 M4 M5 M6 M7
#> 19 44 44 21 39 19 3 3
#Results are returned as a list. Significant associations p-value < 0.05
fab.ce$groupwise_comparision[p_value < 0.05]
#> Hugo_Symbol Group1 Group2 n_mutated_group1 n_mutated_group2
#> 1: IDH1 M1 Rest 11 of 44 7 of 149
#> 2: TP53 M7 Rest 3 of 3 12 of 190
#> 3: DNMT3A M5 Rest 10 of 19 38 of 174
#> 4: CEBPA M2 Rest 7 of 44 6 of 149
#> 5: RUNX1 M0 Rest 5 of 19 11 of 174
#> 6: NPM1 M5 Rest 7 of 19 26 of 174
#> 7: CEBPA M1 Rest 6 of 44 7 of 149
#> p_value OR_low OR_high fdr
#> 1: 0.0002597371 0 0.3926994 0.0308575
#> 2: 0.0003857187 0 0.1315271 0.0308575
#> 3: 0.0057610493 0 0.6406007 0.3072560
#> 4: 0.0117352110 0 0.6874270 0.3757978
#> 5: 0.0117436825 0 0.6466787 0.3757978
#> 6: 0.0248582372 0 0.8342897 0.6628863
#> 7: 0.0478737468 0 0.9869971 1.0000000
以上结果表明,与队列的其余部分相比,IDH1突变在M1亚型白血病中富集。同样,DNMT3A在M5中,RUNX1在M0中,依此类推。这些都是众所周知的结果,此函数有效地重新捕获了它们。可以使用任何类型的临床特征来执行这样的分析。还有一个小函数-plotEnrichmentResults
,可用于绘制这些结果。
plotEnrichmentResults(enrich_res = fab.ce, pVal = 0.05)
9.8 药物与基因的相互作用。
从药物基因相互作用数据库汇编而来的药物-基因相互作用和基因和药性信息可用drugInteractions
函数查询
dgi = drugInteractions(maf = laml, fontSize = 0.75)
上图显示了潜在的可用药基因类别,以及与之相关的最多5个基因。人们还可以提取关于药物与基因相互作用的信息。例如,下面是已知/报告的药物与DNMT3A相互作用的结果。
dnmt3a.dgi = drugInteractions(genes = "DNMT3A", drugs = TRUE)
#> Number of claimed drugs for given genes:
#> Gene N
#> 1: DNMT3A 7
#Printing selected columns.
dnmt3a.dgi[,.(Gene, interaction_types, drug_name, drug_claim_name)]
#> Gene interaction_types drug_name drug_claim_name
#> 1: DNMT3A N/A
#> 2: DNMT3A DAUNORUBICIN Daunorubicin
#> 3: DNMT3A DECITABINE Decitabine
#> 4: DNMT3A IDARUBICIN IDARUBICIN
#> 5: DNMT3A DECITABINE DECITABINE
#> 6: DNMT3A inhibitor DECITABINE CHEMBL1201129
#> 7: DNMT3A inhibitor AZACITIDINE CHEMBL1489
如果您认为此函数对你有用 10,请引用DGIdb article。 免责声明:此功能中使用的资源仅用于研究目的。它不应用于紧急情况或医疗或专业建议。。 ### 9.9致癌信号通路。 OncogenicPathways
函数查看TCGA队列中已知的致癌信号通路的富集情况 11。
OncogenicPathways(maf = laml)
#> Pathway N n_affected_genes fraction_affected
#> 1: RTK-RAS 85 18 0.21176471
#> 2: Hippo 38 7 0.18421053
#> 3: NOTCH 71 6 0.08450704
#> 4: MYC 13 3 0.23076923
#> 5: WNT 68 3 0.04411765
#> 6: TP53 6 2 0.33333333
#> 7: NRF2 3 1 0.33333333
#> 8: PI3K 29 1 0.03448276
#> 9: Cell_Cycle 15 0 0.00000000
#> 10: TGF-Beta 7 0 0.00000000
也有可能将完整的路径可视化。
PlotOncogenicPathways(maf = laml, pathways = "RTK-RAS")
抑癌基因用红色表示,癌基因用蓝色字体表示。 ### 9.10 肿瘤异质性与数学成绩 #### 9.10.1 肿瘤样本的异质性肿瘤一般是异质性的,即由多个克隆组成。这种异质性可以通过聚类不同的等位基因频率来推断。inserHetereneity
函数使用VAF信息对变量进行聚类(使用mclust
),从而推断出克隆性。默认情况下,inserverHetereneity
函数查找包含VAF信息的t_vaf列。但是,如果字段名称与t_vaf
不同,我们可以使用参数vafCol
手动指定。例如,在本例中,研究vaf
存储在字段名i_TumorVAF_WU
下。
#Heterogeneity in sample TCGA.AB.2972
tcga.ab.2972.het = inferHeterogeneity(maf = laml, tsb = 'TCGA-AB-2972', vafCol = 'i_TumorVAF_WU')
print(tcga.ab.2972.het$clusterMeans)
#> Tumor_Sample_Barcode cluster meanVaf
#> 1: TCGA-AB-2972 2 0.4496571
#> 2: TCGA-AB-2972 1 0.2454750
#> 3: TCGA-AB-2972 outlier 0.3695000
#Visualizing results
plotClusters(clusters = tcga.ab.2972.het)
上图清楚地显示了两个平均变异等位基因频率为45%的克隆(主克隆)和另一个次要克隆的变异等位基因频率为25%。 虽然变异等位基因频率的聚类使我们对异质性有了一个很好的认识,但也可以用数值来衡量异质性的程度。MATH score(上图中的副标题)是肿瘤内异质性的一种简单的定量测量,它计算出VAF分布的宽度。研究发现,较高的MATH scores 与较差的结果有关。MATH score也可以作为生存分析的代理变量-11.
9.10.2 忽略拷贝数更改区域的变异。
我们可以使用拷贝数信息来忽略位于拷贝数改变区域的变异。拷贝数改变会导致变异等位基因频率异常高/低,这往往会影响聚类。去除这些变异可以改进聚类和密度估计,同时保留有生物学意义的结果。拷贝数信息可以作为从分割程序生成的分割文件来提供,例如来自“DNACopy” Bioconductor package的圆形二进制分割的R包6
seg = system.file('extdata', 'TCGA.AB.3009.hg19.seg.txt', package = 'maftools')
tcga.ab.3009.het = inferHeterogeneity(maf = laml, tsb = 'TCGA-AB-3009', segFile = seg, vafCol = 'i_TumorVAF_WU')
#> Hugo_Symbol Chromosome Start_Position End_Position Tumor_Sample_Barcode
#> 1: PHF6 23 133551224 133551224 TCGA-AB-3009
#> t_vaf Segment_Start Segment_End Segment_Mean CN
#> 1: 0.9349112 NA NA NA NA
#> Hugo_Symbol Chromosome Start_Position End_Position Tumor_Sample_Barcode
#> 1: NF1 17 29562981 29562981 TCGA-AB-3009
#> 2: SUZ12 17 30293198 30293198 TCGA-AB-3009
#> t_vaf Segment_Start Segment_End Segment_Mean CN cluster
#> 1: 0.8419000 29054355 30363868 -0.9157 1.060173 CN_altered
#> 2: 0.8958333 29054355 30363868 -0.9157 1.060173 CN_altered
#Visualizing results. Highlighting those variants on copynumber altered variants.
plotClusters(clusters = tcga.ab.3009.het, genes = 'CN_altered', showCNvars = TRUE)
上图显示了两个VAF高的基因NF1和SUZ12,这是由于拷贝数变异(缺失)所致。这两个基因在分析中被忽略了。 ### 9.11 突变Signatures 每一种癌症,在进展过程中都会留下一个Signatures,其Signatures是特定的核苷酸替换模式。 Alexandrov et.al已经显示出这样的突变signatures,源自5的7,000多个癌症样本。这样的signatures可以通过分解核苷酸替换矩阵来提取,基于突变碱基周围的直接碱基将其分类为96个替换类别。还可以将提取的signatures与那些signatures进行比较validated signatures。 signatures分析的第一步是获得突变碱基周围的相邻碱基,并形成突变矩阵。 >注意:早期版本的maftools需要一个fasta
文件作为输入。但是从1.8.0开始,BSgenome
对象被用于更快的序列提取。
#Requires BSgenome object
library(BSgenome.Hsapiens.UCSC.hg19, quietly = TRUE)
laml.tnm = trinucleotideMatrix(maf = laml, prefix = 'chr', add = TRUE, ref_genome = "BSgenome.Hsapiens.UCSC.hg19")
#> Warning in trinucleotideMatrix(maf = laml, prefix = "chr", add = TRUE, ref_genome = "BSgenome.Hsapiens.UCSC.hg19"): Chromosome names in MAF must match chromosome names in reference genome.
#> Ignorinig 101 single nucleotide variants from missing chromosomes chr23
#> -Extracting 5' and 3' adjacent bases
#> -Extracting +/- 20bp around mutated bases for background C>T estimation
#> -Estimating APOBEC enrichment scores
#> --Performing one-way Fisher's test for APOBEC enrichment
#> ---APOBEC related mutations are enriched in 3.315 % of samples (APOBEC enrichment score > 2 ; 6 of 181 samples)
#> -Creating mutation matrix
#> --matrix of dimension 188x96
上述功能执行两个步骤: * 估计APOBEC
富集分数 * 为signature分析准备突变矩阵。
9.11.1 APOBEC Enrichment estimation.
APOBEC诱导的突变在实体瘤中更为常见,并且主要与TCW基序中发生的C>T转换事件有关。上述命令中的APOBEC富集分数是使用Roberts et al 13描述的方法估计的。简而言之,将发生在TCW基序内的C>T突变富集在给定样本中的所有C>T突变上,并将其与背景胞嘧啶和发生在突变碱基20bp内的TCW进行比较。
如Roberts等人的原始研究中所描述的,还执行单侧fishers精确测试以统计地评估富集分数。
9.11.2 APOBEC富集与非富集的区别。
我们还可以分析APOBEC富集型和非APOBEC富集型的突变模式的差异,plotApobecDiff
是一个函数,它取trinucleotideMatrix
估计的APOBEC富集值,将样本分为APOBEC富集型和非APOBEC富集型。一旦分层,它就会比较这两组人,以确定差异改变的基因。 请注意,没有APOBEC富集的LAML不是此类分析的理想队列,因此下面的图表仅用于演示目的。
plotApobecDiff(tnm = laml.tnm, maf = laml, pVal = 0.2)
#> $results
#> Hugo_Symbol Enriched nonEnriched pval or ci.up
#> 1: TP53 2 13 0.08175632 5.9976455 46.608861
#> 2: TET2 1 16 0.45739351 1.9407002 18.983979
#> 3: FLT3 2 45 0.65523131 1.4081851 10.211621
#> 4: DNMT3A 1 47 1.00000000 0.5335362 4.949499
#> 5: ADAM11 0 2 1.00000000 0.0000000 164.191472
#> ---
#> 132: WAC 0 2 1.00000000 0.0000000 164.191472
#> 133: WT1 0 12 1.00000000 0.0000000 12.690862
#> 134: ZBTB33 0 2 1.00000000 0.0000000 164.191472
#> 135: ZC3H18 0 2 1.00000000 0.0000000 164.191472
#> 136: ZNF687 0 2 1.00000000 0.0000000 164.191472
#> ci.low adjPval
#> 1: 0.49875432 1
#> 2: 0.03882963 1
#> 3: 0.12341748 1
#> 4: 0.01101929 1
#> 5: 0.00000000 1
#> ---
#> 132: 0.00000000 1
#> 133: 0.00000000 1
#> 134: 0.00000000 1
#> 135: 0.00000000 1
#> 136: 0.00000000 1
#>
#> $SampleSummary
#> Cohort SampleSize Mean Median
#> 1: Enriched 6 7.167 6.5
#> 2: nonEnriched 172 9.715 9.0
9.11.3 Signature分析。
Signature分析包括以下步骤。 1.estimateSignatures
-在一系列值上运行NMF,并衡量拟合的好坏-以时间为单位Cophenetic correlation。 2.plotCophenetic
-绘制elblow图,帮助您确定最佳Signature数量。最佳可能的Signature是共生相关性显著下降的值。 3.ExtractSignatures
Signature-使用非负矩阵分解将矩阵分解为三个N
个Signature,根据上述两个步骤选择N
个Signature。如果您已经对N‘有了很好的估计,您可以跳过以上两步。 4.将上述步骤中提取的Signature
compareSignatures与signatures[11](http://127.0.0.1:25995/library/maftools/doc/maftools.html#references)数据库中已知的[COSMIC](https://cancer.sanger.ac.uk/cosmic/signatures/SBS/)签名进行比对,并计算余弦相似度,确定最佳匹配。 5.
plotSignatures`-plots signatures
注意:在以前的版本中,上述步骤都是由
ExtractSignatures
自动完成的。在2.2.0版本之后,Main函数被拆分成不超过5个stpe,以方便用户灵活使用。
library('NMF')
#laml.sign = estimateSignatures(mat = laml.tnm, nTry = 6)
绘制elbow曲线图,根据上述结果可视化并确定最佳signatures数量。
#plotCophenetic(res = laml.sign)
最佳可能值是y轴上的相关值显著下降的值。在这种情况下,它看起来是在n = 3
。LAML的突变率较低,不是特征分析的理想例子,但对于突变负担较高的实体肿瘤,只要有足够数量的样本,就可以期待更多的特征。 一旦估计了n
,我们就可以运行main函数了。
#laml.sig = extractSignatures(mat = laml.tnm, n = 3)
将检测到的signatures与COSMIC数据库中的已知signatures进行比较。
#Compate against original 30 signatures
#laml.og30.cosm = compareSignatures(nmfRes = laml.sig, sig_db = "legacy")
#Compate against updated version3 60 signatures
#laml.v3.cosm = compareSignatures(nmfRes = laml.sig, sig_db = "SBS")
compareSignatures
返回COSMIC signatures余弦相似度的完整表,可以进一步分析。下图显示了检测到的signatures与验证过的signatures的相似性比较。
library('pheatmap')
#pheatmap::pheatmap(mat = laml.og30.cosm$cosine_similarities, cluster_rows = FALSE, main = "cosine similarity against validated signatures")
Finally plot signatures
#maftools::plotSignatures(nmfRes = laml.sig, title_size = 0.8)
注: 1.如果您在运行
extractSignatures
时收到none of the packages are loaded
的错误,请手动加载NMF
库并重新运行。 2.如果extractSignatures
或estimateSignatures
在两者之间停止,则可能是因为矩阵中的突变计数较低。在这种情况下,重新运行pConstant
参数设置为小正值(例如0.1)的函数。
9.11.4 Signature enrichment analysis
Signature可以进一步赋值给样本,并使用signatureEnrichment
函数进行富集分析,该函数识别每个识别出的Signature中富集的突变。
#laml.se = signatureEnrichment(maf = laml, sig_res = laml.sig)
上述结果可进行和临床结果相似的可视化操作。
#plotEnrichmentResults(enrich_res = laml.se, pVal = 0.05)