SuriRaja commited on
Commit
f04f718
·
verified ·
1 Parent(s): 71a8976

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +17 -3
app.py CHANGED
@@ -32,6 +32,10 @@ def train_model(output_range):
32
  import joblib
33
  hemoglobin_model = joblib.load("hemoglobin_model_from_anemia_dataset.pkl")
34
 
 
 
 
 
35
  models = {
36
  "Hemoglobin": hemoglobin_model,
37
  "WBC Count": train_model((4.0, 11.0)),
@@ -86,15 +90,25 @@ def analyze_face(image):
86
  landmarks = result.multi_face_landmarks[0].landmark
87
  features = extract_features(frame_rgb, landmarks)
88
  test_values = {}
 
89
  for label in models:
90
  if label == "Hemoglobin":
91
- test_values[label] = models[label].predict([features])[0] # 3D input
 
 
92
  else:
93
- test_values[label] = models[label].predict([[random.uniform(0.2, 0.5) for _ in range(7)]])[0] # simulate other 7D inputs
 
 
94
  heart_rate = int(60 + 30 * np.sin(np.mean(frame_rgb) / 255.0 * np.pi))
95
- spo2 = min(100, max(90, 97 + (heart_rate % 5 - 2)))
 
 
 
 
96
  rr = int(12 + abs(heart_rate % 5 - 2))
97
  html_output = "".join([
 
98
  build_table("🩸 Hematology", [("Hemoglobin", test_values["Hemoglobin"], (13.5, 17.5)), ("WBC Count", test_values["WBC Count"], (4.0, 11.0)), ("Platelet Count", test_values["Platelet Count"], (150, 450))]),
99
  build_table("🧬 Iron Panel", [("Iron", test_values["Iron"], (60, 170)), ("Ferritin", test_values["Ferritin"], (30, 300)), ("TIBC", test_values["TIBC"], (250, 400))]),
100
  build_table("🧬 Liver & Kidney", [("Bilirubin", test_values["Bilirubin"], (0.3, 1.2)), ("Creatinine", test_values["Creatinine"], (0.6, 1.2)), ("Urea", test_values["Urea"], (7, 20))]),
 
32
  import joblib
33
  hemoglobin_model = joblib.load("hemoglobin_model_from_anemia_dataset.pkl")
34
 
35
+ hemoglobin_r2 = 0.385
36
+ import joblib
37
+ spo2_model = joblib.load("spo2_model_simulated.pkl")
38
+
39
  models = {
40
  "Hemoglobin": hemoglobin_model,
41
  "WBC Count": train_model((4.0, 11.0)),
 
90
  landmarks = result.multi_face_landmarks[0].landmark
91
  features = extract_features(frame_rgb, landmarks)
92
  test_values = {}
93
+ r2_scores = {}
94
  for label in models:
95
  if label == "Hemoglobin":
96
+ prediction = models[label].predict([features])[0]
97
+ test_values[label] = prediction
98
+ r2_scores[label] = hemoglobin_r2
99
  else:
100
+ value = models[label].predict([[random.uniform(0.2, 0.5) for _ in range(7)]])[0]
101
+ test_values[label] = value
102
+ r2_scores[label] = 0.0 # simulate other 7D inputs
103
  heart_rate = int(60 + 30 * np.sin(np.mean(frame_rgb) / 255.0 * np.pi))
104
+ skin_patch = frame_rgb[100:150, 100:150]
105
+ skin_tone_index = np.mean(skin_patch) / 255 if skin_patch.size else 0.5
106
+ brightness_variation = np.std(cv2.cvtColor(frame_rgb, cv2.COLOR_RGB2GRAY)) / 255
107
+ spo2_features = [heart_rate, brightness_variation, skin_tone_index]
108
+ spo2 = spo2_model.predict([spo2_features])[0]
109
  rr = int(12 + abs(heart_rate % 5 - 2))
110
  html_output = "".join([
111
+ f'<div style="font-size:14px;color:#888;margin-bottom:10px;">Hemoglobin R² Score: {r2_scores.get("Hemoglobin", "NA"):.2f}</div>',
112
  build_table("🩸 Hematology", [("Hemoglobin", test_values["Hemoglobin"], (13.5, 17.5)), ("WBC Count", test_values["WBC Count"], (4.0, 11.0)), ("Platelet Count", test_values["Platelet Count"], (150, 450))]),
113
  build_table("🧬 Iron Panel", [("Iron", test_values["Iron"], (60, 170)), ("Ferritin", test_values["Ferritin"], (30, 300)), ("TIBC", test_values["TIBC"], (250, 400))]),
114
  build_table("🧬 Liver & Kidney", [("Bilirubin", test_values["Bilirubin"], (0.3, 1.2)), ("Creatinine", test_values["Creatinine"], (0.6, 1.2)), ("Urea", test_values["Urea"], (7, 20))]),