Hi Everyone, I have run early eager for small data...
# eager
s
Hi Everyone, I have run early eager for small dataset (in coverage and sample), but now i am analysing whole genome with pretty good coverage, so problem is like at 4 hrs interval everything get failed, start running again. As i have read documents, its like its running intially with some default resource, if it does not get succeed, it will increase the resource and run. here with each time, it will make new file as i have seen directly and taking extra space, also i am loosing time, as i know i have dense data with many sample, how i can increase resource directly for adapterrmoval process & AdapterRemovalFixPrefix, also for bwa aln, i have seen some example but i am not able to make configure file. i am running currently on slurm and with help of conda. thank you.
t
Hi Shailesh! You will need to provide a configuration file that tweaks those processes. The config file (
my_config.config
) would look sth like this:
Copy code
process {
    withName: adapter_removal {
        memory = { task.attempt == 3 ? 32.GB : task.attempt == 2 ? 24.GB : 16.GB }
    }
}
This would give the adapter_removal process 16, 24, 32 GB on the first, second and third attempt rescpectively. You will just have to additionally specify this config in your run command:
Copy code
nextflow run nf-core/eager [...] -c /path/to/my_config.config [...]
This config will overwrite anything in the profiles you are loading.
s
Thank you Thiseas for quick response and sharing conf file. So like this, bwa will also work ?
Copy code
process {
    withName: adapter_removal {
        memory = { task.attempt == 3 ? 32.GB : task.attempt == 2 ? 24.GB : 16.GB }
    }
}
process {
    withName: bwa {
        memory = { task.attempt == 3 ? 32.GB : task.attempt == 2 ? 24.GB : 16.GB }
    }
}
t
yes. You can actually provide the configuration for multiple modules within the same process block too
and you can configure also the
cpus
, and
time
for the job in the same manner
s
thats is really great. i think increasingly cpu will be helpful to me at mapping. Thank you very much.
t
If you are only starting to analyse this data, you might also want to consider testing eager3 with it ^_^ (
-r dev
) Input structure and parameter names have changed, so setting it up will take a bit of time. but it is designed to be much more convenient to use with deeper SG genomes, as it can shard mapping input into many smaller jobs, instead of one long one. That also means if any fail, you only have to redo that one part, minimising time losses
s
Sure, i will check eager3 as well, at this moment just wanted to see some stats of recent sequence, but its good to check eager3 i think and will try next months and will let you know. Thanks
👍 1
Hii Thiseas, Good Morning. I am getting this 140 code error (i think for resource its 143 as mention in eager documents), can you tell me what is happening so i can try something. Thank you for your help. I have attached error file.
t
> Exit code 140 typically indicates a process failed due to resource constraints such as memory, disk space, CPU, or time limits on Slurm or SGE clusters. Suggests you need to bump up some resource or the time limit
s
hii yes actually, earlier i was giving the 20 cpu but over two node i think, and i understand all tools are perform multi-threading but with single node. at currently with singel node and 40 cput with 100 hrs, its running fast and smooth. Thank you for your suggestion and help
although just small question, like if i have mutliple sample, submit job, with few more node, will each sample will run seprately on different node or it will to finish process within node and then start
currently i am using this config and working fine; process { withName: 'adapter_removal' { cpus = 35 memory = { task.attempt == 3 ? 300.GB : task.attempt == 2 ? 250.GB : 200.GB } time = { task.attempt == 3 ? 200.h : task.attempt == 2 ? 140.h : 100.h } } withName: 'bwa' { cpus = 35 memory = { task.attempt == 3 ? 300.GB : task.attempt == 2 ? 250.GB : 200.GB } time = { task.attempt == 3 ? 200.h : task.attempt == 2 ? 180.h : 140.h } } }
t
I think this all depends on your cluster configuration tbh. nextflow should submit each process as a separate job to your scheduler, and the scheduler deals with where and how those get distributed to the nodes
s
I see, thats all. Thank you for your time and kind help.
eager 1
Hii Thiseas, thanks for helping earlier, and my analysis is working fine at this time. But I think that when I was not using custum config, my analysis was being automatically submitted to multiple nodes as per requirment, now with custum config its finishing job one by one on single node, like currently its doing aligment, so i have 14 sample, it suppose to submit few job indepdent for some sample on different node, but its not submitting automatically. earlier this was not the case i think. do you think, i need to change something config ??.
t
That’s hard to answer without knowing the exact configuration you had before vs now. In general, the number of concurrent jobs Nextflow will submit are governed by the
executor.queueSize
attribute, so your config can include a block like this to run 8 jobs in parallel:
Copy code
executor {
    queueSize = 8
}
It could be that your original configuration was defining this attribute somewhere, and you have now either overwritten it, or replaced it with a value your cluster configuration does not allow
s
Hii thank you for your response.
currenty i am using this one simple; i have increased the cpu and time, as it was taking 3 days for each sample so; cat nextflow_all.config process { withName: 'adapter_removal' { cpus = 40 memory = { task.attempt == 3 ? 300.GB : task.attempt == 2 ? 250.GB : 200.GB } time = { task.attempt == 3 ? 200.h : task.attempt == 2 ? 740.h : 700.h } } withName: 'bwa' { cpus = 40 memory = { task.attempt == 3 ? 300.GB : task.attempt == 2 ? 250.GB : 200.GB } time = { task.attempt == 3 ? 200.h : task.attempt == 2 ? 780.h : 700.h } } }
besides this, i could not find this one;
executor.queueSize
t
ok. I think the default queueSize is sth like
100
so that’s probably not it then. Do your jobs get queued, just not ran in parallel, or is nextflow queueing them one by one? Does your scheduler have a fair share system? The time limits on your jobs are quite large. Maybe once one job is running your get down-prioritised a lot because of the time limits, and hence no other jobs run? 🤔
s
Hi Thiseas, I am very sorry for the late response, as I was away from the lab. Yes, the job does not get queued and does not run in parallel. It's like right now bwa aln is running, but it's running each sample one by one, and when it gets over, then it moves to the next stage, and again that stage will run for one by one. When I was not using config, I remember the job was getting submitted independently, like BWA index, seq, and adapter removal. However, once this job is complete, I will try to run them without config and see. Thank you very much.
t
Are you still loading the profile/config for your cluster, on top of your new config with the resource tweaks?
if yes, then I’m really not sure what’s going on. It should be submitting multiple jobs to the cluster. You could try specifying executor.queueSize in your config as a sanity check too