hmm2build(1)

🌸 hmm2build β€” HMMER Manual 🌸

okay bestie, welcome to hmm2build(1), straight out of the HMMER manual πŸ’– this is the one that takes your cute little alignment and turns it into a whole profile HMM. no cap.


✨ NAME ✨

hmm2build β€” build a profile HMM from an alignment 🧚


🌈 SYNOPSIS 🌈

hmm2build [options] hmmfile alignfile

πŸ’… DESCRIPTION πŸ’…

so here's the tea: hmm2build reads a multiple sequence alignment file, that's alignfile, builds a brand new profile HMM out of it, and saves that HMM into hmmfile. iconic behavior honestly 🫢

alignfile can be in ClustalW, GCG MSF, SELEX, Stockholm, or aligned FASTA alignment format. and the best part? it automatically detects which format you threw at it. no manual configuration era, we love to see it ✨

by default, the model is configured to find one or more nonoverlapping alignments to the complete model β€” that means multiple global alignments with respect to the model, and local with respect to the sequence. it's giving... the behavior of the hmmls program of HMMER 1. lowkey a throwback πŸ‘‘

if you wanna configure the model for multiple local alignments with respect to the model and local with respect to the sequence β€” a la the old hmmfs program β€” you use the -f (fragment) option. very demure, very mindful πŸ’œ

and then, more rarely (like, rare rare), you might want to configure the model for a single global alignment β€” global with respect to both model and sequence β€” and for that you use -g. or, if what you actually want is a single local/local alignment (a la the standard Smith/Waterman, or the old hmmsw program), that's -s. choose your fighter bestie, they're all right there πŸŽ€


πŸ‘‘ OPTIONS πŸ‘‘

  • -f β€” configures the model for finding multiple domains per sequence, where each domain can be a local (fragmentary) alignment. this is analogous to the old hmmfs program of HMMER 1. fragmentary slay πŸ’…
  • -g β€” configures the model for finding a single global alignment to a target sequence, analogous to the old hmms program of HMMER 1. one alignment, one shot, committed πŸ’œ
  • -h β€” prints brief help. and when we say brief we mean it includes the version number and a summary of all the options, including the expert options. literally the whole menu, bestie πŸ“–βœ¨
  • -n <s> β€” name this HMM <s>. <s> can be any string of non-whitespace characters (like, one "word"). there is no length limit β€” or at least, not one imposed by HMMER; your shell is gonna complain about command line lengths way before HMMER does 😭 so go off, but maybe not that off.
  • -o <f> β€” re-saves the starting alignment to <f>, in Stockholm format. the columns which were assigned to match states will be marked with x's in an #=RF annotation line ✨ and heads up: if either the --hand or --fast construction options were chosen, the alignment may have been slightly altered to be compatible with Plan 7 transitions β€” so saving the final alignment and comparing it to the starting alignment can let you view those alterations πŸ‘€ see the User's Guide for more info on this arcane side effect. arcane is right, this is giving ancient scroll energy πŸ“œ
  • -s β€” configures the model for finding a single local alignment per target sequence. this is analogous to the standard Smith/Waterman algorithm or the hmmsw program of HMMER 1. classic, timeless, we stan 🫢
  • -A β€” append this model to an existing hmmfile rather than creating hmmfile. super useful for building HMM libraries (like Pfam). library-building era, let's go πŸ“šπŸ”₯
  • -F β€” force overwriting of an existing hmmfile.
⚠️ okay important: otherwise HMMER will refuse to clobber your existing HMM files, for safety's sake. it's protecting you from yourself bestie. don't be mad at it πŸ’€πŸŒΈ

✨ EXPERT OPTIONS ✨

okay so like, these are the expert flags, bestie β€” the ones you only touch when you know exactly what you're doing. they're giving "I read the User's Guide for fun" energy and honestly? iconic. let's go one by one, no skips. πŸ’…

  • --amino β€” forces the sequence alignment to be interpreted as amino acid sequences. normally HMMER is like "I got this" and autodetects whether it's protein or DNA, but sometimes alignments are so tiny that the autodetection is just guessing tbh. see also --nucleic. 🧬
  • --archpri <x> β€” sets the "architecture prior" used by MAP architecture construction to <x>, where <x> is a probability between 0 and 1. this parameter is the main character behind a geometric prior distribution over model lengths. as <x> goes up, longer models are favored a priori. as <x> goes down, it takes way more residue conservation in a column to make that column a "consensus" match column in the model architecture. the default 0.85 was picked empirically as a reasonable setting. slay. ✨
  • --binary β€” writes the HMM to hmmfile in HMMER binary format instead of readable ASCII text. no cap, sometimes you want the compact vibe. πŸ’Ύ
  • --cfile <f> β€” saves the observed emission and transition counts to <f> after the architecture has been determined (like, after residues and gaps have been assigned to match, delete, and insert states). this one is used in HMMER development for generating data files useful for training new Dirichlet priors. the format of count files is documented in the User's Guide. πŸ“
  • --fast β€” quickly and heuristically determines the architecture of the model by assigning all columns with more than a certain fraction of gap characters to insert states. by default this fraction is 0.5, and you can change it with the --gapmax option. the default construction algorithm is a maximum a posteriori (MAP) algorithm, which is slower. so --fast is the "I have places to be" option. πŸƒβ€β™€οΈ
  • --gapmax <x> β€” controls the --fast model construction algorithm, but if --fast isn't being used, it has no effect. if a column has more than a fraction <x> of gap symbols in it, it gets assigned to an insert column. <x> is a frequency from 0 to 1, and by default is set to 0.5. higher values of <x> mean more columns get assigned to consensus, and models get longer; smaller values of <x> mean fewer columns get assigned to consensus, and models get smaller. <x> β€” and yes, that stray <x> is literally just sitting there at the end, and we are keeping it because every detail matters, periodt. πŸ’€
  • --hand β€” specify the architecture of the model by hand: the alignment file must be in SELEX or Stockholm format, and the reference annotation line (#=RF in SELEX, #=GC RF in Stockholm) is used to specify the architecture. any column marked with a non-gap symbol (such as an 'x', for instance) is assigned as a consensus (match) column in the model. it's giving "I'll do it myself" energy and we respect it. πŸ™Œ
  • --idlevel <x> β€” controls both the determination of effective sequence number and the behavior of the --wblosum weighting option. the sequence alignment is clustered by percent identity, and the number of clusters at a cutoff threshold of <x> is used to determine the effective sequence number. higher values of <x> give more clusters and higher effective sequence numbers; lower values of <x> give fewer clusters and lower effective sequence numbers. <x> is a fraction from 0 to 1, and by default is set to 0.62 (corresponding to the clustering level used in constructing the BLOSUM62 substitution matrix). she's precise. 🎯
  • --informat <s> β€” assert that the input seqfile is in format <s>; do not run Babelfish format autodection. this increases the reliability of the program somewhat, because the Babelfish can make mistakes; particularly recommended for unattended, high-throughput runs of HMMER. valid format strings include FASTA, GENBANK, EMBL, GCG, PIR, STOCKHOLM, SELEX, MSF, CLUSTAL, and PHYLIP. see the User's Guide for a complete list. basically, if you know the format, say it loud and proud. πŸ“£
  • --noeff β€” turn off the effective sequence number calculation, and use the true number of sequences instead. this will usually reduce the sensitivity of the final model (so don't do it without good reason!). like, seriously, don't just yolo it. 🚨
  • --nucleic β€” forces the alignment to be interpreted as nucleic acid sequence, either RNA or DNA. normally HMMER autodetects whether the alignment is protein or DNA, but sometimes alignments are so small that autodetection is ambiguous. see --amino. 🧬
  • --null <f> β€” read a null model from <f>. the default for protein is to use average amino acid frequencies from Swissprot 34 and p1 = 350/351; for nucleic acid, the default is to use 0.25 for each base and p1 = 1000/1001. for documentation of the format of the null model file and further explanation of how the null model is used, see the User's Guide. null but make it fashion. πŸ•³οΈ
  • --pam <f> β€” apply a heuristic PAM- (substitution matrix-) based prior on match emission probabilities instead of the default mixture Dirichlet. the substitution matrix is read from <f>. see --pamwgt. the default Dirichlet state transition prior and insert emission prior are unaffected. therefore in principle you could combine --prior with --pam but this isn't recommended, as it hasn't been tested. ( --pam itself hasn't been tested much!) so like, proceed with caution, bestie. ⚠️
  • --pamwgt <x> β€” controls the weight on a PAM-based prior. only has effect if the --pam option is also in use. <x> is a positive real number, 20.0 by default. <x> is the number of "pseudocounts" contriubuted (yes, that's the typo in the original, and we're keeping it πŸ’€) by the heuristic prior. very high values of <x> can force a scoring system that is entirely driven by the substitution matrix, making HMMER somewhat approximate Gribskov profiles. it's giving "matrix said jump" and HMMER said "how high". πŸ“Š
  • --pbswitch <n> β€” for alignments with a very large number of sequences, the GSC, BLOSUM, and Voronoi weighting schemes are slow; they're O(N^2) for N sequences. Henikoff position-based weights (PB weights) are more efficient. at or above a certain threshold sequence number <n>, hmm2build will switch from GSC, BLOSUM, or Voronoi weights to PB weights. to disable this switching behavior (at the cost of compute time), set <n> to be something larger than the number of sequences in your alignment. <n> is a positive integer; the default is 1000. speed vs. vibes, you choose. ⚑
  • --prior <f> β€” read a Dirichlet prior from <f>, replacing the default mixture Dirichlet. the format of prior files is documented in the User's Guide, and an example is given in the Demos directory of the HMMER distribution. custom priors are a whole personality. πŸŽ€
  • --swentry <x> β€” controls the total probability that is distributed to local entries into the model, versus starting at the beginning of the model as in a global alignment. <x> is a probability from 0 to 1, and by default is set to 0.5. higher values of <x> mean that hits that are fragments on their left (N or 5'-terminal) side will be penalized less, but complete global alignments will be penalized more. lower values of <x> mean that fragments on the left will be penalized more, and global alignments on this side will be favored. this option only affects the configurations that allow local alignments, e.g. -s and -f; unless one of these options is also activated, this option has no effect. you have independent control over local/global alignment behavior for the N/C (5'/3') termini of your target sequences using --swentry and --swexit. left side, right side, you decide. ↔️
  • --swexit <x> β€” controls the total probability that is distributed to local exits from the model, versus ending an alignment at the end of the model as in a global alignment. <x> is a probability from 0 to 1, and by default is set to 0.5. higher values of <x> mean that hits that are fragments on their right (C or 3'-terminal) side will be penalized less, but complete global alignments will be penalized more. lower values of <x> mean that fragments on the right will be penalized more, and global alignments on this side will be favored. this option only affects the configurations that allow local alignments, e.g. -s and -f; unless one of these options is also activated, this option has no effect. you have independent control over local/global alignment behavior for the N/C (5'/3') termini of your target sequences using --swentry and --swexit. the sequel to --swentry, and it ate. πŸ’…
  • --verbose β€” print more possibly useful stuff, such as the individual scores for each sequence in the alignment. sometimes you just want the tea. β˜•
  • --wblosum β€” use the BLOSUM filtering algorithm to weight the sequences, instead of the default. cluster the sequences at a given percentage identity (see --idlevel); assign each cluster a total weight of 1.0, distributed equally amongst the members of that cluster. fair and square. βš–οΈ
  • --wgsc β€” use the Gerstein/Sonnhammer/Chothia ad hoc sequence weighting algorithm. this is already the default, so this option has no effect (unless it follows another option in the --w family, in which case it overrides it). it's the default for a reason, bestie. πŸ‘‘
  • --wme β€” use the Krogh/Mitchison maximum entropy algorithm to "weight" the sequences. this supersedes the Eddy/Mitchison/Durbin maximum discrimination algorithm, which gives almost identical weights but is less robust. ME weighting seems to give a marginal increase in sensitivity over the default GSC weights, but takes a fair amount of time. so, like, it's a little extra but it's worth it? maybe? πŸ€”
  • --wnone β€” turn off all sequence weighting. sometimes you just want the raw, unweighted truth. periodt. 🚫
  • --wpb β€” use the Henikoff position-based weighting scheme. efficient and iconic. ✨
  • --wvoronoi β€” use the Sibbald/Argos Voronoi sequence weighting algorithm in place of the default GSC weighting. fancy geometry vibes. πŸ”·

πŸ‘€ SEE ALSO πŸ‘€

  • Master man page, with full list of and guide to the individual man pages: see hmmer2(1).
  • For complete documentation, see the user guide (ftp://selab.janelia.org/pub/software/hmmer/2.3.2/Userguide.pdf); or see the HMMER web page, http://hmmer.janelia.org/.

Copyright (C) 1992-2003 HHMI/Washington University School of Medicine. Freely distributed under the GNU General Public License (GPL). See the file COPYING in your distribution for details on redistribution conditions.


πŸ’– AUTHOR πŸ’–

Sean Eddy
HHMI/Dept. of Genetics
Washington Univ. School of Medicine
4566 Scott Ave.
St Louis, MO 63110 USA
http://www.genetics.wustl.edu/eddy/

and that's the whole vibe, bestie πŸ’– this was hmm2build(1) from HMMER 2.3.2, dated Oct 2003. go build some HMMs and slay. 🫢