hmmsearch(1)

πŸ“¦
version 3.4 Β· 2 versions
, in debian trixie, nixos 26.05, nixpkgs unstable, ubuntu noble, ubuntu resolute, ubuntu stonking

hmmsearch(1) β€” HMMER Manual πŸ’–

okay bestie, it's giving "search profile(s) against a sequence database" and this is the HMMER Manual page for hmmsearch(1). I'm gonna spill every flag, every default, every caveat β€” no gatekeeping, fr fr.


✨ NAME ✨

hmmsearch β€” search profile(s) against a sequence database

πŸ¦‹ SYNOPSIS πŸ¦‹

hmmsearch [options] hmmfile seqdb

πŸ’… DESCRIPTION πŸ’…

hmmsearch is literally used to search one or more profiles against a sequence database. For each profile in hmmfile, you use that query profile to search the target database of sequences in seqdb, and it outputs ranked lists of the sequences with the most significant matches to the profile. Wanna build profiles from multiple alignments? See hmmbuild.

Either the query hmmfile or the target seqdb may be '-' (a dash character), and in that case the query profile or target database input will be read from a stdin pipe instead of from a file.

bestie, only one input source can come through stdin, not both. That's the rule.

An exception is that if the hmmfile contains more than one profile query, then seqdb cannot come from stdin, because we can't rewind the streaming target database to search it with another profile.

The output format is designed to be human-readable, but it's often so voluminous that reading it is impractical, and parsing it is a pain. The --tblout and --domtblout options save output in simple tabular formats that are concise and easier to parse. The -o option allows redirecting the main output, including throwing it away in /dev/null. Iconic, honestly.

πŸ‘‘ OPTIONS πŸ‘‘

  • -h β€” Help; print a brief reminder of command line usage and all available options.

πŸŽ€ OPTIONS FOR CONTROLLING OUTPUT πŸŽ€

  • -o <f> β€” if you want the main human-readable output to go into file <f> instead of the default stdout, this is the one.
  • -A <f> β€” saves a multiple alignment of every significant hit (the ones that satisfy inclusion thresholds) into file <f>.
  • --tblout <f> β€” writes a simple tabular, space-delimited file that summarizes the per-target output, with one data line for each homologous target sequence found.
  • --domtblout <f> β€” writes a simple tabular, space-delimited file that summarizes the per-domain output, with one data line for each homologous domain detected in a query sequence for each homologous model.
  • --acc β€” use accessions instead of names in the main output, where available for profiles and/or sequences.
  • --noali β€” drops the alignment section from the main output. Huge output-volume saver.
  • --notextw β€” unlimits how long each line in the main output can be. Default is a 120-character-per-line limit, which keeps things clean on terminals and in editors, but can truncate target profile description lines.
  • --textw <n> β€” sets the main output's line length limit to <n> characters per line. Default is 120.

πŸ“Š OPTIONS CONTROLLING REPORTING THRESHOLDS πŸ“Š

Reporting thresholds control which hits are reported in output files (the main output, --tblout, and --domtblout). Sequence hits and domain hits are ranked by statistical significance (E-value), and output is generated in two sections called per-target and per-domain output. In per-target output, by default, all sequence hits with an E-value <= 10 are reported. In the per-domain output, for each target that has passed per-target reporting thresholds, all domains satisfying per-domain reporting thresholds are reported. By default, these are domains with conditional E-values of <= 10. The following options let you change the default E-value reporting thresholds, or use bit score thresholds instead.

  • -E <x> β€” in per-target output, report target sequences with an E-value of <= <x>. Default is 10.0, which means on average about 10 false positives will be reported per query, so you can see the top of the noise and decide for yourself if it's really noise.
  • -T <x> β€” instead of E-value thresholding per-profile output, report target sequences with a bit score of >= <x>.
  • --domE <x> β€” in per-domain output, for target sequences that already satisfied the per-profile reporting threshold, report individual domains with a conditional E-value of <= <x>. Default is 10.0. A conditional E-value means the expected number of additional false positive domains in the smaller search space of those comparisons that already satisfied the per-target reporting threshold (and thus must have at least one homologous domain already).
  • --domT <x> β€” instead of E-value thresholding per-domain output, report domains with a bit score of >= <x>.

πŸ’– OPTIONS FOR INCLUSION THRESHOLDS πŸ’–

Inclusion thresholds are stricter than reporting thresholds. Inclusion thresholds control which hits are considered reliable enough to be included in an output alignment or a subsequent search round, or marked as significant ("!") as opposed to questionable ("?") in domain output.

  • --incE <x> β€” use an E-value of <= <x> as the per-target inclusion threshold. Default is 0.01, meaning on average about 1 false positive would be expected in every 100 searches with different query sequences.
  • --incT <x> β€” instead of E-values, use a bit score of >= <x> as the per-target inclusion threshold. By default this option is unset.
  • --incdomE <x> β€” use a conditional E-value of <= <x> as the per-domain inclusion threshold, in targets that already satisfied the overall per-target inclusion threshold. Default is 0.01.
  • --incdomT <x> β€” instead of E-values, use a bit score of >= <x> as the per-domain inclusion threshold.

🌟 OPTIONS FOR MODEL-SPECIFIC SCORE THRESHOLDING 🌟

Curated profile databases may define specific bit score thresholds for each profile, superseding any thresholding based on statistical significance alone.

To use these options, the profile must contain the appropriate (GA, TC, and/or NC) optional score threshold annotation; this is picked up by hmmbuild from Stockholm format alignment files. Each thresholding option has two scores: the per-sequence threshold <x1> and the per-domain threshold <x2> These act as if -T <x1> --incT <x1> --domT <x2> --incdomT <x2> has been applied specifically using each model's curated thresholds.

  • --cut_ga β€” use the GA (gathering) bit scores in the model to set per-sequence (GA1) and per-domain (GA2) reporting and inclusion thresholds. GA thresholds are generally considered the reliable curated thresholds defining family membership; for example, in Pfam, these thresholds define what gets included in Pfam Full alignments based on searches with Pfam Seed models.
  • --cut_nc β€” use the NC (noise cutoff) bit score thresholds in the model to set per-sequence (NC1) and per-domain (NC2) reporting and inclusion thresholds. NC thresholds are generally considered the score of the highest-scoring known false positive.
  • --cut_tc β€” use the TC (trusted cutoff) bit score thresholds in the model to set per-sequence (TC1) and per-domain (TC2) reporting and inclusion thresholds. TC thresholds are generally considered the score of the lowest-scoring known true positive that is above all known false positives.

πŸ”₯ OPTIONS CONTROLLING THE ACCELERATION PIPELINE πŸ”₯

HMMER3 searches are accelerated in a three-step filter pipeline: the MSV filter, the Viterbi filter, and the Forward filter. The first filter is the fastest and most approximate; the last is the full Forward scoring algorithm. There is also a bias filter step between MSV and Viterbi. Targets that pass all the steps in the acceleration pipeline are then subjected to postprocessing -- domain identification and scoring using the Forward/Backward algorithm.

Changing filter thresholds only removes or includes targets from consideration; changing filter thresholds does not alter bit scores, E-values, or alignments, all of which are determined solely in postprocessing.

  • --max β€” turn off all filters, including the bias filter, and run full Forward/Backward postprocessing on every target. More sensitivity, but at a large cost in speed.
  • --F1 <x> β€” set the P-value threshold for the MSV filter step. Default is 0.02, meaning roughly 2% of the highest scoring nonhomologous targets are expected to pass the filter.
  • --F2 <x> β€” set the P-value threshold for the Viterbi filter step. Default is 0.001.
  • --F3 <x> β€” set the P-value threshold for the Forward filter step. Default is 1e-5.
  • --nobias β€” turn off the bias filter. More sensitivity, but can come at a high cost in speed, especially if the query has biased residue composition (like a repetitive sequence region, or if it's a membrane protein with large regions of hydrophobicity). Without the bias filter, too many sequences may pass the filter with biased queries, leading to slower than expected performance as the computationally intensive Forward/Backward algorithms shoulder an abnormally heavy load.

✨ OTHER OPTIONS ✨

okay bestie, we're in the home stretch! these are the extra little knobs and dials that don't fit anywhere else, but they're still super important. no cap. πŸ’…

  • --nonull2 β€” turns off the null2 score corrections for biased composition. it's giving "i trust my sequences, no bias here" energy. ✨
  • -Z <x> β€” assert that the total number of targets in your searches is <x>, for the purposes of per-sequence E-value calculations, rather than the actual number of targets seen. like, manifesting a different denominator, bestie. πŸ’–
  • --domZ <x> β€” assert that the total number of targets in your searches is <x>, for the purposes of per-domain conditional E-value calculations, rather than the number of targets that passed the reporting thresholds. it's the domain-level version of the same vibe. πŸ¦‹
  • --seed <n> β€” set the random number seed to <n>. some steps in postprocessing require Monte Carlo simulation. the default is to use a fixed seed (42), so that results are exactly reproducible. any other positive integer will give different (but also reproducible) results. a choice of 0 uses a randomly chosen seed. so if you want chaos, choose 0; if you want your ex to get the same results, keep 42. 😭
  • --tformat <s> β€” assert that target sequence file seqfile is in format <s>, bypassing format autodetection. common choices for <s> include: fasta, embl, genbank. alignment formats also work; common choices include: stockholm, a2m, afa, psiblast, clustal, phylip. for more information, and for codes for some less common formats, see main documentation. the string <s> is case-insensitive (fasta or FASTA both work). so don't stress about caps, she's chill. πŸŽ€
  • --cpu <n> β€” set the number of parallel worker threads to <n>. on multicore machines, the default is 2. you can also control this number by setting an environment variable, HMMER_NCPU. there is also a master thread, so the actual number of threads that HMMER spawns is <n>+1. this option is not available if HMMER was compiled with POSIX threads support turned off. so if you're on a big girl machine, go off. πŸ‘‘
  • --stall β€” for debugging the MPI master/worker version: pause after start, to enable the developer to attach debuggers to the running master and worker(s) processes. send SIGCONT signal to release the pause. (under gdb: (gdb) signal SIGCONT) (only available if optional MPI support was enabled at compile-time.) it's giving "hold my hand while i debug" energy. 🫢
  • --mpi β€” run under MPI control with master/worker parallelization (using mpirun, for example, or equivalent). only available if optional MPI support was enabled at compile-time. if you have a cluster, this is your moment. πŸ”₯

🌈 SEE ALSO 🌈

  • see hmmer(1) for a master man page with a list of all the individual man pages for programs in the HMMER package. like a little directory of besties. πŸ’œ
  • for complete documentation, see the user guide that came with your HMMER distribution (Userguide.pdf); or see the HMMER web page (http://hmmer.org/). the userguide is the real MVP, no cap. πŸ“š

copyright (C) 2023 Howard Hughes Medical Institute. freely distributed under the BSD open source license. so you can share the love, legally. 🫢

for additional information on copyright and licensing, see the file called COPYRIGHT in your HMMER source distribution, or see the HMMER web page (http://hmmer.org/). it's all there, bestie. πŸ’…


πŸ‘‘ AUTHOR πŸ‘‘

http://eddylab.org


and that's the whole page! this was HMMER 3.4, from Aug 2023, for hmmsearch(1). now go forth and search those HMMs, you absolute icon. periodt. πŸ’–βœ¨πŸ¦‹

πŸ“¦ where this page comes from