Spaces:
Sleeping
Sleeping
Update app.py
Browse files
app.py
CHANGED
@@ -15,29 +15,29 @@ warnings.filterwarnings('ignore', category=UserWarning, module='sklearn')
|
|
15 |
# Logging setup
|
16 |
logging.basicConfig(level=logging.INFO)
|
17 |
|
18 |
-
#
|
19 |
-
|
20 |
-
|
21 |
-
|
|
|
|
|
22 |
|
23 |
-
# Model ZIP
|
24 |
MODEL_PATHS = {
|
25 |
"DIABETES_MODEL": "finaliseddiabetes_model.zip",
|
26 |
"SCALER": "finalisedscaler.zip",
|
27 |
"MULTI_MODEL": "nodiabetes.zip",
|
28 |
}
|
29 |
|
30 |
-
# Extracted
|
31 |
EXTRACTED_MODELS = {
|
32 |
"DIABETES_MODEL": "finaliseddiabetes_model.joblib",
|
33 |
"SCALER": "finalisedscaler.joblib",
|
34 |
"MULTI_MODEL": "nodiabetes.joblib",
|
35 |
}
|
36 |
|
37 |
-
# Use writeable temp dir
|
38 |
TMP_DIR = "/tmp"
|
39 |
|
40 |
-
# Flask app init
|
41 |
app = Flask(__name__)
|
42 |
CORS(app, supports_credentials=True)
|
43 |
|
@@ -103,11 +103,18 @@ def initialize_models():
|
|
103 |
models = {}
|
104 |
for model_key, zip_filename in MODEL_PATHS.items():
|
105 |
extracted_filename = EXTRACTED_MODELS[model_key]
|
|
|
|
|
106 |
zip_path = os.path.join(TMP_DIR, zip_filename)
|
107 |
if not os.path.exists(zip_path):
|
108 |
-
download_model(
|
109 |
-
|
|
|
|
|
|
|
|
|
110 |
models[model_key] = load_model(extracted_filename)
|
|
|
111 |
return models
|
112 |
|
113 |
models = initialize_models()
|
@@ -183,7 +190,7 @@ def predict_health():
|
|
183 |
|
184 |
gender = validate_gender(data.get('gender'))
|
185 |
if gender is None:
|
186 |
-
return jsonify({'status': 'error', 'error': 'Invalid gender value. Must be "male" or "female"'}), 400
|
187 |
|
188 |
systolic, diastolic = validate_blood_pressure(data.get('systolic'), data.get('diastolic'))
|
189 |
if systolic is None or diastolic is None:
|
|
|
15 |
# Logging setup
|
16 |
logging.basicConfig(level=logging.INFO)
|
17 |
|
18 |
+
# Load URLs from environment
|
19 |
+
MODEL_URLS = {
|
20 |
+
"DIABETES_MODEL": os.getenv("DIABETES_MODEL_URL"),
|
21 |
+
"SCALER": os.getenv("SCALER_URL"),
|
22 |
+
"MULTI_MODEL": os.getenv("MULTI_MODEL_URL"),
|
23 |
+
}
|
24 |
|
25 |
+
# Model ZIP filenames
|
26 |
MODEL_PATHS = {
|
27 |
"DIABETES_MODEL": "finaliseddiabetes_model.zip",
|
28 |
"SCALER": "finalisedscaler.zip",
|
29 |
"MULTI_MODEL": "nodiabetes.zip",
|
30 |
}
|
31 |
|
32 |
+
# Extracted model file names
|
33 |
EXTRACTED_MODELS = {
|
34 |
"DIABETES_MODEL": "finaliseddiabetes_model.joblib",
|
35 |
"SCALER": "finalisedscaler.joblib",
|
36 |
"MULTI_MODEL": "nodiabetes.joblib",
|
37 |
}
|
38 |
|
|
|
39 |
TMP_DIR = "/tmp"
|
40 |
|
|
|
41 |
app = Flask(__name__)
|
42 |
CORS(app, supports_credentials=True)
|
43 |
|
|
|
103 |
models = {}
|
104 |
for model_key, zip_filename in MODEL_PATHS.items():
|
105 |
extracted_filename = EXTRACTED_MODELS[model_key]
|
106 |
+
url = MODEL_URLS.get(model_key)
|
107 |
+
|
108 |
zip_path = os.path.join(TMP_DIR, zip_filename)
|
109 |
if not os.path.exists(zip_path):
|
110 |
+
if not download_model(url, zip_filename):
|
111 |
+
continue
|
112 |
+
|
113 |
+
if not extract_if_needed(zip_filename, extracted_filename):
|
114 |
+
continue
|
115 |
+
|
116 |
models[model_key] = load_model(extracted_filename)
|
117 |
+
|
118 |
return models
|
119 |
|
120 |
models = initialize_models()
|
|
|
190 |
|
191 |
gender = validate_gender(data.get('gender'))
|
192 |
if gender is None:
|
193 |
+
return jsonify({'status': 'error', 'error': 'Invalid gender value. Must be \"male\" or \"female\"'}), 400
|
194 |
|
195 |
systolic, diastolic = validate_blood_pressure(data.get('systolic'), data.get('diastolic'))
|
196 |
if systolic is None or diastolic is None:
|