Spaces:
Sleeping
Sleeping
Update app.py
Browse files
app.py
CHANGED
|
@@ -69,21 +69,18 @@ except Exception as e:
|
|
| 69 |
def generate_heatmap(phase, weather, model):
|
| 70 |
print("Generating heatmap...")
|
| 71 |
try:
|
| 72 |
-
# Prepare data for heatmap
|
| 73 |
absentee_range = np.linspace(0, 100, 20)
|
| 74 |
delay_log_range = np.linspace(0, 20, 20)
|
| 75 |
framing = 1 if phase == "Framing" else 0
|
| 76 |
foundation = 1 if phase == "Foundation" else 0
|
| 77 |
weather_encoded = weather_map.get(weather, 0)
|
| 78 |
|
| 79 |
-
# Generate predictions for heatmap
|
| 80 |
Z = np.zeros((len(delay_log_range), len(absentee_range)))
|
| 81 |
for i, delay_log in enumerate(delay_log_range):
|
| 82 |
for j, absentee in enumerate(absentee_range):
|
| 83 |
input_data = [[framing, foundation, weather_encoded, absentee, delay_log]]
|
| 84 |
Z[i, j] = model.predict(input_data)[0]
|
| 85 |
|
| 86 |
-
# Create heatmap
|
| 87 |
plt.figure(figsize=(8, 6))
|
| 88 |
sns.heatmap(Z, xticklabels=np.round(absentee_range, 1), yticklabels=np.round(delay_log_range, 1),
|
| 89 |
cmap="YlOrRd", annot=True, fmt=".1f", cbar_kws={'label': 'Predicted Delay %'})
|
|
@@ -91,7 +88,6 @@ def generate_heatmap(phase, weather, model):
|
|
| 91 |
plt.ylabel("Previous Delay Log")
|
| 92 |
plt.title(f"Delay Prediction Heatmap (Phase: {phase}, Weather: {weather})")
|
| 93 |
|
| 94 |
-
# Save heatmap
|
| 95 |
output_dir = "pdf_reports"
|
| 96 |
os.makedirs(output_dir, exist_ok=True)
|
| 97 |
timestamp = datetime.now().strftime("%Y%m%d_%H%M%S")
|
|
@@ -123,7 +119,7 @@ def generate_pdf_report(phase, weather, absentee_pct, delay_log, prediction, ris
|
|
| 123 |
f"Weather: {weather}",
|
| 124 |
f"Absentee Percentage: {absentee_pct}%",
|
| 125 |
f"Previous Delay Log: {delay_log}",
|
| 126 |
-
f"Predicted Delay: {prediction}%",
|
| 127 |
f"Risk Level: {risk}",
|
| 128 |
"AI Insight:"
|
| 129 |
]
|
|
@@ -299,7 +295,8 @@ try:
|
|
| 299 |
prediction, risk, insight, pdf_base64, pdf_path, heatmap_path = predict_delay(phase, weather, absentee, delay_log)
|
| 300 |
if prediction is None:
|
| 301 |
return f"Error: {insight}"
|
| 302 |
-
|
|
|
|
| 303 |
f"Risk Level: {risk}\n"
|
| 304 |
f"Insight: {insight}\n"
|
| 305 |
f"PDF Report: {'Saved locally at ' + pdf_path if pdf_path else 'Failed to generate'}\n"
|
|
|
|
| 69 |
def generate_heatmap(phase, weather, model):
|
| 70 |
print("Generating heatmap...")
|
| 71 |
try:
|
|
|
|
| 72 |
absentee_range = np.linspace(0, 100, 20)
|
| 73 |
delay_log_range = np.linspace(0, 20, 20)
|
| 74 |
framing = 1 if phase == "Framing" else 0
|
| 75 |
foundation = 1 if phase == "Foundation" else 0
|
| 76 |
weather_encoded = weather_map.get(weather, 0)
|
| 77 |
|
|
|
|
| 78 |
Z = np.zeros((len(delay_log_range), len(absentee_range)))
|
| 79 |
for i, delay_log in enumerate(delay_log_range):
|
| 80 |
for j, absentee in enumerate(absentee_range):
|
| 81 |
input_data = [[framing, foundation, weather_encoded, absentee, delay_log]]
|
| 82 |
Z[i, j] = model.predict(input_data)[0]
|
| 83 |
|
|
|
|
| 84 |
plt.figure(figsize=(8, 6))
|
| 85 |
sns.heatmap(Z, xticklabels=np.round(absentee_range, 1), yticklabels=np.round(delay_log_range, 1),
|
| 86 |
cmap="YlOrRd", annot=True, fmt=".1f", cbar_kws={'label': 'Predicted Delay %'})
|
|
|
|
| 88 |
plt.ylabel("Previous Delay Log")
|
| 89 |
plt.title(f"Delay Prediction Heatmap (Phase: {phase}, Weather: {weather})")
|
| 90 |
|
|
|
|
| 91 |
output_dir = "pdf_reports"
|
| 92 |
os.makedirs(output_dir, exist_ok=True)
|
| 93 |
timestamp = datetime.now().strftime("%Y%m%d_%H%M%S")
|
|
|
|
| 119 |
f"Weather: {weather}",
|
| 120 |
f"Absentee Percentage: {absentee_pct}%",
|
| 121 |
f"Previous Delay Log: {delay_log}",
|
| 122 |
+
f"Predicted Delay: {prediction}%{' 🚩' if prediction >= 75 else ''}",
|
| 123 |
f"Risk Level: {risk}",
|
| 124 |
"AI Insight:"
|
| 125 |
]
|
|
|
|
| 295 |
prediction, risk, insight, pdf_base64, pdf_path, heatmap_path = predict_delay(phase, weather, absentee, delay_log)
|
| 296 |
if prediction is None:
|
| 297 |
return f"Error: {insight}"
|
| 298 |
+
flag = " 🚩" if prediction >= 75 else ""
|
| 299 |
+
return (f"Predicted Delay: {prediction}%{flag}\n"
|
| 300 |
f"Risk Level: {risk}\n"
|
| 301 |
f"Insight: {insight}\n"
|
| 302 |
f"PDF Report: {'Saved locally at ' + pdf_path if pdf_path else 'Failed to generate'}\n"
|