Open BEFH opened 8 months ago
Hey there @BEFH, it would indeed be great if you could open some PRs for this!
The first thing would be to change the deseq2 module.
I think if possible, you should also provide a test for the new functionality. The current deseq2 tests are done with the mus_musculus dataset, you can find the links to the files here. If the samplesheet does not contain any info that is suitable to use as a covariate, you could check the test-datasets repo; maybe there is some dataset that already works, otherwise you can possibly provide something suitable?
I think there needs to be some discussion over how to do this. My suggestion of an additional contrast sheet column is one way to do it, or we could automatically detect if the column looks like a float (double in R) before turning it into a factor and instead make sure it's coerced to a double, or there could be a pipeline option to list continuous variables (probably preferable).
Hmm, I'm not sure if adding another param would be the best solution. As this concerns the contrasts, I think probably your other two suggestions make more sense. The check for numeric values is the easiest solution I think (but must make sure R understands negatives and decimals; yml sometimes struggles with that). The additional column in the contrasts file is of course more specific, meaning that it would allow people to also have factor variables that are numeric...However, @pinin4fjords, I think for this one would also need to change the validator, no?
This really just needs to be done in more or less the same way as the blocking. So a column for continuous covariates in the contrasts file. Yes, we'd have to make sure the validator understood about the new column, and verified that the listed covariates were present etc.
There's no reason the existing test data can't be adapted, we can add a new fake continuous covariate column- the test data doesn't need to have scientific validity.
My one concern with the design here is whether DESeq2 uses a Type I SS or a Type II SS. If it uses a Type II model, then linear covariates and blocking factors can be in different columns with no issues because order doesn't matter. If it's type I, I don't actually know.
I'm not quite sure what you mean by Type I or II SS, but according to the DESeq2 vignette, the order of variables in the design does not matter (search for order of
, second result).
Hello! I came across this issue because I was searching for exactly this implementation, and I have a question before opening some PRs: I have not checked all the datasets available yet (the mus_musculus samplesheet does not have a variable that could be used as continuous, but I'll keep looking). If the strategy to follow is similar to the "blocking" logic, the contrasts file of the test dataset, should also include a new column with the "continuous" field right? Like this:
id,variable,reference,target,blocking,continuous
treatment_mCherry_hND6_,treatment,mCherry,hND6,,
treatment_mCherry_hND6_sample_number,treatment,mCherry,hND6,sample_number,
treatment_mCherry_hND6_sample_number,treatment,mCherry,hND6,,age
And as @pinin4fjords mentioned, the corresponding samplesheet should have the corresponding column filled with integer data.
This means that implementing the use of continuous variables in this pipeline needs at least a PR on the test-datasets
repo, another one on the modules
repo to change the DESeq2 module and its tests, and finally another one on this repo, to add the new "continuous" option on the modules.conf
file (and maybe other changes).
Let me know if I got the logic correctly and I can start with some PRs :) Thanks!
Hey @ctuni, yes, that sounds about right. If you find a suitable dataset in the test-datasets repo, I think you'll only need to open a PR for the contrasts file, otherwise maybe you can modify an existing dataset on there (or provide an own dataset). And then indeed next is the modules PR and finally the change here in the pipeline :)
Description of feature
Many users including us would like to be able to include continuous covariates for the differential expression tests.
They could be added to the contrasts sheet like so:
Then in the modules/nf-core/deseq2/differential/templates/deseq_de.R:
At the beginning:
Then for building the variable list:
And finally for building the model:
However, there is still clearly work to be done in the Nextflow pipeline and documentation, and I don't know what to change there. If anyone could provide guidance on what to edit and what testing to do, I could do a pull request, but I don't know what to do at this point.