The method DSA implements the Digital Sorting Algorithm (DSA) proposed by Zhong et al. (2013), which performs complete gene expression deconvolution using a set of marker genes only.
gedAlgorithm.DSA(..., data = NULL, exact = TRUE, log = NULL)
mlsei
.MarkerList
object.TRUE
) or sum-to-less-than-one
(FALSE
) constraint on the proportions.NULL
, then data's scale is detected by
link{is_logscale}
and conversion to linear-scale
is performed if necessary. If TRUE
the data is
exponentialised (using log base 2). If FALSE
the
data is left unchanged (the detected log scale is
displayed in verbose mode). If a number, then it is used
as the log base to exponentialise the data.Zhong Y, Wan Y, Pang K, Chow LM and Liu Z (2013).
"Digital sorting of complex tissues for cell
type-specific gene expression profiles." _BMC
Bioinformatics_, *14*(1), pp. 89. ISSN 1471-2105,
## Example on dummy/random data
x <- rmix(3, 100, 20)
# markers
ml <- getMarkers(x)
# deconvolve using DSA (quadratic programming)
res <- ged(x, ml, 'DSA', verbose=TRUE, log=FALSE)
## Using ged algorithm: "DSA"
## Note: method with signature 'MatrixData#MarkerList#ANY' chosen for
## function 'nmf', target signature 'ExpressionMix#MarkerList#character'.
## "ExpressionSet#ANY#ANY" would also be valid
## Estimating basis and mixture coefficients matrices from marker features [DSA]
## Using 15/15 markers to estimate cell proportions:
## CL_1 CL_2 CL_3
## 5 5 5
## Checking data scale ... NOTE [log]
## Converting data to linear scale ... SKIP
## Computing proportions using DSA method ... OK
## Estimating basis matrix from mixture coefficients [qprog]
## Not using any marker constraints
## Timing:
## user system elapsed
## 1.432 0.056 1.489
## GED final wrap up ... OK
# plot against true data
profplot(x, res)
profplot(t(basis(x)), t(basis(res)), legend=FALSE)
## Don't show:
stopifnot( nmf.equal(res, ged(x, ml, 'DSA', log=FALSE), identical=FALSE) )
## End Don't show