的supersigs
包实现了由Afsari等人。寻找签名(“SuperSigs”)。在这篇短文中,我们将介绍如何预处理数据并运行该方法supersigs
.
如果你有VCF文件,你可以使用readVcf
从VariantAnnotation
包作为VCF对象读入VCF文件。每个患者的年龄应存储为年龄
在colData
你的VCF
对象。然后使用process_vcf
将VCF对象转换为简化的数据帧格式,这将在示例数据.
如果没有VCF文件,请跳转到示例数据.
#加载make_matrix函数的包suppressPackageStartupMessages({图书馆(VariantAnnotation)})fl < -执行(“extdata”,“chr22.vcf.gz”,包=“VariantAnnotation”)vcf < -VariantAnnotation::readVcf(fl,“hg19”)#子集到第一个样本vcf < -vcf (,1]用纯合或杂合的alt子集到行位置位置< -基因族群(vcf)$GT! =“| 0”vcf < -(vcf[职位,1),)colData(vcf)$年龄< -50#添加患者年龄到colDatadt < -process_vcf(vcf)头(dt)#> sample_id年龄染色体位置#> 1 HG00096 50 chr22 50326116 C T#> 2 HG00096 50 chr22 50336761 G A#> 3 HG00096 50 chr22 50346072 C T#> 4 HG00096 50 chr22 50350418 T C#> 5 HG00096 50 chr22 50351413 C T#> 6 HG00096 50 chr22 50351977 G A
该方法使用癌症样本外显子组数据中的单碱基突变。具体来说,它需要每个样本的突变数据,这些突变的位置,以及所有患者的年龄。这些数据可以表示为一个突变列表。下面是一个示例数据集(从supersigs
R包)。如果您有VCF文件,请阅读VCF文件节以了解如何将数据处理为以下格式。
sample_id
每个样本都有ID吗年龄
病人的年龄是多少染色体
而且位置
是突变的位置吗裁判
原来是核苷酸吗alt
是突变的核苷酸吗读入数据后,需要在运行核心功能之前将其转换为特性的数据框架。这包括两个步骤:
首先,我们假设突变是相同的,无论突变发生在哪个链上。例如,这意味着C>A突变被认为与G>T突变相同,我们将所有G>T突变转换为C>A突变。
因为所使用的特征是建立在三核苷酸特征上的(例如A[C>A]T),这将需要将你的突变与参考基因组相匹配,以确定每个突变的侧翼碱基是什么。在下面的例子中,我们将使用hg19
参考基因组。
这两个步骤都是由make_matrix
函数。注意,使用make_matrix
功能需要安装和加载参考基因组(BSgenome.Hsapiens.UCSC.hg19
而且BSgenome.Hsapiens.UCSC.hg38
支持)。
我们应用make_matrix
要转换我们的示例数据集(example_dt
)转换为三核苷酸突变的数据帧(input_dt
),此格式为supersigs
R包。每一行input_dt
对应于不同的患者,列中的值是每个三核苷酸突变的突变数。
input_dt < -make_matrix(example_dt)头(input_dt)#> # A tibble: 5 × 98# > sample_id年龄' T (T > G) ' ' C (T >)“‘G (C >)“‘G (C > G) G ' G (C > G) T ' ' [C > G] T '# > <双> <双> <双> <双> <双> <双> <双> <双>#> 1 1 50 1 1 1 1 1 10 0#> 2 2 55 0 0 0 0 0 1#> 3 3 72 1 1 0 0 0 0#> 4 4 53 0 0 0 0 0 1#> 5 5 48 0 1 1 0 0 0用90 # > #…更多的变量:“C [C >] T”<双>,“C (T > C) G”<双>,“T [C >] C”<双>,# > # ' T [C >] T ' <双>,C (T > C)的<双>,“C (T > C) C”<双>,“T (T >) C”<双>,# > #“C [C > G] G”<双>,“G (C > T)”<双>,“[C >] T”<双>,“C [C >] C”<双>,# > #的G (T > G) T <双>,“C [C > T] C”<双>,“T [C > T] C”<双>,“[C > T] C”<双>,# > #的G (C > T) C <双>,“C [C > T] T”<双>,“T [C > T]”<双>,“[C > T] T”<双>,# > #的G (C > T) T <双>,“C [C > T]”<双>,“T [C > T]”<双>,“[C > T]“<双>,# > #“C [C > T] G”<双>,“T [C > T] G”<双>,“[C > T] G”<双>,“G [C > T] G”<双>,…
要对数据应用监督方法,请运行get_signature
函数。该函数有两个参数:一个输入数据帧数据
和因素
(如。因素=“吸烟”
).数据
是一个包含以下列的数据帧:
IndVar
(指标变量)是一个逻辑指标,说明他们是否暴露于因素
或不sample_id
每个样本都有ID吗年龄
病人的年龄是多少将VCF文件转换为这种格式的过程将在预处理数据.一个例子数据
如下所示。
suppressPackageStartupMessages({图书馆(dplyr)})#添加IndVar列input_dt < -input_dt% > %变异(IndVar =c(1,1,1,0,0))% > %搬迁(IndVar)头(input_dt)#> #一个小赌注:5 × 99# > IndVar sample_id年龄' T (T > G) ' ' C (T >)“‘G (C >)“‘G (C > G) G’‘G (C > G) T’# > <双> <双> <双> <双> <双> <双> <双> <双>#> 1 1 1 50 1 1 1 1 1 1 1 1#> 2 1 2 55 0 0 0 0 0#> 3 1 3 72 1 1 0 0 0#> 4 0 4 53 0 0 0 0 0 0#> 5 0 5 48 0 1 1 0 0用91多变量:# > #…”(C > G) T <双>,“C [C >] T”<双>,“C (T > C) G”<双>,# > # ' T [C >] C ' <双>,“T [C >]”<双>,C (T > C)的<双>,“C (T > C) C”<双>,# > # ' T (T >) C ' <双>,“C [C > G] G”<双>,“G (C > T)”<双>,“[C >] T”<双>,# > # ' C [C >] C ' <双>,“G (T > G) T”<双>,“C [C > T] C”<双>,“T [C > T] C”<双>,# > #“[C > T] C”<双>,“G (C > T) C”<双>,“C [C > T] T”<双>,“T [C > T]”<双>,# > #的[C > T] T <双>,“G (C > T) T”<双>,“C [C > T]”<双>,“T [C > T]”<双>,# > #”[C > T]“<双>,“C [C > T] G”<双>,“T [C > T] G”<双>,“[C > T] G”<双>,…
一旦有了正确的数据格式,就可以进行应用get_signature
到数据集来获取SuperSig
,它是一个S4对象,包含四个插槽:
签名
是签名,表示为两组之间(暴露与未暴露)的平均比率的差异(如果因素是“年龄”,则为总体平均比率)特性
构成签名的特征列表及其在基本(三核苷酸)突变方面的表示AUC
为模型的表观AUC(即未交叉验证)模型
包含训练后的逻辑回归模型(glm类)的列表set.seed(1)supersig < -get_signature(data =input_dt,系数=“吸烟”)#>开始功能工程…开始交叉验证选择超过4个特征和15个内折叠…# >…内折测试1# >…内折测试2# >…测试内折3# >…测试内折4# >…测试内折5# >…测试内折6# >…测试内折7# >…测试内折8# >…测试内折9# >…测试内折10# >…测试内折11# >…测试内折12# >…测试内褶13# >…测试内褶14# >…测试内折15supersig# >签名:# > X1#> 1 -0.0007475199# >特点:# > X1美元#> f11 f12 f13 f14 f117 f118 f119 f120# >”(C >)““C > C”“> [C] G”“C > T”“(C > G)”“(C > G) C”“C > G G”“C > G T”#> f132 f133 f134 f135 f148 f149 f150 f151# >”(C > T)““C > T C”“C > T G”“C > T T”“(T >)”“C (T >)”“(T >) G”“T (T >)”#> f163 f164 f165 f166 f179 f180 f181 f15# >”(T > C)““C (T > C)”“(T > C) G”“T (T > C)”“(T > G)”“C (T > G)”“(T > G) G”“C [C >]”#> f16 f17 f18 f121 f122 f123 f124 f136# >“C C > C”“C C > G”“C C > T”“C [C > G]”“C [C > G] C”“C C > G G”“C C > G T”“C [C > T]”#> f137 f138 f139 f152 f153 f154 f167 f168# >“C C > T C”“C C > T G”“C C > T T”“C (T >) C”“C (T >) G”“T C (T >)”“C (T > C)”“C C (T > C)”#> f169 f170 f182 f183 f184 f185 f19 f110# >“C (T > C) G”“T C (T > C)”“C (T > G)”“C (T > G) C”“C (T > G) G”“T C (T > G)”“G (C >)”“G (C >) C”#> f111 f112 f125 f126 f127 f140 f141 f142# >“G (C >) G”“G C > T”“G (C > G)”“G (C > G) C”“G (C > G) T”“G (C > T)”“G C > T C”“G [C > T] G”#> f143 f155 f156 f157 f158 f171 f172 f173# >“G C > T T”“G (T >)”“G T > C”“G (T >) G”“G T > T”“G (T > C)”“G T > C C”“G (T > C) G”#> f174 f186 f187 f188 f189 f113 f114 f115# >“G T > C T”“G (T > G)”“G (T > G) C”“G (T > G) G”“G (T > G) T”“T [C >]““T C > C”“T C > G”#> f116 f128 f129 f130 f131 f144 f145 f146# >“T C > T”“T [C > G]““T [C > G] C”“T C > G G”“T C > G T”“T [C > T]““T C > T C”“T C > T G”#> f147 f159 f160 f161 f162 f175 f176 f177# >“T C > T T”“T (T >)““T (T >) C”“T (T >) G”“T (T >)”“T (T > C)““T (T > C) C”“T (T > C) G”#> f178 f190 f191 f192 f193# >“T T (T > C)”“T (T > G)““T (T > G) C”“T (T > G) G”“T (T > G)”# ># >模型:# >美元分对数# >#>调用:glm(formula = IndVar ~ ., family = binomial(), data = x)# ># >系数:X1 . #>(截距#> 7.118 -86.601# >#>自由度:4 Total(即Null);3剩余#>零偏差:6.73#>剩余偏差:4.279 AIC: 8.279
属性对每个特征中的三核苷酸特征进行分组,以获得更可解释的特征表示simplify_signature
函数(带有可使用的选项IUPAC标签)。这对于绘制特征图很有用。
< -特点simplify_signature(对象=supersig,iupac =假)features_iupac < -simplify_signature(对象=supersig,iupac =真正的)
图书馆(ggplot2)data.frame(特点=的名字(features_iupac),差异=features_iupac)% > %ggplot(aes(x =的特性,y =差异)+geom_col()+theme_minimal()
申请SuperSig
用于新数据集,使用predict_signature
函数。这个函数返回新的数据集,其中包含签名的特征计数列和预测分类分数的分数列。
下面是一个示例SuperSig
我们在上一节训练过。我们重用input_dt
作为我们用于说明目的的“新数据”,但在实践中,您将使用与用于训练签名的数据集(例如测试集)不同的数据集。
newdata =predict_signature(supersignewdata =input_dt,系数=“吸烟”)newdata% > %选择(X1,得分)#> # A tibble: 5 × 2#> X1得分#> #> 1 0.04 0.975#> 2 0.0909 0.320#> 3 0.0417 0.971#> 4 0.0943 0.259#> 5 0.0833 0.475
此外,您不妨使用SuperSig
对TCGA数据进行预训练。这些都可以从包中访问supersig_ls
,其中列表中的每个元素都是aSuperSig
.有67个SuperSigs已经在各种组织和因素上进行了训练。名称如下(格式为“因子(组织)”)。关于这些签名训练的细节将在Afsari等人(2021,ELife).
的名字(supersig_ls)#>[1]“年龄(laml)”“年龄(BLCA)”“年龄(LUAD)”“年龄(LGG)”#>[5]“年龄(hnscc)”“年龄(KIRC)”“年龄(KIRP)”“年龄(KICH)”#>[9]“年龄(lihc)”“年龄(STAD)”“年龄(THCA)”“年龄(UVM)”#>[13]“年龄(skcm)”“年龄(ACC)”“年龄(胆固醇)”“年龄(GBM)”#>[17]“年龄(cesc)”“年龄(COAD)”“年龄(PCPG)”“年龄(PAAD)”#>[21]“年龄(prad)”“年龄(ESCSQ)”“年龄(ESCAD)”“年龄(UCEC)”#>[25]“年龄(ucs)”“年龄(BRCA)”“年龄(不仅)”“年龄(TGCT)”#>[29]“年龄(百里香)”“年龄(OV)”“吸烟(BLCA)”“吸烟(LUAD)”#>[33]“吸烟(hnscc)”“吸烟(KIRP)”“吸烟(PAAD)”“吸烟(ESCSQ)”#>[37]“吸烟(escad)”“吸烟(塞斯克)”“极(UCEC)”“极(STAD)”#>[41]“极点(鳕鱼)”“极(BRCA)”“MSI (UCEC)”“MSI (STAD)”#> [45] " msi (coad)"“BRCA (BRCA)”“BRCA (OV)”“紫外线* (SKCM)”#> [49] " pold (ucec)"“POLD (STAD)”“管理(GBM)”“管理(LGG)”#> [53] " idh (lgg)"“IDH (GBM)”“BMI (UCEC)”“BMI (KIRP)”#>[57]“bmi (esca)”“BMI (COAD)”“酒精(HNSCC)”“酒精(光电子能谱)”#>[61] "酒精(lihc)"“HepB (LIHC)”“HepC (LIHC)”“AAcid (BLCA)”#> [65] "Asb* (MESO)"“APOPEC(塞斯克)”“APOPEC (KIRC)”
在某些情况下,您可能对从突变数据框架中删除监督签名的贡献感兴趣,以此作为调整特定因素的一种方式。例如,假设我们对肺癌中吸烟的特征的破译感兴趣。我们可以先去除衰老特征在肺癌中的贡献,然后再用监督或无监督的方法学习吸烟特征。我们在Afsari等人(2021,ELife)这样做可以带来更好的表现。
adjusted_dt < -partial_signature(data =input_dt,对象=supersig)头(adjusted_dt)#> #一个小赌注:5 × 99# > IndVar sample_id年龄' T (T > G) ' ' C (T >)“‘G (C >)“‘G (C > G) G’‘G (C > G) T’# > <双> <双> <双> <双> <双> <双> <双> <双>#> 1 1 1 50 1 1 1.04 1 1.04#> 2 1 2 55 0 0 0.0411 0 0.0411#> 3 1 3 72 1 1 0.0538 0 0.0538#> 4 0 4 53 0 0 0.0396 0 0.0396#> 5 0 5 48 0 1 1.04 0 0.0359用91多变量:# > #…”(C > G) T <双>,“C [C >] T”<双>,“C (T > C) G”<双>,# > # ' T [C >] C ' <双>,“T [C >]”<双>,C (T > C)的<双>,“C (T > C) C”<双>,# > # ' T (T >) C ' <双>,“C [C > G] G”<双>,“G (C > T)”<双>,“[C >] T”<双>,# > # ' C [C >] C ' <双>,“G (T > G) T”<双>,“C [C > T] C”<双>,“T [C > T] C”<双>,# > #“[C > T] C”<双>,“G (C > T) C”<双>,“C [C > T] T”<双>,“T [C > T]”<双>,# > #的[C > T] T <双>,“G (C > T) T”<双>,“C [C > T]”<双>,“T [C > T]”<双>,# > #”[C > T]“<双>,“C [C > T] G”<双>,“T [C > T] G”<双>,“[C > T] G”<双>,…
sessionInfo()#> R版本4.2.0 RC (2022-04-19 r82224)#>平台:x86_64-pc-linux-gnu(64位)运行在Ubuntu 20.04.4 LTS下# >矩阵产品:默认值#> BLAS: /home/biocbuild/bbs-3.15-bioc/R/lib/libRblas.so#> LAPACK: /home/biocbuild/bbs-3.15-bioc/R/lib/libRlapack.so# ># >语言环境:#> [1] LC_CTYPE=en_US。utf - 8 LC_NUMERIC = C#> [3] LC_TIME=en_GB LC_COLLATE=C#> [5] LC_MONETARY=en_US。utf - 8 LC_MESSAGES = en_US。utf - 8#> [7] LC_PAPER=en_US。utf - 8 LC_NAME = C#> [9] lc_address = c lc_phone = c#> [11] LC_MEASUREMENT=en_US。utf - 8 LC_IDENTIFICATION = C# >#>附加基础包:#> [1] stats4 stats graphics grDevices utils数据集方法#>[8]基地# >#>其他附加包:#> [1] ggplot2_3.3.5 dplyr_1.0.8#> [3] bsgenome_1 . hsapiens . ucsc .hg19_1.4.3 BSgenome_1.64.0#> [5] rtracklayer_1.5.6 VariantAnnotation_1.42.0#> [7] Rsamtools_2.12.0 Biostrings_2.64.0#> [9] XVector_0.36.0摘要实验_1.26.0#> [11] Biobase_2.56.0 genome icranges_1 .48.0#> [13] GenomeInfoDb_1.32.0 IRanges_2.30.0#> [15] S4Vectors_0.34.0 MatrixGenerics_1.8.0#> [17] matrixStats_0.62.0 BiocGenerics_0.42.0#> [19] superigs_1.4.0# >#>通过命名空间加载(并且没有附加):#> [1] colorspace_2.0-3 rjson_0.2.21 ellipsis_0.3.2#> [4] class_7.3-20 farver_2.1.0 listenv_0.8.0#> [7] furrr_0.2.3 bit64_4.0.5 AnnotationDbi_1.58.0 . ##> [10] prodlim_2019.11.13 fansi_1.0.3 lubridate_1.8.0#> [13] xml2_1.3.3 codetools_0.2-18 splines_4.2.0#> [16] cachem_1.0.6 knitr_1.38 jsonlite_1.8.0#> [19] pROC_1.18.0 caret_6.0-92 dbplyr_2.1.1#> [22] png_0.1-7 compiler_4.2.0 httr_1.4.2#> [25] assertthat_0.2.1 Matrix_1.4-1 fastmap_1.1.0htmltools_0.5.2 prettyunits_1.1.1#> [31] tools_4.2.0 gtable_0.3.0 glue_1.6.2#> [34] GenomeInfoDbData_1.2.8 reshape2_1.4.4 rappdirs_0.3.3#> [37] Rcpp_1.0.8.3 jquerylib_0.1.4 vctrs_0.4.1#> [40] nlme_1 .1-157 iterators_1.0.14 timeDate_3043.102#> [43] gower_1.0.0 xfun_0.30 string_1 .4.0#> [46] globals_0.14.0 lifecycle_1.0.1 restfulr_0.0.13#> [49] XML_3.99-0.9 future_1.25.0 zlibbioc_1.42.0#> [52] mass_3 .3-57 scales_1.2.0 ipred_0.9-12#> [55] hms_1.1.1 parallel_4.2.0 curl_4.3.2#> [58] yaml_2.3.5 memoise_2.0.1 sass_0.4.1#> [61] biomaRt_2.52.0 rpart_4.1.16 stringi_1.7.6#> [64] RSQLite_2.2.12 highr_0.9 BiocIO_1.6.0 . ##> [67] foreach_1.5.2 filelock_1.0.2基因组特征_1.48.0#> [70] hardhat_0.2.0 BiocParallel_1.30.0 lava_1.6.10#> [73] rlang_1.0.2 pkgconfig_2.0.3 bitops_1.0-7#> [76] rsample_0.1.1 evaluate_0.15 lattice_0.20-45#> [79] purrr_0.3.4 labeling_0.4.2基因组比对s_1.32.0#> [82] recipes_0.2.0 bit_4.0.4 tidyselect_1.1.2 . ##> [85] parallely_1.31.1 plyr_1.8.7 magrittr_2.0.3#> [88] R6_2.5.1 generics_0.1.2 DelayedArray_0.22.0#> [91] DBI_1.1.2 pillar_1.7.0 with thr_2.5.0#> [94] survival_3.3-1 KEGGREST_1.36.0 RCurl_1.98-1.6#> [97] nnet_7.3-17 tibble_3.1.6 future.apply_1.9.0#> [100] crayon_1.5.1 utf8_1.2.2 BiocFileCache_2.4.0#> [103] rmarkdown_2.14 progress_1.2.2 grid_4.2.0#> [106] data.table_1.14.2 blob_1.2.3 ModelMetrics_1.2.2.2#> [109] digest_0.6.29 tidyr_1.2.0 munsell_0.5.0#> [112] bslib_0.3.1 . #