diff --git a/README.md b/README.md index 15eca11..c206d24 100644 --- a/README.md +++ b/README.md @@ -30,7 +30,7 @@ systems availalbe from the atmosphere model. When using the `RBFInterpolator`, we strongly encourage the use of scipy 1.9+ which provides a speed gain of O(100) times. -v0.0.12 or below only supports numpy v1. +Supports NumPy v1 and v2 (>=1.23,<3). For best performance with RBFInterpolator, use SciPy 1.9+. ## Documentation diff --git a/example/compare_ps_cooling_rates.py b/example/compare_ps_cooling_rates.py index 2e04da1..afea6c9 100644 --- a/example/compare_ps_cooling_rates.py +++ b/example/compare_ps_cooling_rates.py @@ -63,46 +63,39 @@ # format the data into matplotlib.tricontour readable format _x.append(BP(logg_i, Mbol) - RP(logg_i, Mbol)) _y.append(G(logg_i, Mbol)) - _z1.append(wdlf.cooling_rate_interpolator(logL, m_valid)) - _z2.append(wdlf_nps.cooling_rate_interpolator(logL, m_valid)) + _z1.append(-wdlf.cooling_rate_interpolator(logL, m_valid)) + _z2.append(-wdlf_nps.cooling_rate_interpolator(logL, m_valid)) x = np.concatenate(_x) y = np.concatenate(_y) z1 = np.log10(np.concatenate(_z1)) z2 = np.log10(np.concatenate(_z2)) -# masking the non-finite values -mask1 = np.isfinite(z1) -mask2 = np.isfinite(z2) +# masking the non-finite values across x, y, and z +mask1 = np.isfinite(x) & np.isfinite(y) & np.isfinite(z1) +mask2 = np.isfinite(x) & np.isfinite(y) & np.isfinite(z2) +mask12 = mask1 & mask2 CMAP = "RdBu_r" LEVELS = 50 # make the contour lines -ax1.tricontour( - x[mask1], y[mask1], z1[mask1], levels=LEVELS, linewidths=0.5, colors="k" -) -ax2.tricontour( - x[mask2], y[mask2], z1[mask2], levels=LEVELS, linewidths=0.5, colors="k" -) +ax1.tricontour(x[mask1], y[mask1], z1[mask1], levels=LEVELS, linewidths=0.5, colors="k") +ax2.tricontour(x[mask2], y[mask2], z2[mask2], levels=LEVELS, linewidths=0.5, colors="k") ax3.tricontour( - x[mask1 & mask2], - y[mask1 & mask2], - (z1 / z2)[mask1 & mask2], + x[mask12], + y[mask12], + (z1 / z2)[mask12], levels=LEVELS, linewidths=0.5, colors="k", ) # make the contour shades -contour1 = ax1.tricontourf( - x[mask1], y[mask1], z1[mask1], levels=LEVELS, cmap=CMAP -) -contour2 = ax2.tricontourf( - x[mask2], y[mask2], z2[mask2], levels=LEVELS, cmap=CMAP -) +contour1 = ax1.tricontourf(x[mask1], y[mask1], z1[mask1], levels=LEVELS, cmap=CMAP) +contour2 = ax2.tricontourf(x[mask2], y[mask2], z2[mask2], levels=LEVELS, cmap=CMAP) contour3 = ax3.tricontourf( - x[mask1 & mask2], - y[mask1 & mask2], - (z1 / z2)[mask1 & mask2], + x[mask12], + y[mask12], + (z1 / z2)[mask12], levels=LEVELS, cmap=CMAP, ) @@ -127,6 +120,4 @@ plt.suptitle("log(dL/dt) contour plot") plt.subplots_adjust(wspace=0.0, left=0.075, right=0.975) -plt.savefig( - os.path.join(HERE, "example_output", "compare_ps_cooling_rates.png") -) +plt.savefig(os.path.join(HERE, "example_output", "compare_ps_cooling_rates.png")) diff --git a/example/converting_from_gaia_to_sdss.py b/example/converting_from_gaia_to_sdss.py index 4cbb024..e46ad3e 100644 --- a/example/converting_from_gaia_to_sdss.py +++ b/example/converting_from_gaia_to_sdss.py @@ -16,7 +16,7 @@ except NameError: HERE = os.path.dirname(os.path.realpath(__name__)) -_hdu = fits.open(os.path.join(HERE, "GaiaEDR3_WD_SDSSspec.FITS"))[1] +_hdu = fits.open(os.path.join(HERE, "GaiaEDR3_WD_SDSSspec.fits"))[1] data = _hdu.data size = len(data) @@ -51,38 +51,20 @@ r_itp_teff = atm.interp_am(dependent="r_sdss", independent=["G3", "Teff"]) # Getting the interpolation function depending on G3_BP and Teff -u_itp_bp_teff = atm.interp_am( - dependent="u_sdss", independent=["G3_BP", "Teff"] -) -g_itp_bp_teff = atm.interp_am( - dependent="g_sdss", independent=["G3_BP", "Teff"] -) -r_itp_bp_teff = atm.interp_am( - dependent="r_sdss", independent=["G3_BP", "Teff"] -) +u_itp_bp_teff = atm.interp_am(dependent="u_sdss", independent=["G3_BP", "Teff"]) +g_itp_bp_teff = atm.interp_am(dependent="g_sdss", independent=["G3_BP", "Teff"]) +r_itp_bp_teff = atm.interp_am(dependent="r_sdss", independent=["G3_BP", "Teff"]) # Getting the interpolation function depending on G3_RP and Teff -u_itp_rp_teff = atm.interp_am( - dependent="u_sdss", independent=["G3_RP", "Teff"] -) -g_itp_rp_teff = atm.interp_am( - dependent="g_sdss", independent=["G3_RP", "Teff"] -) -r_itp_rp_teff = atm.interp_am( - dependent="r_sdss", independent=["G3_RP", "Teff"] -) +u_itp_rp_teff = atm.interp_am(dependent="u_sdss", independent=["G3_RP", "Teff"]) +g_itp_rp_teff = atm.interp_am(dependent="g_sdss", independent=["G3_RP", "Teff"]) +r_itp_rp_teff = atm.interp_am(dependent="r_sdss", independent=["G3_RP", "Teff"]) # Getting the interpolation function depending on G3_RP and Teff -u_itp_logg_teff = atm.interp_am( - dependent="u_sdss", independent=["logg", "Teff"] -) -g_itp_logg_teff = atm.interp_am( - dependent="g_sdss", independent=["logg", "Teff"] -) -r_itp_logg_teff = atm.interp_am( - dependent="r_sdss", independent=["logg", "Teff"] -) +u_itp_logg_teff = atm.interp_am(dependent="u_sdss", independent=["logg", "Teff"]) +g_itp_logg_teff = atm.interp_am(dependent="g_sdss", independent=["logg", "Teff"]) +r_itp_logg_teff = atm.interp_am(dependent="r_sdss", independent=["logg", "Teff"]) # converting into SDSS photometry @@ -117,9 +99,7 @@ # Plot the (u-g) vs (g-r) colour-colour diagram # Top row is based on interpolation of (logg, Gaia filter) # Bottom row is based on interpolation of (Teff, Gaia filter) -fig, ((ax1, ax2, ax3), (ax4, ax5, ax6)) = plt.subplots( - 2, 3, sharex=True, figsize=(15, 15) -) +fig, ((ax1, ax2, ax3), (ax4, ax5, ax6)) = plt.subplots(2, 3, sharex=True, figsize=(15, 15)) ax1.scatter(u_sdss - g_sdss, g_sdss - r_sdss, s=1, c=loggH) ax2.scatter(u_sdss_bp - g_sdss_bp, g_sdss_bp - r_sdss_bp, s=1, c=loggH) ax3.scatter(u_sdss_rp - g_sdss_rp, g_sdss_rp - r_sdss_rp, s=1, c=loggH) @@ -176,12 +156,8 @@ ax3.set_title(r"$\{G3_{\mathrm{RP}}, \log(g)\} \rightarrow \{u, g, r\}$") ax4.set_title(r"$\{G3, T_{\mathrm{eff}}\} \rightarrow \{u, g, r\}$") -ax5.set_title( - r"$\{G3_{\mathrm{BP}}, T_{\mathrm{eff}}\} \rightarrow \{u, g, r\}$" -) -ax6.set_title( - r"$\{G3_{\mathrm{RP}}, T_{\mathrm{eff}}\} \rightarrow \{u, g, r\}$" -) +ax5.set_title(r"$\{G3_{\mathrm{BP}}, T_{\mathrm{eff}}\} \rightarrow \{u, g, r\}$") +ax6.set_title(r"$\{G3_{\mathrm{RP}}, T_{\mathrm{eff}}\} \rightarrow \{u, g, r\}$") ax1.grid() ax2.grid() @@ -190,21 +166,15 @@ ax5.grid() ax6.grid() -plt.subplots_adjust( - top=0.95, bottom=0.075, left=0.08, right=0.975, wspace=0.0, hspace=0.1 -) +plt.subplots_adjust(top=0.95, bottom=0.075, left=0.08, right=0.975, wspace=0.0, hspace=0.1) -plt.savefig( - os.path.join(HERE, "example_output", "gaia_to_sdss_cc_diagram.png") -) +plt.savefig(os.path.join(HERE, "example_output", "gaia_to_sdss_cc_diagram.png")) # Plot the residual of the catalogue value to converted values # Top row is the residual in u from the interpolation of G_BP, G & G_RP # Middle row is the residual in g from the interpolation of G_BP, G & G_RP # Bottom row is the residual in r from the interpolation of G_BP, G & G_RP -fig, ((ax1, ax2, ax3), (ax4, ax5, ax6), (ax7, ax8, ax9)) = plt.subplots( - 3, 3, sharex=True, figsize=(15, 15) -) +fig, ((ax1, ax2, ax3), (ax4, ax5, ax6), (ax7, ax8, ax9)) = plt.subplots(3, 3, sharex=True, figsize=(15, 15)) ax1.scatter(TeffH, data["umag"] - u_sdss_bp_teff, s=1) ax2.scatter(TeffH, data["umag"] - u_sdss_teff, s=1) @@ -218,29 +188,17 @@ ax8.scatter(TeffH, data["rmag"] - r_sdss_teff, s=1) ax9.scatter(TeffH, data["rmag"] - r_sdss_rp_teff, s=1) -ax1.set_title( - r"$u_{\mathrm{catalogue}} - u(T_{\mathrm{eff}}, G_{\mathrm{BP}})$" -) +ax1.set_title(r"$u_{\mathrm{catalogue}} - u(T_{\mathrm{eff}}, G_{\mathrm{BP}})$") ax2.set_title(r"$u_{\mathrm{catalogue}} - u(T_{\mathrm{eff}}, G)$") -ax3.set_title( - r"$u_{\mathrm{catalogue}} - u(T_{\mathrm{eff}}, G_{\mathrm{RP}})$" -) +ax3.set_title(r"$u_{\mathrm{catalogue}} - u(T_{\mathrm{eff}}, G_{\mathrm{RP}})$") -ax4.set_title( - r"$g_{\mathrm{catalogue}} - g(T_{\mathrm{eff}}, G_{\mathrm{BP}})$" -) +ax4.set_title(r"$g_{\mathrm{catalogue}} - g(T_{\mathrm{eff}}, G_{\mathrm{BP}})$") ax5.set_title(r"$g_{\mathrm{catalogue}} - g(T_{\mathrm{eff}}, G)$") -ax6.set_title( - r"$g_{\mathrm{catalogue}} - g(T_{\mathrm{eff}}, G_{\mathrm{RP}})$" -) +ax6.set_title(r"$g_{\mathrm{catalogue}} - g(T_{\mathrm{eff}}, G_{\mathrm{RP}})$") -ax7.set_title( - r"$r_{\mathrm{catalogue}} - r(T_{\mathrm{eff}}, G_{\mathrm{BP}})$" -) +ax7.set_title(r"$r_{\mathrm{catalogue}} - r(T_{\mathrm{eff}}, G_{\mathrm{BP}})$") ax8.set_title(r"$r_{\mathrm{catalogue}} - r(T_{\mathrm{eff}}, G)$") -ax9.set_title( - r"$r_{\mathrm{catalogue}} - r(T_{\mathrm{eff}}, G_{\mathrm{RP}})$" -) +ax9.set_title(r"$r_{\mathrm{catalogue}} - r(T_{\mathrm{eff}}, G_{\mathrm{RP}})$") ax2.set_yticklabels([""]) ax3.set_yticklabels([""]) @@ -280,19 +238,13 @@ ax1.set_xscale("log") -plt.subplots_adjust( - top=0.95, bottom=0.07, left=0.08, right=0.975, wspace=0.0, hspace=0.15 -) +plt.subplots_adjust(top=0.95, bottom=0.07, left=0.08, right=0.975, wspace=0.0, hspace=0.15) -plt.savefig( - os.path.join(HERE, "example_output", "gaia_to_sdss_ugr_residual.png") -) +plt.savefig(os.path.join(HERE, "example_output", "gaia_to_sdss_ugr_residual.png")) # Plot the residual of the catalogue value to derived values from (logg, Teff) -fig, (ax1, ax2, ax3) = plt.subplots( - 1, 3, sharex=True, sharey=True, figsize=(15, 10) -) +fig, (ax1, ax2, ax3) = plt.subplots(1, 3, sharex=True, sharey=True, figsize=(15, 10)) ax1.scatter(TeffH, data["umag"] - u_model, s=1) ax2.scatter(TeffH, data["gmag"] - g_model, s=1) @@ -317,12 +269,6 @@ ax1.set_xscale("log") -plt.subplots_adjust( - top=0.95, bottom=0.075, left=0.075, right=0.975, wspace=0.0, hspace=0.15 -) +plt.subplots_adjust(top=0.95, bottom=0.075, left=0.075, right=0.975, wspace=0.0, hspace=0.15) -plt.savefig( - os.path.join( - HERE, "example_output", "gaia_to_sdss_ugr_residual_logg_teff.png" - ) -) +plt.savefig(os.path.join(HERE, "example_output", "gaia_to_sdss_ugr_residual_logg_teff.png")) diff --git a/example/example_output/10.000Gyr_burst_PARSECz0017_C08_montreal_co_da_20_montreal_co_da_20_montreal_co_da_20.csv b/example/example_output/10.000Gyr_burst_PARSECz0017_C08_montreal_co_da_20_montreal_co_da_20_montreal_co_da_20.csv new file mode 100644 index 0000000..5c3ddce --- /dev/null +++ b/example/example_output/10.000Gyr_burst_PARSECz0017_C08_montreal_co_da_20_montreal_co_da_20_montreal_co_da_20.csv @@ -0,0 +1,100 @@ +0.000000000000000000e+00,0.000000000000000000e+00 +2.000000000000000111e-01,0.000000000000000000e+00 +4.000000000000000222e-01,0.000000000000000000e+00 +6.000000000000000888e-01,0.000000000000000000e+00 +8.000000000000000444e-01,0.000000000000000000e+00 +1.000000000000000000e+00,0.000000000000000000e+00 +1.200000000000000178e+00,0.000000000000000000e+00 +1.400000000000000133e+00,0.000000000000000000e+00 +1.600000000000000089e+00,0.000000000000000000e+00 +1.800000000000000044e+00,0.000000000000000000e+00 +2.000000000000000000e+00,0.000000000000000000e+00 +2.200000000000000178e+00,0.000000000000000000e+00 +2.400000000000000355e+00,0.000000000000000000e+00 +2.600000000000000089e+00,0.000000000000000000e+00 +2.800000000000000266e+00,0.000000000000000000e+00 +3.000000000000000000e+00,0.000000000000000000e+00 +3.200000000000000178e+00,0.000000000000000000e+00 +3.400000000000000355e+00,0.000000000000000000e+00 +3.600000000000000089e+00,0.000000000000000000e+00 +3.800000000000000266e+00,0.000000000000000000e+00 +4.000000000000000000e+00,0.000000000000000000e+00 +4.200000000000000178e+00,0.000000000000000000e+00 +4.400000000000000355e+00,0.000000000000000000e+00 +4.600000000000000533e+00,0.000000000000000000e+00 +4.800000000000000711e+00,0.000000000000000000e+00 +5.000000000000000000e+00,0.000000000000000000e+00 +5.200000000000000178e+00,0.000000000000000000e+00 +5.400000000000000355e+00,0.000000000000000000e+00 +5.600000000000000533e+00,0.000000000000000000e+00 +5.800000000000000711e+00,0.000000000000000000e+00 +6.000000000000000000e+00,0.000000000000000000e+00 +6.200000000000000178e+00,0.000000000000000000e+00 +6.400000000000000355e+00,0.000000000000000000e+00 +6.600000000000000533e+00,0.000000000000000000e+00 +6.800000000000000711e+00,0.000000000000000000e+00 +7.000000000000000000e+00,0.000000000000000000e+00 +7.200000000000000178e+00,0.000000000000000000e+00 +7.400000000000000355e+00,0.000000000000000000e+00 +7.600000000000000533e+00,1.452820744402814308e-06 +7.800000000000000711e+00,2.316401968045364023e-06 +8.000000000000000000e+00,4.135666435844960641e-06 +8.200000000000001066e+00,6.905484926428360603e-06 +8.400000000000000355e+00,1.000068454866825995e-05 +8.599999999999999645e+00,1.303352329966973936e-05 +8.800000000000000711e+00,1.663433994580483004e-05 +9.000000000000000000e+00,2.206976628343802424e-05 +9.200000000000001066e+00,2.914431392067501526e-05 +9.400000000000000355e+00,3.954686603182952569e-05 +9.600000000000001421e+00,5.244474501181333061e-05 +9.800000000000000711e+00,7.369889760635863721e-05 +1.000000000000000000e+01,1.080241815544411531e-04 +1.020000000000000107e+01,1.673924405349510062e-04 +1.040000000000000036e+01,2.873564700597401600e-04 +1.060000000000000142e+01,4.740243368115756731e-04 +1.080000000000000071e+01,6.838370596631814782e-04 +1.100000000000000000e+01,9.098380694761996944e-04 +1.120000000000000107e+01,1.213832697259131484e-03 +1.140000000000000036e+01,1.519083949405588716e-03 +1.160000000000000142e+01,1.797866060089233029e-03 +1.180000000000000071e+01,2.250988097814828059e-03 +1.200000000000000000e+01,2.652895257043666900e-03 +1.220000000000000107e+01,3.039233904119627381e-03 +1.240000000000000036e+01,3.480085172361011264e-03 +1.260000000000000142e+01,4.004752365723417140e-03 +1.280000000000000071e+01,4.625256028327274019e-03 +1.300000000000000000e+01,5.386890044921867522e-03 +1.320000000000000107e+01,6.290566853776904249e-03 +1.340000000000000036e+01,7.337085971229602953e-03 +1.360000000000000142e+01,8.576579851142763014e-03 +1.380000000000000071e+01,1.002235907082497587e-02 +1.400000000000000000e+01,1.192278794231089838e-02 +1.420000000000000107e+01,1.603394668086973590e-02 +1.440000000000000036e+01,3.003934154516918476e-02 +1.460000000000000142e+01,8.565381817191905500e-02 +1.480000000000000071e+01,1.135851514071995610e-01 +1.500000000000000000e+01,1.290846947907298425e-01 +1.520000000000000107e+01,3.120940126210522414e-01 +1.540000000000000036e+01,1.694224597129313226e-01 +1.560000000000000142e+01,2.978388550508933794e-02 +1.580000000000000071e+01,1.337537801314938463e-02 +1.600000000000000000e+01,7.076544044009562204e-03 +1.619999999999999929e+01,4.253819898124666481e-03 +1.640000000000000213e+01,2.635737152719528405e-03 +1.660000000000000142e+01,1.805960391430549549e-03 +1.680000000000000071e+01,1.559642561720750399e-03 +1.700000000000000000e+01,1.107672468584792146e-03 +1.719999999999999929e+01,8.251744084013920479e-04 +1.740000000000000213e+01,7.771957590116150083e-04 +1.760000000000000142e+01,8.209199137250370714e-04 +1.780000000000000071e+01,7.166084372125504321e-04 +1.800000000000000000e+01,5.381768996588575217e-04 +1.819999999999999929e+01,3.808848031817914826e-04 +1.840000000000000213e+01,2.969268122693000892e-04 +1.860000000000000142e+01,2.351749349003155515e-04 +1.880000000000000071e+01,1.944312461364976403e-04 +1.900000000000000000e+01,1.688236901970693307e-04 +1.920000000000000284e+01,1.479996166048389418e-04 +1.940000000000000213e+01,1.297881761888876285e-04 +1.960000000000000142e+01,1.223245100380137933e-04 +1.980000000000000071e+01,1.113864926004944327e-04 diff --git a/example/example_output/10.000Gyr_decay_PARSECz0017_C08_montreal_co_da_20_montreal_co_da_20_montreal_co_da_20.csv b/example/example_output/10.000Gyr_decay_PARSECz0017_C08_montreal_co_da_20_montreal_co_da_20_montreal_co_da_20.csv new file mode 100644 index 0000000..c4963d2 --- /dev/null +++ b/example/example_output/10.000Gyr_decay_PARSECz0017_C08_montreal_co_da_20_montreal_co_da_20_montreal_co_da_20.csv @@ -0,0 +1,100 @@ +0.000000000000000000e+00,0.000000000000000000e+00 +2.000000000000000111e-01,0.000000000000000000e+00 +4.000000000000000222e-01,0.000000000000000000e+00 +6.000000000000000888e-01,0.000000000000000000e+00 +8.000000000000000444e-01,0.000000000000000000e+00 +1.000000000000000000e+00,0.000000000000000000e+00 +1.200000000000000178e+00,0.000000000000000000e+00 +1.400000000000000133e+00,0.000000000000000000e+00 +1.600000000000000089e+00,0.000000000000000000e+00 +1.800000000000000044e+00,0.000000000000000000e+00 +2.000000000000000000e+00,0.000000000000000000e+00 +2.200000000000000178e+00,0.000000000000000000e+00 +2.400000000000000355e+00,0.000000000000000000e+00 +2.600000000000000089e+00,0.000000000000000000e+00 +2.800000000000000266e+00,0.000000000000000000e+00 +3.000000000000000000e+00,0.000000000000000000e+00 +3.200000000000000178e+00,0.000000000000000000e+00 +3.400000000000000355e+00,0.000000000000000000e+00 +3.600000000000000089e+00,0.000000000000000000e+00 +3.800000000000000266e+00,0.000000000000000000e+00 +4.000000000000000000e+00,0.000000000000000000e+00 +4.200000000000000178e+00,0.000000000000000000e+00 +4.400000000000000355e+00,0.000000000000000000e+00 +4.600000000000000533e+00,0.000000000000000000e+00 +4.800000000000000711e+00,0.000000000000000000e+00 +5.000000000000000000e+00,0.000000000000000000e+00 +5.200000000000000178e+00,0.000000000000000000e+00 +5.400000000000000355e+00,0.000000000000000000e+00 +5.600000000000000533e+00,0.000000000000000000e+00 +5.800000000000000711e+00,0.000000000000000000e+00 +6.000000000000000000e+00,0.000000000000000000e+00 +6.200000000000000178e+00,0.000000000000000000e+00 +6.400000000000000355e+00,0.000000000000000000e+00 +6.600000000000000533e+00,0.000000000000000000e+00 +6.800000000000000711e+00,0.000000000000000000e+00 +7.000000000000000000e+00,0.000000000000000000e+00 +7.200000000000000178e+00,0.000000000000000000e+00 +7.400000000000000355e+00,3.570892231094549909e-07 +7.600000000000000533e+00,2.718883287384704964e-06 +7.800000000000000711e+00,3.982969995795744598e-06 +8.000000000000000000e+00,6.280745507328218355e-06 +8.200000000000001066e+00,9.650435862325279108e-06 +8.400000000000000355e+00,1.363591714147173509e-05 +8.599999999999999645e+00,1.753377317460073190e-05 +8.800000000000000711e+00,2.235167356397668885e-05 +9.000000000000000000e+00,2.956670349500062071e-05 +9.200000000000001066e+00,3.949193497784601203e-05 +9.400000000000000355e+00,5.427166019680532843e-05 +9.600000000000001421e+00,7.387319529493001032e-05 +9.800000000000000711e+00,1.043163655776382253e-04 +1.000000000000000000e+01,1.557090782119681209e-04 +1.020000000000000107e+01,2.488277409780595851e-04 +1.040000000000000036e+01,4.320538910221185603e-04 +1.060000000000000142e+01,7.301321745837134614e-04 +1.080000000000000071e+01,1.073645213808653099e-03 +1.100000000000000000e+01,1.419097100321253715e-03 +1.120000000000000107e+01,1.876005314458714093e-03 +1.140000000000000036e+01,2.393966517564943570e-03 +1.160000000000000142e+01,2.896330733877375448e-03 +1.180000000000000071e+01,3.659907961270334603e-03 +1.200000000000000000e+01,4.419527881208171888e-03 +1.220000000000000107e+01,5.125573627895231923e-03 +1.240000000000000036e+01,5.967558658831508857e-03 +1.260000000000000142e+01,6.992656574344661979e-03 +1.280000000000000071e+01,8.201419353452732083e-03 +1.300000000000000000e+01,9.773484814250393490e-03 +1.320000000000000107e+01,1.168557503490929086e-02 +1.340000000000000036e+01,1.396494685289862911e-02 +1.360000000000000142e+01,1.677468085106175247e-02 +1.380000000000000071e+01,2.052939324312267472e-02 +1.400000000000000000e+01,2.564517543914217323e-02 +1.420000000000000107e+01,3.456523765359555828e-02 +1.440000000000000036e+01,6.305286813391096368e-02 +1.460000000000000142e+01,1.464064695859763066e-01 +1.480000000000000071e+01,1.850233213312015290e-01 +1.500000000000000000e+01,1.698874433331047928e-01 +1.520000000000000107e+01,1.420883360551129515e-01 +1.540000000000000036e+01,7.488224371793311684e-02 +1.560000000000000142e+01,1.680464550770999557e-02 +1.580000000000000071e+01,8.236878015165616587e-03 +1.600000000000000000e+01,4.530883156839094102e-03 +1.619999999999999929e+01,2.723664528018252592e-03 +1.640000000000000213e+01,1.732772443486067359e-03 +1.660000000000000142e+01,1.132248969142243865e-03 +1.680000000000000071e+01,9.129751285647815483e-04 +1.700000000000000000e+01,6.852411946565792203e-04 +1.719999999999999929e+01,5.301358246384490439e-04 +1.740000000000000213e+01,4.694019220624348013e-04 +1.760000000000000142e+01,4.684265933418878063e-04 +1.780000000000000071e+01,3.770651858460838520e-04 +1.800000000000000000e+01,2.710821537087277841e-04 +1.819999999999999929e+01,1.897479620036880384e-04 +1.840000000000000213e+01,1.459183779625614573e-04 +1.860000000000000142e+01,1.148104102555814668e-04 +1.880000000000000071e+01,9.483901705472710128e-05 +1.900000000000000000e+01,8.194324611436847993e-05 +1.920000000000000284e+01,7.151672370072784189e-05 +1.940000000000000213e+01,6.267360722200642908e-05 +1.960000000000000142e+01,5.920297758619232168e-05 +1.980000000000000071e+01,5.430783957231233441e-05 diff --git a/example/example_output/11.000Gyr_burst_PARSECz0017_C08_montreal_co_da_20_montreal_co_da_20_montreal_co_da_20.csv b/example/example_output/11.000Gyr_burst_PARSECz0017_C08_montreal_co_da_20_montreal_co_da_20_montreal_co_da_20.csv new file mode 100644 index 0000000..45d1990 --- /dev/null +++ b/example/example_output/11.000Gyr_burst_PARSECz0017_C08_montreal_co_da_20_montreal_co_da_20_montreal_co_da_20.csv @@ -0,0 +1,100 @@ +0.000000000000000000e+00,0.000000000000000000e+00 +2.000000000000000111e-01,0.000000000000000000e+00 +4.000000000000000222e-01,0.000000000000000000e+00 +6.000000000000000888e-01,0.000000000000000000e+00 +8.000000000000000444e-01,0.000000000000000000e+00 +1.000000000000000000e+00,0.000000000000000000e+00 +1.200000000000000178e+00,0.000000000000000000e+00 +1.400000000000000133e+00,0.000000000000000000e+00 +1.600000000000000089e+00,0.000000000000000000e+00 +1.800000000000000044e+00,0.000000000000000000e+00 +2.000000000000000000e+00,0.000000000000000000e+00 +2.200000000000000178e+00,0.000000000000000000e+00 +2.400000000000000355e+00,0.000000000000000000e+00 +2.600000000000000089e+00,0.000000000000000000e+00 +2.800000000000000266e+00,0.000000000000000000e+00 +3.000000000000000000e+00,0.000000000000000000e+00 +3.200000000000000178e+00,0.000000000000000000e+00 +3.400000000000000355e+00,0.000000000000000000e+00 +3.600000000000000089e+00,0.000000000000000000e+00 +3.800000000000000266e+00,0.000000000000000000e+00 +4.000000000000000000e+00,0.000000000000000000e+00 +4.200000000000000178e+00,0.000000000000000000e+00 +4.400000000000000355e+00,0.000000000000000000e+00 +4.600000000000000533e+00,0.000000000000000000e+00 +4.800000000000000711e+00,0.000000000000000000e+00 +5.000000000000000000e+00,0.000000000000000000e+00 +5.200000000000000178e+00,0.000000000000000000e+00 +5.400000000000000355e+00,0.000000000000000000e+00 +5.600000000000000533e+00,0.000000000000000000e+00 +5.800000000000000711e+00,0.000000000000000000e+00 +6.000000000000000000e+00,0.000000000000000000e+00 +6.200000000000000178e+00,0.000000000000000000e+00 +6.400000000000000355e+00,0.000000000000000000e+00 +6.600000000000000533e+00,0.000000000000000000e+00 +6.800000000000000711e+00,0.000000000000000000e+00 +7.000000000000000000e+00,0.000000000000000000e+00 +7.200000000000000178e+00,0.000000000000000000e+00 +7.400000000000000355e+00,0.000000000000000000e+00 +7.600000000000000533e+00,1.322794579440740454e-06 +7.800000000000000711e+00,2.228175940448505296e-06 +8.000000000000000000e+00,4.117592772430972703e-06 +8.200000000000001066e+00,6.936630834203865204e-06 +8.400000000000000355e+00,1.005389825921761985e-05 +8.599999999999999645e+00,1.323624557652054638e-05 +8.800000000000000711e+00,1.696075469031751968e-05 +9.000000000000000000e+00,2.240325367798484677e-05 +9.200000000000001066e+00,2.953297593857213491e-05 +9.400000000000000355e+00,3.976967815636735026e-05 +9.600000000000001421e+00,5.267829037019847985e-05 +9.800000000000000711e+00,7.400129366745700893e-05 +1.000000000000000000e+01,1.079142699899272899e-04 +1.020000000000000107e+01,1.671147709624168994e-04 +1.040000000000000036e+01,2.869052770370176262e-04 +1.060000000000000142e+01,4.724264447157357195e-04 +1.080000000000000071e+01,6.773698295569890050e-04 +1.100000000000000000e+01,9.088814156275186766e-04 +1.120000000000000107e+01,1.218687644361798926e-03 +1.140000000000000036e+01,1.503418953534851410e-03 +1.160000000000000142e+01,1.783594928632151536e-03 +1.180000000000000071e+01,2.220368621037982233e-03 +1.200000000000000000e+01,2.604563171950208256e-03 +1.220000000000000107e+01,2.977585425479995027e-03 +1.240000000000000036e+01,3.402805796295668792e-03 +1.260000000000000142e+01,3.905184539249573292e-03 +1.280000000000000071e+01,4.497065165767599043e-03 +1.300000000000000000e+01,5.224849071604389245e-03 +1.320000000000000107e+01,6.088829112689000955e-03 +1.340000000000000036e+01,7.095317237716215926e-03 +1.360000000000000142e+01,8.327025344359363992e-03 +1.380000000000000071e+01,9.779457717316945506e-03 +1.400000000000000000e+01,1.174632566886969938e-02 +1.420000000000000107e+01,1.617719732277066169e-02 +1.440000000000000036e+01,3.046564207808721142e-02 +1.460000000000000142e+01,7.121594516253508533e-02 +1.480000000000000071e+01,1.024231606197870403e-01 +1.500000000000000000e+01,6.442162618044766642e-02 +1.520000000000000107e+01,1.063335642656735858e-01 +1.540000000000000036e+01,1.954260048339555300e-01 +1.560000000000000142e+01,2.240268887783638807e-01 +1.580000000000000071e+01,6.360979156637915077e-02 +1.600000000000000000e+01,1.857607617738964156e-02 +1.619999999999999929e+01,9.620244704410895950e-03 +1.640000000000000213e+01,5.545974136308699960e-03 +1.660000000000000142e+01,3.736640961393763918e-03 +1.680000000000000071e+01,2.430228441760815851e-03 +1.700000000000000000e+01,1.703087217884367063e-03 +1.719999999999999929e+01,1.286847599409207850e-03 +1.740000000000000213e+01,1.153744325494548148e-03 +1.760000000000000142e+01,1.093056169273900037e-03 +1.780000000000000071e+01,1.170241706224815640e-03 +1.800000000000000000e+01,1.049411513297966508e-03 +1.819999999999999929e+01,7.342053371994531827e-04 +1.840000000000000213e+01,5.556578875059525009e-04 +1.860000000000000142e+01,4.471483566943220507e-04 +1.880000000000000071e+01,3.477812649578123868e-04 +1.900000000000000000e+01,3.033049424614678714e-04 +1.920000000000000284e+01,2.555220441996652468e-04 +1.940000000000000213e+01,2.297161520012237085e-04 +1.960000000000000142e+01,2.040223563736158041e-04 +1.980000000000000071e+01,1.883359065397932706e-04 diff --git a/example/example_output/11.000Gyr_decay_PARSECz0017_C08_montreal_co_da_20_montreal_co_da_20_montreal_co_da_20.csv b/example/example_output/11.000Gyr_decay_PARSECz0017_C08_montreal_co_da_20_montreal_co_da_20_montreal_co_da_20.csv new file mode 100644 index 0000000..e0c3d2a --- /dev/null +++ b/example/example_output/11.000Gyr_decay_PARSECz0017_C08_montreal_co_da_20_montreal_co_da_20_montreal_co_da_20.csv @@ -0,0 +1,100 @@ +0.000000000000000000e+00,0.000000000000000000e+00 +2.000000000000000111e-01,0.000000000000000000e+00 +4.000000000000000222e-01,0.000000000000000000e+00 +6.000000000000000888e-01,0.000000000000000000e+00 +8.000000000000000444e-01,0.000000000000000000e+00 +1.000000000000000000e+00,0.000000000000000000e+00 +1.200000000000000178e+00,0.000000000000000000e+00 +1.400000000000000133e+00,0.000000000000000000e+00 +1.600000000000000089e+00,0.000000000000000000e+00 +1.800000000000000044e+00,0.000000000000000000e+00 +2.000000000000000000e+00,0.000000000000000000e+00 +2.200000000000000178e+00,0.000000000000000000e+00 +2.400000000000000355e+00,0.000000000000000000e+00 +2.600000000000000089e+00,0.000000000000000000e+00 +2.800000000000000266e+00,0.000000000000000000e+00 +3.000000000000000000e+00,0.000000000000000000e+00 +3.200000000000000178e+00,0.000000000000000000e+00 +3.400000000000000355e+00,0.000000000000000000e+00 +3.600000000000000089e+00,0.000000000000000000e+00 +3.800000000000000266e+00,0.000000000000000000e+00 +4.000000000000000000e+00,0.000000000000000000e+00 +4.200000000000000178e+00,0.000000000000000000e+00 +4.400000000000000355e+00,0.000000000000000000e+00 +4.600000000000000533e+00,0.000000000000000000e+00 +4.800000000000000711e+00,0.000000000000000000e+00 +5.000000000000000000e+00,0.000000000000000000e+00 +5.200000000000000178e+00,0.000000000000000000e+00 +5.400000000000000355e+00,0.000000000000000000e+00 +5.600000000000000533e+00,0.000000000000000000e+00 +5.800000000000000711e+00,0.000000000000000000e+00 +6.000000000000000000e+00,0.000000000000000000e+00 +6.200000000000000178e+00,0.000000000000000000e+00 +6.400000000000000355e+00,0.000000000000000000e+00 +6.600000000000000533e+00,0.000000000000000000e+00 +6.800000000000000711e+00,0.000000000000000000e+00 +7.000000000000000000e+00,0.000000000000000000e+00 +7.200000000000000178e+00,0.000000000000000000e+00 +7.400000000000000355e+00,2.451759564994228783e-07 +7.600000000000000533e+00,2.280069874864175386e-06 +7.800000000000000711e+00,3.431827774910622322e-06 +8.000000000000000000e+00,5.601680028331590588e-06 +8.200000000000001066e+00,8.794020720487972067e-06 +8.400000000000000355e+00,1.251134976930103761e-05 +8.599999999999999645e+00,1.618554853974608131e-05 +8.800000000000000711e+00,2.066103925405326602e-05 +9.000000000000000000e+00,2.731928436574647260e-05 +9.200000000000001066e+00,3.636734842031593378e-05 +9.400000000000000355e+00,4.971959025761121695e-05 +9.600000000000001421e+00,6.722089693647983772e-05 +9.800000000000000711e+00,9.480120200438342439e-05 +1.000000000000000000e+01,1.407049160568653052e-04 +1.020000000000000107e+01,2.231799007328494713e-04 +1.040000000000000036e+01,3.864961477041994106e-04 +1.060000000000000142e+01,6.492303938574687638e-04 +1.080000000000000071e+01,9.492468503720335841e-04 +1.100000000000000000e+01,1.258911905733969740e-03 +1.120000000000000107e+01,1.669388278176936512e-03 +1.140000000000000036e+01,2.114411136708379928e-03 +1.160000000000000142e+01,2.547117158212661939e-03 +1.180000000000000071e+01,3.208050651826530302e-03 +1.200000000000000000e+01,3.849796502809341419e-03 +1.220000000000000107e+01,4.451301188094859522e-03 +1.240000000000000036e+01,5.162466694691075601e-03 +1.260000000000000142e+01,6.023466845945605989e-03 +1.280000000000000071e+01,7.030265755431078754e-03 +1.300000000000000000e+01,8.345581255588862060e-03 +1.320000000000000107e+01,9.928589676794986191e-03 +1.340000000000000036e+01,1.180095273886912731e-02 +1.360000000000000142e+01,1.412257571380778204e-02 +1.380000000000000071e+01,1.715261253341397382e-02 +1.400000000000000000e+01,2.128201761870766179e-02 +1.420000000000000107e+01,2.879533560169306866e-02 +1.440000000000000036e+01,5.283690510588717054e-02 +1.460000000000000142e+01,1.227937038997629904e-01 +1.480000000000000071e+01,1.587951732197592225e-01 +1.500000000000000000e+01,1.367296074417003460e-01 +1.520000000000000107e+01,1.303686552929778086e-01 +1.540000000000000036e+01,1.103451741284620230e-01 +1.560000000000000142e+01,8.348351653851798782e-02 +1.580000000000000071e+01,2.685329339508797999e-02 +1.600000000000000000e+01,9.110915805024351680e-03 +1.619999999999999929e+01,4.955706647293625644e-03 +1.640000000000000213e+01,2.973059685545034053e-03 +1.660000000000000142e+01,1.976310148966227160e-03 +1.680000000000000071e+01,1.400485820143880684e-03 +1.700000000000000000e+01,1.013909487675784642e-03 +1.719999999999999929e+01,7.738431325548337245e-04 +1.740000000000000213e+01,6.888068246132077188e-04 +1.760000000000000142e+01,6.676192417404669920e-04 +1.780000000000000071e+01,6.310183613809654170e-04 +1.800000000000000000e+01,5.217817123897282869e-04 +1.819999999999999929e+01,3.648004361044811716e-04 +1.840000000000000213e+01,2.774535593226678675e-04 +1.860000000000000142e+01,2.213136808304250777e-04 +1.880000000000000071e+01,1.758651344766848444e-04 +1.900000000000000000e+01,1.527827374437762799e-04 +1.920000000000000284e+01,1.303509903999837015e-04 +1.940000000000000213e+01,1.160629866379093945e-04 +1.960000000000000142e+01,1.063172279250945208e-04 +1.980000000000000071e+01,9.872885824321070577e-05 diff --git a/example/example_output/12.000Gyr_burst_PARSECz0017_C08_montreal_co_da_20_montreal_co_da_20_montreal_co_da_20.csv b/example/example_output/12.000Gyr_burst_PARSECz0017_C08_montreal_co_da_20_montreal_co_da_20_montreal_co_da_20.csv new file mode 100644 index 0000000..b76574d --- /dev/null +++ b/example/example_output/12.000Gyr_burst_PARSECz0017_C08_montreal_co_da_20_montreal_co_da_20_montreal_co_da_20.csv @@ -0,0 +1,100 @@ +0.000000000000000000e+00,0.000000000000000000e+00 +2.000000000000000111e-01,0.000000000000000000e+00 +4.000000000000000222e-01,0.000000000000000000e+00 +6.000000000000000888e-01,0.000000000000000000e+00 +8.000000000000000444e-01,0.000000000000000000e+00 +1.000000000000000000e+00,0.000000000000000000e+00 +1.200000000000000178e+00,0.000000000000000000e+00 +1.400000000000000133e+00,0.000000000000000000e+00 +1.600000000000000089e+00,0.000000000000000000e+00 +1.800000000000000044e+00,0.000000000000000000e+00 +2.000000000000000000e+00,0.000000000000000000e+00 +2.200000000000000178e+00,0.000000000000000000e+00 +2.400000000000000355e+00,0.000000000000000000e+00 +2.600000000000000089e+00,0.000000000000000000e+00 +2.800000000000000266e+00,0.000000000000000000e+00 +3.000000000000000000e+00,0.000000000000000000e+00 +3.200000000000000178e+00,0.000000000000000000e+00 +3.400000000000000355e+00,0.000000000000000000e+00 +3.600000000000000089e+00,0.000000000000000000e+00 +3.800000000000000266e+00,0.000000000000000000e+00 +4.000000000000000000e+00,0.000000000000000000e+00 +4.200000000000000178e+00,0.000000000000000000e+00 +4.400000000000000355e+00,0.000000000000000000e+00 +4.600000000000000533e+00,0.000000000000000000e+00 +4.800000000000000711e+00,0.000000000000000000e+00 +5.000000000000000000e+00,0.000000000000000000e+00 +5.200000000000000178e+00,0.000000000000000000e+00 +5.400000000000000355e+00,0.000000000000000000e+00 +5.600000000000000533e+00,0.000000000000000000e+00 +5.800000000000000711e+00,0.000000000000000000e+00 +6.000000000000000000e+00,0.000000000000000000e+00 +6.200000000000000178e+00,0.000000000000000000e+00 +6.400000000000000355e+00,0.000000000000000000e+00 +6.600000000000000533e+00,0.000000000000000000e+00 +6.800000000000000711e+00,0.000000000000000000e+00 +7.000000000000000000e+00,0.000000000000000000e+00 +7.200000000000000178e+00,0.000000000000000000e+00 +7.400000000000000355e+00,0.000000000000000000e+00 +7.600000000000000533e+00,1.270819634941196795e-06 +7.800000000000000711e+00,2.239959051110024445e-06 +8.000000000000000000e+00,4.240571133370837696e-06 +8.200000000000001066e+00,7.206216090699463987e-06 +8.400000000000000355e+00,1.043993893861657751e-05 +8.599999999999999645e+00,1.391359207516327261e-05 +8.800000000000000711e+00,1.789248426817496938e-05 +9.000000000000000000e+00,2.351769817464452399e-05 +9.200000000000001066e+00,3.098034024858311100e-05 +9.400000000000000355e+00,4.143219514560089024e-05 +9.600000000000001421e+00,5.485445950724843423e-05 +9.800000000000000711e+00,7.695107958594891745e-05 +1.000000000000000000e+01,1.117582646815628639e-04 +1.020000000000000107e+01,1.732327013018588138e-04 +1.040000000000000036e+01,2.970351582679074784e-04 +1.060000000000000142e+01,4.861916220885029107e-04 +1.080000000000000071e+01,6.962349202088742714e-04 +1.100000000000000000e+01,9.416771391629209093e-04 +1.120000000000000107e+01,1.268048032708522874e-03 +1.140000000000000036e+01,1.543234452953557790e-03 +1.160000000000000142e+01,1.840996830807310660e-03 +1.180000000000000071e+01,2.279343186833104624e-03 +1.200000000000000000e+01,2.663983111250410769e-03 +1.220000000000000107e+01,3.041376962496865777e-03 +1.240000000000000036e+01,3.471901777047904647e-03 +1.260000000000000142e+01,3.977357999524898553e-03 +1.280000000000000071e+01,4.570566615818030115e-03 +1.300000000000000000e+01,5.298292225391132426e-03 +1.320000000000000107e+01,6.156677007094174363e-03 +1.340000000000000036e+01,7.147467764460392788e-03 +1.360000000000000142e+01,8.368815047590233772e-03 +1.380000000000000071e+01,9.770486705130743826e-03 +1.400000000000000000e+01,1.166858529982401846e-02 +1.420000000000000107e+01,1.621825356000056173e-02 +1.440000000000000036e+01,3.119529904405358989e-02 +1.460000000000000142e+01,7.228766772755687575e-02 +1.480000000000000071e+01,8.168701022185639871e-02 +1.500000000000000000e+01,6.081098644577743323e-02 +1.520000000000000107e+01,6.731512655668038525e-02 +1.540000000000000036e+01,8.113909670059243906e-02 +1.560000000000000142e+01,9.821898834445892679e-02 +1.580000000000000071e+01,1.898177525674915878e-01 +1.600000000000000000e+01,1.245539679609145023e-01 +1.619999999999999929e+01,4.494461799678654834e-02 +1.640000000000000213e+01,1.853954064703680626e-02 +1.660000000000000142e+01,9.100697263332548081e-03 +1.680000000000000071e+01,5.348817674845740555e-03 +1.700000000000000000e+01,3.823424610247253951e-03 +1.719999999999999929e+01,2.831231594205522051e-03 +1.740000000000000213e+01,2.389569622587549898e-03 +1.760000000000000142e+01,2.170279267909703755e-03 +1.780000000000000071e+01,2.018461287437170459e-03 +1.800000000000000000e+01,2.206122423903019922e-03 +1.819999999999999929e+01,1.810505159601702744e-03 +1.840000000000000213e+01,1.368527060800199318e-03 +1.860000000000000142e+01,9.680564138718204033e-04 +1.880000000000000071e+01,7.978351716308442962e-04 +1.900000000000000000e+01,6.448312140907366818e-04 +1.920000000000000284e+01,5.287158658303484126e-04 +1.940000000000000213e+01,4.629007628816306729e-04 +1.960000000000000142e+01,3.946400134236913875e-04 +1.980000000000000071e+01,3.488746416975082210e-04 diff --git a/example/example_output/12.000Gyr_decay_PARSECz0017_C08_montreal_co_da_20_montreal_co_da_20_montreal_co_da_20.csv b/example/example_output/12.000Gyr_decay_PARSECz0017_C08_montreal_co_da_20_montreal_co_da_20_montreal_co_da_20.csv new file mode 100644 index 0000000..fbab57b --- /dev/null +++ b/example/example_output/12.000Gyr_decay_PARSECz0017_C08_montreal_co_da_20_montreal_co_da_20_montreal_co_da_20.csv @@ -0,0 +1,100 @@ +0.000000000000000000e+00,0.000000000000000000e+00 +2.000000000000000111e-01,0.000000000000000000e+00 +4.000000000000000222e-01,0.000000000000000000e+00 +6.000000000000000888e-01,0.000000000000000000e+00 +8.000000000000000444e-01,0.000000000000000000e+00 +1.000000000000000000e+00,0.000000000000000000e+00 +1.200000000000000178e+00,0.000000000000000000e+00 +1.400000000000000133e+00,0.000000000000000000e+00 +1.600000000000000089e+00,0.000000000000000000e+00 +1.800000000000000044e+00,0.000000000000000000e+00 +2.000000000000000000e+00,0.000000000000000000e+00 +2.200000000000000178e+00,0.000000000000000000e+00 +2.400000000000000355e+00,0.000000000000000000e+00 +2.600000000000000089e+00,0.000000000000000000e+00 +2.800000000000000266e+00,0.000000000000000000e+00 +3.000000000000000000e+00,0.000000000000000000e+00 +3.200000000000000178e+00,0.000000000000000000e+00 +3.400000000000000355e+00,0.000000000000000000e+00 +3.600000000000000089e+00,0.000000000000000000e+00 +3.800000000000000266e+00,0.000000000000000000e+00 +4.000000000000000000e+00,0.000000000000000000e+00 +4.200000000000000178e+00,0.000000000000000000e+00 +4.400000000000000355e+00,0.000000000000000000e+00 +4.600000000000000533e+00,0.000000000000000000e+00 +4.800000000000000711e+00,0.000000000000000000e+00 +5.000000000000000000e+00,0.000000000000000000e+00 +5.200000000000000178e+00,0.000000000000000000e+00 +5.400000000000000355e+00,0.000000000000000000e+00 +5.600000000000000533e+00,0.000000000000000000e+00 +5.800000000000000711e+00,0.000000000000000000e+00 +6.000000000000000000e+00,0.000000000000000000e+00 +6.200000000000000178e+00,0.000000000000000000e+00 +6.400000000000000355e+00,0.000000000000000000e+00 +6.600000000000000533e+00,0.000000000000000000e+00 +6.800000000000000711e+00,0.000000000000000000e+00 +7.000000000000000000e+00,0.000000000000000000e+00 +7.200000000000000178e+00,0.000000000000000000e+00 +7.400000000000000355e+00,1.748203039525006065e-07 +7.600000000000000533e+00,1.991125510265820837e-06 +7.800000000000000711e+00,3.091717318670250724e-06 +8.000000000000000000e+00,5.215393600378912294e-06 +8.200000000000001066e+00,8.346155753733972398e-06 +8.400000000000000355e+00,1.192811536947688076e-05 +8.599999999999999645e+00,1.554997359792800255e-05 +8.800000000000000711e+00,1.988812675123647673e-05 +9.000000000000000000e+00,2.625574483039765086e-05 +9.200000000000001066e+00,3.485740694479298968e-05 +9.400000000000000355e+00,4.738729246149370156e-05 +9.600000000000001421e+00,6.373286089180721543e-05 +9.800000000000000711e+00,8.976295177494234608e-05 +1.000000000000000000e+01,1.325171430961215595e-04 +1.020000000000000107e+01,2.093274648328792293e-04 +1.040000000000000036e+01,3.611397840172220338e-04 +1.060000000000000142e+01,6.029404832860811277e-04 +1.080000000000000071e+01,8.773436323481888319e-04 +1.100000000000000000e+01,1.168893441720362603e-03 +1.120000000000000107e+01,1.555600028400400819e-03 +1.140000000000000036e+01,1.952991713245131634e-03 +1.160000000000000142e+01,2.346403124849834841e-03 +1.180000000000000071e+01,2.943824482034176297e-03 +1.200000000000000000e+01,3.512103422329208857e-03 +1.220000000000000107e+01,4.049627509709060637e-03 +1.240000000000000036e+01,4.680654607602621232e-03 +1.260000000000000142e+01,5.445509136051972059e-03 +1.280000000000000071e+01,6.328677935844888996e-03 +1.300000000000000000e+01,7.479594790603603417e-03 +1.320000000000000107e+01,8.851751194573626025e-03 +1.340000000000000036e+01,1.047188791074962246e-02 +1.360000000000000142e+01,1.247876158238507560e-02 +1.380000000000000071e+01,1.504233366165316083e-02 +1.400000000000000000e+01,1.853247269348924642e-02 +1.420000000000000107e+01,2.519937854883254683e-02 +1.440000000000000036e+01,4.665277320637058883e-02 +1.460000000000000142e+01,1.083573117573157912e-01 +1.480000000000000071e+01,1.366636176279769077e-01 +1.500000000000000000e+01,1.148786574867450283e-01 +1.520000000000000107e+01,1.123534685668943489e-01 +1.540000000000000036e+01,1.014593456910112407e-01 +1.560000000000000142e+01,8.730404095677038456e-02 +1.580000000000000071e+01,7.200158500577578946e-02 +1.600000000000000000e+01,4.328037736444222128e-02 +1.619999999999999929e+01,1.718781131947788240e-02 +1.640000000000000213e+01,7.696301402063458925e-03 +1.660000000000000142e+01,4.102718159252777622e-03 +1.680000000000000071e+01,2.575571105679848576e-03 +1.700000000000000000e+01,1.846555534408282975e-03 +1.719999999999999929e+01,1.382111797606453644e-03 +1.740000000000000213e+01,1.193331597472045529e-03 +1.760000000000000142e+01,1.115386563545595284e-03 +1.780000000000000071e+01,1.040455931855337277e-03 +1.800000000000000000e+01,1.017705023598204812e-03 +1.819999999999999929e+01,7.953413250775557761e-04 +1.840000000000000213e+01,6.030487513210602878e-04 +1.860000000000000142e+01,4.430420625207571713e-04 +1.880000000000000071e+01,3.611398733655220056e-04 +1.900000000000000000e+01,2.989695583563689021e-04 +1.920000000000000284e+01,2.486863884280092365e-04 +1.940000000000000213e+01,2.189170604326431881e-04 +1.960000000000000142e+01,1.936340783475828801e-04 +1.980000000000000071e+01,1.761788271240230064e-04 diff --git a/example/example_output/13.000Gyr_burst_PARSECz0017_C08_montreal_co_da_20_montreal_co_da_20_montreal_co_da_20.csv b/example/example_output/13.000Gyr_burst_PARSECz0017_C08_montreal_co_da_20_montreal_co_da_20_montreal_co_da_20.csv new file mode 100644 index 0000000..20866d5 --- /dev/null +++ b/example/example_output/13.000Gyr_burst_PARSECz0017_C08_montreal_co_da_20_montreal_co_da_20_montreal_co_da_20.csv @@ -0,0 +1,100 @@ +0.000000000000000000e+00,0.000000000000000000e+00 +2.000000000000000111e-01,0.000000000000000000e+00 +4.000000000000000222e-01,0.000000000000000000e+00 +6.000000000000000888e-01,0.000000000000000000e+00 +8.000000000000000444e-01,0.000000000000000000e+00 +1.000000000000000000e+00,0.000000000000000000e+00 +1.200000000000000178e+00,0.000000000000000000e+00 +1.400000000000000133e+00,0.000000000000000000e+00 +1.600000000000000089e+00,0.000000000000000000e+00 +1.800000000000000044e+00,0.000000000000000000e+00 +2.000000000000000000e+00,0.000000000000000000e+00 +2.200000000000000178e+00,0.000000000000000000e+00 +2.400000000000000355e+00,0.000000000000000000e+00 +2.600000000000000089e+00,0.000000000000000000e+00 +2.800000000000000266e+00,0.000000000000000000e+00 +3.000000000000000000e+00,0.000000000000000000e+00 +3.200000000000000178e+00,0.000000000000000000e+00 +3.400000000000000355e+00,0.000000000000000000e+00 +3.600000000000000089e+00,0.000000000000000000e+00 +3.800000000000000266e+00,0.000000000000000000e+00 +4.000000000000000000e+00,0.000000000000000000e+00 +4.200000000000000178e+00,0.000000000000000000e+00 +4.400000000000000355e+00,0.000000000000000000e+00 +4.600000000000000533e+00,0.000000000000000000e+00 +4.800000000000000711e+00,0.000000000000000000e+00 +5.000000000000000000e+00,0.000000000000000000e+00 +5.200000000000000178e+00,0.000000000000000000e+00 +5.400000000000000355e+00,0.000000000000000000e+00 +5.600000000000000533e+00,0.000000000000000000e+00 +5.800000000000000711e+00,0.000000000000000000e+00 +6.000000000000000000e+00,0.000000000000000000e+00 +6.200000000000000178e+00,0.000000000000000000e+00 +6.400000000000000355e+00,0.000000000000000000e+00 +6.600000000000000533e+00,0.000000000000000000e+00 +6.800000000000000711e+00,0.000000000000000000e+00 +7.000000000000000000e+00,0.000000000000000000e+00 +7.200000000000000178e+00,0.000000000000000000e+00 +7.400000000000000355e+00,0.000000000000000000e+00 +7.600000000000000533e+00,1.171503539735270286e-06 +7.800000000000000711e+00,2.150745899034325757e-06 +8.000000000000000000e+00,4.127906358666195953e-06 +8.200000000000001066e+00,7.074003482318946954e-06 +8.400000000000000355e+00,1.024425557555563816e-05 +8.599999999999999645e+00,1.381701903325069203e-05 +8.800000000000000711e+00,1.784757269033956180e-05 +9.000000000000000000e+00,2.335469424076599016e-05 +9.200000000000001066e+00,3.073119191094729908e-05 +9.400000000000000355e+00,4.084110342694377143e-05 +9.600000000000001421e+00,5.407871042782035152e-05 +9.800000000000000711e+00,7.571884836874269724e-05 +1.000000000000000000e+01,1.096095020622535337e-04 +1.020000000000000107e+01,1.703200014548877060e-04 +1.040000000000000036e+01,2.913061070071613435e-04 +1.060000000000000142e+01,4.747710675325932583e-04 +1.080000000000000071e+01,6.784738139553377761e-04 +1.100000000000000000e+01,9.248309794610742787e-04 +1.120000000000000107e+01,1.247193203284005037e-03 +1.140000000000000036e+01,1.501255999600884438e-03 +1.160000000000000142e+01,1.804939591741875097e-03 +1.180000000000000071e+01,2.225289957466839406e-03 +1.200000000000000000e+01,2.593843174846629986e-03 +1.220000000000000107e+01,2.958847321993240357e-03 +1.240000000000000036e+01,3.375862347559089888e-03 +1.260000000000000142e+01,3.863039515006595065e-03 +1.280000000000000071e+01,4.433153525970824627e-03 +1.300000000000000000e+01,5.131464626741490814e-03 +1.320000000000000107e+01,5.951952497434862335e-03 +1.340000000000000036e+01,6.893874381327407506e-03 +1.360000000000000142e+01,8.065455208150437011e-03 +1.380000000000000071e+01,9.380487129963539783e-03 +1.400000000000000000e+01,1.115091522967707333e-02 +1.420000000000000107e+01,1.557351303804087837e-02 +1.440000000000000036e+01,3.003322561089950479e-02 +1.460000000000000142e+01,6.713697622118500186e-02 +1.480000000000000071e+01,7.692895621597500844e-02 +1.500000000000000000e+01,4.958860183800278126e-02 +1.520000000000000107e+01,5.659318336930160148e-02 +1.540000000000000036e+01,5.413797655978172529e-02 +1.560000000000000142e+01,4.936551310474523308e-02 +1.580000000000000071e+01,6.539020365821181235e-02 +1.600000000000000000e+01,1.184507791343404753e-01 +1.619999999999999929e+01,1.364380989016107104e-01 +1.640000000000000213e+01,8.163255682389369827e-02 +1.660000000000000142e+01,4.887942479244575950e-02 +1.680000000000000071e+01,2.063779783294930961e-02 +1.700000000000000000e+01,1.188519922483586080e-02 +1.719999999999999929e+01,7.930582440535228345e-03 +1.740000000000000213e+01,5.807732295280079379e-03 +1.760000000000000142e+01,4.828144219230112721e-03 +1.780000000000000071e+01,4.026911631726413573e-03 +1.800000000000000000e+01,3.859869579041219200e-03 +1.819999999999999929e+01,3.921592739295065924e-03 +1.840000000000000213e+01,3.579452188944209565e-03 +1.860000000000000142e+01,2.626501636046580258e-03 +1.880000000000000071e+01,1.908017722144452442e-03 +1.900000000000000000e+01,1.550846814893612480e-03 +1.920000000000000284e+01,1.210108409940900773e-03 +1.940000000000000213e+01,1.010806222581497231e-03 +1.960000000000000142e+01,8.526704622269889230e-04 +1.980000000000000071e+01,7.067145747020797588e-04 diff --git a/example/example_output/13.000Gyr_decay_PARSECz0017_C08_montreal_co_da_20_montreal_co_da_20_montreal_co_da_20.csv b/example/example_output/13.000Gyr_decay_PARSECz0017_C08_montreal_co_da_20_montreal_co_da_20_montreal_co_da_20.csv new file mode 100644 index 0000000..1012d83 --- /dev/null +++ b/example/example_output/13.000Gyr_decay_PARSECz0017_C08_montreal_co_da_20_montreal_co_da_20_montreal_co_da_20.csv @@ -0,0 +1,100 @@ +0.000000000000000000e+00,0.000000000000000000e+00 +2.000000000000000111e-01,0.000000000000000000e+00 +4.000000000000000222e-01,0.000000000000000000e+00 +6.000000000000000888e-01,0.000000000000000000e+00 +8.000000000000000444e-01,0.000000000000000000e+00 +1.000000000000000000e+00,0.000000000000000000e+00 +1.200000000000000178e+00,0.000000000000000000e+00 +1.400000000000000133e+00,0.000000000000000000e+00 +1.600000000000000089e+00,0.000000000000000000e+00 +1.800000000000000044e+00,0.000000000000000000e+00 +2.000000000000000000e+00,0.000000000000000000e+00 +2.200000000000000178e+00,0.000000000000000000e+00 +2.400000000000000355e+00,0.000000000000000000e+00 +2.600000000000000089e+00,0.000000000000000000e+00 +2.800000000000000266e+00,0.000000000000000000e+00 +3.000000000000000000e+00,0.000000000000000000e+00 +3.200000000000000178e+00,0.000000000000000000e+00 +3.400000000000000355e+00,0.000000000000000000e+00 +3.600000000000000089e+00,0.000000000000000000e+00 +3.800000000000000266e+00,0.000000000000000000e+00 +4.000000000000000000e+00,0.000000000000000000e+00 +4.200000000000000178e+00,0.000000000000000000e+00 +4.400000000000000355e+00,0.000000000000000000e+00 +4.600000000000000533e+00,0.000000000000000000e+00 +4.800000000000000711e+00,0.000000000000000000e+00 +5.000000000000000000e+00,0.000000000000000000e+00 +5.200000000000000178e+00,0.000000000000000000e+00 +5.400000000000000355e+00,0.000000000000000000e+00 +5.600000000000000533e+00,0.000000000000000000e+00 +5.800000000000000711e+00,0.000000000000000000e+00 +6.000000000000000000e+00,0.000000000000000000e+00 +6.200000000000000178e+00,0.000000000000000000e+00 +6.400000000000000355e+00,0.000000000000000000e+00 +6.600000000000000533e+00,0.000000000000000000e+00 +6.800000000000000711e+00,0.000000000000000000e+00 +7.000000000000000000e+00,0.000000000000000000e+00 +7.200000000000000178e+00,0.000000000000000000e+00 +7.400000000000000355e+00,1.256651776507738392e-07 +7.600000000000000533e+00,1.761020478258911836e-06 +7.800000000000000711e+00,2.828444886994508454e-06 +8.000000000000000000e+00,4.912403391133049276e-06 +8.200000000000001066e+00,7.993632969130776443e-06 +8.400000000000000355e+00,1.146217660677894100e-05 +8.599999999999999645e+00,1.507396288048648748e-05 +8.800000000000000711e+00,1.932976118575453452e-05 +9.000000000000000000e+00,2.545945070327052659e-05 +9.200000000000001066e+00,3.372232732747420755e-05 +9.400000000000000355e+00,4.557812525315244382e-05 +9.600000000000001421e+00,6.106019479780827011e-05 +9.800000000000000711e+00,8.587143449189037464e-05 +1.000000000000000000e+01,1.261565394149218174e-04 +1.020000000000000107e+01,1.982802323411962284e-04 +1.040000000000000036e+01,3.417176041296721861e-04 +1.060000000000000142e+01,5.672338527013212226e-04 +1.080000000000000071e+01,8.218890300222996600e-04 +1.100000000000000000e+01,1.100945691418449496e-03 +1.120000000000000107e+01,1.469797862764837338e-03 +1.140000000000000036e+01,1.826688924007350808e-03 +1.160000000000000142e+01,2.195465727842926731e-03 +1.180000000000000071e+01,2.743344791669400599e-03 +1.200000000000000000e+01,3.255686914289979486e-03 +1.220000000000000107e+01,3.744952728418537470e-03 +1.240000000000000036e+01,4.316096518960514487e-03 +1.260000000000000142e+01,4.999292780244776573e-03 +1.280000000000000071e+01,5.798728046970955292e-03 +1.300000000000000000e+01,6.820223217419076056e-03 +1.320000000000000107e+01,8.040336688051432160e-03 +1.340000000000000036e+01,9.470279780724661853e-03 +1.360000000000000142e+01,1.124299685392752060e-02 +1.380000000000000071e+01,1.345611388833516976e-02 +1.400000000000000000e+01,1.646350020617088489e-02 +1.420000000000000107e+01,2.250269718896017943e-02 +1.440000000000000036e+01,4.199951418922349272e-02 +1.460000000000000142e+01,9.678458803935717503e-02 +1.480000000000000071e+01,1.199291921886991991e-01 +1.500000000000000000e+01,9.653238002464521739e-02 +1.520000000000000107e+01,9.657191137352341692e-02 +1.540000000000000036e+01,8.818458362754567903e-02 +1.560000000000000142e+01,7.651582779007259916e-02 +1.580000000000000071e+01,6.990914363987332791e-02 +1.600000000000000000e+01,6.287485927030420085e-02 +1.619999999999999929e+01,5.038838964873848525e-02 +1.640000000000000213e+01,2.898029790597511993e-02 +1.660000000000000142e+01,1.752290747206463120e-02 +1.680000000000000071e+01,7.915632727820347964e-03 +1.700000000000000000e+01,4.818435790916269362e-03 +1.719999999999999929e+01,3.321094965925822096e-03 +1.740000000000000213e+01,2.551816013019460663e-03 +1.760000000000000142e+01,2.202290575402993892e-03 +1.780000000000000071e+01,1.911229980335292728e-03 +1.800000000000000000e+01,1.840817610773006624e-03 +1.819999999999999929e+01,1.696553069489366902e-03 +1.840000000000000213e+01,1.468295509629138256e-03 +1.860000000000000142e+01,1.081488061690082537e-03 +1.880000000000000071e+01,8.106527194475712100e-04 +1.900000000000000000e+01,6.633213209222310917e-04 +1.920000000000000284e+01,5.283201612644443813e-04 +1.940000000000000213e+01,4.489058849826724706e-04 +1.960000000000000142e+01,3.905456907849446627e-04 +1.980000000000000071e+01,3.394010786381868624e-04 diff --git a/example/example_output/14.000Gyr_burst_PARSECz0017_C08_montreal_co_da_20_montreal_co_da_20_montreal_co_da_20.csv b/example/example_output/14.000Gyr_burst_PARSECz0017_C08_montreal_co_da_20_montreal_co_da_20_montreal_co_da_20.csv new file mode 100644 index 0000000..1766dea --- /dev/null +++ b/example/example_output/14.000Gyr_burst_PARSECz0017_C08_montreal_co_da_20_montreal_co_da_20_montreal_co_da_20.csv @@ -0,0 +1,100 @@ +0.000000000000000000e+00,0.000000000000000000e+00 +2.000000000000000111e-01,0.000000000000000000e+00 +4.000000000000000222e-01,0.000000000000000000e+00 +6.000000000000000888e-01,0.000000000000000000e+00 +8.000000000000000444e-01,0.000000000000000000e+00 +1.000000000000000000e+00,0.000000000000000000e+00 +1.200000000000000178e+00,0.000000000000000000e+00 +1.400000000000000133e+00,0.000000000000000000e+00 +1.600000000000000089e+00,0.000000000000000000e+00 +1.800000000000000044e+00,0.000000000000000000e+00 +2.000000000000000000e+00,0.000000000000000000e+00 +2.200000000000000178e+00,0.000000000000000000e+00 +2.400000000000000355e+00,0.000000000000000000e+00 +2.600000000000000089e+00,0.000000000000000000e+00 +2.800000000000000266e+00,0.000000000000000000e+00 +3.000000000000000000e+00,0.000000000000000000e+00 +3.200000000000000178e+00,0.000000000000000000e+00 +3.400000000000000355e+00,0.000000000000000000e+00 +3.600000000000000089e+00,0.000000000000000000e+00 +3.800000000000000266e+00,0.000000000000000000e+00 +4.000000000000000000e+00,0.000000000000000000e+00 +4.200000000000000178e+00,0.000000000000000000e+00 +4.400000000000000355e+00,0.000000000000000000e+00 +4.600000000000000533e+00,0.000000000000000000e+00 +4.800000000000000711e+00,0.000000000000000000e+00 +5.000000000000000000e+00,0.000000000000000000e+00 +5.200000000000000178e+00,0.000000000000000000e+00 +5.400000000000000355e+00,0.000000000000000000e+00 +5.600000000000000533e+00,0.000000000000000000e+00 +5.800000000000000711e+00,0.000000000000000000e+00 +6.000000000000000000e+00,0.000000000000000000e+00 +6.200000000000000178e+00,0.000000000000000000e+00 +6.400000000000000355e+00,0.000000000000000000e+00 +6.600000000000000533e+00,0.000000000000000000e+00 +6.800000000000000711e+00,0.000000000000000000e+00 +7.000000000000000000e+00,0.000000000000000000e+00 +7.200000000000000178e+00,0.000000000000000000e+00 +7.400000000000000355e+00,0.000000000000000000e+00 +7.600000000000000533e+00,1.051445788075560503e-06 +7.800000000000000711e+00,1.992953271466626449e-06 +8.000000000000000000e+00,3.862621200139080176e-06 +8.200000000000001066e+00,6.648935909939542195e-06 +8.400000000000000355e+00,9.638950046326503896e-06 +8.599999999999999645e+00,1.312517166742798792e-05 +8.800000000000000711e+00,1.707870541387442653e-05 +9.000000000000000000e+00,2.226184159442253131e-05 +9.200000000000001066e+00,2.922589787502288261e-05 +9.400000000000000355e+00,3.862352419538994116e-05 +9.600000000000001421e+00,5.118016692215583382e-05 +9.800000000000000711e+00,7.149298235898719181e-05 +1.000000000000000000e+01,1.032156826694261633e-04 +1.020000000000000107e+01,1.609819168253458492e-04 +1.040000000000000036e+01,2.742421633458897194e-04 +1.060000000000000142e+01,4.446901384449060109e-04 +1.080000000000000071e+01,6.346801072733264945e-04 +1.100000000000000000e+01,8.713045297530413926e-04 +1.120000000000000107e+01,1.171938743768667288e-03 +1.140000000000000036e+01,1.398686421984708574e-03 +1.160000000000000142e+01,1.696031711556261583e-03 +1.180000000000000071e+01,2.083379414132643763e-03 +1.200000000000000000e+01,2.423061328747662564e-03 +1.220000000000000107e+01,2.762323027275424663e-03 +1.240000000000000036e+01,3.151121070154115807e-03 +1.260000000000000142e+01,3.604171223058575714e-03 +1.280000000000000071e+01,4.134227688679882953e-03 +1.300000000000000000e+01,4.784154220428692324e-03 +1.320000000000000107e+01,5.547257884241944305e-03 +1.340000000000000036e+01,6.419563459316655549e-03 +1.360000000000000142e+01,7.511789852481669076e-03 +1.380000000000000071e+01,8.716381479976029883e-03 +1.400000000000000000e+01,1.033418011447483249e-02 +1.420000000000000107e+01,1.451307893026265207e-02 +1.440000000000000036e+01,2.807320302579356316e-02 +1.460000000000000142e+01,6.000375821517778957e-02 +1.480000000000000071e+01,7.054828200667349891e-02 +1.500000000000000000e+01,4.748294997654664562e-02 +1.520000000000000107e+01,4.351953405535559372e-02 +1.540000000000000036e+01,4.005902947097416539e-02 +1.560000000000000142e+01,4.068498792516896112e-02 +1.580000000000000071e+01,3.949782772966824868e-02 +1.600000000000000000e+01,4.487541598008292637e-02 +1.619999999999999929e+01,5.544657949444305178e-02 +1.640000000000000213e+01,8.554015015802252098e-02 +1.660000000000000142e+01,8.796660008805227970e-02 +1.680000000000000071e+01,8.429153274296262432e-02 +1.700000000000000000e+01,5.034181447611817822e-02 +1.719999999999999929e+01,3.630202989758684468e-02 +1.740000000000000213e+01,2.330185152737357726e-02 +1.760000000000000142e+01,1.561495020309041672e-02 +1.780000000000000071e+01,1.159240896878805174e-02 +1.800000000000000000e+01,9.467537955603882310e-03 +1.819999999999999929e+01,8.334986758974391105e-03 +1.840000000000000213e+01,8.077177193357702734e-03 +1.860000000000000142e+01,7.717649359833300346e-03 +1.880000000000000071e+01,5.698733978432528671e-03 +1.900000000000000000e+01,3.983644361331016050e-03 +1.920000000000000284e+01,2.933731531132603796e-03 +1.940000000000000213e+01,2.325027967656530768e-03 +1.960000000000000142e+01,1.830452941849442178e-03 +1.980000000000000071e+01,1.481507704854168484e-03 diff --git a/example/example_output/14.000Gyr_decay_PARSECz0017_C08_montreal_co_da_20_montreal_co_da_20_montreal_co_da_20.csv b/example/example_output/14.000Gyr_decay_PARSECz0017_C08_montreal_co_da_20_montreal_co_da_20_montreal_co_da_20.csv new file mode 100644 index 0000000..615fe2a --- /dev/null +++ b/example/example_output/14.000Gyr_decay_PARSECz0017_C08_montreal_co_da_20_montreal_co_da_20_montreal_co_da_20.csv @@ -0,0 +1,100 @@ +0.000000000000000000e+00,0.000000000000000000e+00 +2.000000000000000111e-01,0.000000000000000000e+00 +4.000000000000000222e-01,0.000000000000000000e+00 +6.000000000000000888e-01,0.000000000000000000e+00 +8.000000000000000444e-01,0.000000000000000000e+00 +1.000000000000000000e+00,0.000000000000000000e+00 +1.200000000000000178e+00,0.000000000000000000e+00 +1.400000000000000133e+00,0.000000000000000000e+00 +1.600000000000000089e+00,0.000000000000000000e+00 +1.800000000000000044e+00,0.000000000000000000e+00 +2.000000000000000000e+00,0.000000000000000000e+00 +2.200000000000000178e+00,0.000000000000000000e+00 +2.400000000000000355e+00,0.000000000000000000e+00 +2.600000000000000089e+00,0.000000000000000000e+00 +2.800000000000000266e+00,0.000000000000000000e+00 +3.000000000000000000e+00,0.000000000000000000e+00 +3.200000000000000178e+00,0.000000000000000000e+00 +3.400000000000000355e+00,0.000000000000000000e+00 +3.600000000000000089e+00,0.000000000000000000e+00 +3.800000000000000266e+00,0.000000000000000000e+00 +4.000000000000000000e+00,0.000000000000000000e+00 +4.200000000000000178e+00,0.000000000000000000e+00 +4.400000000000000355e+00,0.000000000000000000e+00 +4.600000000000000533e+00,0.000000000000000000e+00 +4.800000000000000711e+00,0.000000000000000000e+00 +5.000000000000000000e+00,0.000000000000000000e+00 +5.200000000000000178e+00,0.000000000000000000e+00 +5.400000000000000355e+00,0.000000000000000000e+00 +5.600000000000000533e+00,0.000000000000000000e+00 +5.800000000000000711e+00,0.000000000000000000e+00 +6.000000000000000000e+00,0.000000000000000000e+00 +6.200000000000000178e+00,0.000000000000000000e+00 +6.400000000000000355e+00,0.000000000000000000e+00 +6.600000000000000533e+00,0.000000000000000000e+00 +6.800000000000000711e+00,0.000000000000000000e+00 +7.000000000000000000e+00,0.000000000000000000e+00 +7.200000000000000178e+00,0.000000000000000000e+00 +7.400000000000000355e+00,8.972163371316799903e-08 +7.600000000000000533e+00,1.557052469117826881e-06 +7.800000000000000711e+00,2.587937174655126824e-06 +8.000000000000000000e+00,4.609475053311530785e-06 +8.200000000000001066e+00,7.604559322318978670e-06 +8.400000000000000355e+00,1.093443186236843100e-05 +8.599999999999999645e+00,1.450903011899473062e-05 +8.800000000000000711e+00,1.867712376066232310e-05 +9.000000000000000000e+00,2.453273265273951402e-05 +9.200000000000001066e+00,3.241969904478861662e-05 +9.400000000000000355e+00,4.356548510541497198e-05 +9.600000000000001421e+00,5.820358169776489231e-05 +9.800000000000000711e+00,8.171453245493114949e-05 +1.000000000000000000e+01,1.195290121711311957e-04 +1.020000000000000107e+01,1.875127575388377873e-04 +1.040000000000000036e+01,3.222421472342583502e-04 +1.060000000000000142e+01,5.318783240477655688e-04 +1.080000000000000071e+01,7.679042575984424942e-04 +1.100000000000000000e+01,1.034708706045215851e-03 +1.120000000000000107e+01,1.383795134120293377e-03 +1.140000000000000036e+01,1.702952229245995215e-03 +1.160000000000000142e+01,2.051497186575144873e-03 +1.180000000000000071e+01,2.553145290740504742e-03 +1.200000000000000000e+01,3.015824158821177412e-03 +1.220000000000000107e+01,3.461926636098245410e-03 +1.240000000000000036e+01,3.980625400606791452e-03 +1.260000000000000142e+01,4.597643126145821435e-03 +1.280000000000000071e+01,5.319612251680121660e-03 +1.300000000000000000e+01,6.234314445725004129e-03 +1.320000000000000107e+01,7.323114606496072473e-03 +1.340000000000000036e+01,8.592900796739442321e-03 +1.360000000000000142e+01,1.017026189923163348e-02 +1.380000000000000071e+01,1.209401560309090670e-02 +1.400000000000000000e+01,1.470266131560232087e-02 +1.420000000000000107e+01,2.020724671130944700e-02 +1.440000000000000036e+01,3.799691448329355070e-02 +1.460000000000000142e+01,8.634664891894205940e-02 +1.480000000000000071e+01,1.057309013023293998e-01 +1.500000000000000000e+01,8.249118881543728021e-02 +1.520000000000000107e+01,8.134851658529268503e-02 +1.540000000000000036e+01,7.431009684283378103e-02 +1.560000000000000142e+01,6.615506344295225827e-02 +1.580000000000000071e+01,6.120107472442329333e-02 +1.600000000000000000e+01,5.741927465477240922e-02 +1.619999999999999929e+01,5.162155160441932872e-02 +1.640000000000000213e+01,4.405605882629197445e-02 +1.660000000000000142e+01,3.744260509036742568e-02 +1.680000000000000071e+01,3.028406029882425854e-02 +1.700000000000000000e+01,1.810666352420499392e-02 +1.719999999999999929e+01,1.321013930181801771e-02 +1.740000000000000213e+01,8.774551190165340298e-03 +1.760000000000000142e+01,6.201027003819047090e-03 +1.780000000000000071e+01,4.768658150294743069e-03 +1.800000000000000000e+01,4.091346158133731849e-03 +1.819999999999999929e+01,3.644429525740235012e-03 +1.840000000000000213e+01,3.410237113505048233e-03 +1.860000000000000142e+01,3.043717381258330499e-03 +1.880000000000000071e+01,2.269414090870472151e-03 +1.900000000000000000e+01,1.648669227933650646e-03 +1.920000000000000284e+01,1.237438154376862415e-03 +1.940000000000000213e+01,1.001393748485399256e-03 +1.960000000000000142e+01,8.302621174681298552e-04 +1.980000000000000071e+01,7.017803625310647855e-04 diff --git a/example/example_output/8.000Gyr_burst_PARSECz0017_C08_montreal_co_da_20_montreal_co_da_20_montreal_co_da_20.csv b/example/example_output/8.000Gyr_burst_PARSECz0017_C08_montreal_co_da_20_montreal_co_da_20_montreal_co_da_20.csv new file mode 100644 index 0000000..7d18921 --- /dev/null +++ b/example/example_output/8.000Gyr_burst_PARSECz0017_C08_montreal_co_da_20_montreal_co_da_20_montreal_co_da_20.csv @@ -0,0 +1,100 @@ +0.000000000000000000e+00,0.000000000000000000e+00 +2.000000000000000111e-01,0.000000000000000000e+00 +4.000000000000000222e-01,0.000000000000000000e+00 +6.000000000000000888e-01,0.000000000000000000e+00 +8.000000000000000444e-01,0.000000000000000000e+00 +1.000000000000000000e+00,0.000000000000000000e+00 +1.200000000000000178e+00,0.000000000000000000e+00 +1.400000000000000133e+00,0.000000000000000000e+00 +1.600000000000000089e+00,0.000000000000000000e+00 +1.800000000000000044e+00,0.000000000000000000e+00 +2.000000000000000000e+00,0.000000000000000000e+00 +2.200000000000000178e+00,0.000000000000000000e+00 +2.400000000000000355e+00,0.000000000000000000e+00 +2.600000000000000089e+00,0.000000000000000000e+00 +2.800000000000000266e+00,0.000000000000000000e+00 +3.000000000000000000e+00,0.000000000000000000e+00 +3.200000000000000178e+00,0.000000000000000000e+00 +3.400000000000000355e+00,0.000000000000000000e+00 +3.600000000000000089e+00,0.000000000000000000e+00 +3.800000000000000266e+00,0.000000000000000000e+00 +4.000000000000000000e+00,0.000000000000000000e+00 +4.200000000000000178e+00,0.000000000000000000e+00 +4.400000000000000355e+00,0.000000000000000000e+00 +4.600000000000000533e+00,0.000000000000000000e+00 +4.800000000000000711e+00,0.000000000000000000e+00 +5.000000000000000000e+00,0.000000000000000000e+00 +5.200000000000000178e+00,0.000000000000000000e+00 +5.400000000000000355e+00,0.000000000000000000e+00 +5.600000000000000533e+00,0.000000000000000000e+00 +5.800000000000000711e+00,0.000000000000000000e+00 +6.000000000000000000e+00,0.000000000000000000e+00 +6.200000000000000178e+00,0.000000000000000000e+00 +6.400000000000000355e+00,0.000000000000000000e+00 +6.600000000000000533e+00,0.000000000000000000e+00 +6.800000000000000711e+00,0.000000000000000000e+00 +7.000000000000000000e+00,0.000000000000000000e+00 +7.200000000000000178e+00,0.000000000000000000e+00 +7.400000000000000355e+00,0.000000000000000000e+00 +7.600000000000000533e+00,2.143366370232848374e-06 +7.800000000000000711e+00,3.172781742234936425e-06 +8.000000000000000000e+00,5.244583766469647925e-06 +8.200000000000001066e+00,8.424566481839661694e-06 +8.400000000000000355e+00,1.211811829200118917e-05 +8.599999999999999645e+00,1.552233261650268797e-05 +8.800000000000000711e+00,1.972937378276911388e-05 +9.000000000000000000e+00,2.601811358039515749e-05 +9.200000000000001066e+00,3.465531193513956290e-05 +9.400000000000000355e+00,4.779887794721899235e-05 +9.600000000000001421e+00,6.391107094179679447e-05 +9.800000000000000711e+00,8.950178993892112856e-05 +1.000000000000000000e+01,1.328557465794791748e-04 +1.020000000000000107e+01,2.074006096517535863e-04 +1.040000000000000036e+01,3.534143726193450215e-04 +1.060000000000000142e+01,5.870810751567078281e-04 +1.080000000000000071e+01,8.523958301545893172e-04 +1.100000000000000000e+01,1.109226207185694648e-03 +1.120000000000000107e+01,1.483531254267399192e-03 +1.140000000000000036e+01,1.889807073897764936e-03 +1.160000000000000142e+01,2.220371001556288582e-03 +1.180000000000000071e+01,2.780736508217647885e-03 +1.200000000000000000e+01,3.285769653722832393e-03 +1.220000000000000107e+01,3.759931785707639786e-03 +1.240000000000000036e+01,4.304210675080287832e-03 +1.260000000000000142e+01,4.965018087499342703e-03 +1.280000000000000071e+01,5.770893225561978847e-03 +1.300000000000000000e+01,6.793324867686836334e-03 +1.320000000000000107e+01,8.088467375629800060e-03 +1.340000000000000036e+01,9.725505740028120988e-03 +1.360000000000000142e+01,1.184743306942761046e-02 +1.380000000000000071e+01,1.483600427250307378e-02 +1.400000000000000000e+01,1.897850658798778956e-02 +1.420000000000000107e+01,2.615159573663293491e-02 +1.440000000000000036e+01,4.778421434181395061e-02 +1.460000000000000142e+01,1.742478567227923603e-01 +1.480000000000000071e+01,3.932242106940366244e-01 +1.500000000000000000e+01,1.686328786722433859e-01 +1.520000000000000107e+01,3.997059883045753215e-02 +1.540000000000000036e+01,1.826697875020448156e-02 +1.560000000000000142e+01,1.001739195098336893e-02 +1.580000000000000071e+01,6.361636297632766897e-03 +1.600000000000000000e+01,4.043679927382560178e-03 +1.619999999999999929e+01,2.296206647932942831e-03 +1.640000000000000213e+01,1.290582935151029934e-03 +1.660000000000000142e+01,1.122718809292862739e-03 +1.680000000000000071e+01,7.621528141575493109e-04 +1.700000000000000000e+01,5.289361945057038938e-04 +1.719999999999999929e+01,4.131449611190319096e-04 +1.740000000000000213e+01,3.034796745124738689e-04 +1.760000000000000142e+01,1.716984643319988168e-04 +1.780000000000000071e+01,7.155353289498802194e-05 +1.800000000000000000e+01,2.951248201735046011e-05 +1.819999999999999929e+01,8.846252386607162725e-06 +1.840000000000000213e+01,0.000000000000000000e+00 +1.860000000000000142e+01,0.000000000000000000e+00 +1.880000000000000071e+01,0.000000000000000000e+00 +1.900000000000000000e+01,0.000000000000000000e+00 +1.920000000000000284e+01,0.000000000000000000e+00 +1.940000000000000213e+01,0.000000000000000000e+00 +1.960000000000000142e+01,0.000000000000000000e+00 +1.980000000000000071e+01,0.000000000000000000e+00 diff --git a/example/example_output/8.000Gyr_decay_PARSECz0017_C08_montreal_co_da_20_montreal_co_da_20_montreal_co_da_20.csv b/example/example_output/8.000Gyr_decay_PARSECz0017_C08_montreal_co_da_20_montreal_co_da_20_montreal_co_da_20.csv new file mode 100644 index 0000000..3ca169d --- /dev/null +++ b/example/example_output/8.000Gyr_decay_PARSECz0017_C08_montreal_co_da_20_montreal_co_da_20_montreal_co_da_20.csv @@ -0,0 +1,100 @@ +0.000000000000000000e+00,0.000000000000000000e+00 +2.000000000000000111e-01,0.000000000000000000e+00 +4.000000000000000222e-01,0.000000000000000000e+00 +6.000000000000000888e-01,0.000000000000000000e+00 +8.000000000000000444e-01,0.000000000000000000e+00 +1.000000000000000000e+00,0.000000000000000000e+00 +1.200000000000000178e+00,0.000000000000000000e+00 +1.400000000000000133e+00,0.000000000000000000e+00 +1.600000000000000089e+00,0.000000000000000000e+00 +1.800000000000000044e+00,0.000000000000000000e+00 +2.000000000000000000e+00,0.000000000000000000e+00 +2.200000000000000178e+00,0.000000000000000000e+00 +2.400000000000000355e+00,0.000000000000000000e+00 +2.600000000000000089e+00,0.000000000000000000e+00 +2.800000000000000266e+00,0.000000000000000000e+00 +3.000000000000000000e+00,0.000000000000000000e+00 +3.200000000000000178e+00,0.000000000000000000e+00 +3.400000000000000355e+00,0.000000000000000000e+00 +3.600000000000000089e+00,0.000000000000000000e+00 +3.800000000000000266e+00,0.000000000000000000e+00 +4.000000000000000000e+00,0.000000000000000000e+00 +4.200000000000000178e+00,0.000000000000000000e+00 +4.400000000000000355e+00,0.000000000000000000e+00 +4.600000000000000533e+00,0.000000000000000000e+00 +4.800000000000000711e+00,0.000000000000000000e+00 +5.000000000000000000e+00,0.000000000000000000e+00 +5.200000000000000178e+00,0.000000000000000000e+00 +5.400000000000000355e+00,0.000000000000000000e+00 +5.600000000000000533e+00,0.000000000000000000e+00 +5.800000000000000711e+00,0.000000000000000000e+00 +6.000000000000000000e+00,0.000000000000000000e+00 +6.200000000000000178e+00,0.000000000000000000e+00 +6.400000000000000355e+00,0.000000000000000000e+00 +6.600000000000000533e+00,0.000000000000000000e+00 +6.800000000000000711e+00,0.000000000000000000e+00 +7.000000000000000000e+00,0.000000000000000000e+00 +7.200000000000000178e+00,0.000000000000000000e+00 +7.400000000000000355e+00,8.637038919005361186e-07 +7.600000000000000533e+00,4.365213878131223921e-06 +7.800000000000000711e+00,6.184335415442801355e-06 +8.000000000000000000e+00,9.115099115058704942e-06 +8.200000000000001066e+00,1.324662644854533395e-05 +8.400000000000000355e+00,1.838318222014281050e-05 +8.599999999999999645e+00,2.348879874546296905e-05 +8.800000000000000711e+00,2.992648010772645405e-05 +9.000000000000000000e+00,3.949003908008183185e-05 +9.200000000000001066e+00,5.317685052581100851e-05 +9.400000000000000355e+00,7.364177557420417892e-05 +9.600000000000001421e+00,1.021387084348953180e-04 +9.800000000000000711e+00,1.447905851877334768e-04 +1.000000000000000000e+01,2.186302037819635113e-04 +1.020000000000000107e+01,3.567850661850194131e-04 +1.040000000000000036e+01,6.246613874429768863e-04 +1.060000000000000142e+01,1.073283805969907747e-03 +1.080000000000000071e+01,1.593179786234632861e-03 +1.100000000000000000e+01,2.102092761849587606e-03 +1.120000000000000107e+01,2.762381416182970416e-03 +1.140000000000000036e+01,3.558871090951171851e-03 +1.160000000000000142e+01,4.367321799760917611e-03 +1.180000000000000071e+01,5.545352953975951973e-03 +1.200000000000000000e+01,6.788614155393061372e-03 +1.220000000000000107e+01,7.930079858275297655e-03 +1.240000000000000036e+01,9.322965616524724400e-03 +1.260000000000000142e+01,1.103898472001176370e-02 +1.280000000000000071e+01,1.303514802123000027e-02 +1.300000000000000000e+01,1.577199549157815017e-02 +1.320000000000000107e+01,1.910300884654696565e-02 +1.340000000000000036e+01,2.309247546477620136e-02 +1.360000000000000142e+01,2.813125531922783945e-02 +1.380000000000000071e+01,3.504407737057557010e-02 +1.400000000000000000e+01,4.444933341477667194e-02 +1.420000000000000107e+01,5.955673405409632470e-02 +1.440000000000000036e+01,1.057007251587333690e-01 +1.460000000000000142e+01,2.202201384795776651e-01 +1.480000000000000071e+01,2.442100758609253297e-01 +1.500000000000000000e+01,8.360715608451527170e-02 +1.520000000000000107e+01,2.261724097136080802e-02 +1.540000000000000036e+01,1.122258022660260930e-02 +1.560000000000000142e+01,6.593507232249285963e-03 +1.580000000000000071e+01,3.990559132533664892e-03 +1.600000000000000000e+01,2.281470160346308132e-03 +1.619999999999999929e+01,1.344156933750033671e-03 +1.640000000000000213e+01,8.293946870494949952e-04 +1.660000000000000142e+01,4.636838331962989546e-04 +1.680000000000000071e+01,2.978325483001681168e-04 +1.700000000000000000e+01,2.135266586278314609e-04 +1.719999999999999929e+01,1.704420579899259907e-04 +1.740000000000000213e+01,1.281904241629198526e-04 +1.760000000000000142e+01,7.460303485958564023e-05 +1.780000000000000071e+01,3.151362039455286369e-05 +1.800000000000000000e+01,1.317632451584550791e-05 +1.819999999999999929e+01,3.982566336177602119e-06 +1.840000000000000213e+01,0.000000000000000000e+00 +1.860000000000000142e+01,0.000000000000000000e+00 +1.880000000000000071e+01,0.000000000000000000e+00 +1.900000000000000000e+01,0.000000000000000000e+00 +1.920000000000000284e+01,0.000000000000000000e+00 +1.940000000000000213e+01,0.000000000000000000e+00 +1.960000000000000142e+01,0.000000000000000000e+00 +1.980000000000000071e+01,0.000000000000000000e+00 diff --git a/example/example_output/9.000Gyr_burst_PARSECz0017_C08_montreal_co_da_20_montreal_co_da_20_montreal_co_da_20.csv b/example/example_output/9.000Gyr_burst_PARSECz0017_C08_montreal_co_da_20_montreal_co_da_20_montreal_co_da_20.csv new file mode 100644 index 0000000..1246ec3 --- /dev/null +++ b/example/example_output/9.000Gyr_burst_PARSECz0017_C08_montreal_co_da_20_montreal_co_da_20_montreal_co_da_20.csv @@ -0,0 +1,100 @@ +0.000000000000000000e+00,0.000000000000000000e+00 +2.000000000000000111e-01,0.000000000000000000e+00 +4.000000000000000222e-01,0.000000000000000000e+00 +6.000000000000000888e-01,0.000000000000000000e+00 +8.000000000000000444e-01,0.000000000000000000e+00 +1.000000000000000000e+00,0.000000000000000000e+00 +1.200000000000000178e+00,0.000000000000000000e+00 +1.400000000000000133e+00,0.000000000000000000e+00 +1.600000000000000089e+00,0.000000000000000000e+00 +1.800000000000000044e+00,0.000000000000000000e+00 +2.000000000000000000e+00,0.000000000000000000e+00 +2.200000000000000178e+00,0.000000000000000000e+00 +2.400000000000000355e+00,0.000000000000000000e+00 +2.600000000000000089e+00,0.000000000000000000e+00 +2.800000000000000266e+00,0.000000000000000000e+00 +3.000000000000000000e+00,0.000000000000000000e+00 +3.200000000000000178e+00,0.000000000000000000e+00 +3.400000000000000355e+00,0.000000000000000000e+00 +3.600000000000000089e+00,0.000000000000000000e+00 +3.800000000000000266e+00,0.000000000000000000e+00 +4.000000000000000000e+00,0.000000000000000000e+00 +4.200000000000000178e+00,0.000000000000000000e+00 +4.400000000000000355e+00,0.000000000000000000e+00 +4.600000000000000533e+00,0.000000000000000000e+00 +4.800000000000000711e+00,0.000000000000000000e+00 +5.000000000000000000e+00,0.000000000000000000e+00 +5.200000000000000178e+00,0.000000000000000000e+00 +5.400000000000000355e+00,0.000000000000000000e+00 +5.600000000000000533e+00,0.000000000000000000e+00 +5.800000000000000711e+00,0.000000000000000000e+00 +6.000000000000000000e+00,0.000000000000000000e+00 +6.200000000000000178e+00,0.000000000000000000e+00 +6.400000000000000355e+00,0.000000000000000000e+00 +6.600000000000000533e+00,0.000000000000000000e+00 +6.800000000000000711e+00,0.000000000000000000e+00 +7.000000000000000000e+00,0.000000000000000000e+00 +7.200000000000000178e+00,0.000000000000000000e+00 +7.400000000000000355e+00,0.000000000000000000e+00 +7.600000000000000533e+00,1.735390371235930704e-06 +7.800000000000000711e+00,2.628656470354110370e-06 +8.000000000000000000e+00,4.540484440764833770e-06 +8.200000000000001066e+00,7.459974744807776795e-06 +8.400000000000000355e+00,1.080406721663533412e-05 +8.599999999999999645e+00,1.389057606981423239e-05 +8.800000000000000711e+00,1.770659955631789198e-05 +9.000000000000000000e+00,2.349463843545202940e-05 +9.200000000000001066e+00,3.112562138103803870e-05 +9.400000000000000355e+00,4.258884500849752702e-05 +9.600000000000001421e+00,5.664070747749879185e-05 +9.800000000000000711e+00,7.952681541218114668e-05 +1.000000000000000000e+01,1.172750822442346748e-04 +1.020000000000000107e+01,1.821784439598975343e-04 +1.040000000000000036e+01,3.121365804737649967e-04 +1.060000000000000142e+01,5.136595041610680056e-04 +1.080000000000000071e+01,7.488872060959523170e-04 +1.100000000000000000e+01,9.866115389080606229e-04 +1.120000000000000107e+01,1.314963649977201991e-03 +1.140000000000000036e+01,1.666916993006661548e-03 +1.160000000000000142e+01,1.967517261415310630e-03 +1.180000000000000071e+01,2.470489750196767746e-03 +1.200000000000000000e+01,2.918107551041061818e-03 +1.220000000000000107e+01,3.339756256603539780e-03 +1.240000000000000036e+01,3.816368303432877453e-03 +1.260000000000000142e+01,4.378969350424870462e-03 +1.280000000000000071e+01,5.036252010286743422e-03 +1.300000000000000000e+01,5.829036168803025490e-03 +1.320000000000000107e+01,6.761354113307407529e-03 +1.340000000000000036e+01,7.841660239314833872e-03 +1.360000000000000142e+01,9.137805143988136231e-03 +1.380000000000000071e+01,1.079812465492903904e-02 +1.400000000000000000e+01,1.321626673161652339e-02 +1.420000000000000107e+01,1.850150557264351736e-02 +1.440000000000000036e+01,3.784115482777220679e-02 +1.460000000000000142e+01,1.085518652198912137e-01 +1.480000000000000071e+01,1.883367169505115180e-01 +1.500000000000000000e+01,3.818306833797108779e-01 +1.520000000000000107e+01,1.118208627779344322e-01 +1.540000000000000036e+01,3.098694149428299002e-02 +1.560000000000000142e+01,1.453197412701536136e-02 +1.580000000000000071e+01,7.724849872309156977e-03 +1.600000000000000000e+01,4.551616267637920155e-03 +1.619999999999999929e+01,2.803408031486966535e-03 +1.640000000000000213e+01,1.943988254295752217e-03 +1.660000000000000142e+01,1.281002318849173462e-03 +1.680000000000000071e+01,1.016393391208860429e-03 +1.700000000000000000e+01,8.779096457638076211e-04 +1.719999999999999929e+01,7.176372156953467023e-04 +1.740000000000000213e+01,6.067717399940124453e-04 +1.760000000000000142e+01,6.353100851587098778e-04 +1.780000000000000071e+01,4.715620749088534486e-04 +1.800000000000000000e+01,3.177951005241445121e-04 +1.819999999999999929e+01,2.252786302911905035e-04 +1.840000000000000213e+01,1.722839721339269501e-04 +1.860000000000000142e+01,1.324552560317640050e-04 +1.880000000000000071e+01,1.092596023645114796e-04 +1.900000000000000000e+01,9.269788547609634664e-05 +1.920000000000000284e+01,7.983824553167946441e-05 +1.940000000000000213e+01,6.949779626596889396e-05 +1.960000000000000142e+01,6.418499420438854178e-05 +1.980000000000000071e+01,5.807635933408112396e-05 diff --git a/example/example_output/9.000Gyr_decay_PARSECz0017_C08_montreal_co_da_20_montreal_co_da_20_montreal_co_da_20.csv b/example/example_output/9.000Gyr_decay_PARSECz0017_C08_montreal_co_da_20_montreal_co_da_20_montreal_co_da_20.csv new file mode 100644 index 0000000..8d4d8b7 --- /dev/null +++ b/example/example_output/9.000Gyr_decay_PARSECz0017_C08_montreal_co_da_20_montreal_co_da_20_montreal_co_da_20.csv @@ -0,0 +1,100 @@ +0.000000000000000000e+00,0.000000000000000000e+00 +2.000000000000000111e-01,0.000000000000000000e+00 +4.000000000000000222e-01,0.000000000000000000e+00 +6.000000000000000888e-01,0.000000000000000000e+00 +8.000000000000000444e-01,0.000000000000000000e+00 +1.000000000000000000e+00,0.000000000000000000e+00 +1.200000000000000178e+00,0.000000000000000000e+00 +1.400000000000000133e+00,0.000000000000000000e+00 +1.600000000000000089e+00,0.000000000000000000e+00 +1.800000000000000044e+00,0.000000000000000000e+00 +2.000000000000000000e+00,0.000000000000000000e+00 +2.200000000000000178e+00,0.000000000000000000e+00 +2.400000000000000355e+00,0.000000000000000000e+00 +2.600000000000000089e+00,0.000000000000000000e+00 +2.800000000000000266e+00,0.000000000000000000e+00 +3.000000000000000000e+00,0.000000000000000000e+00 +3.200000000000000178e+00,0.000000000000000000e+00 +3.400000000000000355e+00,0.000000000000000000e+00 +3.600000000000000089e+00,0.000000000000000000e+00 +3.800000000000000266e+00,0.000000000000000000e+00 +4.000000000000000000e+00,0.000000000000000000e+00 +4.200000000000000178e+00,0.000000000000000000e+00 +4.400000000000000355e+00,0.000000000000000000e+00 +4.600000000000000533e+00,0.000000000000000000e+00 +4.800000000000000711e+00,0.000000000000000000e+00 +5.000000000000000000e+00,0.000000000000000000e+00 +5.200000000000000178e+00,0.000000000000000000e+00 +5.400000000000000355e+00,0.000000000000000000e+00 +5.600000000000000533e+00,0.000000000000000000e+00 +5.800000000000000711e+00,0.000000000000000000e+00 +6.000000000000000000e+00,0.000000000000000000e+00 +6.200000000000000178e+00,0.000000000000000000e+00 +6.400000000000000355e+00,0.000000000000000000e+00 +6.600000000000000533e+00,0.000000000000000000e+00 +6.800000000000000711e+00,0.000000000000000000e+00 +7.000000000000000000e+00,0.000000000000000000e+00 +7.200000000000000178e+00,0.000000000000000000e+00 +7.400000000000000355e+00,5.446862306962274908e-07 +7.600000000000000533e+00,3.388864222775216294e-06 +7.800000000000000711e+00,4.864237232611865589e-06 +8.000000000000000000e+00,7.415801925265589192e-06 +8.200000000000001066e+00,1.109500784454521027e-05 +8.400000000000000355e+00,1.556376018549669065e-05 +8.599999999999999645e+00,1.991953938746870089e-05 +8.800000000000000711e+00,2.538212055619412901e-05 +9.000000000000000000e+00,3.354201136972490276e-05 +9.200000000000001066e+00,4.497765410508124947e-05 +9.400000000000000355e+00,6.207918145826670658e-05 +9.600000000000001421e+00,8.522731026108954107e-05 +9.800000000000000711e+00,1.205368921678907386e-04 +1.000000000000000000e+01,1.809799010401759868e-04 +1.020000000000000107e+01,2.919350820219032694e-04 +1.040000000000000036e+01,5.086256944611115176e-04 +1.060000000000000142e+01,8.655621228393768586e-04 +1.080000000000000071e+01,1.279834589781205303e-03 +1.100000000000000000e+01,1.688223733490280647e-03 +1.120000000000000107e+01,2.227464660041352049e-03 +1.140000000000000036e+01,2.856757720260483767e-03 +1.160000000000000142e+01,3.477115028827991450e-03 +1.180000000000000071e+01,4.404881203258270705e-03 +1.200000000000000000e+01,5.353517135355316710e-03 +1.220000000000000107e+01,6.228485483928188939e-03 +1.240000000000000036e+01,7.282308882702169528e-03 +1.260000000000000142e+01,8.571646218498606834e-03 +1.280000000000000071e+01,1.007261242269525195e-02 +1.300000000000000000e+01,1.209060237380140540e-02 +1.320000000000000107e+01,1.453431156305935203e-02 +1.340000000000000036e+01,1.744680341266889589e-02 +1.360000000000000142e+01,2.109879629092459991e-02 +1.380000000000000071e+01,2.606311740530202481e-02 +1.400000000000000000e+01,3.287315719682380732e-02 +1.420000000000000107e+01,4.432466646629078938e-02 +1.440000000000000036e+01,8.046681918453256477e-02 +1.460000000000000142e+01,1.788680485638959039e-01 +1.480000000000000071e+01,2.231796522878605749e-01 +1.500000000000000000e+01,1.928581836423108598e-01 +1.520000000000000107e+01,5.709850524515758946e-02 +1.540000000000000036e+01,1.869215190745798783e-02 +1.560000000000000142e+01,9.583581029104165996e-03 +1.580000000000000071e+01,5.380588123318808674e-03 +1.600000000000000000e+01,3.121796469571514951e-03 +1.619999999999999929e+01,1.890214540704837111e-03 +1.640000000000000213e+01,1.244859161518756989e-03 +1.660000000000000142e+01,7.678625418601053030e-04 +1.680000000000000071e+01,5.667675110135960521e-04 +1.700000000000000000e+01,4.614177579630162349e-04 +1.719999999999999929e+01,3.731302082916656540e-04 +1.740000000000000213e+01,3.056688581981267003e-04 +1.760000000000000142e+01,2.815546198741710848e-04 +1.780000000000000071e+01,1.952679051332476218e-04 +1.800000000000000000e+01,1.268978048426270622e-04 +1.819999999999999929e+01,8.655490758627582579e-05 +1.840000000000000213e+01,6.450204047146248512e-05 +1.860000000000000142e+01,4.968883357220104031e-05 +1.880000000000000071e+01,4.121701474024942828e-05 +1.900000000000000000e+01,3.512035414239857552e-05 +1.920000000000000284e+01,3.039677569032945154e-05 +1.940000000000000213e+01,2.654926629507793750e-05 +1.960000000000000142e+01,2.465945669549134952e-05 +1.980000000000000071e+01,2.240233317686038544e-05 diff --git a/example/example_output/DA_cooling_model_from_plotter.png b/example/example_output/DA_cooling_model_from_plotter.png index df28b82..8f16706 100644 Binary files a/example/example_output/DA_cooling_model_from_plotter.png and b/example/example_output/DA_cooling_model_from_plotter.png differ diff --git a/example/example_output/DA_cooling_tracks.png b/example/example_output/DA_cooling_tracks.png index 9a046b7..c423499 100644 Binary files a/example/example_output/DA_cooling_tracks.png and b/example/example_output/DA_cooling_tracks.png differ diff --git a/example/example_output/DA_cooling_tracks_from_plotter.png b/example/example_output/DA_cooling_tracks_from_plotter.png index f00882f..680ad0a 100644 Binary files a/example/example_output/DA_cooling_tracks_from_plotter.png and b/example/example_output/DA_cooling_tracks_from_plotter.png differ diff --git a/example/example_output/PSOJ1801p6254.png b/example/example_output/PSOJ1801p6254.png index ecfdc4d..7c4908c 100644 Binary files a/example/example_output/PSOJ1801p6254.png and b/example/example_output/PSOJ1801p6254.png differ diff --git a/example/example_output/PSOJ1801p6254_emcee.png b/example/example_output/PSOJ1801p6254_emcee.png index 8903ea7..fd07fb0 100644 Binary files a/example/example_output/PSOJ1801p6254_emcee.png and b/example/example_output/PSOJ1801p6254_emcee.png differ diff --git a/example/example_output/PSOJ1801p6254_emcee_corner.png b/example/example_output/PSOJ1801p6254_emcee_corner.png index 13ad649..ae7ce3e 100644 Binary files a/example/example_output/PSOJ1801p6254_emcee_corner.png and b/example/example_output/PSOJ1801p6254_emcee_corner.png differ diff --git a/example/example_output/PSOJ1801p6254_least_squares.png b/example/example_output/PSOJ1801p6254_least_squares.png index 706ee4a..ba2ecad 100644 Binary files a/example/example_output/PSOJ1801p6254_least_squares.png and b/example/example_output/PSOJ1801p6254_least_squares.png differ diff --git a/example/example_output/burst_C16_C08_montreal_co_da_20_montreal_co_da_20_montreal_co_da_20.png b/example/example_output/burst_C16_C08_montreal_co_da_20_montreal_co_da_20_montreal_co_da_20.png index 6607c64..8d971a2 100644 Binary files a/example/example_output/burst_C16_C08_montreal_co_da_20_montreal_co_da_20_montreal_co_da_20.png and b/example/example_output/burst_C16_C08_montreal_co_da_20_montreal_co_da_20_montreal_co_da_20.png differ diff --git a/example/example_output/decay_C16_C08_montreal_co_da_20_montreal_co_da_20_montreal_co_da_20.png b/example/example_output/decay_C16_C08_montreal_co_da_20_montreal_co_da_20_montreal_co_da_20.png index a0c46ad..2c359ad 100644 Binary files a/example/example_output/decay_C16_C08_montreal_co_da_20_montreal_co_da_20_montreal_co_da_20.png and b/example/example_output/decay_C16_C08_montreal_co_da_20_montreal_co_da_20_montreal_co_da_20.png differ diff --git a/example/example_output/gaia_to_sdss_cc_diagram.png b/example/example_output/gaia_to_sdss_cc_diagram.png index 0646f11..e2dfa38 100644 Binary files a/example/example_output/gaia_to_sdss_cc_diagram.png and b/example/example_output/gaia_to_sdss_cc_diagram.png differ diff --git a/example/example_output/gaia_to_sdss_ugr_residual.png b/example/example_output/gaia_to_sdss_ugr_residual.png index 8f74217..5be27fc 100644 Binary files a/example/example_output/gaia_to_sdss_ugr_residual.png and b/example/example_output/gaia_to_sdss_ugr_residual.png differ diff --git a/example/example_output/gaia_to_sdss_ugr_residual_logg_teff.png b/example/example_output/gaia_to_sdss_ugr_residual_logg_teff.png index 7290957..673f978 100644 Binary files a/example/example_output/gaia_to_sdss_ugr_residual_logg_teff.png and b/example/example_output/gaia_to_sdss_ugr_residual_logg_teff.png differ diff --git a/example/example_output/input_model.pdf b/example/example_output/input_model.pdf index b0bde38..0ea9375 100644 Binary files a/example/example_output/input_model.pdf and b/example/example_output/input_model.pdf differ diff --git a/example/example_output/input_model.png b/example/example_output/input_model.png index 3ed56f8..147cfd8 100644 Binary files a/example/example_output/input_model.png and b/example/example_output/input_model.png differ diff --git a/example/example_output/wdlf_compare_sfr.png b/example/example_output/wdlf_compare_sfr.png index 4c36662..f1f5f8e 100644 Binary files a/example/example_output/wdlf_compare_sfr.png and b/example/example_output/wdlf_compare_sfr.png differ diff --git a/example/generate_cooling_tracks.py b/example/generate_cooling_tracks.py index ff9a221..20e69ca 100644 --- a/example/generate_cooling_tracks.py +++ b/example/generate_cooling_tracks.py @@ -8,7 +8,7 @@ from matplotlib import pyplot as plt import numpy as np -from WDPhotTools.atmosphere_model_reader import atm_reader +from WDPhotTools.atmosphere_model_reader import AtmosphereModelReader try: @@ -17,12 +17,12 @@ HERE = os.path.dirname(os.path.realpath(__name__)) -atm = atm_reader() +atm = AtmosphereModelReader() # Default passband is G3 -G = atm.interp_atm() -BP = atm.interp_atm(dependent="G3_BP") -RP = atm.interp_atm(dependent="G3_RP") +G = atm.interp_am() +BP = atm.interp_am(dependent="G3_BP") +RP = atm.interp_am(dependent="G3_RP") logg = np.arange(7.0, 9.5, 0.5) Mbol = np.arange(0.0, 20.0, 0.1) @@ -33,7 +33,7 @@ plt.plot( BP(logg_i, Mbol) - RP(logg_i, Mbol), G(logg_i, Mbol), - label=r"$\log(g) = {i}$", + label=rf"$\log(g) = {i}$", ) plt.ylim(20.0, 6.0) diff --git a/requirements.txt b/requirements.txt index df4092d..f8fc833 100644 --- a/requirements.txt +++ b/requirements.txt @@ -2,5 +2,5 @@ astropy corner emcee matplotlib -numpy<2.0 +numpy>=1.23,<3 scipy diff --git a/setup.cfg b/setup.cfg index 4406918..3830c4b 100644 --- a/setup.cfg +++ b/setup.cfg @@ -31,7 +31,7 @@ packages = find: include_package_data = True python_requires = >=3.10 install_requires = - numpy>=1.19, <2.0 + numpy>=1.23 scipy>=1.7.3 matplotlib>=3.5 emcee>=3.0 diff --git a/src/WDPhotTools/atmosphere_model_reader.py b/src/WDPhotTools/atmosphere_model_reader.py index 139bfa5..3b40094 100644 --- a/src/WDPhotTools/atmosphere_model_reader.py +++ b/src/WDPhotTools/atmosphere_model_reader.py @@ -287,6 +287,7 @@ def interp_am( interpolator="CT", kwargs_for_RBF={}, kwargs_for_CT={}, + allow_extrapolation=False, ): """ This function interpolates the grid of synthetic photometry and a few @@ -330,7 +331,7 @@ def interp_am( _kwargs_for_RBF.update(**kwargs_for_RBF) _kwargs_for_CT = { - "fill_value": -np.inf, + "fill_value": np.inf, "tol": 1e-10, "maxiter": 100000, "rescale": True, @@ -351,7 +352,7 @@ def interp_am( "provided {}.format(atmosphere.lower())" ) - independent = np.asarray(independent).reshape(-1) + independent = np.asarray(independent, dtype=object).reshape(-1) independent_list = self.column_key independent_list_lower_cases = np.char.lower(independent_list) @@ -404,24 +405,18 @@ def atmosphere_interpolator(_x): ) def atmosphere_interpolator(_x): - if isinstance(_x, (float, int)): - length = 1 - _logg = logg + _x_arr = np.asarray(_x).reshape(-1).astype(float) + length = _x_arr.size + _logg = np.full(length, logg, dtype=float) - else: - length = len(_x) - _logg = [logg] * length - - _logg = np.asarray(_logg) - _x = np.asarray(_x) - - _x[_x < arg_1_min] = arg_1_min - _x[_x > arg_1_max] = arg_1_max + if not allow_extrapolation: + _x_arr[_x_arr < arg_1_min] = arg_1_min + _x_arr[_x_arr > arg_1_max] = arg_1_max if independent[1] in ["Teff", "age"]: - _x = np.log10(_x) + _x_arr = np.log10(_x_arr) - return _atmosphere_interpolator(np.array([_logg, _x], dtype="object").T.reshape(length, 2)) + return _atmosphere_interpolator(np.column_stack((_logg, _x_arr))) else: raise ValueError("Interpolator should be CT or RBF, {interpolator} is given.") @@ -456,16 +451,60 @@ def atmosphere_interpolator(_x): **_kwargs_for_CT, ) - def atmosphere_interpolator(*x): - x_0, x_1 = np.asarray(x, dtype="object").reshape(-1) + def atmosphere_interpolator(x0, x1=None): + # Support scalar/array inputs for both coordinates, with simple broadcasting + if x1 is None: + arr = np.asarray(x0).reshape(-1) + if arr.size >= 2: + x_0, x_1 = arr[0], arr[1] + elif arr.size == 1: + x_0, x_1 = arr[0], arr[0] + else: + x_0, x_1 = -np.inf, -np.inf + else: + x_0, x_1 = x0, x1 + + if isinstance(x_0, (float, int, np.integer)): + length0 = 1 + else: + length0 = np.asarray(x_0).size + + if isinstance(x_1, (float, int, np.integer)): + length1 = 1 + else: + length1 = np.asarray(x_1).size + + if length0 == length1: + pass + elif (length0 == 1) and (length1 > 1): + x_0 = [x_0] * length1 + length0 = length1 + elif (length0 > 1) and (length1 == 1): + x_1 = [x_1] * length0 + length1 = length0 + else: + raise ValueError( + "Either one variable is a float, int or of size 1, or two variables should have the same" + "size." + ) + + _x_0 = np.asarray(x_0).reshape(-1).astype(float) + _x_1 = np.asarray(x_1).reshape(-1).astype(float) + + # mark out-of-range inputs to avoid excessive extrapolation + mask_oob = (_x_0 < arg_0_min) | (_x_0 > arg_0_max) | (_x_1 < arg_1_min) | (_x_1 > arg_1_max) if independent[0] in ["Teff", "age"]: - x_0 = np.log10(x_0) + _x_0 = np.log10(_x_0) if independent[1] in ["Teff", "age"]: - x_1 = np.log10(x_1) + _x_1 = np.log10(_x_1) - return _atmosphere_interpolator(x_0, x_1) + out = _atmosphere_interpolator(_x_0, _x_1) + out = np.asarray(out).reshape(-1) + if not allow_extrapolation and np.any(mask_oob): + out[mask_oob] = -np.inf + return out elif interpolator.lower() == "rbf": # Interpolate with the scipy RBFInterpolator @@ -476,17 +515,29 @@ def atmosphere_interpolator(*x): ) def atmosphere_interpolator(*x): - x_0, x_1 = np.asarray(x, dtype="object").reshape(-1) + # Accept (x0, x1) or single array-like; use first two values, duplicate if only one + if len(x) == 2: + x_0, x_1 = x + elif len(x) == 1: + arr = np.asarray(x[0]).reshape(-1) + if arr.size >= 2: + x_0, x_1 = arr[0], arr[1] + elif arr.size == 1: + x_0, x_1 = arr[0], arr[0] + else: + x_0, x_1 = -np.inf, -np.inf + else: + x_0, x_1 = -np.inf, -np.inf - if isinstance(x_0, (float, int, np.int32)): + if isinstance(x_0, (float, int, np.integer)): length0 = 1 else: - length0 = len(x_0) + length0 = np.asarray(x_0).size - if isinstance(x_1, (float, int, np.int32)): + if isinstance(x_1, (float, int, np.integer)): length1 = 1 else: - length1 = len(x_1) + length1 = np.asarray(x_1).size if length0 == length1: pass @@ -505,13 +556,11 @@ def atmosphere_interpolator(*x): "size." ) - _x_0 = np.asarray(x_0) - _x_1 = np.asarray(x_1) + _x_0 = np.asarray(x_0).reshape(-1).astype(float) + _x_1 = np.asarray(x_1).reshape(-1).astype(float) - _x_0[_x_0 < arg_0_min] = arg_0_min - _x_0[_x_0 > arg_0_max] = arg_0_max - _x_1[_x_1 < arg_1_min] = arg_1_min - _x_1[_x_1 > arg_1_max] = arg_1_max + # mark out-of-range inputs to avoid excessive extrapolation + mask_oob = (_x_0 < arg_0_min) | (_x_0 > arg_0_max) | (_x_1 < arg_1_min) | (_x_1 > arg_1_max) if independent[0] in ["Teff", "age"]: _x_0 = np.log10(_x_0) @@ -519,7 +568,11 @@ def atmosphere_interpolator(*x): if independent[1] in ["Teff", "age"]: _x_1 = np.log10(_x_1) - return _atmosphere_interpolator(np.array([_x_0, _x_1], dtype="object").T.reshape(length0, 2)) + out = _atmosphere_interpolator(np.column_stack((_x_0, _x_1))) + out = np.asarray(out).reshape(-1) + if np.any(mask_oob): + out[mask_oob] = -np.inf + return out else: raise ValueError("This should never happen.") diff --git a/src/WDPhotTools/cooling_model_reader.py b/src/WDPhotTools/cooling_model_reader.py index 7129847..01582b0 100644 --- a/src/WDPhotTools/cooling_model_reader.py +++ b/src/WDPhotTools/cooling_model_reader.py @@ -1705,6 +1705,7 @@ def compute_cooling_age_interpolator( scaling_factor=1.0, kwargs_for_RBF={}, kwargs_for_CT={}, + allow_extrapolation=False, ): """ Compute the callable CloughTocher2DInterpolator taking (logL, m) and returning the cooling time of the WDs. It @@ -1874,10 +1875,11 @@ def cooling_interpolator(x_0, x_1): if (_x_1.size == 1) & (_x_0.size > 1): _x_1 = np.repeat(_x_1, _x_0.size) - _x_0[_x_0 < lum_min] = lum_min - _x_0[_x_0 > lum_max] = lum_max - _x_1[_x_1 < mass_min] = mass_min - _x_1[_x_1 > mass_max] = mass_max + if not allow_extrapolation: + _x_0[_x_0 < lum_min] = lum_min + _x_0[_x_0 > lum_max] = lum_max + _x_1[_x_1 < mass_min] = mass_min + _x_1[_x_1 > mass_max] = mass_max length0 = _x_0.size @@ -1925,10 +1927,11 @@ def cooling_rate_interpolator(x_0, x_1): if (_x_1.size == 1) & (_x_0.size > 1): _x_0 = np.repeat(_x_1, _x_0.size) - _x_0[_x_0 < lum_min] = lum_min - _x_0[_x_0 > lum_max] = lum_max - _x_1[_x_1 < mass_min] = mass_min - _x_1[_x_1 > mass_max] = mass_max + if not allow_extrapolation: + _x_0[_x_0 < lum_min] = lum_min + _x_0[_x_0 > lum_max] = lum_max + _x_1[_x_1 < mass_min] = mass_min + _x_1[_x_1 > mass_max] = mass_max length0 = _x_0.size diff --git a/src/WDPhotTools/diff2_functions_least_square.py b/src/WDPhotTools/diff2_functions_least_square.py index c089798..387a9f3 100644 --- a/src/WDPhotTools/diff2_functions_least_square.py +++ b/src/WDPhotTools/diff2_functions_least_square.py @@ -20,7 +20,7 @@ def diff2( mag = [] for interp in interpolator_filter: - mag.append(interp(_x)) + mag.append(interp(_x[:2])) mag = np.asarray(mag).reshape(-1) @@ -30,16 +30,13 @@ def diff2( d2 = ((10.0 ** ((obs - mag - 5.0 * np.log10(distance) + 5.0) / 2.5) - 1.0) ** 2.0) / e2 - if np.isfinite(d2).all(): - if return_err: - return d2, e2 - else: - return d2 + # Ensure finite residuals + d2 = np.where(np.isfinite(d2), d2, np.float64(1e30)) + if return_err: + e2 = np.where(np.isfinite(e2), e2, np.float64(1e30)) + return d2, e2 else: - if return_err: - return np.ones_like(obs) * np.inf, np.ones_like(obs) * np.inf - else: - return np.ones_like(obs) * np.inf + return d2 def diff2_distance(_x, obs, errors, interpolator_filter, return_err): @@ -238,7 +235,7 @@ def diff2_distance_red_filter( else: extinction_fraction = get_extinction_fraction(_x[-1], ra, dec, zmin, zmax) - teff = float(interpolator_teff(_x[:2])) + teff = float(np.asarray(interpolator_teff(_x[:2])).reshape(-1)[0]) logg = _x[logg_pos] av = np.array([i([logg, teff, rv]) for i in reddening_vector]).reshape(-1) * ebv * extinction_fraction mag = np.asarray(mag).reshape(-1) @@ -300,7 +297,7 @@ def diff2_distance_red_filter_fixed_logg( else: extinction_fraction = get_extinction_fraction(_x[-1], ra, dec, zmin, zmax) - teff = float(interpolator_teff(_x[:-1])) + teff = float(np.asarray(interpolator_teff(_x[:-1])).reshape(-1)[0]) av = np.array([i([logg, teff, rv]) for i in reddening_vector]).reshape(-1) * ebv * extinction_fraction mag = np.asarray(mag).reshape(-1) e2 = errors**2.0 @@ -408,7 +405,7 @@ def diff2_red_filter( for interp in interpolator_filter: mag.append(interp(_x)) - teff = float(interpolator_teff(_x)) + teff = float(np.asarray(interpolator_teff(_x)).reshape(-1)[0]) if not np.isfinite(teff): if return_err: @@ -483,7 +480,7 @@ def diff2_red_filter_fixed_logg( else: extinction_fraction = get_extinction_fraction(distance, ra, dec, zmin, zmax) - teff = float(interpolator_teff(_x)) + teff = float(np.asarray(interpolator_teff(_x)).reshape(-1)[0]) av = np.array([i([logg, teff, rv]) for i in reddening_vector]).reshape(-1) * ebv * extinction_fraction mag = np.asarray(mag).reshape(-1) diff --git a/src/WDPhotTools/fitter.py b/src/WDPhotTools/fitter.py index ac1fd53..bd6ed76 100644 --- a/src/WDPhotTools/fitter.py +++ b/src/WDPhotTools/fitter.py @@ -116,6 +116,41 @@ def set_extinction_mode(self, mode="total", z_min=100.0, z_max=250.0): else: raise ValueError("Unknown extinction mode: {mode}.") + def _clip_to_grid(self, coords, independent, atmosphere): + coords = np.array(coords, dtype=float).reshape(-1) + model = self.model_da if str(atmosphere).lower() in ("h", "hydrogen", "da") else self.model_db + keys = list(independent)[: coords.size] + for k in range(coords.size): + col = keys[k] + if col in self.column_names: + grid = np.asarray(model[col], dtype=float) + finite = np.isfinite(grid) + if not np.any(finite): + continue + gmin = float(np.min(grid[finite])) + gmax = float(np.max(grid[finite])) + val = float(coords[k]) + if not np.isfinite(val): + coords[k] = gmin + else: + coords[k] = min(max(val, gmin), gmax) + return coords + + def _grid_bounds(self, independent, atmosphere): + model = self.model_da if str(atmosphere).lower() in ("h", "hydrogen", "da") else self.model_db + bounds = [] + for col in independent: + if col in self.column_names: + grid = np.asarray(model[col], dtype=float) + finite = np.isfinite(grid) + if np.any(finite): + bounds.append((float(np.min(grid[finite])), float(np.max(grid[finite])))) + else: + bounds.append((-np.inf, np.inf)) + else: + bounds.append((-np.inf, np.inf)) + return bounds + def _interp_am( self, dependent, @@ -125,6 +160,7 @@ def _interp_am( interpolator, kwargs_for_RBF, kwargs_for_CT, + allow_extrapolation, ): """ Internal method to interpolate the atmosphere grid models using the atmosphere_model_reader. @@ -139,6 +175,7 @@ def _interp_am( interpolator=interpolator, kwargs_for_RBF=kwargs_for_RBF, kwargs_for_CT=kwargs_for_CT, + allow_extrapolation=allow_extrapolation, ) return _interpolator @@ -187,6 +224,7 @@ def fit( kwargs_for_minimize={}, kwargs_for_least_squares={}, kwargs_for_emcee={}, + allow_extrapolation=False, ): """ The method to execute a photometric fit. Pure hydrogen and helium atmospheres fitting are supported. See @@ -284,7 +322,7 @@ def fit( "rescale": True, } _kwargs_for_minimize = {"method": "Powell", "options": {"tol": 0.001}} - _kwargs_for_least_squares = {"method": "lm"} + _kwargs_for_least_squares = {} _kwargs_for_emcee = {} _kwargs_for_RBF.update(**kwargs_for_RBF) @@ -309,8 +347,8 @@ def fit( if isinstance(initial_guess, np.ndarray): initial_guess = list(initial_guess.reshape(-1)) - if isinstance(distance, (float, int, np.float32, np.float64)): - if not isinstance(distance_err, (float, int, np.float32, np.float64)): + if isinstance(distance, (float, int, np.floating)): + if not isinstance(distance_err, (float, int, np.floating)): distance_err = np.sqrt(distance) if distance is None: @@ -319,11 +357,10 @@ def fit( # Mask the data and interpolator if set to detect None if allow_none: - # element-wise comparison with None, so using != - mask = np.array(mags) != np.array([None]) - mags = np.array(mags, dtype=float)[mask] - mag_errors = np.array(mag_errors, dtype=float)[mask] - filters = np.array(filters)[mask] + mask = np.array([m is not None for m in mags], dtype=bool) + mags = np.asarray(mags, dtype=float)[mask] + mag_errors = np.asarray(mag_errors, dtype=float)[mask] + filters = np.asarray(filters, dtype=object)[mask] else: mags = np.array(mags, dtype=float) @@ -341,6 +378,29 @@ def fit( kernel=kernel, ) + # Adjust initial_guess to nearest grid values only if extrapolation is not allowed + if not allow_extrapolation: + atm0 = atmosphere[0] if isinstance(atmosphere, list) else atmosphere + model = self.model_da if str(atm0).lower() in ("h", "hydrogen", "da") else self.model_db + indep = list(independent) if isinstance(independent, (list, tuple, np.ndarray)) else [independent] + ig = list(initial_guess) + for idx, key in enumerate(indep[: len(ig)]): + col = key if key in self.column_names else str(key) + if col not in self.column_names: + continue + grid_vals = np.asarray(model[col], dtype=float) + # pick nearest finite grid value to user's guess + diffs = np.abs(grid_vals - float(ig[idx])) + # ignore NaNs + diffs[~np.isfinite(diffs)] = np.inf + nearest_idx = int(np.argmin(diffs)) + ig[idx] = float(grid_vals[nearest_idx]) + print( + "Because extrapolation is not allowed in the initial guess(es) are outside the grid, initial_guess " + f"is updated from {initial_guess} to {ig}." + ) + initial_guess = ig + # Reuse the interpolator if instructed or possible # The +4 is to account for ['Teff', 'mass', 'Mbol', 'age'] if ( @@ -365,6 +425,7 @@ def fit( interpolator=atmosphere_interpolator, kwargs_for_RBF=_kwargs_for_RBF, kwargs_for_CT=_kwargs_for_CT, + allow_extrapolation=allow_extrapolation, ) # Store the fitting params @@ -400,7 +461,8 @@ def fit( } if "logg" in independent: - logg_pos = int(np.argwhere(np.array(self.fitting_params["independent"]) == "logg")) + logg_pos_arr = np.where(np.array(self.fitting_params["independent"]) == "logg")[0] + logg_pos = int(logg_pos_arr[0]) if logg_pos_arr.size > 0 else None # If using the scipy.optimize.minimize() if method == "minimize": @@ -559,7 +621,8 @@ def fit( else: if "logg" in independent: - logg_pos = int(np.argwhere(np.array(self.fitting_params["independent"]) == "logg")) + _arr = np.where(np.array(self.fitting_params["independent"]) == "logg")[0] + logg_pos = int(_arr[0]) if _arr.size > 0 else None self.results[j] = optimize.minimize( diff2_red_filter_summed, initial_guess, @@ -627,11 +690,13 @@ def fit( # Get the fitted parameters, the content of results vary # depending on the choise of minimizer. for i in filters: - # the [:2] is to separate the distance from the filters + # build coords (first two params) and clip if extrapolation disallowed if len(independent) == 1: - self.best_fit_params[j][i] = float(self.interpolator[j][i](self.results[j].x[0])) + coords = [self.results[j].x[0]] else: - self.best_fit_params[j][i] = float(self.interpolator[j][i](self.results[j].x[:2])) + coords = list(self.results[j].x[:2]) + coords = self._clip_to_grid(coords, independent, j) + self.best_fit_params[j][i] = np.asarray(self.interpolator[j][i](coords)).item() if distance is None: self.best_fit_params[j]["distance"] = self.results[j].x[-1] @@ -652,7 +717,19 @@ def fit( # distance simultaneously using an assumed logg as provided if distance is None: if ebv <= 0.0: - # with or without logg takes the same for, it is handled in the interpolator + # enforce bounds away from grid edges when not allowing extrapolation + bounds = (-np.inf, np.inf) + if not allow_extrapolation: + lohi = np.array(self._grid_bounds(independent, j)) + # small epsilon away from edges + eps = 1e-6 + lb = lohi[:, 0] + eps + ub = lohi[:, 1] - eps + bounds = ( + (lb.tolist() + [1.0], ub.tolist() + [10000.0]) + if len(initial_guess) > 1 + else (lb[0], ub[0]) + ) self.results[j] = optimize.least_squares( diff2_distance, initial_guess, @@ -662,6 +739,7 @@ def fit( [self.interpolator[j][i] for i in filters], False, ), + bounds=bounds, **_kwargs_for_least_squares, ) @@ -758,6 +836,13 @@ def fit( # If distance is provided, fit here. else: if ebv <= 0.0: + bounds = (-np.inf, np.inf) + if not allow_extrapolation: + lohi = np.array(self._grid_bounds(independent, j)) + eps = 1e-6 + lb = lohi[:, 0] + eps + ub = lohi[:, 1] - eps + bounds = (lb.tolist(), ub.tolist()) self.results[j] = optimize.least_squares( diff2, initial_guess, @@ -769,6 +854,7 @@ def fit( [self.interpolator[j][i] for i in filters], False, ), + bounds=bounds, **_kwargs_for_least_squares, ) @@ -862,7 +948,7 @@ def fit( if distance is None: self.best_fit_params[j][independent[0] + "_err"] = float(_stdev[0]) else: - self.best_fit_params[j][independent[0] + "_err"] = float(_stdev) + self.best_fit_params[j][independent[0] + "_err"] = float(np.asarray(_stdev).reshape(-1)[0]) self.best_fit_params[j]["logg"] = logg else: @@ -875,9 +961,9 @@ def fit( for i in filters: # the [:2] is to separate the distance from the filters if len(independent) == 1: - self.best_fit_params[j][i] = float(self.interpolator[j][i](self.results[j].x[0])) + self.best_fit_params[j][i] = np.asarray(self.interpolator[j][i](self.results[j].x[0])).item() else: - self.best_fit_params[j][i] = float(self.interpolator[j][i](self.results[j].x[:2])) + self.best_fit_params[j][i] = np.asarray(self.interpolator[j][i](self.results[j].x[:2])).item() if distance is None: self.best_fit_params[j]["distance"] = self.results[j].x[-1] @@ -1187,17 +1273,17 @@ def fit( # depending on the choise of minimizer. for i in filters: if len(independent) == 1: - self.best_fit_params[j][i] = float( + self.best_fit_params[j][i] = np.asarray( self.interpolator[j][i](self.best_fit_params[j][independent[0]]) - ) + ).item() else: - self.best_fit_params[j][i] = float( + self.best_fit_params[j][i] = np.asarray( self.interpolator[j][i]( self.best_fit_params[j][independent[0]], self.best_fit_params[j][independent[1]], ) - ) + ).item() if distance is None: self.best_fit_params[j]["distance"] = np.percentile(self.samples[j].T[-1], 50.0) @@ -1223,17 +1309,35 @@ def fit( for name in ["Teff", "mass", "Mbol", "age"]: if len(independent) == 1: - self.best_fit_params[j][name] = float( - self.interpolator[j][name](self.best_fit_params[j][independent[0]]) - ) - + _coords = [self.best_fit_params[j][independent[0]]] else: - self.best_fit_params[j][name] = float( - self.interpolator[j][name]( - self.best_fit_params[j][independent[0]], - self.best_fit_params[j][independent[1]], - ) - ) + _coords = [ + self.best_fit_params[j][independent[0]], + self.best_fit_params[j][independent[1]], + ] + + _coords = self._clip_to_grid(_coords, independent, j) + val = np.asarray(self.interpolator[j][name](_coords)).item() + if (name == "Teff") and (not np.isfinite(val)): + # snap to nearest finite grid values and re-evaluate + snap = [] + model = self.model_da if str(j).lower() in ("h", "hydrogen", "da") else self.model_db + for k, col in enumerate(independent[: len(_coords)]): + grid = np.asarray(model[col], dtype=float) + dif = np.abs(grid - float(_coords[k])) + dif[~np.isfinite(dif)] = np.inf + idx = int(np.argmin(dif)) + snap.append(float(grid[idx])) + val = np.asarray(self.interpolator[j][name](snap)).item() + if not np.isfinite(val): + # final fallback: use grid boundary + bounds = [] + for k, col in enumerate(independent[: len(_coords)]): + grid = np.asarray(model[col], dtype=float) + finite = np.isfinite(grid) + bounds.append(float(np.min(grid[finite]))) + val = np.asarray(self.interpolator[j][name](bounds)).item() + self.best_fit_params[j][name] = val if rv > 0.0: if self.extinction_convolved: diff --git a/src/WDPhotTools/plotter.py b/src/WDPhotTools/plotter.py index a3e3860..a65bb87 100644 --- a/src/WDPhotTools/plotter.py +++ b/src/WDPhotTools/plotter.py @@ -432,7 +432,7 @@ def plot_cooling_model( x_out.append(cooling_model[i][x]) y_out.append(cooling_model[i][y]) - label = "Mass = {mass:.2f}" + label = f"Mass = {mass:.2f}" axes.plot(x_out[i], y_out[i], label=label, **kwargs_for_plot) if log_x: diff --git a/test/test_atmosphere_interpolator_shapes.py b/test/test_atmosphere_interpolator_shapes.py new file mode 100644 index 0000000..41512e7 --- /dev/null +++ b/test/test_atmosphere_interpolator_shapes.py @@ -0,0 +1,33 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- + +import numpy as np +import pytest + +from WDPhotTools.atmosphere_model_reader import AtmosphereModelReader + + +def test_interp_am_invalid_interpolator(): + atm = AtmosphereModelReader() + with pytest.raises(ValueError): + atm.interp_am(dependent="G3", atmosphere="H", independent=["Mbol"], interpolator="bad") + + +def test_interp_am_rbf_1d_scalar_and_array(): + atm = AtmosphereModelReader() + itp = atm.interp_am(dependent="G3", atmosphere="H", independent=["Mbol"], logg=8.0, interpolator="RBF") + # scalar input + val_scalar = itp(10.0) + # vector input + val_array = itp(np.array([10.0, 12.0, 14.0])) + assert np.isscalar(np.asarray(val_scalar).item()) + assert np.asarray(val_array).shape == (3,) + + +def test_interp_am_rbf_2d_broadcast_lengths(): + atm = AtmosphereModelReader() + itp = atm.interp_am(dependent="G3", atmosphere="H", independent=["logg", "Mbol"], interpolator="RBF") + logg = [8.0] + mbol = [10.0, 12.0, 14.0] + out = itp(logg, mbol) + assert np.asarray(out).shape == (3,) diff --git a/test/test_datafiles_coverage.py b/test/test_datafiles_coverage.py new file mode 100644 index 0000000..3266f5f --- /dev/null +++ b/test/test_datafiles_coverage.py @@ -0,0 +1,88 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- + +import os +import re +import numpy as np +import pytest +from importlib.resources import files + + +def _repo_path(*parts): + return str(files("WDPhotTools").joinpath(*parts)) + + +def _load_numeric_table(path, delimiter=None): + num_re = re.compile(r"[+\-]?\d*\.?\d+(?:[eE][+\-]?\d+)?") + rows = [] + with open(path, "r", encoding="utf-8", errors="ignore") as f: + for i in f: + if re.match(r"^[=\-\s]*$", i): + continue + nums = [float(m.group(0)) for m in num_re.finditer(i)] + if len(nums) >= 2: + rows.append(nums) + if not rows: + raise AssertionError(f"No numeric lines detected in {path}") + lengths = {} + for r in rows: + lengths[len(r)] = lengths.get(len(r), 0) + 1 + target_len = max(lengths, key=lengths.get) + filtered = [r[:target_len] for r in rows if len(r) >= target_len] + return np.array(filtered, dtype=float) + + +@pytest.mark.parametrize( + "fname", + [ + # ms_lifetime CSVs + os.path.join(_repo_path("ms_lifetime"), f) + for f in os.listdir(_repo_path("ms_lifetime")) + if f.endswith(".csv") + ], +) +def test_ms_lifetime_csv_loads(fname): + dt = np.loadtxt(fname, delimiter=",") + assert dt.ndim == 2 and dt.shape[0] > 0 and dt.shape[1] > 0 + + +@pytest.mark.parametrize( + "fname", + [ + # extinction CSVs + os.path.join(_repo_path("extinction"), f) + for f in os.listdir(_repo_path("extinction")) + if f.endswith(".csv") + ], +) +def test_extinction_csv_loads(fname): + dt = np.loadtxt(fname, delimiter=",") + assert dt.ndim == 2 and dt.shape[0] > 0 and dt.shape[1] > 0 + + +@pytest.mark.parametrize( + "fname", + [ + # wd_cooling bedard20 txts + os.path.join(_repo_path("wd_cooling", "bedard20"), f) + for f in os.listdir(_repo_path("wd_cooling", "bedard20")) + if f.endswith(".txt") + ], +) +def test_wd_cooling_bedard20_txt_loads(fname): + dt = _load_numeric_table(fname) + assert dt.ndim == 2 and dt.shape[0] > 0 and dt.shape[1] > 0 + + +@pytest.mark.parametrize( + "fname", + [ + # wd_photometry tables + os.path.join(_repo_path("wd_photometry"), f) + for f in os.listdir(_repo_path("wd_photometry")) + if f.endswith(".txt") + ], +) +def test_wd_photometry_txt_loads(fname): + dt = _load_numeric_table(fname) + assert dt.ndim == 2 and dt.shape[0] > 0 and dt.shape[1] > 0 diff --git a/test/test_diff2_functions_edges.py b/test/test_diff2_functions_edges.py new file mode 100644 index 0000000..dbf02a2 --- /dev/null +++ b/test/test_diff2_functions_edges.py @@ -0,0 +1,70 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- + +import numpy as np + +from WDPhotTools.diff2_functions_least_square import ( + diff2, + diff2_distance_red_filter, + diff2_distance_red_filter_fixed_logg, +) + + +def _const_interp(val): + return lambda *_: float(val) + + +def test_diff2_basic_shapes(): + interps = [_const_interp(10.0) for _ in range(3)] + obs = np.array([10.0, 10.5, 11.0]) + err = np.array([0.1, 0.1, 0.1]) + d2, e2 = diff2(np.array([0.0]), obs, err, 10.0, 0.1, interps, True) + assert d2.shape == obs.shape and e2.shape == obs.shape + + +def test_diff2_distance_red_filter_invalid_distance_returns_inf(): + interps = [_const_interp(10.0) for _ in range(2)] + teff_itp = _const_interp(10000.0) + redv = [_const_interp(0.0) for _ in range(2)] + d2, e2 = diff2_distance_red_filter( + np.array([8.0, 10.0, -1.0]), + np.array([11.0, 12.0]), + np.array([0.1, 0.1]), + interps, + teff_itp, + 0, # logg_pos + 3.1, + "total", + redv, + 0.0, + None, + None, + None, + None, + True, + ) + assert np.isinf(d2).all() and np.isinf(e2).all() + + +def test_diff2_distance_red_filter_fixed_logg_invalid_distance_returns_inf(): + interps = [_const_interp(10.0) for _ in range(2)] + teff_itp = _const_interp(10000.0) + redv = [_const_interp(0.0) for _ in range(2)] + d2, e2 = diff2_distance_red_filter_fixed_logg( + np.array([8.0, 10.0, -1.0]), + np.array([11.0, 12.0]), + np.array([0.1, 0.1]), + interps, + teff_itp, + 8.0, + 3.1, + "total", + redv, + 0.0, + None, + None, + None, + None, + True, + ) + assert np.isinf(d2).all() and np.isinf(e2).all() diff --git a/test/test_fitter_ct.py b/test/test_fitter_ct.py index 599c18d..d0a9556 100644 --- a/test/test_fitter_ct.py +++ b/test/test_fitter_ct.py @@ -1147,9 +1147,9 @@ def test_emcee_teff_logg_distance(): atmosphere_interpolator="CT", initial_guess=[13000.0, 7.5, 10.0], refine=False, - nwalkers=20, - nsteps=1000, - nburns=100, + nwalkers=50, + nsteps=5000, + nburns=500, ) assert np.isclose( ftr31.best_fit_params["H"]["Teff"], @@ -1304,9 +1304,9 @@ def test_emcee_teff_logg_distance_reddening(): atmosphere_interpolator="CT", initial_guess=[13000.0, 7.5, 10.0], refine=False, - nwalkers=20, - nsteps=1000, - nburns=100, + nwalkers=50, + nsteps=5000, + nburns=500, rv=RV, ebv=EBV, ) diff --git a/test/test_fitter_extrpolation.py b/test/test_fitter_extrpolation.py new file mode 100644 index 0000000..37ca7ad --- /dev/null +++ b/test/test_fitter_extrpolation.py @@ -0,0 +1,139 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- + +import numpy as np +import pytest + +from WDPhotTools.fitter import WDfitter + + +# testing with logg=7.5 and Teff=13000. +mags = np.array([10.882, 10.853, 10.946, 11.301, 11.183]) +mag_errors = np.array([0.01, 0.01, 0.01, 0.01, 0.01]) +filters = np.array(["G3", "G3_BP", "G3_RP", "FUV", "NUV"]) + + +# The most basic cases +@pytest.mark.parametrize("allow_extrapolation", [False, True]) +def test_fitter_extrapolation_rbf(allow_extrapolation): + f = WDfitter() + f.fit( + atmosphere=["H"], + filters=filters, + mags=mags, + mag_errors=mag_errors, + distance=10.0, + distance_err=1.0, + independent=["Mbol", "logg"], + initial_guess=[12.0, 8.0], + atmosphere_interpolator="RBF", + method="least_squares", + allow_extrapolation=allow_extrapolation, + ) + assert np.isclose( + f.best_fit_params["H"]["Teff"], + 13000.0, + rtol=1e-01, + atol=1e-01, + ) + assert np.isclose( + f.best_fit_params["H"]["logg"], + 7.5, + rtol=1e-01, + atol=1e-01, + ) + + +@pytest.mark.parametrize("allow_extrapolation", [False, True]) +def test_fitter_extrapolation_ct(allow_extrapolation): + f = WDfitter() + f.fit( + atmosphere=["H"], + filters=filters, + mags=mags, + mag_errors=mag_errors, + distance=10.0, + distance_err=1.0, + independent=["Mbol", "logg"], + initial_guess=[12.0, 8.0], + atmosphere_interpolator="CT", + method="least_squares", + allow_extrapolation=allow_extrapolation, + ) + assert np.isclose( + f.best_fit_params["H"]["Teff"], + 13000.0, + rtol=1e-01, + atol=1e-01, + ) + assert np.isclose( + f.best_fit_params["H"]["logg"], + 7.5, + rtol=1e-01, + atol=1e-01, + ) + + +# Test for actual extrapolation behavior with Mbol initial guess significantly outside grid +@pytest.mark.parametrize( + "allow_extrapolation", [pytest.param(False, marks=pytest.mark.xfail(reason="intial guess outside of grid")), True] +) +def test_fitter_extrapolation_rbf_initial_guess_outisde_grid(allow_extrapolation): + f = WDfitter() + f.fit( + atmosphere=["H"], + filters=filters, + mags=mags, + mag_errors=mag_errors, + distance=10.0, + distance_err=1.0, + independent=["Mbol", "logg"], + initial_guess=[5.0, 8.0], + atmosphere_interpolator="RBF", + method="least_squares", + allow_extrapolation=allow_extrapolation, + ) + assert np.isclose( + f.best_fit_params["H"]["Teff"], + 13000.0, + rtol=1e-01, + atol=1e-01, + ) + assert np.isclose( + f.best_fit_params["H"]["logg"], + 7.5, + rtol=1e-01, + atol=1e-01, + ) + + +@pytest.mark.parametrize( + "allow_extrapolation", [pytest.param(False, marks=pytest.mark.xfail(reason="intial guess outside of grid")), True] +) +def test_fitter_extrapolation_ct_initial_guess_outisde_grid(allow_extrapolation): + f = WDfitter() + f.fit( + atmosphere=["H"], + filters=filters, + mags=mags, + mag_errors=mag_errors, + distance=10.0, + distance_err=1.0, + independent=["Mbol", "logg"], + initial_guess=[5.0, 8.0], + atmosphere_interpolator="CT", + method="least_squares", + allow_extrapolation=allow_extrapolation, + ) + assert np.isclose( + f.best_fit_params["H"]["Teff"], + 13000.0, + rtol=1e-01, + atol=1e-01, + ) + assert np.isclose( + f.best_fit_params["H"]["logg"], + 7.5, + rtol=1e-01, + atol=1e-01, + ) diff --git a/test/test_theoretical_lf_errors.py b/test/test_theoretical_lf_errors.py new file mode 100644 index 0000000..cc58826 --- /dev/null +++ b/test/test_theoretical_lf_errors.py @@ -0,0 +1,21 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- + +import numpy as np +import pytest + +from WDPhotTools.theoretical_lf import WDLF + + +def test_set_ms_model_invalid(): + wdlf = WDLF() + with pytest.raises(ValueError): + wdlf.set_ms_model("NOT_A_MODEL") + + +def test_compute_density_manual_sfr_smoke(): + wdlf = WDLF() + wdlf.set_sfr_model(mode="manual", sfr_model=lambda t: 1.0 if t > 0 else 0.0, age=1e9) + mag = np.linspace(5, 15, 5) + edges, density = wdlf.compute_density(mag) + assert edges.size == density.size diff --git a/test/test_util_extra.py b/test/test_util_extra.py new file mode 100644 index 0000000..0b5ca8e --- /dev/null +++ b/test/test_util_extra.py @@ -0,0 +1,38 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- + +import numpy as np +import pytest + +from WDPhotTools.util import get_uncertainty_least_squares, get_uncertainty_emcee, load_ms_lifetime_datatable + + +class DummyRes: + def __init__(self, jac): + self.jac = jac + + +def test_get_uncertainty_least_squares_degenerate(): + # Rank-deficient Jacobian should still return finite stdevs for well-conditioned cols + J = np.array([[1.0, 0.0], [0.0, 0.0]]) # second column zero -> singular + res = DummyRes(J) + stdev = get_uncertainty_least_squares(res) + assert np.isfinite(stdev[0]) + assert stdev.shape[0] == 2 + + +def test_get_uncertainty_emcee_shapes(): + # 1D samples + s1 = np.random.normal(size=1000) + lo_hi = get_uncertainty_emcee(s1) + assert lo_hi.shape == (2,) + # 2D samples (flattening behavior) + s2 = np.random.normal(size=(50, 20)) + lo_hi2 = get_uncertainty_emcee(s2) + assert lo_hi2.shape == (2,) + + +def test_load_ms_lifetime_datatable_smoke(): + # Pick a known CSV key from mapping in WDLF, ensure file loads + dt = load_ms_lifetime_datatable("PARSECz0017.csv") + assert dt.ndim == 2 and dt.shape[1] >= 2