Spaces:
Sleeping
Sleeping
Update app.py
Browse files
app.py
CHANGED
|
@@ -162,18 +162,57 @@ def update_oni_data():
|
|
| 162 |
os.remove(temp_file)
|
| 163 |
|
| 164 |
def load_data(oni_path, typhoon_path):
|
| 165 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 166 |
logging.error(f"Typhoon data file not found: {typhoon_path}")
|
| 167 |
-
|
| 168 |
-
|
| 169 |
-
|
| 170 |
-
|
| 171 |
-
|
| 172 |
-
|
| 173 |
-
|
| 174 |
-
|
| 175 |
-
|
| 176 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
| 177 |
|
| 178 |
def process_oni_data(oni_data):
|
| 179 |
oni_long = oni_data.melt(id_vars=['Year'], var_name='Month', value_name='ONI')
|
|
|
|
| 162 |
os.remove(temp_file)
|
| 163 |
|
| 164 |
def load_data(oni_path, typhoon_path):
|
| 165 |
+
# Create default empty DataFrames
|
| 166 |
+
oni_data = pd.DataFrame({'Year': [], 'Jan': [], 'Feb': [], 'Mar': [], 'Apr': [],
|
| 167 |
+
'May': [], 'Jun': [], 'Jul': [], 'Aug': [], 'Sep': [],
|
| 168 |
+
'Oct': [], 'Nov': [], 'Dec': []})
|
| 169 |
+
typhoon_data = pd.DataFrame()
|
| 170 |
+
|
| 171 |
+
# Try to load ONI data
|
| 172 |
+
if os.path.exists(oni_path):
|
| 173 |
+
try:
|
| 174 |
+
oni_data = pd.read_csv(oni_path)
|
| 175 |
+
except Exception as e:
|
| 176 |
+
logging.error(f"Error loading ONI data: {e}")
|
| 177 |
+
# Update ONI data if loading fails
|
| 178 |
+
update_oni_data()
|
| 179 |
+
try:
|
| 180 |
+
oni_data = pd.read_csv(oni_path)
|
| 181 |
+
except Exception as e:
|
| 182 |
+
logging.error(f"Still can't load ONI data: {e}")
|
| 183 |
+
else:
|
| 184 |
+
logging.warning(f"ONI data file not found: {oni_path}")
|
| 185 |
+
# Try to download ONI data
|
| 186 |
+
update_oni_data()
|
| 187 |
+
try:
|
| 188 |
+
oni_data = pd.read_csv(oni_path)
|
| 189 |
+
except Exception as e:
|
| 190 |
+
logging.error(f"Failed to create ONI data: {e}")
|
| 191 |
+
|
| 192 |
+
# Try to load typhoon data
|
| 193 |
+
if os.path.exists(typhoon_path):
|
| 194 |
+
try:
|
| 195 |
+
typhoon_data = pd.read_csv(typhoon_path, low_memory=False)
|
| 196 |
+
typhoon_data['ISO_TIME'] = pd.to_datetime(typhoon_data['ISO_TIME'], errors='coerce')
|
| 197 |
+
typhoon_data = typhoon_data.dropna(subset=['ISO_TIME'])
|
| 198 |
+
except Exception as e:
|
| 199 |
+
logging.error(f"Error loading typhoon data: {e}")
|
| 200 |
+
else:
|
| 201 |
logging.error(f"Typhoon data file not found: {typhoon_path}")
|
| 202 |
+
# Create minimal sample data to prevent crashes
|
| 203 |
+
typhoon_data = pd.DataFrame({
|
| 204 |
+
'SID': ['WP012000'],
|
| 205 |
+
'ISO_TIME': [pd.Timestamp('2000-01-01')],
|
| 206 |
+
'NAME': ['SAMPLE'],
|
| 207 |
+
'SEASON': [2000],
|
| 208 |
+
'LAT': [20.0],
|
| 209 |
+
'LON': [140.0],
|
| 210 |
+
'USA_WIND': [50.0],
|
| 211 |
+
'USA_PRES': [990.0]
|
| 212 |
+
})
|
| 213 |
+
logging.warning("Created minimal sample typhoon data to prevent crashes")
|
| 214 |
+
|
| 215 |
+
return oni_data, typhoon_data
|
| 216 |
|
| 217 |
def process_oni_data(oni_data):
|
| 218 |
oni_long = oni_data.melt(id_vars=['Year'], var_name='Month', value_name='ONI')
|