mcCalcStart <- quote({
if( input$runcalc == 0 ) return()
if( is.null( isolate(values$proc)) ) {
values$calcID <- input$runcalc
updateSelectInput(session, 'publicRdata', 'Load public file', c( '', dir('publicFiles')))
values$grfile <- NULL
pb_max <- isolate( (length(input$trackDT_rows_selected)+length(values$SFsetup))*length(input$featureDT_rows_selected) )
if( pb_max == 0 ) {
session$sendCustomMessage("jsAlert", 'Select >=1 track(s) or pattern and >=1 feature(s)!' )
return()
}
selected_genomes <- c(
values$track[input$trackDT_rows_selected,'genome'],
values$feature[input$featureDT_rows_selected,'genome']
)
if ( length(unique(selected_genomes)) > 1 ) {
msg <- paste0(
"More than one genome or genome version selected: ", paste0(unique(selected_genomes), collapse=', '), ". \n\n",
"All tracks and feature files should be in the same genome version. ",
"This setup is most likely to produce an error or non reliable plot. "
#"If you want to continue anyway press OK."
)
session$sendCustomMessage("jsAlert", msg )
}
values$progress <- shiny::Progress$new(session, min=0, max=pb_max)
}
do <- quote({
on.exit(values$progress$close())
session$sendCustomMessage("jsExec", '$("#calcModal").modal("hide");')
session$sendCustomMessage("jsExec", '$("#progressModal").modal("show");')
values$progress$set(value = 0, message = 'Calculation in progress...', detail = '')
session$sendCustomMessage("jsExec", "$('#progressModal').modal('show').find('#summary2').text('Initializing...').parent().find('#summary3').text('')")
last_msg <- Sys.time()
cat3 <- function(x) {
if(Sys.time() - last_msg > 1) {
session$sendCustomMessage("jsExec", sprintf("$('#summary2').text('%s')", x))
values$progress$set(value = as.numeric(sub('.+\\[(.+)\\/.+\\]$', '\\1', x )), message = NULL, detail = sub('.+\\[(.+)]$', '\\1', x ))
last_msg <<- Sys.time()
}
}
cat4 <- function(x) {
if(Sys.time() - last_msg > 1) {
session$sendCustomMessage("jsExec", sprintf("$('#summary3').text('%s')", x))
last_msg <<- Sys.time()
}
}
tracks <- values$track[input$trackDT_rows_selected,'name']
features <- values$feature[input$featureDT_rows_selected,'name']
#rownames(tracks) <- NULL
#rownames(features) <- NULL
out <- seqplots::getPlotSetArray(
tracks = c(file.path('files', tracks), values$SFsetup),
features = file.path('files', features),
refgenome = con,
xmin = input$plot_upstream,
xanchored = input$anchored_downstream,
xmax = input$plot_downstream,
type = gsub('^(.)[a-z]+ (.).+', '\\1\\2', tolower(input$plot_type)),
bin = as.numeric(input$BWbin),
rm0 = input$rm0,
ignore_strand = input$ignore_strand,
add_heatmap = input$add_heatmap,
stat = input$stat,
verbose = TRUE, lvl1m = cat3, lvl2m = message
)
return( out$data )
})
if( .Platform$OS.type == 'windows' | isolate(input$setup_multithread) == FALSE) {
isolate({
session$sendCustomMessage("jsExec", "$('#progressModal').modal('show').find('#summary2').text('Calculating plot set single process...').parent().find('button').prop('disabled', true);")
values$grfile <- try( eval( do ) )
session$sendCustomMessage("jsExec", "$('#progressModal').modal('hide').find('#summary2').text('').parent().find('button').prop('disabled', false);")
})
if (class(values$grfile) == "try-error") {
session$sendCustomMessage( "jsAlert", paste('ERROR:', attr(values$grfile, 'condition')$message) )
}
} else {
mceval(
do,
quote({
session$sendCustomMessage("jsDots", ".")
}),
quote({
values$grfile <- res
#session$sendCustomMessage("jsAlert", "Job done!")
})
)
# if (is.null(isolate(values$proc))) {
# values$proc <- parallel::mcparallel(do)
# invalidateLater(100, session)
#
# } else if ( parallel:::selectChildren(isolate(values$proc)) == parallel:::processID(isolate(values$proc)) ) {
# res <- parallel::mccollect(isolate(values$proc), wait=FALSE)[[1]]
#
# if( class(res) == 'character' ) {
# invalidateLater(100, session)
# values[[ res[1] ]] <- res[2]
# stop(res)
#
# } else {
# if(class(res) == 'try-error' ) {
# parallel::mccollect( isolate(values$proc) ); values$proc <- NULL
# session$sendCustomMessage("jsAlert", res); session$sendCustomMessage("jsExec", "$('#progressModal').modal('hide');")
# } else if ( is.null(res) ) {
# parallel::mccollect( isolate(values$proc) ); values$proc <- NULL
# session$sendCustomMessage("jsExec", "$('#progressModal').modal('hide'); alert('Job canceled.');")
# } else {
# parallel::mccollect( isolate(values$proc) )
# values$proc <- NULL
# session$sendCustomMessage("jsExec", "$('#progressModal').modal('hide').find('#summary2').text('')")
#
#
# }
# }
#
# } else { invalidateLater(100, session); }
}
})
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.