Gaius-Augustus / BRAKER

BRAKER is a pipeline for fully automated prediction of protein coding gene structures with GeneMark-ES/ET/EP/ETP and AUGUSTUS in novel eukaryotic genomes
Other
334 stars 80 forks source link

Stuck Augustus etraining by large genome #748

Closed TkNiw closed 4 months ago

TkNiw commented 5 months ago

Dear Braker3 developers,

Thank you for releasing such an useful pipeline! I just want to report a bug about Augustus binary files wrapped by Braker3.0.6 singularity image. We are working on an organism with relatively large genome (6.5 Gb assembly size), and faced with an error below.

./braker/errors/gbFilterEtraining.stderr

GBProcessor::getGeneList(): Could not read the following line in Genbank file.
atacattga ccagtatatt acactcaaca atatattaca
Maximum line length is 
39998.

Encountered error after reading 16544 annotations.
terminate called after throwing an instance of 'std::bad_alloc'
  what():  std::bad_alloc
Aborted (core dumped)

Then, we found a similar issue in Augustus repository, explaining the problem is related to the data type handling in C++ script. https://github.com/Gaius-Augustus/Augustus/issues/105

This was fixed in Augustus 3.0.5, released after this report, but the one inside braker 3.0.6 (also 3.0.7) singularity image is 3.0.4. Finally, This was solved by replacing original Augustus binary files by v3.0.5 inside of braker singularity container. I hope this will make the pipeline more versatile.

cement-head commented 4 months ago

NOOB Question: Can you provide detailed instructions on how to actually do this for people who are unfamiliar with Singularity containers?

TkNiw commented 4 months ago

Well, I'm new to singularity, actually. What I did is like this. First I logged in the shell in braker3 docker container, installed and replaced the augustus binary files in docker container (download & make), logged out, then built docker image from the container by docker commit. Lastly I generated the singularity image from the docker image by singularity build.

I guess this is not a straightforward way, comming from the root-less feature of default singularity setting. I think this could be solved also by fakeroot mode of singularity (Sandbox) instead of the docker-singularity conversion, but I haven't tried this method.

KatharinaHoff commented 4 months ago

I pushed a new docker container with the latest augustus and etraining, today.

I recommend to hold off a few days, though. It solves your problem, but not all problems that we will address in the next couple of days