Source code for meow.integrate

from scipy.integrate import dblquad, simpson
from scipy.interpolate import RegularGridInterpolator


[docs]def integrate_interpolate_2d(x, y, data, extent=None): """ First the data on the given grid is interpolated and then integrated using `scipy.dblquad`. This procedure is best suited if one wants to integrate over a (small) region of interest that can be placed at off-grid positions """ interp = RegularGridInterpolator((x, y), data) if extent is None: extent = [[min(x), max(x)], [min(y), max(y)]] def integrable(x, y): return interp((x, y)) return dblquad( integrable, extent[0][0], extent[0][1], lambda x: extent[1][0], lambda x: extent[1][1], epsabs=1, epsrel=0.001, )[0]
[docs]def integrate_2d(x, y, data) -> float: """much simpler integration over the full grid""" int1 = simpson(data, y) int2 = simpson(int1, x) return float(int2)