roshcheeku commited on
Commit
694bea5
·
verified ·
1 Parent(s): 268c5f7

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +18 -11
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
- # Model URLs from env
19
- DIABETES_MODEL_URL = os.getenv("DIABETES_MODEL_URL")
20
- SCALER_URL = os.getenv("SCALER_URL")
21
- MULTI_MODEL_URL = os.getenv("MULTI_MODEL_URL")
 
 
22
 
23
- # Model ZIP names
24
  MODEL_PATHS = {
25
  "DIABETES_MODEL": "finaliseddiabetes_model.zip",
26
  "SCALER": "finalisedscaler.zip",
27
  "MULTI_MODEL": "nodiabetes.zip",
28
  }
29
 
30
- # Extracted joblib names
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(globals()[f"{model_key}_URL"], zip_filename)
109
- extract_if_needed(zip_filename, extracted_filename)
 
 
 
 
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: