phmmer(1)
β¨ phmmer(1) β the HMMER Manual, but make it a group chat π
okay so bestie, this is phmmer(1) from the HMMER Manual, and it is so much less scary than it looks. grab a strawberry π, we're doing this.
πΈ NAME πΈ
phmmer β search protein sequence(s) against a protein sequence database
likeβ¦ it hunts. for proteins. in a database. that's the whole vibe. π₯
π SYNOPSIS π
phmmer [options] seqfile seqdb
π¦ DESCRIPTION π¦
So phmmer is the girl who takes one or more query protein sequences and searches them against a protein sequence database. For every single query sequence in seqfile, she uses that sequence to search the target database of sequences in seqdb, and then she outputs ranked lists of the sequences that matched the query most significantly. ranking? she invented it. π
Now here's the tea, and it's important tea: either the query seqfile or the target seqdb can be '-' β that's a dash character β and if it is, the query sequences or the target database input gets read from a <stdin> pipe instead of from a file. But only one input source can come through <stdin>, not both. pick a lane bestie π
And there's one exception to that, which you need to know: if seqfile contains more than one query sequence, then seqdb cannot come from <stdin>. Why? because we can't rewind the streaming target database to search it again with another query. like, you can't rewind a stream. that's not a thing. sorry. π
The output format is designed to be human-readable, which is cute, but honestly it's often so voluminous that actually reading it is impractical and parsing it is a whole pain. so: the --tblout and --domtblout options save output in simple tabular formats that are concise and way easier to parse. and the -o option lets you redirect the main output β including throwing it away into /dev/null, which is giving "I don't want to see it but I still want it to happen." iconic. β¨
π OPTIONS π
-hβ Help! prints a brief reminder of command line usage plus every single available option. your safety net, bestie π«Ά
π OPTIONS FOR CONTROLLING OUTPUT π
-o <f>β send the main human-readable output to a file<f>instead of the defaultstdout. bye bye terminal scroll π-A <f>β save a multiple alignment of all significant hits (the ones that satisfy inclusion thresholds) to the file<f>, in Stockholm format. fancy.--tblout <f>β save a simple tabular (space-delimited) file summarizing the per-target output, with one data line per homologous target sequence found.--domtblout <f>β save a simple tabular (space-delimited) file summarizing the per-domain output, with one data line per homologous domain detected in a query sequence for each homologous model.--accβ use accessions instead of names in the main output, wherever accessions are available for profiles and/or sequences.--noaliβ omit the alignment section from the main output. this can greatly reduce the output volume, so if your output is enormous and you're crying, this is your girl.--notextwβ unlimit the length of each line in the main output. the default is a limit of 120 characters per line, which helps display the output cleanly on terminals and in editors β but it can truncate target profile description lines. tradeoffs, babes.--textw <n>β set the main output's line length limit to<n>characters per line. the default is120.
π₯ OPTIONS CONTROLLING SCORING SYSTEM π₯
okay so the probability model in phmmer is constructed by inferring residue probabilities from a standard 20x20 substitution score matrix, plus two additional parameters for position-independent gap open and gap extend probabilities. very science. very slay. π§
--popen <x>β set the gap open probability for a single sequence query model to<x>. the default is0.02. and<x>must be>= 0and< 0.5. respect the bounds bestie.--pextend <x>β set the gap extend probability for a single sequence query model to<x>. the default is0.4. and<x>must be>= 0and< 1.0.--mx <s>β obtain residue alignment probabilities from the built-in substitution matrix named<s>. several standard matrices are built-in and do not need to be read from files. the matrix name<s>can bePAM30,PAM70,PAM120,PAM240,BLOSUM45,BLOSUM50,BLOSUM62,BLOSUM80, orBLOSUM90. Only one of the--mxand--mxfileoptions may be used.--mxfile mxfileβ obtain residue alignment probabilities from the substitution matrix in the filemxfile. the default score matrix isBLOSUM62(this matrix is internal to HMMER and does not have to be available as a file). the format of a substitution matrixmxfileis the standard format accepted by BLAST, FASTA, and other sequence analysis software. seeftp.ncbi.nlm.nih.gov/blast/matrices/for example files. (the only exception: we require matrices to be square, so for DNA, use files like NCBI'sNUC.4.4, notNUC.4.2.) read the fine print, bestie π
π OPTIONS CONTROLLING REPORTING THRESHOLDS π
So reporting thresholds control which hits get reported in output files β that's 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, those 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. pick your fighter π
-E <x>β in the per-target output, report target sequences with an E-value of<= <x>. the default is10.0, meaning that 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. it's giving "look at the mess, then judge the mess." π-T <x>β instead of thresholding per-profile output on E-value, report target sequences with a bit score of>= <x>.--domE <x>β in the per-domain output, for target sequences that have already satisfied the per-profile reporting threshold, report individual domains with a conditional E-value of<= <x>. the default is10.0. and 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). yes that's a mouthful, but it's the real definition, periodt.--domT <x>β instead of thresholding per-domain output on E-value, report domains with a bit score of>= <x>.
π OPTIONS CONTROLLING INCLUSION THRESHOLDS π
Inclusion thresholds are stricter than reporting thresholds. they control which hits get included in any output multiple alignment (that's the -A option) and which domains get marked as significant ("!") as opposed to questionable ("?") in domain output. so basically: reporting is "I'll look at it," inclusion is "I'm committing." π
--incE <x>β use an E-value of<= <x>as the per-target inclusion threshold. the default is0.01, meaning that on average, about 1 false positive would be expected in every 100 searches with different query sequences. cute, rare, exclusive.--incT <x>β instead of using E-values for setting the inclusion threshold, 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 have already satisfied the overall per-target inclusion threshold. the default is0.01.--incdomT <x>β instead of using E-values, use a bit score of>= <x>as the per-domain inclusion threshold. by default this option is unset.
β OPTIONS CONTROLLING THE ACCELERATION PIPELINE β
okay this part is the main character part. 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 β slowest but most accurate. there's also a bias filter step between MSV and Viterbi. targets that pass all the steps in the acceleration pipeline then get subjected to postprocessing β domain identification and scoring using the Forward/Backward algorithm. she does not skip steps. she does not miss. π
Essentially the only free parameters that control HMMER's heuristic filters are the P-value thresholds controlling the expected fraction of nonhomologous sequences that pass the filters. so:
- set the default thresholds higher β a higher proportion of nonhomologous sequence passes β sensitivity goes up, speed goes down. ππ
- set lower P-value thresholds β a smaller proportion passes β sensitivity goes down, speed goes up. πποΈ
- set a filter's P-value threshold to
1.0β it passes all sequences, and effectively disables the filter. no filter, no problem, no speed. π
And this is the part people get wrong, so listen: 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. so don't come for the scores, the scores didn't do anything. π
--maxβ Maximum sensitivity. turn off all filters, including the bias filter, and run full Forward/Backward postprocessing on every target. this increases sensitivity slightly, at a large cost in speed. go big or go home, but know what you're paying. π₯--F1 <x>β First filter threshold; set the P-value threshold for the MSV filter step. the default is0.02, meaning that roughly 2% of the highest scoring nonhomologous targets are expected to pass the filter.--F2 <x>β Second filter threshold; set the P-value threshold for the Viterbi filter step. the default is0.001.--F3 <x>β Third filter threshold; set the P-value threshold for the Forward filter step. the default is1e-5.--nobiasβ turn off the bias filter. this increases sensitivity somewhat, but it can come at a high cost in speed, especially if the query has biased residue composition (such as 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 when you have biased queries, which leads to slower than expected performance as the computationally intensive Forward/Backward algorithms have to shoulder an abnormally heavy load. she's strong but she's not a pack mule bestie π
β¨ OPTIONS CONTROLLING E-VALUE CALIBRATION β¨
okay so bestie, to estimate the location parameters for the expected score distributions β for MSV filter scores, Viterbi filter scores, and Forward scores β you need three short random sequence simulations. that's the whole plot. no cap. β¨
--EmL <n>β sets the sequence length in the simulation that estimates the location parameter mu for MSV filter E-values. default is200. π--EmN <n>β sets the number of sequences in the simulation that estimates the location parameter mu for MSV filter E-values. default is200. β¨--EvL <n>β sets the sequence length in the simulation that estimates the location parameter mu for Viterbi filter E-values. default is200. π¦--EvN <n>β sets the number of sequences in the simulation that estimates the location parameter mu for Viterbi filter E-values. default is200. πΈ--EfL <n>β sets the sequence length in the simulation that estimates the location parameter tau for Forward E-values. default is100. π--EfN <n>β sets the number of sequences in the simulation that estimates the location parameter tau for Forward E-values. default is200. π--Eft <x>β sets the tail mass fraction to fit in the simulation that estimates the location parameter tau for Forward evalues. default is0.04. π₯
π OTHER OPTIONS π
--nonull2β turns off the null2 score corrections for biased composition. lowkey just switches them off. π-Z <x>β asserts 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. π--domZ <x>β asserts 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. π--seed <n>β seeds the random number generator with<n>, an integer>= 0. if<n>is>0, any stochastic simulations will be reproducible; the same command will give the same results. if<n>is0, the random number generator is seeded arbitrarily, and stochastic simulations will vary from run to run of the same command. the default seed is42. β--qformat <s>β asserts that input 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. phmmer always uses a single sequence query to start its search, so when the input seqfile is an alignment, phmmer reads it one unaligned query sequence at a time, not as an alignment. for more information, and for codes for some less common formats, see main documentation. the string<s>is case-insensitive (fastaorFASTAboth work). π§--tformat <s>β asserts that target sequence database seqdb is in format<s>, bypassing format autodetection. see--qformatabove for list of accepted format codes for<s>. π--cpu <n>β sets the number of parallel worker threads to<n>. on multicore machines, the default is2. 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. π«Ά--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. sendSIGCONTsignal to release the pause. (under gdb:(gdb) signal SIGCONT) (only available if optional MPI support was enabled at compile-time.) π--mpiβ run under MPI control with master/worker parallelization (usingmpirun, for example, or equivalent). only available if optional MPI support was enabled at compile-time. π₯
π 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.
for complete documentation, see the user guide that came with your HMMER distribution (Userguide.pdf); or see the HMMER web page (http://hmmer.org/). πΈ
Β© COPYRIGHT Β©
copyright (C) 2023 Howard Hughes Medical Institute. freely distributed under the BSD open source license. π
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/). β¨
βοΈ AUTHOR βοΈ
http://eddylab.org β that's the author link, bestie. iconic. π
and that's the whole vibe from HMMER 3.4, Aug 2023, phmmer(1) β slay, bye π π«Άπ
π¦ where this page comes from
- debian trixie: hmmer 3.4+dfsg-2 Β· GPL-3.0-only
- nixos 26.05: hmmer 3.4
- nixpkgs unstable: hmmer 3.4
- ubuntu noble: hmmer 3.4+dfsg-2 Β· GPL-3.0-only
- ubuntu resolute: hmmer 3.4+dfsg-2 Β· GPL-3.0-only
- ubuntu stonking: hmmer 3.4+dfsg-3 Β· GPL-3.0-only
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms