Loading src/lsst_inaf_agile/catalog_agn.py +1 −1 Original line number Diff line number Diff line Loading @@ -389,7 +389,7 @@ class CatalogAGN: def hopkins04(x, alpha, n): y = 1 / (1 + (x * alpha) ** n) return y / np.trapezoid(y, x) return y / util.my_trapezoid(y, x) ebv = np.empty(self.catalog.size) Loading src/lsst_inaf_agile/sed.py +3 −3 Original line number Diff line number Diff line Loading @@ -64,19 +64,19 @@ def get_flux_band(lam, flux, band, filter_db): is_narrow_band = np.max(lam_filter) - np.min(lam_filter) < 1e-3 if is_narrow_band: flux_filter = np.interp(lam_filter, lam, flux, left=0, right=0) ret1 = np.trapezoid(flux_filter * res_filter, x=lam_filter) ret1 = util.my_trapezoid(flux_filter * res_filter, x=lam_filter) return ret1 # Estimate and renormalize the filter at the datapoints res_filter = np.interp(lam, lam_filter, res_filter, left=0, right=0) norm = np.trapezoid(res_filter, lam) norm = util.my_trapezoid(res_filter, lam) # NOTE: no overlap between wavelengths and filter lambda? if norm == 0: return 0 res_filter /= norm ret2 = np.trapezoid(flux * res_filter, x=lam) ret2 = util.my_trapezoid(flux * res_filter, x=lam) return ret2 Loading src/lsst_inaf_agile/util.py +7 −0 Original line number Diff line number Diff line Loading @@ -804,3 +804,10 @@ def read_table(filename: str, *args, **kwargs): warnings.simplefilter("ignore", UnitsWarning) table = Table.read(filename, *args, **kwargs) return table def my_trapezoid(*args, **kwargs): try: return np.trapezoid(*args, **kwargs) except AttributeError: return np.trapz(*args, **kwargs) src/lsst_inaf_agile/zou2024.py +4 −4 Original line number Diff line number Diff line Loading @@ -30,7 +30,7 @@ from scipy import interpolate from scipy.optimize import minimize_scalar from scipy.special import gamma, gammaincc from lsst_inaf_agile import ueda2014 from lsst_inaf_agile import ueda2014, util # NOTE: refer to Zou+2024 dataset readme on the grid parameters Loading Loading @@ -274,7 +274,7 @@ def get_xray_luminosity_function( _m, _z = np.meshgrid(log_mstar, z[0, :, None]) y2 = fun_phi_star(_m, _z, t) return np.squeeze(np.trapezoid(y1 * y2, log_mstar, axis=-1)) return np.squeeze(util.my_trapezoid(y1 * y2, log_mstar, axis=-1)) def get_specific_accretion_rate_distribution_function(loglambda, log_mstar, z, t="all", dlog_mstar=0.10): Loading Loading @@ -324,7 +324,7 @@ def get_log_plambda_ctk(loglambda, m, z, t, test_integral=True, *args, **kwargs) # NOTE: safety assertion that p_agn is still a probability measure # within l \in loglambda if test_integral: test = np.trapezoid(10**log_p_ctn + 10**log_p_ctk, loglambda) test = util.my_trapezoid(10**log_p_ctn + 10**log_p_ctk, loglambda) assert np.all(test <= 1.00), (test, m, z, t) return log_p_ctk Loading Loading @@ -408,7 +408,7 @@ def get_fraction_agn(xmin, mstar, z, t, add_ctk=True, *args, **kwargs): # NOTE: attempt to fix a possible shape mismatch between loglambda and mstar try: y = get_p_tot(x) ret = np.trapezoid(y, x) ret = util.my_trapezoid(y, x) except ValueError: y = get_p_tot(x[:, None]) ret = np.sum(y * dX, axis=0) Loading Loading
src/lsst_inaf_agile/catalog_agn.py +1 −1 Original line number Diff line number Diff line Loading @@ -389,7 +389,7 @@ class CatalogAGN: def hopkins04(x, alpha, n): y = 1 / (1 + (x * alpha) ** n) return y / np.trapezoid(y, x) return y / util.my_trapezoid(y, x) ebv = np.empty(self.catalog.size) Loading
src/lsst_inaf_agile/sed.py +3 −3 Original line number Diff line number Diff line Loading @@ -64,19 +64,19 @@ def get_flux_band(lam, flux, band, filter_db): is_narrow_band = np.max(lam_filter) - np.min(lam_filter) < 1e-3 if is_narrow_band: flux_filter = np.interp(lam_filter, lam, flux, left=0, right=0) ret1 = np.trapezoid(flux_filter * res_filter, x=lam_filter) ret1 = util.my_trapezoid(flux_filter * res_filter, x=lam_filter) return ret1 # Estimate and renormalize the filter at the datapoints res_filter = np.interp(lam, lam_filter, res_filter, left=0, right=0) norm = np.trapezoid(res_filter, lam) norm = util.my_trapezoid(res_filter, lam) # NOTE: no overlap between wavelengths and filter lambda? if norm == 0: return 0 res_filter /= norm ret2 = np.trapezoid(flux * res_filter, x=lam) ret2 = util.my_trapezoid(flux * res_filter, x=lam) return ret2 Loading
src/lsst_inaf_agile/util.py +7 −0 Original line number Diff line number Diff line Loading @@ -804,3 +804,10 @@ def read_table(filename: str, *args, **kwargs): warnings.simplefilter("ignore", UnitsWarning) table = Table.read(filename, *args, **kwargs) return table def my_trapezoid(*args, **kwargs): try: return np.trapezoid(*args, **kwargs) except AttributeError: return np.trapz(*args, **kwargs)
src/lsst_inaf_agile/zou2024.py +4 −4 Original line number Diff line number Diff line Loading @@ -30,7 +30,7 @@ from scipy import interpolate from scipy.optimize import minimize_scalar from scipy.special import gamma, gammaincc from lsst_inaf_agile import ueda2014 from lsst_inaf_agile import ueda2014, util # NOTE: refer to Zou+2024 dataset readme on the grid parameters Loading Loading @@ -274,7 +274,7 @@ def get_xray_luminosity_function( _m, _z = np.meshgrid(log_mstar, z[0, :, None]) y2 = fun_phi_star(_m, _z, t) return np.squeeze(np.trapezoid(y1 * y2, log_mstar, axis=-1)) return np.squeeze(util.my_trapezoid(y1 * y2, log_mstar, axis=-1)) def get_specific_accretion_rate_distribution_function(loglambda, log_mstar, z, t="all", dlog_mstar=0.10): Loading Loading @@ -324,7 +324,7 @@ def get_log_plambda_ctk(loglambda, m, z, t, test_integral=True, *args, **kwargs) # NOTE: safety assertion that p_agn is still a probability measure # within l \in loglambda if test_integral: test = np.trapezoid(10**log_p_ctn + 10**log_p_ctk, loglambda) test = util.my_trapezoid(10**log_p_ctn + 10**log_p_ctk, loglambda) assert np.all(test <= 1.00), (test, m, z, t) return log_p_ctk Loading Loading @@ -408,7 +408,7 @@ def get_fraction_agn(xmin, mstar, z, t, add_ctk=True, *args, **kwargs): # NOTE: attempt to fix a possible shape mismatch between loglambda and mstar try: y = get_p_tot(x) ret = np.trapezoid(y, x) ret = util.my_trapezoid(y, x) except ValueError: y = get_p_tot(x[:, None]) ret = np.sum(y * dX, axis=0) Loading