![]() |
HMMER
User's Guide |
HMMER 1 was developed at the MRC Laboratory of Molecular Biology, Cambridge UK, while I was a postdoc with Dr. Richard Durbin. I thank the Human Frontier Science Program and the National Institutes of Health for their support.
HMMER 1.8 (and subsequent minor bugfix releases) was the first public release of HMMER, released in April 1995. A number of modifications and improvements went into HMMER 1.9 code, but 1.9 was never released. Some versions of HMMER 1.9 did inadvertently escape St. Louis and make it to other sites, but it was never documented or supported. HMMER 1.9 collapsed under its own weight in 1996, when the number of ugly hacks increased to a critical mass.
HMMER 2 is a nearly complete rewrite, based on a new model architecture dubbed ``Plan 7''. Implementation was begun in November 1996 at Washington University in St. Louis. I thank the Washington University Dept. of Genetics and the NIH National Human Genome Research Insititute for their support during this (extremely stressful) time. There is nothing like throwing four years of work away and starting fresh to make you question your sanity. Working on a book [Durbin et al., 1998] and starting up a lab at the same time made it all doubly ``exciting''. If you are so bored as to actually read the code, you will run across inexplicable comments that note where I was when I wrote various parts, making up a sort of disjointed diary of this period; amongst other places, parts of HMMER 2 were written in airport lounges, on TWA flights 720 and 721 to and from London, in Graeme Mitchison's kitchen in Cambridge, and on vacations while my wife wasn't watching. I therefore owe special thanks to the Biochemistry Academic Contacts Committee at Eli Lilly & Co. for a gift that paid for the trusty Linux laptop ``wanderoo'' on which much of HMMER 2 was written.
The MRC-LMB computational molecular biology discussion group has contributed many ideas to HMMER. In particular, I thank Richard Durbin, Graeme Mitchison, Erik Sonnhammer, Alex Bateman, Ewan Birney, Gos Micklem, Tim Hubbard, Roger Sewall, David MacKay, and Cyrus Chothia. Any errors in the code, though, are my fault alone, of course.
Sequence format parsing (sqio.c) in HMMER is derived from an early release of the READSEQ package by Don Gilbert, Indiana University. Thanks to Don for an excellent piece of software; and apologies for the mangling I've put it through since.
The file gnuregex.c is the GNU regular expression library; thanks to the GNU folks. Several miscellaneous functions in sre_math.c are taken from public domain sources and are credited in the code's comments.
masks.c includes a modified copy of the XNU source code from David States and Jean-Michel Claverie.
In many other places, I've reimplemented algorithms described in the literature. These are too numerous to credit and thank here; the original references are given in the comments of the code. However, I've borrowed (stolen?) more than once from the following folks that I'd like to be sure to thank: Steve Altschul, Pierre Baldi, Phillip Bucher, Warren Gish, David Haussler, Steve and Jorja Henikoff, Richard Hughey, Kevin Karplus, Anders Krogh, Bill Pearson, and Kimmen Sjolander.
HMMER is now developed on Silicon Graphics and Linux machines. I thank Silicon Graphics, especially Juli Nash and Wade McLain, for their continued support and assistance. I am proud to acknowledge a tremendous debt to the development tools that I use from the free software community: an incomplete list includes GNU's gcc compiler and gdb debugger, Cygnus' egcs compiler, Conor Cahill's dbmalloc library, Bruce Perens' ElectricFence, Richard Stallman's emacs, Walter Tichy's RCS, Larry Wall's perl, LaTeX and TeX from Leslie Lamport and Don Knuth, Nikos Drakos' latex2html, Thomas Phelps' PolyglotMan, Linus Torvalds' Linux operating system, and the folks at Red Hat Linux.
Finally, I'd like to cryptically thank Dave ``Mr. Frog'' Pare and Tom ``Chainsaw'' Ruschak for a totally unrelated free software product that was historically instrumental in HMMER's development, for reasons that are best not discussed while sober.