-
Notifications
You must be signed in to change notification settings - Fork 193
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Pipeline consistency & Unit testing in nf-core #209
Comments
Dear all, my contribution to the discussion:
I found it rather hard to have a metric / threshold that tells us: hey, this new version of the pipeline is inconsistent with the former one, don't bring it to production. I.e. for variant calling, if we switch to a complete different VC version, or a different tool, of course the set of predicted variants will be different. So I would like to have an example for a threshold for consistency determination that is plausible :)
Yes, this makes a lot of sense. Where would we host the bigger test-data sets? We could have a git LFS-based storage, so we don't lose the versioning control advantage. However, I this is not for free on Github https://help.github.com/articles/about-storage-and-bandwidth-usage. I mean we can set this up easily with a Gitlab server and git LFS as FS. Or have storage buckets on deNBI / ELEXIR, if we dont want to go to commercial cloud storage solutions?
Could you give an example how this would work in a process test case scenario?
Use-case, advantage? Hit me now :) Best, Sven |
It might be quite important to know whether something broke your pipeline. Even if its just informative "hey, we just have found 10% more variants because method X was updated!" this is really important! ATM, most people don't collect that sort of information, but it would be nice to actually create it!
Agreed, I updated the first post accordingly.
One would test individual processes: input A -> Input B, if this doesn't hold, raise an error. More like a functional testing approach, then running entire pipelines, thus ideally faster as well.
If I don't care about a certain metric to change, I can silence this. If I care about the metric being in a comparable range, use "lenient" and define the range. If I care about a certain metric to be 1:1 the same, use "strict" checking. Overall, we had the idea to have more realistic tests but have optional consistency tests in the end. |
Dear all, Concerning our way of testing, we are storing a small NGS data set here Tell me what do you think about this! |
I think unit testing will now be implemented as part of https://github.com/nf-core/modules for each tool. Additionally, we have now been granted money to start doing full-size workflow testing on AWS with real data. Together, these two things should address basically everything suggested here I think. So I will close the issue. Feel free to reopen if I missed something. |
You didn#t close it though ;-) |
We had quite some discussions involving @zichner @drpatelh and a bunch of others from whom I don't have Github handles at the moment.
Current setup:
Future perspectives
There were some ideas on how we could test and develop pipelines a bit better in the future to meet certain requirements, such as:
base.config
for each pipeline)"Real-scale" Testing
This part would be probably easiest, as it "only" requires storing larger datasets somewhere (S3/GC/HTTP/GIT-LFS/...) and running these datasets through the pipeline. Will probably include:
Consistency Testing
Unit Testing on process-level
There was a talk at the #nfhack18 to do testing in a "Unit-Test" style way using the
storeDir
directive. There was also another group discussing options here: nextflow-io/nf-hack18#7 to implement possibilities in NXF directly, which we should probably join and/or contribute to. The idea is to test individual processes, similar as to a function in typical software development unit tests - currently this can just be mocked using thestoreDir
directive and faking existing results to force Nextflow to continue running from a specific part of the pipeline.Discussion
The biggest issue will be to find an efficient way of running tests for consistency detection.
Idea discussed:
This is open for discussion of course, please contribute!
The text was updated successfully, but these errors were encountered: