A few weeks ago there was a discussion of how to align huge number of
sequences in which Sean Eddy's HMMER package was mentioned. It took a few
very minor tweaks to build it on our OpenVMS system, and it worked with
every example given in the tutorial (subject to the usual caveats about
double quoting case sensitive UNIX switches, ie, -u vs. -U, and switch
order on the command line being a bit touchy - don't deviate from what the
-h option says it requires). Kudos to S.E. - the HMMER package seems to be
a very solidly written piece of code.
Since there's no point in anybody else duplicating this port, I'm posting
the details of how to do it here. This was on OpenVMS/Alpha 6.2 with the
DECC 5.2 compiler.
Pick up HHMER by hitting the download link in:
http://genome.wustl.edu/eddy
Gunzip and untar it.
Change all instances of:
#ifdef NEED_GETOPTH
#include <getopt.h>
#endif
to
#ifdef NEED_GETOPTH
#include <getopt.h>
#endif
#ifdef NEED_UNISTDH
#include <unistd.h>
#endif
(This is in most of the main *.c modules)
Modify squid.h, put the following lines in just above the existing code
concerning HUGE_VAL (needed so that HUGE_VAL is just a real and not the
humongous float that DECC sets it to, which causes math problems during
compilation.)
#ifdef __VMS
#undef HUGE_VAL
#define HUGE_VAL 1e38
#endif
Obtain a copy of strcmpcase() from somewhere. For instance, there is one
in the X11KIT on ftp.wku.edu.
Drop the make.com file which follows my signature into the source
directory. Do @make.com. There will be a couple of warnings about
implicit function definitions for strcasecmp - as there is no prototype for
it in any of the header files. Other than that, HMMER compiles, links, and
runs cleanly. For OpenVMS 6.2 and above add the location of the
executables to DCL$PATH, for 6.1 and below, define symbols for each
program, ie:
$ hmma :== $wherever_it_is:hmma
Regards,
David Mathog
mathog at seqaxp.bio.caltech.edu
Manager, sequence analysis facility, biology division, Caltech
**********************************************************************
$! make.com
$! 11-JUN-1996, David Mathog, Biology Division, Caltech
$!
$! Simple build procedure for OpenVMS with DECC compilers.
$!
$! Note that the redefinition with BLASTDB is to avoid a conflict with
$! GCG's BLASTDB logical name.
$!
$!
$ mycc :== cc/standard=ansi89/prefix=all/nolis -
/define=("""BLASTDB=NOTBLASTDB""", -
NO_STRDUP,NORANDOM, -
NEED_UNISTDH)
$ mylink :== link/nomap
$!
$! build the common pieces
$!
$! "SQUID" pieces
$ mycc aligneval.c
$ mycc alignio.c
$ mycc sqerror.c
$ mycc sqio.c
$ mycc iupac.c
$ mycc msf.c
$ mycc revcomp.c
$ mycc selex.c
$ mycc sre_ctype.c
$ mycc sre_math.c
$ mycc sre_string.c
$ mycc types.c
$ mycc cluster.c
$ mycc weight.c
$ mycc stack.c
$ mycc dayhoff.c
$!
$! VMS (actually ANSI C) doesn't have a strcasecmp() function, yet
$! one is required. Many VMS packages have this function available
$! to plug this hole
$!
$ mycc strcasecmp.c
$!
$!
$! "SRC" pieces OTHER than mains
$!
$ mycc align.c
$ mycc dbviterbi.c
$ mycc emit.c
$ mycc forback.c
$ mycc fragviterbi.c
$ mycc hmmio.c
$ mycc maxmodelmaker.c
$ mycc misc.c
$ mycc output.c
$ mycc profiles.c
$ mycc prior.c
$ mycc saviterbi.c
$ mycc scorestack.c
$ mycc states.c
$ mycc viterbi.c
$ mycc swviterbi.c
$ mycc trace.c
$ mycc weeviterbi.c
$!
$! at this point toss all of these into an object library
$!
$ library/create hmm.olb *.obj
$!
$! compile the mains
$!
$ mycc hmma.c
$ mycc build_main.c
$ mycc hmme.c
$ mycc hmmfs.c
$ mycc hmmls.c
$ mycc search.c
$ mycc hmmsw.c
$ mycc train_main.c
$ mycc convert_main.c
$ if (f$search("align-homologues.c") .nes. "")then -
rename align-homologues.c align_homologues.c
$ mycc align_homologues.c
$!
$! link the mains
$!
$ mylink hmma,hmm/lib
$ mylink/exe=hmmb build_main,hmm/lib
$ mylink hmme,hmm/lib
$ mylink hmmfs,hmm/lib
$ mylink hmmls,hmm/lib
$ mylink/exe=hmms search,hmm/lib
$ mylink hmmsw,hmm/lib
$ mylink/exe=hmmt train_main,hmm/lib
$ mylink/exe=hmmc convert_main,hmm/lib
$ mylink/exe=align_homologues align_homologues,hmm/lib
$!
$ set file/prot=w:re *.exe
$!
$ write sys$output "Build completed"