def pickle_warnings(regions, date_from, date_to, pickle_file_name): '''All forecasted warnings and problems are selected from regObs or the avalanche api. Dangers and problems are connected and neatly pickel'd for later use. :param regions: list [int] RegionID as given in regObs [101-199] :param date_from: string as 'yyyy-mm-dd' :param date_to: string as 'yyyy-mm-dd' :param pickle_file_name: filename including directory as string :return: ''' warnings = [] for r in regions: # get all warning and problems for this region and then loop though them joining them where dates match. region_warnings = gfa.get_warnings(r, date_from, date_to) name = gro.get_forecast_region_name(r) problems = gro.get_problems_from_AvalancheWarnProblemV(r, date_from, date_to) print 'runmatrix.py -> pickle_warnings: {0} problems found for {1}'.format(len(problems), name) for i in range(0, len(region_warnings), 1): for j in range(0, len(problems), 1): if region_warnings[i].date == problems[j].date: region_warnings[i].add_problem(problems[j]) warnings += region_warnings # make sure all problems are ordered from lowest id (main problem) to largest. for w in warnings: w.avalanche_problems = sorted(w.avalanche_problems, key=lambda AvalancheProblem: AvalancheProblem.order) mp.pickle_anything(warnings, pickle_file_name)
def make_plots_for_region(region_id, problems, dangers, aval_indexes, start_date, end_date): """ This method prepares data for plotting and calls on the plot methods. Pure administration. :param region_id: [int] Forecast region ID as given in ForecastRegionKDV :param start_date: [string] :param end_date: [string] :return: """ region_name = gro.get_forecast_region_name(region_id) causes = [] # list of dates and causes for p in problems: causes.append(AvalanceCause(p.cause_tid, p.date, p.source)) danger_levels = [] for d in dangers: if d.nick != "drift@svv" and d.danger_level > 0: # for these plots elrapp wil make noise. danger_levels.append(DangerLevel(d.danger_level, d.date, d.source, d)) # Only data with danger levels are plotted if len(danger_levels) is not 0: # Danger level histograms plot_danger_levels(region_name, start_date, end_date, danger_levels, aval_indexes) # Cause horizontal line plots if end_date > dt.date(2014, 11, 01) and start_date > dt.date( 2014, 11, 01 ): # Early years dont have this avalanche problem plot_causes(region_name, start_date, end_date, causes) return
def make_plots_for_region(region_id, problems, dangers, start_date, end_date): """ This method prepares data for plotting and calls on the plot methods. Pure administration. :param region_id: [int] Forecast region ID as given in ForecastRegionKDV :param start_date: [string] :param end_date: [string] :return: """ region_name = gro.get_forecast_region_name(region_id) danger_levels = [] causes = [] # list of dates and causes for p in problems: causes.append( AvalanceCause(p.cause_tid, p.date, p.source) ) for d in dangers: if d.nick != 'drift@svv' and d.danger_level > 0: danger_levels.append( DangerLevel(d.danger_level, d.date, d.source)) # No data, no plot if len(danger_levels) is not 0: plot_danger_levels(region_name, start_date, end_date, danger_levels) if end_date > dt.date(2014, 11, 01) and start_date > dt.date(2014, 11, 01): # Early years dont have this avalanche problem plot_causes(region_name, start_date, end_date, causes)
def pickle_warnings(regions, date_from, date_to, pickle_file_name): """ All warnings and problems are selected from regObs or the avalanche api and neatly pickel'd for later use. This method also gets all warnings in english for the english main message. :param regions: list [] :param date_from: string as 'yyyy-mm-dd' :param date_to: string as 'yyyy-mm-dd' :param pickle_file_name: filename including directory as string :return: """ warnings = [] # get all warning and problems for this region and then loop though them joining them on date for r in regions: warnings_no = gfa.get_warnings(r, date_from, date_to) warnings_en = gfa.get_warnings(r, date_from, date_to, lang_key=2) name = gro.get_forecast_region_name(r) problems = gro.get_problems_from_AvalancheWarnProblemV(name, r, date_from, date_to) print "{0} problems found for {1}".format(len(problems), name) # loop trough all the norwegian forecasts for i in range(0, len(warnings_no), 1): # add problems with same dates for j in range(0, len(problems), 1): if warnings_no[i].date == problems[j].date: warnings_no[i].add_problem(problems[j]) # add english main message with same dates for k in range(0, len(warnings_en), 1): if warnings_no[i].date == warnings_en[k].date: warnings_no[i].set_main_message_en(warnings_en[k].main_message_en) continue warnings = warnings + warnings_no mp.pickle_anything(warnings, pickle_file_name)