Reference databases¶
FunFlux needs reference databases in addition to its conda environments. You provide three of
them before the first run: NCBI core_nt with its taxonomy files (not read in contigs mode
without the screen), the eggNOG-mapper data and InterProScan. The workflow, BUSCO and Medaka fetch
the rest, on the computer that runs Snakemake, except BUSCO with auto, which downloads inside
each job. snakemake download_all fetches all of it in advance, except BUSCO's data with auto,
as described in
Preparation, on a computer with internet.
The table lists every database with its configuration key, when that key is required, who provides the data, its version and its size.
| Database | Config key | Key required | Provided by | Version | Size |
|---|---|---|---|---|---|
NCBI core_nt and taxonomy files |
directories.blast_db; parameters.nt_version names the database |
with the contamination and mitochondrion screen: illumina, longread, hybrid, and contigs with parameters.contigs.screen: true |
you | NCBI's current build; tested with the build of 11 July 2026 | 264 GB |
| eggNOG-mapper data | directories.eggnog_db |
yes | you | eggNOG 5.0.2 | 48 GB |
| InterProScan member databases | files.iprscan |
yes | you, with InterProScan | 5.78-109.0 | 7.0 GB download, 50 GB installed |
| funannotate database | directories.funannotate_db, links.funannotate_link |
yes | the workflow, when the folder holds no database | funannotate_db_1.8.17_2026-10-08 |
2.1 GB archive; 6.1 GB unpacked, 8.1 GB with the archive |
| UNITE | links.unite_its_link, or directories.unite_db |
the link, unless directories.unite_db is set |
the workflow, once per output folder; or your copy | UNITE release for eukaryotes, 19.02.2025 | 35.7 MB download, 207 MB unpacked |
| antiSMASH databases | directories.antismash_db |
no | the workflow, once per output folder; or your copy | as downloaded by antiSMASH 8.0.4 | 9.4 GB |
| Tiberius model | links.tiberius_model_link, parameters.tiberius.model_sha256 |
the link, unless parameters.tiberius.mode is off |
the workflow, once per output folder | the fungi model of 8 February 2026 |
30 MB download, 31 MB unpacked |
| Telomere repeat database | links.telomere_db_link, parameters.contig_summary.telomere_db_sha256 |
yes | the workflow, once per output folder | telo_database_v2.tsv of tidk, at the commit the template link names |
0.6 MB |
| UniVec, for the adapter screen | links.univec_link, parameters.contig_summary.univec_sha256 |
no (the template address is used when the key is missing) | the workflow, once per output folder | NCBI UniVec build 10.1; the 151 Illumina records are kept | 1.7 MB download, about 31 kB kept |
| ChroQueTas and the FungAMR database | links.chroquetas_link, parameters.amr.chroquetas_script_sha256, parameters.amr.chroquetas_db_sha256 |
only with parameters.amr.chroquetas: on (off by default) |
the workflow, once per output folder | ChroQueTas 1.0.1 and its database db-v20250811 (57 species) |
29 kB script, 137 kB archive; 2.5 MB unpacked |
| BUSCO lineage datasets | parameters.busco.lineage |
no (default auto) |
BUSCO, in every BUSCO job with auto; the workflow, once per output folder, for a named lineage |
odb12 | per archive, e.g. eukaryota_odb12 29 MB, hypocreales_odb12 275 MB |
| PhiX genome | links.phix_link |
in illumina and hybrid |
the workflow, once per output folder (download_phix) |
GCF_000819615.1 | 2 kB |
| Medaka model | parameters.longread.medaka_model, parameters.hybrid.medaka_model |
no (default auto) |
Medaka, during the model check, the first time a model is used | named, or worked out from the reads | not measured |
Sizes on disk are as du -h prints them, in powers of 1024. Download and archive sizes are the
byte counts the servers list, in decimal units. The databases you keep yourself take about 380 GB
with a local antiSMASH copy, and 264 GB of that is core_nt, which only the screen reads.
Terms used on this page
| taxonomy files | the files taxdb.btd and taxdb.bti, which give BLAST its organism names, and nodes.dmp and names.dmp, the NCBI taxonomy that BlobTools and the mitochondrion screen read; all beside core_nt |
| NOTE | a line starting [FunFlux] NOTE that reports something to check without stopping the run; read them after every dry run |
| funannotate database | the frozen snapshot of funannotate's data, such as Swiss-Prot, Pfam, the BUSCO set and stored AUGUSTUS models, downloaded once from Zenodo into directories.funannotate_db |
| stored AUGUSTUS model | the AUGUSTUS parameters trained earlier for one species, kept in trained_species/ of the funannotate database; named in column 4 of the annotation parameter table, they are used as they are |
| path repair | rule normalize_funannotate_db: it rewrites the absolute paths stored in the funannotate database to your folder, in place and without a lock, so start one run first |
| launch folder | the folder Snakemake is started from, normally the FunFlux repository; relative paths are read from it, and .snakemake/ is created there |
| BUSCO set | the BUSCO genes funannotate looks for to train SNAP, GlimmerHMM and, without a stored AUGUSTUS model, AUGUSTUS: dikarya (dikarya_odb9) unless parameters.prediction.busco_db names another |
| lineage dataset | the BUSCO gene set of one taxonomic group, such as hypocreales_odb12, for the completeness check; with lineage: auto, BUSCO chooses one by placing the genome |
NCBI core_nt and taxonomy files¶
The contamination and mitochondrion screen searches every contig against this database with
blastn -task megablast (rule blast_contigs). BlobTools reads the NCBI taxonomy from the same
folder (rule blob_json), so directories.blast_db must hold three kinds of files:
| Files | From | Used for |
|---|---|---|
core_nt.nal, core_nt.00.*, core_nt.01.*, ... |
update_blastdb.pl core_nt |
the search; parameters.nt_version (default core_nt) is the database name |
taxdb.btd, taxdb.bti |
taxdb.tar.gz |
organism names in the BLAST table; without them the name columns read N/A |
nodes.dmp, names.dmp |
taxdump.tar.gz |
the taxonomy tree and names BlobTools uses to assign a taxon to each contig; the mitochondrion screen also reads nodes.dmp, to tell whether its best mitochondrial hit is a fungus, an animal or a plant |
parameters.nt_version: nt selects the full nt database instead, if that is what the folder
holds. These commands download core_nt and the taxonomy files:
conda create -n blast -c conda-forge -c bioconda blast=2.16.0 # provides update_blastdb.pl
conda activate blast
mkdir -p /path/to/blast_db && cd /path/to/blast_db
update_blastdb.pl --decompress --num_threads 4 core_nt
wget -c https://ftp.ncbi.nlm.nih.gov/blast/db/taxdb.tar.gz && tar -zxf taxdb.tar.gz
wget -c https://ftp.ncbi.nlm.nih.gov/pub/taxonomy/taxdump.tar.gz && tar -zxf taxdump.tar.gz
update_blastdb.pl checks every archive against the .md5 file NCBI publishes beside it, and
--decompress unpacks each archive and deletes it. The build of 11 July 2026 has 80 volumes
(252 GB) and 12 GB of database-wide index files, and the taxonomy files add 0.8 GB. FunFlux v2
does not read nucl_gb.accession2taxid (13 GB), which the v1 instructions also downloaded.
Two commands check the database and the taxonomy files:
BLASTDB=/path/to/blast_db blastdbcmd -db core_nt -info | head -4
ls /path/to/blast_db/taxdb.btd /path/to/blast_db/taxdb.bti /path/to/blast_db/nodes.dmp /path/to/blast_db/names.dmp
For the build of 11 July 2026, the first command prints:
Database: Core nucleotide BLAST database
128,460,233 sequences; 947,384,893,387 total bases
Date: Jul 11, 2026 1:17 AM Longest sequence: 98,200,793 bases
A dry run that passes does not show that the volumes and taxdb are in place
A missing folder is noticed before any job starts, with a NOTE. A missing nodes.dmp or
names.dmp is noticed in a dry run with the screen on, which stops with
MissingInputException in rule blob_json (blob_guide_json in hybrid mode) because both files
are inputs of those rules.
Missing volumes or a missing taxdb are noticed only when BLAST runs, which first reads them.
eggNOG-mapper data¶
FunFlux runs eggNOG-mapper 2.1.13, which reads the data of eggNOG 5.0.2. The data for eggnog-mapper 3.x (eggNOG 7) do not work with it, so download the data with eggNOG-mapper 2.1.13 itself:
conda create -n eggnog-mapper -c conda-forge -c bioconda eggnog-mapper=2.1.13
conda activate eggnog-mapper
mkdir -p /path/to/eggnog_db
download_eggnog_data.py --data_dir /path/to/eggnog_db -y
The script fetches eggnog.db, eggnog.taxa.db and the DIAMOND database eggnog_proteins.dmnd
from eggnogdb.embl.de with wget, which the environment contains, and -y answers its
questions with yes. The Pfam, MMseqs2 and HMMER databases are downloaded only on request (-P,
-M, -H). FunFlux does not use them, because it runs emapper.py -m diamond.
To check the download, list the folder:
ls -lh /path/to/eggnog_db
# eggnog.db 39G, eggnog_proteins.dmnd 8.7G, eggnog.taxa.db 266M, eggnog.taxa.db.traverse.pkl 6.4M
FunFlux prints a NOTE before any job starts when the folder does not exist. The files themselves
are first read when eggnog_annotation runs, after gene prediction.
funannotate database snapshot¶
funannotate needs its own database. FunFlux does not build one with funannotate setup but takes
a frozen snapshot from Zenodo, funannotate_db_1.8.17_2026-10-08, record 23265189
(10.5281/zenodo.23265189). It was written on
8 October 2026 by funannotate setup -i all -b dikarya --wget with funannotate 1.8.17, the
version FunFlux runs. All versions of the funannotate database on Zenodo share the DOI
10.5281/zenodo.18271294, which leads to the newest.
The database holds the components below, with the versions to cite for the annotation databases.
Most of these versions are those funannotate wrote into the database index. The dikarya_odb9
row comes from the description file of that BUSCO set, and the row of the stored AUGUSTUS models
from the AUGUSTUS version that built the database. The Zenodo record also holds the versions as a
table, funannotate_db_1.8.17_2026-10-08.versions.tsv.
| Component | Version | Records |
|---|---|---|
| UniProtKB/Swiss-Prot | 2026_03 | 575,748 |
| Pfam | 38.2 | 30,134 |
| InterPro | 110.0 | 54,922 |
| Gene Ontology | 2026-07-26 | 48,340 |
| gene2product | 1.99 | 34,505 |
| dbCAN | HMMdb V11 (funannotate's index calls it 14.0) | 699 |
| MEROPS | 12.5 (the label funannotate 1.8.17 gives it) | 5,098 |
| MIBiG | 1.4 | 31,023 |
| repeat proteins | 1.0 | 11,950 |
| BUSCO outgroups | 1.0 | 8 in the index; outgroups/ holds the sets of 6 species |
BUSCO dikarya_odb9 |
2016-02-13 | 1,312 BUSCOs |
stored AUGUSTUS models, in trained_species/ (AUGUSTUS and other gene-finder parameters) |
from AUGUSTUS 3.5.0 | 166 |
Five databases are newer than in the previous snapshot (FunFlux v1)
The previous snapshot, funannotate_db_1.8.15_2025-12-15 (record 18271295, named for
funannotate 1.8.15), stays on Zenodo, and FunFlux v1 downloads it. A folder that already holds
it keeps it. To use the new snapshot, point directories.funannotate_db at a new, empty
folder, for the reasons given under Newer snapshots.
| Component | Previous snapshot (2025-12-15) |
|---|---|
| UniProtKB/Swiss-Prot | 2025_04, 573,661 records |
| Pfam | 38.0, 25,545 records |
| InterPro | 107.0, 49,674 records |
| Gene Ontology | 2025-10-10, 48,196 records |
| gene2product | 1.97, 34,471 records |
| MEROPS | the same file, labelled 12.0 |
dbCAN, MIBiG, repeat proteins, BUSCO outgroups, BUSCO dikarya_odb9, stored AUGUSTUS models |
the same |
The other components hold the same data. Because five databases are newer, the gene names, products, domains and GO terms of a new annotation can differ from those made with the previous snapshot. The gene models can differ too, because funannotate predict also aligns Swiss-Prot to the genome as protein evidence.
What the workflow does¶
Two steps prepare the funannotate database. It is downloaded once per database folder, and the path repair checks its stored paths in every new output folder.
| Step (name in the log) | When | What it does |
|---|---|---|
funannotate_db |
only while <funannotate_db>/funannotate-db-info.txt is missing |
downloads the archive named by links.funannotate_link and its .sha256 file from the same Zenodo record, checks the archive with sha256sum -c and unpacks it into the folder; archive and checksum file stay there. Log: logs/funannotate_db.log |
normalize_funannotate_db |
in every new output folder | the funannotate database stores absolute paths in funannotate-db-info.txt and trained_species/*/info.json; the step rewrites those that do not point into your folder and leaves correct files alone. Summary: 00.resources/funannotate_db_paths.normalized.json |
A checksum mismatch stops the run with
[FunFlux] funannotate_db: ... does not match its checksum file ..., so it was NOT unpacked.
Delete both files, the archive and its checksum file, and run again.
One run at a time until the paths are repaired
normalize_funannotate_db rewrites files inside the database folder, in place and without a
lock. Two runs that start at the same time on a database whose paths are not yet repaired can
damage it. Start one run and let it pass this step before you start the others on the same
folder. Once the paths are repaired, the step only reads the database. Keep the folder
writable until then.
Reach the folder under the same real path in every run. A run that sees it under another path,
as a second user or a second machine may, rewrites the stored paths. funannotate-db-info.txt
then changes, and the next run on any other output folder repeats the repair and every
annotation step after it.
Downloading it by hand¶
For a machine without internet access at run time, these commands take the same steps as rule
funannotate_db:
mkdir -p /path/to/funannotate_db && cd /path/to/funannotate_db
curl -L --fail -o funannotate_db_1.8.17_2026-10-08.tar.gz \
'https://zenodo.org/records/23265189/files/funannotate_db_1.8.17_2026-10-08.tar.gz?download=1'
curl -L --fail -o funannotate_db_1.8.17_2026-10-08.sha256 \
'https://zenodo.org/records/23265189/files/funannotate_db_1.8.17_2026-10-08.sha256?download=1'
sha256sum -c funannotate_db_1.8.17_2026-10-08.sha256 # funannotate_db_1.8.17_2026-10-08.tar.gz: OK
tar -xzf funannotate_db_1.8.17_2026-10-08.tar.gz --strip-components=1
ls funannotate-db-info.txt dikarya trained_species
Using the snapshot without FunFlux¶
The funannotate database also serves funannotate 1.8.17 on its own, once its stored paths are
rewritten the way normalize_funannotate_db does it:
mkdir -p /path/to/funannotate_db
tar -xzf funannotate_db_<version>_<date>.tar.gz --strip-components=1 -C /path/to/funannotate_db
cd /path/to/funannotate_db
OLD=$(head -n 1 funannotate-db-info.txt | cut -f 3 | xargs dirname)
sed -i "s#${OLD}#$(pwd)#g" funannotate-db-info.txt trained_species/*/info.json
export FUNANNOTATE_DB=/path/to/funannotate_db
funannotate database
The sed line reads the stored prefix from the database index and replaces it with the current
folder, in the index and in the info.json of every stored AUGUSTUS model. The folder's path
must not contain & or #, which sed would read as instructions. The last command should list
ten databases.
Newer snapshots, and building your own¶
Which snapshot a run uses depends on what the folder directories.funannotate_db holds:
| The folder | What FunFlux does |
|---|---|
is empty, or has no funannotate-db-info.txt |
downloads the snapshot links.funannotate_link names |
| holds a funannotate database | uses it, whatever links.funannotate_link names |
holds a funannotate database that an earlier run from the same launch folder downloaded, and links.funannotate_link has changed since |
unpacks the new archive over the old files and leaves behind those the new one does not replace (What makes Snakemake re-run a rule) |
For a new snapshot, point directories.funannotate_db at a new, empty folder
As the table shows, a folder that already holds a funannotate database either keeps it or has the new archive unpacked over its old files. Other runs and workflows may also still read the old folder.
To build a database with the current UniProt, Pfam, InterPro and Gene Ontology releases yourself,
run miscellaneous/build_funannotate_db.sh in FunFlux's funannotate environment:
conda activate /path/to/the/funannotate/environment # the folder --list-conda-envs prints
bash miscellaneous/build_funannotate_db.sh /path/to/funannotate_db_build dikarya
- Activate the environment with
conda activate. With only itsbin/folder on thePATH, the setup missesAUGUSTUS_CONFIG_PATH, which activation sets. The script stops with a message when that variable is not set, or when funannotate is missing or not version 1.8.17. - The script needs network access and about 9 GB of free space in the folder named as its first argument, and takes about 10 minutes. It refuses to overwrite a database folder, archive or checksum file that already exists.
- It runs
funannotate setup -i all -b <BUSCO sets> -d <folder> --wgetand checks that the ten databases, the BUSCO sets and the stored AUGUSTUS models all arrived. It writes the database folderfunannotate_db_<YYYY.MM.DD>/and an archive of it,funannotate_db_<funannotate version>_<date>.tar.gz, with its.sha256file. It also writes a table of the database versions (.versions.tsv) and two logs. - Point
directories.funannotate_dbat the database folder it wrote. That folder holdsfunannotate-db-info.txt, so nothing is downloaded. - The script ends by printing the steps to publish the archive on Zenodo. For your own runs you
need none of them: keep the database folder and point
directories.funannotate_dbat it.
Other BUSCO sets for gene prediction¶
funannotate predict trains SNAP and GlimmerHMM on the conserved genes of the BUSCO set named by
parameters.prediction.busco_db. It trains AUGUSTUS on them too, for the samples without a model
in column 4 of the
annotation parameter table.
| Set | BUSCO genes | In the funannotate database | Tested with FunFlux v2 |
|---|---|---|---|
dikarya, the default |
1,312 | yes, the only one | yes |
fungi |
290 | no | no: its download has not been tested |
Keep dikarya unless the fungus lies outside the Dikarya. AUGUSTUS needs at least 200 genes to
train on, so with fungi a sample is safer with a stored AUGUSTUS model in column 4. When a
funannotate database is present and the named set is not, every Snakemake command stops before any
job starts and prints the command that adds the set,
funannotate setup -i busco -b <set> -d <folder> -w. Run it in FunFlux's funannotate
environment, activated as below.
For a fungus outside the Dikarya (Ascomycota and Basidiomycota), add a set such as fungi with
funannotate 1.8.17, for example from the environment FunFlux built. Run the first command while
busco_db is still dikarya, with the --conda-prefix of your runs, or without it if you use
none:
snakemake --sdm conda --list-conda-envs --conda-prefix /path/to/funflux_envs \
--configfile config/config_custom.yaml # prints the folder of funannotate.yaml
conda activate /path/to/that/folder
funannotate setup -i busco -b fungi -d /path/to/funannotate_db -w
If the folder does not exist yet, build the environments first, as described in
Building the environments in advance. Then set
parameters.prediction.busco_db: fungi.
- Activate the environment with
conda activate. With only itsbin/folder on thePATH, setup stops withKeyError: 'AUGUSTUS_CONFIG_PATH'. -i buscolimits the downloads to BUSCO sets. Setup still copies intotrained_species/the AUGUSTUS species files the database lacks (it already holds all 166), rewritesfunannotate-db-info.txtfrom the lines it can read, and writesfunannotate-setup.loginto the current folder.-wmakes funannotate download withwgetinstead of its own downloader, which has failed on some of funannotate's download links: an HTTP 308 redirect on thedikaryalink, and HTTP 403 from geneontology.org.
Adding a set this way has been tried only with the small microsporidia set. The fungi
download has not been tested, and FunFlux v2 was tested with dikarya only.
UNITE¶
FunFlux classifies the ITS1 and ITS2 sequences with vsearch --sintax against UNITE. The default
links.unite_its_link is the UNITE USEARCH/UTAX/SINTAX release for eukaryotes, version 19.02.2025
(DOI 10.15156/BIO/3301246), which covers all eukaryotes, not Fungi only. FunFlux either downloads
this file or links your local copy:
| Default: download | Local copy: directories.unite_db |
|
|---|---|---|
| Rule | unite_db |
unite_db_local |
| What it does | streams the file through gzip -dc into 00.resources/unite/unite_its_sintax.fasta, once per output folder |
links the file into 00.resources/unite/ |
00.resources/unite/PROVENANCE.txt records |
the link, the download date, the md5 and the size | the folder, the date, the md5 and the size |
| Check | no checksum is verified | the run stops before any job starts when the folder holds no uncompressed unite_its_sintax.fasta |
A local copy serves any number of output folders. To make one, download and unpack the file yourself:
mkdir -p /path/to/unite && cd /path/to/unite
curl -L --fail 'https://s3.hpc.ut.ee/plutof-public/original/338a1413-6039-4e00-b5cf-410346a1e366.gz' \
| gzip -dc > unite_its_sintax.fasta
grep -c '^>' unite_its_sintax.fasta # 266589
md5sum unite_its_sintax.fasta # 4cacdc7f2372e0d1e863d7f9715a5843
When links.unite_its_link is also set, a NOTE says that it is not used. Another UNITE release
in USEARCH/UTAX/SINTAX format can replace the default through either key, and its classifications
can then differ from those of the default release.
Downloaded or linked, the file is then filtered. Rule unite_identified keeps the records whose
taxonomy names a genus in 00.resources/unite/unite_its_sintax.identified.fasta, and SINTAX reads
that file unless parameters.its.unite_identified_only is false. See
The UNITE reference filter.
antiSMASH databases¶
The antiSMASH databases end up in 00.resources/antismash/databases/ of the output folder, either
downloaded there or linked from a copy you hold:
| Default: download | Local copy: directories.antismash_db |
|
|---|---|---|
| Rule | antismash_db |
antismash_db_local |
| What it does | runs download-antismash-databases of antiSMASH 8.0.4 into 00.resources/antismash/databases/, once per output folder, from dl.secondarymetabolites.org and ftp.ebi.ac.uk (Pfam 35.0); the folder, 9.4 GB, stays for later runs in the same output folder |
fills 00.resources/antismash/databases/ with one symbolic link per entry of your folder; nothing is copied, and FunFlux does not write into your folder |
A local copy saves 9.4 GB in every output folder and serves any number of them. To make one:
conda create -n antismash -c conda-forge -c bioconda antismash=8.0.4
conda activate antismash
download-antismash-databases --database-dir /path/to/antismash_db
ls /path/to/antismash_db
# as-js clusterblast clustercompare comparippson knownclusterblast mite nrps_pks pfam resfam tigrfam
The downloader ends with Pre-building all databases... and done.. Use a database made by
antiSMASH 8.0.4, the version FunFlux runs.
The run stops before any job starts when the folder does not exist or has no clusterblast/.
Otherwise FunFlux prints
Using the local antiSMASH database at '/path/to/antismash_db'. Nothing will be downloaded.
BUSCO lineage datasets¶
There is nothing to download beforehand. Where BUSCO 6.0.0 gets its lineage data from
busco-data.ezlab.org depends on the setting:
parameters.busco.lineage |
BUSCO option | Downloaded | Where and when |
|---|---|---|---|
auto (default) |
--auto-lineage-euk |
eukaryota_odb12 (29 MB), the eukaryote placement files (8 MB) and the lineage BUSCO places the genome in | by every BUSCO job, into 02.assembly/{sample}/eval/busco/busco_tmp, which Snakemake deletes when the job ends. Samples never share a download, because BUSCO 6.0.0 has no lock on its download folder and silently updates a shared one |
a lineage name, e.g. hypocreales_odb12 |
-l hypocreales_odb12 --offline |
that dataset | once per output folder, by rule busco_data, into 00.resources/busco/, on the computer that runs Snakemake; every BUSCO job reads it there |
With auto, every BUSCO job needs network access
A named lineage needs network access once, and the downloaded dataset stays at the version in
00.resources/busco/ for later runs into the same output folder. BUSCO fetches the newest
version of a dataset, so with auto completeness can also shift when a new version is
published.
busco --list-datasets in a BUSCO 6.0.0 environment lists the names, each with its version after
a dot, such as hypocreales_odb12.2. Write the name without the dot and the number after it:
hypocreales_odb12.
The BUSCO set that funannotate trains its gene finders on (parameters.prediction.busco_db,
dikarya_odb9) is a different dataset. It is part of the funannotate database, as described
under Other BUSCO sets for gene prediction.
Tiberius model¶
The gene finder Tiberius, on by default, needs the
fungi model its authors trained, a set of network weights. Rule tiberius_model downloads it
from links.tiberius_model_link, on the Tiberius authors' server, once per output folder. It
checks the archive against parameters.tiberius.model_sha256 with sha256sum -c and unpacks it
into 00.resources/tiberius/model/ (model_config.json, model_layers.json, weights.h5).
FunFlux does not ship or mirror the model, because no licence is published with it.
The address carries no version number. When the authors replace the model there, the checksum no
longer matches, the run stops before anything is unpacked, and the downloaded file is kept as
00.resources/tiberius/model.tar.gz. Either set parameters.tiberius.mode: off, or check the new
model and accept it:
sha256sum /path/to/output_dir/00.resources/tiberius/model.tar.gz
# put the 64 characters it prints into parameters.tiberius.model_sha256, then run again
A new checksum re-runs Tiberius for every sample, and the gene prediction after it.
Telomere repeat database¶
The contig summary chooses the telomere repeat unit of every assembly from the data and checks the
units it weighs against the database that comes with tidk (Brown et al. 2025). That database,
telo_database_v2.tsv, is a tab-separated table of 4,051 rows, one per examined species, and a
few species appear twice. Each row gives the telomere repeat unit reported for the species, its
taxonomy from genus to superkingdom, the assembly the unit was checked on, and how well it is
supported:
| Support | Rows | Used by FunFlux |
|---|---|---|
strong |
2,292 | yes |
weak |
698 | yes |
unchecked |
629 | no |
none, with no unit |
432 | no |
FunFlux takes the units with strong or weak support, 256 distinct units, as candidate telomere
units in every run. Most rows are animals (2,996), while 903 are plants and 126 fungi. The
candidates table of each sample says how many species per kingdom carry each unit, as described on
Contig summary.
Rule telomere_db downloads the file with curl from links.telomere_db_link, once per output
folder, and checks it against parameters.contig_summary.telomere_db_sha256 with sha256sum -c.
It keeps the file as 00.resources/telomeres/telo_database_v2.tsv, with a PROVENANCE.txt beside
it that records the source URL, the download date, the checksum and the row count. The template
address names one commit of the repository tolkit/a-telomeric-repeat-database on GitHub, so the
file behind it does not change. A file that does not match the checksum stops the run with
[FunFlux] telomere_db: ..., and the download is kept with the suffix .failed. To move to a
newer version of the database, change the link and the checksum together:
curl -L --fail -o telo_database_v2.tsv '<the new address>'
sha256sum telo_database_v2.tsv # put the 64 characters into parameters.contig_summary.telomere_db_sha256
A new checksum re-runs telomere_db, then telomere_units and the contig summary of every
sample. There is no local-copy key: the file is 0.6 MB, and a run needs network access to
raw.githubusercontent.com once per output folder. The repository publishes no licence file, so
FunFlux neither ships the database nor mirrors it. It is downloaded on your machine at run time,
as the Tiberius model is. Cite it through the tidk paper and the address, as listed on
Citation and references.
UniVec, for the adapter screen¶
The contig adapter screen searches every draft assembly for adapter sequence
(Adapter trimming and the adapter screen).
FunFlux ships the Oxford Nanopore adapters and barcodes and the PacBio and MGI adapters in
workflow/data/adapters/. The Illumina adapters and primers come from NCBI's UniVec, whose
records note that Illumina's oligonucleotide sequences are copyrighted, so FunFlux downloads them
instead of shipping them.
Rule univec_illumina downloads UniVec build 10.1 from links.univec_link, by default
https://ftp.ncbi.nlm.nih.gov/pub/UniVec/archive/10.1/UniVec, once per output folder. It checks the
file against parameters.contig_summary.univec_sha256 with sha256sum -c, keeps the 151 records
whose description names Illumina as 00.resources/adapters/univec_illumina.fasta, and writes a
PROVENANCE.txt beside it with the source URL, the date, the checksum and the record count. The
address points into NCBI's archive, so the file behind it does not change. A file that does not
match the checksum stops the run with [FunFlux] univec_illumina: ..., and the download is kept
with the suffix .failed.
ChroQueTas and the FungAMR database¶
The AMR screen, also called the resistance-mutation screen, is off by default. It runs ChroQueTas
against the FungAMR database, which lists point mutations with the evidence for or against
resistance to antifungal drugs and fungicides, as described on
Antifungal resistance mutations. ChroQueTas is one bash script, and its
authors keep the database prepared for it in the same GitHub repository, nmquijada/ChroQueTas.
Both are licensed CC BY-NC-ND 4.0, so FunFlux does not ship or mirror them, and does not change
them.
With parameters.amr.chroquetas: on, rule chroquetas_db downloads three files with curl from
links.chroquetas_link, once per output folder, into 00.resources/chroquetas/:
| File at the link | Kept as | Checked against |
|---|---|---|
bin/ChroQueTas.sh (29,202 bytes) |
ChroQueTas.sh |
parameters.amr.chroquetas_script_sha256 |
FungAMR_db/db-v20250811.tgz (137,391 bytes) |
unpacked into FungAMR_db/, one folder per species; the archive is then deleted |
parameters.amr.chroquetas_db_sha256 |
LICENSE |
LICENSE |
its checksum is recorded in PROVENANCE.txt |
The rule checks the script and the archive with sha256sum -c before anything runs or is
unpacked. It then writes species.txt, which lists the 57 species folders one per line, and
PROVENANCE.txt, which records the three addresses, the download date, the checksums, the
species count and the licence. The template address names one commit, the one tagged v1.0.1,
so the files behind it do not change. A file that does not match its checksum stops the run with
[FunFlux] chroquetas_db: ... and is kept with the suffix .failed.
To move to a newer version, read the new script and its licence, then change the link and both
checksums together. FunFlux reads the files ChroQueTas 1.0.1 writes, so a version that writes them
differently stops amr_chroquetas with an error and needs a newer FunFlux.
BASE=https://raw.githubusercontent.com/nmquijada/ChroQueTas/<commit>
curl -L --fail -o ChroQueTas.sh "$BASE/bin/ChroQueTas.sh"
curl -L --fail -o db.tgz "$BASE/FungAMR_db/<archive name>"
sha256sum ChroQueTas.sh db.tgz # into chroquetas_script_sha256 and chroquetas_db_sha256
The archive name, db-v20250811.tgz, is fixed in FunFlux, so a newer database under another name
needs a newer FunFlux. A new link or checksum re-runs chroquetas_db, then amr_chroquetas of
every sample. There is no local-copy key: the files are small, and a run with the AMR screen on
needs network access to raw.githubusercontent.com once per output folder.
PhiX genome¶
Only illumina and hybrid mode use the PhiX genome. links.phix_link points at NCBI's PhiX174
genome (GCF_000819615.1, 2 kB compressed), the control that Illumina libraries are spiked with.
download_phix fetches it with curl once per output folder into 00.resources/phix/, and
build_phix indexes it there for bowtie2. map_phix then removes the read pairs of every sample
that align to it concordantly. In these modes an empty value stops the run before any job starts.
Medaka model¶
A Medaka model is needed in longread and hybrid only, for ONT samples, unless
medaka_model: false. Medaka 2.2.2 ships the weights of four models. For any other model it
downloads them the first time the model is used, so the run needs network access once.
The download happens in check_medaka_model, before the assembler starts and on the computer
that runs Snakemake. A named model is checked and its weights fetched. With medaka_model: auto,
the model is worked out from the basecaller tag in the read headers, and its weights are fetched.
Medaka keeps them in its conda environment, or in ~/.medaka/data when it cannot write there, so
polishing needs no network. See The Medaka model.
Pointing a key at a local copy¶
Five database keys name a folder on your own disk. The table gives what each folder holds, what FunFlux checks before any job starts, and what the run does with the folder:
| Key | The folder holds | Checked before any job starts | What the run does |
|---|---|---|---|
directories.blast_db |
the core_nt files, taxdb.btd, taxdb.bti, nodes.dmp, names.dmp |
NOTE when the folder is missing; with the screen on, the dry run stops without nodes.dmp or names.dmp |
reads it |
directories.eggnog_db |
the files download_eggnog_data.py writes |
NOTE when the folder is missing | reads it |
directories.funannotate_db |
the unpacked funannotate database, or nothing yet | the parameters.prediction.busco_db set, when a funannotate database is present |
downloads the database if it is missing; rewrites the paths inside it |
directories.antismash_db |
clusterblast/ and the other database folders |
the run stops when the folder is missing or has no clusterblast/ |
links its entries into 00.resources/antismash/databases/ |
directories.unite_db |
unite_its_sintax.fasta, uncompressed |
the run stops when the file is missing | links the file into 00.resources/unite/ |
FunFlux turns each of these paths into an absolute one, measured from the launch folder. Write them as absolute paths. Every key is listed on Configuration.