Spaces:
Sleeping
Sleeping
| import joblib, sys | |
| sys.path.insert(0, 'backend') | |
| from app.ml.archive_model import predict_with_archive_model | |
| from app.ml.features import FEATURE_NAMES | |
| m = joblib.load('backend/models/archive_screening_model.joblib') | |
| test_cases = [ | |
| ("PALE (anemic)", 0.28, 0.02, 0.22), | |
| ("BORDERLINE", 0.35, 0.04, 0.30), | |
| ("NORMAL", 0.44, 0.08, 0.38), | |
| ("VERY HEALTHY", 0.48, 0.10, 0.42), | |
| ] | |
| for label, cpi, rg, br in test_cases: | |
| feat_map = {n: 0.0 for n in FEATURE_NAMES} | |
| feat_map['cpi'] = cpi | |
| feat_map['center_cpi'] = cpi - 0.01 | |
| feat_map['mean_r'] = cpi * 0.9 | |
| feat_map['mean_g'] = cpi * 0.9 - rg | |
| feat_map['mean_b'] = cpi * 0.7 | |
| feat_map['red_green_gap'] = rg | |
| feat_map['center_red_green_gap'] = rg | |
| feat_map['brightness'] = br | |
| feat_map['green_blue_ratio'] = 1.1 if cpi < 0.35 else 1.25 | |
| feat_map['center_mean_r'] = feat_map['mean_r'] | |
| feat_map['center_mean_g'] = feat_map['mean_g'] | |
| feat_map['center_mean_b'] = feat_map['mean_b'] | |
| feat_map['contrast'] = 0.12 | |
| feat_map['center_contrast'] = 0.12 | |
| feat_map['center_brightness'] = br | |
| feat_map['blur_score'] = 100.0 | |
| feat_map['center_blur_score'] = 120.0 | |
| feat_map['saturation'] = 0.3 | |
| feat_map['center_saturation'] = 0.3 | |
| feat_map['hist_mid'] = 0.5 | |
| feat_map['hist_bright'] = 0.3 | |
| feat_map['aspect_ratio'] = 1.0 | |
| feat_map['size_score'] = 1.0 | |
| result = predict_with_archive_model(m, feat_map, source_hint='roi_original') | |
| hb = result['predicted_hemoglobin'] | |
| risk = result['anemia_risk'] | |
| unc = result['uncertainty'] | |
| decision = "ANEMIA LIKELY" if risk >= 0.65 else "unlikely" | |
| print(f"{label}: Hb={hb:.1f}, risk={risk:.3f}, uncertainty={unc:.3f} -> {decision}") | |