diff --git a/.circleci/config.yml b/.circleci/config.yml index 820a4b46af..dea6d3c3e3 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -20,20 +20,47 @@ jobs: name: Sample Distribution Analyses command: ./scripts/run_in_ci.sh bash "analyses/sample-distribution-analysis/run-sample-distribution.sh" + # TODO: The data files for CI need to be fixed https://github.com/AlexsLemonade/OpenPBTA-analysis/issues/527 + # - run: + # name: TP53 NF1 classifier run + # command: OPENPBTA_POLYAPLOT=0 ./scripts/run_in_ci.sh bash "analyses/tp53_nf1_score/run_classifier.sh" + # The analysis no longer needs to be tested as it has been retired and is better covered by 'SNV Caller Analysis' below. #- run: # name: Mutect2 vs Strelka2 # command: ./scripts/run_in_ci.sh Rscript -e "rmarkdown::render('analyses/mutect2-vs-strelka2/01-set-up.Rmd', clean = TRUE); # rmarkdown::render('analyses/mutect2-vs-strelka2/02-analyze-concordance.Rmd', clean = TRUE)" - - - run: - name: Collapse RSEM - command: ./scripts/run_in_ci.sh bash analyses/collapse-rnaseq/run-collapse-rnaseq.sh + + ### MOLECULAR SUBTYPING ### - run: name: Molecular Subtyping - HGG command: OPENPBTA_SUBSET=0 ./scripts/run_in_ci.sh bash analyses/molecular-subtyping-HGG/run-molecular-subtyping-HGG.sh + - run: + name: Molecular subtyping - Non-MB/Non-ATRT Embryonal tumors + command: OPENPBTA_SUBSET=0 ./scripts/run_in_ci.sh bash analyses/molecular-subtyping-embryonal/run-embryonal-subtyping.sh + + - run: + name: Molecular Subtyping and Plotting - ATRT + command: OPENPBTA_SUBSET=0 ./scripts/run_in_ci.sh bash analyses/molecular-subtyping-ATRT/run-molecular-subtyping-ATRT.sh + + - run: + name: Molecular subtyping Chordoma + command: ./scripts/run_in_ci.sh Rscript -e "rmarkdown::render('analyses/molecular-subtyping-chordoma/01-Subtype-chordoma.Rmd', clean = TRUE)" + + + # Deprecated - these results do not include germline calls and therefore are insufficient by subtyping + # - run: + # name: SHH TP53 Molecular Subtyping + # command: ./scripts/run_in_ci.sh Rscript -e "rmarkdown::render('analyses/molecular-subtyping-SHH-tp53/SHH-tp53-molecular-subtyping-data-prep.Rmd', clean = TRUE)" + + ### END MOLECULAR SUBTYPING ### + + - run: + name: Collapse RSEM + command: ./scripts/run_in_ci.sh bash analyses/collapse-rnaseq/run-collapse-rnaseq.sh + - run: name: Immune deconvolution using xCell and MCP-Counter command: OPENPBTA_DECONV_METHOD="mcp_counter" ./scripts/run_in_ci.sh bash analyses/immune-deconv/run-immune-deconv.sh @@ -85,10 +112,6 @@ jobs: name: Tumor mutation burden with TCGA command: ./scripts/run_in_ci.sh Rscript -e "rmarkdown::render('analyses/tmb-compare-tcga/compare-tmb.Rmd', clean = TRUE)" - - run: - name: Molecular subtyping - Non-MB/Non-ATRT Embryonal tumors - command: OPENPBTA_SUBSET=0 ./scripts/run_in_ci.sh bash analyses/molecular-subtyping-embryonal/run-embryonal-subtyping.sh - - run: name: Copy number consensus command: ./scripts/run_in_ci.sh bash "analyses/copy_number_consensus_call/run_consensus_call.sh" @@ -104,11 +127,7 @@ jobs: - run: name: Comparative RNASeq - generate correlation matrix - rsem-tpm.stranded command: ./scripts/run_in_ci.sh python3 analyses/comparative-RNASeq-analysis/01-correlation-matrix.py ../../data/pbta-gene-expression-rsem-tpm.stranded.rds --output-prefix rsem-tpm-stranded- --verbose - - - run: - name: Molecular Subtyping and Plotting - ATRT - command: OPENPBTA_SUBSET=0 ./scripts/run_in_ci.sh bash analyses/molecular-subtyping-ATRT/run-molecular-subtyping-ATRT.sh - + - run: name: Process SV file command: ./scripts/run_in_ci.sh Rscript analyses/sv-analysis/01-process-sv-file.R @@ -116,20 +135,11 @@ jobs: - run: name: Oncoprint plotting command: ./scripts/run_in_ci.sh bash "analyses/oncoprint-landscape/run-oncoprint.sh" - - - run: - name: TP53 NF1 classifier run - command: OPENPBTA_POLYAPLOT=0 ./scripts/run_in_ci.sh bash "analyses/tp53_nf1_score/run_classifier.sh" - run: name: GISTIC Plots command: ./scripts/run_in_ci.sh Rscript -e "rmarkdown::render('analyses/cnv-chrom-plot/gistic_plot.Rmd', clean = TRUE)" - # Deprecated - these results do not include germline calls and therefore are insufficient by subtyping - # - run: - # name: SHH TP53 Molecular Subtyping - # command: ./scripts/run_in_ci.sh Rscript -e "rmarkdown::render('analyses/molecular-subtyping-SHH-tp53/SHH-tp53-molecular-subtyping-data-prep.Rmd', clean = TRUE)" - - run: name: Gene set enrichment analysis to generate GSVA scores command: OPENPBTA_TESTING=1 ./scripts/run_in_ci.sh bash "analyses/gene-set-enrichment-analysis/run-gsea.sh" @@ -142,10 +152,6 @@ jobs: name: Fusion Summary command: OPENPBTA_TESTING=1 ./scripts/run_in_ci.sh bash "analyses/fusion-summary/run-new-analysis.sh" - - run: - name: Molecular subtyping Chordoma - command: ./scripts/run_in_ci.sh Rscript -e "rmarkdown::render('analyses/molecular-subtyping-chordoma/01-Subtype-chordoma.Rmd', clean = TRUE)" - - run: name: Telomerase activity command: ./scripts/run_in_ci.sh bash analyses/telomerase-activity-prediction/RUN-telomerase-activity-prediction.sh diff --git a/analyses/chromosomal-instability/01b-visualization-cnv-sv.Rmd b/analyses/chromosomal-instability/01b-visualization-cnv-sv.Rmd index a5cfeb7768..ffb277b82d 100644 --- a/analyses/chromosomal-instability/01b-visualization-cnv-sv.Rmd +++ b/analyses/chromosomal-instability/01b-visualization-cnv-sv.Rmd @@ -88,11 +88,8 @@ metadata <- readr::read_tsv(file.path(data_dir, "pbta-histologies.tsv")) Read in the CNV data. ```{r} -# TODO: update file path when consensus is added to data release cnv_df <- data.table::fread( - file.path("..", - "copy_number_consensus_call", - "results", + file.path(data_dir, "pbta-cnv-consensus.seg.gz"), data.table = FALSE ) @@ -307,7 +304,7 @@ circos_map_plot( ```{r} circos_map_transloc(transloc_df, add_track = FALSE, # We change this to true to add on to our already existing plot - sample_names = samples_for_examples[1], + sample_names = sample(transloc_df$biospecimen_id1, 1), samples_col = "biospecimen_id1", chr_col_1 = "chrom1", # Need to specify which column is the first and second location for each chr_col_2 = "chrom2", @@ -326,7 +323,7 @@ png(file.path(plots_dir, "transloc_circos_plot.png"), width = 800, height = 800) # Run function per usual circos_map_transloc(transloc_df, add_track = FALSE, - sample_names = samples_for_examples[1], + sample_names = sample(transloc_df$biospecimen_id1, 1), samples_col = "biospecimen_id1", chr_col_1 = "chrom1", chr_col_2 = "chrom2", diff --git a/analyses/chromosomal-instability/01b-visualization-cnv-sv.nb.html b/analyses/chromosomal-instability/01b-visualization-cnv-sv.nb.html index 65218600e9..06c7f5209d 100644 --- a/analyses/chromosomal-instability/01b-visualization-cnv-sv.nb.html +++ b/analyses/chromosomal-instability/01b-visualization-cnv-sv.nb.html @@ -2986,8 +2986,8 @@

Function Arguments Descriptions

Set Up

- -
# Set seed so heatmaps turn out the same
+
+
# Set seed so plots turn out the same
 set.seed(2020)
 
 # Magrittr pipe
@@ -3027,7 +3027,7 @@ 

Read in data

# Read in the metadata
 metadata <- readr::read_tsv(file.path(data_dir, "pbta-histologies.tsv"))
- +
Parsed with column specification:
 cols(
   .default = col_character(),
@@ -3039,13 +3039,13 @@ 

Read in data

molecular_subtype = col_logical() ) See spec(...) for full column specifications. -221 parsing failures. +493 parsing failures. row col expected actual file -2606 molecular_subtype 1/0/T/F/TRUE/FALSE Group3 '../../data/pbta-histologies.tsv' -2607 molecular_subtype 1/0/T/F/TRUE/FALSE Group4 '../../data/pbta-histologies.tsv' -2608 molecular_subtype 1/0/T/F/TRUE/FALSE Group3 '../../data/pbta-histologies.tsv' -2609 molecular_subtype 1/0/T/F/TRUE/FALSE Group3 '../../data/pbta-histologies.tsv' -2610 molecular_subtype 1/0/T/F/TRUE/FALSE Group3 '../../data/pbta-histologies.tsv' +2334 molecular_subtype 1/0/T/F/TRUE/FALSE Group3 '../../data/pbta-histologies.tsv' +2335 molecular_subtype 1/0/T/F/TRUE/FALSE Group4 '../../data/pbta-histologies.tsv' +2336 molecular_subtype 1/0/T/F/TRUE/FALSE Group3 '../../data/pbta-histologies.tsv' +2337 molecular_subtype 1/0/T/F/TRUE/FALSE Group3 '../../data/pbta-histologies.tsv' +2338 molecular_subtype 1/0/T/F/TRUE/FALSE Group3 '../../data/pbta-histologies.tsv' .... ................. .................. ...... ................................. See problems(...) for more details.
@@ -3054,12 +3054,9 @@

Read in data

Read in the CNV data.

- -
# TODO: update file path when consensus is added to data release
-cnv_df <- data.table::fread(
-  file.path("..", 
-            "copy_number_consensus_call", 
-            "results",
+
+
cnv_df <- data.table::fread(
+  file.path(data_dir, 
             "pbta-cnv-consensus.seg.gz"),
   data.table = FALSE
 ) 
@@ -3310,10 +3307,10 @@

Example uses of circos_map_plot

Example 4 making a translocation plot.

- +
circos_map_transloc(transloc_df,
   add_track = FALSE, # We change this to true to add on to our already existing plot
-  sample_names = samples_for_examples[1],
+  sample_names = sample(transloc_df$biospecimen_id1, 1),
   samples_col = "biospecimen_id1",
   chr_col_1 = "chrom1", # Need to specify which column is the first and second location for each
   chr_col_2 = "chrom2",
@@ -3324,20 +3321,20 @@ 

Example uses of circos_map_plot

)
-

+

Example 5 Saving a plot.

- +
# Open up PNG file
 png(file.path(plots_dir, "transloc_circos_plot.png"), width = 800, height = 800)
 # Run function per usual
 circos_map_transloc(transloc_df,
   add_track = FALSE,
-  sample_names = samples_for_examples[1],
+  sample_names = sample(transloc_df$biospecimen_id1, 1),
   samples_col = "biospecimen_id1",
   chr_col_1 = "chrom1",
   chr_col_2 = "chrom2",
@@ -3365,7 +3362,7 @@ 

Session Info

sessionInfo()
- +
R version 3.6.0 (2019-04-26)
 Platform: x86_64-pc-linux-gnu (64-bit)
 Running under: Debian GNU/Linux 9 (stretch)
@@ -3374,61 +3371,84 @@ 

Session Info

BLAS/LAPACK: /usr/lib/libopenblasp-r0.2.19.so locale: - [1] LC_CTYPE=en_US.UTF-8 LC_NUMERIC=C LC_TIME=en_US.UTF-8 LC_COLLATE=en_US.UTF-8 - [5] LC_MONETARY=en_US.UTF-8 LC_MESSAGES=C LC_PAPER=en_US.UTF-8 LC_NAME=C - [9] LC_ADDRESS=C LC_TELEPHONE=C LC_MEASUREMENT=en_US.UTF-8 LC_IDENTIFICATION=C + [1] LC_CTYPE=en_US.UTF-8 LC_NUMERIC=C + [3] LC_TIME=en_US.UTF-8 LC_COLLATE=en_US.UTF-8 + [5] LC_MONETARY=en_US.UTF-8 LC_MESSAGES=C + [7] LC_PAPER=en_US.UTF-8 LC_NAME=C + [9] LC_ADDRESS=C LC_TELEPHONE=C +[11] LC_MEASUREMENT=en_US.UTF-8 LC_IDENTIFICATION=C attached base packages: [1] stats graphics grDevices utils datasets methods base -other attached packages: -[1] optparse_1.6.2 - loaded via a namespace (and not attached): - [1] colorspace_1.4-1 rjson_0.2.20 biovizBase_1.34.1 - [4] circlize_0.4.8 htmlTable_1.13.1 XVector_0.26.0 - [7] GenomicRanges_1.38.0 GlobalOptions_0.1.1 base64enc_0.1-3 - [10] dichromat_2.0-0 clue_0.3-57 rstudioapi_0.10 - [13] getopt_1.20.3 bit64_0.9-7 AnnotationDbi_1.48.0 - [16] R.methodsS3_1.7.1 splines_3.6.0 ggbio_1.34.0 - [19] knitr_1.23 Formula_1.2-3 jsonlite_1.6 - [22] Rsamtools_2.2.1 cluster_2.1.0 dbplyr_1.4.2 - [25] R.oo_1.22.0 png_0.1-7 graph_1.62.0 - [28] BiocManager_1.30.4 readr_1.3.1 compiler_3.6.0 - [31] httr_1.4.0 backports_1.1.4 assertthat_0.2.1 - [34] Matrix_1.2-17 lazyeval_0.2.2 cli_1.1.0 - [37] acepack_1.4.1 htmltools_0.3.6 prettyunits_1.0.2 - [40] tools_3.6.0 gtable_0.3.0 glue_1.3.1 - [43] GenomeInfoDbData_1.2.2 reshape2_1.4.3 dplyr_0.8.3 - [46] rappdirs_0.3.1 Rcpp_1.0.1 Biobase_2.46.0 - [49] styler_1.1.1 Biostrings_2.54.0 rtracklayer_1.46.0 - [52] xfun_0.8 stringr_1.4.0 ensembldb_2.10.2 - [55] XML_3.98-1.20 zlibbioc_1.32.0 scales_1.0.0 - [58] BSgenome_1.54.0 VariantAnnotation_1.32.0 hms_0.4.2 - [61] ProtGenerics_1.18.0 RBGL_1.62.1 parallel_3.6.0 - [64] SummarizedExperiment_1.16.0 rematch2_2.0.1 AnnotationFilter_1.10.0 - [67] RColorBrewer_1.1-2 ComplexHeatmap_2.2.0 yaml_2.2.0 - [70] curl_3.3 memoise_1.1.0 gridExtra_2.3 - [73] ggplot2_3.2.0 biomaRt_2.42.0 rpart_4.1-15 - [76] reshape_0.8.8 latticeExtra_0.6-28 stringi_1.4.3 - [79] RSQLite_2.1.1 S4Vectors_0.24.1 checkmate_1.9.4 - [82] GenomicFeatures_1.38.0 BiocGenerics_0.32.0 BiocParallel_1.20.0 - [85] shape_1.4.4 GenomeInfoDb_1.22.0 rlang_0.4.0 - [88] pkgconfig_2.0.2 matrixStats_0.55.0 bitops_1.0-6 - [91] evaluate_0.14 lattice_0.20-38 purrr_0.3.2 - [94] labeling_0.3 GenomicAlignments_1.22.1 htmlwidgets_1.3 - [97] cowplot_0.9.4 bit_1.1-14 tidyselect_0.2.5 -[100] GGally_1.4.0 plyr_1.8.4 magrittr_1.5 -[103] R6_2.4.0 IRanges_2.20.1 Hmisc_4.2-0 -[106] DelayedArray_0.12.0 DBI_1.0.0 withr_2.1.2 -[109] pillar_1.4.2 foreign_0.8-71 survival_2.44-1.1 -[112] RCurl_1.95-4.12 nnet_7.3-12 tibble_2.1.3 -[115] crayon_1.3.4 OrganismDbi_1.28.0 BiocFileCache_1.10.2 -[118] rmarkdown_1.13 GetoptLong_0.1.7 progress_1.2.2 -[121] grid_3.6.0 data.table_1.12.2 blob_1.1.1 -[124] digest_0.6.20 tidyr_0.8.3 R.utils_2.9.0 -[127] openssl_1.4 stats4_3.6.0 munsell_0.5.0 -[130] askpass_1.1
+ [1] colorspace_1.4-1 rjson_0.2.20 + [3] rprojroot_1.3-2 biovizBase_1.34.1 + [5] circlize_0.4.8 htmlTable_1.13.1 + [7] XVector_0.26.0 GenomicRanges_1.38.0 + [9] GlobalOptions_0.1.1 base64enc_0.1-3 + [11] dichromat_2.0-0 clue_0.3-57 + [13] rstudioapi_0.10 bit64_0.9-7 + [15] AnnotationDbi_1.48.0 R.methodsS3_1.7.1 + [17] splines_3.6.0 ggbio_1.34.0 + [19] knitr_1.23 Formula_1.2-3 + [21] jsonlite_1.6 colorblindr_0.1.0 + [23] Rsamtools_2.2.1 cluster_2.1.0 + [25] dbplyr_1.4.2 R.oo_1.22.0 + [27] png_0.1-7 graph_1.62.0 + [29] BiocManager_1.30.4 readr_1.3.1 + [31] compiler_3.6.0 httr_1.4.0 + [33] backports_1.1.4 assertthat_0.2.1 + [35] Matrix_1.2-17 lazyeval_0.2.2 + [37] cli_1.1.0 acepack_1.4.1 + [39] htmltools_0.3.6 prettyunits_1.0.2 + [41] tools_3.6.0 gtable_0.3.0 + [43] glue_1.3.1 GenomeInfoDbData_1.2.2 + [45] reshape2_1.4.3 dplyr_0.8.3 + [47] rappdirs_0.3.1 Rcpp_1.0.1 + [49] Biobase_2.46.0 styler_1.1.1 + [51] Biostrings_2.54.0 rtracklayer_1.46.0 + [53] xfun_0.8 stringr_1.4.0 + [55] ensembldb_2.10.2 XML_3.98-1.20 + [57] zlibbioc_1.32.0 scales_1.0.0 + [59] BSgenome_1.54.0 VariantAnnotation_1.32.0 + [61] hms_0.4.2 ProtGenerics_1.18.0 + [63] ggupset_0.1.0.9000 RBGL_1.62.1 + [65] parallel_3.6.0 SummarizedExperiment_1.16.1 + [67] AnnotationFilter_1.10.0 rematch2_2.0.1 + [69] RColorBrewer_1.1-2 ComplexHeatmap_2.2.0 + [71] yaml_2.2.0 curl_3.3 + [73] memoise_1.1.0 gridExtra_2.3 + [75] ggplot2_3.2.0 biomaRt_2.42.0 + [77] rpart_4.1-15 reshape_0.8.8 + [79] latticeExtra_0.6-28 stringi_1.4.3 + [81] RSQLite_2.1.1 S4Vectors_0.24.1 + [83] checkmate_1.9.4 GenomicFeatures_1.38.0 + [85] BiocGenerics_0.32.0 BiocParallel_1.20.1 + [87] shape_1.4.4 GenomeInfoDb_1.22.0 + [89] rlang_0.4.0 pkgconfig_2.0.2 + [91] matrixStats_0.55.0 bitops_1.0-6 + [93] evaluate_0.14 lattice_0.20-38 + [95] purrr_0.3.2 GenomicAlignments_1.22.1 + [97] htmlwidgets_1.3 labeling_0.3 + [99] cowplot_0.9.4 bit_1.1-14 +[101] tidyselect_0.2.5 GGally_1.4.0 +[103] plyr_1.8.4 magrittr_1.5 +[105] R6_2.4.0 IRanges_2.20.1 +[107] Hmisc_4.2-0 DelayedArray_0.12.2 +[109] DBI_1.0.0 pillar_1.4.2 +[111] foreign_0.8-71 withr_2.1.2 +[113] survival_2.44-1.1 RCurl_1.95-4.12 +[115] nnet_7.3-12 tibble_2.1.3 +[117] crayon_1.3.4 OrganismDbi_1.28.0 +[119] BiocFileCache_1.10.2 rmarkdown_1.13 +[121] GetoptLong_0.1.7 progress_1.2.2 +[123] grid_3.6.0 data.table_1.12.2 +[125] blob_1.1.1 forcats_0.4.0 +[127] digest_0.6.20 tidyr_0.8.3 +[129] R.utils_2.9.0 openssl_1.4 +[131] stats4_3.6.0 munsell_0.5.0 +[133] askpass_1.1
@@ -3436,7 +3456,7 @@

Session Info

-
LS0tCnRpdGxlOiAiQ2lyY29zIFBsb3RzIEV4YW1wbGVzIGZvciBWaXN1YWxpemluZyBTViBhbmQgQ05WIGRhdGEiCm91dHB1dDogICAKICBodG1sX25vdGVib29rOiAKICAgIHRvYzogdHJ1ZQogICAgdG9jX2Zsb2F0OiB0cnVlCmF1dGhvcjogQ2FuZGFjZSBTYXZvbmVuIGZvciBBTFNGIC0gQ0NETApkYXRlOiAyMDIwCi0tLQoKVGhpcyBub3RlYm9vayBzaG93cyBleGFtcGxlcyBvZiBob3cgdG8gdXNlIHRoZSBjaXJjb3NfbWFwX3Bsb3QgZnVuY3Rpb24gZm9yIAptYXBwaW5nIGRhdGEgdGhhdCBjb3JyZXNwb25kcyB0byBjaHJvbW9zb21hbCBjb29yZGluYXRlcy4KCkNvcnJlc3BvbmRzIHRvIFtpc3N1ZSAzOTddKGh0dHBzOi8vZ2l0aHViLmNvbS9BbGV4c0xlbW9uYWRlL09wZW5QQlRBLWFuYWx5c2lzL2lzc3Vlcy8zOTcpLgoKIyMjIFVzYWdlCgpUaGlzIG5vdGVib29rIGNhbiBiZSBydW4gdmlhIHRoZSBjb21tYW5kIGxpbmUgZnJvbSB0aGUgdG9wIGRpcmVjdG9yeSBvZiB0aGUgCnJlcG9zaXRvcnkgYXMgZm9sbG93czoKCmBgYApSc2NyaXB0IC1lICJybWFya2Rvd246OnJlbmRlcignYW5hbHlzZXMvY2hyb21vc29tYWwtaW5zdGFiaWxpdHkvMDFiLXZpc3VhbGl6YXRpb24tY252LXN2LlJtZCcsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGVhbiA9IFRSVUUpIgpgYGAKCiMjIENpcmN1bGFyIHBsb3RzIGZ1bmN0aW9uczogClRvIHVzZSB0aGUgZnVuY3Rpb25zLCBzb3VyY2UgdGhlIGZ1bmN0aW9ucyBmaWxlOiBgc291cmNlKGZpbGUucGF0aCgidXRpbCIsICJjaXJjb3MtcGxvdHMuUiIpKWAKVGhpcyBmaWxlIGluY2x1ZGVzIHRocmVlIGZ1bmN0aW9ucywgYnV0IG9uZSBpcyBpbnRlcm5hbC4gCgoqKlRoZSB0d28gZnVuY3Rpb25zIHRvIHVzZToqKgoKYGNpcmNvc19tYXBfcGxvdGA6IEdpdmVuIGEgZGF0YS5mcmFtZSB3aXRoIGNocm9tb3NvbWFsIGNvb3JkaW5hdGVzLCBhbmQgYSBjb3JyZXNwb25kaW5nIGRhdGEgdmFsdWUgdG8gcGxvdCwgbWFrZSBhIGNpcmNvcyBwbG90IG9yIGFkZCBhIGNpcmN1bGFyIHRyYWNrIHRvIGFuIGV4aXN0aW5nIHBsb3QuICAKYGNpcmNvc19tYXBfdHJhbnNsb2NgOiBHaXZlbiBhIGRhdGEuZnJhbWUgd2l0aCB0d28gc2V0cyBvZiBjb29yZGluYXRlcywgbWFwIHRoZSBsaW5rcyBiZXR3ZWVuIHRob3NlIGNvb3JkaW5hdGVzIG9uIGEgbmV3IG9yIGV4aXNpdG5nIGNpcmN1bGFyIHBsb3QuICAKCiMjIEZ1bmN0aW9uIEFyZ3VtZW50cyBEZXNjcmlwdGlvbnMKCi0gYGRmYDogYSBkYXRhLmZyYW1lIHdpdGggdGhlIGNocm9tb3NvbWFsIGNvb3JkaW5hdGVzIGFuZCB5IHZhbHVlIHRvIHBsb3QuICAKLSBgYWRkX3RyYWNrYDogSWYgdHJ1ZSwgYWRkcyBhIHRyYWNrIHRvIGEgY3VycmVudCBwbG90LCBpZiBgRkFMU0VgLCBzdGFydHMgYSBuZXcgcGxvdC4gIAotIGBzYW1wbGVzX2NvbGA6IGEgY2hhcmFjdGVyIHN0cmluZyBzcGVjaWZ5aW5nIHRoZSBzYW1wbGVzIGNvbHVtbiB3aGljaCBjYW4gYmUgdXNlZCB0byBmaWx0ZXIgYnkuICAKLSBgc2FtcGxlX25hbWVzYDogYSBjaGFyYWN0ZXIgc3RyaW5nIHRoYXQgc3BlY2lmaWVzIHZhbHVlcyB0byBrZWVwIGZyb20gYHNhbXBsZXNfY29sYCBjb2x1bW4uIGAiYWxsImAga2VlcHMgYWxsIHNhbXBsZXMgaW4uICAgCi0gYGNocl9jb2xgOiBhIGNoYXJhY3RlciBzdHJpbmcgdGhhdCBzcGVjaWZpZXMgdGhlIGNocm9tb3NvbWVzIGNvbHVtbiBuYW1lLiAgCi0gYHN0YXJ0X2NvbGA6IGEgY2hhcmFjdGVyIHN0cmluZyB0aGF0IHNwZWNpZmllcyB0aGUgc3RhcnQgY29vcmRpbmF0ZSBjb2x1bW4gbmFtZS4gIAotIGBlbmRfY29sYDogYSBjaGFyYWN0ZXIgc3RyaW5nIHRoYXQgc3BlY2lmaWVzIHRoZSBlbmQgY29vcmRpbmF0ZSBjb2x1bW4gbmFtZS4gIAotIGB5X3ZhbGA6IFRoZSBjb2x1bW4gbmFtZSBvZiB0aGUgdmFsdWUgeW91IHdvdWxkIGxpa2UgdG8gcGxvdC4gCi0gYGNvbG9yX2NvbGA6IGEgY29sdW1uIHdpdGggY29sb3Igc3BlY2lmaWNhdGlvbnMgZm9yIGVhY2ggZGF0YSBwb2ludC4gCi0gYHRyYWNrX2hlaWdodGA6IGEgbnVtYmVyIGJldHdlZW4gMCBhbmQgMSB0aGF0IGRlc2lnbmF0ZXMgaGVpZ2h0LCBkZWZhdWx0IGlzIGAuMTVgLiAxID0gdGhlIGZ1bGwgZGlhbWV0ZXIgb2YgdGhlIGNpcmN1bGFyIHBsb3QuICAKLSBgdHlwZWA6IFR5cGUgb2YgcGxvdCB0aGUgdHJhY2sgc2hvdWxkIGJlLiBPcHRpb25zIGFyZSBgbGluZWAsIGBwb2ludGAsIGByZWN0YC4gIAotIGByZWN0X2hlaWdodGA6IFRoZSBhZGRlZCBoZWlnaHQgKHBsdXMgYW5kIG1pbnVzIHlfdmFsKSB0aGF0IHNob3VsZCBiZSBwbG90dGVkLiAKLSBgY3l0b2JhbmRgOiBgVFJVRS9GQUxTRWAgaW5kaWNhdGluZyB3aGV0aGVyIHlvdSB3YW50IGEgY3l0b2JhbmQgb24gdGhlIApvdXRlcm1vc3Qgb2YgdGhlIHBsb3QuIERlZmF1bHQgaXMgVFJVRS4gIAotIGBzaW5nbGVfY29sb3JgOiBBIHNpbmdsZSBjb2xvciB0byBjaG9vc2UuIEFuIGFsdGVybmF0aXZlIHRvIGBjb2xvcl9jb2xgLgoKIyMjIFNldCBVcAoKYGBge3J9CiMgU2V0IHNlZWQgc28gcGxvdHMgdHVybiBvdXQgdGhlIHNhbWUKc2V0LnNlZWQoMjAyMCkKCiMgTWFncml0dHIgcGlwZQpgJT4lYCA8LSBkcGx5cjo6YCU+JWAKYGBgCgpSZWFkIGluIHRoZSBjdXN0b20gZnVuY3Rpb25zLgoKYGBge3J9CnNvdXJjZShmaWxlLnBhdGgoInV0aWwiLCAiY2lyY29zLXBsb3RzLlIiKSkKYGBgCgojIyMgRGlyZWN0b3JpZXMgYW5kIEZpbGVzCgpgYGB7cn0KIyBQYXRoIHRvIGRhdGEgZGlyZWN0b3J5CmRhdGFfZGlyIDwtIGZpbGUucGF0aCgiLi4iLCAiLi4iLCAiZGF0YSIpCgojIFBhdGggdG8gb3V0cHV0IGRpcmVjdG9yeQpwbG90c19kaXIgPC0gInBsb3RzIgpgYGAKCiMjIyBSZWFkIGluIGRhdGEgCgpTZXQgdXAgbWV0YWRhdGEKCmBgYHtyfQojIFJlYWQgaW4gdGhlIG1ldGFkYXRhCm1ldGFkYXRhIDwtIHJlYWRyOjpyZWFkX3RzdihmaWxlLnBhdGgoZGF0YV9kaXIsICJwYnRhLWhpc3RvbG9naWVzLnRzdiIpKQpgYGAKClJlYWQgaW4gdGhlIENOViBkYXRhLiAKCmBgYHtyfQojIFRPRE86IHVwZGF0ZSBmaWxlIHBhdGggd2hlbiBjb25zZW5zdXMgaXMgYWRkZWQgdG8gZGF0YSByZWxlYXNlCmNudl9kZiA8LSBkYXRhLnRhYmxlOjpmcmVhZCgKICBmaWxlLnBhdGgoIi4uIiwgCiAgICAgICAgICAgICJjb3B5X251bWJlcl9jb25zZW5zdXNfY2FsbCIsIAogICAgICAgICAgICAicmVzdWx0cyIsCiAgICAgICAgICAgICJwYnRhLWNudi1jb25zZW5zdXMuc2VnLmd6IiksCiAgZGF0YS50YWJsZSA9IEZBTFNFCikgCmBgYAoKQ3JlYXRlIGEgc3RhdHVzIHZhcmlhYmxlIGJhc2VkIG9uIGNvcHkgbnVtYmVyIGFuZCB0dW1vciBwbG9pZHkuIApUaGlzIGlzIGxvZ2ljIHdhcyBib3Jyb3dlZCBmcm9tIFtgZm9jYWwtY24tZmlsZS1wcmVwYXJhdGlvbmAgbW9kdWxlXShodHRwczovL2dpdGh1Yi5jb20vQWxleHNMZW1vbmFkZS9PcGVuUEJUQS1hbmFseXNpcy9ibG9iLzg2YmQ2MzRhOTI4ZGIzZjQ2MDMyODIxMGUzOGM3ZGMxNzk3ZDEzMDQvYW5hbHlzZXMvZm9jYWwtY24tZmlsZS1wcmVwYXJhdGlvbi8wMi1hZGQtcGxvaWR5LWNvbnNlbnN1cy5SbWQjTDc0KS4KCmBgYHtyfQpjbnZfZGYgPC0gY252X2RmICU+JSAKICAjIE9ubHkga2VlcCBkYXRhIHRoYXQgaGFzIHZhbHVlcyBmb3IgY29weS5udW0KICBkcGx5cjo6ZmlsdGVyKCFpcy5uYShjb3B5Lm51bSkpICU+JQogICMgVGFjayBvbiB0aGUgcGxvaWR5IGFuZCBzZXggZXN0aW1hdGUgaW5mb3JtYXRpb24gZnJvbSBtZXRhZGF0YQogIGRwbHlyOjppbm5lcl9qb2luKAogICAgZHBseXI6OnNlbGVjdChtZXRhZGF0YSwgCiAgICAgICAgICAgICAgICAgIEtpZHNfRmlyc3RfQmlvc3BlY2ltZW5fSUQsIAogICAgICAgICAgICAgICAgICB0dW1vcl9wbG9pZHksCiAgICAgICAgICAgICAgICAgIGdlcm1saW5lX3NleF9lc3RpbWF0ZSksIAogICAgICAgICAgICAgYnkgPSBjKCJJRCIgPSAiS2lkc19GaXJzdF9CaW9zcGVjaW1lbl9JRCIpKSAlPiUKICAjIENyZWF0ZSBhIHN0YXR1cyB2YXJpYWJsZQogIGRwbHlyOjptdXRhdGUoc3RhdHVzID0gZHBseXI6OmNhc2Vfd2hlbigKICAgICMgd2hlbiB0aGUgY29weSBudW1iZXIgaXMgbGVzcyB0aGFuIGluZmVycmVkIHBsb2lkeSwgbWFyayB0aGlzIGFzIGEgbG9zcwogICAgY29weS5udW0gPCB0dW1vcl9wbG9pZHkgfiAibG9zcyIsCiAgICAjIGlmIGNvcHkgbnVtYmVyIGlzIGhpZ2hlciB0aGFuIHBsb2lkeSwgbWFyayBhcyBhIGdhaW4KICAgIGNvcHkubnVtID4gdHVtb3JfcGxvaWR5IH4gImdhaW4iLAogICAgY29weS5udW0gPT0gdHVtb3JfcGxvaWR5IH4gIm5ldXRyYWwiCiAgKSwgCiAgc3RhdHVzID0gZmFjdG9yKHN0YXR1cywgbGV2ZWxzID0gYygibG9zcyIsICJuZXV0cmFsIiwgImdhaW4iKSkpCmBgYAoKUmVhZCBpbiB0aGUgU1YgZGF0YS4gCgpgYGB7cn0Kc3ZfZGYgPC0gZGF0YS50YWJsZTo6ZnJlYWQoCiAgZmlsZS5wYXRoKGRhdGFfZGlyLCAicGJ0YS1zdi1tYW50YS50c3YuZ3oiKSwKICBkYXRhLnRhYmxlID0gRkFMU0UKKQpgYGAKCk1ha2UgYSB0cmFuc2xvY2F0aW9uIGRhdGEuZnJhbWUgd2hlcmUgYm90aCBzZXRzIG9mIGNvb3JkaW5hdGVzIGZvciB0aGUgdHJhbnNsb2NhdGlvbiBhcmUgaW4gdGhlIHNhbWUgcm93LgoKYGBge3J9CnRyYW5zbG9jX2RmIDwtIHN2X2RmICU+JQogIGRwbHlyOjpmaWx0ZXIoU1YudHlwZSA9PSAiQk5EIikgJT4lCiAgZHBseXI6Om11dGF0ZSgKICAgIG1hdGNoX2lkID0gc3RyaW5ncjo6c3RyX3N1YihJRCwgMCwgLTMpLAogICAgcGFpcl9udW0gPSBzdHJpbmdyOjpzdHJfc3ViKElELCAtMSkKICApICU+JQogIGRwbHlyOjpzZWxlY3QoCiAgICBiaW9zcGVjaW1lbl9pZCA9IEtpZHMuRmlyc3QuQmlvc3BlY2ltZW4uSUQuVHVtb3IsCiAgICBjaHJvbSA9IFNWLmNocm9tLAogICAgc3RhcnQgPSBTVi5zdGFydCwKICAgIGVuZCA9IFNWLmVuZCwKICAgIHdpZHRoID0gU1YubGVuZ3RoLAogICAgbWF0Y2hfaWQsCiAgICBwYWlyX251bQogICkKCnRyYW5zbG9jX2RmIDwtIHRyYW5zbG9jX2RmICU+JQogIGRwbHlyOjpmaWx0ZXIocGFpcl9udW0gPT0gMCkgJT4lCiAgZHBseXI6OmlubmVyX2pvaW4oZHBseXI6OmZpbHRlcih0cmFuc2xvY19kZiwgcGFpcl9udW0gPT0gMSksCiAgICBieSA9ICJtYXRjaF9pZCIsCiAgICBzdWZmaXggPSBjKCIxIiwgIjIiKQogICkKYGBgCgpMZXQncyBnZXQgc29tZSBzYW1wbGUgSURzIHRvIHBsYXkgd2l0aCBpbiB0aGVzZSBleGFtcGxlcy4gCgpgYGB7cn0Kc2FtcGxlc19mb3JfZXhhbXBsZXMgPC0gc2FtcGxlKGNudl9kZiRJRCwgNSkKYGBgCgojIyBNYWtpbmcgY29sb3Iga2V5cyBleGFtcGxlcwpUaGUgYGNpcmNvc19tYXBfcGxvdGAgZnVuY3Rpb25zIHRha2UgY29sdW1ucyB0aGF0IHNwZWNpZnkgdGhlIGNvbG9ycyBmb3IgZWFjaCBkYXRhIHJvdy4gCkhlcmUgYXJlIHNvbWUgZXhhbXBsZXMgb2YgaG93IHRvIHNldCB1cCBjb2xvciBjb2x1bW5zIHRoYXQgY2FuIGJlIHBhc3NlZCB0byB0aGUgY2lyY29zCmZ1bmN0aW9ucyBhcyB0aGUgYGNvbG9yX2NvbGAgYXJndW1lbnQuIAoKKipOdW1lcmljYWxseSBiYXNlZCBjb2xvciBrZXk6KiogCgpgYGB7cn0KIyBNYWtlIGNvbG9yIHBhbGV0dGUgYmFzZWQgb24gNSBjb2xvcnMKcGFsZXR0ZV9jb2wgPC0gUkNvbG9yQnJld2VyOjpicmV3ZXIucGFsKDUsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZSA9ICJBY2NlbnQiICMgQ2FuIGNoYW5nZSB0aGlzIHBhbGV0dGUgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIFVzZSBSQ29sb3JCcmV3ZXI6OmRpc3BsYXkuYnJld2VyLmFsbCgpIHRvIHNlZSBvcHRpb25zCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApCgojIE1ha2UgY29sb3IgcmFtcCBmdW5jdGlvbiBiYXNlZCBvbiBxdWFudGlsZXMgb2Ygc2VnLm1lYW4gYW5kIHBhbGV0dGUKY29sb3JfZnVuIDwtIGNpcmNsaXplOjpjb2xvclJhbXAyKAogIGJyZWFrcyA9IHF1YW50aWxlKGNudl9kZiRzZWcubWVhbiwgCiAgICAgICAgICAgICAgICAgICAgYygwLjE1LCAwLjM1LCAwLjUsIDAuNjUsIDAuODUpLCBuYS5ybSA9IFRSVUUpLCAKICBjb2xvcnMgPSBwYWxldHRlX2NvbCkKYGBgCgpBZGQgbnVtZXJpY2FsbHkgYmFzZWQgY29sb3IgY29sdW1uIHRvIGBjbnZfZGZgLgoKYGBge3J9CmNudl9kZiA8LSBjbnZfZGYgJT4lCiAgIyBNYWtlIGNvbHVtbiB0aGF0IHNwZWNpZmllcyB0aGUgY29sb3IgZm9yIGVhY2ggdmFsdWUKICBkcGx5cjo6bXV0YXRlKG51bV9jb2xvcl9rZXkgPSBjb2xvcl9mdW4oY29weS5udW0pKQpgYGAKCkNhbiBydW4gdGhpcyB0byBzZWUgb3RoZXIgcGFsZXR0ZXMgYmVzaWRlcyBgQWNjZW50YC4KCmBgYHtyfQpSQ29sb3JCcmV3ZXI6OmRpc3BsYXkuYnJld2VyLmFsbCgpCmBgYAoKKipGYWN0b3ItYmFzZWQgY29sb3Iga2V5czoqKiAKSGVyZSB3ZSB3aWxsIGFkZCBhIGNvbHVtbiB0byBgY252X2RmYCB0aGF0IGNvbG9yIGNvZGVzIGJhc2VkIG9uIHRoZSBgc3RhdHVzYCAKY29sdW1uIHdoaWNoIGhhcyB0aHJlZSBjYXRlZ29yaWVzLiAKCmBgYHtyfQojIExldCdzIGRldGVybWluZSBob3cgbWFueSBsZXZlbHMgdGhpcyBmYWN0b3IgY29sdW1uIGhhcwpuX2xldmVscyA8LSBsZW5ndGgobGV2ZWxzKGNudl9kZiRzdGF0dXMpKQoKIyBTZXQgdXAgYSBwYWxldHRlIGJhc2VkIG9uIG51bWJlciBvZiBmYWN0b3IgbGV2ZWxzCnBhbGV0dGVfY29sIDwtIFJDb2xvckJyZXdlcjo6YnJld2VyLnBhbChuX2xldmVscywgbmFtZSA9ICJBY2NlbnQiKQoKIyBMZXQncyBtYWtlIGEga2V5IHRvIHJlY29kZSBieSBiYXNlZCBvbiBsZXZlbHMKcGFsZXR0ZV9rZXkgPC0gcGFsZXR0ZV9jb2wKCiMgSGF2ZSB0aGUgZmFjdG9yIGxldmVscyBiZSB0aGUgbmFtZXMKbmFtZXMocGFsZXR0ZV9rZXkpIDwtIGxldmVscyhjbnZfZGYkc3RhdHVzKQoKIyBQcmV2aWV3IHRoaXMKcGFsZXR0ZV9rZXkKYGBgCgpBZGQgZmFjdG9yIGJhc2VkIGNvbG9yIGNvbHVtbiB0byBjbnZfZGYKCmBgYHtyfQpjbnZfZGYgPC0gY252X2RmICU+JQogICMgTWFrZSBjb2x1bW4gdGhhdCBzcGVjaWZpZXMgdGhlIGNvbG9yIGZvciBlYWNoIGZhY3RvciBsZXZlbAogIGRwbHlyOjptdXRhdGUoZmFjX2NvbG9yX2tleSA9IGRwbHlyOjpyZWNvZGUoc3RhdHVzLCAhISFwYWxldHRlX2tleSkpCmBgYAoKIyMgRXhhbXBsZSB1c2VzIG9mIGBjaXJjb3NfbWFwX3Bsb3RgCgoqKkV4YW1wbGUgMSoqIG1ha2luZyBhIGNpcmN1bGFyIHNjYXR0ZXIgcGxvdCBmb3IgYSBzaW5nbGUgc2FtcGxlLgoKYGBge3J9CmNpcmNvc19tYXBfcGxvdCgKICBkZiA9IGNudl9kZiwKICBhZGRfdHJhY2sgPSBGQUxTRSwgIyBJZiBzZXQgdG8gVFJVRSB3ZSB3b3VsZCBhZGQgdG8gYW4gZXhpc2l0aW5nIHBsb3QuCiAgc2FtcGxlc19jb2wgPSAiSUQiLCAjIERlc2lnbmF0ZSB3aGF0IGNvbHVtbnMgb2YgYGNudl9kZmAgaG9sZCB0aGUgc2FtcGxlIElEcy4KICBzYW1wbGVfbmFtZXMgPSBzYW1wbGVzX2Zvcl9leGFtcGxlc1sxXSwgIyBXaGF0IHNhbXBsZSB3ZSBhcmUgcGxvdHRpbmcuCiAgY2hyX2NvbCA9ICJjaHJvbSIsICMgRGVzaWduYXRlIHdoYXQgY29sdW1ucyBvZiBgY252X2RmYCBob2xkIHRoZSBjb29yZGluYXRlcy4KICBzdGFydF9jb2wgPSAibG9jLnN0YXJ0IiwKICBlbmRfY29sID0gImxvYy5lbmQiLAogIHlfdmFsID0gImNvcHkubnVtIiwgIyBUaGlzIGlzIHRoZSBkYXRhIHdlIHdhbnQgdG8gbWFwCiAgdHJhY2tfaGVpZ2h0ID0gLjE1LCAjIFRoaXMgaXMgdGhlIGRlZmF1bHQKICB0eXBlID0gInBvaW50IiwgIyB0eXBlIGlzIHNldCB0byBwb2ludAogIGNvbG9yX2NvbCA9ICJmYWNfY29sb3Jfa2V5IgogICkKYGBgCgoqKkV4YW1wbGUgMioqIG1ha2luZyBhIHBsb3Qgd2l0aCByZWN0YW5nbGVzIGZvciBhIG11bHRpcGxlIHNhbXBsZXMgYW5kIGNvbG9yIGNvZGUgYnkgbnVtZXJpYyB2YWx1ZSBhbmQgd2l0aG91dCB0aGUgY3l0b2JhbmQuCgpgYGB7cn0KY2lyY29zX21hcF9wbG90KAogIGRmID0gY252X2RmLAogIGFkZF90cmFjayA9IEZBTFNFLAogIHNhbXBsZXNfY29sID0gIklEIiwKICBzYW1wbGVfbmFtZXMgPSBzYW1wbGVzX2Zvcl9leGFtcGxlc1sxOjNdLCAjIFdoYXQgc2FtcGxlcyB3ZSBhcmUgcGxvdHRpbmcuCiAgY2hyX2NvbCA9ICJjaHJvbSIsCiAgc3RhcnRfY29sID0gImxvYy5zdGFydCIsCiAgZW5kX2NvbCA9ICJsb2MuZW5kIiwKICB5X3ZhbCA9ICJjb3B5Lm51bSIsCiAgdHJhY2tfaGVpZ2h0ID0gLjE1LAogIHR5cGUgPSAicmVjdCIsICMgQ2hhbmdlZCB0aGlzIHRvIHJlY3QKICByZWN0X2hlaWdodCA9IC4yLCAjIE9wdGlvbmFsbHkgY2FuIGNoYW5nZSBoZWlnaHQgd2l0aCB0aGlzIGFyZ3VtZW50LiBEZWZhdWx0IGlzICtfIDAuNAogIGNvbG9yX2NvbCA9ICJudW1fY29sb3Jfa2V5IiwgCiAgY3l0b2JhbmQgPSBGQUxTRSAjIFR1cm5pbmcgb2ZmIHRoZSBjeXRvYmFuZCBoZXJlLiBEZWZhdWx0IGlzIFRSVUUKKQpgYGAKCioqRXhhbXBsZSAzKiogQWRkaW5nIGxheWVycyB0byB0aGUgc2FtZSBwbG90LgpIZXJlIHdlIHdpbGwgcGxvdCB0d28gc2FtcGxlcywgZWFjaCB3aXRoIHRoZWlyIG93biB0cmFjaywgYW5kIGEgZGlmZmVyZW50IGNvbG9yIGZvciBlYWNoLiAKCmBgYHtyfQojIFRoaXMgZmlyc3QgcGFydCBpcyB0aGUgc2FtZSBhcyBFeGFtcGxlIDMsIGJ1dCB3ZSB3aWxsIGFkZCBhbiBleHRyYSBsYXllciBhbmQgY2hhbmdlIHRoZSBjb2xvciBwYWxldHRlCmNpcmNvc19tYXBfcGxvdCgKICBkZiA9IGNudl9kZiwKICBhZGRfdHJhY2sgPSBGQUxTRSwKICBzYW1wbGVzX2NvbCA9ICJJRCIsCiAgc2FtcGxlX25hbWVzID0gc2FtcGxlc19mb3JfZXhhbXBsZXNbMV0sICMgT25lIHNhbXBsZSBoZXJlCiAgY2hyX2NvbCA9ICJjaHJvbSIsCiAgc3RhcnRfY29sID0gImxvYy5zdGFydCIsCiAgZW5kX2NvbCA9ICJsb2MuZW5kIiwKICB5X3ZhbCA9ICJjb3B5Lm51bSIsCiAgdHlwZSA9ICJwb2ludCIsCiAgc2luZ2xlX2NvbG9yID0gInJlZCIgIyBBIHNpbmd1bGFyIGNvbG9yCikKIyBXZSdsbCBjaGFuZ2UgdGhlIGNvbG9yIHRob3VnaCBmb3IgZnVuCiMgQWRkIHJlY3QgbGF5ZXIKY2lyY29zX21hcF9wbG90KAogIGRmID0gY252X2RmLAogIGFkZF90cmFjayA9IFRSVUUsICMgU2V0IHRvIFRSVUUgc28gYWRkcyB0byBwbG90IGNhbGxlZCBhYm92ZS4KICBzYW1wbGVzX2NvbCA9ICJJRCIsCiAgc2FtcGxlX25hbWVzID0gc2FtcGxlc19mb3JfZXhhbXBsZXNbMl0sICMgU2Vjb25kIHNhbXBsZSBoZXJlLiAKICBjaHJfY29sID0gImNocm9tIiwgCiAgc3RhcnRfY29sID0gImxvYy5zdGFydCIsCiAgZW5kX2NvbCA9ICJsb2MuZW5kIiwKICB5X3ZhbCA9ICJjb3B5Lm51bSIsCiAgdHlwZSA9ICJwb2ludCIsIAogIHNpbmdsZV9jb2xvciA9ICJibHVlIiAjIEEgZGlmZmVyZW50IHNpbmd1bGFyIGNvbG9yCikKYGBgCgoqKkV4YW1wbGUgNCoqIG1ha2luZyBhIHRyYW5zbG9jYXRpb24gcGxvdC4gCgpgYGB7cn0KY2lyY29zX21hcF90cmFuc2xvYyh0cmFuc2xvY19kZiwKICBhZGRfdHJhY2sgPSBGQUxTRSwgIyBXZSBjaGFuZ2UgdGhpcyB0byB0cnVlIHRvIGFkZCBvbiB0byBvdXIgYWxyZWFkeSBleGlzdGluZyBwbG90CiAgc2FtcGxlX25hbWVzID0gc2FtcGxlc19mb3JfZXhhbXBsZXNbMV0sCiAgc2FtcGxlc19jb2wgPSAiYmlvc3BlY2ltZW5faWQxIiwKICBjaHJfY29sXzEgPSAiY2hyb20xIiwgIyBOZWVkIHRvIHNwZWNpZnkgd2hpY2ggY29sdW1uIGlzIHRoZSBmaXJzdCBhbmQgc2Vjb25kIGxvY2F0aW9uIGZvciBlYWNoCiAgY2hyX2NvbF8yID0gImNocm9tMiIsCiAgc3RhcnRfY29sXzEgPSAic3RhcnQxIiwKICBzdGFydF9jb2xfMiA9ICJzdGFydDIiLAogIGVuZF9jb2xfMSA9ICJlbmQxIiwKICBlbmRfY29sXzIgPSAiZW5kMiIKKQpgYGAKCioqRXhhbXBsZSA1KiogU2F2aW5nIGEgcGxvdC4gCgpgYGB7cn0KIyBPcGVuIHVwIFBORyBmaWxlCnBuZyhmaWxlLnBhdGgocGxvdHNfZGlyLCAidHJhbnNsb2NfY2lyY29zX3Bsb3QucG5nIiksIHdpZHRoID0gODAwLCBoZWlnaHQgPSA4MDApCiMgUnVuIGZ1bmN0aW9uIHBlciB1c3VhbApjaXJjb3NfbWFwX3RyYW5zbG9jKHRyYW5zbG9jX2RmLAogIGFkZF90cmFjayA9IEZBTFNFLAogIHNhbXBsZV9uYW1lcyA9IHNhbXBsZXNfZm9yX2V4YW1wbGVzWzFdLAogIHNhbXBsZXNfY29sID0gImJpb3NwZWNpbWVuX2lkMSIsCiAgY2hyX2NvbF8xID0gImNocm9tMSIsCiAgY2hyX2NvbF8yID0gImNocm9tMiIsCiAgc3RhcnRfY29sXzEgPSAic3RhcnQxIiwKICBzdGFydF9jb2xfMiA9ICJzdGFydDIiLAogIGVuZF9jb2xfMSA9ICJlbmQxIiwKICBlbmRfY29sXzIgPSAiZW5kMiIKKQpkZXYub2ZmKCkgIyBUdXJuIG9mZiBwbmcgZGV2CmBgYAoKIVtQcmludCBwbG90IHdlIHNhdmVkIHRvIFBORzpdKHBsb3RzL3RyYW5zbG9jX2NpcmNvc19wbG90LnBuZykKCiMjIyBTZXNzaW9uIEluZm8KCmBgYHtyfQpzZXNzaW9uSW5mbygpCmBgYAoK
+
LS0tCnRpdGxlOiAiQ2lyY29zIFBsb3RzIEV4YW1wbGVzIGZvciBWaXN1YWxpemluZyBTViBhbmQgQ05WIGRhdGEiCm91dHB1dDogICAKICBodG1sX25vdGVib29rOiAKICAgIHRvYzogdHJ1ZQogICAgdG9jX2Zsb2F0OiB0cnVlCmF1dGhvcjogQ2FuZGFjZSBTYXZvbmVuIGZvciBBTFNGIC0gQ0NETApkYXRlOiAyMDIwCi0tLQoKVGhpcyBub3RlYm9vayBzaG93cyBleGFtcGxlcyBvZiBob3cgdG8gdXNlIHRoZSBjaXJjb3NfbWFwX3Bsb3QgZnVuY3Rpb24gZm9yIAptYXBwaW5nIGRhdGEgdGhhdCBjb3JyZXNwb25kcyB0byBjaHJvbW9zb21hbCBjb29yZGluYXRlcy4KCkNvcnJlc3BvbmRzIHRvIFtpc3N1ZSAzOTddKGh0dHBzOi8vZ2l0aHViLmNvbS9BbGV4c0xlbW9uYWRlL09wZW5QQlRBLWFuYWx5c2lzL2lzc3Vlcy8zOTcpLgoKIyMjIFVzYWdlCgpUaGlzIG5vdGVib29rIGNhbiBiZSBydW4gdmlhIHRoZSBjb21tYW5kIGxpbmUgZnJvbSB0aGUgdG9wIGRpcmVjdG9yeSBvZiB0aGUgCnJlcG9zaXRvcnkgYXMgZm9sbG93czoKCmBgYApSc2NyaXB0IC1lICJybWFya2Rvd246OnJlbmRlcignYW5hbHlzZXMvY2hyb21vc29tYWwtaW5zdGFiaWxpdHkvMDFiLXZpc3VhbGl6YXRpb24tY252LXN2LlJtZCcsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGVhbiA9IFRSVUUpIgpgYGAKCiMjIENpcmN1bGFyIHBsb3RzIGZ1bmN0aW9uczogClRvIHVzZSB0aGUgZnVuY3Rpb25zLCBzb3VyY2UgdGhlIGZ1bmN0aW9ucyBmaWxlOiBgc291cmNlKGZpbGUucGF0aCgidXRpbCIsICJjaXJjb3MtcGxvdHMuUiIpKWAKVGhpcyBmaWxlIGluY2x1ZGVzIHRocmVlIGZ1bmN0aW9ucywgYnV0IG9uZSBpcyBpbnRlcm5hbC4gCgoqKlRoZSB0d28gZnVuY3Rpb25zIHRvIHVzZToqKgoKYGNpcmNvc19tYXBfcGxvdGA6IEdpdmVuIGEgZGF0YS5mcmFtZSB3aXRoIGNocm9tb3NvbWFsIGNvb3JkaW5hdGVzLCBhbmQgYSBjb3JyZXNwb25kaW5nIGRhdGEgdmFsdWUgdG8gcGxvdCwgbWFrZSBhIGNpcmNvcyBwbG90IG9yIGFkZCBhIGNpcmN1bGFyIHRyYWNrIHRvIGFuIGV4aXN0aW5nIHBsb3QuICAKYGNpcmNvc19tYXBfdHJhbnNsb2NgOiBHaXZlbiBhIGRhdGEuZnJhbWUgd2l0aCB0d28gc2V0cyBvZiBjb29yZGluYXRlcywgbWFwIHRoZSBsaW5rcyBiZXR3ZWVuIHRob3NlIGNvb3JkaW5hdGVzIG9uIGEgbmV3IG9yIGV4aXNpdG5nIGNpcmN1bGFyIHBsb3QuICAKCiMjIEZ1bmN0aW9uIEFyZ3VtZW50cyBEZXNjcmlwdGlvbnMKCi0gYGRmYDogYSBkYXRhLmZyYW1lIHdpdGggdGhlIGNocm9tb3NvbWFsIGNvb3JkaW5hdGVzIGFuZCB5IHZhbHVlIHRvIHBsb3QuICAKLSBgYWRkX3RyYWNrYDogSWYgdHJ1ZSwgYWRkcyBhIHRyYWNrIHRvIGEgY3VycmVudCBwbG90LCBpZiBgRkFMU0VgLCBzdGFydHMgYSBuZXcgcGxvdC4gIAotIGBzYW1wbGVzX2NvbGA6IGEgY2hhcmFjdGVyIHN0cmluZyBzcGVjaWZ5aW5nIHRoZSBzYW1wbGVzIGNvbHVtbiB3aGljaCBjYW4gYmUgdXNlZCB0byBmaWx0ZXIgYnkuICAKLSBgc2FtcGxlX25hbWVzYDogYSBjaGFyYWN0ZXIgc3RyaW5nIHRoYXQgc3BlY2lmaWVzIHZhbHVlcyB0byBrZWVwIGZyb20gYHNhbXBsZXNfY29sYCBjb2x1bW4uIGAiYWxsImAga2VlcHMgYWxsIHNhbXBsZXMgaW4uICAgCi0gYGNocl9jb2xgOiBhIGNoYXJhY3RlciBzdHJpbmcgdGhhdCBzcGVjaWZpZXMgdGhlIGNocm9tb3NvbWVzIGNvbHVtbiBuYW1lLiAgCi0gYHN0YXJ0X2NvbGA6IGEgY2hhcmFjdGVyIHN0cmluZyB0aGF0IHNwZWNpZmllcyB0aGUgc3RhcnQgY29vcmRpbmF0ZSBjb2x1bW4gbmFtZS4gIAotIGBlbmRfY29sYDogYSBjaGFyYWN0ZXIgc3RyaW5nIHRoYXQgc3BlY2lmaWVzIHRoZSBlbmQgY29vcmRpbmF0ZSBjb2x1bW4gbmFtZS4gIAotIGB5X3ZhbGA6IFRoZSBjb2x1bW4gbmFtZSBvZiB0aGUgdmFsdWUgeW91IHdvdWxkIGxpa2UgdG8gcGxvdC4gCi0gYGNvbG9yX2NvbGA6IGEgY29sdW1uIHdpdGggY29sb3Igc3BlY2lmaWNhdGlvbnMgZm9yIGVhY2ggZGF0YSBwb2ludC4gCi0gYHRyYWNrX2hlaWdodGA6IGEgbnVtYmVyIGJldHdlZW4gMCBhbmQgMSB0aGF0IGRlc2lnbmF0ZXMgaGVpZ2h0LCBkZWZhdWx0IGlzIGAuMTVgLiAxID0gdGhlIGZ1bGwgZGlhbWV0ZXIgb2YgdGhlIGNpcmN1bGFyIHBsb3QuICAKLSBgdHlwZWA6IFR5cGUgb2YgcGxvdCB0aGUgdHJhY2sgc2hvdWxkIGJlLiBPcHRpb25zIGFyZSBgbGluZWAsIGBwb2ludGAsIGByZWN0YC4gIAotIGByZWN0X2hlaWdodGA6IFRoZSBhZGRlZCBoZWlnaHQgKHBsdXMgYW5kIG1pbnVzIHlfdmFsKSB0aGF0IHNob3VsZCBiZSBwbG90dGVkLiAKLSBgY3l0b2JhbmRgOiBgVFJVRS9GQUxTRWAgaW5kaWNhdGluZyB3aGV0aGVyIHlvdSB3YW50IGEgY3l0b2JhbmQgb24gdGhlIApvdXRlcm1vc3Qgb2YgdGhlIHBsb3QuIERlZmF1bHQgaXMgVFJVRS4gIAotIGBzaW5nbGVfY29sb3JgOiBBIHNpbmdsZSBjb2xvciB0byBjaG9vc2UuIEFuIGFsdGVybmF0aXZlIHRvIGBjb2xvcl9jb2xgLgoKIyMjIFNldCBVcAoKYGBge3J9CiMgU2V0IHNlZWQgc28gcGxvdHMgdHVybiBvdXQgdGhlIHNhbWUKc2V0LnNlZWQoMjAyMCkKCiMgTWFncml0dHIgcGlwZQpgJT4lYCA8LSBkcGx5cjo6YCU+JWAKYGBgCgpSZWFkIGluIHRoZSBjdXN0b20gZnVuY3Rpb25zLgoKYGBge3J9CnNvdXJjZShmaWxlLnBhdGgoInV0aWwiLCAiY2lyY29zLXBsb3RzLlIiKSkKYGBgCgojIyMgRGlyZWN0b3JpZXMgYW5kIEZpbGVzCgpgYGB7cn0KIyBQYXRoIHRvIGRhdGEgZGlyZWN0b3J5CmRhdGFfZGlyIDwtIGZpbGUucGF0aCgiLi4iLCAiLi4iLCAiZGF0YSIpCgojIFBhdGggdG8gb3V0cHV0IGRpcmVjdG9yeQpwbG90c19kaXIgPC0gInBsb3RzIgpgYGAKCiMjIyBSZWFkIGluIGRhdGEgCgpTZXQgdXAgbWV0YWRhdGEKCmBgYHtyfQojIFJlYWQgaW4gdGhlIG1ldGFkYXRhCm1ldGFkYXRhIDwtIHJlYWRyOjpyZWFkX3RzdihmaWxlLnBhdGgoZGF0YV9kaXIsICJwYnRhLWhpc3RvbG9naWVzLnRzdiIpKQpgYGAKClJlYWQgaW4gdGhlIENOViBkYXRhLiAKCmBgYHtyfQpjbnZfZGYgPC0gZGF0YS50YWJsZTo6ZnJlYWQoCiAgZmlsZS5wYXRoKGRhdGFfZGlyLCAKICAgICAgICAgICAgInBidGEtY252LWNvbnNlbnN1cy5zZWcuZ3oiKSwKICBkYXRhLnRhYmxlID0gRkFMU0UKKSAKYGBgCgpDcmVhdGUgYSBzdGF0dXMgdmFyaWFibGUgYmFzZWQgb24gY29weSBudW1iZXIgYW5kIHR1bW9yIHBsb2lkeS4gClRoaXMgaXMgbG9naWMgd2FzIGJvcnJvd2VkIGZyb20gW2Bmb2NhbC1jbi1maWxlLXByZXBhcmF0aW9uYCBtb2R1bGVdKGh0dHBzOi8vZ2l0aHViLmNvbS9BbGV4c0xlbW9uYWRlL09wZW5QQlRBLWFuYWx5c2lzL2Jsb2IvODZiZDYzNGE5MjhkYjNmNDYwMzI4MjEwZTM4YzdkYzE3OTdkMTMwNC9hbmFseXNlcy9mb2NhbC1jbi1maWxlLXByZXBhcmF0aW9uLzAyLWFkZC1wbG9pZHktY29uc2Vuc3VzLlJtZCNMNzQpLgoKYGBge3J9CmNudl9kZiA8LSBjbnZfZGYgJT4lIAogICMgT25seSBrZWVwIGRhdGEgdGhhdCBoYXMgdmFsdWVzIGZvciBjb3B5Lm51bQogIGRwbHlyOjpmaWx0ZXIoIWlzLm5hKGNvcHkubnVtKSkgJT4lCiAgIyBUYWNrIG9uIHRoZSBwbG9pZHkgYW5kIHNleCBlc3RpbWF0ZSBpbmZvcm1hdGlvbiBmcm9tIG1ldGFkYXRhCiAgZHBseXI6OmlubmVyX2pvaW4oCiAgICBkcGx5cjo6c2VsZWN0KG1ldGFkYXRhLCAKICAgICAgICAgICAgICAgICAgS2lkc19GaXJzdF9CaW9zcGVjaW1lbl9JRCwgCiAgICAgICAgICAgICAgICAgIHR1bW9yX3Bsb2lkeSwKICAgICAgICAgICAgICAgICAgZ2VybWxpbmVfc2V4X2VzdGltYXRlKSwgCiAgICAgICAgICAgICBieSA9IGMoIklEIiA9ICJLaWRzX0ZpcnN0X0Jpb3NwZWNpbWVuX0lEIikpICU+JQogICMgQ3JlYXRlIGEgc3RhdHVzIHZhcmlhYmxlCiAgZHBseXI6Om11dGF0ZShzdGF0dXMgPSBkcGx5cjo6Y2FzZV93aGVuKAogICAgIyB3aGVuIHRoZSBjb3B5IG51bWJlciBpcyBsZXNzIHRoYW4gaW5mZXJyZWQgcGxvaWR5LCBtYXJrIHRoaXMgYXMgYSBsb3NzCiAgICBjb3B5Lm51bSA8IHR1bW9yX3Bsb2lkeSB+ICJsb3NzIiwKICAgICMgaWYgY29weSBudW1iZXIgaXMgaGlnaGVyIHRoYW4gcGxvaWR5LCBtYXJrIGFzIGEgZ2FpbgogICAgY29weS5udW0gPiB0dW1vcl9wbG9pZHkgfiAiZ2FpbiIsCiAgICBjb3B5Lm51bSA9PSB0dW1vcl9wbG9pZHkgfiAibmV1dHJhbCIKICApLCAKICBzdGF0dXMgPSBmYWN0b3Ioc3RhdHVzLCBsZXZlbHMgPSBjKCJsb3NzIiwgIm5ldXRyYWwiLCAiZ2FpbiIpKSkKYGBgCgpSZWFkIGluIHRoZSBTViBkYXRhLiAKCmBgYHtyfQpzdl9kZiA8LSBkYXRhLnRhYmxlOjpmcmVhZCgKICBmaWxlLnBhdGgoZGF0YV9kaXIsICJwYnRhLXN2LW1hbnRhLnRzdi5neiIpLAogIGRhdGEudGFibGUgPSBGQUxTRQopCmBgYAoKTWFrZSBhIHRyYW5zbG9jYXRpb24gZGF0YS5mcmFtZSB3aGVyZSBib3RoIHNldHMgb2YgY29vcmRpbmF0ZXMgZm9yIHRoZSB0cmFuc2xvY2F0aW9uIGFyZSBpbiB0aGUgc2FtZSByb3cuCgpgYGB7cn0KdHJhbnNsb2NfZGYgPC0gc3ZfZGYgJT4lCiAgZHBseXI6OmZpbHRlcihTVi50eXBlID09ICJCTkQiKSAlPiUKICBkcGx5cjo6bXV0YXRlKAogICAgbWF0Y2hfaWQgPSBzdHJpbmdyOjpzdHJfc3ViKElELCAwLCAtMyksCiAgICBwYWlyX251bSA9IHN0cmluZ3I6OnN0cl9zdWIoSUQsIC0xKQogICkgJT4lCiAgZHBseXI6OnNlbGVjdCgKICAgIGJpb3NwZWNpbWVuX2lkID0gS2lkcy5GaXJzdC5CaW9zcGVjaW1lbi5JRC5UdW1vciwKICAgIGNocm9tID0gU1YuY2hyb20sCiAgICBzdGFydCA9IFNWLnN0YXJ0LAogICAgZW5kID0gU1YuZW5kLAogICAgd2lkdGggPSBTVi5sZW5ndGgsCiAgICBtYXRjaF9pZCwKICAgIHBhaXJfbnVtCiAgKQoKdHJhbnNsb2NfZGYgPC0gdHJhbnNsb2NfZGYgJT4lCiAgZHBseXI6OmZpbHRlcihwYWlyX251bSA9PSAwKSAlPiUKICBkcGx5cjo6aW5uZXJfam9pbihkcGx5cjo6ZmlsdGVyKHRyYW5zbG9jX2RmLCBwYWlyX251bSA9PSAxKSwKICAgIGJ5ID0gIm1hdGNoX2lkIiwKICAgIHN1ZmZpeCA9IGMoIjEiLCAiMiIpCiAgKQpgYGAKCkxldCdzIGdldCBzb21lIHNhbXBsZSBJRHMgdG8gcGxheSB3aXRoIGluIHRoZXNlIGV4YW1wbGVzLiAKCmBgYHtyfQpzYW1wbGVzX2Zvcl9leGFtcGxlcyA8LSBzYW1wbGUoY252X2RmJElELCA1KQpgYGAKCiMjIE1ha2luZyBjb2xvciBrZXlzIGV4YW1wbGVzClRoZSBgY2lyY29zX21hcF9wbG90YCBmdW5jdGlvbnMgdGFrZSBjb2x1bW5zIHRoYXQgc3BlY2lmeSB0aGUgY29sb3JzIGZvciBlYWNoIGRhdGEgcm93LiAKSGVyZSBhcmUgc29tZSBleGFtcGxlcyBvZiBob3cgdG8gc2V0IHVwIGNvbG9yIGNvbHVtbnMgdGhhdCBjYW4gYmUgcGFzc2VkIHRvIHRoZSBjaXJjb3MKZnVuY3Rpb25zIGFzIHRoZSBgY29sb3JfY29sYCBhcmd1bWVudC4gCgoqKk51bWVyaWNhbGx5IGJhc2VkIGNvbG9yIGtleToqKiAKCmBgYHtyfQojIE1ha2UgY29sb3IgcGFsZXR0ZSBiYXNlZCBvbiA1IGNvbG9ycwpwYWxldHRlX2NvbCA8LSBSQ29sb3JCcmV3ZXI6OmJyZXdlci5wYWwoNSwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lID0gIkFjY2VudCIgIyBDYW4gY2hhbmdlIHRoaXMgcGFsZXR0ZSAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgVXNlIFJDb2xvckJyZXdlcjo6ZGlzcGxheS5icmV3ZXIuYWxsKCkgdG8gc2VlIG9wdGlvbnMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkKCiMgTWFrZSBjb2xvciByYW1wIGZ1bmN0aW9uIGJhc2VkIG9uIHF1YW50aWxlcyBvZiBzZWcubWVhbiBhbmQgcGFsZXR0ZQpjb2xvcl9mdW4gPC0gY2lyY2xpemU6OmNvbG9yUmFtcDIoCiAgYnJlYWtzID0gcXVhbnRpbGUoY252X2RmJHNlZy5tZWFuLCAKICAgICAgICAgICAgICAgICAgICBjKDAuMTUsIDAuMzUsIDAuNSwgMC42NSwgMC44NSksIG5hLnJtID0gVFJVRSksIAogIGNvbG9ycyA9IHBhbGV0dGVfY29sKQpgYGAKCkFkZCBudW1lcmljYWxseSBiYXNlZCBjb2xvciBjb2x1bW4gdG8gYGNudl9kZmAuCgpgYGB7cn0KY252X2RmIDwtIGNudl9kZiAlPiUKICAjIE1ha2UgY29sdW1uIHRoYXQgc3BlY2lmaWVzIHRoZSBjb2xvciBmb3IgZWFjaCB2YWx1ZQogIGRwbHlyOjptdXRhdGUobnVtX2NvbG9yX2tleSA9IGNvbG9yX2Z1bihjb3B5Lm51bSkpCmBgYAoKQ2FuIHJ1biB0aGlzIHRvIHNlZSBvdGhlciBwYWxldHRlcyBiZXNpZGVzIGBBY2NlbnRgLgoKYGBge3J9ClJDb2xvckJyZXdlcjo6ZGlzcGxheS5icmV3ZXIuYWxsKCkKYGBgCgoqKkZhY3Rvci1iYXNlZCBjb2xvciBrZXlzOioqIApIZXJlIHdlIHdpbGwgYWRkIGEgY29sdW1uIHRvIGBjbnZfZGZgIHRoYXQgY29sb3IgY29kZXMgYmFzZWQgb24gdGhlIGBzdGF0dXNgIApjb2x1bW4gd2hpY2ggaGFzIHRocmVlIGNhdGVnb3JpZXMuIAoKYGBge3J9CiMgTGV0J3MgZGV0ZXJtaW5lIGhvdyBtYW55IGxldmVscyB0aGlzIGZhY3RvciBjb2x1bW4gaGFzCm5fbGV2ZWxzIDwtIGxlbmd0aChsZXZlbHMoY252X2RmJHN0YXR1cykpCgojIFNldCB1cCBhIHBhbGV0dGUgYmFzZWQgb24gbnVtYmVyIG9mIGZhY3RvciBsZXZlbHMKcGFsZXR0ZV9jb2wgPC0gUkNvbG9yQnJld2VyOjpicmV3ZXIucGFsKG5fbGV2ZWxzLCBuYW1lID0gIkFjY2VudCIpCgojIExldCdzIG1ha2UgYSBrZXkgdG8gcmVjb2RlIGJ5IGJhc2VkIG9uIGxldmVscwpwYWxldHRlX2tleSA8LSBwYWxldHRlX2NvbAoKIyBIYXZlIHRoZSBmYWN0b3IgbGV2ZWxzIGJlIHRoZSBuYW1lcwpuYW1lcyhwYWxldHRlX2tleSkgPC0gbGV2ZWxzKGNudl9kZiRzdGF0dXMpCgojIFByZXZpZXcgdGhpcwpwYWxldHRlX2tleQpgYGAKCkFkZCBmYWN0b3IgYmFzZWQgY29sb3IgY29sdW1uIHRvIGNudl9kZgoKYGBge3J9CmNudl9kZiA8LSBjbnZfZGYgJT4lCiAgIyBNYWtlIGNvbHVtbiB0aGF0IHNwZWNpZmllcyB0aGUgY29sb3IgZm9yIGVhY2ggZmFjdG9yIGxldmVsCiAgZHBseXI6Om11dGF0ZShmYWNfY29sb3Jfa2V5ID0gZHBseXI6OnJlY29kZShzdGF0dXMsICEhIXBhbGV0dGVfa2V5KSkKYGBgCgojIyBFeGFtcGxlIHVzZXMgb2YgYGNpcmNvc19tYXBfcGxvdGAKCioqRXhhbXBsZSAxKiogbWFraW5nIGEgY2lyY3VsYXIgc2NhdHRlciBwbG90IGZvciBhIHNpbmdsZSBzYW1wbGUuCgpgYGB7cn0KY2lyY29zX21hcF9wbG90KAogIGRmID0gY252X2RmLAogIGFkZF90cmFjayA9IEZBTFNFLCAjIElmIHNldCB0byBUUlVFIHdlIHdvdWxkIGFkZCB0byBhbiBleGlzaXRpbmcgcGxvdC4KICBzYW1wbGVzX2NvbCA9ICJJRCIsICMgRGVzaWduYXRlIHdoYXQgY29sdW1ucyBvZiBgY252X2RmYCBob2xkIHRoZSBzYW1wbGUgSURzLgogIHNhbXBsZV9uYW1lcyA9IHNhbXBsZXNfZm9yX2V4YW1wbGVzWzFdLCAjIFdoYXQgc2FtcGxlIHdlIGFyZSBwbG90dGluZy4KICBjaHJfY29sID0gImNocm9tIiwgIyBEZXNpZ25hdGUgd2hhdCBjb2x1bW5zIG9mIGBjbnZfZGZgIGhvbGQgdGhlIGNvb3JkaW5hdGVzLgogIHN0YXJ0X2NvbCA9ICJsb2Muc3RhcnQiLAogIGVuZF9jb2wgPSAibG9jLmVuZCIsCiAgeV92YWwgPSAiY29weS5udW0iLCAjIFRoaXMgaXMgdGhlIGRhdGEgd2Ugd2FudCB0byBtYXAKICB0cmFja19oZWlnaHQgPSAuMTUsICMgVGhpcyBpcyB0aGUgZGVmYXVsdAogIHR5cGUgPSAicG9pbnQiLCAjIHR5cGUgaXMgc2V0IHRvIHBvaW50CiAgY29sb3JfY29sID0gImZhY19jb2xvcl9rZXkiCiAgKQpgYGAKCioqRXhhbXBsZSAyKiogbWFraW5nIGEgcGxvdCB3aXRoIHJlY3RhbmdsZXMgZm9yIGEgbXVsdGlwbGUgc2FtcGxlcyBhbmQgY29sb3IgY29kZSBieSBudW1lcmljIHZhbHVlIGFuZCB3aXRob3V0IHRoZSBjeXRvYmFuZC4KCmBgYHtyfQpjaXJjb3NfbWFwX3Bsb3QoCiAgZGYgPSBjbnZfZGYsCiAgYWRkX3RyYWNrID0gRkFMU0UsCiAgc2FtcGxlc19jb2wgPSAiSUQiLAogIHNhbXBsZV9uYW1lcyA9IHNhbXBsZXNfZm9yX2V4YW1wbGVzWzE6M10sICMgV2hhdCBzYW1wbGVzIHdlIGFyZSBwbG90dGluZy4KICBjaHJfY29sID0gImNocm9tIiwKICBzdGFydF9jb2wgPSAibG9jLnN0YXJ0IiwKICBlbmRfY29sID0gImxvYy5lbmQiLAogIHlfdmFsID0gImNvcHkubnVtIiwKICB0cmFja19oZWlnaHQgPSAuMTUsCiAgdHlwZSA9ICJyZWN0IiwgIyBDaGFuZ2VkIHRoaXMgdG8gcmVjdAogIHJlY3RfaGVpZ2h0ID0gLjIsICMgT3B0aW9uYWxseSBjYW4gY2hhbmdlIGhlaWdodCB3aXRoIHRoaXMgYXJndW1lbnQuIERlZmF1bHQgaXMgK18gMC40CiAgY29sb3JfY29sID0gIm51bV9jb2xvcl9rZXkiLCAKICBjeXRvYmFuZCA9IEZBTFNFICMgVHVybmluZyBvZmYgdGhlIGN5dG9iYW5kIGhlcmUuIERlZmF1bHQgaXMgVFJVRQopCmBgYAoKKipFeGFtcGxlIDMqKiBBZGRpbmcgbGF5ZXJzIHRvIHRoZSBzYW1lIHBsb3QuCkhlcmUgd2Ugd2lsbCBwbG90IHR3byBzYW1wbGVzLCBlYWNoIHdpdGggdGhlaXIgb3duIHRyYWNrLCBhbmQgYSBkaWZmZXJlbnQgY29sb3IgZm9yIGVhY2guIAoKYGBge3J9CiMgVGhpcyBmaXJzdCBwYXJ0IGlzIHRoZSBzYW1lIGFzIEV4YW1wbGUgMywgYnV0IHdlIHdpbGwgYWRkIGFuIGV4dHJhIGxheWVyIGFuZCBjaGFuZ2UgdGhlIGNvbG9yIHBhbGV0dGUKY2lyY29zX21hcF9wbG90KAogIGRmID0gY252X2RmLAogIGFkZF90cmFjayA9IEZBTFNFLAogIHNhbXBsZXNfY29sID0gIklEIiwKICBzYW1wbGVfbmFtZXMgPSBzYW1wbGVzX2Zvcl9leGFtcGxlc1sxXSwgIyBPbmUgc2FtcGxlIGhlcmUKICBjaHJfY29sID0gImNocm9tIiwKICBzdGFydF9jb2wgPSAibG9jLnN0YXJ0IiwKICBlbmRfY29sID0gImxvYy5lbmQiLAogIHlfdmFsID0gImNvcHkubnVtIiwKICB0eXBlID0gInBvaW50IiwKICBzaW5nbGVfY29sb3IgPSAicmVkIiAjIEEgc2luZ3VsYXIgY29sb3IKKQojIFdlJ2xsIGNoYW5nZSB0aGUgY29sb3IgdGhvdWdoIGZvciBmdW4KIyBBZGQgcmVjdCBsYXllcgpjaXJjb3NfbWFwX3Bsb3QoCiAgZGYgPSBjbnZfZGYsCiAgYWRkX3RyYWNrID0gVFJVRSwgIyBTZXQgdG8gVFJVRSBzbyBhZGRzIHRvIHBsb3QgY2FsbGVkIGFib3ZlLgogIHNhbXBsZXNfY29sID0gIklEIiwKICBzYW1wbGVfbmFtZXMgPSBzYW1wbGVzX2Zvcl9leGFtcGxlc1syXSwgIyBTZWNvbmQgc2FtcGxlIGhlcmUuIAogIGNocl9jb2wgPSAiY2hyb20iLCAKICBzdGFydF9jb2wgPSAibG9jLnN0YXJ0IiwKICBlbmRfY29sID0gImxvYy5lbmQiLAogIHlfdmFsID0gImNvcHkubnVtIiwKICB0eXBlID0gInBvaW50IiwgCiAgc2luZ2xlX2NvbG9yID0gImJsdWUiICMgQSBkaWZmZXJlbnQgc2luZ3VsYXIgY29sb3IKKQpgYGAKCioqRXhhbXBsZSA0KiogbWFraW5nIGEgdHJhbnNsb2NhdGlvbiBwbG90LiAKCmBgYHtyfQpjaXJjb3NfbWFwX3RyYW5zbG9jKHRyYW5zbG9jX2RmLAogIGFkZF90cmFjayA9IEZBTFNFLCAjIFdlIGNoYW5nZSB0aGlzIHRvIHRydWUgdG8gYWRkIG9uIHRvIG91ciBhbHJlYWR5IGV4aXN0aW5nIHBsb3QKICBzYW1wbGVfbmFtZXMgPSBzYW1wbGUodHJhbnNsb2NfZGYkYmlvc3BlY2ltZW5faWQxLCAxKSwKICBzYW1wbGVzX2NvbCA9ICJiaW9zcGVjaW1lbl9pZDEiLAogIGNocl9jb2xfMSA9ICJjaHJvbTEiLCAjIE5lZWQgdG8gc3BlY2lmeSB3aGljaCBjb2x1bW4gaXMgdGhlIGZpcnN0IGFuZCBzZWNvbmQgbG9jYXRpb24gZm9yIGVhY2gKICBjaHJfY29sXzIgPSAiY2hyb20yIiwKICBzdGFydF9jb2xfMSA9ICJzdGFydDEiLAogIHN0YXJ0X2NvbF8yID0gInN0YXJ0MiIsCiAgZW5kX2NvbF8xID0gImVuZDEiLAogIGVuZF9jb2xfMiA9ICJlbmQyIgopCmBgYAoKKipFeGFtcGxlIDUqKiBTYXZpbmcgYSBwbG90LiAKCmBgYHtyfQojIE9wZW4gdXAgUE5HIGZpbGUKcG5nKGZpbGUucGF0aChwbG90c19kaXIsICJ0cmFuc2xvY19jaXJjb3NfcGxvdC5wbmciKSwgd2lkdGggPSA4MDAsIGhlaWdodCA9IDgwMCkKIyBSdW4gZnVuY3Rpb24gcGVyIHVzdWFsCmNpcmNvc19tYXBfdHJhbnNsb2ModHJhbnNsb2NfZGYsCiAgYWRkX3RyYWNrID0gRkFMU0UsCiAgc2FtcGxlX25hbWVzID0gc2FtcGxlKHRyYW5zbG9jX2RmJGJpb3NwZWNpbWVuX2lkMSwgMSksCiAgc2FtcGxlc19jb2wgPSAiYmlvc3BlY2ltZW5faWQxIiwKICBjaHJfY29sXzEgPSAiY2hyb20xIiwKICBjaHJfY29sXzIgPSAiY2hyb20yIiwKICBzdGFydF9jb2xfMSA9ICJzdGFydDEiLAogIHN0YXJ0X2NvbF8yID0gInN0YXJ0MiIsCiAgZW5kX2NvbF8xID0gImVuZDEiLAogIGVuZF9jb2xfMiA9ICJlbmQyIgopCmRldi5vZmYoKSAjIFR1cm4gb2ZmIHBuZyBkZXYKYGBgCgohW1ByaW50IHBsb3Qgd2Ugc2F2ZWQgdG8gUE5HOl0ocGxvdHMvdHJhbnNsb2NfY2lyY29zX3Bsb3QucG5nKQoKIyMjIFNlc3Npb24gSW5mbwoKYGBge3J9CnNlc3Npb25JbmZvKCkKYGBgCgo=
diff --git a/analyses/chromosomal-instability/util/circos-plots.R b/analyses/chromosomal-instability/util/circos-plots.R index 05a9704d80..a4dd9cc469 100644 --- a/analyses/chromosomal-instability/util/circos-plots.R +++ b/analyses/chromosomal-instability/util/circos-plots.R @@ -135,6 +135,13 @@ circos_map_plot <- function(df, y_min <- min(bed_df$y_val, na.rm = TRUE) y_max <- max(bed_df$y_val, na.rm = TRUE) + # Can't have identical y_min and y_max, this is just so CircleCI runs even if + # the subset data is wonky + if (y_min == y_max) { + y_max <- y_max + 0.001 + warning("ymax and ymin are identical") + } + # Tell them only one color is allowed if (length(single_color) > 1) { warning("Only a single color is allowed for the `single_color` argument, diff --git a/analyses/fusion-summary/01-fusion-summary.Rmd b/analyses/fusion-summary/01-fusion-summary.Rmd index 933900a30b..3875306d81 100644 --- a/analyses/fusion-summary/01-fusion-summary.Rmd +++ b/analyses/fusion-summary/01-fusion-summary.Rmd @@ -151,36 +151,28 @@ specimensUnion<- union(arribaDF$tumor_id, starfusionDF$tumor_id) #### Write non-MB, non-ATRT embryonal fusions to file ```{r} -allFuseEmbry <- allFuseEmbry %>% - prepareOutput(specimensUnion) +if (!running_in_ci) { + allFuseEmbry <- allFuseEmbry %>% + prepareOutput(specimensUnion) + allFuseEmbry %>% + mutate( + `CIC--NUTM1` = 0, + `MN1--BEND2` = 0 + ) %>% + write_tsv(embryFile) +} ``` -```{r} -# Are there any missing fusions? -setdiff(embryFuses, colnames(allFuseEmbry)) -``` +#### Write ependymoma fusions to file ```{r} -allFuseEmbry %>% +allFuseEpend %>% + prepareOutput(specimensUnion) %>% mutate( - `CIC--NUTM1` = 0, - `MN1--BEND2` = 0 + `C11orf95--YAP1` = 0, + `LTBP3--RELA` = 0, + `PTEN--TAS2R1` = 0, + `YAP1--MAMLD2` = 0 ) %>% - write_tsv(embryFile) -``` - -#### Write ependymoma fusions to file - -```{r} -if (!running_in_ci) { - allFuseEpend %>% - prepareOutput(specimensUnion) %>% - mutate( - `C11orf95--YAP1` = 0, - `LTBP3--RELA` = 0, - `PTEN--TAS2R1` = 0, - `YAP1--MAMLD2` = 0 - ) %>% - write_tsv(ependFile) -} + write_tsv(ependFile) ``` diff --git a/analyses/fusion-summary/01-fusion-summary.nb.html b/analyses/fusion-summary/01-fusion-summary.nb.html index dd7b91804a..10193a8610 100644 --- a/analyses/fusion-summary/01-fusion-summary.nb.html +++ b/analyses/fusion-summary/01-fusion-summary.nb.html @@ -1789,19 +1789,6 @@

Libraries and functions

library(tidyverse)
- -
Registered S3 method overwritten by 'dplyr':
-  method           from
-  print.rowwise_df     
-── Attaching packages ────────────────────────────────────────────────────────────────────── tidyverse 1.2.1 ──
-✔ ggplot2 3.2.0     ✔ purrr   0.3.2
-✔ tibble  2.1.3     ✔ dplyr   0.8.3
-✔ tidyr   0.8.3     ✔ stringr 1.4.0
-✔ readr   1.3.1     ✔ forcats 0.4.0
-── Conflicts ───────────────────────────────────────────────────────────────────────── tidyverse_conflicts() ──
-✖ dplyr::filter() masks stats::filter()
-✖ dplyr::lag()    masks stats::lag()
- @@ -1994,9 +1981,17 @@

Filter putative oncogenic fusions list

Write non-MB, non-ATRT embryonal fusions to file

- -
allFuseEmbry <- allFuseEmbry %>%
-  prepareOutput(specimensUnion)
+ +
if (!running_in_ci) {
+  allFuseEmbry <- allFuseEmbry %>%
+    prepareOutput(specimensUnion)
+  allFuseEmbry %>%
+    mutate(
+      `CIC--NUTM1` = 0,
+      `MN1--BEND2` = 0
+    ) %>%
+    write_tsv(embryFile)
+}
Using FusionName as value column: use value.var to override.
@@ -2006,46 +2001,21 @@ 

Write non-MB, non-ATRT embryonal fusions to file

- - - -
# Are there any missing fusions?
-setdiff(embryFuses, colnames(allFuseEmbry))
- - -
[1] "CIC--NUTM1" "MN1--BEND2"
- - - - - - -
allFuseEmbry %>%
-  mutate(
-    `CIC--NUTM1` = 0,
-    `MN1--BEND2` = 0
-  ) %>%
-  write_tsv(embryFile)
- - -

Write ependymoma fusions to file

- -
if (!running_in_ci) {
-  allFuseEpend %>%
-    prepareOutput(specimensUnion) %>%
-    mutate(
-      `C11orf95--YAP1` = 0,
-      `LTBP3--RELA` = 0,
-      `PTEN--TAS2R1` = 0,
-      `YAP1--MAMLD2` = 0
-    ) %>%
-    write_tsv(ependFile)
-}
+ +
allFuseEpend %>%
+  prepareOutput(specimensUnion) %>%
+  mutate(
+    `C11orf95--YAP1` = 0,
+    `LTBP3--RELA` = 0,
+    `PTEN--TAS2R1` = 0,
+    `YAP1--MAMLD2` = 0
+  ) %>%
+  write_tsv(ependFile)
Using FusionName as value column: use value.var to override.
@@ -2058,7 +2028,7 @@ 

Write ependymoma fusions to file

-
LS0tCnRpdGxlOiAiR2VuZXJhdGUgRnVzaW9uIFN1bW1hcnkgRmlsZXMiCm91dHB1dDogaHRtbF9ub3RlYm9vawphdXRob3I6IERhbmllbCBNaWxsZXIgKEQzYikgYW5kIEphY2x5biBUYXJvbmkgKENDREwpCmRhdGU6IEphbnVhcnkgMjAyMApwYXJhbXM6CiAgaXNfY2k6IDAKLS0tCgpHZW5lcmF0ZSBmdXNpb24gZmlsZXMgc3BlY2lmaWNhbGx5IGZvciBjb25zdW1wdGlvbiBieSBtb2xlY3VsYXIgc3VidHlwaW5nIGFuYWx5c2VzCgojIyBTZXQgdXAKCmBgYHtyfQojIGlmIHJ1bm5pbmcgaW4gQ0ksIHdlIG5lZWQgdG8gc2tpcCB0aGUgRVBOIHN0ZXBzCmlmIChwYXJhbXMkaXNfY2kgPT0gMCkgcnVubmluZ19pbl9jaSA8LSBGQUxTRQppZiAocGFyYW1zJGlzX2NpID09IDEpIHJ1bm5pbmdfaW5fY2kgPC0gVFJVRQpgYGAKCiMjIyBMaWJyYXJpZXMgYW5kIGZ1bmN0aW9ucwoKYGBge3J9CmxpYnJhcnkodGlkeXZlcnNlKQpgYGAKCmBgYHtyfQojJyBHZW5lcmF0ZSBmaWx0ZXJlZCBmdXNpb24gZnJhbWUKIycgQHBhcmFtIGRmIFVuZmlsdGVyZWQgZnVzaW9uIGRhdGEgZnJhbWUKIycgQHBhcmFtIGJpb2lkIExpc3Qgb2YgYmlvc3BlY2ltZW4gSURzCiMnIEBwYXJhbSBmdXNlcyBMaXN0IG9mIGV4cGxpY2l0IGZ1c2lvbiBuYW1lcwojJyBAcGFyYW0gZ2VuZXMgTGlzdCBvZiBnZW5lIG5hbWVzCiMnIEByZXR1cm4gdGhlIGZpbHRlcmVkIGZ1c2lvbiBkYXRhIGZyYW1lCmZpbHRlckZ1c2lvbiA8LSBmdW5jdGlvbihkZiwgYmlvaWQsIGZ1c2VzLCBnZW5lcykgewogIGlmICghbWlzc2luZyhiaW9pZCkpIHsKICAgIGRmIDwtIGZpbHRlcihkZiwgU2FtcGxlICVpbiUgYmlvaWQpCiAgfQogIGlmICghbWlzc2luZyhmdXNlcykgJiAhbWlzc2luZyhnZW5lcykpIHsKICAgIGRmIDwtIGZpbHRlcihkZiwgRnVzaW9uTmFtZSAlaW4lIGZ1c2VzIHwKICAgICAgICAgICAgICAgICAgIEdlbmUxQSAlaW4lIGdlbmVzIHwKICAgICAgICAgICAgICAgICAgIEdlbmUyQSAlaW4lIGdlbmVzIHwKICAgICAgICAgICAgICAgICAgIEdlbmUxQiAlaW4lIGdlbmVzIHwKICAgICAgICAgICAgICAgICAgIEdlbmUyQiAlaW4lIGdlbmVzKQogIH0gZWxzZSBpZiAoIW1pc3NpbmcoZnVzZXMpKSB7CiAgICBkZiA8LSBmaWx0ZXIoZGYsIEZ1c2lvbk5hbWUgJWluJSBmdXNlcykKICB9IGVsc2UgaWYgKCFtaXNzaW5nKGdlbmVzKSkgewogICAgZGYgPC0gZmlsdGVyKGRmLAogICAgICAgICAgICAgICAgIEdlbmUxQSAlaW4lIGdlbmVzIHwKICAgICAgICAgICAgICAgICAgIEdlbmUyQSAlaW4lIGdlbmVzIHwKICAgICAgICAgICAgICAgICAgIEdlbmUxQiAlaW4lIGdlbmVzIHwKICAgICAgICAgICAgICAgICAgIEdlbmUyQiAlaW4lIGdlbmVzKQogIH0KICByZXR1cm4oZGYgJT4lIHNlbGVjdChTYW1wbGUsIEZ1c2lvbk5hbWUpKQp9CgoKIycgR2VuZXJhdGUgbWF0cml4IHdpdGggZnVzaW9uIGNvdW50cwojJyBAcGFyYW0gZnVzZURGIEZpbHRlcmVkIGZ1c2lvbiBkYXRhIGZyYW1lCiMnIEBwYXJhbSBiaW9pZCBMaXN0IG9mIGJpb3NwZWNpbWVuIElEcyB0aGF0IHNob3VsZCBiZSBpbmNsdWRlZCBpbiBmaW5hbCB0YWJsZQoKIycgQHJldHVybiBEYXRhIGZyYW1lIHRoYXQgY29udGFpbnMgZnVzaW9uIGNvdW50cwpwcmVwYXJlT3V0cHV0IDwtIGZ1bmN0aW9uKGZ1c2VERiwgYmlvaWQpIHsKICBmdXNlREYgJT4lIAogICAgcmVzaGFwZTI6OmRjYXN0KFNhbXBsZSB+IEZ1c2lvbk5hbWUpICU+JQogICAgcmlnaHRfam9pbihkYXRhLmZyYW1lKFNhbXBsZSA9IGJpb2lkKSkgJT4lCiAgICByZXBsYWNlKGlzLm5hKC4pLCAwKSAlPiUKICAgIHJlbmFtZShLaWRzX0ZpcnN0X0Jpb3NwZWNpbWVuX0lEID0gU2FtcGxlKQp9CmBgYAoKIyMjIFJlYWQgaW4gZGF0YQoKYGBge3J9CmRhdGFEaXIgPC0gZmlsZS5wYXRoKCIuLiIsICIuLiIsICJkYXRhIikKIycgVGhlIHB1dGF0aXZlIG9uY29nZW5pYyBmdXNpb24gZmlsZSBpcyB3aGF0IHdlJ2xsIHVzZSB0byBjaGVjayBmb3IgdGhlIAojJyBwcmVzZW5jZSBvciBhYnNlbmNlIG9mIHRoZSBmdXNpb25zLgpwdXRhdGl2ZU9uY29nZW5pY0RGIDwtIAogIHJlYWRfdHN2KGZpbGUucGF0aChkYXRhRGlyLCAicGJ0YS1mdXNpb24tcHV0YXRpdmUtb25jb2dlbmljLnRzdiIpKQojJyBIb3dldmVyLCBzb21lIGJpb3NwZWNpbWVucyBhcmUgbm90IHJlcHJlc2VudGVkIGluIHRoaXMgZmlsdGVyZWQsIHByaW9yaXRpemVkCiMnIGZpbGUgYnV0ICphcmUqIHByZXNlbnQgaW4gdGhlIG9yaWdpbmFsIGZpbGVzIC0tIHRoaXMgd2lsbCBjYXVzZSB0aGVtIHRvIGJlCiMnICJtaXNzaW5nIiBpbiB0aGUgZmluYWwgZmlsZXMgZm9yIGNvbnN1bXB0aW9uIHdoaWNoIGNvdWxkIG1pc2xlYWQgYW5hbHlzdHMuCmFycmliYURGIDwtIHJlYWRfdHN2KGZpbGUucGF0aChkYXRhRGlyLCAicGJ0YS1mdXNpb24tYXJyaWJhLnRzdi5neiIpKQpzdGFyZnVzaW9uREYgPC0gcmVhZF90c3YoZmlsZS5wYXRoKGRhdGFEaXIsICJwYnRhLWZ1c2lvbi1zdGFyZnVzaW9uLnRzdi5neiIpKQpgYGAKCiMjIyBPdXRwdXQKCmBgYHtyfQpyZXN1bHRzRGlyIDwtICJyZXN1bHRzIgppZiAoIWRpci5leGlzdHMocmVzdWx0c0RpcikpIHsKICBkaXIuY3JlYXRlKHJlc3VsdHNEaXIpCn0KZXBlbmRGaWxlIDwtIGZpbGUucGF0aChyZXN1bHRzRGlyLCAiZnVzaW9uX3N1bW1hcnlfZXBlbmR5bW9tYV9mb2kudHN2IikKZW1icnlGaWxlIDwtIGZpbGUucGF0aChyZXN1bHRzRGlyLCAiZnVzaW9uX3N1bW1hcnlfZW1icnlvbmFsX2ZvaS50c3YiKQpgYGAKCiMjIEZ1c2lvbnMgYW5kIGdlbmVzIG9mIGludGVyZXN0CgpUYWtlbiBmcm9tIFtgQWxleHNMZW1vbmFkZS9PcGVuUEJUQS1hbmFseXNpcyMyNDVgXShodHRwczovL2dpdGh1Yi5jb20vQWxleHNMZW1vbmFkZS9PcGVuUEJUQS1hbmFseXNpcy9pc3N1ZXMvMjQ1KSBhbmQgW2BBbGV4c0xlbW9uYWRlL09wZW5QQlRBLWFuYWx5c2lzIzI1MWBdKGh0dHBzOi8vZ2l0aHViLmNvbS9BbGV4c0xlbW9uYWRlL09wZW5QQlRBLWFuYWx5c2lzL2lzc3Vlcy8yNTEpLCByZXNwZWN0aXZlbHkuCgpgYGB7cn0KIycgKipGaWx0ZXJzKioKIycKIycgKkZ1c2lvbnMgRmlsdGVycyoKIycgMTogRXhhY3QgbWF0Y2ggYSBsaXN0IG9mIGZ1c2lvbnMgY29tbW9uIGluIEVwZW5keW1vbWEgdHVtb3JzCmVwZW5kRnVzZXMgPC0gYygKICAiQzExb3JmOTUtLU1BTUwyIiwKICAiQzExb3JmOTUtLVJFTEEiLAogICJDMTFvcmY5NS0tWUFQMSIsCiAgIkxUQlAzLS1SRUxBIiwKICAiUFRFTi0tVEFTMlIxIiwKICAiWUFQMS0tRkFNMTE4QiIsCiAgIllBUDEtLU1BTUxEMSIsCiAgIllBUDEtLU1BTUxEMiIKKQplcGVuZEdlbmVzIDwtIGMoCiAgIlJFTEEiCikKIycgMjogRXhhY3QgbWF0Y2ggYSBsaXN0IG9mIGZ1c2lvbnMgY29tbW9uIGluIEVtYnJ5b25hbCB0dW1vcnMKIycgYXMgd2VsbCBhcyBmdXNpb25zIGNvbnRhaW5pbmcgYSBwYXJ0aWN1bGFyIGdlbmUgd2l0aCBhbnkgb3RoZXIgZ2VuZQplbWJyeUZ1c2VzIDwtIGMoCiAgIkNJQy0tTlVUTTEiLAogICJNTjEtLUJFTkQyIiwKICAiTU4xLS1DWFhDNSIKKQplbWJyeUdlbmVzIDwtIGMoCiAgIkZPWFIyIiwKICAiTU4xIiwKICAiVFRZSDEiCikKYGBgCgojIyMgRmlsdGVyIHB1dGF0aXZlIG9uY29nZW5pYyBmdXNpb25zIGxpc3QKCmBgYHtyfQphbGxGdXNlRXBlbmQgPC0gZmlsdGVyRnVzaW9uKGRmID0gcHV0YXRpdmVPbmNvZ2VuaWNERiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdXNlcyA9IGVwZW5kRnVzZXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2VuZXMgPSBlcGVuZEdlbmVzKQphbGxGdXNlRW1icnkgPC0gZmlsdGVyRnVzaW9uKGRmID0gcHV0YXRpdmVPbmNvZ2VuaWNERiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdXNlcyA9IGVtYnJ5RnVzZXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2VuZXMgPSBlbWJyeUdlbmVzKQpgYGAKCkdldCB0aGUgYmlvc3BlY2ltZW4gSURzIHRoYXQgYXJlIHByZXNlbnQgaW4gKmVpdGhlciogY2FsbGVyIGZpbGUgKEFycmliYSwgU1RBUkZ1c2lvbikuClRoZSBmdXNpb25zIGluIHRoZSBwdXRhdGl2ZSBvbmNvZ2VuaWMgZnVzaW9uIGZpbGUgY2FuIGJlIHJldGFpbmVkIGV2ZW4gaWYgdGhleSBhcmUgbm90IGluIGJvdGggY2FsbGVyczogaHR0cHM6Ly9naXRodWIuY29tL0FsZXhzTGVtb25hZGUvT3BlblBCVEEtYW5hbHlzaXMvYmxvYi84ZmJhMTc1MzYwOGQ4YWMwYWEzZDVkN2Q2M2M0ODBiOGYwMGZmMGU5L2FuYWx5c2VzL2Z1c2lvbl9maWx0ZXJpbmcvMDQtcHJvamVjdC1zcGVjaWZpYy1maWx0ZXJpbmcuUm1kI0wyNDIKV2UgdXNlIHRoZSBwdXRhdGl2ZSBvbmNvZ2VuaWMgZmlsZSBoZXJlLCB0aGVyZWZvcmUgYW55IHNhbXBsZSB0aGF0IGlzIGluIGVpdGhlciBmaWxlIGJ1dCBkb2VzIG5vdCBoYXZlIGEgZnVzaW9uIHRoYXQgaXMgcmVsZXZhbnQgdG8gdGhlIHN1YnR5cGluZyB0aWNrZXRzIGlzIG5vdCBfbWlzc2luZ18gYnV0IGluc3RlYWQgaGFzIG5vIGV2aWRlbmNlIG9mIHRoZSByZWxldmFudCBmdXNpb25zLgoKYGBge3J9CnNwZWNpbWVuc1VuaW9uPC0gdW5pb24oYXJyaWJhREYkdHVtb3JfaWQsIHN0YXJmdXNpb25ERiR0dW1vcl9pZCkKYGBgCgojIyMjIFdyaXRlIG5vbi1NQiwgbm9uLUFUUlQgZW1icnlvbmFsIGZ1c2lvbnMgdG8gZmlsZQoKYGBge3J9CmFsbEZ1c2VFbWJyeSA8LSBhbGxGdXNlRW1icnkgJT4lCiAgcHJlcGFyZU91dHB1dChzcGVjaW1lbnNVbmlvbikKYGBgCgpgYGB7cn0KIyBBcmUgdGhlcmUgYW55IG1pc3NpbmcgZnVzaW9ucz8Kc2V0ZGlmZihlbWJyeUZ1c2VzLCBjb2xuYW1lcyhhbGxGdXNlRW1icnkpKQpgYGAKCmBgYHtyfQphbGxGdXNlRW1icnkgJT4lCiAgbXV0YXRlKAogICAgYENJQy0tTlVUTTFgID0gMCwKICAgIGBNTjEtLUJFTkQyYCA9IDAKICApICU+JQogIHdyaXRlX3RzdihlbWJyeUZpbGUpCmBgYAoKIyMjIyBXcml0ZSBlcGVuZHltb21hIGZ1c2lvbnMgdG8gZmlsZQoKYGBge3J9CmlmICghcnVubmluZ19pbl9jaSkgewogIGFsbEZ1c2VFcGVuZCAlPiUKICAgIHByZXBhcmVPdXRwdXQoc3BlY2ltZW5zVW5pb24pICU+JQogICAgbXV0YXRlKAogICAgICBgQzExb3JmOTUtLVlBUDFgID0gMCwKICAgICAgYExUQlAzLS1SRUxBYCA9IDAsCiAgICAgIGBQVEVOLS1UQVMyUjFgID0gMCwKICAgICAgYFlBUDEtLU1BTUxEMmAgPSAwCiAgICApICU+JQogICAgd3JpdGVfdHN2KGVwZW5kRmlsZSkKfQpgYGAK
+
LS0tCnRpdGxlOiAiR2VuZXJhdGUgRnVzaW9uIFN1bW1hcnkgRmlsZXMiCm91dHB1dDogaHRtbF9ub3RlYm9vawphdXRob3I6IERhbmllbCBNaWxsZXIgKEQzYikgYW5kIEphY2x5biBUYXJvbmkgKENDREwpCmRhdGU6IEphbnVhcnkgMjAyMApwYXJhbXM6CiAgaXNfY2k6IDAKLS0tCgpHZW5lcmF0ZSBmdXNpb24gZmlsZXMgc3BlY2lmaWNhbGx5IGZvciBjb25zdW1wdGlvbiBieSBtb2xlY3VsYXIgc3VidHlwaW5nIGFuYWx5c2VzCgojIyBTZXQgdXAKCmBgYHtyfQojIGlmIHJ1bm5pbmcgaW4gQ0ksIHdlIG5lZWQgdG8gc2tpcCB0aGUgRVBOIHN0ZXBzCmlmIChwYXJhbXMkaXNfY2kgPT0gMCkgcnVubmluZ19pbl9jaSA8LSBGQUxTRQppZiAocGFyYW1zJGlzX2NpID09IDEpIHJ1bm5pbmdfaW5fY2kgPC0gVFJVRQpgYGAKCiMjIyBMaWJyYXJpZXMgYW5kIGZ1bmN0aW9ucwoKYGBge3J9CmxpYnJhcnkodGlkeXZlcnNlKQpgYGAKCmBgYHtyfQojJyBHZW5lcmF0ZSBmaWx0ZXJlZCBmdXNpb24gZnJhbWUKIycgQHBhcmFtIGRmIFVuZmlsdGVyZWQgZnVzaW9uIGRhdGEgZnJhbWUKIycgQHBhcmFtIGJpb2lkIExpc3Qgb2YgYmlvc3BlY2ltZW4gSURzCiMnIEBwYXJhbSBmdXNlcyBMaXN0IG9mIGV4cGxpY2l0IGZ1c2lvbiBuYW1lcwojJyBAcGFyYW0gZ2VuZXMgTGlzdCBvZiBnZW5lIG5hbWVzCiMnIEByZXR1cm4gdGhlIGZpbHRlcmVkIGZ1c2lvbiBkYXRhIGZyYW1lCmZpbHRlckZ1c2lvbiA8LSBmdW5jdGlvbihkZiwgYmlvaWQsIGZ1c2VzLCBnZW5lcykgewogIGlmICghbWlzc2luZyhiaW9pZCkpIHsKICAgIGRmIDwtIGZpbHRlcihkZiwgU2FtcGxlICVpbiUgYmlvaWQpCiAgfQogIGlmICghbWlzc2luZyhmdXNlcykgJiAhbWlzc2luZyhnZW5lcykpIHsKICAgIGRmIDwtIGZpbHRlcihkZiwgRnVzaW9uTmFtZSAlaW4lIGZ1c2VzIHwKICAgICAgICAgICAgICAgICAgIEdlbmUxQSAlaW4lIGdlbmVzIHwKICAgICAgICAgICAgICAgICAgIEdlbmUyQSAlaW4lIGdlbmVzIHwKICAgICAgICAgICAgICAgICAgIEdlbmUxQiAlaW4lIGdlbmVzIHwKICAgICAgICAgICAgICAgICAgIEdlbmUyQiAlaW4lIGdlbmVzKQogIH0gZWxzZSBpZiAoIW1pc3NpbmcoZnVzZXMpKSB7CiAgICBkZiA8LSBmaWx0ZXIoZGYsIEZ1c2lvbk5hbWUgJWluJSBmdXNlcykKICB9IGVsc2UgaWYgKCFtaXNzaW5nKGdlbmVzKSkgewogICAgZGYgPC0gZmlsdGVyKGRmLAogICAgICAgICAgICAgICAgIEdlbmUxQSAlaW4lIGdlbmVzIHwKICAgICAgICAgICAgICAgICAgIEdlbmUyQSAlaW4lIGdlbmVzIHwKICAgICAgICAgICAgICAgICAgIEdlbmUxQiAlaW4lIGdlbmVzIHwKICAgICAgICAgICAgICAgICAgIEdlbmUyQiAlaW4lIGdlbmVzKQogIH0KICByZXR1cm4oZGYgJT4lIHNlbGVjdChTYW1wbGUsIEZ1c2lvbk5hbWUpKQp9CgoKIycgR2VuZXJhdGUgbWF0cml4IHdpdGggZnVzaW9uIGNvdW50cwojJyBAcGFyYW0gZnVzZURGIEZpbHRlcmVkIGZ1c2lvbiBkYXRhIGZyYW1lCiMnIEBwYXJhbSBiaW9pZCBMaXN0IG9mIGJpb3NwZWNpbWVuIElEcyB0aGF0IHNob3VsZCBiZSBpbmNsdWRlZCBpbiBmaW5hbCB0YWJsZQoKIycgQHJldHVybiBEYXRhIGZyYW1lIHRoYXQgY29udGFpbnMgZnVzaW9uIGNvdW50cwpwcmVwYXJlT3V0cHV0IDwtIGZ1bmN0aW9uKGZ1c2VERiwgYmlvaWQpIHsKICBmdXNlREYgJT4lIAogICAgcmVzaGFwZTI6OmRjYXN0KFNhbXBsZSB+IEZ1c2lvbk5hbWUpICU+JQogICAgcmlnaHRfam9pbihkYXRhLmZyYW1lKFNhbXBsZSA9IGJpb2lkKSkgJT4lCiAgICByZXBsYWNlKGlzLm5hKC4pLCAwKSAlPiUKICAgIHJlbmFtZShLaWRzX0ZpcnN0X0Jpb3NwZWNpbWVuX0lEID0gU2FtcGxlKQp9CmBgYAoKIyMjIFJlYWQgaW4gZGF0YQoKYGBge3J9CmRhdGFEaXIgPC0gZmlsZS5wYXRoKCIuLiIsICIuLiIsICJkYXRhIikKIycgVGhlIHB1dGF0aXZlIG9uY29nZW5pYyBmdXNpb24gZmlsZSBpcyB3aGF0IHdlJ2xsIHVzZSB0byBjaGVjayBmb3IgdGhlIAojJyBwcmVzZW5jZSBvciBhYnNlbmNlIG9mIHRoZSBmdXNpb25zLgpwdXRhdGl2ZU9uY29nZW5pY0RGIDwtIAogIHJlYWRfdHN2KGZpbGUucGF0aChkYXRhRGlyLCAicGJ0YS1mdXNpb24tcHV0YXRpdmUtb25jb2dlbmljLnRzdiIpKQojJyBIb3dldmVyLCBzb21lIGJpb3NwZWNpbWVucyBhcmUgbm90IHJlcHJlc2VudGVkIGluIHRoaXMgZmlsdGVyZWQsIHByaW9yaXRpemVkCiMnIGZpbGUgYnV0ICphcmUqIHByZXNlbnQgaW4gdGhlIG9yaWdpbmFsIGZpbGVzIC0tIHRoaXMgd2lsbCBjYXVzZSB0aGVtIHRvIGJlCiMnICJtaXNzaW5nIiBpbiB0aGUgZmluYWwgZmlsZXMgZm9yIGNvbnN1bXB0aW9uIHdoaWNoIGNvdWxkIG1pc2xlYWQgYW5hbHlzdHMuCmFycmliYURGIDwtIHJlYWRfdHN2KGZpbGUucGF0aChkYXRhRGlyLCAicGJ0YS1mdXNpb24tYXJyaWJhLnRzdi5neiIpKQpzdGFyZnVzaW9uREYgPC0gcmVhZF90c3YoZmlsZS5wYXRoKGRhdGFEaXIsICJwYnRhLWZ1c2lvbi1zdGFyZnVzaW9uLnRzdi5neiIpKQpgYGAKCiMjIyBPdXRwdXQKCmBgYHtyfQpyZXN1bHRzRGlyIDwtICJyZXN1bHRzIgppZiAoIWRpci5leGlzdHMocmVzdWx0c0RpcikpIHsKICBkaXIuY3JlYXRlKHJlc3VsdHNEaXIpCn0KZXBlbmRGaWxlIDwtIGZpbGUucGF0aChyZXN1bHRzRGlyLCAiZnVzaW9uX3N1bW1hcnlfZXBlbmR5bW9tYV9mb2kudHN2IikKZW1icnlGaWxlIDwtIGZpbGUucGF0aChyZXN1bHRzRGlyLCAiZnVzaW9uX3N1bW1hcnlfZW1icnlvbmFsX2ZvaS50c3YiKQpgYGAKCiMjIEZ1c2lvbnMgYW5kIGdlbmVzIG9mIGludGVyZXN0CgpUYWtlbiBmcm9tIFtgQWxleHNMZW1vbmFkZS9PcGVuUEJUQS1hbmFseXNpcyMyNDVgXShodHRwczovL2dpdGh1Yi5jb20vQWxleHNMZW1vbmFkZS9PcGVuUEJUQS1hbmFseXNpcy9pc3N1ZXMvMjQ1KSBhbmQgW2BBbGV4c0xlbW9uYWRlL09wZW5QQlRBLWFuYWx5c2lzIzI1MWBdKGh0dHBzOi8vZ2l0aHViLmNvbS9BbGV4c0xlbW9uYWRlL09wZW5QQlRBLWFuYWx5c2lzL2lzc3Vlcy8yNTEpLCByZXNwZWN0aXZlbHkuCgpgYGB7cn0KIycgKipGaWx0ZXJzKioKIycKIycgKkZ1c2lvbnMgRmlsdGVycyoKIycgMTogRXhhY3QgbWF0Y2ggYSBsaXN0IG9mIGZ1c2lvbnMgY29tbW9uIGluIEVwZW5keW1vbWEgdHVtb3JzCmVwZW5kRnVzZXMgPC0gYygKICAiQzExb3JmOTUtLU1BTUwyIiwKICAiQzExb3JmOTUtLVJFTEEiLAogICJDMTFvcmY5NS0tWUFQMSIsCiAgIkxUQlAzLS1SRUxBIiwKICAiUFRFTi0tVEFTMlIxIiwKICAiWUFQMS0tRkFNMTE4QiIsCiAgIllBUDEtLU1BTUxEMSIsCiAgIllBUDEtLU1BTUxEMiIKKQplcGVuZEdlbmVzIDwtIGMoCiAgIlJFTEEiCikKIycgMjogRXhhY3QgbWF0Y2ggYSBsaXN0IG9mIGZ1c2lvbnMgY29tbW9uIGluIEVtYnJ5b25hbCB0dW1vcnMKIycgYXMgd2VsbCBhcyBmdXNpb25zIGNvbnRhaW5pbmcgYSBwYXJ0aWN1bGFyIGdlbmUgd2l0aCBhbnkgb3RoZXIgZ2VuZQplbWJyeUZ1c2VzIDwtIGMoCiAgIkNJQy0tTlVUTTEiLAogICJNTjEtLUJFTkQyIiwKICAiTU4xLS1DWFhDNSIKKQplbWJyeUdlbmVzIDwtIGMoCiAgIkZPWFIyIiwKICAiTU4xIiwKICAiVFRZSDEiCikKYGBgCgojIyMgRmlsdGVyIHB1dGF0aXZlIG9uY29nZW5pYyBmdXNpb25zIGxpc3QKCmBgYHtyfQphbGxGdXNlRXBlbmQgPC0gZmlsdGVyRnVzaW9uKGRmID0gcHV0YXRpdmVPbmNvZ2VuaWNERiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdXNlcyA9IGVwZW5kRnVzZXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2VuZXMgPSBlcGVuZEdlbmVzKQphbGxGdXNlRW1icnkgPC0gZmlsdGVyRnVzaW9uKGRmID0gcHV0YXRpdmVPbmNvZ2VuaWNERiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdXNlcyA9IGVtYnJ5RnVzZXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2VuZXMgPSBlbWJyeUdlbmVzKQpgYGAKCkdldCB0aGUgYmlvc3BlY2ltZW4gSURzIHRoYXQgYXJlIHByZXNlbnQgaW4gKmVpdGhlciogY2FsbGVyIGZpbGUgKEFycmliYSwgU1RBUkZ1c2lvbikuClRoZSBmdXNpb25zIGluIHRoZSBwdXRhdGl2ZSBvbmNvZ2VuaWMgZnVzaW9uIGZpbGUgY2FuIGJlIHJldGFpbmVkIGV2ZW4gaWYgdGhleSBhcmUgbm90IGluIGJvdGggY2FsbGVyczogaHR0cHM6Ly9naXRodWIuY29tL0FsZXhzTGVtb25hZGUvT3BlblBCVEEtYW5hbHlzaXMvYmxvYi84ZmJhMTc1MzYwOGQ4YWMwYWEzZDVkN2Q2M2M0ODBiOGYwMGZmMGU5L2FuYWx5c2VzL2Z1c2lvbl9maWx0ZXJpbmcvMDQtcHJvamVjdC1zcGVjaWZpYy1maWx0ZXJpbmcuUm1kI0wyNDIKV2UgdXNlIHRoZSBwdXRhdGl2ZSBvbmNvZ2VuaWMgZmlsZSBoZXJlLCB0aGVyZWZvcmUgYW55IHNhbXBsZSB0aGF0IGlzIGluIGVpdGhlciBmaWxlIGJ1dCBkb2VzIG5vdCBoYXZlIGEgZnVzaW9uIHRoYXQgaXMgcmVsZXZhbnQgdG8gdGhlIHN1YnR5cGluZyB0aWNrZXRzIGlzIG5vdCBfbWlzc2luZ18gYnV0IGluc3RlYWQgaGFzIG5vIGV2aWRlbmNlIG9mIHRoZSByZWxldmFudCBmdXNpb25zLgoKYGBge3J9CnNwZWNpbWVuc1VuaW9uPC0gdW5pb24oYXJyaWJhREYkdHVtb3JfaWQsIHN0YXJmdXNpb25ERiR0dW1vcl9pZCkKYGBgCgojIyMjIFdyaXRlIG5vbi1NQiwgbm9uLUFUUlQgZW1icnlvbmFsIGZ1c2lvbnMgdG8gZmlsZQoKYGBge3J9CmlmICghcnVubmluZ19pbl9jaSkgewogIGFsbEZ1c2VFbWJyeSA8LSBhbGxGdXNlRW1icnkgJT4lCiAgICBwcmVwYXJlT3V0cHV0KHNwZWNpbWVuc1VuaW9uKQogIGFsbEZ1c2VFbWJyeSAlPiUKICAgIG11dGF0ZSgKICAgICAgYENJQy0tTlVUTTFgID0gMCwKICAgICAgYE1OMS0tQkVORDJgID0gMAogICAgKSAlPiUKICAgIHdyaXRlX3RzdihlbWJyeUZpbGUpCn0KYGBgCgojIyMjIFdyaXRlIGVwZW5keW1vbWEgZnVzaW9ucyB0byBmaWxlCgpgYGB7cn0KYWxsRnVzZUVwZW5kICU+JQogIHByZXBhcmVPdXRwdXQoc3BlY2ltZW5zVW5pb24pICU+JQogIG11dGF0ZSgKICAgIGBDMTFvcmY5NS0tWUFQMWAgPSAwLAogICAgYExUQlAzLS1SRUxBYCA9IDAsCiAgICBgUFRFTi0tVEFTMlIxYCA9IDAsCiAgICBgWUFQMS0tTUFNTEQyYCA9IDAKICApICU+JQogIHdyaXRlX3RzdihlcGVuZEZpbGUpCmBgYAo=
diff --git a/analyses/tp53_nf1_score/run_classifier.sh b/analyses/tp53_nf1_score/run_classifier.sh index 851fac2770..3caba9d0c5 100644 --- a/analyses/tp53_nf1_score/run_classifier.sh +++ b/analyses/tp53_nf1_score/run_classifier.sh @@ -9,8 +9,9 @@ set -e set -o pipefail -# we want to skip the poly-A ROC plot in CI -POLYA_PLOT=${OPENPBTA_POLYAPLOT:-1} +# we want to skip the poly-A steps in CI +# if POLYA=1, poly-A steps will be run +POLYA=${OPENPBTA_POLYAPLOT:-1} data_dir="data" scratch_dir="scratch" @@ -38,16 +39,12 @@ Rscript --vanilla ${analysis_dir}/00-tp53-nf1-alterations.R \ collapsed_stranded="pbta-gene-expression-rsem-fpkm-collapsed.stranded.rds" collapsed_polya="pbta-gene-expression-rsem-fpkm-collapsed.polya.rds" -# Run classifier for stranded and polya +# Run classifier and ROC plotting for stranded data python3 ${analysis_dir}/01-apply-classifier.py -f ${collapsed_stranded} -python3 ${analysis_dir}/01-apply-classifier.py -f ${collapsed_polya} - - -# Run ROC plot step +python3 ${analysis_dir}/02-evaluate-classifier.py -s ${analysis_dir}/results/TP53_NF1_snv_alteration.tsv -f ${analysis_dir}/results/pbta-gene-expression-rsem-fpkm-collapsed.stranded_classifier_scores.tsv -c ${data_dir}/pbta-histologies.tsv -o stranded -# Skip poly-A plotting in CI -if [ "$POLYA_PLOT" -gt "0" ]; then - python3 ${analysis_dir}/02-evaluate-classifier.py -s ${analysis_dir}/results/TP53_NF1_snv_alteration.tsv -f ${analysis_dir}/results/pbta-gene-expression-rsem-fpkm-collapsed.polya_classifier_scores.tsv -c ${data_dir}/pbta-histologies.tsv -o polya +# Skip poly-A steps in CI +if [ "$POLYA" -gt "0" ]; then + python3 ${analysis_dir}/01-apply-classifier.py -f ${collapsed_polya} + python3 ${analysis_dir}/02-evaluate-classifier.py -s ${analysis_dir}/results/TP53_NF1_snv_alteration.tsv -f ${analysis_dir}/results/pbta-gene-expression-rsem-fpkm-collapsed.polya_classifier_scores.tsv -c ${data_dir}/pbta-histologies.tsv -o polya fi - -python3 ${analysis_dir}/02-evaluate-classifier.py -s ${analysis_dir}/results/TP53_NF1_snv_alteration.tsv -f ${analysis_dir}/results/pbta-gene-expression-rsem-fpkm-collapsed.stranded_classifier_scores.tsv -c ${data_dir}/pbta-histologies.tsv -o stranded