Esempio n. 1
0
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
Esempio n. 2
0
    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