EddyRivasLab / hmmer

HMMER: biological sequence analysis using profile HMMs
http://hmmer.org
Other
305 stars 69 forks source link

Adds BLOSUM62 from easel/formats to testsuite/ #309

Closed nawrockie closed 11 months ago

nawrockie commented 11 months ago

And updates testsuite.sqc paths to use it. This fixes an issue in infernal where if you configure from a different directory (build dir) without having already done a top-level configure, you'll get hmmer test failures for the two tests that use easel/formats/BLOSUM62 because 'easel/formats' doesn't exist as a subdir of hmmer in the build dir (it does exist in the src dir).

cryptogenomicon commented 11 months ago

Thanks. The problem is a little different, and I'll note it here (and in my own notes) so we can do an even more elegant fix in the future.

The testsuite is in fact looking in the src directory for the file, not the build directory (that's the !<filename>! notation in a .sqc file). The sqc command gets a top_builddir and top_srcdir argument (in the testsuite/Makefile for make check). In HMMER's testsuite, that means it's getting the relative location of the HMMER build and src tree, within Infernal's build and src tree.

But in Infernal we have both easel and hmmer as infernal subdirectories (infernal/easel and infernal/hmmer) whereas in HMMER we have easel as a subdir of hmmer (hmmer/easel). There's no hmmer/easel in the HMMER source tree in Infernal. So a HMMER test, run inside Infernal, that goes looking for easel/formats/BLOSUM62 relative to the HMMER source tree will fail.

i.e. the fundamental problem is that we have easel in two different places relative to HMMER in Infernal vs HMMER, and our build system doesn't deal with this cleanly/consistently (for example, by making easel a subdir of HMMER in both places).

The reason we only get this in a fresh git install of Infernal is that there's a different hack in the Infernal ./configure that makes a symlink hmmer/easel in the build tree, for other reasons, but still related to the fact that our build system is working around having easel in inconsistent places as far as HMMER is concerned. So once you've done ./configure in the Infernal source tree, you have a hmmer/easel symlink, and now hmmer/easel/formats/BLOSUM62 is found.

Anyway. Simply putting the BLOSUM62 file (indeed any test file for HMMER) in HMMER's source tree, not Easel's, is the right fix for now.