HMMER 3.2 release

The glorious master plan was to finish HMMER4 while hoping that HMMER3 stayed stable. Alas, HMMER4 development has been even slower than expected, and bugs and bitrot have accumulated on HMMER3. Here's a new HMMER 3.2 release to tide us all over. I'm managing HMMER releases again, with Travis Wheeler having moved a while ago to a faculty position at U. Montana.

You can get the HMMER3.2.1 source tarball from here.

more important changes

  • HMMER is now licensed under the BSD license, instead of the GPL. This means it can be more easily incorporated in other software, both open source and commercial.
  • I have now completed (ahem, after years) the transition to github. You can now follow HMMER development at GitHub. The master branch is the current release.
  • The installation with make install is streamlined. Now it simply installs programs and man pages.
  • The default number of threads/cores has changed for the search programs. Now that servers can commonly have 30+ cores, and HMMER3 doesn't scale well beyond 2-4 of them, it's become downright rude for our default policy to be "give me all your cores". HMMER3.2 programs now default to two compute threads on multiprocessor systems.
  • HMMER3 now strictly requires either SSE2 or bigendian Altivec/VMX SIMD vector support, meaning we only support x86 AMD/Intel (Linux, OS/X) and PowerPC AIX. Previously we also had a "dummy" implementation in portable pure C, so if your platform didn't have support for our SIMD vectorization code, you could still at least build HMMER and use it for non-compute-intensive stuff. Maybe that'd be useful to someone, I thought. Instead, though I plastered health warnings all over it -- the dummy is >100x slower, don't use the dummy implementation, it was written by trolls --  packagers packaged it, and benchmarkers benchmarked it and published papers that used it. I decided it was causing more trouble than good.
  • the Easel esl-stranslate tool for translating DNA sequence to ORFs had a horrible bug in its standard genetic code, among other problems. It's been replaced by a new esl-translate tool.

smaller new features

  • improved documentation of --mxfile and score matrix file format
  • adds support for EBI's "uncheck all hits" on jackhmmer web site
  • removed experimental hmmbuild --seq_weights_r and --seq_weights_e options
  • appeased new gcc6 --Wmisleading-indentation warning
  • SSI indexing is now robust against duplicate keys
  • autoconf now robust against someone running gnu `autoheader`
  • improved autoconf of SIMD vector support
  • improved autoconf of DAZ,FTZ support on x86 processors
  • improved autodetection of phylip interleaved vs sequential forma
  • improved autodetection of A2M vs. aligned FASTA format
  • clarified A2M format parse error when file contains 'O' residue
  • improved portability to Intel/Solaris
  • FASTA parser now ignores description line after a ctrl-A
  • MSAs output with -A option now include name, acc, desc, author markup.
  • Easel miniapps include esl-alirev, reverse complementing RNA/DNA alignment
  • nhmmer/nhmmscan now allow alignments as target dbs
  • target relentropy for DNA models changed from 0.45 to 0.62
  • updated the User Guide to spiffy Tufte-LaTeX style

fixed bugs

  • nhmmscan faulted on old model files because it expected MAXL field
  • --cut-ga wasn't checking that GA line was actually present in model
  • GA thresholds weren't being captured from DNA/RNA Stockholm alignments
  • A2M alignment parsing was corrupted on lines ending in insertions
  • alphabet-guessing failed for FASTA seq >4096 bytes and <4000 residues
  • genbank to fasta format conversion was leaving extra \n in accession
  • NCBI db format: multithreaded nhmmer was failing to read
  • NCBI db format: 1st database sequence was skipped for second query (#e6)
  • unit test failures in esl_normal, esl_random due to floating point math
  • nhmmer was corrupted by * symbols in input sequence (iss#118)
  • hmmsearch -A crashed if top-ranked hit has no domains (iss#131)
  • new variety of "backconverted subseq" hmmsearch crash on *'s (iss#135)
  • qsort() callbacks now return -1/0/1 as they should. (Infernal iss#11)
  • esl_buffer hangs when input ends with \r (Easel iss#23)

For details, you can view and search our issue tracking logs at github for HMMER or Easel.