Using normOffsets() in csaw produces offsets based on the loess fit to correct for non-linear bias.
Are these ready to be used with calculateCPM()?
I would think no, and one would need to apply scaleOffsets(), is that correct?
Still, having the normOffsets() output in your DGEList (or SummarizedExperiment) one can directly feed this object into the default edgeR workflow (estimateDisp etc...) without further steps that have to be taken, is this correct?
In any case, do the offsets take full care of both the non-linear bias and differences in composition/depth between libraries, I guess so?
If you set use.offsets=TRUE in calculateCPM(), it should handle all of it for you, including scaleOffset.
Still, having the normOffsets() output in your DGEList (or SummarizedExperiment) one can directly feed this object into the default edgeR workflow (estimateDisp etc...) without further steps that have to be taken, is this correct?
If you have it in your SE, you can run asDGEList() to create a DGEList with offsets, no further work required. If you just have a raw matrix of offsets, then you'll have to use scaleOffset() to add it to your DGEList.
In any case, do the offsets take full care of both the non-linear bias and differences in composition/depth between libraries, I guess so?
That example is particularly complicated because the starting material for the offsets is the transcript length, which needs to be combined with the biases from library size differences (plus also compositional biases).
catchSalmon() could probably be extended to handle that particular bit with less writing on the user's part.