Introduction
Both the R files and plugin files (TOML format) are supported to extend and add new functions of BioInstaller Shiny application. Users can modifed the value of shiny_plugin_dir to use a custom plugins library. The plugins filename: shiny.easy_project.parameters.toml, shiny.maftools.parameters, etc. Now we use the “shiny.{toolname}.parameters.toml” rule to search the plugin file, or you can modifed the line 84 of global_bar.R
to change the rule.
Demos
Plugin easy_project
First level: ui
, parameters
ui.sections
defined the boxes, such as thenew_proj
.ui.sections.ui_basic
defined the basic parameter of a box.
In the parameters, we could defined the section type, a simplest plugin of BioInstaller should only contains a input
type box, and the box can input parameters and submit a long-time cost task.
rcmd_last
contains the commands need to be ran in the workers.progressbar_message
only forinstant
module plugins to shows the running boxrender_id
is the prefix of the auto-generated boxes elementinput_ui_order
defined the sections ofinput
box, such assingle_input
andstart_analysis
[easy_project.ui.sections]
order = ["new_proj"]
[easy_project.ui.sections.ui_basic]
new_proj = "title = 'New bioinformatics analysis project', status = 'primary', width = 12, collapsed = FALSE, collapsible = TRUE"
[easy_project.paramters.new_proj]
# For reading annovarR shiny APP easy_project tool input files
section_type = "input"
rcmd_last = """
parent_dir <- normalizePath(parent_dir, mustWork = FALSE)
project_dir <- normalizePath(file.path(parent_dir, project_name), mustWork = FALSE)
analysis_dirs <- c(paste0("rnaseq/", c("exp", "fusion", "splicing", "mutation")),
paste0("dnaseq/", c("wes/mutation", "wgs/mutation", "chip/peak")))
data_dirs <- c("fastq", "fasta", "bam", "vcf", "meta")
meta_json <- list(project_dir = project_dir, project_name = project_name,
create_time = format(Sys.time(), "%Y-%m-%d %H:%M:%S"),
creator = Sys.getenv("USER"))
meta_json$project_id <- git2r::hash(sprintf("%s,%s",
meta_json$project_name, meta_json$create_time))
sapply(sprintf("%s/%s", project_dir, c(file.path("analysis", analysis_dirs),
file.path("data", data_dirs))),
function(x) {dir.create(x, recursive = TRUE)})
configr::write.config(meta_json, file.path(project_dir, "project.json"), write.type = "json")
"""
progressbar_message = ""
render_id = "easy_project_new_proj"
#!!!!! input_ui_order required related section
input_ui_order = ["single_input", "start_analysis"]
[easy_project.paramters.new_proj.input.single_input]
title = "Parameters:"
title_control = "class = 'input-section-p'"
varname = ["project_name", "parent_dir"]
input_id = ["input_project_name", "input_parent_dir"]
type = ["shiny::textInput", "shiny::textInput"]
label = ["Project Name", "Project parent dir"]
[easy_project.paramters.new_proj.input.start_analysis]
input_id = "start_easy_project_analysis"
type = "shiny::actionButton"
label = "Submit"
In the parameters
section, all variables in varname
are automatically assigned to the element values of input_id
, such as a text input box, selector or check box.
start_analysis
section now is required for submitting a long-time cost task that this section should only need to change the plugin name (e.g. easy_project) only.
Plugin maftools
All output
type boxes will get the instant output results including text, table, and plots. All result can be update when click the Update
button on the box.
export_engine
now supportCairo
andlink
.
Cairo
need a plot function in the rcmd_last, and a list such as list(src = "plot_output", alt = paste('Heatmap_3'))
, is required for export a plot through a file path.
[maftools.ui.sections]
order = ["readfiles", "getFields", "getSampleSummary", "plotmafSummary",
"oncoplot_default", "oncoplot_with_cnv", "oncoplot_advanced", "plotTiTv", "lollipopPlot2", "tcgaCompare", "plotVaf",
"somaticInteractions", "oncostrip", "plotEnrichmentResults", "plotClusters"]
order_bak = ["readfiles", "getFields", "getSampleSummary", "getGeneSummary", "getClinicalData", "plotmafSummary",
"oncoplot_default", "oncoplot_with_cnv", "oncoplot_advanced", "plotTiTv", "lollipopPlot", "lollipopPlot2", "tcgaCompare", "plotVaf",
"gisticChromPlot", "gisticBubblePlot", "gisticOncoPlot", "somaticInteractions", "oncostrip", "plotOncodrive",
"mafSurvival", "plotEnrichmentResults", "plotClusters"]
[maftools.ui.sections.ui_basic]
readfiles = "title = 'Input files', status = 'primary', width = 12, collapsed = FALSE, collapsible = TRUE"
getFields = "title = 'Output of maftools fields summary', status = 'primary', width = 12, collapsed = TRUE, collapsible = TRUE"
getSampleSummary = "title = 'Output of maftools sample summary', status = 'primary', width = 12, collapsed = TRUE, collapsible = TRUE"
getGeneSummary = "title = 'Output of maftools gene summary', status = 'primary', width = 12, collapsed = TRUE, collapsible = TRUE"
getClinicalData = "title = 'Output of maftools clinical data summary', status = 'primary', width = 12, collapsed = TRUE, collapsible = TRUE"
plotmafSummary = "title = 'Output of maftools MAF summary', status = 'primary', width = 12, collapsed = TRUE, height='auto', collapsible = TRUE"
oncoplot_default = "title = 'Output of maftools oncoplots', status = 'primary', width = 12, collapsed = TRUE, height='auto', collapsible = TRUE"
oncoplot_with_cnv = "title = 'Output of maftools oncoplots with copy number data', status = 'primary', width = 12, collapsed = TRUE, height='auto', collapsible = TRUE"
oncoplot_advanced = "title = 'Output of maftools oncoplots with advanced', status = 'primary', width = 12, collapsed = TRUE, height='auto', collapsible = TRUE"
plotTiTv = "title = 'Output of maftools transition and transversions', status = 'primary', width = 12, collapsed = TRUE, height='auto', collapsible = TRUE"
lollipopPlot = "title = 'Output of maftools Lollipop plots for amino acid changes', status = 'primary', width = 12, collapsed = TRUE, height='auto', collapsible = TRUE"
lollipopPlot2 = "title = 'Output of maftools Lollipop2 plots for amino acid changes', status = 'primary', width = 12, collapsed = TRUE, height='auto', collapsible = TRUE"
tcgaCompare = "title = 'Output of maftools comparing mutation load', status = 'primary', width = 12, collapsed = TRUE, height='auto', collapsible = TRUE"
plotVaf = "title = 'Output of maftools VAF boxplot', status = 'primary', width = 12, collapsed = TRUE, height='auto', collapsible = TRUE"
gisticChromPlot = "title = 'Output of maftools gistic genome plot', status = 'primary', width = 12, collapsed = TRUE, height='auto', collapsible = TRUE"
gisticBubblePlot = "title = 'Output of maftools gistic bubble plot', status = 'primary', width = 12, collapsed = TRUE, height='auto', collapsible = TRUE"
gisticOncoPlot = "title = 'Output of maftools gistic oncoplot plot', status = 'primary', width = 12, collapsed = TRUE, height='auto', collapsible = TRUE"
somaticInteractions = "title = 'Output of maftools somatic interactions', status = 'primary', width = 12, collapsed = TRUE, height='auto', collapsible = TRUE"
oncostrip = "title = 'Output of maftools somatic interactions (oncostrip)', status = 'primary', width = 12, collapsed = TRUE, height='auto', collapsible = TRUE"
plotOncodrive = "title = 'Output of maftools driver based on positional clustering', status = 'primary', width = 12, collapsed = TRUE, height='auto', collapsible = TRUE"
mafSurvival = "title = 'Output of maftools Survival', status = 'primary', width = 12, collapsed = TRUE, collapsible = TRUE"
plotEnrichmentResults = "title = 'Output of maftools Clinical enrichment analysis', status = 'primary', width = 12, collapsed = TRUE, height='auto', collapsible = TRUE"
plotClusters = "title = 'Output of maftools heterogeneity analysis', status = 'primary', width = 12, collapsed = TRUE, height='auto', collapsible = TRUE"
[maftools.paramters.readfiles]
# For reading annovarR shiny APP maftools tool input files
section_type = "input"
rcmd_last = """
laml = read.maf(maf = laml_maf, clinicalData = laml_clin)
laml.plus.gistic = read.maf(maf = laml_maf, gisticAllLesionsFile = all_lesions, gisticAmpGenesFile = amp_genes,
gisticDelGenesFile = del_genes, gisticScoresFile = scores_gis, isTCGA = is_tcga)
laml.gistic = readGistic(gisticAllLesionsFile = all_lesions, gisticAmpGenesFile = amp_genes, gisticDelGenesFile = del_genes, gisticScoresFile = scores_gis, isTCGA = is_tcga)
primary_maf = read.maf(maf = primary_maf)
relapse_maf = read.maf(maf = relapse_maf)
"""
progressbar_message = "Reading related MAF and other files."
render_id = "maftools_readfiles"
#!!!!! input_ui_order required related section
input_ui_order = ["single_input", "cnv_input", "comparsion_input", "other_params", "start_analysis"]
[maftools.paramters.readfiles.input.single_input]
title = "Single sample anlayais:"
title_control = "class = 'input-section-p'"
varname = ["laml_maf", "laml_clin", "laml_mutsig"]
input_id = ["input_maf", "input_clin", "input_mutsig"]
type = ["shiny::selectInput", "shiny::selectInput", "shiny::selectInput"]
label = ["MAF file (laml_maf)", "Clincal annotation file (laml_clin)", "MutSig reusults (laml_mutsig)"]
[maftools.paramters.readfiles.input.single_input.choices]
laml_maf = "!!glue {c(list.files(system.file('extdata', package = 'maftools'), '(maf)', full.names = TRUE), featch_files(c('maf', 'maf.gz'))$file_path)}"
laml_clin = "!!glue {c(list.files(system.file('extdata', package = 'maftools'), '(txt)|(tsv)', full.names = TRUE), featch_files(c('tsv', 'txt', 'txt.gz', 'tsv.gz'))$file_path)}"
laml_mutsig = "!!glue {c(list.files(system.file('extdata', package = 'maftools'), '(txt)|(tsv)', full.names = TRUE), featch_files(c('tsv', 'txt', 'txt.gz', 'tsv.gz'))$file_path)}"
[maftools.paramters.readfiles.input.single_input.selected]
laml_maf = "@>@system.file('extdata', 'tcga_laml.maf.gz', package = 'maftools')@<@"
laml_clin = "@>@system.file('extdata', 'tcga_laml_annot.tsv', package = 'maftools')@<@"
laml_mutsig = "@>@system.file('extdata', 'LAML_sig_genes.txt.gz', package = 'maftools')@<@"
[maftools.paramters.readfiles.input.cnv_input]
title = "CNV related analyais:"
title_control = "class = 'input-section-p'"
varname = ["all_lesions", "amp_genes", "del_genes", "scores_gis"]
input_id = ["input_gistic_all_lesions", "input_gistic_amp", "input_gistic_del", "input_gistic_score"]
type = ["shiny::selectInput", "shiny::selectInput", "shiny::selectInput", "shiny::selectInput"]
label = ["Gistic all lesions file (all_lesions):", "Gistic amp genes file (amp_genes)",
"Gistic del genes file (del_genes)", "Gistic score file (scores_gis)"]
[maftools.paramters.readfiles.input.cnv_input.choices]
all_lesions = "!!glue {c(list.files(system.file('extdata', package = 'maftools'), '(txt)|(tsv)', full.names = TRUE), featch_files(c('txt', 'txt.gz'))$file_path)}"
amp_genes = "!!glue {c(list.files(system.file('extdata', package = 'maftools'), '(txt)|(tsv)', full.names = TRUE), featch_files(c('txt', 'txt.gz'))$file_path)}"
del_genes = "!!glue {c(list.files(system.file('extdata', package = 'maftools'), '(txt)|(tsv)', full.names = TRUE), featch_files(c('txt', 'txt.gz'))$file_path)}"
scores_gis = "!!glue {c(list.files(system.file('extdata', package = 'maftools'), '(gistic)', full.names = TRUE), featch_files(c('txt', 'txt.gz', 'gistic'))$file_path)}"
[maftools.paramters.readfiles.input.cnv_input.selected]
all_lesions = "@>@system.file('extdata', 'all_lesions.conf_99.txt', package = 'maftools')@<@"
amp_genes = "@>@system.file('extdata', 'amp_genes.conf_99.txt', package = 'maftools')@<@"
del_genes = "@>@system.file('extdata', 'del_genes.conf_99.txt', package = 'maftools')@<@"
scores_gis = "@>@system.file('extdata', 'scores.gistic', package = 'maftools')@<@"
[maftools.paramters.readfiles.input.comparsion_input]
title = "Comparsion between different cohort:"
title_control = "class = 'input-section-p'"
varname = ["primary_maf", "relapse_maf"]
input_id = ["input_primary_maf", "input_relapse_maf"]
type = ["shiny::selectInput", "shiny::selectInput"]
label = ["Cohort 1 maf file (primary_maf)", "Cohort 2 maf file (relapse_maf)"]
[maftools.paramters.readfiles.input.comparsion_input.choices]
primary_maf = "!!glue {c(list.files(system.file('extdata', package = 'maftools'), '(maf)', full.names = TRUE), featch_files(c('maf', 'maf.gz'))$file_path)}"
relapse_maf = "!!glue {c(list.files(system.file('extdata', package = 'maftools'), '(maf)', full.names = TRUE), featch_files(c('maf', 'maf.gz'))$file_path)}"
[maftools.paramters.readfiles.input.comparsion_input.selected]
primary_maf = "@>@system.file('extdata', 'APL_primary.maf.gz', package = 'maftools')@<@"
relapse_maf = "@>@system.file('extdata', 'APL_relapse.maf.gz', package = 'maftools')@<@"
[maftools.paramters.readfiles.input.other_params]
title = "Other paramters"
title_control = "class = 'input-section-p'"
varname = ["is_tcga"]
input_id = ["maftools_is_tcga"]
type = ["shiny::checkboxInput"]
label = ["Reading file: Maf file is TCGA format? (is_tcga is TRUE)",
"Command to read files."]
[maftools.paramters.readfiles.input.other_params.value]
is_tcga = true
[maftools.paramters.readfiles.input.start_analysis]
input_id = "start_maftools_analysis"
type = "shiny::actionButton"
label = "Run"
[maftools.paramters.getFields]
section_type = "output"
rcmd_last = "getFields(laml)"
render_type = "shiny::renderPrint"
render_id = "maftools_fields_summary"
output_type = "shiny::verbatimTextOutput"
progressbar_message = "Maftools getFields"
[maftools.paramters.getSampleSummary]
section_type = "output"
rcmd_last = "getSampleSummary(laml)"
render_type = "DT::renderDataTable"
render_id = "maftools_sample_summary"
output_type = "DT::dataTableOutput"
progressbar_message = "Maftools getSampleSummary"
[maftools.paramters.getGeneSummary]
section_type = "output"
rcmd_last = "getGeneSummary(laml)"
render_type = "DT::renderDataTable"
render_id = "maftools_gene_summary"
output_type = "DT::dataTableOutput"
progressbar_message = "Maftools getGeneSummary"
[maftools.paramters.getClinicalData]
section_type = "output"
render_type = "DT::renderDataTable"
render_id = "maftools_clinical_data"
output_type = "DT::dataTableOutput"
rcmd_last = "getClinicalData(laml)"
progressbar_message = "Maftools getClinicalData"
[maftools.paramters.plotmafSummary]
section_type = "output"
render_type = "shiny::renderPlot"
render_id = "maftools_plot_maf_summary"
output_type = "shiny::plotOutput"
export_engine = "Cairo"
export_params = "type = 'pdf', width = 21, height = 14, units='cm', bg='transparent'"
rcmd_last = """plotmafSummary(maf = laml, rmOutlier = TRUE, addStat = 'median', dashboard = TRUE, titvRaw = FALSE)"""
progressbar_message = "Maftools plotmafSummary"
[maftools.paramters.oncoplot_default]
section_type = "output"
render_type = "shiny::renderPlot"
render_id = "maftools_plot_oncoplots"
output_type = "shiny::plotOutput"
export_engine = "Cairo"
export_params = "type = 'pdf', width = 21, height = 14, units='cm', bg='transparent'"
rcmd_last = "oncoplot(maf = laml, top = 10, fontSize = 12)"
progressbar_message = "Maftools oncoplot_default"
[maftools.paramters.oncoplot_with_cnv]
section_type = "output"
render_type = "shiny::renderPlot"
render_id = "maftools_plot_oncoplots_cnv"
output_type = "shiny::plotOutput"
export_engine = "Cairo"
export_params = "type = 'pdf', width = 21, height = 14, units='cm', bg='transparent'"
rcmd_last = "oncoplot(maf = laml.plus.gistic, top = 10, fontSize = 12)"
progressbar_message = "Maftools oncoplot with CNV"
[maftools.paramters.oncoplot_advanced]
section_type = "output"
render_type = "shiny::renderPlot"
render_id = "maftools_plot_oncoplots_advanced"
output_type = "shiny::plotOutput"
export_engine = "Cairo"
export_params = "type = 'pdf', width = 21, height = 27, units='cm', bg='transparent'"
rcmd_preprocess = """
col = RColorBrewer::brewer.pal(n = 8, name = 'Paired')
names(col) = c('Frame_Shift_Del','Missense_Mutation', 'Nonsense_Mutation', 'Multi_Hit', 'Frame_Shift_Ins',
'In_Frame_Ins', 'Splice_Site', 'In_Frame_Del')
#Color coding for FAB classification; try getAnnotations(x = laml) to see available annotations.
fabcolors = RColorBrewer::brewer.pal(n = 8,name = 'Spectral')
names(fabcolors) = c("M0", "M1", "M2", "M3", "M4", "M5", "M6", "M7")
fabcolors = list(FAB_classification = fabcolors)
mutsigQval = 0.01
clinicalFeatures = "FAB_classification"
sortByAnnotation = TRUE
oncoplot_advanced_params <- list(maf = laml, colors = col, mutsig = laml_mutsig,
mutsigQval = mutsigQval, clinicalFeatures = clinicalFeatures,
sortByAnnotation = sortByAnnotation,
annotationColor = fabcolors)
"""
rcmd_last = """
do.call(oncoplot, oncoplot_advanced_params)
"""
progressbar_message = "Maftools oncoplot with advanced"
[maftools.paramters.plotTiTv]
section_type = "output"
render_type = "shiny::renderPlot"
render_id = "maftools_plot_titv"
output_type = "shiny::plotOutput"
export_engine = "Cairo"
export_params = "type = 'pdf', width = 21, height = 17, units='cm', bg='transparent'"
rcmd_preprocess = "laml.titv = titv(maf = laml, plot = FALSE, useSyn = TRUE)"
rcmd_last = "plotTiTv(res = laml.titv)"
progressbar_message = "Maftools plotTiTv"
[maftools.paramters.lollipopPlot]
section_type = "output"
render_type = "shiny::renderPlot"
render_id = "maftools_plot_lollipop"
output_type = "shiny::plotOutput"
export_engine = "Cairo"
export_params = "type = 'pdf', width = 21, height = 17, units='cm', bg='transparent'"
rcmd_last = """lollipopPlot(maf = laml, gene = 'DNMT3A', AACol = 'Protein_Change', showMutationRate = TRUE)"""
progressbar_message = "Maftools lollipopPlot"
[maftools.paramters.lollipopPlot2]
section_type = "output"
render_type = "shiny::renderPlot"
render_id = "maftools_plot_lollipop2"
output_type = "shiny::plotOutput"
export_engine = "Cairo"
export_params = "type = 'pdf', width = 21, height = 17, units='cm', bg='transparent'"
rcmd_last = """lollipopPlot2(m1 = primary_maf, m2 = relapse_maf, gene = "PML",
AACol1 = "amino_acid_change", AACol2 = "amino_acid_change", m1_name = "Primary", m2_name = "Relapse")"""
progressbar_message = "Maftools lollipopPlot2"
[maftools.paramters.tcgaCompare]
section_type = "output"
render_type = "shiny::renderPlot"
render_id = "maftools_plot_mutation_load"
output_type = "shiny::plotOutput"
export_engine = "Cairo"
export_params = "type = 'pdf', width = 21, height = 17, units='cm', bg='transparent'"
rcmd_last = "laml.mutload = tcgaCompare(maf = laml, cohortName = 'Example-LAML')"
progressbar_message = "Maftools tcgaCompare"
[maftools.paramters.plotVaf]
section_type = "output"
render_type = "shiny::renderPlot"
render_id = "maftools_plot_vaf_box"
output_type = "shiny::plotOutput"
export_engine = "Cairo"
export_params = "type = 'pdf', width = 21, height = 17, units='cm', bg='transparent'"
rcmd_last = "plotVaf(maf = laml, vafCol = 'i_TumorVAF_WU')"
progressbar_message = "Maftools plotVaf"
[maftools.paramters.gisticChromPlot]
section_type = "output"
render_type = "shiny::renderPlot"
render_id = "maftools_plot_gistic_genome"
output_type = "shiny::plotOutput"
export_engine = "Cairo"
export_params = "type = 'pdf', width = 21, height = 17, units='cm', bg='transparent'"
rcmd_last = """gisticChromPlot(gistic = laml.gistic, markBands = "all")"""
progressbar_message = "Maftools gisticChromPlot"
[maftools.paramters.gisticBubblePlot]
section_type = "output"
render_type = "shiny::renderPlot"
render_id = "maftools_plot_gistic_bubble"
output_type = "shiny::plotOutput"
export_engine = "Cairo"
export_params = "type = 'pdf', width = 21, height = 17, units='cm', bg='transparent'"
rcmd_last = """gisticBubblePlot(gistic = laml.gistic)"""
progressbar_message = "Maftools gisticBubblePlot"
[maftools.paramters.gisticOncoPlot]
section_type = "output"
render_type = "shiny::renderPlot"
render_id = "maftools_plot_gistic_oncoplot"
output_type = "shiny::plotOutput"
export_engine = "Cairo"
export_params = "type = 'pdf', width = 21, height = 17, units='cm', bg='transparent'"
rcmd_last = """gisticOncoPlot(gistic = laml.gistic, clinicalData = getClinicalData(x = laml),
clinicalFeatures = 'FAB_classification', sortByAnnotation = TRUE, top = 10)"""
progressbar_message = "Maftools gisticOncoPlot"
[maftools.paramters.somaticInteractions]
section_type = "output"
render_type = "shiny::renderPlot"
render_id = "maftools_plot_somatic_inter"
output_type = "shiny::plotOutput"
export_engine = "Cairo"
export_params = "type = 'pdf', width = 21, height = 17, units='cm', bg='transparent'"
rcmd_last = """somaticInteractions(maf = laml, top = 25, pvalue = c(0.05, 0.1))"""
progressbar_message = "Maftools somaticInteractions"
[maftools.paramters.oncostrip]
section_type = "output"
render_type = "shiny::renderPlot"
render_id = "maftools_plot_somatic_inter_oncostrip"
output_type = "shiny::plotOutput"
export_engine = "Cairo"
export_params = "type = 'pdf', width = 21, height = 17, units='cm', bg='transparent'"
rcmd_last = """oncostrip(maf = laml, genes = c('TP53', 'FLT3', 'RUNX1'))"""
progressbar_message = "Maftools oncostrip"
[maftools.paramters.plotOncodrive]
section_type = "output"
render_type = "shiny::renderPlot"
render_id = "maftools_plot_oncodrive"
output_type = "shiny::plotOutput"
export_engine = "Cairo"
export_params = "type = 'pdf', width = 21, height = 17, units='cm', bg='transparent'"
rcmd_preprocess = """laml.sig = oncodrive(maf = laml, AACol = 'Protein_Change', minMut = 5, pvalMethod = 'zscore')"""
rcmd_last = """plotOncodrive(res = laml.sig, fdrCutOff = 0.1, useFraction = TRUE)"""
progressbar_message = "Maftools plotOncodrive"
[maftools.paramters.mafSurvival]
section_type = "output"
render_type = "shiny::renderPlot"
render_id = "maftools_plot_survival"
output_type = "shiny::plotOutput"
export_engine = "Cairo"
export_params = "type = 'pdf', width = 21, height = 17, units='cm', bg='transparent'"
rcmd_last = """mafSurvival(maf = laml, genes = 'DNMT3A', time = 'days_to_last_followup',
Status = 'Overall_Survival_Status', isTCGA = TRUE)"""
progressbar_message = "Maftools mafSurvival"
[maftools.paramters.plotEnrichmentResults]
section_type = "output"
render_type = "shiny::renderPlot"
render_id = "maftools_plot_clinical_enrichment"
output_type = "shiny::plotOutput"
export_engine = "Cairo"
export_params = "type = 'pdf', width = 21, height = 17, units='cm', bg='transparent'"
rcmd_preprocess = "fab.ce = clinicalEnrichment(maf = laml, clinicalFeature = 'FAB_classification')"
rcmd_last = """plotEnrichmentResults(enrich_res = fab.ce, pVal = 0.05)"""
progressbar_message = "Maftools plotEnrichmentResults"
[maftools.paramters.plotClusters]
section_type = "output"
render_type = "shiny::renderPlot"
render_id = "maftools_plot_clusters"
output_type = "shiny::plotOutput"
export_engine = "Cairo"
export_params = "type = 'pdf', width = 21, height = 17, units='cm', bg='transparent'"
rcmd_preprocess = "tcga.ab.2972.het = inferHeterogeneity(maf = laml, tsb = 'TCGA-AB-2972', vafCol = 'i_TumorVAF_WU')"
rcmd_last = "plotClusters(clusters = tcga.ab.2972.het)"
progressbar_message = "Maftools maftools_plot_clusters"
More demos
In another project annovarR, we developed several plugins files that have not been included in BioInstaller package, such as gvmap, clusterProfiler, ANNOVAR, CEMiTool, vcfanno, annovarR, etc. It is noted that we do not want to limite users to write R codes for extending the R shiny functions. But using the plugin files to simultaneously generate UI and server code is a good choice to simplify the steps for adding new functions in a Shiny application.