Validation on public genomes¶
This page shows what FunFlux produced on two public genomes, and how to repeat the runs. Read it to see, on real data, what each read-based mode delivers and how much the gene-finder settings change the annotation.
Botrytis cinerea strain B05.10 was run from ONT and Illumina reads in the three read-based modes,
illumina, longread and hybrid. Five comparison runs then annotated the genome of its FunFlux
2.0.0 hybrid run again in contigs mode. Cordyceps cateniannulata strain GXU-8616 was run from PacBio HiFi
reads, alone and with MGISEQ short reads
(PacBio HiFi reads). Flye has run in
longread mode on both genomes but not in hybrid mode, where every run used hifiasm, the
default assembler. The results are measurements on these two genomes, so read the limitations
below before the numbers.
The four runs with ONT reads were made with FunFlux 2.1.0, whose main change, ONT adapter
trimming, applies only to ONT reads
(Adapter trimming in the runs with ONT reads). In those runs it changed the
contig ends and the mitochondrion much more than the chromosomes or the genes. The other nine
runs, with Illumina, MGISEQ or HiFi reads or in contigs mode, were made with FunFlux 2.0.0 and
not repeated. The five contigs-mode runs therefore annotated the genome of the 2.0.0 hybrid
run, not that of the 2.1.0 hybrid run in the assembly tables. Each table, or the text just
before it, says which version its numbers come from.
Terms used on this page
| Tiberius | a deep-learning gene finder with a fungi model its authors trained on many fungal genomes; on by default, it adds its gene models to funannotate's evidence |
| annotation parameter table | the tab-separated file named by files.annotation_params, one row per sample: name, species, a protein FASTA of related fungi and, optionally, an AUGUSTUS model |
| protein evidence | proteins aligned to the genome to support the gene models: the FASTA in column 3 of the annotation table, plus UniProt Swiss-Prot, always added |
| stored AUGUSTUS model | the AUGUSTUS parameters trained earlier for one species, kept in trained_species/ of the funannotate database; named in column 4, they are used as they are |
| telomere array | tandem copies of the telomere repeat unit at a contig end; by default 5 or more copies within 25,000 bp of the end make a telomere |
| contig summary | the table 02.assembly/{sample}/eval/contig_summary.tsv: one row per contig of the draft, with its evidence (telomeres, depth, rDNA units, genes) and a verdict such as chromosome or rDNA_array |
| adapter trimming | removing the ONT sequencing adapter, and the barcode after it, from the reads before assembly; new in FunFlux 2.1.0 (Adapter trimming and the adapter screen) |
| barcode block | in a native-barcoded ONT library, the 40 bp that follow the adapter: a short flank, the 24-bp barcode that marks the sample and a second flank; the adapter and this block are the 68 bp trimmed from these reads |
| concatemer | a contig that holds more than one copy of the mitochondrial genome, joined end to end; flagged (concatemer_flag Y) when its length_ratio, the contig length divided by that of the mitochondrial genome it best matches in BLAST, is above 1.5 and the assembler did not report it circular; never trimmed |
| MGISEQ | a short-read sequencer from MGI Tech (DNBSEQ technology) that produces paired reads like Illumina's; FunFlux ran such reads as Illumina pairs |
The numbers record what FunFlux does on a well-studied genome, not its accuracy on a new one
- One genome for ONT and Illumina reads (n = 1). Nothing here shows how FunFlux does with ONT or Illumina reads of other fungi. The HiFi runs, on another genome, have their own limitations (below).
- Two versions of FunFlux. The nine runs made with FunFlux 2.0.0 were not repeated with
2.1.0. Version 2.1.0 changes nothing in how Illumina, MGISEQ and HiFi reads are filtered and
assembled. Its new BLAST settings give some contigs another genus in the contamination
screen, but with the default settings they change no genome file
(FunFlux 2.0.0 and 2.1.0 compared).
Its mitochondrion screen would change the files of the
illuminarun: three contigs of human mitochondrial DNA would stay incontigs_final.fastainstead of going tocontigs_mitochondrial.fasta(Other results). The contig summaries of the nine runs took the read depth from BlobTools, as FunFlux 2.0.0 did. The four runs with ONT reads were made before the last changes of 2.1.0: InterProScan without EBI's lookup service, how the mitochondrion screen reads the titles of BLAST records and checks the organism of its best match, and how the contig summary measures read depth. InterProScan asked the lookup service, got no answer and computed every match itself, as it now does from the start. Run again with the other changes on the runs' own files, the screen gave the same result in all four, and the contig summary the same verdicts. - Tiberius has seen genes of this species. B. cinerea is one of the species the Tiberius
fungimodel was trained on (its training list). What Tiberius adds here may be more than it adds on a species it has not seen. - A stored AUGUSTUS model for B. cinerea,
botrytis_cinerea, is in the funannotate database. Only one comparison run used it. Every other run trained AUGUSTUS on the genome's own BUSCO genes. - The protein evidence given to funannotate was the reference annotation's own 13,703 proteins, beside UniProt Swiss-Prot, which FunFlux always adds and which holds 194 reviewed B05.10 proteins. It pulls the gene models towards the reference. The agreement with the reference is therefore an upper bound, not what a new species gets with proteins of related fungi. Every run had the same evidence, so the runs stay comparable with each other.
- The reference annotation is not a perfect answer key. NCBI lists it as submitted by Syngenta Biotechnology, Inc. and carried into RefSeq on 2018-04-17 by its annotation propagation pipeline. The RefSeq records are marked provisional (not yet given final NCBI review). The genome paper, whose authors include Syngenta staff, predicted the genes, used RNA-seq of more than 20 samples to check and improve them, and curated chromosome 1 by hand (van Kan et al. 2017). A FunFlux gene that differs from the reference is not necessarily wrong.
- Run times come from one shared server, with other runs going on at the same time, so they are indicative only.
What this page is¶
The page is a record of what FunFlux 2.1.0 and 2.0.0 produced in these runs, with their settings. It checks that each mode gives a sensible genome and gene set, and it measures how much two annotations of the same genome, with the same gene-finder settings, differ. It is not a benchmark, because it has one genome per read type and one replicate. Nor is it a comparison with other tools or pipelines, or a measure of accuracy on a species the gene finders have not seen.
B05.10 was chosen because it has a gapless genome, a gene set and public reads of the strain itself. The assembly, the genes, the mitochondrion and the β-tubulin change can therefore be set against published records:
- A gapless reference genome, which its authors call near-finished: 18 chromosomes in 18 sequences without gaps, 42.6 Mb.
- A reference annotation of 11,698 protein-coding genes.
- Public reads of the strain: ONT reads from the reference's own sample record, and Illumina pairs of a lab stock.
- Features to check: telomeres at both ends of 10 of the 18 reference chromosomes (van Kan et al. 2017), and the β-tubulin change E198A, which the reference protein carries too (AMR worked example).
Data and settings¶
The B05.10 runs used the public reference of the strain and two public read sets. Depth is the number of bases divided by the reference length.
| Data | Accession | Details | Used by |
|---|---|---|---|
| Reference genome and annotation | GCF_000143535.2 (assembly ASM14353v4) | 18 chromosomes, 42,630,066 bp, PacBio reads assembled in 2015; 11,698 protein-coding genes with 13,703 mRNAs and proteins (RefSeq, 2018) | its proteins: column 3 of the annotation parameter table in every run; its genome and genes: the comparisons on this page |
| ONT reads | SRR40741277 | PromethION, 315,306 reads, 5.79 Gb (about 136x); BioSample SAMN02953628, the reference's own | longread 136x (hifiasm and Flye), hybrid |
| ONT subsample | the first 95,000 reads of SRR40741277 | 1.78 Gb (about 42x) | longread 42x + Medaka |
| Illumina reads | SRR10692911 | HiSeq 2000, 11,963,877 pairs, reads of up to 150 bp, 3.35 Gb (about 79x); BioSample SAMN13563037, a stock named B05.10-1 | illumina, hybrid |
The ONT reads come from the same sample record as the reference. The Illumina reads come from another lab's stock of the strain, so a few real differences between the two stocks are possible.
The ONT reads come from a native-barcoded library. Reads 1 to about 95,000 of the file carry almost no adapter or barcode, most likely because they were trimmed at basecalling, while most of the later reads carry both. The 42x subsample is those first reads, so FunFlux 2.1.0 counted them as already trimmed and left them as they were (Adapter trimming in the runs with ONT reads).
The public ONT file names no basecaller model, so Medaka cannot work its model out: with auto, it
reads the model from the read headers (The Medaka model). The two
136x runs and the hybrid run therefore skip Medaka. The 42x run names a model,
r1041_e82_400bps_sup_v5.2.0, which is a guess, because the flow cell and the basecaller are not
known.
In the next table, the five mode runs are those in illumina, longread and hybrid mode, and
the five comparison runs are the annotations in contigs mode. The table lists the settings that
differ from the configuration template, apart from paths: the input and output folders, the
databases, the annotation table, InterProScan and the SignalP 6 archive. Keys missing from the run
configurations took their defaults. Each run used the template of its own version. Apart from the
new UniVec download address and its checksum, the two templates differ in two settings, which the
table leaves out: blast_max_target_seqs, 50 in FunFlux 2.0.0 and 10 in 2.1.0, and ont_adapter, new in
2.1.0. The four runs with ONT reads kept its default, detect, so FunFlux worked out from the
reads what to trim, if anything.
| Setting | Template default | The five mode runs | The five comparison runs |
|---|---|---|---|
mode |
illumina |
longread (three times), illumina, hybrid |
contigs, on the contigs_final.fasta of the 2.0.0 hybrid run |
assembler (under longread or hybrid) |
hifiasm |
hifiasm; flye in one 136x run |
not used |
medaka_model (under longread or hybrid) |
auto |
false (the two 136x runs and hybrid); r1041_e82_400bps_sup_v5.2.0 (42x) |
not used |
short_read_guidance (under hybrid) |
false |
true in the hybrid run: Filtlong guided by the Illumina reads, with filtlong_split: 1000 |
not used |
resources.threads |
24 | 16 to 32 (the run-time table below) | 20 |
resources.ram_gb |
128 | 256 | 256 |
directories.genemark_dir |
empty: no GeneMark-ES | a GeneMark-ES installation, so GeneMark-ES on | the same, but genemark.mode: off in two runs |
parameters.tiberius.mode |
on |
on |
on, but off in two runs |
parameters.signalp6.mode |
off |
fast |
fast |
parameters.amr.chroquetas |
off |
on |
off |
| Annotation table, column 3 (proteins) | proteins of related fungi | the reference's own proteins | the same |
| Annotation table, column 4 (AUGUSTUS model) | -: trained on the genome |
- |
-, but botrytis_cinerea in one run |
One of these changes shapes every gene result of the B05.10 runs: column 3 of the annotation table
gave the reference's own proteins as evidence (see the limitations above). The other changes
concern the mode, the assembler, the Medaka model, the Filtlong guidance of the hybrid run, and
the CPU and memory. Three optional tools were also switched on: GeneMark-ES, SignalP 6 and the AMR
screen. The five comparison runs, in addition, each changed one gene-finder setting, or two (the
run with neither GeneMark-ES nor Tiberius), or none (the replicate).
Adapter trimming in the runs with ONT reads¶
Before Filtlong, FunFlux 2.1.0 looks for the ONT adapter at the start of every read and works out
the sequence to trim: the adapter and, in a barcoded library, the barcode block after it. When
fewer than 1 % of the reads start with the adapter, and fewer than 1 % with a barcode block, the
reads count as already trimmed and are left as they are; otherwise fastplong removes that
sequence. After assembly, the adapter screen searches every draft assembly for adapters and
barcodes (Adapter trimming and the adapter screen). The three
runs on all the ONT reads, the two 136x longread runs and the hybrid run, start from the same
read file and chose the same sequence to trim.
| What was counted | longread 136x (hifiasm and Flye) and hybrid |
longread 42x + Medaka |
|---|---|---|
| Reads that start with the adapter | 121,568 of 315,306 (38.6 %), 92.9 % of them followed by native barcode NB24; 76,346 more start with the barcode block alone | 13 of 95,000 (0.01 %); 41 more start with a barcode block alone |
| Sequence trimmed | the adapter and the barcode block, 68 bp | none: fewer than 1 % of the reads start with the adapter or a barcode block, so the reads count as already trimmed |
| Reads trimmed by fastplong | 218,788; 20.3 Mb removed, 0.35 % of the bases; 72 reads cut in two where the sequence sat inside the read | none |
| Reads given to the assembler that still start with the adapter | 0.11 % (hybrid: 0.02 %) |
0.01 % |
| Contig ends with adapter or barcode | none | one: 33 bp of native barcode NB21 at the end of the chromosome 13 contig |
fastplong trims more reads than the scan counts, because it also searches the end of each read and allows a quarter of the bases to differ, while the scan counts only exact matches to the core of the adapter at the read start.
Trimming changed the nuclear genome only a little. The two 136x hifiasm runs, longread and
hybrid, still have all 18 chromosomes in one contig, but their rDNA pieces and some contig ends
differ, and the longread run has one contig more: a 70.9-kb second copy of part of
chromosome 7, at low read depth, with 18 genes.
hifiasm gives the same assembly again from the same reads, so these are effects of the trimming,
not run-to-run variation. The contig ends changed, and the mitochondrion most of all.
- Contig ends. The adapter screen found no adapter or barcode in the contigs of the three
trimmed runs. The Flye contigs reach 21 telomeric chromosome ends in both versions; beyond the
end of the reference chromosome, these carried a median of 72 bp in 2.0.0 and 8 bp in 2.1.0.
The tails were most likely adapter and barcode, which untrimmed reads leave at contig ends, most
often just outside the telomere
(Adapter trimming and the adapter screen). Contigs with a
telomere array at both ends numbered 15 in both versions in the hifiasm 136x run, 6 in both in
the Flye run, and 16 against 14 in the
hybridrun. - The 42x run assembled the same reads as in 2.0.0 and gave the same assembly: its contigs are identical over the 99.9 % of their bases that align to the reference. The adapter screen still found 33 bp of native barcode NB21 at one contig end, probably from the 2 reads given to hifiasm that carry it; the library's own barcode is NB24. FunFlux reports such a contig end and does not trim it.
- The mitochondrion changed in all three 136x runs (Other results).
Assembly per mode¶
The first table sets the genome of each mode run against the 18 chromosomes of the reference.
Every run with long reads used hifiasm, the default assembler, except the one marked Flye, which ran
Flye 2.9.6 with --nano-hq, as flye_input_mode: auto chose.
| Run | FunFlux | Contigs | Total length (Mb) | N50 (Mb) | Chromosomes in one contig (of 18) | Share of each chromosome covered (%) | Contigs with telomeres at both ends |
|---|---|---|---|---|---|---|---|
| Reference (GCF_000143535.2) | – | 18 | 42.63 | 2.62 | 18 | – | 10 (van Kan et al. 2017) |
longread, ONT 136x |
2.1.0 | 33 | 44.15 | 2.58 | 18 | 99.8 to 100 | 15 |
longread, ONT 136x, Flye |
2.1.0 | 21 | 42.95 | 2.58 | 16 | 99.8 to 100 | 6 |
longread, ONT 42x + Medaka |
2.1.0 | 18 | 42.97 | 2.63 | 18 | 99.8 to 100 | 14 |
illumina, Illumina 79x |
2.0.0 | 409 | 42.23 | 0.31 | 0 | 96.0 to 99.8 | 0 |
hybrid, ONT 136x + Illumina 79x |
2.1.0 | 34 | 44.24 | 2.58 | 18 | 99.8 to 100 | 16 |
On B05.10, the three hifiasm runs with long reads put each of the 18 chromosomes into one contig and cover almost all of each. Flye, on the same 136x reads, is as contiguous (N50 2.58 Mb), but puts 16 chromosomes into one contig and ends fewer contigs in a telomere array. The Illumina-only run gives 409 contigs, no chromosome in one piece, and leaves up to 4 % of a chromosome uncovered.
- Contigs and length are those of
contigs_final.fasta, the nuclear genome. The hifiasm 136x andhybridassemblies are 1.5 and 1.6 Mb longer than the reference. Most of the extra length is in 13 and 14 contigs that the contig summary callsrDNA_array(1.02 Mb in the hifiasm 136x run, 1.08 Mb in thehybridrun), which are pieces of the rDNA array. The 42x and Flye runs have no such contigs. - The Flye run has chromosomes 1 and 13 in two pieces each (2.72 and 1.39 Mb; 1.95 and 0.31 Mb). Its genome is 0.32 Mb longer than the reference. It has four contigs fewer than the 2.0.0 Flye run. Repeat pieces of 7.6 to 17.5 kb that were separate contigs in 2.0.0 are now part of the chromosome 5 and 16 contigs, or were not assembled again.
- Telomeres come from FunFlux's contig summary: arrays of the
repeat unit it chose,
AACCCT, at both contig ends.AACCCTis tidk's canonical form ofTTAGGG, the same repeat read on the other strand. The hifiasm long-read runs have 14 to 16 such contigs, and in each, 2 to 4 more chromosomes lack an array at one end. In the Flye run, 23 contig ends carry an array, against 32 to 35 in the hifiasm long-read runs. The reference's 10 comes from its paper, not from FunFlux's search, so it is not the same measure. - Filtlong guidance was on in the
hybridrun. The unguidedlongread136x run, on the same ONT reads, has 33 contigs against 34, and all 18 chromosomes in one contig in both. That is one reason the guidance is off by default (Filtlong guidance).
The second table gives the differences of each assembly from the reference, and the run time.
| Run | FunFlux | Substitutions per Mb | Small indels per Mb | Run time (h) | Cores |
|---|---|---|---|---|---|
longread, ONT 136x |
2.1.0 | 35.1 | 35.2 | 10.6 | 28 |
longread, ONT 136x, Flye |
2.1.0 | 35.3 | 33.3 | 9.8 | 20 |
longread, ONT 42x + Medaka |
2.1.0 | 37.9 | 30.9 | 9.2 | 16 |
illumina, Illumina 79x |
2.0.0 | 14.8 | 12.2 | 7.9 | 24 |
hybrid, ONT 136x + Illumina 79x |
2.1.0 | 38.2 | 23.9 | 11.1 | 32 |
Every assembly differs from the reference by 15 to 38 substitutions and 12 to 35 small indels per Mb. In the long-read assemblies most substitutions sit in a few regions, and in every run most small indels sit in runs of identical bases. Each run took 8 to 11 hours.
- Substitutions are not spread out. In each long-read assembly 95 % or more of them fall in ten windows of 10 kb of the reference, and 79 to 88 % in the first 50 kb of chromosome 2. Six or seven other chromosome contigs run past the ends of their reference chromosomes, and that extra sequence aligns there, to the most similar stretch of the reference. These substitutions therefore most likely mark chromosome-end sequence that the reference lacks, not errors along the whole genome.
- Between runs, the substitution counts move with those contig ends. The chromosome 10
contig runs 13 kb past the end of its reference chromosome in the 2.0.0
longreadrun and 45 kb in the 2.1.0hybridrun, far enough to add 110 substitutions at the start of chromosome 2; in the other two runs it stops 7 to 8 kb past the end. The rDNA pieces of the 2.1.0longreadandhybridruns add 19 and 86 more, where they align to an rDNA unit at the start of chromosome 4 (2 in each 2.0.0 run). That is most of why thehybridrun now has more substitutions than the hifiasm 136x run (38.2 against 35.1 per Mb), where it had fewer in FunFlux 2.0.0 (32.0 against 38.9). - Small indels, of 1 to 10 bp, are spread out. In every run three quarters or more of them
(76 to 86 %) sit in a run of at least 3 identical bases of the reference. The
hybridassembly, corrected with the Illumina reads by Polypolish, has about a third fewer than the hifiasm 136x assembly without Medaka. The 42x run with Medaka also differs from the hifiasm 136x run in depth, so it does not measure Medaka alone, while Medaka on the 42x run does. The Illumina contigs differ least, but they cover less of each chromosome. - Not an error rate. Some of these differences may be errors of the reference itself or real differences between lab stocks. The counts compare the runs with each other.
- Run time is that of the main Snakemake run, from its log. InterProScan took the largest share: 4.0 to 6.6 h of each 2.1.0 run, as it computed every match itself. EBI's lookup service, which returns matches already computed, did not answer InterProScan 5 in November 2026, and FunFlux 2.1.0 does not ask it (Functional annotation).
To count the chromosomes and the differences, each contigs_final.fasta was aligned to the
reference with minimap2 2.31 (-x asm5 -c --cs). A contig is placed on the chromosome that most of
its bases align to, and a chromosome counts as one contig when the largest contig placed on it is
at least 97 % of its length. The share of each chromosome covered counts alignments with a mapping
quality of at least 5. Differences are counted in the alignments with a mapping quality of at
least 30, per Mb of aligned contig.
Medaka on the 42x run¶
The 42x run keeps both the assembly that Medaka polished (contaminants/contigs_decontam.fasta)
and Medaka's result (medaka/consensus.fasta). Medaka can therefore be measured alone, on the same
reads and the same assembly, before and after. QUAST 5.3.0 compared both with the reference, and
BUSCO 6.0.0 scored both, and the reference, with ascomycota_odb12. These numbers were measured
on the 2.0.0 run. The 2.1.0 run gave the same assembly before and after Medaka
(Adapter trimming in the runs with ONT reads), so they hold for it too.
| Before Medaka | After Medaka | Reference | |
|---|---|---|---|
| Indels | 1,879 | 1,590 | – |
| of them up to 5 bp | 1,717 | 1,458 | – |
| of them longer | 162 | 132 | – |
| Mismatches | 1,684 | 1,698 | – |
| Contigs, misassemblies, genome fraction | 19, 30, 99.98 % | the same | – |
| BUSCO complete (of 2,826) | 99.2 % | 99.2 % | 99.3 % |
| BUSCO genes with internal stop codons | 483 | 479 | 482 |
Medaka removed 289 indels, 15 %, most of them 5 bp or shorter, and added 14 mismatches. The number of contigs and of misassemblies, the genome fraction and the BUSCO completeness did not change. The BUSCO genes with internal stop codons went from 483 to 479, but Medaka's gain is too small to show in the genes. The reference itself has as many such genes (482), so that count measures BUSCO's alignments, not the assembly. Medaka took about 15 minutes on 12 threads.
- The model,
r1041_e82_400bps_sup_v5.2.0, is a guess, because the public reads carry no basecaller tag in their headers. The reads look like R10.4.1 reads called with a "sup" model (median identity to the reference 98.97 %, median read quality Q20.5, on 20,000 reads), so the guess is plausible. - These counts are QUAST's, over all aligned bases. The table of differences under Assembly per mode counts differently (minimap2, mapping quality of at least 30, indels of 1 to 10 bp), so the two tables cannot be compared number for number.
Gene models per mode¶
The gene models of each mode run were set against the reference annotation, to see how much the assembly changes the genes.
| Run | FunFlux | Protein-coding genes | BUSCO complete (of 1,312) | Reference genes found | FunFlux genes that match | Matching genes |
|---|---|---|---|---|---|---|
| Reference (RefSeq) | – | 11,698 | – | – | – | – |
longread, ONT 136x |
2.1.0 | 11,837 | 1,299 (99.0 %) | 90.6 % | 89.6 % | 10,606 |
longread, ONT 136x, Flye |
2.1.0 | 11,798 | 1,302 (99.2 %) | 90.2 % | 89.5 % | 10,564 |
longread, ONT 42x + Medaka |
2.1.0 | 11,789 | 1,300 (99.1 %) | 90.2 % | 89.6 % | 10,564 |
illumina, Illumina 79x |
2.0.0 | 11,704 | 1,302 (99.2 %) | 90.4 % | 90.5 % | 10,590 |
hybrid, ONT 136x + Illumina 79x |
2.1.0 | 11,838 | 1,302 (99.2 %) | 90.5 % | 89.6 % | 10,602 |
On B05.10, the assembly mode and the assembler made little difference to the genes
The runs predict 11,704 to 11,838 protein-coding genes, and 10,564 to 10,606 of them match a reference gene: a spread of 42, under 1 % of the genes.
- BUSCO complete is the number of BUSCO
dikarya_odb9genes found complete among the predicted proteins, as funannotate annotate reports it. The five runs differ by at most three BUSCO genes. - Between versions, each 2.1.0 run has 8 to 38 more genes than the 2.0.0 run of the same mode, and between 21 fewer and 15 more matching genes. The 42x run annotated the same genome in both versions and still differs by 11 genes and 10 matching genes, so differences of this size can arise without any change in the genome (Repeated runs). In the hifiasm 136x run, 18 of the 35 extra genes lie on the low-depth copy of part of chromosome 7 that only the trimmed reads produced (Adapter trimming in the runs with ONT reads).
- Reference genes found is the share of the reference's gene loci with a matching FunFlux gene (gffcompare's locus sensitivity). FunFlux genes that match is the share of FunFlux genes with a matching reference gene (locus precision). Both are about 90 % in every run.
- A match means that the coding part of the FunFlux gene has the same introns as a reference transcript, while its start and stop may differ. A gene without introns matches when the two overlap almost completely.
- tRNA genes, 211 in every run, are left out of all counts.
To compare the genes, Liftoff 1.6.3 carried the reference genes onto the genome FunFlux annotated: all 11,698 of them, but 11,697 onto the Illumina assembly. Then gffcompare 0.12.10 compared the coding parts of the two gene sets (Shumate & Salzberg 2021; Pertea & Pertea 2020). These tools were used for this page only and are not part of FunFlux.
Repeated runs and the gene finders¶
To tell run-to-run noise from the effect of each gene finder, one genome was annotated six times,
all with FunFlux 2.0.0. It is the genome of the 2.0.0 hybrid run (33 contigs, 44.05 Mb), not
the 2.1.0 hybrid genome in the tables above. That run annotated it, and so did five
contigs-mode runs on its contigs_final.fasta. The five ran at the same time, each with 20 CPU
threads instead of the hybrid run's 32. All six annotated the same masked genome, byte for
byte. The reference run, the 2.0.0 hybrid run, used Tiberius, GeneMark-ES and AUGUSTUS trained
on the genome. GeneMark-ES is off by default, so the run without it is the one with the default
settings.
| Run | What changed, besides the mode and the threads | Protein-coding genes | Genes identical to the reference run | Matching genes | Matching genes, difference from the reference run |
|---|---|---|---|---|---|
Reference (the 2.0.0 hybrid run) |
– | 11,830 | – | 10,623 | – |
| Replicate | nothing | 11,825 | 11,718 | 10,619 | −4 |
| No GeneMark-ES (the default settings) | genemark.mode: off |
11,834 | 11,253 | 10,590 | −33 |
| No Tiberius | tiberius.mode: off |
11,729 | 10,494 | 10,257 | −366 |
| Neither | both off; AUGUSTUS, SNAP and GlimmerHMM remain | 11,503 | 9,528 | 9,630 | −993 |
| Stored AUGUSTUS model | annotation table, column 4: botrytis_cinerea |
11,934 | 11,277 | 10,694 | +71 |
In these runs, two annotations of the same genome with the same gene-finder settings differ at about 1 % of the genes, but by only 4 matching genes. Differences of a few hundred genes are therefore unlikely to be noise. Tiberius matters most: without it about 3 % of the matching genes are lost, and about 9 % without both Tiberius and GeneMark-ES. GeneMark-ES on its own makes a small difference (33 genes), which one replicate cannot separate from noise. The stored B. cinerea AUGUSTUS model adds 71. Read these numbers with the head start described in the note below.
- The replicate. 112 of the 11,830 genes of the reference run differ in the replicate. The matches lost (38) and gained (34) almost cancel, hence the difference of 4.
- Noise. One replicate is one measurement of the run-to-run noise, not its range, and it holds any effect of the thread count as well.
- The stored AUGUSTUS model is AUGUSTUS's model for B. cinerea itself.
- Identical means the same coding intervals: every exon, the start and the stop. Run-to-run differences explains which steps differ between runs with the same input and settings, and why.
- Run time. Each comparison run took 7.6 to 9.5 h.
Tiberius and the stored AUGUSTUS model had a head start on this species
Tiberius was trained on B. cinerea among many other fungi, and the stored AUGUSTUS model is a B. cinerea model. Both may therefore add more here than on a species they have not seen. Every run also had the reference's own proteins as evidence, which brings all runs closer to the reference and may hide part of what the gene finders add. These runs are consistent with Tiberius being on by default and GeneMark-ES being optional (Gene prediction), but they do not measure what Tiberius adds on a new species.
Other results¶
The ITS taxonomy and the AMR screen gave the same result in all five mode runs, and the four runs with ONT reads gave the same result in both versions. In these runs they depend neither on the mode nor on the assembler:
- ITS taxonomy. The main ITS2 sequence gives the genus Botrytis (confidence 0.99) and the species B. caroliniana (0.83), not the strain's species. The main ITS1 sequence stops at the family Sclerotiniaceae (0.93). See ITS taxonomy.
- AMR screen. It finds β-tubulin E198A, with the verdict
resistance(carbendazim, iprodione). Bos1 and OS1 are wild type, and cytochrome b is not evaluated. See the worked example of the AMR page.
The mitochondrion was found in every run (Mitochondria). The next
table gives it per run, with the verdicts of the contig summary
(worked example, from the FunFlux 2.0.0
longread 136x run). The illumina column comes from FunFlux 2.0.0, the others from 2.1.0.
| Per run | longread 136x |
longread 136x, Flye |
longread 42x + Medaka |
illumina (2.0.0) |
hybrid |
|---|---|---|---|---|---|
Mitochondrial contigs, in contigs_mitochondrial.fasta (bp) |
139,240: a full copy, then 41 kb of it again and a 15.8-kb inverted copy of part of it; flagged as a concatemer | 79,494 and 2,842: together one complete copy | 116,252: a full copy with 34 kb repeated at its ends; not flagged | 82,466, plus three contigs of human mitochondrial DNA, 572 to 1,139 bp | 122,980: a full copy with 41 kb repeated at its ends, one and a half copies; not flagged |
Contig summary: chromosome |
15 | 6 | 14 | 0 | 16 |
chromosome_arm |
3 | 11 | 4 | 10 | 2 |
rDNA_array |
13 | 0 | 0 | 0 | 14 |
nuclear_contig |
0 | 4 | 0 | 260 | 0 |
nuclear_fragment |
0 | 0 | 0 | 31 | 0 |
repeat |
0 | 0 | 0 | 73 | 0 |
low_depth |
2 | 0 | 0 | 34 | 2 |
unclassified |
0 | 0 | 0 | 1 | 0 |
mitochondrion |
1 | 2 | 1 | 4 | 1 |
| All contigs | 34 | 23 | 19 | 413 | 35 |
No 2.1.0 run gives the mitochondrion as one circular contig of about the published length,
82,212 bp (KC832409). In FunFlux 2.0.0 both 136x longread runs did: 82,351 bp with hifiasm and
82,338 bp with Flye. In the 2.1.0 longread 136x run, hifiasm gives the 139,240-bp contig of the
table. Flye gives two linear contigs that together make one complete copy, 82,336 bp: a single
read adds a side branch to its assembly graph at both places where the two contigs meet, so Flye
did not close the circle. The hybrid run went from about two copies (175,274 bp) to one and a
half.
In the longread 136x run, the trimming caused the change. Run again on the same trimmed reads,
hifiasm gave the same assembly, base for base. Run on the untrimmed reads, filtered by Filtlong as
in 2.0.0, it gave the 2.0.0 assembly back, with the circle of 82,351 bp. Trimming 218,788 reads
(69 %) was enough to send hifiasm along another path through the tangled mitochondrial part of its
assembly graph; the nuclear genome hardly changed. For Flye this was not tested. Whether trimming
helps or harms the mitochondrion in general cannot be said from these runs: in the hybrid run
the contig went from about two copies to one and a half. On these reads, small changes in the
input changed the mitochondrion far more than the nuclear genome.
- Check a mitochondrial contig before you use it: compare its length with a published
mitochondrial genome of the species, if there is one, and read
length_ratioandconcatemer_flaginmitochondrial_screen.tsv(Concatemers). The flag needs alength_ratioabove 1.5, so it misses contigs of about one and a half copies: thehybridcontig (ratio 1.50) and the 42x contig (1.41) are not flagged. - The three small contigs of the
illuminarun are human mitochondrial DNA: their best BLAST hits, over their whole length, are human mitochondrial genomes. They most likely come from a few human reads in the Illumina library. FunFlux 2.0.0 confirmed them, because they match mitochondrial genomes, and put them incontigs_mitochondrial.fastabeside the fungal mitochondrion. FunFlux 2.1.0 also checks the organism of the best match. Run again on the guide assembly of thehybridrun, which holds the same three contigs because it is built from the same Illumina reads, its screen calls themforeign_mitochondrial. In anilluminarun they would therefore stay incontigs_final.fasta, where the contamination screen treats them like any other contig and the contig summary calls themforeign_mitochondrion(Mitochondria).
In the contig summary, every hifiasm run with long reads has 18 contigs that are chromosome or
chromosome_arm, one per chromosome. The Flye run has 17 such contigs, some of them small pieces,
and four nuclear_contigs of 2.2 to 3.0 Mb with no telomere array. In 2.1.0 its chromosome 16
contig is 32 kb longer, and it counts as a chromosome_arm because it has a telomere array at
that new end. The 32 kb are subtelomeric repeat that the reference does not have at that end, and
the outer 6 kb, with the array, have about half the usual read depth, so this telomere cannot be
confirmed. The Illumina contigs are mostly nuclear_contig, with no telomere at both ends.
The contig summary describes the draft assembly, before the mitochondrion is split off and before
polishing. Each run therefore counts its mitochondrial contigs (one, two in the Flye run, or four
in illumina) on top of the nuclear contigs of the assembly table. The contig summary also lists
the 42x and hybrid mitochondria at their draft lengths, 116,228 and 122,952 bp.
PacBio HiFi reads: Cordyceps cateniannulata GXU-8616¶
Three runs used PacBio HiFi reads of one strain of an insect-pathogenic fungus (family
Cordycipitaceae). Two ran in longread mode, one with hifiasm, the default assembler, and one
with Flye. The third ran in hybrid mode, which adds MGISEQ short reads of the same strain. On
this genome the runs show that the HiFi path works from reads to annotation, and how close its
genome comes to a chromosome-scale reference. The three runs were made with FunFlux 2.0.0;
FunFlux 2.1.0 does not trim HiFi reads, so its main change does not concern them. Their contig
summaries took the read depth from BlobTools' estimate, as in FunFlux 2.0.0; the depth ratios
below were not measured again with the samtools coverage of FunFlux 2.1.0
(Contig summary).
The HiFi runs do not measure the accuracy of the genes
- One genome (n = 1). Nothing here shows how FunFlux does on HiFi reads of other fungi.
- The reference comes from the same sample. It was assembled from HiFi reads with hifiasm 0.19.8, polished with short reads and joined into 7 chromosomes with Hi-C data (Liu et al. 2026). The sample's only HiFi run in the archive is the one used here. The reference is chromosome-scale with the help of Hi-C, while reads alone may not give every chromosome in one piece. Agreement with it, above all for the hifiasm runs, is expected and is not an independent check.
- No gene comparison. The reference's gene annotation (10,743 protein-coding genes at NCBI) was not compared with FunFlux's genes. The gene table gives counts and BUSCO only.
- Tiberius has seen no genes of this genus, only genes of the same family. No Cordyceps
species is among the training species of the Tiberius
fungimodel, but two species of the same family, Akanthomyces muscarius and Beauveria bassiana, are (its training list). - The protein evidence comes from another species, Cordyceps militaris CM01, as for a new genome. The B05.10 runs had the reference's own proteins, which pull the genes towards the reference.
- Run times come from one shared server, with other runs going on at the same time, so they are indicative only.
Data and settings¶
The reads and the reference come from one sample record. Depth is again the number of bases divided by the reference length.
| Data | Accession | Details | Used by |
|---|---|---|---|
| Reference genome | GCA_056505955.1 (assembly ASM5650595v1) | 7 chromosomes, 32,707,717 bp, no gaps; BioSample SAMN48746374 | the comparisons below |
| PacBio HiFi reads | SRR34289959 | PacBio Revio, 147,159 reads, 2.77 Gb (about 85x), mean length 18.8 kb; the same BioSample | all three runs |
| MGISEQ short reads | SRR34289958 | MGISEQ-2000RS, 16,427,628 pairs of 2 x 150 bp, 4.93 Gb (about 151x); the same BioSample | hybrid |
| Protein evidence | GCF_000225605.1 | Cordyceps militaris CM01, 9,651 proteins (RefSeq) | column 3 of the annotation table, all three runs |
The MGISEQ short reads are DNBSEQ pairs, and hybrid mode reads them as it reads Illumina pairs.
In every run Filtlong kept 124,832 HiFi reads, 2.49 Gb, which is 90 % of the bases
(Read filter).
The next table gives the settings of the three HiFi runs.
| Setting | longread, hifiasm |
longread, Flye |
hybrid |
|---|---|---|---|
mode |
longread |
longread |
hybrid |
assembler (under longread or hybrid) |
hifiasm (the default) |
flye, which runs with --pacbio-hifi |
hifiasm (the default), then Polypolish with the short reads |
resources.threads |
24 | 20 | 24 |
| Annotation table, column 3 (proteins) | the C. militaris proteins | the same | the same |
Everything else is set as in the B05.10 mode runs (settings table): 256 GB of memory,
GeneMark-ES and SignalP 6 fast on, the AMR screen on, and AUGUSTUS trained on the genome. HiFi
reads get no Medaka.
Assembly¶
The table sets each HiFi assembly against the 7 chromosomes of the reference, with the run time of each run.
| Run | Contigs | Total length (Mb) | N50 (Mb) | Reference chromosomes in one contig (of 7) | Contigs with telomeres at both ends | Run time (h) | Cores |
|---|---|---|---|---|---|---|---|
| Reference (GCA_056505955.1) | 7 | 32.71 | 4.79 | 7 | 7 | – | – |
longread, hifiasm |
18 | 34.58 | 4.79 | 6 | 7 | 6.6 | 24 |
longread, Flye |
12 | 34.01 | 4.79 | 6 | 6 | 7.3, in two attempts | 20 |
hybrid, hifiasm + Polypolish |
18 | 34.58 | 4.79 | 6 | 7 | 7.8 | 24 |
On this genome, both assemblers give six of the seven reference chromosomes as one contig each, with a telomere array at both ends, and cover all of every reference chromosome. The seventh breaks in two at its rDNA array. Both assemblies also hold about 1.3 Mb that the reference lacks.
- Chromosome 7 (3.58 Mb) comes as a piece of 3.10 Mb and one of 0.52 Mb, or 3.07 and 0.51 Mb with Flye. Each piece ends in a telomere array. The break lies in the tandem copies of the rDNA unit, the repeat that holds the ITS.
- The extra 1.3 Mb. hifiasm gives it as one contig of 1,329,053 bp with a telomere array at
both ends, the seventh
chromosomein the next table. Flye gives it as four contigs, 1.30 Mb together. Only 4 % of it aligns to the reference, in short pieces. Its read depth is close to that of the chromosomes (1.14 times the median), and FunFlux predicts 275 genes on it. The contamination and mitochondrion screen places it in Cordyceps from its BLAST hits. Whether it is a small chromosome that the reference lacks was not checked further. - Other contigs. hifiasm adds 7 small contigs of rDNA units (
rDNA_array, 0.34 Mb together) and 2 contigs with almost no read depth (low_depth, 0.17 Mb) that do not align to the reference. Flye has neither, and its genome is 0.57 Mb smaller. hybrid. Its draft assembly is the hifiasm run's, byte for byte, because both runs filter and assemble the same HiFi reads. Polypolish then changed 38 positions with the short reads.- Run time is that of the main Snakemake run, from its log. The Flye run stopped once in InterProScan, with an error that did not come back when the run was started again by hand. Its time is the sum of both attempts, 3.7 and 3.6 h. The run was made without the second attempt that FunFlux makes by itself after a failed InterProScan job (Running FunFlux).
The assemblies were checked as for B05.10, with minimap2 2.31 (-x asm5), and a chromosome counts
as one contig when the largest contig placed on it is at least 97 % of its length. The reference's
telomeres were counted with FunFlux's own telomere search, run on the reference, which found
AACCCT arrays at both ends of all 7 chromosomes.
The next table gives the contig summary verdicts of each run and its mitochondrial contig.
| Per run | longread, hifiasm |
longread, Flye |
hybrid |
|---|---|---|---|
Contig summary: chromosome |
7 | 6 | 7 |
chromosome_arm |
2 | 2 | 2 |
rDNA_array |
7 | 0 | 7 |
nuclear_contig |
0 | 3 | 0 |
low_depth |
2 | 0 | 2 |
unclassified |
0 | 1 | 0 |
mitochondrion |
1 | 1 | 1 |
| All contigs | 19 | 13 | 19 |
Mitochondrial contig, in contigs_mitochondrial.fasta (bp) |
49,194, circular: about two copies of the genome end to end | 24,597, circular: one copy | as the hifiasm run |
With hifiasm, all 14 ends of the reference chromosomes and both ends of the extra contig carry a
telomere array. With Flye, the 14 reference ends do too, but the extra 1.3 Mb has an array at one
end only and comes as three nuclear_contigs and one chromosome_arm. Flye's 0.51-Mb piece of
chromosome 7 is unclassified, because its read depth, 1.74 times the median, is above the 1.5
limit.
A circular mitochondrial contig of two copies is not flagged as a concatemer
The mitochondrion published for this strain is 24,712 bp
(Liu et al. 2026). Flye gives one copy. hifiasm marks its
49,194-bp contig as circular, so the concatemer flag stays N although the contig holds about
two copies. FunFlux sets the flag to Y only when length_ratio is above 1.5 and the
assembler did not record the contig as circular. length_ratio is the contig length divided by
the length of the mitochondrial genome it best matches in BLAST
(Concatemers).
Genes¶
The table gives the gene count of each HiFi run and two BUSCO scores, one of the genome and one of the gene models.
| Run | Protein-coding genes | BUSCO of the genome: complete, cordycipitaceae_odb12 (of 4,122) |
BUSCO of the gene models: complete, dikarya_odb9 (of 1,312) |
|---|---|---|---|
| Reference (GCA_056505955.1) | 10,743 | – | – |
longread, hifiasm |
10,924 | 4,112 (99.8 %) | 1,299 (99.0 %) |
longread, Flye |
10,919 | 4,112 (99.8 %) | 1,300 (99.1 %) |
hybrid |
10,921 | 4,112 (99.8 %) | 1,298 (98.9 %) |
The three runs agree, differing by at most 5 genes and 2 BUSCO genes. In each run 273 to 275 genes lie on the 1.3 Mb that the reference lacks, so the counts cannot be set against the reference's 10,743 one to one.
- BUSCO of the genome comes from the assembly QC on
contigs_final.fasta. BUSCO chosecordycipitaceae_odb12itself (busco.lineage: auto). - BUSCO of the gene models comes from funannotate annotate, with
dikarya_odb9, as in the B05.10 gene table. The two columns use different gene sets and cannot be compared with each other. hybridand hifiasm annotated nearly the same genome, 38 positions apart, and differ by 3 genes. That is about as much as the B05.10 reference run and its replicate, which differ by 5 genes (Repeated runs).- tRNA genes, 105 to 107 per run, are left out.
AMR screen and ITS¶
The AMR screen and the ITS classification gave the same result in all three runs.
A species outside the AMR database is reported, not failed, and the run goes on
Cordyceps cateniannulata is not among the 57 species of the ChroQueTas database, so the three
runs report it as not screened. amr_summary.tsv has one row with status not screened, and a
NOTE in the log gives the reason. The database holds no Cordyceps, and its only species of
the same family is Beauveria bassiana (The species).
The ITS taxonomy is the same in all three runs. The main ITS2 sequence (158 bp) gives the strain's own species, C. cateniannulata (confidence 0.96, and 0.97 for the genus Cordyceps). The main ITS1 sequence (182 bp) stops at the phylum Ascomycota (class 0.60, below the cutoff of 0.8). The main ITS sequences themselves are the same in all three runs. The hifiasm assemblies hold 43 copies of the main ITS1 and 44 of the main ITS2, the Flye assembly 4 of each. See ITS taxonomy.
To repeat the HiFi runs¶
The HiFi runs can be repeated from public data, with FunFlux 2.0.0, which made them. First download the reads, the protein evidence and the reference genome:
# the reads (ENA); ENA names the HiFi file _subreads, but it holds HiFi reads
wget ftp://ftp.sra.ebi.ac.uk/vol1/fastq/SRR342/059/SRR34289959/SRR34289959_subreads.fastq.gz \
ftp://ftp.sra.ebi.ac.uk/vol1/fastq/SRR342/058/SRR34289958/SRR34289958_1.fastq.gz \
ftp://ftp.sra.ebi.ac.uk/vol1/fastq/SRR342/058/SRR34289958/SRR34289958_2.fastq.gz
# the protein evidence and the reference genome (NCBI Datasets)
curl -L -o GCF_000225605.1.zip \
"https://api.ncbi.nlm.nih.gov/datasets/v2/genome/accession/GCF_000225605.1/download?include_annotation_type=PROT_FASTA"
curl -L -o GCA_056505955.1.zip \
"https://api.ncbi.nlm.nih.gov/datasets/v2/genome/accession/GCA_056505955.1/download?include_annotation_type=GENOME_FASTA"
# unpack both into ncbi_dataset/data/<accession>/ (protein.faa; the genome FASTA);
# -o because both zip files hold files of the same name, such as README.md
unzip -o GCF_000225605.1.zip
unzip -o GCA_056505955.1.zip
Name the reads GXU8616_pacbio.fastq.gz, GXU8616_R1.fastq.gz and GXU8616_R2.fastq.gz. The
sample name, GXU8616, is the strain name without the hyphen. The longread runs had a folder
with the _pacbio file only.
Write the annotation table with the C. militaris proteins in column 3:
#sample species proteins augustus_species
GXU8616 Cordyceps cateniannulata /path/to/ncbi_dataset/data/GCF_000225605.1/protein.faa -
Then use the settings above, and run as in How to reproduce, step 5.
How to reproduce¶
The B05.10 runs can be repeated from public data in five steps. Use the FunFlux version that made each run: 2.1.0 for the four runs with ONT reads, 2.0.0 for the others. Even then the gene models differ slightly from run to run (Repeated runs), and a Flye assembly does not repeat exactly (Run-to-run differences). Another version can differ more, as the mitochondrion of the 136x runs shows (Other results).
-
Download the data:
# the reference: genome, annotation and proteins (NCBI Datasets) curl -L -o GCF_000143535.2.zip \ "https://api.ncbi.nlm.nih.gov/datasets/v2/genome/accession/GCF_000143535.2/download?include_annotation_type=GENOME_FASTA&include_annotation_type=GENOME_GFF&include_annotation_type=PROT_FASTA" unzip GCF_000143535.2.zip # ncbi_dataset/data/GCF_000143535.2/: the genome FASTA, genomic.gff, protein.faa # the ONT reads (sra-tools) fasterq-dump SRR40741277 && gzip SRR40741277.fastq # the Illumina pairs (ENA) wget ftp://ftp.sra.ebi.ac.uk/vol1/fastq/SRR106/011/SRR10692911/SRR10692911_1.fastq.gz \ ftp://ftp.sra.ebi.ac.uk/vol1/fastq/SRR106/011/SRR10692911/SRR10692911_2.fastq.gz -
Name the reads
B0510_ont.fastq.gz,B0510_R1.fastq.gzandB0510_R2.fastq.gz, as the modes expect (Choosing a mode). Symbolic links are fine. For the 42x run, take the first 95,000 ONT reads, 4 lines each, as sampleB0510m: -
Write the annotation table, tab-separated, with the reference proteins in column 3. Add a line for
B0510mfor the 42x run, and writebotrytis_cinereain column 4 for the run with the stored AUGUSTUS model: -
Copy the configuration template and set the mode, the input folder, the databases and the settings in the settings table. For the comparison runs, run the
hybridconfiguration with FunFlux 2.0.0 as well, and usecontigsmode with its02.assembly/B0510/contigs_final.fasta, namedB0510.fasta. -
Run each configuration, with
--coresequal to itsresources.threads(Running FunFlux):
To compare a B05.10 run with the reference, Liftoff carries the reference genes onto the genome
FunFlux annotated, 04.annotation/{sample}/contigs_sort.fasta. Then gffcompare compares the coding
parts of the lifted reference genes with FunFlux's protein-coding genes. The commands are in the
box below.
The comparison commands are not part of FunFlux
REF=ncbi_dataset/data/GCF_000143535.2
# 1. carry the reference genes onto the annotated genome (its contigs are named scaffold_N)
liftoff -g $REF/genomic.gff -o lifted_reference.gff3 -u unmapped_reference_genes.txt -p 16 \
-dir liftoff_tmp -polish 04.annotation/B0510/contigs_sort.fasta \
$REF/GCF_000143535.2_ASM14353v4_genomic.fna
# 2. rebuild the lifted reference transcripts from their coding parts only (CDS lines become
# exons), because FunFlux's genes have no untranslated regions
awk -F'\t' 'BEGIN{OFS="\t"} /^#/ {print; next} $3=="exon" {next} $3=="CDS" {$3="exon"; print; next} {print}' \
lifted_reference.gff3_polished | gffread -T -o lifted_reference_cds.gtf -
# 3. FunFlux's protein-coding genes (-C leaves out the tRNA genes, which have no CDS)
gffread -T -C -o funflux_coding.gtf \
04.annotation/B0510/funannotate/annotate_results/Botrytis_cinerea_B0510.gff3
# 4. compare: gffcmp_cds.stats holds the sensitivity, the precision and the matching counts
gffcompare -r lifted_reference_cds.gtf -o gffcmp_cds funflux_coding.gtf
# the chromosome check: align the nuclear genome to the reference
minimap2 -x asm5 -c --cs -t 8 $REF/GCF_000143535.2_ASM14353v4_genomic.fna \
02.assembly/B0510/contigs_final.fasta > contigs_vs_reference.paf
All of these tools come from bioconda: Liftoff 1.6.3 (its own alignments made with minimap2 2.24), gffread 0.12.9, gffcompare 0.12.10, and minimap2 2.31 for the chromosome check.