def fill_missed(data, sea): if sea != 'chukchi': #this sea has ice full year fill_zeros(data, sea) interp_funcs = interpolate_missed(data) prev = init_prev(data) for year in sorted(data): for month in sorted(data[year]): for dec in sorted(data[year][month]): curr_global_dec = est.get_global_dec(year, month, dec) prev_global_dec = curr_global_dec if prev['date']['year'] == 0 else \ est.get_global_dec(prev['date']['year'], prev['date']['month'], prev['date']['dec']) dist = curr_global_dec - prev_global_dec if dist > 1: for d in range(1, dist): local_data = est.get_local_date(prev_global_dec + d) #print(local_data) append_to_data(data, local_data['year'], local_data['month'], local_data['dec'], { 'avg_area': float(interp_funcs[0](prev_global_dec + d)), 'avg_conc': float(interp_funcs[1](prev_global_dec + d)), 'avg_vol': float(interp_funcs[2](prev_global_dec + d)) }) prev['date'] = {'year': year, 'month': month, 'dec': dec} return data
def calc_rates(self, data, field_name, k, t, jb, je, l, u, last_year, prec, pair_coeffs, num): max_val_l = est.find_max_val(data[l], field_name) states_l = [(max_val_l / prec * i) for i in range(prec + 1)] rates_sum = 0 for i in range(len(states_l) - 1): rates = self.chosen_rates(data, field_name, k, t + 1, jb, je, l, u + 1, states_l[i], states_l[i + 1], last_year) if (states_l[i], states_l[i + 1]) not in self.global_probs[l][u].keys(): cur_date = est.get_local_date(u + 1) try: known_data = data[l][cur_date['year']][cur_date['month']][ cur_date['dec']][field_name] cond = False if i < len(states_l) - 2: cond = known_data >= states_l[ i] and known_data < states_l[i + 1] else: cond = known_data >= states_l[ i] and known_data <= states_l[i + 1] if cond: self.global_probs[l][u][(states_l[i], states_l[i + 1])] = 1.0 else: self.global_probs[l][u][(states_l[i], states_l[i + 1])] = 0.0 except: self.global_probs[l][u][(states_l[i], states_l[i + 1])] = \ self.get_prob(data, field_name, l, u, states_l[i], states_l[i + 1], last_year, prec, pair_coeffs, num + 1) rates_sum += rates * self.global_probs[l][u][(states_l[i], states_l[i + 1])] return rates_sum