Patch to allow longer runtimes on large genomes - #56
Conversation
Increase time allocated to jobs. Timeout error for large genomes (>20 GB)
|
I don't think we actually need this unless it's a very common thing. you can write a pass that to the pipeline with That way you can get it running now. |
Yes, this could be a nice workaround if we want to finish those runs without a release. |
|
Longer runtime worked, but I'm now getting out of memory issues in the sequencecomposition/conf/base.config Line 22 in 0cd2b0a |
Thanks for noticing this, @tbrown91. For now can you use |
|
So a tbi file is generated, under x. A csi and tbi generated under y and just a gzi above 2 ** 32? Can we not just use CSI? The trade off is pretty small right, the pipelines we've done in ToLA default to just csi as its the flexible format. Do you know at all @sainsachiko ? This way, if size is big enough to need csi then it gets 5* the memory. Potentially overkill but should get the job done |
Thanks Damon, it’s really great to have a ratio that we know works in practice! I really like your suggestion, perhaps current OOM runs could be proceeded using this configuration. I was thinking we could then use a few different datasets to get a better sense of a reasonable scaling ratio to put on dev/main. It would be nice to have something that works well across a range of datasets rather than over-provisioning from the start. Also, since this pipeline is mainly maintained by @muffato, it would be great to get his thoughts too. Regarding CSI, as in a GAP context, the pipeline is currently output all 3 types of indices (TBI, CSI, GZI) for all outputs where possible (example outputs). |
muffato
left a comment
There was a problem hiding this comment.
This 50.MB + 30.min is low on purpose. It's there to force pipeline steps to define their own resources if they need more than a trivial amount. It's a practice I've introduced when walking on pipeline resource optimisation.
If you see that a step sometimes needs more than 30 min, it's absolutely fine to write it down in the pipeline config, but in a process-specific block rather than the catch-all block.
ChatGPT could give some insights in what the peak memory is: Tabix Memory Complexity.pdf
Also, it's often difficult to pinpoint the exact memory usage. That's why we tend to insert a * task.attempt (or similar) somewhere so that when the retry mechanism kicks in, the job is given more resources and hopefully completes.
Regarding TBI and CSI, I'm generating both in all pipelines because I'm not just which one is used. I fear some tools only support TBI ... I don't have enough experience of bioinformatics in the wild to know ...
|
Based on the document you linked, the length of the longest sequence should also be included in the calculation, something like Regarding the indices: I think this makes sense to include all of them |
PR checklist
nf-core pipelines lint).nextflow run . -profile test,docker --outdir <OUTDIR>).nextflow run . -profile debug,test,docker --outdir <OUTDIR>).docs/usage.mdis updated.docs/output.mdis updated.CHANGELOG.mdis updated.README.mdis updated (including new tool citations and authors/contributors).