Decompose one or more omic layers into state-space axes
Source:R/08-contracts.R, R/12-stage1-hogsvd.R, R/12a-stage1-svd.R
decompose.RdRegistered implementations define the supported omic-layer count. Plain SVD is the exactly-one-omic-layer baseline; comparative GSVD/HO-GSVD strategies handle two or more omic layers and can partition shared from omic-layer-exclusive structure.
Usage
decompose(strategy, data, ...)
# S4 method for class 'Decomposer,StateTransitionData'
decompose(strategy, data, ...)
# S4 method for class 'HogsvdAveraged,StateTransitionData'
.decompose_impl(strategy, data, ...)
# S4 method for class 'HogsvdPrereduced,StateTransitionData'
.decompose_impl(strategy, data, ...)
# S4 method for class 'SvdDecomposer,StateTransitionData'
.decompose_impl(strategy, data, ...)Details
Boundary validation (validate_boundary) is enforced
structurally: the method below, dispatched on the VIRTUAL
Decomposer class itself, runs for every concrete strategy before
any strategy-specific code executes. Concrete strategies never implement
decompose() directly — they implement the internal
.decompose_impl generic instead, which only ever receives an
already-validated data. A new strategy cannot skip validation by
omission because validation is not part of the code path it writes.