Limma-based contrasts (direct limma pipeline)
Limma-based contrasts (direct limma pipeline)
Details
Uses limma's contrasts.fit + eBayes pipeline directly,
rather than fitting per-protein lm models and then moderating.
Inherits from ContrastsInterface with the same API as
Contrasts.
See also
Other modelling:
Contrasts,
ContrastsFirth,
ContrastsMissing,
ContrastsModerated,
ContrastsModeratedDEqMS,
ContrastsPlotter,
ContrastsProDA,
ContrastsROPECA,
ContrastsTable,
INTERNAL_FUNCTIONS_BY_FAMILY,
LR_test(),
Model,
ModelFirth,
ModelLimma,
build_model(),
build_model_limma(),
build_model_logistf(),
contrasts_fisher_exact(),
get_anova_df(),
get_complete_model_fit(),
get_p_values_pbeta(),
group_label(),
isSingular_lm(),
linfct_all_possible_contrasts(),
linfct_factors_contrasts(),
linfct_from_model(),
linfct_matrix_contrasts(),
merge_contrasts_results(),
model_analyse(),
model_summary(),
moderated_p_deqms(),
moderated_p_deqms_long(),
moderated_p_limma(),
moderated_p_limma_long(),
my_contest(),
my_contrast(),
my_contrast_V1(),
my_contrast_V2(),
my_glht(),
pivot_model_contrasts_2_Wide(),
plot_lmer_peptide_predictions(),
sim_build_models_lm(),
sim_build_models_lmer(),
sim_build_models_logistf(),
sim_make_model_lm(),
sim_make_model_lmer(),
strategy_limma(),
strategy_logistf(),
summary_ROPECA_median_p.scaled()
Super class
prolfqua::ContrastsInterface -> ContrastsLimma
Public fields
modelModelLimma object
contrastsnamed character vector of contrasts
modelNamemodel name
subject_Idcolumns with subject_Id (proteinID)
p.adjustfunction to adjust p-values
contrast_resultcached contrast results
Methods
Inherited methods
Method new()
initialize ContrastsLimma
Usage
ContrastsLimma$new(
model,
contrasts,
p.adjust = prolfqua::adjust_p_values,
modelName = "limma"
)Arguments
modela
ModelLimmaobjectcontrastsnamed character vector of contrasts
p.adjustfunction to adjust p-values
modelNamename of the contrast method
Method get_Plotter()
return ContrastsPlotter
Arguments
FCthresholdfold change threshold to show in plots
FDRthresholdFDR threshold to show in plots
Method to_wide()
convert to wide format
Usage
ContrastsLimma$to_wide(columns = c("p.value", "FDR", "statistic"))Examples
istar <- sim_lfq_data_protein_config(Nprot = 50)
#> creating sampleName from fileName column
#> completing cases
#> completing cases done
#> setup done
lProt <- LFQData$new(istar$data, istar$config)
lProt$rename_response("transformedIntensity")
strat <- strategy_limma("transformedIntensity ~ group_")
mod_limma <- build_model_limma(lProt, strat)
#> Warning: Partial NA coefficients for 1 probe(s)
Contr <- c("dil.b_vs_a" = "group_A - group_Ctrl")
contr_limma <- ContrastsLimma$new(mod_limma, Contr)
res <- contr_limma$get_contrasts()
head(res)
#> # A tibble: 6 × 13
#> modelName protein_Id contrast diff FDR std.error statistic p.value sigma
#> <chr> <chr> <chr> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
#> 1 limma 0EfVhX~71… dil.b_v… 3.00 6.99e-4 0.681 4.40 1.43e-5 0.963
#> 2 limma 0m5WN4~35… dil.b_v… 0.222 8.35e-1 0.736 0.301 7.63e-1 0.963
#> 3 limma 76k03k~97… dil.b_v… 0.509 8.35e-1 0.681 0.747 4.55e-1 0.963
#> 4 limma 7QuTub~55… dil.b_v… -1.22 4.39e-1 0.736 -1.66 9.69e-2 0.963
#> 5 limma 7cbcrd~04… dil.b_v… 1.38 5.47e-1 0.963 1.44 1.51e-1 0.963
#> 6 limma 7soopj~34… dil.b_v… 0.822 5.88e-1 0.681 1.21 2.28e-1 0.963
#> # ℹ 4 more variables: df <dbl>, conf.low <dbl>, conf.high <dbl>, avgAbd <dbl>
stopifnot(all(c("diff", "FDR", "p.value", "statistic") %in% colnames(res)))
# Compare with prolfqua's own pipeline
modelFunction <- strategy_lm("transformedIntensity ~ group_")
mod <- build_model(lProt, modelFunction)
#> Joining with `by = join_by(protein_Id)`
contr_prolfqua <- Contrasts$new(mod, Contr)
res_prolfqua <- contr_prolfqua$get_contrasts()
#> determine linear functions:
#> Warning: Warn 'linfct_matrix_contrasts':In argument: `dil.b_vs_a = group_A - group_Ctrl`.
#> Warning: Warn 'linfct_matrix_contrasts':In argument: `avg_dil.b_vs_a = (group_A + group_Ctrl)/2`.
#> get_contrasts -> contrasts_linfct
#> contrasts_linfct
#> Joining with `by = join_by(protein_Id, contrast)`
# fold changes should be very similar
merged <- dplyr::inner_join(
dplyr::select(res, protein_Id, diff_limma = diff),
dplyr::select(res_prolfqua, protein_Id, diff_prolfqua = diff),
by = "protein_Id")
#> Adding missing grouping variables: `contrast`
stopifnot(cor(merged$diff_limma, merged$diff_prolfqua, use = "complete.obs") > 0.99)
# Plotter works
pl <- contr_limma$get_Plotter()
# to_wide works
wide <- contr_limma$to_wide()
head(wide)
#> # A tibble: 6 × 5
#> protein_Id diff.dil.b_vs_a p.value.dil.b_vs_a FDR.dil.b_vs_a
#> <chr> <dbl> <dbl> <dbl>
#> 1 0EfVhX~7161 3.00 0.0000143 0.000699
#> 2 0m5WN4~3543 0.222 0.763 0.835
#> 3 76k03k~9735 0.509 0.455 0.835
#> 4 7QuTub~5556 -1.22 0.0969 0.439
#> 5 7cbcrd~0495 1.38 0.151 0.547
#> 6 7soopj~3451 0.822 0.228 0.588
#> # ℹ 1 more variable: statistic.dil.b_vs_a <dbl>
# merge_contrasts_results works
Contr2 <- c("dil.b_vs_a" = "group_A - group_Ctrl")
csi <- ContrastsMissing$new(lProt, contrasts = Contr2)
merged_res <- merge_contrasts_results(contr_limma, csi)
#> completing cases
#> dil.b_vs_a=group_A - group_Ctrl
#> dil.b_vs_a=group_A - group_Ctrl
#> dil.b_vs_a=group_A - group_Ctrl
#> Joining with `by = join_by(protein_Id, contrast)`
#> Joining with `by = join_by(protein_Id, contrast)`