Powerful biology shouldn't require a command line
It started the same way HMM Homologue Finder did: my lab found a gene that had been hiding in plain sight. Once you've had that moment — realizing an interesting, important gene family was sitting right there, unnoticed, because nobody had gone looking for its distant relatives — you start wanting to help other scientists have it too. Profile HMMs are how you go looking. Instead of asking whether one sequence resembles another, you build a statistical model of a whole family and hunt for the divergent members a plain BLAST search quietly walks past.
The technique is beautiful. The plumbing is miserable. To actually run it, you chain together half a dozen command-line tools, each with its own conventions and flags. Align with MAFFT. Trim with trimAl. Build with hmmbuild, search with hmmsearch. If the database is nucleotide, translate it first — six frames if you're thorough, Prodigal if you're in a hurry. Parse the tblout files. Write a script to classify hits. Run IQ-TREE for a tree. And somewhere around the fourth tool, you lose track of exactly what you ran.
I built a command-line version for people who live in that world — it's called HMM Homologue Finder, and if you're comfortable at a prompt, it's for you. But here's the thing I kept bumping into: most of the brilliant biologists I know do not live on the command line. A talented bench scientist with a beautifully curated seed alignment should not need shell scripting to search it against INPHARED. The plumbing was keeping exactly the right people out.
The HMM Discovery App is a Shiny app in Python. You open it in a browser, drop in your seeds, and click through nine guided steps: load, align, build the HMM, search databases, validate recovery, refine, review, analyze, export. You never write Python, R, or a shell command. Under the hood it's orchestrating the same trusted tools you'd have run by hand — it just remembers the flags, the versions, and the order for you. Nucleotide searches offer exhaustive six-frame ORF scanning as a first-class mode, because the genes I care about are often the ones a conventional gene caller skips. Hits land in four honest confidence tiers, with the reasoning attached, because triage is the real job.
The part I'm quietly proudest of is the export. Every run can produce a reproducible ZIP — hit tables, synteny GFF3, an HTML report, and a METHODS_TEXT.txt with the methods paragraph already written, ready to paste into a manuscript. Reproducibility isn't a feature I bolted on. It's the whole reason the thing exists.
One honest note: I build these tools with AI as my implementation partner. I'm a scientist who has gotten good at building things with AI — the biological decisions are mine, the frustration that started it is mine, and the code got written far faster than I could have managed alone. That's not a caveat I'm embarrassed by. It's just how a curious researcher turns a real annoyance into a working, reproducible tool now. And this one runs.