Output files¶
This page lists the files and folders a FunFlux run writes, and whether each one is still there
when the run has finished. Every path on this page is relative to directories.output_dir, and a
relative value of that key is read from the launch folder, the folder Snakemake is started from.
The numbered folders are the same in every mode, and a mode with nothing to put into a folder
does not create it.
Most tables name the rule that writes each file, as the console and logs/ name it. They also
give the file's status, which says whether it stays, and the modes or settings under which it is
written. The terms below define the labels of the Status and Modes columns.
Terms used on this page
| deliverable | a result to read, keep or pass on; a later step may read it too |
| intermediate | a working file that one step hands to the next; kept after the run |
| temporary | deleted by Snakemake once the last step that reads it has finished; absent from a finished run |
| scratch | deleted by the step that wrote it, when that step ends; a download whose checksum did not match is kept instead, for you to inspect |
| cleanup | deleted by cleanup, the last step of each sample |
| screen | the contamination and mitochondrion screen, always run in illumina, longread and hybrid mode, and in contigs mode only with parameters.contigs.screen: true |
| SignalP, GeneMark, Tiberius | for SignalP, parameters.signalp6.mode is not off; for GeneMark, GeneMark-ES is enabled (directories.genemark_dir set, parameters.genemark.mode: auto); for Tiberius, parameters.tiberius.mode is on, the default |
| AMR | antimicrobial resistance; as a label, the AMR screen is switched on: parameters.amr.chroquetas is on (off by default) |
Files to read first¶
These are the files that hold the results of a run, with the question each one answers and the modes that write it.
| File | What it answers | Modes |
|---|---|---|
02.assembly/{sample}/contigs_final.fasta |
The nuclear genome. QUAST, BUSCO, the ITS search and funannotate read this file and no other version of the assembly. | all |
02.assembly/{sample}/contigs_mitochondrial.fasta |
The confirmed mitochondrial contig(s); an empty file when none was confirmed. | screen |
02.assembly/{sample}/mitochondria/mitochondrial_screen.tsv |
Why each contig was or was not called mitochondrial. | screen |
02.assembly/{sample}/contaminants/contig_taxonomy_decisions.tsv |
Genus, keep or remove, and the reason, for every contig. | screen |
02.assembly/{sample}/eval/busco/short_summary.specific.<lineage>.{sample}.txt |
Completeness of the genome. | all |
02.assembly/{sample}/eval/quast/report.tsv |
Contig count, total length, N50, GC content. | all |
02.assembly/{sample}/eval/contig_summary.tsv |
What each contig of the draft assembly is (chromosome, chromosome arm, mitochondrion, rDNA array, low-depth piece, collapsed repeat, nuclear contig or fragment, contaminant, another organism's mitochondrial DNA, unclassified), with the evidence; it also links each contig to its scaffold_N name in the annotation. |
all |
03.taxonomy/{sample}/{sample}_ITS1_taxonomy.txt, {sample}_ITS2_taxonomy.txt |
UNITE classification of the ITS barcode. | all |
03.taxonomy/{sample}/{sample}_ITS_copies.txt |
How many rDNA units were found, and which records the length guard rejected. | all |
04.annotation/{sample}/funannotate/annotate_results/ |
The annotated genome: GenBank, GFF3, proteins, transcripts, and .annotations.txt, the functional annotation with one row per transcript. |
all |
04.annotation/{sample}/contigs_sort.fasta |
The genome as annotated. | all |
05.amr/{sample}/amr_summary.tsv |
The FungAMR mutations found in the genome, one row per target protein of the species, with a verdict on resistance and the drugs with evidence for and against it. | AMR |
06.report/multiqc_report.html |
QUAST and BUSCO of every sample of the run on one page; in the read-based modes also the read QC (fastp, NanoPlot) and the mapping QC (Qualimap). | all |
The annotation and the assembly use different contig names
funannotate sort renames the contigs scaffold_1, scaffold_2, ..., longest first, before
repeat masking, so the masked genome and every annotation file use these names. The screen,
QUAST, BUSCO and the ITS files use the names of contigs_final.fasta. The annotated_as
column of 02.assembly/{sample}/eval/contig_summary.tsv links the two, as described on
Contig summary, and
04.annotation/{sample}/contigs_clean.fasta holds the same sequences under their original
names.
Layout¶
The tree shows the folders of an output folder and the main files in them. A label in square
brackets names the modes that write a line, or the setting it needs. On the eval/ line, the
label covers only qualimap/. A line without a label is written in every mode, although what
00.resources/ holds depends on the mode and the settings, as its table shows.
<output_dir>/
├── 00.resources/ run-level material: databases, Tiberius model, SignalP 6 installation, ChroQueTas, a named BUSCO lineage
├── 01.reads/{sample}/ [illumina, longread, hybrid]
├── 02.assembly/{sample}/
│ ├── contigs_final.fasta nuclear genome
│ ├── contigs_all.fasta screened genome, mitochondrion included [screen]
│ ├── contigs_mitochondrial.fasta [screen]
│ ├── contigs_filt.fasta the draft the screen examines [contigs + screen, illumina]
│ ├── contaminants/ BLAST, BlobTools, keep/remove decisions [screen]
│ ├── mitochondria/ mitochondrion screen [screen]
│ ├── spades/ [illumina]
│ ├── hifiasm/ or flye/, assembly.fasta, assembly_evidence.tsv, assembly_provenance.tsv [longread, hybrid]
│ ├── {sample}_medaka_model.txt, medaka/ [longread, hybrid: ONT samples with Medaka]
│ ├── polypolish/, guide/ [hybrid]
│ └── eval/ quast/, busco/, telomere_*, adapter_*, contig_summary*.tsv; qualimap/ [illumina, longread, hybrid]
├── 03.taxonomy/{sample}/ ITS windows, ITS sequences, UNITE classification
├── 04.annotation/{sample}/ masking, gene prediction, functional annotation
├── 05.amr/{sample}/ antifungal resistance mutations (ChroQueTas) [AMR]
├── 06.report/ MultiQC
└── logs/ one log per rule and sample
Disk use¶
One sample in contigs mode takes in the order of 10 GB. The table shows where the space goes.
| Folder | What takes the space | Size |
|---|---|---|
01.reads/{sample}/, 02.assembly/{sample}/ (read-based modes only) |
the kept reads in 01.reads/ (the filtered long reads, uncompressed; in hybrid also the selected pairs of Illumina reads), the assembler's working folder (spades/, hifiasm/ or flye/), the read-mapping BAM (two in hybrid) and the polishing output |
3.7 to 30 GB for the two folders together in the runs below |
04.annotation/{sample}/ |
most of the rest: the InterProScan XML, there twice (iprscan/interproscan_out.xml and funannotate's copy funannotate/annotate_misc/iprscan.xml), and funannotate's working files in funannotate/predict_misc/ and annotate_misc/ |
the XML can be a few GB |
02.assembly/{sample}/ |
the BUSCO result tree | 0.65 to 1.8 GB with the automatic lineage in the runs below |
00.resources/ |
the antiSMASH 8.0.4 database, unless directories.antismash_db is set |
9.4 GB |
00.resources/ |
the SignalP 6 package, with the fast model | 1.6 GB |
00.resources/ |
UNITE: the reference and, by default, its copy of the records that name a genus | 354 MB (207 + 147 MB) |
00.resources/ |
the Tiberius model | 31 MB |
00.resources/ |
the BUSCO lineage data, when parameters.busco.lineage names a lineage |
a few hundred MB |
00.resources/ |
ChroQueTas with its FungAMR database (AMR screen on) | 3 MB |
00.resources/ |
the telomere repeat database | 0.6 MB |
In the long-read modes, the kept long reads are the largest single item. Apart from them, the
annotation and the assembly folder take most of a sample's space. The first keeps the
InterProScan XML twice, the second the read-mapping BAM and the assembler's working files. Of
the material shared by the run, the antiSMASH database is the largest item. With
directories.antismash_db set, 00.resources/ holds only links to your copy.
To free space once you have checked the results, run
workflow/scripts/clean_funflux_output.sh <output folder>. The script lists the bulky working
files that no result needs, and deletes them only with --run:
- assembler caches and read mappings;
- the working files and copies of Medaka, BUSCO and funannotate;
- the antiSMASH and UNITE databases and the BUSCO lineage data FunFlux downloaded;
- the licensed SignalP 6 package.
The reads kept in 01.reads/ go only with --include-reads. The results, the logs and tbl2asn's
validation reports stay.
Cleaning is for a folder that FunFlux will not use again
The script refuses a folder in which a sample has not finished, but it cannot tell whether another FunFlux run is using the folder. Do not give a cleaned folder to FunFlux again: the deleted files would be made again and most of each sample repeated.
The conda environments are not counted here. They are in .snakemake/ of the launch folder, or
in the --conda-prefix folder, as listed under
Outside the output folder.
Disk use per run¶
The sizes below were measured on two public genomes, with one sample per run, and are given as
du -sh prints them. The runs are described on
Validation on public genomes. The four B05.10 runs with ONT reads were
made with FunFlux 2.1.0, the others with FunFlux 2.0.0.
| Genome | Run | 01.reads/ |
02.assembly/ |
Whole output folder |
|---|---|---|---|---|
| Botrytis cinerea B05.10, 42.6 Mb | illumina, Illumina 79x |
0.6 MB | 3.7 GB | 13 GB |
longread, ONT 42x, hifiasm, Medaka |
3.1 GB | 7.1 GB | 20 GB | |
longread, ONT 136x, hifiasm |
9.8 GB | 12 GB | 31 GB | |
longread, ONT 136x, Flye |
9.8 GB | 6.6 GB | 26 GB | |
hybrid, ONT 136x plus Illumina 79x, hifiasm |
16 GB | 14 GB | 38 GB | |
| Cordyceps cateniannulata GXU-8616, 32.7 Mb | longread, PacBio HiFi 85x, hifiasm |
4.7 GB | 3.1 GB | 17 GB |
longread, PacBio HiFi 85x, Flye |
4.7 GB | 2.3 GB | 16 GB | |
hybrid, PacBio HiFi 85x plus MGISEQ short reads 151x, hifiasm |
14 GB | 5.7 GB | 29 GB |
A whole sample took 13 to 38 GB in these runs, and the kept long reads were the largest single file of every run with long reads. Their size follows the bases sequenced: 9.7 GB from the 5.8 Gb of ONT reads of B05.10, 4.7 GB from the 2.8 Gb of HiFi reads of GXU-8616.
- In
hybrid,01.reads/also holds the selected pairs, uncompressed: 9.3 GB of the 14 GB for GXU-8616. 02.assembly/was smaller with Flye than with hifiasm on both genomes, because hifiasm keeps larger working files:hifiasm/took 5.5 GB on B05.10 and 1.5 GB on GXU-8616,flye/860 MB and 570 MB.- The whole output folder of every run includes about 2 GB of
00.resources/, most of it the SignalP 6 package. It does not include the antiSMASH database, because these runs setdirectories.antismash_db.
00.resources¶
00.resources/ holds the material that belongs to the run, not to a sample. It is kept, so a
later run on the same output folder downloads or installs none of it again unless the settings
behind it change.
| Path | Content | Written by | Status | Modes |
|---|---|---|---|---|
unite/unite_its_sintax.fasta |
UNITE reference for SINTAX, unpacked from links.unite_its_link (207 MB, 266,589 sequences with the default link); with directories.unite_db, a symbolic link to your copy |
unite_db or unite_db_local |
intermediate | all |
unite/PROVENANCE.txt |
source URL (or source folder), UTC date, md5 and size in bytes of that FASTA | same | deliverable | all |
unite/unite_its_sintax.identified.fasta |
the records of that FASTA whose taxonomy names a genus (147 MB, 180,343 sequences with the default link; 86,246 are dropped); what SINTAX classifies against while parameters.its.unite_identified_only is true |
unite_identified |
intermediate | all |
unite/identified_filter.txt |
two lines: kept_with_genus: <n> and dropped_without_genus: <n>, the records the filter kept and dropped (180,343 and 86,246 with the default link) |
unite_identified |
deliverable | all |
antismash/databases/ |
antiSMASH database from download-antismash-databases; with directories.antismash_db, one symbolic link per entry of your copy |
antismash_db or antismash_db_local |
intermediate | all |
funannotate_db_paths.normalized.json |
marker that the paths inside the funannotate database were repaired, with the number of files checked and paths rewritten | normalize_funannotate_db |
intermediate | all |
signalp6/installation.json |
archive name and SHA-256, SignalP version, mode, model folder, and the conda environment SignalP 6 was installed into | install_signalp6 |
intermediate | SignalP |
signalp6/package/ |
the SignalP 6 package with the model weights of the DTU archive (1.6 GB, fast model) | install_signalp6 |
intermediate | SignalP |
signalp6/.matplotlib/ |
matplotlib cache | install_signalp6 |
intermediate | SignalP |
signalp6/.signalp6-install-*/ |
the unpacked archive during installation | install_signalp6 |
scratch | SignalP |
tiberius/model/ |
the Tiberius fungi model, unpacked from links.tiberius_model_link after its SHA-256 matched parameters.tiberius.model_sha256: model_config.json, model_layers.json, weights.h5 (31 MB) |
tiberius_model |
intermediate | Tiberius |
tiberius/model.tar.gz |
the downloaded archive; deleted once unpacked, kept when its checksum does not match | tiberius_model |
scratch | Tiberius |
telomeres/telo_database_v2.tsv |
the telomere repeat database of tidk, downloaded from links.telomere_db_link after its SHA-256 matched parameters.contig_summary.telomere_db_sha256: 4,051 rows, one per examined species, with the telomere repeat unit and its support (0.6 MB) |
telomere_db |
intermediate | all |
telomeres/PROVENANCE.txt |
source URL, download date, SHA-256 and row count of that file | telomere_db |
deliverable | all |
telomeres/telo_database_v2.tsv.failed |
the downloaded file when its checksum did not match; absent otherwise | telomere_db |
scratch | all |
adapters/univec_illumina.fasta |
the 151 Illumina adapter and primer records of NCBI UniVec build 10.1, downloaded from links.univec_link after its SHA-256 matched parameters.contig_summary.univec_sha256; the contig adapter screen searches for them |
univec_illumina |
intermediate | all |
adapters/PROVENANCE.txt |
source URL, download date, SHA-256 and the number of Illumina records kept | univec_illumina |
deliverable | all |
adapters/univec_illumina.fasta.download.failed |
the downloaded file when its checksum did not match; absent otherwise | univec_illumina |
scratch | all |
chroquetas/ChroQueTas.sh |
the ChroQueTas script, version 1.0.1, downloaded unchanged from links.chroquetas_link after its SHA-256 matched parameters.amr.chroquetas_script_sha256 (29 kB) |
chroquetas_db |
intermediate | AMR |
chroquetas/FungAMR_db/ |
the FungAMR database of ChroQueTas: one folder per species (57), each with a <target>.faa (the reference protein) and a <target>.txt (its resistance positions) per target; unpacked from db-v20250811.tgz after its SHA-256 matched parameters.amr.chroquetas_db_sha256 |
chroquetas_db |
intermediate | AMR |
chroquetas/db-v20250811.tgz |
the downloaded database archive; deleted once unpacked | chroquetas_db |
scratch | AMR |
chroquetas/species.txt |
the database's species folders, one per line, sorted | chroquetas_db |
intermediate | AMR |
chroquetas/LICENSE |
the licence of ChroQueTas and its database, CC BY-NC-ND 4.0 | chroquetas_db |
deliverable | AMR |
chroquetas/PROVENANCE.txt |
the three source addresses, the UTC date, the checksums, the species count and the licence | chroquetas_db |
deliverable | AMR |
chroquetas/ChroQueTas.sh.failed, chroquetas/db-v20250811.tgz.failed |
a download whose checksum did not match; absent otherwise | chroquetas_db |
scratch | AMR |
phix/ |
phix.fna.gz, the PhiX genome from links.phix_link, still compressed, and its six bowtie2 index files phix.*.bt2 |
download_phix, build_phix |
intermediate | illumina, hybrid |
busco/lineages/<lineage>/ |
the BUSCO dataset named in parameters.busco.lineage, downloaded once and read by every BUSCO job with --offline (a few hundred MB); later runs into the folder use the same release |
busco_data |
intermediate | all, with a named lineage |
busco/file_versions.tsv |
BUSCO's list of the dataset versions it downloaded | busco_data |
deliverable | all, with a named lineage |
The folders named in directories.unite_db and directories.antismash_db are only read.
signalp6/package/ is licensed DTU material, so remove it from any copy of the output folder you
share, as explained on Licensing. chroquetas/ is CC BY-NC-ND 4.0
material: it may be passed on unchanged, for non-commercial purposes and with credit.
01.reads¶
01.reads/ holds the processed reads and their QC reports, in one folder per sample and read
type. It is not created in contigs mode.
| Path | Content | Written by | Status | Modes |
|---|---|---|---|---|
{sample}/illumina/{sample}_nophix_R1.fastq, _R2.fastq |
the read pairs that did not align to the PhiX genome, uncompressed | map_phix |
temporary | illumina, hybrid |
{sample}/illumina/{sample}_trim_R1.fastq, _R2.fastq |
the PhiX-free pairs after fastp: adapters and low-quality ends cut, reads under 75 bp dropped | trim_adapters |
temporary | illumina, hybrid |
{sample}/illumina/{sample}_fastp.html, {sample}_fastp.json |
fastp's read-QC report as a page and as numbers; MultiQC reads the JSON | trim_adapters |
deliverable | illumina, hybrid |
{sample}/long/adapters/{sample}_adapter_scan.tsv |
ONT samples: the reads that start with the ONT adapter, and those with a barcode block and no adapter, in every block of 10,000 reads | find_ont_adapter |
deliverable | longread, hybrid |
{sample}/long/adapters/{sample}_adapter_choice.tsv |
ONT samples: what fastplong removes and why, with the numbers behind the decision and ONT's published barcodes found in the reads | find_ont_adapter |
deliverable | longread, hybrid |
{sample}/long/adapters/{sample}_fastplong_options.txt, {sample}_adapter_sequence.fasta |
ONT samples: the options handed to fastplong, and every trimmed sequence in both orientations as FASTA (empty when nothing was trimmed); fastplong reads the FASTA with -a, and the contig adapter screen searches for those sequences too |
find_ont_adapter |
intermediate | longread, hybrid |
{sample}/long/{sample}_trimmed.fastq.gz |
ONT samples: the reads after fastplong; Filtlong reads them | trim_ont_adapters |
temporary | longread, hybrid |
{sample}/long/adapters/{sample}_fastplong.html, {sample}_fastplong.json |
ONT samples: fastplong's report, as a page and as numbers (reads trimmed, reads split) | trim_ont_adapters |
deliverable | longread, hybrid |
{sample}/long/adapters/{sample}_adapter_check.tsv |
ONT samples: the trimmed reads that still start with the adapter | check_ont_trimming |
deliverable | longread, hybrid |
{sample}/long/{sample}_filtered.fastq |
the long reads Filtlong kept, uncompressed; the assembler, the coverage mapping and Medaka read it | filter_long_reads |
intermediate | longread, hybrid |
{sample}/long/raw_qc/, filtered_qc/ |
NanoPlot on the raw and on the filtered reads: {sample}_NanoStats.txt (MultiQC reads it), an HTML report, the plots as HTML pages (no PNG, --no_static) |
raw_long_read_qc, filtered_long_read_qc |
deliverable | longread, hybrid |
{sample}/selected/{sample}_selected_R1.fastq, _R2.fastq |
the trimmed Illumina pairs properly paired on the screened guide assembly; Polypolish reads them, and so does Filtlong for ONT samples with short_read_guidance: true |
map_sel_contigs |
intermediate | hybrid |
02.assembly¶
02.assembly/ holds one folder per sample with the genome files, the draft and the assembler's
files, the results of the screen and the assembly QC. In contigs mode without the screen, the
folder holds only contigs_final.fasta and eval/.
| Path | Content | Written by | Status | Modes |
|---|---|---|---|---|
contigs_final.fasta |
the nuclear genome | filter_contigs (no screen) or separate_mitochondria |
deliverable | all |
contigs_all.fasta |
the screened genome, mitochondrion included | finalize_assembly |
deliverable | screen |
contigs_mitochondrial.fasta |
the confirmed mitochondrial contigs, headers unchanged; an empty file when none was confirmed or parameters.mitochondria.mode is off or report. A contig whose best mitochondrial BLAST hit is an animal's or a plant's, such as a contig of human mitochondrial DNA, is classed foreign_mitochondrial and is not confirmed: it stays in the assembly, where the contamination screen keeps or removes it like any other contig |
separate_mitochondria |
deliverable | screen |
contigs_filt.fasta |
the draft the screen examines: your FASTA after the contig filter (contigs), or the SPAdes contigs of at least 500 bp and 2x coverage (illumina) |
filter_contigs |
intermediate | contigs + screen, illumina |
spades/ |
SPAdes' working folder: the unfiltered contigs.fasta, scaffolds.fasta, the assembly graph, one K<k>/ folder per k-mer size, spades.log; emptied whenever SPAdes runs again |
illumina_assembly |
intermediate | illumina |
hifiasm/ or flye/ |
the assembler's own files: hifiasm's graphs (hifiasm.p_ctg.gfa, the primary contigs; hifiasm.a_ctg.gfa) and .bin files, or Flye's assembly.fasta, assembly_info.txt, graph and working files; emptied whenever the assembler runs again |
long_read_assembly |
intermediate | longread, hybrid |
assembly.fasta |
the long-read draft the screen examines, one line per contig (hifiasm: the primary contigs; Flye: a copy of flye/assembly.fasta) |
long_read_assembly |
intermediate | longread, hybrid |
assembly_evidence.tsv |
per contig: contig, source, circular, coverage, repeat, alt_group, taken from hifiasm/hifiasm.p_ctg.gfa or flye/assembly_info.txt; the mitochondrion screen and the contig summary read it |
assembly_evidence |
deliverable | longread, hybrid |
assembly_provenance.tsv |
field and value columns: assembler, version, read type, input file, command line |
long_read_assembly |
deliverable | longread, hybrid |
{sample}_medaka_model.txt |
one line: the Medaka model name after the check, or the path of the model file auto found; the assembler waits for it, Medaka reads it |
check_medaka_model |
intermediate | longread, hybrid: ONT samples with Medaka |
medaka/consensus.fasta |
the screened draft polished by Medaka; medaka/ also holds Medaka's working files and is emptied whenever Medaka runs again |
long_read_consensus |
intermediate | longread, hybrid: ONT samples with Medaka |
polypolish/polished.fasta |
the draft after correction with the selected pairs, headers cut at the first blank, one line per sequence | short_read_correction |
intermediate | hybrid |
guide/ |
the Illumina guide assembly and its screen (below) | hybrid |
What the contig filter, rule filter_contigs, does depends on the mode and, in contigs mode,
on the first FASTA header:
| Mode and draft | What filter_contigs does |
|---|---|
contigs, SPAdes-style headers (>NODE_12_length_45678_cov_23.4) |
the SPAdes filter: keeps contigs of at least 500 bp and 2x coverage |
contigs, any other header |
cuts each header at its first space or tab; removes nothing |
illumina, SPAdes' contigs.fasta |
the same SPAdes filter; an empty result stops the run |
An assembly from another assembler therefore loses no contig at this step, only the text after the first space or tab of its headers. See Pre-assembled contigs.
contaminants/¶
contaminants/ holds the contamination part of the screen: the BLAST hits, the BlobTools table,
the decisions of the contig selector (select_contigs) and the coverage track. In the read-based
modes it also holds the read depth of every contig, measured from the coverage track, for the
contig summary.
| Path | Content | Written by | Status |
|---|---|---|---|
blastout |
megablast hits of every contig, 15 tab-separated columns | blast_contigs |
intermediate |
bestscore.blob.blobDB.table.txt |
BlobTools table: per contig, length, GC, coverage and the best-sum taxon at every rank | blob_table |
deliverable |
contig_taxonomy_decisions.tsv |
contig, assigned_genus, action (keep, remove), reason |
select_contigs |
deliverable |
{sample}_composition.txt |
share of the DNA and of the contigs per genus, over every contig, kept or not | select_contigs |
deliverable |
contigs.list |
IDs of the kept contigs | select_contigs |
deliverable |
contigs_decontam.fasta |
the kept contigs | select_contigs |
intermediate |
{sample}_map.bam, {sample}_map.bam.bai |
the coverage track: the trimmed Illumina pairs (illumina, bowtie2) or the filtered long reads (longread, hybrid, minimap2) aligned to the draft; in contigs mode the contigs mapped to themselves, only because BlobTools needs a BAM, and the coverage BlobTools derives from it means nothing |
map_contigs |
kept in the read-based modes (Qualimap and contig_depth read it too); temporary in contigs mode |
{sample}_depth.tsv |
the read depth of every contig, measured by samtools coverage from {sample}_map.bam: #rname (the contig), startpos, endpos, numreads, covbases, coverage (the percentage of the contig covered), meandepth (the mean read depth), meanbaseq, meanmapq. The depth in the contig summary is meandepth; FunFlux 2.0.0 took it from the coverage column of the BlobTools table, an estimate that can be several times too low with long reads. Not made in contigs mode, where no depth is measured |
contig_depth |
intermediate; contig_summary reads it |
contigs.*.bt2 (six files) |
the bowtie2 index of the draft | index_contigs |
temporary (illumina) |
blob.blobDB.json, blob.{sample}_map.bam.cov |
BlobTools database and coverage file | blob_json |
temporary |
With the default decontamination.mode: off, every contig is kept and still gets a row in
contig_taxonomy_decisions.tsv. The decontamination policy and the meaning of each reason are
explained on Decontamination.
mitochondria/¶
mitochondria/ holds the result of the mitochondrion screen.
| Path | Content | Written by | Status |
|---|---|---|---|
mitochondrial_screen.tsv |
one row per contig: class, reason, best organelle hit and its query cover, the assembler columns, concatemer_flag, and best_mito_kingdom (the kingdom of the organism of the best hit: Fungi, Metazoa or Viridiplantae; empty when that cannot be told) |
screen_mitochondria |
deliverable |
confirmed_mitochondrial.ids |
the confirmed contig IDs, one per line; empty unless mitochondria.mode: separate_confirmed |
screen_mitochondria |
intermediate |
The columns, classes and reasons are explained on Mitochondria.
eval/¶
eval/ holds the assembly QC: QUAST, BUSCO and, in the read-based modes, Qualimap, together with
the telomere search, the adapter screen and the contig summary.
| Path | Content | Written by | Status | Modes |
|---|---|---|---|---|
quast/ |
report.tsv, report.txt, report.html, report.pdf, report.tex, transposed_report.*, basic_stats/, quast.log |
genome_assembly_evaluation |
deliverable | all |
busco/short_summary.specific.<lineage>.{sample}.txt, .json |
BUSCO result for the most specific lineage | completeness |
deliverable | all |
busco/short_summary.generic.<lineage>.{sample}.txt, .json |
BUSCO result for the broad lineage; only with busco.lineage: auto |
completeness |
deliverable | all |
busco/run_<lineage>/ |
full_table.tsv (every expected gene: complete, duplicated, fragmented or missing, and where), missing_busco_list.tsv |
completeness |
deliverable | all |
busco/auto_lineage/, busco/logs/, busco/tmp/ |
BUSCO's lineage-placement runs, its logs, its tmp/ folder |
completeness |
intermediate | all |
busco/busco_tmp/ |
the lineage datasets downloaded for this sample; only with busco.lineage: auto |
completeness |
temporary | all |
hmmer_output/, busco_sequences/ in the BUSCO tree |
per-gene search results and gene sequences | completeness |
scratch | all |
qualimap/ |
Qualimap on contaminants/{sample}_map.bam, the sample's reads on the draft: qualimapReport.html, genome_results.txt (mapping rate, mean depth per contig), raw_data_qualimapReport/; an empty folder when Qualimap failed |
map_evaluation |
deliverable | illumina, longread, hybrid |
telomere_candidates.tsv |
every telomere repeat unit weighed for the assembly, the units found at the contig ends and those of the tidk database and of the literature: copies, contig ends in the telomere orientation and in the opposite one, score, whether the unit is known, and which one was chosen | telomere_units |
deliverable | all |
telomere_unit.txt |
one line: the telomere repeat unit of the assembly in canonical form, or none |
telomere_units |
intermediate; contig_summary reads it |
all |
telomere_ends.tsv |
per contig end, tidk's call for the chosen unit: status, the array's coordinates and length, its distance from the end, its strand | telomere_units |
deliverable; contig_summary reads it |
all |
adapter_query.fasta |
the adapter and barcode sequences the screen searches for | blast_adapters |
temporary | all |
adapter_blast.tsv |
BLAST's hits of the adapter and barcode sequences on the draft contigs | blast_adapters |
intermediate | all |
adapter_screen.tsv |
one row per adapter locus on the draft contigs: contig, contig length, start and end of the locus, its distance to the nearer contig end, end or internal, the longest hit and its identity, and the adapters that matched; the header line alone when none was found |
screen_adapters |
deliverable; contig_summary reads it |
all |
adapter_screen_mqc.tsv |
the sample's row of the Adapters table of the report | screen_adapters |
deliverable; MultiQC reads it | all |
contig_summary.tsv |
one row per contig of the draft assembly: length, GC, read depth and depth relative to the median, the assembler's depth and circularity, the telomere array at each end (copies) and its distance from the end, the telomere unit, rDNA units, BUSCO markers, genes, genus, the screens' calls, the adapter loci, the scaffold_N name, the verdict and its reason; written after the annotation |
contig_summary |
deliverable | all |
contig_summary_mqc.tsv |
the same table behind MultiQC's header lines, rows named {sample}: {contig} |
contig_summary |
deliverable; MultiQC reads it | all |
The columns, the verdicts and how the telomere unit is chosen are explained on Contig summary.
guide/ (hybrid)¶
In hybrid mode, guide/ holds the Illumina guide assembly and its own screen, laid out like the
sample folder itself. The guide is not delivered. QUAST reports its screened version under the
label {sample}_guide, and the Illumina pairs that map to it are the selected pairs in
01.reads/.
| Path | Content | Written by | Status |
|---|---|---|---|
guide/spades/ |
SPAdes' working folder for the guide, as spades/ above |
illumina_assembly |
intermediate |
guide/contigs_filt.fasta |
the guide after the 500 bp / 2x filter | filter_contigs |
intermediate |
guide/contaminants/{sample}_map.bam, .bai |
the trimmed Illumina pairs aligned to the guide; Qualimap reads it too | map_guide_contigs |
intermediate |
guide/contaminants/filtered.*.bt2, selected.*.bt2 |
the bowtie2 indexes of the filtered and of the screened guide | index_guide_contigs, index_selected_contigs |
temporary |
guide/contaminants/blastout, bestscore.blob.blobDB.table.txt, contig_taxonomy_decisions.tsv, {sample}_composition.txt, contigs.list |
the same files as in contaminants/ above, for the guide |
blast_guide_contigs, blob_guide_table, select_guide_contigs |
as in contaminants/ |
guide/contaminants/contigs_decontam.fasta |
the screened guide: QUAST reports it as {sample}_guide, and the read selection maps to it |
select_guide_contigs |
intermediate |
guide/contaminants/blob.blobDB.json, blob.{sample}_map.bam.cov, selected_map.sam |
BlobTools' working files; the alignments of the read selection | blob_guide_json, map_sel_contigs |
temporary |
guide/mitochondria/mitochondrial_screen.tsv, confirmed_mitochondrial.ids |
the mitochondrion screen of the guide, from BLAST alone | screen_guide_mitochondria |
deliverable, intermediate |
guide/eval/qualimap/ |
Qualimap on the Illumina pairs mapped to the guide (MultiQC row mapping Illumina QC) |
map_guide_evaluation |
deliverable |
03.taxonomy¶
03.taxonomy/ holds the ITS taxonomy, in one folder per sample. The method is described on
ITS taxonomy.
| Path | Content | Written by | Status |
|---|---|---|---|
its_windows.fasta |
one window per rDNA unit, its.window_flank bp (2,000) on each side of the 5.8S gene, turned to read SSU-ITS1-5.8S-ITS2-LSU; headers contig:start-end_strand |
its_windows |
intermediate |
its_windows.tsv |
window_id, contig, start, end, strand, anchor_hits, best_evalue, window_length |
its_windows |
deliverable |
{sample}.full.fasta, {sample}.ITS1.fasta, {sample}.ITS2.fasta |
ITSx output, one record per rDNA unit, named after its window | its_extraction |
deliverable |
{sample}.summary.txt |
ITSx summary | its_extraction |
deliverable |
{sample}_ITS_copies.txt |
one row per distinct sequence: region, sequence_id (- when rejected), length, copies, status (ok, rejected_too_short, rejected_too_long), windows |
its_classification |
deliverable |
{sample}_ITS1_taxonomy.txt, {sample}_ITS2_taxonomy.txt |
SINTAX result for the distinct sequences ({sample}_ITS1_1, ...); no header; record name, taxonomy with a confidence per rank, strand, taxonomy kept at its_taxonomy_cutoff |
its_classification |
deliverable |
{sample}.ITSx_tmp/ |
ITSx working folder | its_extraction |
scratch |
The full ITS region is listed in the copies table but not classified. A genome without a recognisable 5.8S gene gives an empty windows file, empty ITS and taxonomy files and a note in the logs, and the run continues.
04.annotation¶
04.annotation/ holds the annotation, in one folder per sample: the cleaned and renamed genome,
the repeat masking, the gene prediction and the functional annotation. The methods are described
on Repeat masking,
Gene prediction and
Functional annotation.
| Path | Content | Written by | Status | Modes |
|---|---|---|---|---|
contigs_clean.fasta |
contigs_final.fasta after funannotate clean, which removes contigs under 500 bp and duplicated contigs shorter than the N50 (the rules); original names |
funannotate_preprocess |
deliverable | all |
contigs_sort.fasta |
the same contigs sorted longest first and renamed scaffold_N: the genome that is annotated |
funannotate_preprocess |
deliverable | all |
contigs_removed_by_clean.txt |
names of the contigs funannotate clean removed; an empty file when none |
funannotate_preprocess |
deliverable | all |
contigs_mask.fasta |
contigs_sort.fasta with repeats in lowercase |
repeat_masking |
intermediate | all |
repeatmasking/ |
RepeatModeler library and RepeatMasker reports; empty with masking_method: tantan; emptied whenever the rule starts |
repeat_masking |
intermediate | all |
genemark_check.txt |
date and outcome of the GeneMark-ES test on a 200 kb slice of contigs_mask.fasta |
genemark_check |
intermediate | GeneMark |
tiberius/tiberius.gtf |
Tiberius's gene models (GTF): one transcript per gene, with exons, CDS, start and stop codons | tiberius_prediction |
intermediate | Tiberius |
tiberius/tiberius.evm.gff3 |
the same models as GFF3 for EVidenceModeler, the file funannotate predict gets with --other_gff |
tiberius_gff3 |
intermediate | Tiberius |
augustus_model.txt |
what AUGUSTUS does for the sample: the stored AUGUSTUS model it uses as it is, or training on the genome's BUSCO genes (optimised or not); copied to the top of logs/funannotate_prediction_{sample}.log |
augustus_model_check |
intermediate | all |
funannotate/predict_results/ |
the gene prediction: <Genus_species>_{sample}.gbk, .gff3, .proteins.fa, .cds-transcripts.fa, .mrna-transcripts.fa, .discrepency.report.txt, .error.summary.txt, and <model>.parameters.json (the name of the stored AUGUSTUS model, or <genus>_<species>_<sample> in lower case for a model trained on the genome) |
funannotate_prediction |
intermediate | all |
funannotate/predict_misc/, funannotate/logfiles/ |
funannotate's working files and logs | funannotate_prediction |
intermediate | all |
funannotate/annotate_results/ |
the final annotation: <Genus_species>_{sample}.gbk, .gff3, .tbl, .sqn, .agp, .contigs.fsa, .scaffolds.fa, .proteins.fa, .cds-transcripts.fa, .mrna-transcripts.fa, .annotations.txt, .clusters.txt, .stats.json, .discrepency.report.txt, and Gene2Products.must-fix.txt, Gene2Products.need-curating.txt, Gene2Products.new-names-passed.txt |
funannotate_annotation |
deliverable | all |
funannotate/annotate_misc/ |
working files of funannotate annotate, among them annotations.secretome.txt (with SignalP), genome.fixedproducts and iprscan.xml, funannotate's copy of the InterProScan XML |
funannotate_annotation |
intermediate | all |
iprscan/interproscan_out.xml |
InterProScan matches with GO terms and pathways (can be a few GB) | iprscan_annotation |
deliverable | all |
iprscan/tmp/ |
InterProScan's working folder, left in place; empty or nearly so after a finished run | iprscan_annotation |
intermediate | all |
eggnog/{sample}.emapper.annotations, .emapper.hits, .emapper.seed_orthologs |
eggNOG-mapper results | eggnog_annotation |
deliverable | all |
eggnog/eggnog_tmp/ |
eggNOG-mapper working folder | eggnog_annotation |
temporary | all |
antismash/ |
index.html (the cluster report), antismash.gbk (read by funannotate annotate), antismash.json, antismash.zip, regions.js, one <scaffold>.regionNNN.gbk per region |
antismash_annotation |
deliverable | all |
signalp6/ |
prediction_results.txt (read by funannotate annotate), output.gff3, output.json, region_output.gff3, processed_entries.fasta, proteins.for_signalp.faa, .matplotlib/ |
signalp6_annotation |
deliverable | SignalP |
.signalp6-{sample}.XXXXXX/ |
SignalP working folder; it replaces signalp6/ only after the result passed its checks |
signalp6_annotation |
scratch | SignalP |
.annotation_complete.txt, .cleanup_complete.txt |
empty markers: funannotate annotate finished; the cleanup finished | funannotate_annotation, cleanup |
intermediate | all |
clean_*/, *.log, genome.fixedproducts directly in this folder |
funannotate scratch files, if any are left; listed in logs/cleanup_{sample}.log |
cleanup | all |
In the file names, <Genus_species> is the species column of the annotation parameter table
with spaces turned into underscores, for example Fusarium_graminearum_SAMPLE1.gff3. The sample
name is also the locus-tag prefix of every gene ID.
05.amr¶
05.amr/ is written only when the AMR screen is on, and holds its results in one folder per
sample. The method, the target statuses and the columns are explained on
Antifungal resistance mutations.
| Path | Content | Written by | Status |
|---|---|---|---|
amr_summary.tsv |
one row per target protein of the species: compartment, status (evaluated, not evaluated, not found, not screened), positions compared, the verdict (resistance, conflicting, unknown, no resistance, wild type), the FungAMR mutations with their verdicts and the new mutations found, the drugs with evidence of resistance and of no resistance with their levels, a note |
amr_chroquetas |
deliverable |
amr_positions.tsv |
one row per FungAMR position of every copy read position by position: target, compartment, copy, position, reference and found amino acid, call (FungAMR mutation, new mutation, no mutation; or no alignment or position not found where the position could not be compared), verdict, the drugs with evidence of resistance and of no resistance with their levels in words, the changes with evidence of resistance at that position, ChroQueTas's drug text |
amr_chroquetas |
deliverable |
amr_summary_mqc.tsv |
the summary behind MultiQC's header lines, rows named {sample}: {target} |
amr_chroquetas |
deliverable; MultiQC reads it |
chroquetas/nuclear/, chroquetas/mitochondrial/ |
ChroQueTas's own output of the two runs, unchanged: its summary and statistics, one table per target copy, the extracted proteins, miniprot's alignments, the BLASTP comparisons, tmp/. A run that was not made has no folder: mitochondrial/ exists only when the species has cytochrome b and its mitochondrial run was made |
amr_chroquetas |
deliverable |
06.report¶
06.report/ holds the MultiQC report of the run and the files behind it.
| Path | Content | Status |
|---|---|---|
multiqc_report.html |
QUAST and BUSCO results, the contig summary table and the Adapters table of every sample of the run, and the AMR table with the AMR screen on; in the read-based modes also fastp (illumina, hybrid), NanoPlot (longread, hybrid) and Qualimap |
deliverable |
multiqc_data/ |
the tables behind the plots, for example multiqc_general_stats.txt, multiqc_busco.txt, multiqc_quast.txt, multiqc_contig_summary.txt, multiqc_adapter_screen.txt |
deliverable |
multiqc_config.yaml |
the MultiQC configuration of the run, with the sample-name rules | intermediate |
Rows are named after the tool and the sample, for example QUAST assembly QC | <sample> and
BUSCO completeness QC (<lineage>) | <sample>. A sample has two BUSCO rows with the automatic
lineage and one with a named lineage. The rows of the contig summary table are named
{sample}: {contig}, and those of the AMR table {sample}: {target}. The rows of each mode are
listed under Report. The report covers the samples of the
current run only and is rewritten when they change.
logs¶
logs/ holds a log for every per-sample rule and sample, and the logs of the steps that run once
for the whole run.
| File | Written by |
|---|---|
<rule>_{sample}.log |
every per-sample rule, for example funannotate_prediction_SAMPLE1.log |
funannotate_db.log, normalize_funannotate_db.log |
the funannotate database download and path repair |
unite_db.log |
unite_db or unite_db_local |
busco_data.log |
busco_data: the download of a named BUSCO lineage |
unite_identified.log |
unite_identified: the one-line summary of the filter and the two counts |
telomere_db.log |
telomere_db: the download of the telomere repeat database and its checksum |
univec_illumina.log |
univec_illumina: the download of UniVec, its checksum and the Illumina records kept |
chroquetas_db.log |
chroquetas_db: the download of ChroQueTas and its database, the two checksums, the unpacking (AMR screen on) |
tiberius_model.log |
tiberius_model: the download of the Tiberius fungi model, its checksum and the unpacking (Tiberius on) |
antismash_db.log or antismash_db_local.log |
the antiSMASH database rule of the run |
install_signalp6.log |
the SignalP 6 installation |
download_phix.log, build_phix.log |
the PhiX genome download and its bowtie2 index (illumina, hybrid) |
multiqc.log |
the report |
Snakemake deletes the log of a job before it runs that job again, so each log holds the latest attempt only. Copy a log you want to keep before you run again. Some messages go only to the logs:
| Only in the log | Log |
|---|---|
| the warnings of the contig selector | select_contigs_{sample}.log |
| a QUAST, Qualimap or NanoPlot failure | genome_assembly_evaluation_{sample}.log, map_evaluation_{sample}.log, map_guide_evaluation_{sample}.log, raw_long_read_qc_{sample}.log, filtered_long_read_qc_{sample}.log |
| a genome without 5.8S | its_extraction_{sample}.log |
| the share of PhiX in an Illumina library | map_phix_{sample}.log |
| fastp's and Filtlong's read totals | trim_adapters_{sample}.log, filter_long_reads_{sample}.log |
| how many SPAdes contigs the filter kept | filter_contigs_{sample}.log |
which file became contigs_all.fasta |
finalize_assembly_{sample}.log |
tidk's messages and the candidate units behind the telomere unit (the [FunFlux] telomere_units summary line and its NOTE reach the console too) |
telomere_units_{sample}.log |
| the one-line summary of the contig summary: contigs per verdict, contig ends with a telomere, median depth, BUSCO lineage | contig_summary_{sample}.log |
ChroQueTas's messages of both runs, among them the targets it could not extract (the [FunFlux] amr_chroquetas summary line and its NOTE reach the console too) |
amr_chroquetas_{sample}.log |
Snakemake writes its own log of each run to .snakemake/log/ in the launch folder. See
Troubleshooting.
Temporary files and folders a re-run replaces¶
The files and folders below are deleted during the run, either by Snakemake once no later step needs them or by the step that made them. A finished run has none of them, so they take space only while the run goes on.
| Path | Modes |
|---|---|
01.reads/{sample}/illumina/{sample}_nophix_R1.fastq, _R2.fastq |
illumina, hybrid |
01.reads/{sample}/illumina/{sample}_trim_R1.fastq, _R2.fastq |
illumina, hybrid |
01.reads/{sample}/long/{sample}_trimmed.fastq.gz |
longread, hybrid (ONT samples) |
02.assembly/{sample}/eval/adapter_query.fasta |
all |
02.assembly/{sample}/contaminants/{sample}_map.bam and .bai |
contigs + screen (kept in the read-based modes) |
02.assembly/{sample}/contaminants/contigs.*.bt2 |
illumina |
02.assembly/{sample}/contaminants/blob.blobDB.json, blob.{sample}_map.bam.cov |
screen |
02.assembly/{sample}/guide/contaminants/filtered.*.bt2, selected.*.bt2, blob.blobDB.json, blob.{sample}_map.bam.cov, selected_map.sam |
hybrid |
02.assembly/{sample}/polypolish/draft.fasta, its bwa index files, align_1.sam, align_2.sam, filtered_align_1.sam, filtered_align_2.sam, polished_raw.fasta |
hybrid |
02.assembly/{sample}/eval/busco/busco_tmp/ (busco.lineage: auto), and BUSCO's hmmer_output/ and busco_sequences/ |
all |
03.taxonomy/{sample}/{sample}.ITSx_tmp/ |
all |
04.annotation/{sample}/eggnog/eggnog_tmp/ |
all |
04.annotation/{sample}/.signalp6-{sample}.XXXXXX/, the SignalP working folder, and 00.resources/signalp6/.signalp6-install-*/ |
SignalP |
a folder in the system's temporary directory, for its_windows and its_classification |
all |
a folder in the system's temporary directory, for genemark_check |
GeneMark |
The folders below are outputs that Snakemake deletes before it runs their rule again.
| Folder | Rule |
|---|---|
01.reads/{sample}/long/raw_qc/, filtered_qc/ |
raw_long_read_qc, filtered_long_read_qc |
02.assembly/{sample}/spades/, 02.assembly/{sample}/guide/spades/ |
illumina_assembly |
02.assembly/{sample}/hifiasm/ or flye/ |
long_read_assembly |
02.assembly/{sample}/medaka/ |
long_read_consensus |
02.assembly/{sample}/eval/quast/ |
genome_assembly_evaluation |
02.assembly/{sample}/eval/busco/ |
completeness |
02.assembly/{sample}/eval/qualimap/, 02.assembly/{sample}/guide/eval/qualimap/ |
map_evaluation, map_guide_evaluation |
04.annotation/{sample}/funannotate/ |
funannotate_prediction |
04.annotation/{sample}/antismash/ |
antismash_annotation |
04.annotation/{sample}/eggnog/ |
eggnog_annotation |
05.amr/{sample}/chroquetas/ |
amr_chroquetas |
00.resources/antismash/databases/ |
antismash_db or antismash_db_local |
06.report/multiqc_data/ |
multiqc |
Files you put into these folders are lost on a re-run
The same holds for repeatmasking/, which repeat_masking empties itself, and for
signalp6/, which signalp6_annotation replaces as a whole. Because funannotate annotate
writes into funannotate/, a re-run of funannotate_prediction also deletes
annotate_results/, and the annotation runs again. With antismash_db_local, a re-run
deletes only the links, never your database.
.snakemake_timestamp inside such a folder is Snakemake's time stamp for it, so leave it in
place. What triggers a re-run is explained on
Running FunFlux.
Outside the output folder¶
A run also writes outside directories.output_dir, in the places below.
| Where | What |
|---|---|
directories.funannotate_db |
the funannotate database: archive (funannotate_db_1.8.17_2026-10-08.tar.gz by default, 2.1 GB) and its .sha256, both kept after unpacking; the unpacked database, whose stored paths normalize_funannotate_db rewrites in place; 8.1 GB in total |
.snakemake/ in the launch folder |
Snakemake's records of what was made and how, locks, markers of unfinished jobs, run logs, and the conda environments unless --conda-prefix names another folder |
| the BlobTools conda environment | nodesDB.txt, built by BlobTools from nodes.dmp and names.dmp on first use |
the Medaka conda environment, or ~/.medaka/data when it cannot be written |
the weights of each Medaka model, downloaded by the model check the first time a model is used |
| the pip cache of the user | the wheel pip builds while installing SignalP 6 |
The databases are described on Reference databases, and the environments and the launch folder on Running FunFlux.