Skip to content

JSON contract

gmeta report (and the stdout of gmeta run) emits a MetaReport. Fields are stable; new optional fields may appear, existing ones do not change meaning within a major version.

{
  "schema_version": 1,
  "tool": "gmeta",
  "tool_version": "0.1.0",
  "generated_at": "2026-11-07T08:00:00+00:00",
  "sample": {
    "sample_id": "SAMPLE-001",
    "sample_type": null,
    "platform": null,
    "sequencing_date": null,
    "lab": null,
    "operator": null
  },
  "method": "kraken2_bracken",
  "database": "/data/db/kraken2",
  "qc": {
    "total_reads": 100000,
    "clean_reads": 96000,
    "total_bases": 15000000,
    "clean_bases": 14000000,
    "q30_rate": 0.95,
    "duplication_rate": 0.12,
    "host_reads": null,
    "host_rate": null,
    "classified_reads": 60000,
    "classified_fraction": 0.6
  },
  "taxa": [
    {
      "name": "Vibrio cholerae",
      "taxid": 662,
      "rank": "species",
      "reads": 25000,
      "fraction": 0.25,
      "ani": null,
      "confidence": "high",
      "priority": true,
      "priority_category": "霍乱弧菌(甲类传染病)"
    }
  ],
  "n_species": 4
}

Fields

Field Notes
method kraken2_bracken / sylph_ani / centrifuge / kaiju / metaphlan / kmcp
qc.* null when the source did not provide the metric
taxa[].reads estimated/species read count; 0 when the tool reports none (metaphlan rel_ab)
taxa[].fraction always 0..1
taxa[].ani sylph only
taxa[].confidence abundance bands: high ≥10%, medium ≥1%, low <1% (sylph: ANI ≥95% / ≥90%)
taxa[].priority hit against the built-in surveillance pathogen list

MethodEnvelope

profile_*() functions return {analysis_type, method, database, result} dataclass envelopes (the gside family contract); result carries the method-specific detail (top_species, counts) and is not part of the stable contract — consume MetaReport instead when stability matters.