I know hifiasm dev activity is on the back burner, and really appreciate all the work so far. It's been invaluable for the community.
Thought it worthwhile to pass this one along after looking into the problems I detailed way back in #613 with the use of HiC reads exiting the program early.
Short answer: always do a make clean before doing a hifiasm make.
A Makefile improvement, if you or a maintainer can get to it, would more consistently add header dependencies so stale .o object files don't linger. But you can't go wrong with make clean.
My #613 issue problem came about because make did not recompile rcut.cpp since its CommandLines.h dependency was not in the Makefile. The enzyme fields were added into asm_opt (ending with enzyme *sec_in) just before extract_iter and thread_num in the struct. This meant that in certain situations asm_opt.thread_num was seen as 0, instead of default of 1 or the -t value, due to the rcut.o incorrect offset for thread_num. This caused a SIGSEGV (error code 139) in cal_clus_sc0 (rcut.cpp:2554), is_set_bits_p((*vis), a[i]).
Several other files that could also be stale: hic.o, horder.o, inter.o, gfa_ut.o, tovlp.o, and gchain_map.o. But once again make clean makes that a non-issue.
best and thanks for hifiasm and all the improvements its brought to long-read genome assembly,
Jim Henderson
I know hifiasm dev activity is on the back burner, and really appreciate all the work so far. It's been invaluable for the community.
Thought it worthwhile to pass this one along after looking into the problems I detailed way back in #613 with the use of HiC reads exiting the program early.
Short answer: always do a
make cleanbefore doing a hifiasmmake.A
Makefileimprovement, if you or a maintainer can get to it, would more consistently add header dependencies so stale .o object files don't linger. But you can't go wrong withmake clean.My #613 issue problem came about because
makedid not recompile rcut.cpp since its CommandLines.h dependency was not in the Makefile. Theenzymefields were added into asm_opt (ending withenzyme *sec_in) just before extract_iter and thread_num in the struct. This meant that in certain situations asm_opt.thread_num was seen as 0, instead of default of 1 or the -t value, due to the rcut.o incorrect offset for thread_num. This caused a SIGSEGV (error code 139) incal_clus_sc0(rcut.cpp:2554),is_set_bits_p((*vis), a[i]).Several other files that could also be stale:
hic.o,horder.o,inter.o,gfa_ut.o,tovlp.o, andgchain_map.o. But once againmake cleanmakes that a non-issue.best and thanks for hifiasm and all the improvements its brought to long-read genome assembly,
Jim Henderson