def _soviet_gamma(actual_yield, scale_range):
keys = list(_soviet_gamma_x.keys())
keys.sort() # keys may be returned in arbitrary order
if keys[-1] < actual_yield or actual_yield < keys[0]:
raise ValueOutsideGraphError(actual_yield)
for k in range(len(keys)):
k1 = keys[k]
k2 = keys[k + 1]
if k1 <= actual_yield <= k2:
xs1 = _soviet_gamma_x[k1]
ys1 = _soviet_gamma_y[k1]
xs2 = _soviet_gamma_x[k2]
ys2 = _soviet_gamma_y[k2]
if xs1[-1] < scale_range or scale_range < xs1[0] or xs2[-1] < scale_range or scale_range < xs2[0]:
raise ValueOutsideGraphError(scale_range)
y1 = np.interp(scale_range, xs1, ys1)
y2 = np.interp(scale_range, xs2, ys2)
return 10**np.interp(actual_yield, [k1, k2], [y1, y2])
# These functions adjust doses on the basis of the season-dependent scales
# found in the graphs
评论列表
文章目录