MATPredict

Find and type the mating-type (MAT) locus in a fungal genome, with the genes that flank it, from an assembly or from raw reads.

Open the browser toolExplore results by taxon

Experimental. The browser tool is a spike: same detection logic as the command-line tool, not yet checked on every platform or against the full benchmark. Counts below describe committed campaign runs (code v0.6.0, October 2026). A call is detection, not proof: most clades have no curated reference yet, so an uncalled genome is a reference gap until shown otherwise.

How it works

Every reference record in the database traces to a publication or a validated deposit. MATPredict searches a genome with the reference proteins of the MAT genes and their conserved flank genes, builds gene models at the best hits, and decides whether the result is a real MAT locus.

  1. Route. The NCBI taxid selects the curated families for that lineage. With no match the genome falls back to the whole phylum, or is reported as not searched.
  2. Search. Translated search (tblastn on a genome, diamond on a proteome) with the core MAT genes plus flank genes (for example APN2, SLA2, COX13 in Pezizomycotina; tptA, rnhA, algA, glrA in Mucorales).
  3. Cluster. Hits become candidate loci per contig, using lineage-specific gap rules.
  4. Polish. exonerate or miniprot builds gene models in a window around each candidate (at most 6 loci per family).
  5. Gate. A candidate must pass the checks below, or it is withheld and the reason is recorded.
  6. Type. The idiomorph comes from gene content (for example MAT1-1-1 versus MAT1-2-1) or, in Mucoromycota, from a profile-HMM classifier (sexP = Plus, sexM = Minus). Each call gets a margin and a confidence tier.

Output per genome: detection_report.yaml (calls, evidence, withheld loci, reason for any uncalled genome, two-idiomorph flag), detected_loci.gff3 and optional FASTA.

Gating and confidence

The gates trade recall for precision. Each is a decision recorded in the project's analysis notes with the test that set it.

GateWhat it does
Modelled-gene barThe best cluster must carry a minimum number of polished gene models. Clusters below it are withheld (for example "carried 1 modelled gene, below the 2 required").
MAT-gene gateA locus needs a MAT gene typed by the classifier at or above its bit-score floor (about 100 bits), or at least two flank genes modelled at 40% or more. Fragments need flanks. Removes paralog look-alikes.
Flank-carried ruleA call that rests only on flank hits needs a core-gene hit above a bit-score floor (39 bits); this removed 52 of 52 known artefacts in the audit while keeping 7 of 8 real loci.
Paralog classWhen a family has several real gene copies, paralogs are separated from the MAT copy and withheld or reported as such.
CAAX check (Basidiomycota)Pheromone-receptor calls that depend on a strict CAAX motif scan are labelled unverified. They are counted but kept apart from verified calls.
Typing marginThe margin between the best and the runner-up idiomorph is reported with every call. The Mucoromycota classifier applies a margin floor (25 bits) and a score floor, and unresolved cases are reported as undetermined.
Confidence tierhigh: all expected core genes found, plus at least one flank gene in the same cluster (families without flank genes need all core genes in a consistent order). medium: some but not all expected genes, a core gene found only by the relaxed second pass, or flanks without a confirmed core gene; also a high call that fails the modelled-gene bar. low: a single gene hit with nothing else nearby.
Locus classmat_locus (genes plus expected flank structure), partial_locus, idiomorph_gene_only, homothallic_candidate (both idiomorphs at one locus).
Two idiomorphsBoth idiomorphs in one genome is flagged for review. It can mean homothallism, silent mating cassettes (Saccharomycotina), a hybrid or mixed assembly, not only a true two-allele genome.

Results across BFD and ZyGoLife

Five datasets, one pipeline version. BFD genomes are the public fungal genome collection; ZyGoLife LCG and Jena are Mucoromycotina sets that were held out from training and curation.

Genomes with a MAT call

Confidence of each locus

What kind of locus was found

Which MAT alleles, and how often

Share of called genomes by allele, as the pipeline names it. Allele names differ by lineage (MAT1-1/MAT1-2, MATa/MATalpha, Plus/Minus, and others) and are not merged here. Basidiomycota calls are mostly the locus type (HD, PR) with the allele undetermined; see the explorer for locus types.

Call rate by Ascomycota class

Call rate by Basidiomycota order

Classes and orders with 50 or more genomes. Low rates mark clades without their own curated record (phylum fallback), such as Orbiliomycetes and Dipodascomycetes, rather than clades without a MAT locus. Family, genus and species breakdowns, with allele frequencies, are in the explorer.

Performance on benchmarks

TestnResultNote
Zygo 23 (Mucorales, held out)2323/23 locus, 23/23 idiomorphSaturated; no longer separates rules. notes
ZyGoLife Jena (held out)6461 calledScaffold and contig input gave the same call in 63/63.
ZyGoLife LCG (held out)621548 called (88%)Strains with curator labels: see held-out notes for tiers and disputed labels.
Classifier typing (Mucoromycota)5400 wrongFull-protein score of 100 bits or more separated MAT genes from paralogs (96/108 vs 9/189).
Regression panels (v0.6.0)166 + 230 changed lociGate before every campaign.
A. fumigatus assemblies, detect297288 agree (97.0%)Truth = BLAST of idiomorph regions. Reports one idiomorph for the 8 assemblies holding both.

Truth tables for BFD genomes do not exist, so BFD results are recovery (call) rates, not accuracy. Several thresholds were tuned on small panels; the notes say which.

Typing from raw reads

When a good reference panel exists for a species, matpredict reads-type calls the idiomorph of a strain from its reads, with no assembly. It counts k-mers (k = 31) found in only one idiomorph reference, uses the k-mers shared by both flanks as a single-copy depth control, and calls one idiomorph, both, none or low_depth.

DatasetStrainsAgreementStatus
Fusarium oxysporum f. sp. lactucae (Fola)148147/148 (99.3%) with a samtools breadth call; the miss has no signal in either method. Simulated mixes: both idiomorphs called from a 10% minor share in 3/3 pairs.done
Aspergillus fumigatus331 read sets293/296 (99.0%) against assembly BLAST truth; detect on assemblies 288/297. Seven of eight assemblies holding both idiomorphs are both from reads.done
Verticillium—Reference records curated; read-typing results to be added here.to add
Coccidioides immitis, C. posadasii—Reference records exist; panel and read sets to be chosen.planned
Cryptococcus—Panel design for a large, rearranged locus to be worked out.planned
Other Fusarium species, including F. graminearum (many public read sets)—Some read sets need downloading from SRA.planned

Caveats: cut-offs (50% breadth fraction, 100-base unique-run filter) were set after seeing the Fola and A. fumigatus results, so those numbers are consistency checks, not independent tests. A reference that differs from the strain at about one base in 40 gives none. Details: Fola, A. fumigatus.

From reads to a full locus: map, assemble, extend, process

K-mer typing says which idiomorph is present. To recover the locus itself from reads, the same panel seeds an assembly (tested on eight A. fumigatus strains; the steps are scripts, not yet a subcommand):

  1. Map. Map reads to the curated locus segments of each idiomorph (minimap2, short-read mode).
  2. Assemble. Assemble read pairs whose mate maps (SPAdes, careful mode).
  3. Extend. Map the contigs back to the reference and repeat for up to four rounds, so the locus grows into the flank genes.
  4. Process. Place the genes with a protein search on the read contigs, and run detect on them for the standard report. Running detect on read contigs is the next step, not yet done.