mabuseif commited on
Commit
1aba450
·
verified ·
1 Parent(s): 307b7da

Update app/data_persistence.py

Browse files
Files changed (1) hide show
  1. app/data_persistence.py +17 -1
app/data_persistence.py CHANGED
@@ -41,6 +41,7 @@ class DataPersistence:
41
  "internal_loads": session_state.get("internal_loads", {}),
42
  "calculation_settings": session_state.get("calculation_settings", {}),
43
  "saved_scenarios": DataPersistence._serialize_scenarios(session_state.get("saved_scenarios", {})),
 
44
  "timestamp": datetime.now().strftime("%Y-%m-%d %H:%M:%S")
45
  }
46
 
@@ -82,6 +83,21 @@ class DataPersistence:
82
  if json_data:
83
  project_data = json.loads(json_data)
84
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
85
  # Deserialize components
86
  if "components" in project_data:
87
  project_data["components"] = DataPersistence._deserialize_components(project_data["components"])
@@ -537,4 +553,4 @@ if __name__ == "__main__":
537
  }
538
 
539
  # Display project management interface
540
- data_persistence.display_project_management(st.session_state)
 
41
  "internal_loads": session_state.get("internal_loads", {}),
42
  "calculation_settings": session_state.get("calculation_settings", {}),
43
  "saved_scenarios": DataPersistence._serialize_scenarios(session_state.get("saved_scenarios", {})),
44
+ "climate_data": session_state.get("climate_data", {}),
45
  "timestamp": datetime.now().strftime("%Y-%m-%d %H:%M:%S")
46
  }
47
 
 
83
  if json_data:
84
  project_data = json.loads(json_data)
85
 
86
+ # Validate climate data latitude
87
+ if "climate_data" in project_data:
88
+ valid_latitudes = [24, 32, 40, 48, 56]
89
+ for location_id, location in project_data["climate_data"].items():
90
+ if "latitude" in location:
91
+ try:
92
+ input_latitude = float(location["latitude"])
93
+ nearest_latitude = min(valid_latitudes, key=lambda x: abs(x - input_latitude))
94
+ if abs(input_latitude - nearest_latitude) > 0.1: # Allow small float differences
95
+ st.warning(f"Latitude {input_latitude} for {location_id} is invalid for ASHRAE tables. Using nearest valid latitude: {nearest_latitude}.")
96
+ location["latitude"] = nearest_latitude
97
+ except ValueError:
98
+ st.error(f"Invalid latitude format for {location_id}: {location['latitude']}.")
99
+ return None
100
+
101
  # Deserialize components
102
  if "components" in project_data:
103
  project_data["components"] = DataPersistence._deserialize_components(project_data["components"])
 
553
  }
554
 
555
  # Display project management interface
556
+ data_persistence.display_project_management(st.session_state)