This simplifies the design and contrast building process by allowing for
simple model definitions that are, essentially, functions of a single
covariate. More elaborate models can be analysed, but the user is left to
define the design, coef / contrast to test manually and pass those into
fdge().
flm_def(
x,
covariate,
numer = NULL,
denom = NULL,
batch = NULL,
block = NULL,
on_missing = c("warning", "error"),
...
)
# S3 method for data.frame
flm_def(
x,
covariate,
numer = NULL,
denom = NULL,
batch = NULL,
block = NULL,
on_missing = c("warning", "error"),
...,
contrast. = NULL,
.fds = NULL
)
# S3 method for tbl
flm_def(
x,
covariate,
numer = NULL,
denom = NULL,
batch = NULL,
block = NULL,
on_missing = c("warning", "error"),
...
)
# S3 method for facile_frame
flm_def(
x,
covariate,
numer = NULL,
denom = NULL,
batch = NULL,
block = NULL,
on_missing = c("warning", "error"),
...,
custom_key = NULL
)
# S3 method for FacileDataStore
flm_def(
x,
covariate,
numer = NULL,
denom = NULL,
batch = NULL,
block = NULL,
on_missing = c("warning", "error"),
...,
samples = NULL,
custom_key = NULL
)
# S3 method for ReactiveFacileDataStore
flm_def(
x,
covariate,
numer = NULL,
denom = NULL,
batch = NULL,
block = NULL,
on_missing = c("warning", "error"),
...,
samples = active_samples(x),
custom_key = user(x)
)a dataset
the name of the "main effect" sample_covariate we are performing a contrast against.
character vector defining the covariate/groups that make up the numerator
character vector defining the covariate/groups that make up the denominator
character vector defining the covariate/groups to use as batch effects
a string that names the covariate to use for the blocking factor in a random effects model.
when a covariate level is missing (NA) for a sample, the
setting of this parameter (default "warn") will dictate the behavior
of this funciton. When "warning", a warning will be raised, and the
message will be stored in the $warning element of the resul. Otherwise,
when "error". See the "Missing Covariates" section for more information.
A custom contrast vector can be passed in for extra tricky comparisons that we haven't figured out how to put a GUI in front of.
a list with:
$test: "ttest" or "anova"
$covariates: the pData over the samples (datset,sample_id, ...)
$design: the design matrix (always 0-intercept)
$contrast: the contrast vector that defines the comparison asked for
$messages: A character vector of messages generated
$warnings: A character vector of warnings generated
$errors: A character vector of errors generated
Note: actually a (likely) small modification of this can have it support the "ratio of ratios" model setup.
Given the "ragged" nature of sample annotations in a FacileDataStore, some
samples may have NA's as their values for the covariates under test. In this
case. In this case, if on_missing is set to "error", an error will be
thrown, otherwise a message will be set in the warning list element.
The samples that the differential expression should be run on will be
enumerated by the (dataset,sample_id) pair in the result$covariates
tibble.
The *.data.frame function definition assumes that x is a data.frame of
samples (dataset,sample_id) and the covariates defined on these samples
(ie. all the other columns of x) contain a superset of the variable names
used in the construction of the design matrix for the model definition.
When we define a model off of a facile_frame, we expect this to look like a wide covariate table. This defines the samples we will build a model on in its (datset, sample_id) columns, as well as any covaraites defined on these samples.
If there are covariates used in the covariate or batch parameters that
are not found in colnames(x), we will attempt to retrieve them from the
FacileDataStore fds(x). If they cannot be found, this function will raise
an error.
efds <- FacileData::exampleFacileDataSet()
# Look for tumor vs normal differences, controling for stage and sex
model_info <- efds %>%
FacileData::filter_samples(indication == "BLCA") %>%
flm_def(covariate = "sample_type", numer = "tumor", denom = "normal",
batch = "sex")
m2 <- efds %>%
FacileData::filter_samples(indication == "BLCA") %>%
flm_def(covariate = "sample_type", numer = "tumor", denom = "normal",
batch = c("sex", "stage"))
# stageIV vs stageII & stageIII
m3 <- efds %>%
FacileData::filter_samples(indication == "BLCA", sample_type == "tumor") %>%
flm_def(covariate = "stage", numer = "IV", denom = c("II", "III"),
batch = "sex")
# Incomplete ttest to help with custom contrast vector
mi <- efds %>%
FacileData::filter_samples(indication == "BLCA", sample_type == "tumor") %>%
flm_def(covariate = "stage", batch = "sex", contrast. = "help")
#> Error in cm[, j] <- eval(ej, envir = levelsenv): number of items to replace is not a multiple of replacement length
# ANOVA across stage in BLCA, control for sex
m3 <- efds %>%
FacileData::filter_samples(indication == "BLCA") %>%
flm_def(covariate = "stage", batch = "sex")