The natural log (log) in transformAssay behaves differently from log2 and log10:
# Example data
library(mia)
data(peerj13075)
tse <- peerj13075
# List log transformations
trans <- list(log2=log2, log10=log10, log=log)
for (i in names(trans)) {
f <- trans[[i]]
tse <- transformAssay(tse, assay.type = "counts", method = i, pseudocount=1)
# Use check sum to verify if transformAssay gives same result than manual version
# 0 indicates match
print(paste(i, sum(assay(tse, i) - f(assay(tse, "counts") + 1))))
}
Reason seesm to be that log uses vegan::decostand, which has different treatment for count data.
This is confusing.
Suggestion:
- change the default behavior of
log to align with log2 and log10
- consider providing vegan::decostand version separately, for instance through method="log.decostand"
- even better, support providing functions in the
method argument (i.e. method=log2 instead of method="log2"); then one could use vegan functions or any other functions directly here.
This could be justified since pseudocount is not intended to be used as a general transformation.
The natural log (log) in transformAssay behaves differently from log2 and log10:
Reason seesm to be that
logusesvegan::decostand, which has different treatment for count data.This is confusing.
Suggestion:
logto align withlog2andlog10methodargument (i.e. method=log2 instead of method="log2"); then one could use vegan functions or any other functions directly here.This could be justified since pseudocount is not intended to be used as a general transformation.