Skip to content

Fractional iron absorption — weights for the absorbed-iron:demo scores

This document is the weights_published target for the two scores in examples/iron-two-hosts.json. Under FDP-1 §3, a score that does not publish its weights declares weights_published: false; this demo publishes them here so the example is fully self-describing.

What the demo computes

absorbed_iron_mg = iron_mg × fractional_absorption, where fractional_absorption is set by host iron status:

Host state Serum ferritin Hepcidin fractional_absorption absorbed (of 2.1 mg)
Iron-replete 60 ng/mL high 0.02 0.042 mg
Iron-deficient 8 ng/mL low 0.12 0.252 mg

The ~6× spread between the two hosts is the point of the example: the same food delivers very different absorbed iron depending on the eater.

Where these numbers come from — and their limits

These two fractions are illustrative teaching values, chosen to sit within the range and direction reported for non-haem iron absorption as a function of iron status. They are directionally consistent with the Hallberg–Hulthén prediction algorithm (Hallberg L, Hulthén L. Am J Clin Nutr. 2000;71(5): 1147–1160, PMID:10799377), which the score cites as convergent validation. They are not a fitted or validated model, and no enhancer/inhibitor algebra is applied here beyond the host-status switch.

Why the score is still provenance-graded —

Absorption is modulated by ascorbate (enhancer) and by phytate and polyphenols (inhibitors). The example declares iron, ascorbate, and phytate with provenance, but total polyphenols is OPEN — not measured for this preparation. By the weakest-link rule (FDP-1 §3.1) an OPEN input caps the whole score, so both scores carry provenance_grade: "—" regardless of how confident the computed number looks. That honest gap is the demonstration, not a defect to be patched.