Commit a2acd277 authored by Le Roux Erwan's avatar Le Roux Erwan
Browse files

[contrasting project] fix memory issue that was happening while loading many...

[contrasting project] fix memory issue that was happening while loading many precipitation studies. issue #300
parent 312e7948
No related merge requests found
Showing with 22 additions and 15 deletions
+22 -15
...@@ -80,8 +80,10 @@ class SafranTotalPrecipVariable(AbstractVariable): ...@@ -80,8 +80,10 @@ class SafranTotalPrecipVariable(AbstractVariable):
def __init__(self, snow_variable_array, rain_variable_array, nb_consecutive_days): def __init__(self, snow_variable_array, rain_variable_array, nb_consecutive_days):
super().__init__(None) super().__init__(None)
self.snow_precipitation = SafranSnowfallVariable(snow_variable_array, nb_consecutive_days) snow_precipitation = SafranSnowfallVariable(snow_variable_array, nb_consecutive_days)
self.rain_precipitation = SafranRainfallVariable(rain_variable_array, nb_consecutive_days) rain_precipitation = SafranRainfallVariable(rain_variable_array, nb_consecutive_days)
self._daily_time_serie_array = snow_precipitation.daily_time_serie_array \
+ rain_precipitation.daily_time_serie_array
@classmethod @classmethod
def keyword(cls): def keyword(cls):
...@@ -89,7 +91,7 @@ class SafranTotalPrecipVariable(AbstractVariable): ...@@ -89,7 +91,7 @@ class SafranTotalPrecipVariable(AbstractVariable):
@property @property
def daily_time_serie_array(self) -> np.ndarray: def daily_time_serie_array(self) -> np.ndarray:
return self.snow_precipitation.daily_time_serie_array + self.rain_precipitation.daily_time_serie_array return self._daily_time_serie_array
class SafranTemperatureVariable(AbstractVariable): class SafranTemperatureVariable(AbstractVariable):
......
...@@ -5,18 +5,23 @@ from extreme_fit.model.margin_model.linear_margin_model.abstract_temporal_linear ...@@ -5,18 +5,23 @@ from extreme_fit.model.margin_model.linear_margin_model.abstract_temporal_linear
from extreme_trend.visualizers.study_visualizer_for_non_stationary_trends import \ from extreme_trend.visualizers.study_visualizer_for_non_stationary_trends import \
StudyVisualizerForNonStationaryTrends StudyVisualizerForNonStationaryTrends
def load_altitude_to_visualizer(altitudes, massif_names, model_subsets_for_uncertainty, study_class, def load_altitude_to_visualizer(altitudes, massif_names, model_subsets_for_uncertainty, study_class,
uncertainty_methods, uncertainty_methods,
study_visualizer_class=StudyVisualizerForNonStationaryTrends, study_visualizer_class=StudyVisualizerForNonStationaryTrends,
save_to_file=True): save_to_file=True,
multiprocessing=True):
fit_method = TemporalMarginFitMethod.extremes_fevd_mle fit_method = TemporalMarginFitMethod.extremes_fevd_mle
altitude_to_visualizer = OrderedDict() altitude_to_visualizer = OrderedDict()
for altitude in altitudes: for altitude in altitudes:
altitude_to_visualizer[altitude] = study_visualizer_class( study = study_class(altitude=altitude, multiprocessing=multiprocessing)
study=study_class(altitude=altitude), multiprocessing=True, save_to_file=save_to_file, study_visualizer = study_visualizer_class(study=study, multiprocessing=multiprocessing,
uncertainty_massif_names=massif_names, uncertainty_methods=uncertainty_methods, save_to_file=save_to_file, uncertainty_massif_names=massif_names,
model_subsets_for_uncertainty=model_subsets_for_uncertainty, fit_method=fit_method, uncertainty_methods=uncertainty_methods,
select_only_acceptable_shape_parameter=True, model_subsets_for_uncertainty=model_subsets_for_uncertainty,
fit_gev_only_on_non_null_maxima=False, fit_method=fit_method, select_only_acceptable_shape_parameter=True,
fit_only_time_series_with_ninety_percent_of_non_null_values=True) fit_gev_only_on_non_null_maxima=False,
fit_only_time_series_with_ninety_percent_of_non_null_values=True)
altitude_to_visualizer[altitude] = study_visualizer
return altitude_to_visualizer return altitude_to_visualizer
...@@ -65,17 +65,17 @@ def major_result(): ...@@ -65,17 +65,17 @@ def major_result():
model_subsets_for_uncertainty = None model_subsets_for_uncertainty = None
# altitudes = paper_altitudes # altitudes = paper_altitudes
# altitudes = paper_altitudes # altitudes = paper_altitudes
altitudes = [900, 1200, 1500, 1800, 2100, 2400, 2700, 3000][:4] altitudes = [900, 1200, 1500, 1800, 2100, 2400, 2700, 3000][:8]
snow_load_classes = [CrocusSnowLoad1Day, CrocusSnowLoad3Days, CrocusSnowLoad5Days, CrocusSnowLoad7Days][:] snow_load_classes = [CrocusSnowLoad1Day, CrocusSnowLoad3Days, CrocusSnowLoad5Days, CrocusSnowLoad7Days][:]
precipitation_classes = [SafranPrecipitation1Day, SafranPrecipitation3Days, SafranPrecipitation5Days, precipitation_classes = [SafranPrecipitation1Day, SafranPrecipitation3Days, SafranPrecipitation5Days,
SafranPrecipitation7Days][:] SafranPrecipitation7Days][:]
snowfall_classes = [SafranSnowfall1Day, SafranSnowfall3Days, SafranSnowfall5Days, SafranSnowfall7Days] snowfall_classes = [SafranSnowfall1Day, SafranSnowfall3Days, SafranSnowfall5Days, SafranSnowfall7Days]
rainfall_classes = [SafranRainfall1Day, SafranRainfall3Days, SafranRainfall5Days, SafranRainfall7Days] rainfall_classes = [SafranRainfall1Day, SafranRainfall3Days, SafranRainfall5Days, SafranRainfall7Days]
study_classes = precipitation_classes + snow_load_classes study_classes = precipitation_classes + snow_load_classes
study_classes = snowfall_classes + rainfall_classes # study_classes = snowfall_classes + rainfall_classes
for study_class in study_classes: for study_class in study_classes[:1]:
intermediate_result(altitudes, massif_names, model_subsets_for_uncertainty, intermediate_result(altitudes, massif_names, model_subsets_for_uncertainty,
uncertainty_methods, study_class) uncertainty_methods, study_class, multiprocessing=True)
if __name__ == '__main__': if __name__ == '__main__':
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment