Identify and Annotate Shared Top Features Across Integration Factors
Source:R/run_factor_overlap.R
      run_factor_overlap.RdIdentifies top features shared across factors based on integration method. For MOFA/MCIA, takes intersection across factors. For DIABLO/RGCCA, takes features recurring in ≥2 block-specific components.
Usage
run_factor_overlap(
  expomicset,
  robust = TRUE,
  stability_score = NULL,
  score_col = "stability_score",
  pval_thresh = 0.05,
  logfc_thresh = log2(1.5),
  pval_col = "padj",
  logfc_col = "logFC",
  action = "add"
)Arguments
- expomicset
 A
MultiAssayExperimentwith integration results and top factor features.- robust
 Logical; if
TRUE, uses sensitivity score. Otherwise, uses DEG thresholds.- stability_score
 Optional numeric threshold (overrides default from metadata).
- score_col
 Column name for sensitivity score. Default is
"stability_score".- pval_thresh
 DEG p-value threshold (if
robust = FALSE). Default is0.05.- logfc_thresh
 DEG logFC threshold (if
robust = FALSE). Default islog2(1.5).- pval_col
 Column name for p-value. Default is
"padj".- logfc_col
 Column name for logFC. Default is
"logFC".- action
 "add"to return modified object,"get"to return data.frame.
Examples
# create example data
mae <- make_example_data(
    n_samples = 20,
    return_mae = TRUE
)
#> Ensuring all omics datasets are matrices with column names.
#> Creating SummarizedExperiment objects.
#> Creating MultiAssayExperiment object.
#> MultiAssayExperiment created successfully.
# perform multiomics integration
mae <- run_multiomics_integration(
    mae,
    method = "MCIA",
    n_factors = 3
)
#> Scaling each assay in MultiAssayExperiment.
#> Running multi-omics integration using MCIA...
#> Applying MCIA with `nipalsMCIA`
#> Performing column-level pre-processing...
#> Column pre-processing completed.
#> Performing block-level preprocessing...
#> Block pre-processing completed.
#> Computing order 1 scores
#> Computing order 2 scores
#> Computing order 3 scores
# identify the features that contribute most to the factors
mae <- extract_top_factor_features(
    mae,
    factors = c("V1", "V2", "V3"),
    method = "percentile",
    percentile = 0.5,
    action = "add"
)
#> Extracting top contributing features for specified factors.
#> Using MCIA block loadings.
#> Applying percentile-based filtering (>50%).
#> Selected 312 features contributing to specified factors.
# perform differential abundance analysis
mae <- run_differential_abundance(
    expomicset = mae,
    formula = ~ smoker + sex,
    abundance_col = "counts",
    method = "limma_voom",
    action = "add"
)
#> Running differential abundance testing.
#> Processing assay: mRNA
#> No group or design set. Assuming all samples belong to one group.
#> tidybulk says: The design column names are "(Intercept), smokeryes, sexM"
#> tidybulk says: to access the raw results (fitted GLM) do `attr(..., "internals")$limma_voom`
#> Processing assay: proteomics
#> No group or design set. Assuming all samples belong to one group.
#> tidybulk says: The design column names are "(Intercept), smokeryes, sexM"
#> tidybulk says: to access the raw results (fitted GLM) do `attr(..., "internals")$limma_voom`
#> Differential abundance testing completed.
# determine the overlap in features
mae <- mae |>
    run_factor_overlap(
        robust = FALSE,
        pval_col = "adj.P.Val"
    )