Benchmarks

Overview

Comprehensive benchmarks comparing Mycelia's various approaches on different datasets.

HPC CI Status

HPC Coverage HPC Tests HPC Benchmarks

The lightweight GitHub Actions CI on master remains the default merge gate. Extended HPC validation is published separately from ci/hpc/run_hpc_ci.sh via bash ci/hpc/publish_hpc_results.sh, which updates the hpc-results branch with:

  • latest-hpc-results.json for the full machine-readable run summary
  • latest-tests.json for the Shields HPC test badge endpoint
  • latest-benchmarks.json for the Shields HPC benchmark badge endpoint
  • latest-meta.json for commit, timestamp, and cluster metadata

The raw branch history keeps one archived directory per commit so published status can be traced back to a specific HPC run without committing bulky logs or benchmark artifacts to the main repository history.

Standard Assembler Fixtures

The short-read assembler comparison benchmark now includes two deterministic fixtures that can be regenerated locally without external downloads:

FixtureTypeDescriptionGeneration
synthetic_isolate_5386IsolateSingle 5.4 kb synthetic genome for short-read assembly sanity checksPure Julia, fixed seed
synthetic_metagenome_pairMetagenomeTwo-genome low-complexity community with uneven coveragePure Julia, fixed seeds

Run the comparison benchmark with:

julia --project=. benchmarking/assembler_comparison_standard_fixtures.jl

This benchmark compares Mycelia.Rhizomorph.assemble_genome, run_megahit, and run_metaspades on the same generated FASTQ inputs and writes the run plan plus results as CSV files.

Standardized Test Datasets

To ensure rigorous validation across platforms, Mycelia uses the following gold-standard communities:

Mock Communities (Physical & Sequencing)

SourceProductComplexityDescription
ZymoD6331MediumGut Microbiome Standard (21 strains)
ZymoD6300LowMicrobial Community Standard (8 bacteria, 2 yeast)
ATCCMSA-1002Medium20 Strain Even Mix
ATCCMSA-1003Medium20 Strain Staggered Mix
NISTRM 8376HighMicrobial Pathogen DNA Standard

Benchmarking Challenges (Synthetic)

Simulation Targets

For internal testing, we target the following simulation profiles:

  • Depth: Low (10x), Medium (100x), High (1000x)
  • Diversity: Isolate, Defined Community (10), Complex Community (100+)
  • Abundance: Even, Random, Log-normal (staggered)

Rhizomorph Real Genome Benchmarks

Rhizomorph k-mer sweep assembly was evaluated against six real viral and viroid reference genomes spanning three orders of magnitude in size. Results were collected on 2026-03-25 using benchmarking/real_genome_benchmark.jl. Each genome was assembled from the reference sequence directly (no simulated reads) across k ∈ {11, 15, 21, 25, 31}.

Genomes tested

GenomeAccessionSize (bp)TypeTier
PSTVdNC_002030359RNA1
CCCVdNC_003540246RNA1
HSVdNC_001351297RNA1
PhiX174NC_0014225,386DNA2
LambdaNC_00141648,502DNA2
T4NC_000866168,903DNA2

Tier 1 — Viroids (RNA, 246–359 bp)

All three viroids assembled to exactly 2 contigs at every k value tested. Total assembly length equals 2× the reference, and N50 equals the reference length. This is the expected single-sequence self-assembly behavior: the k-mer graph contains both the forward sequence and its reverse complement as separate Eulerian paths. Runtimes were sub-second for all runs.

GenomeRef (bp)kContigsTotal (bp)N50Runtime (s)
PSTVd3591127183591.25
PSTVd3593127183591.06
CCCVd246112798*3990.006
CCCVd246312798*3990.006
HSVd2971126043020.004
HSVd2973126043020.004

* The benchmark hardcodes ref_size=246 for CCCVd but the actual downloaded NC_003540 sequence is 399 bp; the genome fraction and size comparison columns used the wrong denominator. The benchmark script has since been updated to measure actual reference size from the downloaded FASTA rather than relying on hardcoded values.

Tier 2 — Bacteriophages (DNA, 5–169 kb)

Assembly quality improves with k for all three phages.

PhiX174 (5,386 bp)

Clean assembly (2 contigs, full coverage) at k ≥ 15. At k = 11 the graph is fragmented into 46 contigs due to abundant short repeats at that resolution.

kContigsTotal (bp)N50Runtime (s)
114611,1805011.48
15210,7725,3861.12
21210,7725,3861.17
25210,7725,3861.10
31210,7725,3861.29

Lambda phage (48,502 bp)

Full-length assembly (2 contigs) achieved at k ≥ 21. At k = 11 the graph shatters into 2,670 contigs; k = 15 reduces this to 21 with N50 of 9.3 kb.

kContigsTotal (bp)N50Runtime (s)
112,670121,23761557
152197,2579,346214
21297,00448,502244
25297,00448,502176
31297,00448,502233

T4 phage (168,903 bp)

T4 remains fragmented at all k values due to its extensive repetitive elements. Assembly quality improves steadily with k, reaching 17 contigs and N50 of 27 kb at k = 31. Full contiguity will require repeat-aware strategies or longer k values.

kContigsTotal (bp)N50Runtime (s)
1110,981264,030271,415
15219171,2891,6931,262
2139169,3669,740778
2525169,24623,384816
3117169,19527,0461,205

Known limitations in this benchmark

  • GC content is reported as 0.0 for all genomes due to a type mismatch in assembly_metrics when working with String-typed Rhizomorph contigs. This does not affect contiguity or length metrics.
  • Genome fraction exceeds 100 % for single-sequence inputs because Rhizomorph self-assembly produces both the forward and reverse-complement paths; QUAST counts both against the reference.
  • Runtimes reflect wall time on a single laptop core and include NCBI download overhead for the download phase.

To reproduce:

julia --project=. benchmarking/real_genome_benchmark.jl --tier 2

Raw CSV results are archived under benchmarking/results/real_genome_benchmark_*.csv.

Coming Soon

  • Assembler comparison results across Rhizomorph, MEGAHIT, and metaSPAdes on the standard synthetic fixtures
  • Memory usage profiling for large-genome assemblies
  • Accuracy assessments against Genome in a Bottle reference calls

For current benchmarking code, see the benchmarking directory in the repository.