import ips import numpy as np def get_values(f): return f.lower0, f.lower50, f.median, f.upper50, f.upper0 def get_lengths(f): (a, b, c, d, e) = get_values(f) return b - a, c - b, d - c, e - d def get_exp(f): (a, b, c, d, e) = get_values(f) return (b + c + d) / 4 + (a + e) / 8 def get_interval(f, p): (a, b, c, d, e) = get_values(f) if p < 0.25: smallest = np.argmin(get_lengths(f)) l, r = 0, 0 if smallest == 0: l, r = a, b elif smallest == 1: l, r = b, c elif smallest == 2: l, r = c, d elif smallest == 3: l, r = d, e res_len = (r - l) * 25 * p mid = (l + r) / 2 start, end = mid - (res_len / 2), mid + (res_len / 2) return start, end # получаем структуру для работы ips.debug_psm_file('state-random.json') psm = ips.init() q = psm.wind[0].forecast print(q.lower0) print("Exp: ", get_exp(q)) print("Int 10%", get_interval(q, .10))