This defines the server part for the ADTTE
specification. The resulting data
set binned_adtte_subset
contains the subset of ADTTE
selected by the time-to-event
endpoint, joined together with the gene information extracted from specified assay
and experiment, as numeric and factor columns. The factor column is created by binning
the numeric column according to the quantile cutoffs specified in probs
.
Usage
adtteSpecServer(
id,
data,
mae_name,
adtte_name,
adtte_vars,
experiment_data,
experiment_name,
assay,
genes,
probs
)
Arguments
- id
(
string
) the shiny module id.- data
(
reactive
)reactive(<teal_data>)
holding all the data sets provided during app initialization after going through the filters.- mae_name
(
string
)
name of the MAE data used in the teal module.- adtte_name
(
string
)
name of theADTTE
dataset.- adtte_vars
-
(named
list
ofstring
)
names of the variables to use in theADTTE
dataset. It should comprise elements:aval
: the numeric time-to-event variable.avalu
: the variable holding the unit ofaval
.is_event
: the logical event variable. It needs to beTRUE
when there was an observed event, andFALSE
if the time is censored without observed event.paramcd
: the character or factor parameter code variable, defining the type of time-to-event for selection in the module.usubjid
: the subject ID variable.
- experiment_data
(reactive
AnyHermesData
)
input experiment.- experiment_name
(reactive
string
)
name of the input experiment.- assay
(reactive
string
)
name of the assay.- genes
(reactive
GeneSpec
)
gene specification.- probs
(reactive
numeric
)
probabilities to bin the gene or gene signature into.
Value
List with the following elements:
binned_adtte_subset
: reactive containing the joinedADTTE
and gene data.gene_col
: reactive containing the string with the column name of the original numeric gene variable.gene_factor
: string with the variable name for the binned gene data.time_unit
: reactive string with the time unit for the current subset.
See also
adtteSpecInput()
for the module UI.
Examples
library(dplyr)
#>
#> Attaching package: ‘dplyr’
#> The following object is masked from ‘package:testthat’:
#>
#> matches
#> The following objects are masked from ‘package:stats’:
#>
#> filter, lag
#> The following objects are masked from ‘package:base’:
#>
#> intersect, setdiff, setequal, union
ui <- function(id) {
ns <- NS(id)
teal.widgets::standard_layout(
encoding = uiOutput(ns("encoding_ui")),
output = verbatimTextOutput(ns("summary"))
)
}
server <- function(id, data, filter_panel_api) {
checkmate::assert_class(data, "reactive")
checkmate::assert_class(shiny::isolate(data()), "teal_data")
moduleServer(id, function(input, output, session) {
output$encoding_ui <- renderUI({
tags$div(
experimentSpecInput(session$ns("experiment"), data, mae_name = "MAE"),
assaySpecInput(session$ns("assay")),
geneSpecInput(session$ns("genes"), funs = list(Mean = colMeans)),
adtteSpecInput(session$ns("adtte"))
)
})
experiment <- experimentSpecServer(
"experiment",
data = data,
filter_panel_api = filter_panel_api,
mae_name = "MAE"
)
assay <- assaySpecServer(
"assay",
assays = experiment$assays
)
genes <- geneSpecServer(
"genes",
funs = list(Mean = colMeans),
gene_choices = experiment$genes
)
adtte <- adtteSpecServer(
"adtte",
data = data,
adtte_name = "ADTTE",
mae_name = "MAE",
adtte_vars = list(
aval = "AVAL",
avalu = "AVALU",
is_event = "is_event",
paramcd = "PARAMCD",
usubjid = "USUBJID"
),
experiment_data = experiment$data,
experiment_name = experiment$name,
assay = assay,
genes = genes,
probs = reactive({
0.5
})
)
output$summary <- renderPrint({
binned_adtte_subset <- adtte$binned_adtte_subset()
summary(binned_adtte_subset)
})
})
}
my_app <- function() {
data <- teal_data()
data <- within(data, {
ADSL <- teal.data::rADSL
ADTTE <- teal.data::rADTTE %>%
dplyr::mutate(is_event = .data$CNSR == 0)
MAE <- hermes::multi_assay_experiment
})
datanames <- c("ADSL", "ADTTE", "MAE")
datanames(data) <- datanames
join_keys(data) <- default_cdisc_join_keys[datanames]
app <- init(
data = data,
modules = modules(
module(
label = "adtteSpec example",
server = server,
ui = ui,
datanames = "all"
)
)
)
shinyApp(app$ui, app$server)
}
if (interactive()) {
my_app()
}