Rammohan0504 commited on
Commit
94e0da7
·
verified ·
1 Parent(s): 70542c8

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +27 -10
app.py CHANGED
@@ -137,6 +137,7 @@ def analyze_face(image):
137
  features = extract_features(frame_rgb, landmarks)
138
  test_values = {}
139
  r2_scores = {}
 
140
  for label in models:
141
  if label == "Hemoglobin":
142
  prediction = models[label].predict([features])[0]
@@ -146,6 +147,7 @@ def analyze_face(image):
146
  value = models[label].predict([[random.uniform(0.2, 0.5) for _ in range(7)]])[0]
147
  test_values[label] = value
148
  r2_scores[label] = 0.0 # simulate other 7D inputs
 
149
  gray = cv2.cvtColor(frame_rgb, cv2.COLOR_RGB2GRAY)
150
  green_std = np.std(frame_rgb[:, :, 1]) / 255
151
  brightness_std = np.std(gray) / 255
@@ -158,17 +160,32 @@ def analyze_face(image):
158
  spo2_features = [heart_rate, brightness_variation, skin_tone_index]
159
  spo2 = spo2_model.predict([spo2_features])[0]
160
  rr = int(12 + abs(heart_rate % 5 - 2))
161
- html_output = "".join([
162
- f'<div style="font-size:14px;color:#888;margin-bottom:10px;">Hemoglobin Score: {r2_scores.get("Hemoglobin", "NA"):.2f}</div>',
163
- 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))]),
164
- build_table("🧬 Iron Panel", [("Iron", test_values["Iron"], (60, 170)), ("Ferritin", test_values["Ferritin"], (30, 300)), ("TIBC", test_values["TIBC"], (250, 400))]),
165
- 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))]),
166
- build_table("🧪 Electrolytes", [("Sodium", test_values["Sodium"], (135, 145)), ("Potassium", test_values["Potassium"], (3.5, 5.1))]),
167
- build_table("❤️ Vitals", [("SpO2", spo2, (95, 100)), ("Heart Rate", heart_rate, (60, 100)), ("Respiratory Rate", rr, (12, 20)), ("Temperature", test_values["Temperature"], (97, 99)), ("BP Systolic", test_values["BP Systolic"], (90, 120)), ("BP Diastolic", test_values["BP Diastolic"], (60, 80))])
168
- ])
 
 
 
 
 
 
 
 
 
 
 
 
 
 
169
  summary = "<ul><li>Your hemoglobin is a bit low — this could mean mild anemia.</li><li>Low iron storage detected — consider an iron profile test.</li><li>Elevated bilirubin — possible jaundice. Recommend LFT.</li><li>High HbA1c — prediabetes indication. Recommend glucose check.</li><li>Low SpO₂ — suggest retesting with a pulse oximeter.</li></ul>"
170
-
171
- health_card_html = build_health_card("profile_image_placeholder_base64", html_output, summary)
 
172
  return health_card_html
173
 
174
  # Create Gradio interface
 
137
  features = extract_features(frame_rgb, landmarks)
138
  test_values = {}
139
  r2_scores = {}
140
+
141
  for label in models:
142
  if label == "Hemoglobin":
143
  prediction = models[label].predict([features])[0]
 
147
  value = models[label].predict([[random.uniform(0.2, 0.5) for _ in range(7)]])[0]
148
  test_values[label] = value
149
  r2_scores[label] = 0.0 # simulate other 7D inputs
150
+
151
  gray = cv2.cvtColor(frame_rgb, cv2.COLOR_RGB2GRAY)
152
  green_std = np.std(frame_rgb[:, :, 1]) / 255
153
  brightness_std = np.std(gray) / 255
 
160
  spo2_features = [heart_rate, brightness_variation, skin_tone_index]
161
  spo2 = spo2_model.predict([spo2_features])[0]
162
  rr = int(12 + abs(heart_rate % 5 - 2))
163
+
164
+ # Prepare the test results
165
+ test_results = {
166
+ "Hematology": build_table("🩸 Hematology", [("Hemoglobin", test_values["Hemoglobin"], (13.5, 17.5)),
167
+ ("WBC Count", test_values["WBC Count"], (4.0, 11.0)),
168
+ ("Platelet Count", test_values["Platelet Count"], (150, 450))]),
169
+ "Iron Panel": build_table("🧬 Iron Panel", [("Iron", test_values["Iron"], (60, 170)),
170
+ ("Ferritin", test_values["Ferritin"], (30, 300)),
171
+ ("TIBC", test_values["TIBC"], (250, 400))]),
172
+ "Liver & Kidney": build_table("🧬 Liver & Kidney", [("Bilirubin", test_values["Bilirubin"], (0.3, 1.2)),
173
+ ("Creatinine", test_values["Creatinine"], (0.6, 1.2)),
174
+ ("Urea", test_values["Urea"], (7, 20))]),
175
+ "Electrolytes": build_table("🧪 Electrolytes", [("Sodium", test_values["Sodium"], (135, 145)),
176
+ ("Potassium", test_values["Potassium"], (3.5, 5.1))]),
177
+ "Vitals": build_table("❤️ Vitals", [("SpO2", spo2, (95, 100)),
178
+ ("Heart Rate", heart_rate, (60, 100)),
179
+ ("Respiratory Rate", rr, (12, 20)),
180
+ ("Temperature", test_values["Temperature"], (97, 99)),
181
+ ("BP Systolic", test_values["BP Systolic"], (90, 120)),
182
+ ("BP Diastolic", test_values["BP Diastolic"], (60, 80))])
183
+ }
184
+
185
  summary = "<ul><li>Your hemoglobin is a bit low — this could mean mild anemia.</li><li>Low iron storage detected — consider an iron profile test.</li><li>Elevated bilirubin — possible jaundice. Recommend LFT.</li><li>High HbA1c — prediabetes indication. Recommend glucose check.</li><li>Low SpO₂ — suggest retesting with a pulse oximeter.</li></ul>"
186
+
187
+ # Generate Health Card HTML
188
+ health_card_html = build_health_card("profile_image_placeholder_base64", test_results, summary)
189
  return health_card_html
190
 
191
  # Create Gradio interface