robpearc / DeepFoldRNA

Other
27 stars 9 forks source link

Running time for MSA generation? #7

Open emberslee opened 1 year ago

emberslee commented 1 year ago

Hi, I have followed the steps and successfully built some models. However, I found that the running time for generating the MSA input is extremely long, sometimes it took 1~2 days. Is this normal? How to reduce the time? Thanks.

keiran-rowell-unsw commented 10 months ago

Hi emberslee, I feel like I'm getting a similar error with the CPU-bound MSA step.

Does it eventually finish within these 1-2 days?

From the outside, it looks like the MSA is stalling entirely with my small (60 nt) RNA sequences.

emberslee commented 10 months ago

Hi emberslee, I feel like I'm getting a similar error with the CPU-bound MSA step.

Does it eventually finish within these 1-2 days?

From the outside, it looks like the MSA is stalling entirely with my small (60 nt) RNA sequences.

I dont think they are all finished within 1-2 days. For the cases I tried, some finished within a few hours and I canceled the others because they are taking too much running time. The MSA seach is indeed too slow for an impatient person.

keiran-rowell commented 10 months ago

OK thanks that was my experience as well.

Some models would run indefinitely. I just cancelled with Ctrl + C then the code would happily move on to the next MSA, and that one would finish.

No time to diagnose next week, but I'm still interested in having DeepFoldRNA running locally here

holden-lyn commented 7 months ago

If wanna try employing more CPUs the following might help:

  1. Find "rMSA.pl" in path bin/rMSA/rMSA.pl, search for string "#### prepare secondary structure ####" and you will find the code determine the CPU number above the searched string.

  2. I change it as below to allow using 1 CPU for every bp of RNA sequence and cap at 64 CPUs. This change works fine for me. Make sure to make adjustment align with actual cores available at your side.

if ($cpu==0)
{
$cpu=int($Lch/1);
$cpu=1 if ($cpu<1);
$cpu=64 if ($cpu>64);
}
print "using $cpu cpu\n";