Assign GO terms, KEGG orthologs, Pfam/InterPro domains, EC numbers, and product names to predicted proteins using eggNOG-mapper (orthology), InterProScan (domain signatures), and KofamScan (KEGG), routing specialized functions to dbCAN/antiSMASH/AMRFinderPlus/SignalP. The orienting principle: a functional label is a transferred hypothesis whose confidence is capped by its weakest link, and the goal is not "maximally annotated" but "honestly tiered" - prefer curated/orthology donors, demote specificity as identity/coverage fall, separate "domain present" from "function known", and keep the honest hypothetical fraction rather than over-annotating under pressure.
# eggNOG-mapper (pin the version for reproducibility) + DB
conda install -c bioconda eggnog-mapper=2.1.15
download_eggnog_data.py --data_dir /path/to/eggnog_db -y # ~44 GB (DIAMOND DB installed by default; -D skips it)
# InterProScan (Java 11+, tens of GB of member-DB data)
conda install -c bioconda interproscan
# KEGG (free route) + GFF surgery
conda install -c bioconda kofamscan agat
# Python utilities
pip install pandas biopython
Tell your AI agent what you want to do: - "Add functional annotations to my predicted proteins with eggNOG-mapper and InterProScan" - "Annotate KEGG orthologs with KofamScan (KEGG is paywalled, so use the free route)" - "How much of my genome is honestly hypothetical, and is my named fraction too high for this taxon?" - "Annotate CAZymes / AMR genes / signal peptides correctly, not from generic Pfam hits"
"Run eggNOG-mapper with tax_scope auto and InterProScan with GO terms, then merge keeping each tool's evidence in its own namespace and preferring the orthology product name."
"My proteins are from a deep-branching uncultured lineage - annotate honestly and tell me the hypothetical fraction rather than forcing names."
"Annotate CAZymes with dbCAN (consensus of >=2 tools) - don't read substrate off a plain GH domain."
"Find AMR genes including resistance point mutations with AMRFinderPlus, not generic homology."
"I'm about to run GO enrichment on these IEA annotations - what's the circularity risk and how do I control for it?"
"A distant homolog got a specific substrate name - should I demote it to the superfamily level?"
--tax_scope auto and InterProScan (domains + GO + pathways)1.1.1.-; specific name -> superfamily; whole-protein -> per-domain. There is no safe identity in mechanistically-diverse superfamilies (enolase, amidohydrolase, TIM-barrel).KEGG_ko; never scrape the REST API for whole genomes. A "complete module" is a reconstruction, not proof of flux.