Skip to content

[D08] lvef_upper fallback injects LVEF=100 label artifacts into the cohort #75

Description

@duckyquang

Task metadata

Field Value
Category Data
Priority High
Complexity Low
Est. days 1
Feeds #62 (D07), retrain after fix
Found by #67 (E10) diagnosis

Description

The E10 diagnosis (scripts/diagnose_baseline_gap.py, PR #74) found that the lvef_upper fallback in build_cohort.py's LVEF source chain is feeding label artifacts into the cohort:

  • 24 cohort rows take their label from lvef_upper; 18 of them carry LVEF = 100.0, which is not a physiologically real ejection fraction — these look like range-upper-bound parses (e.g. ">55%" or "hyperdynamic" coded as an upper limit), not measurements.
  • The 6 such rows in the test split score 43.0 MAE against the canonical fused checkpoint, versus 10.42 overall and 5.17 on lvef_3d-labeled rows.
  • Excluding just those 6 rows moves test MAE from ~10.42 to ~9.6 — roughly a full MAE point from 2.4% of the split.

Steps:

  1. Look at what lvef_upper actually holds in the source table — if it is the upper bound of a reported range, it should either be excluded from the fallback chain or converted to a range midpoint, not used as-is.
  2. Update the LVEF coalesce order in build_cohort.py accordingly, and record the affected row count in the funnel output.
  3. Rebuild the manifest and note that M10 probes should be retrained on it (cheap — the full cycle is ~90s on CPU per TECHNICAL 9).

Acceptance criteria:

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions