{
  "schema_version": 1,
  "generated_at": "2026-08-28T11:43:22+00:00",
  "experiment_count": 9,
  "hub": {
    "name": "Oralbiome",
    "url": "https://oralbiome.scarpelli.ai",
    "tagline": "Oral-microbiome research. The signal in your mouth is real. It just doesn't travel well."
  },
  "studies": [
    {
      "id": "cross-population-t2d",
      "title": "Cross-population oral-microbiome T2DM screening",
      "status": "active",
      "flagship": true,
      "paper": {
        "title": "Predicting Type 2 Diabetes from Oral Microbiome Composition",
        "authors": "Scarpelli & Akhter, 2026",
        "pdf": "/preprint.pdf"
      },
      "key_finding": "The signal transfers within related populations but fades with distance. In South Africa it reverses: a strong within-cohort signal (CV 0.853) that the pooled model reads backwards (transfer 0.320). Not noise, not sequencing depth, a real population or study-specific reversal of the microbiome-to-diabetes relationship.",
      "reproduces": {
        "cv_auc": 0.81,
        "portugal_auc": 0.698,
        "holdout3_auc": 0.673,
        "targets": {
          "cv": 0.803,
          "portugal": 0.698,
          "holdout3": 0.673
        },
        "status": "pass"
      },
      "leaderboard": [
        {
          "cohort": "Portugal",
          "population": "European",
          "country": "Portugal",
          "specimen": "saliva",
          "kind": "geographic holdout",
          "auc": 0.698,
          "n": 50,
          "n_diabetic": 25,
          "n_control": 25,
          "within_auc": 0.859,
          "lng": -8.2,
          "lat": 39.4,
          "accession": "PRJNA679485",
          "ref": "Almeida-Santos et al., 2021",
          "inverted": false
        },
        {
          "cohort": "India/Mumbai",
          "population": "South Asian",
          "country": "India",
          "specimen": "plaque",
          "kind": "new cohort",
          "auc": 0.621,
          "n": 60,
          "n_diabetic": 40,
          "n_control": 20,
          "within_auc": 0.638,
          "lng": 72.9,
          "lat": 19.1,
          "accession": "PRJNA1240053",
          "ref": "Bhosale et al., Diseases 2026",
          "inverted": false
        },
        {
          "cohort": "Mexico",
          "population": "Latin American",
          "country": "Mexico",
          "specimen": "saliva",
          "kind": "new cohort",
          "auc": 0.564,
          "n": 87,
          "n_diabetic": 41,
          "n_control": 46,
          "within_auc": 0.566,
          "lng": -102.5,
          "lat": 23.6,
          "accession": "PRJNA1208116",
          "ref": "Martinez-Gregorio et al., J Appl Microbiol 2026",
          "inverted": false
        },
        {
          "cohort": "South Africa",
          "population": "African",
          "country": "South Africa",
          "specimen": "plaque",
          "kind": "new cohort",
          "auc": 0.32,
          "n": 88,
          "n_diabetic": 57,
          "n_control": 31,
          "within_auc": 0.853,
          "lng": 22.9,
          "lat": -30.6,
          "accession": "PRJNA723337",
          "ref": "Matsha et al., J Dent Res 2020",
          "inverted": true
        }
      ],
      "marker_panel": {
        "cohorts": [
          "NHANES (US)",
          "China",
          "Portugal",
          "India/Mumbai",
          "Mexico",
          "South Africa"
        ],
        "cohort_meta": [
          {
            "name": "NHANES (US)",
            "population": "US",
            "n": 9683,
            "cases": 830,
            "controls": 8853
          },
          {
            "name": "China",
            "population": "Chinese",
            "n": 624,
            "cases": 510,
            "controls": 114
          },
          {
            "name": "Portugal",
            "population": "European",
            "n": 50,
            "cases": 25,
            "controls": 25
          },
          {
            "name": "India/Mumbai",
            "population": "South Asian",
            "n": 60,
            "cases": 40,
            "controls": 20
          },
          {
            "name": "Mexico",
            "population": "Latin American",
            "n": 87,
            "cases": 41,
            "controls": 46
          },
          {
            "name": "South Africa",
            "population": "African",
            "n": 88,
            "cases": 57,
            "controls": 31
          }
        ],
        "heatmap": [
          {
            "genus": "Peptoniphilus",
            "r": [
              0.017,
              0.097,
              0.139,
              0.15,
              0.099,
              0.103
            ],
            "class": "robust_up",
            "agreement": 1.0,
            "mean_r": 0.101
          },
          {
            "genus": "Enterococcus",
            "r": [
              0.009,
              0.074,
              0.138,
              0.149,
              0.086,
              0.072
            ],
            "class": "robust_up",
            "agreement": 1.0,
            "mean_r": 0.088
          },
          {
            "genus": "Alloscardovia",
            "r": [
              0.052,
              0.124,
              0.027,
              0.149,
              0.054,
              0.086
            ],
            "class": "robust_up",
            "agreement": 1.0,
            "mean_r": 0.082
          },
          {
            "genus": "Lactobacillus",
            "r": [
              0.067,
              0.145,
              -0.088,
              0.062,
              0.195,
              0.065
            ],
            "class": "robust_up",
            "agreement": 0.83,
            "mean_r": 0.074
          },
          {
            "genus": "Streptococcus",
            "r": [
              -0.004,
              0.231,
              0.136,
              0.397,
              0.101,
              -0.118
            ],
            "class": "robust_up",
            "agreement": 0.8,
            "mean_r": 0.124
          },
          {
            "genus": "Bifidobacterium",
            "r": [
              0.058,
              0.371,
              -0.078,
              0.084,
              0.112,
              -0.013
            ],
            "class": "robust_up",
            "agreement": 0.8,
            "mean_r": 0.089
          },
          {
            "genus": "Fretibacterium",
            "r": [
              0.009,
              -0.196,
              -0.133,
              -0.134,
              -0.06,
              -0.168
            ],
            "class": "robust_down",
            "agreement": 1.0,
            "mean_r": -0.114
          },
          {
            "genus": "Johnsonella",
            "r": [
              -0.033,
              -0.144,
              -0.093,
              -0.105,
              -0.148,
              -0.061
            ],
            "class": "robust_down",
            "agreement": 1.0,
            "mean_r": -0.098
          },
          {
            "genus": "Cloacibacterium",
            "r": [
              -0.016,
              -0.2,
              -0.215,
              -0.206,
              -0.095,
              0.074
            ],
            "class": "robust_down",
            "agreement": 0.8,
            "mean_r": -0.11
          },
          {
            "genus": "Treponema",
            "r": [
              0.008,
              -0.17,
              0.105,
              -0.175,
              -0.073,
              -0.25
            ],
            "class": "robust_down",
            "agreement": 0.8,
            "mean_r": -0.092
          },
          {
            "genus": "Delftia",
            "r": [
              0.009,
              -0.085,
              -0.065,
              0.149,
              -0.181,
              -0.338
            ],
            "class": "robust_down",
            "agreement": 0.8,
            "mean_r": -0.085
          },
          {
            "genus": "Schlegelella",
            "r": [
              0.007,
              -0.126,
              -0.065,
              0.149,
              -0.181,
              -0.146
            ],
            "class": "robust_down",
            "agreement": 0.8,
            "mean_r": -0.06
          },
          {
            "genus": "Serratia",
            "r": [
              0.009,
              0.103,
              -0.712,
              0.151,
              -0.181,
              0.13
            ],
            "class": "flipper",
            "agreement": 0.4,
            "mean_r": -0.083
          },
          {
            "genus": "Faecalibacterium",
            "r": [
              -0.023,
              0.406,
              -0.034,
              -0.342,
              -0.013,
              0.467
            ],
            "class": "flipper",
            "agreement": 0.67,
            "mean_r": 0.077
          },
          {
            "genus": "Campylobacter",
            "r": [
              0.001,
              -0.153,
              0.26,
              0.031,
              -0.007,
              -0.477
            ],
            "class": "flipper",
            "agreement": 0.67,
            "mean_r": -0.057
          },
          {
            "genus": "Lysinibacillus",
            "r": [
              0.008,
              -0.293,
              -0.065,
              0.149,
              -0.181,
              0.394
            ],
            "class": "flipper",
            "agreement": 0.4,
            "mean_r": 0.002
          },
          {
            "genus": "Microbacterium",
            "r": [
              0.009,
              -0.343,
              -0.065,
              0.149,
              0.118,
              0.336
            ],
            "class": "flipper",
            "agreement": 0.6,
            "mean_r": 0.034
          },
          {
            "genus": "Burkholderia",
            "r": [
              -0.02,
              -0.44,
              -0.065,
              0.149,
              -0.181,
              0.238
            ],
            "class": "flipper",
            "agreement": 0.6,
            "mean_r": -0.053
          },
          {
            "genus": "Bacteroides",
            "r": [
              -0.018,
              0.467,
              0.169,
              -0.034,
              -0.138,
              -0.207
            ],
            "class": "flipper",
            "agreement": 0.5,
            "mean_r": 0.04
          },
          {
            "genus": "Ureaplasma",
            "r": [
              0.004,
              -0.038,
              -0.065,
              0.149,
              -0.201,
              0.467
            ],
            "class": "flipper",
            "agreement": 0.5,
            "mean_r": 0.053
          },
          {
            "genus": "Paenibacillus",
            "r": [
              0.005,
              -0.12,
              -0.065,
              0.149,
              -0.196,
              0.467
            ],
            "class": "flipper",
            "agreement": 0.4,
            "mean_r": 0.04
          },
          {
            "genus": "Actinomyces",
            "r": [
              0.009,
              0.079,
              0.149,
              -0.165,
              -0.124,
              0.492
            ],
            "class": "flipper",
            "agreement": 0.6,
            "mean_r": 0.073
          },
          {
            "genus": "Parabacteroides",
            "r": [
              -0.007,
              0.355,
              -0.065,
              0.149,
              -0.187,
              0.467
            ],
            "class": "flipper",
            "agreement": 0.6,
            "mean_r": 0.119
          },
          {
            "genus": "Atopobium",
            "r": [
              0.023,
              -0.035,
              -0.065,
              0.149,
              -0.186,
              0.467
            ],
            "class": "flipper",
            "agreement": 0.5,
            "mean_r": 0.059
          },
          {
            "genus": "Dermabacter",
            "r": [
              0.01,
              -0.028,
              -0.065,
              0.149,
              -0.181,
              0.467
            ],
            "class": "flipper",
            "agreement": 0.5,
            "mean_r": 0.059
          },
          {
            "genus": "Eubacterium",
            "r": [
              0.009,
              0.106,
              -0.065,
              0.149,
              -0.181,
              0.467
            ],
            "class": "flipper",
            "agreement": 0.6,
            "mean_r": 0.081
          }
        ],
        "robust_up": [
          "Peptoniphilus",
          "Enterococcus",
          "Alloscardovia",
          "Lactobacillus",
          "Streptococcus",
          "Bifidobacterium",
          "Pseudoramibacter",
          "Acinetobacter"
        ],
        "robust_down": [
          "Fretibacterium",
          "Johnsonella",
          "Cloacibacterium",
          "Treponema",
          "Delftia",
          "Schlegelella",
          "Brevundimonas"
        ],
        "flippers": [
          "Serratia",
          "Faecalibacterium",
          "Campylobacter",
          "Lysinibacillus",
          "Microbacterium",
          "Burkholderia",
          "Bacteroides",
          "Ureaplasma",
          "Paenibacillus",
          "Actinomyces",
          "Parabacteroides",
          "Atopobium",
          "Dermabacter",
          "Eubacterium",
          "Victivallis",
          "Helicobacter",
          "Eggerthella",
          "Achromobacter",
          "Alistipes",
          "Bartonella",
          "Akkermansia",
          "Granulicatella",
          "Staphylococcus",
          "Pedobacter",
          "Phocaeicola",
          "Afipia",
          "Segetibacter",
          "Eikenella",
          "Bordetella",
          "Jeotgalicoccus",
          "Mobiluncus",
          "Arcanobacterium",
          "Jonquetella",
          "Peptococcus",
          "Lautropia",
          "Cardiobacterium",
          "Moryella",
          "Butyrivibrio",
          "Aggregatibacter",
          "Aquamicrobium",
          "Roseomonas",
          "Cellulosimicrobium",
          "Fusobacterium",
          "Alloprevotella",
          "Rhodobacter",
          "Veillonella",
          "Brucella",
          "Neisseria",
          "Haematobacter",
          "Yersinia",
          "Mitsuokella",
          "Kytococcus",
          "Oribacterium",
          "Capnocytophaga",
          "Arsenicicoccus",
          "Peptostreptococcus"
        ],
        "summary": {
          "n_genera_evaluated": 139,
          "n_robust": 15,
          "n_flippers": 56,
          "reversal_prevalence_ex_nhanes": 0.71,
          "reversal_tested_ex_nhanes": 80,
          "sa_marker_flip_fraction": 0.4,
          "sa_markers_tested": 10,
          "other_cohort_flip_fraction": {
            "Portugal": 0.1,
            "India/Mumbai": 0.4,
            "Mexico": 0.5
          }
        }
      }
    }
  ],
  "roadmap": [
    {
      "title": "Reproducible from public data only",
      "status": "now",
      "why": "The release must regenerate end-to-end from public sources (NHANES public-use genus tables + SRA cohorts) with no restricted inputs, so every result is independently verifiable."
    },
    {
      "title": "Close the cross-population transfer gap",
      "status": "now",
      "why": "The core scientific problem: models trained on US+Asian cohorts fall to near-random on unseen populations. Making the oral-microbiome T2DM signal generalize across populations is this project's contribution."
    },
    {
      "title": "Broaden cohort diversity continuously",
      "status": "next",
      "why": "Generalization needs the populations we lack (Africa, Middle East, Latin America, more Europe). Keep ingesting new public, T2DM-labeled oral-microbiome cohorts as they appear."
    },
    {
      "title": "Living, citable preprint",
      "status": "next",
      "why": "Keep docs/Preprint.md current as results evolve, and land a public release with a Zenodo DOI so the work stays discoverable and updatable rather than frozen."
    },
    {
      "title": "Calibrated saliva screening tool",
      "status": "later",
      "why": "Turn the model into a population-aware, honestly-calibrated T2DM screen (evolve the HTML calculator into a validated tool), the translational end goal."
    }
  ],
  "training_regions": [
    {
      "name": "NHANES (US)",
      "lng": -98.6,
      "lat": 39.8
    },
    {
      "name": "China",
      "lng": 113.0,
      "lat": 33.0
    }
  ]
}
