clusters may now be a
superset, e.g. the clusters of a whole dataset when expr is a subset.NA, as it is in every other cluster; it
was returned as proportion 1 of that type.dwls_stream() matches the second round's spots to the first round's by
name, so a read_window() that returns a window's spots in a different
order on a later pass no longer gives silently wrong results.NA clusters get an error that says so.logbase. Giotto <= 4.3.1 used base 2 there whatever logbase was, so
results differ from it slightly for logbase other than 2 (identical at the
default).First release as a standalone package. The algorithm was previously
runDWLSDeconv() inside Giotto (<= 4.3.1), which now calls this package.
Results match Giotto 4.3.1 to floating point (~1e-15), except where these bugs were fixed:
Faster (12-22x serial on 600-20,000 spots):
.lm.fit() on k x k
weighted least squares instead of lm(), and draws its 100 subsets once.crossprod(S * w, S) instead of a features x features
diag(w), and call Matrix::nearPD() only when the matrix needs it.New:
BPPARAM for parallel per-cluster plans and per-spot solves.dwls_stream() for expression read in windows.na_as_zero.dwls_signature(), the matrix form of Giotto's
makeSignMatrixDWLSfromMatrix().