diff --git a/.github/workflows/python-app.yml b/.github/workflows/python-app.yml index 65b352246..f8c33bedf 100644 --- a/.github/workflows/python-app.yml +++ b/.github/workflows/python-app.yml @@ -22,6 +22,8 @@ jobs: python-version: 3.9 - name: Install dependencies run: | + sudo apt install texlive-latex-extra + sudo apt-get install dvipng texlive-latex-extra texlive-fonts-recommended cm-super python -m pip install --upgrade pip pip install flake8 pytest if [ -f requirements.txt ]; then pip install -r requirements.txt; fi diff --git a/redback/plotting.py b/redback/plotting.py index 5fbdfe0cc..67c02d524 100644 --- a/redback/plotting.py +++ b/redback/plotting.py @@ -92,16 +92,18 @@ def _get_times(self, axes: matplotlib.axes.Axes) -> np.ndarray: @property def xlim_low(self): - xlim_low = 0.5 * self.transient.x[0] - if xlim_low == 0: - xlim_low += 1e-3 - return xlim_low + default = 0.5 * self.transient.x[0] + if default == 0: + default += 1e-3 + return self.kwargs.get("xlim_low", default) @property def xlim_high(self): if self.x_err is None: - return 2 * self.transient.x[-1] - return 2 * (self.transient.x[-1] + self.x_err[1][-1]) + default = 2 * self.transient.x[-1] + else: + default = 2 * (self.transient.x[-1] + self.x_err[1][-1]) + return self.kwargs.get("xlim_high", default) @property def ylim_low(self): @@ -277,12 +279,32 @@ def colors(self): @property def xlabel(self): - return self.kwargs.get("xlabel", self.transient.xlabel) + if self.transient.use_phase_model: + default = f"Time since {self.reference_mjd_date} MJD [days]" + else: + default = self.transient.xlabel + return self.kwargs.get("xlabel", default) @property def ylabel(self): return self.kwargs.get("ylabel", self.transient.ylabel) + @property + def xlim_low(self): + if self.transient.use_phase_model: + default = (self.transient.x[0] - self.reference_mjd_date) * 0.9 + else: + default = 0.5 * self.transient.x[0] + return self.kwargs.get("xlim_low", default) + + @property + def xlim_high(self): + if self.transient.use_phase_model: + default = (self.transient.x[-1] - self.reference_mjd_date) * 1.1 + else: + default = 1.2 * self.transient.x[-1] + return self.kwargs.get("xlim_high", default) + def _get_x_err(self, indices): return self.transient.x_err[indices] if self.transient.x_err is not None else self.transient.x_err @@ -300,6 +322,11 @@ def _set_y_axis_multiband_data(self, axis, indices): ncols = KwargsAccessorWithDefault("ncols", 2) + def _set_xaxis(self, axes): + if self.transient.use_phase_model: + axes.set_xscale("log") + axes.set_xlim(self.xlim_low, self.xlim_high) + @property def nrows(self): default = int(np.ceil(len(self.filters) / 2)) @@ -318,6 +345,12 @@ def figsize(self): default = (4 + 4 * self.ncols, 2 + 2 * self.nrows) return self._get_kwarg_with_default("figsize", default=default) + @property + def reference_mjd_date(self): + if self.transient.use_phase_model: + return self.kwargs.get("reference_mjd_date", int(self.transient.x[0])) + return 0 + def plot_data( self, axes: matplotlib.axes.Axes = None, save: bool = True, show: bool = True) -> None: """ @@ -349,11 +382,12 @@ def plot_data( if isinstance(label, float): label = f"{label:.2e}" ax.errorbar( - self.transient.x[indices], self.transient.y[indices], xerr=self._get_x_err(indices), - yerr=self.transient.y_err[indices], fmt=self.errorbar_fmt, ms=self.ms, color=color, + self.transient.x[indices] - self.reference_mjd_date, self.transient.y[indices], + xerr=self._get_x_err(indices), yerr=self.transient.y_err[indices], + fmt=self.errorbar_fmt, ms=self.ms, color=color, elinewidth=self.elinewidth, capsize=self.capsize, label=label) - ax.set_xlim(0.5 * self.transient.x[0], 1.2 * self.transient.x[-1]) + self._set_xaxis(axes=ax) self._set_y_axis_data(ax) ax.set_xlabel(self.xlabel) @@ -394,11 +428,11 @@ def plot_lightcurve( frequency = redback.utils.bands_to_frequency([band]) self.model_kwargs["frequency"] = np.ones(len(times)) * frequency ys = self.model(times, **self.max_like_params, **self.model_kwargs) - axes.plot(times, ys, color=color, alpha=0.65, lw=2) + axes.plot(times - self.reference_mjd_date, ys, color=color, alpha=0.65, lw=2) for params in random_params: ys = self.model(times, **params, **self.model_kwargs) - axes.plot(times, ys, color='red', alpha=0.05, lw=2, zorder=-1) + axes.plot(times - self.reference_mjd_date, ys, color='red', alpha=0.05, lw=2, zorder=-1) self._save_and_show(filepath=self.lightcurve_plot_filepath, save=save, show=show) return axes @@ -455,11 +489,12 @@ def plot_multiband( label = self._get_multiband_plot_label(band, freq) axes[i].errorbar( - self.transient.x[indices], self.transient.y[indices], xerr=x_err, yerr=self.transient.y_err[indices], - fmt=self.errorbar_fmt, ms=self.ms, color=color, elinewidth=self.elinewidth, capsize=self.capsize, + self.transient.x[indices] - self.reference_mjd_date, self.transient.y[indices], xerr=x_err, + yerr=self.transient.y_err[indices], fmt=self.errorbar_fmt, ms=self.ms, color=color, + elinewidth=self.elinewidth, capsize=self.capsize, label=label) - axes[i].set_xlim(0.5 * self.transient.x[indices][0], 1.2 * self.transient.x[indices][-1]) + self._set_xaxis(axes[i]) self._set_y_axis_multiband_data(axes[i], indices) axes[i].legend(ncol=2) axes[i].tick_params(axis='both', which='major', pad=8) @@ -525,10 +560,10 @@ def plot_multiband_lightcurve( for i in range(len(ys)): axes[i].plot( - times, ys[i], color=self.max_likelihood_color, alpha=self.max_likelihood_alpha, lw=self.linewidth) + times - self.reference_mjd_date, ys[i], color=self.max_likelihood_color, alpha=self.max_likelihood_alpha, lw=self.linewidth) for random_ys in random_ys_list: axes[i].plot( - times, random_ys[i], color=self.random_sample_color, + times - self.reference_mjd_date, random_ys[i], color=self.random_sample_color, alpha=self.random_sample_alpha, lw=self.linewidth, zorder=self.zorder) self._save_and_show(filepath=self.multiband_lightcurve_plot_filepath, save=save, show=show) diff --git a/redback/priors/basic_magnetar_powered.prior b/redback/priors/basic_magnetar_powered.prior index 7b545707f..70958705f 100644 --- a/redback/priors/basic_magnetar_powered.prior +++ b/redback/priors/basic_magnetar_powered.prior @@ -1,6 +1,6 @@ redshift = Uniform(1e-6,3,name='redshift', latex_label = r'$z$') p0 = Uniform(1, 10, 'p0', latex_label = r'$P_{0}$ [ms]') -bp = LogUniform(0.1,10,'bp',latex_label = r'$B_{p}$~[10$^{14}$G]') +bp = LogUniform(0.1,10,'bp',latex_label = r'$B_{p}$ [10$^{14}$G]') mass_ns = Uniform(1.1, 2.2, 'mass_ns', latex_label = r'$M_{\mathrm{NS}} [M_{\odot}]$') theta_pb = Uniform(0, 3.14/2, 'theta_pb', latex_label = r'$\\theta_{P-B}$') mej = LogUniform(1e-4, 100, 'mej', latex_label = r'$M_{\mathrm{ej}} [M_{\odot}]$') diff --git a/redback/priors/basic_magnetar_powered_bolometric.prior b/redback/priors/basic_magnetar_powered_bolometric.prior index 8114adf0e..015340a5f 100644 --- a/redback/priors/basic_magnetar_powered_bolometric.prior +++ b/redback/priors/basic_magnetar_powered_bolometric.prior @@ -1,8 +1,8 @@ -p0 = Uniform(1, 10, 'p0', latex_label = r'$P_{0}$ [ms]') -bp = LogUniform(0.1,10,'bp',latex_label = r'$B_{p}$~[10$^{14}$G]') +p0 = Uniform(1, 10, 'p0', latex_label = r'$P_{0}\,$ [ms]') +bp = LogUniform(0.1,10,'bp',latex_label = r'$B_{p}\,$ [10$^{14}$G]') mass_ns = Uniform(1.1, 2.2, 'mass_ns', latex_label = r'$M_{\mathrm{NS}} [M_{\odot}]$') theta_pb = Uniform(0, 3.14/2, 'theta_pb', latex_label = r'$\\theta_{P-B}$') -mej = LogUniform(1e-4, 100, 'mej', latex_label = r'$M_{\mathrm{ej}} [M_{\odot}]$') -vej = LogUniform(1e3, 1e5, 'vej', latex_label = r'$v_{\mathrm{ej}} [km/s]$') +mej = LogUniform(1e-4, 100, 'mej', latex_label = r'$M_{\mathrm{ej}}\, [M_{\odot}]$') +vej = LogUniform(1e3, 1e5, 'vej', latex_label = r'$v_{\mathrm{ej}}\,$ [km/s]') kappa = Uniform(0.05, 2, 'kappa', latex_label = r'$\kappa$') kappa_gamma = Uniform(1e-4, 1e4, 'kappa_gamma', latex_label = r'$\kappa_{\gamma}$') diff --git a/redback/priors/collapsing_magnetar.prior b/redback/priors/collapsing_magnetar.prior index cd057b671..bb9d8f9ab 100644 --- a/redback/priors/collapsing_magnetar.prior +++ b/redback/priors/collapsing_magnetar.prior @@ -1,6 +1,6 @@ a_1 = LogUniform(1e-20, 1e20, 'a_1', latex_label = r'$A_{1}$') alpha_1 = Uniform(-10, -0.5, 'alpha_1', latex_label = r'$\\alpha_{1}$') l0 = LogUniform(1e-20, 1e5, 'l0', latex_label = r'$L_{0}$') -tau = LogUniform(1e2, 1e6, 'tau', latex_label = r'$\tau$') +tau = LogUniform(1e2, 1e6, 'tau', latex_label = r'$\\tau$') nn = Uniform(1.1, 7, 'nn', latex_label= r'$n$') tcol = LogUniform(10, 1e8, 'tcol', latex_label= r'$t_\mathrm{col}$') diff --git a/redback/priors/collapsing_radiative_losses.prior b/redback/priors/collapsing_radiative_losses.prior index d94739549..941ba921d 100644 --- a/redback/priors/collapsing_radiative_losses.prior +++ b/redback/priors/collapsing_radiative_losses.prior @@ -1,7 +1,7 @@ a_1 = LogUniform(1e-20, 1e20, 'a_1', latex_label = r'$A_{1}$') alpha_1 = Uniform(-10, -0.5, 'alpha_1', latex_label = r'$\\alpha_{1}$') l0 = LogUniform(1e-20, 1e5, 'l0', latex_label = r'$L_{0}$') -tau = LogUniform(1e2, 1e6, 'tau', latex_label = r'$\tau$') +tau = LogUniform(1e2, 1e6, 'tau', latex_label = r'$\\tau$') nn = Uniform(1.1, 7, 'nn', latex_label= r'$n$') tcol = LogUniform(10, 1e8, 'tcol', latex_label= r'$t_\mathrm{col}$') kappa = LogUniform(1e-2, 10, 'kappa', latex_label= r'$\kappa$') diff --git a/redback/priors/five_component_fireball.prior b/redback/priors/five_component_fireball.prior index 169e9f969..d4e37b3c9 100644 --- a/redback/priors/five_component_fireball.prior +++ b/redback/priors/five_component_fireball.prior @@ -1,10 +1,10 @@ a_1 = LogUniform(1e-20, 1e20, 'a_1', latex_label = r'$A_{1}$') alpha_1 = Uniform(-10, -0.5, 'alpha_1', latex_label = r'$\\alpha_{1}$') -delta_time_one = LogUniform(1e-10, 1e6, 'delta_time_one', latex_label = r'$\Delta t_{1}$') +delta_time_one = LogUniform(1e-10, 1e6, 'delta_time_one', latex_label = r'$\Delta_{ } t_{1}$') alpha_2 = Uniform(-10, 0, 'alpha_2', latex_label = r'$\\alpha_{2}$') -delta_time_two = LogUniform(10, 1e6, 'delta_time_two', latex_label = r'$\Delta t_{2}$') +delta_time_two = LogUniform(10, 1e6, 'delta_time_two', latex_label = r'$\Delta_{ } t_{2}$') alpha_3 = Uniform(-10, 0, 'alpha_3', latex_label = r'$\\alpha_{3}$') -delta_time_three = LogUniform(1e-10, 1e6, 'delta_time_three', latex_label = r'$\Delta t_{3}$') +delta_time_three = LogUniform(1e-10, 1e6, 'delta_time_three', latex_label = r'$\Delta_{ } t_{3}$') alpha_4 = Uniform(-10, 0, 'alpha_4', latex_label = r'$\\alpha_{4}$') -delta_time_four = LogUniform(1e-10, 1e6, 'delta_time_four', latex_label = r'$\Delta t_{4}$') +delta_time_four = LogUniform(1e-10, 1e6, 'delta_time_four', latex_label = r'$\Delta_{ } t_{4}$') alpha_5 = Uniform(-10, 0, 'alpha_5', latex_label = r'$\\alpha_{5}$') diff --git a/redback/priors/fixed_braking_index.prior b/redback/priors/fixed_braking_index.prior index 11c7ff311..9bc08b94d 100644 --- a/redback/priors/fixed_braking_index.prior +++ b/redback/priors/fixed_braking_index.prior @@ -1,5 +1,5 @@ amplitude_one = LogUniform(1e-1, 1e5, 'amplitude_one', latex_label = r'$A_{1}$') time_exponent_one = Uniform(-10, 0, 'time_exponent_one', latex_label = r'$\\alpha_{1}$') -delta_time_one = LogUniform(1e-10, 1e6, 'delta_time_one', latex_label = r'$\Delta t_{1}$') +delta_time_one = LogUniform(1e-10, 1e6, 'delta_time_one', latex_label = r'$\Delta_{ } t_{1}$') time_exponent_two = -2.0 -delta_time_two = LogUniform(10, 1e6, 'delta_time_two', latex_label = r'$\Delta t_{2}$') +delta_time_two = LogUniform(10, 1e6, 'delta_time_two', latex_label = r'$\Delta_{ } t_{2}$') diff --git a/redback/priors/four_component_fireball.prior b/redback/priors/four_component_fireball.prior index 159732f66..418607ca1 100644 --- a/redback/priors/four_component_fireball.prior +++ b/redback/priors/four_component_fireball.prior @@ -1,8 +1,8 @@ a_1 = LogUniform(1e-20, 1e20, 'a_1', latex_label = r'$A_{1}$') alpha_1 = Uniform(-10, -0.5, 'alpha_1', latex_label = r'$\\alpha_{1}$') -delta_time_one = LogUniform(1e-10, 1e6, 'delta_time_one', latex_label = r'$\Delta t_{1}$') +delta_time_one = LogUniform(1e-10, 1e6, 'delta_time_one', latex_label = r'$\Delta_{ } t_{1}$') alpha_2 = Uniform(-10, 0, 'alpha_2', latex_label = r'$\\alpha_{2}$') -delta_time_two = LogUniform(10, 1e6, 'delta_time_two', latex_label = r'$\Delta t_{2}$') +delta_time_two = LogUniform(10, 1e6, 'delta_time_two', latex_label = r'$\Delta_{ } t_{2}$') alpha_3 = Uniform(-10, 0, 'alpha_3', latex_label = r'$\\alpha_{3}$') -delta_time_three = LogUniform(1e-10, 1e6, 'delta_time_three', latex_label = r'$\Delta t_{3}$') +delta_time_three = LogUniform(1e-10, 1e6, 'delta_time_three', latex_label = r'$\Delta_{ } t_{3}$') alpha_4 = Uniform(-10, 0, 'alpha_4', latex_label = r'$\\alpha_{4}$') diff --git a/redback/priors/full_magnetar.prior b/redback/priors/full_magnetar.prior index 24fa91f37..e8364c2af 100644 --- a/redback/priors/full_magnetar.prior +++ b/redback/priors/full_magnetar.prior @@ -1,5 +1,5 @@ a_1 = LogUniform(1e-20, 1e20, 'a_1', latex_label = r'$A_{1}$') alpha_1 = Uniform(-10, -0.5, 'alpha_1', latex_label = r'$\\alpha_{1}$') l0 = LogUniform(1e-20, 1e5, 'l0', latex_label = r'$L_{0}$') -tau = LogUniform(1e2, 1e6, 'tau', latex_label = r'$\tau$') +tau = LogUniform(1e2, 1e6, 'tau', latex_label = r'$\\tau$') nn = Uniform(1.1, 7, 'nn', latex_label = r'$n$') diff --git a/redback/priors/general_magnetar.prior b/redback/priors/general_magnetar.prior index c2bf4a24b..a681a09d6 100644 --- a/redback/priors/general_magnetar.prior +++ b/redback/priors/general_magnetar.prior @@ -1,5 +1,5 @@ a_1 = LogUniform(1e-20, 1e20, 'a_1', latex_label = r'$A_{1}$') alpha_1 = Uniform(-5, -0.5, 'alpha_1', latex_label = r'$\\alpha_{1}$') -delta_time_one = LogUniform(1e-10, 1e6, 'delta_time_one', latex_label = r'$\Delta t_{1}$') +delta_time_one = LogUniform(1e-10, 1e6, 'delta_time_one', latex_label = r'$\Delta_{ } t_{1}$') alpha_2 = Uniform(-10, 0, 'alpha_2', latex_label = r'$\\alpha_{2}$') -delta_time_two = LogUniform(10, 1e6, 'delta_time_two', latex_label = r'$\Delta t_{2}$') +delta_time_two = LogUniform(10, 1e6, 'delta_time_two', latex_label = r'$\Delta_{ } t_{2}$') diff --git a/redback/priors/gw_magnetar.prior b/redback/priors/gw_magnetar.prior index b85c3cf2b..e9b5146a2 100644 --- a/redback/priors/gw_magnetar.prior +++ b/redback/priors/gw_magnetar.prior @@ -1,6 +1,6 @@ a_1 = LogUniform(1e-20, 1e20, 'a_1', latex_label = r'$A_{1}$') alpha_1 = Uniform(-10, -0.5, 'alpha_1', latex_label = r'$\\alpha_{1}$') -fgw0 = LogUniform(100, 3000, 'fgw0', latex_label = r'$f_{gw,0}$') -tau = LogUniform(1e2, 1e6, 'tau', latex_label = r'$\tau$') +fgw0 = LogUniform(100, 3000, 'fgw0', latex_label = r'$f_{gw, 0}$') +tau = LogUniform(1e2, 1e6, 'tau', latex_label = r'$\\tau$') nn = Uniform(1.1, 7, 'nn', latex_label = r'$n$') logII = Uniform(44,46,'logII', latex_label = r'$\log_{10}I$') \ No newline at end of file diff --git a/redback/priors/magnetar_nickel.prior b/redback/priors/magnetar_nickel.prior index 371fc3c8e..feaa2a000 100644 --- a/redback/priors/magnetar_nickel.prior +++ b/redback/priors/magnetar_nickel.prior @@ -1,6 +1,6 @@ redshift = Uniform(1e-6,3,name='redshift', latex_label = r'$z$') f_nickel = LogUniform(1e-3,1,name='f_nickel', latex_label = r'$f_{\mathrm{Ni}}$') -p0 = Uniform(1, 10, 'p0', latex_label = r'$P_{0]$ [ms]') +p0 = Uniform(1, 10, 'p0', latex_label = r'$P_{0}$ [ms]') bp = LogUniform(0.1,10,'bp',latex_label = r'$B_{p}$~[10$^{14}$G]') mass_ns = Uniform(1.1, 2.2, 'mass_ns', latex_label = r'$M_{\mathrm{NS}} [M_{\odot}]$') theta_pb = Uniform(0, 3.14/2, 'theta_pb', latex_label = r'$\\theta_{P-B}$') @@ -8,4 +8,4 @@ mej = LogUniform(1e-4, 100, 'mej', latex_label = r'$M_{\mathrm{ej}} [M_{\odot}]$ vej = LogUniform(1e3, 1e5, 'vej', latex_label = r'$v_{\mathrm{ej}} [km/s]$') kappa = Uniform(0.05, 2, 'kappa', latex_label = r'$\kappa$') kappa_gamma = Uniform(1e-4, 1e4, 'kappa_gamma', latex_label = r'$\kappa_{\gamma}$') -temperature_floor = LogUniform(1e3,1e5,name = 'temperature_floor', latex_label = r'$T_{\mathrm{floor}$ [k]}') \ No newline at end of file +temperature_floor = LogUniform(1e3,1e5,name = 'temperature_floor', latex_label = r'$T_{\mathrm{floor}}$ [k]') \ No newline at end of file diff --git a/redback/priors/magnetar_only.prior b/redback/priors/magnetar_only.prior index 82884fdab..3ae17a8e5 100644 --- a/redback/priors/magnetar_only.prior +++ b/redback/priors/magnetar_only.prior @@ -1,3 +1,3 @@ l0 = LogUniform(1e-20, 1e5, 'l0', latex_label = r'$L_{0}$') -tau = LogUniform(1e2, 1e6, 'tau', latex_label = r'$\tau$') +tau = LogUniform(1e2, 1e6, 'tau', latex_label = r'$\\tau$') nn = Uniform(1.1, 7, 'nn', latex_label = r'$n$') diff --git a/redback/priors/mergernova.prior b/redback/priors/mergernova.prior index 08520a9e3..2a3394285 100644 --- a/redback/priors/mergernova.prior +++ b/redback/priors/mergernova.prior @@ -5,6 +5,6 @@ beta = Uniform(0.1, 0.7, 'beta', latex_label = r'$v_{\mathrm{ej}} [c]$') kappa = Uniform(1, 30, 'kappa', latex_label = r'$\kappa$') n_ism = LogUniform(1e-4, 1, 'n_ism', latex_label = r'$m_{\mathrm{ism}}$') l0 = LogUniform(1e40, 1e50, 'l0', latex_label = r'$l_0$') -tau_sd = LogUniform(10, 1e5, 'tau_sd', latex_label = '$\tau_{\mathrm{sd}}$') +tau_sd = LogUniform(10, 1e5, 'tau_sd', latex_label = '$\\tau_{\mathrm{sd}}$') nn = Uniform(2, 7, 'nn', latex_label='$n$') thermalisation_efficiency = Uniform(0.1, 1, 'thermalisation_efficiency', latex_label='$\epsilon_{\mathrm{th}}$') \ No newline at end of file diff --git a/redback/priors/piecewise_radiative_losses.prior b/redback/priors/piecewise_radiative_losses.prior index 016d63c75..b08ac7e8f 100644 --- a/redback/priors/piecewise_radiative_losses.prior +++ b/redback/priors/piecewise_radiative_losses.prior @@ -1,7 +1,7 @@ a_1 = LogUniform(1e-20, 1e20, 'a_1', latex_label = r'$A_{1}$') alpha_1 = Uniform(-10, -0.5, 'alpha_1', latex_label = r'$\\alpha_{1}$') l0 = LogUniform(1e-20, 1e5, 'l0', latex_label = r'$L_{0}$') -tau = LogUniform(1e2, 1e6, 'tau', latex_label = r'$\tau$') +tau = LogUniform(1e2, 1e6, 'tau', latex_label = r'$\\tau$') nn = Uniform(1.1, 7, 'nn', latex_label= r'$n$') kappa = LogUniform(1e-2, 10, 'kappa', latex_label= r'$\kappa$') t0 = Uniform(1, 1000, 't0', latex_label= r'$T_{0}$') diff --git a/redback/priors/radiative_losses.prior b/redback/priors/radiative_losses.prior index 4b67e9420..b9a7c30a6 100644 --- a/redback/priors/radiative_losses.prior +++ b/redback/priors/radiative_losses.prior @@ -1,7 +1,7 @@ a_1 = LogUniform(1e-20, 1e20, 'a_1', latex_label = r'$A_{1}$') alpha_1 = Uniform(-10, -0.5, 'alpha_1', latex_label = r'$\\alpha_{1}$') l0 = LogUniform(1e-20, 1e5, 'l0', latex_label = r'$L_{0}$') -tau = LogUniform(1e2, 1e6, 'tau', latex_label = r'$\tau$') +tau = LogUniform(1e2, 1e6, 'tau', latex_label = r'$\\tau$') nn = Uniform(1.1, 7, 'nn', latex_label= r'$n$') kappa = LogUniform(1e-2, 10, 'kappa', latex_label= r'$\kappa$') t0 = Uniform(1, 1000, 't0', latex_label= r'$T_{0}$') diff --git a/redback/priors/radiative_losses_mdr.prior b/redback/priors/radiative_losses_mdr.prior index b715e6268..63c21b448 100644 --- a/redback/priors/radiative_losses_mdr.prior +++ b/redback/priors/radiative_losses_mdr.prior @@ -1,7 +1,7 @@ a_1 = LogUniform(1e-20, 1e20, 'a_1', latex_label = r'$A_{1}$') alpha_1 = Uniform(-10, -0.5, 'alpha_1', latex_label = r'$\\alpha_{1}$') l0 = LogUniform(1e-20, 1e5, 'l0', latex_label = r'$L_{0}$') -tau = LogUniform(1e2, 1e6, 'tau', latex_label = r'$\tau$') +tau = LogUniform(1e2, 1e6, 'tau', latex_label = r'$\\tau$') kappa = LogUniform(1e-2, 10, 'kappa', latex_label= r'$\kappa$') t0 = Uniform(1, 1000, 't0', latex_label= r'$T_{0}$') log_e0 = Uniform(-10, 2, 'log_e0', latex_label = r'$\log_{10} E_{0}$') \ No newline at end of file diff --git a/redback/priors/six_component_fireball.prior b/redback/priors/six_component_fireball.prior index 8829d4f2e..fd3a59930 100644 --- a/redback/priors/six_component_fireball.prior +++ b/redback/priors/six_component_fireball.prior @@ -1,12 +1,12 @@ a_1 = LogUniform(1e-20, 1e20, 'a_1', latex_label = r'$A_{1}$') alpha_1 = Uniform(-10, -0.5, 'alpha_1', latex_label = r'$\\alpha_{1}$') -delta_time_one = LogUniform(1e-10, 1e6, 'delta_time_one', latex_label = r'$\Delta t_{1}$') +delta_time_one = LogUniform(1e-10, 1e6, 'delta_time_one', latex_label = r'$\Delta_{ } t_{1}$') alpha_2 = Uniform(-10, 0, 'alpha_2', latex_label = r'$\\alpha_{2}$') -delta_time_two = LogUniform(10, 1e6, 'delta_time_two', latex_label = r'$\Delta t_{2}$') +delta_time_two = LogUniform(10, 1e6, 'delta_time_two', latex_label = r'$\Delta_{ } t_{2}$') alpha_3 = Uniform(-10, 0, 'alpha_3', latex_label = r'$\\alpha_{3}$') -delta_time_three = LogUniform(1e-10, 1e6, 'delta_time_three', latex_label = r'$\Delta t_{3}$') +delta_time_three = LogUniform(1e-10, 1e6, 'delta_time_three', latex_label = r'$\Delta_{ } t_{3}$') alpha_4 = Uniform(-10, 0, 'alpha_4', latex_label = r'$\\alpha_{4}$') -delta_time_four = LogUniform(1e-10, 1e6, 'delta_time_four', latex_label = r'$\Delta t_{4}$') +delta_time_four = LogUniform(1e-10, 1e6, 'delta_time_four', latex_label = r'$\Delta_{ } t_{4}$') alpha_5 = Uniform(-10, 0, 'alpha_5', latex_label = r'$\\alpha_{5}$') -delta_time_five = LogUniform(1e-10, 1e6, 'delta_time_five', latex_label = r'$\Delta t_{5}$') +delta_time_five = LogUniform(1e-10, 1e6, 'delta_time_five', latex_label = r'$\Delta_{ } t_{5}$') alpha_six = Uniform(-10, 0, 'alpha_six', latex_label = r'$\\alpha_{6}$') diff --git a/redback/priors/slsn.prior b/redback/priors/slsn.prior index 0c97c7345..18e9a44fe 100644 --- a/redback/priors/slsn.prior +++ b/redback/priors/slsn.prior @@ -1,5 +1,5 @@ redshift = Uniform(1e-6,3,name='redshift', latex_label = r'$z$') -p0 = Uniform(1, 10, 'p0', latex_label = r'$P_{0]$ [ms]') +p0 = Uniform(1, 10, 'p0', latex_label = r'$P_{0}$ [ms]') bp = LogUniform(0.1,10,'bp',latex_label = r'$B_{p}$~[10$^{14}$G]') mass_ns = Uniform(1.1, 2.2, 'mass_ns', latex_label = r'$M_{\mathrm{NS}} [M_{\odot}]$') theta_pb = Uniform(0, 3.14/2, 'theta_pb', latex_label = r'$\\theta_{P-B}$') @@ -7,6 +7,6 @@ mej = LogUniform(1e-4, 100, 'mej', latex_label = r'$M_{\mathrm{ej}} [M_{\odot}]$ vej = LogUniform(1e3, 1e5, 'vej', latex_label = r'$v_{\mathrm{ej}} [km/s]$') kappa = Uniform(0.05, 2, 'kappa', latex_label = r'$\kappa$') kappa_gamma = Uniform(1e-4, 1e4, 'kappa_gamma', latex_label = r'$\kappa_{\gamma}$') -temperature_floor = LogUniform(1e3,1e5,name = 'temperature_floor', latex_label = r'$T_{\mathrm{floor}$ [k]}') +temperature_floor = LogUniform(1e3,1e5,name = 'temperature_floor', latex_label = r'$T_{\mathrm{floor}}$ [k]') e_rot_constraint = Constraint(name='e_rot_constraint', minimum=10, maximum=1e10) t_nebula_min = Constraint(name='t_nebula_min', minimum=0.1,maximum=500) \ No newline at end of file diff --git a/redback/priors/slsn_bolometric.prior b/redback/priors/slsn_bolometric.prior index 0e71a38d3..769d33bae 100644 --- a/redback/priors/slsn_bolometric.prior +++ b/redback/priors/slsn_bolometric.prior @@ -1,4 +1,4 @@ -p0 = Uniform(1, 10, 'p0', latex_label = r'$P_{0]$ [ms]') +p0 = Uniform(1, 10, 'p0', latex_label = r'$P_{0}$ [ms]') bp = LogUniform(0.1,10,'bp',latex_label = r'$B_{p}$~[10$^{14}$G]') mass_ns = Uniform(1.1, 2.2, 'mass_ns', latex_label = r'$M_{\mathrm{NS}} [M_{\odot}]$') theta_pb = Uniform(0, 3.14/2, 'theta_pb', latex_label = r'$\\theta_{P-B}$') diff --git a/redback/priors/sn_exponential_powerlaw.prior b/redback/priors/sn_exponential_powerlaw.prior index b2b059ae4..cefc14dd4 100644 --- a/redback/priors/sn_exponential_powerlaw.prior +++ b/redback/priors/sn_exponential_powerlaw.prior @@ -1,10 +1,10 @@ redshift = Uniform(1e-6,3,name='redshift', latex_label = r'$z$') lbol_0 = LogUniform(1e36,1e48,name='lbol_0', latex_label = r'$L_{\mathrm{bol},0}$') -alpha_1 = Uniform(0,10,name='alpha_1',latex_label='$\alpha_{1}$') -alpha_2 = Uniform(0,10,name='alpha_2',latex_label='$\alpha_{2}$') +alpha_1 = Uniform(0,10,name='alpha_1',latex_label='$\\alpha_{1}$') +alpha_2 = Uniform(0,10,name='alpha_2',latex_label='$\\alpha_{2}$') tpeak_d = LogUniform(0.001,200,name='tpeak', latex_label = r'$t_{\mathrm{peak}}$~[days]') mej = LogUniform(1e-4, 100, 'mej', latex_label = r'$M_{\mathrm{ej}} [M_{\odot}]$') vej = LogUniform(1e3, 1e5, 'vej', latex_label = r'$v_{\mathrm{ej}} [km/s]$') kappa = Uniform(0.05, 2, 'kappa', latex_label = r'$\kappa$') kappa_gamma = Uniform(1e-4, 1e4, 'kappa_gamma', latex_label = r'$\kappa_{\gamma}$') -temperature_floor = LogUniform(1e3,1e5,name = 'temperature_floor', latex_label = r'$T_{\mathrm{floor}$ [k]}') \ No newline at end of file +temperature_floor = LogUniform(1e3,1e5,name = 'temperature_floor', latex_label = r'$T_{\mathrm{floor}}$ [k]') \ No newline at end of file diff --git a/redback/priors/tde_analytical.prior b/redback/priors/tde_analytical.prior index 362f91575..9eaa61cd2 100644 --- a/redback/priors/tde_analytical.prior +++ b/redback/priors/tde_analytical.prior @@ -2,7 +2,7 @@ mej = LogUniform(1e-4, 100, 'mej', latex_label = r'$M_{\mathrm{ej}} [M_{\odot}]$ vej = LogUniform(1e3, 1e5, 'vej', latex_label = r'$v_{\mathrm{ej}} [km/s]$') kappa = Uniform(0.05, 2, 'kappa', latex_label = r'$\kappa$') kappa_gamma = Uniform(1e-4, 1e4, 'kappa_gamma', latex_label = r'$\kappa_{\gamma}$') -temperature_floor = LogUniform(1e3,1e5,name = 'temperature_floor', latex_label = r'$T_{\mathrm{floor}$ [k]}') +temperature_floor = LogUniform(1e3,1e5,name = 'temperature_floor', latex_label = r'$T_{\mathrm{floor}}$ [k]') redshift = Uniform(0.01, 3, 'redshift', latex_label=r'$z$') l0 = LogUniform(1e51, 1e58, "l0", latex_label="$l_0$") t_0 = LogUniform(1e-4, 1e2, "t_0", latex_label="$t_0$") \ No newline at end of file diff --git a/redback/priors/three_component_fireball.prior b/redback/priors/three_component_fireball.prior index aec8dbf39..57f4e12d5 100644 --- a/redback/priors/three_component_fireball.prior +++ b/redback/priors/three_component_fireball.prior @@ -1,6 +1,6 @@ a_1 = LogUniform(1e-20, 1e20, 'a_1', latex_label = r'$A_{1}$') alpha_1 = Uniform(-10, -0.5, 'alpha_1', latex_label = r'$\\alpha_{1}$') -delta_time_one = LogUniform(1e-10, 1e6, 'delta_time_one', latex_label = r'$\Delta t_{1}$') +delta_time_one = LogUniform(1e-10, 1e6, 'delta_time_one', latex_label = r'$\Delta_{ } t_{1}$') alpha_2 = Uniform(-10, 0, 'alpha_2', latex_label = r'$\\alpha_{2}$') -delta_time_two = LogUniform(10, 1e6, 'delta_time_two', latex_label = r'$\Delta t_{2}$') +delta_time_two = LogUniform(10, 1e6, 'delta_time_two', latex_label = r'$\Delta_{ } t_{2}$') alpha_3 = Uniform(-10, 0, 'alpha_3', latex_label = r'$\\alpha_{3}$') diff --git a/redback/priors/two_component_fireball.prior b/redback/priors/two_component_fireball.prior index 7cfe3360d..d7e65090d 100644 --- a/redback/priors/two_component_fireball.prior +++ b/redback/priors/two_component_fireball.prior @@ -1,4 +1,4 @@ a_1 = LogUniform(1e-20, 1e20, 'a_1', latex_label = r'$A_{1}$') alpha_1 = Uniform(-10, -0.5, 'alpha_1', latex_label = r'$\\alpha_{1}$') -delta_time_one = LogUniform(1e-10, 1e6, 'delta_time_one', latex_label = r'$\Delta t_{1}$') +delta_time_one = LogUniform(1e-10, 1e6, 'delta_time_one', latex_label = r'$\Delta_{ } t_{1}$') alpha_2 = Uniform(-10, 0, 'alpha_2', latex_label = r'$\\alpha_{2}$') diff --git a/redback/transient/transient.py b/redback/transient/transient.py index 7d03b6852..76ff85588 100644 --- a/redback/transient/transient.py +++ b/redback/transient/transient.py @@ -530,9 +530,11 @@ def plot_multiband( raise ValueError( f'You cannot plot multiband data with {self.data_mode} data mode . Why are you doing this?') if self.magnitude_data: - plotter = MagnitudePlotter(transient=self, filters=filters, filename=filename, outdir=outdir, nrows=nrows, ncols=ncols, figsize=figsize, **kwargs) + plotter = MagnitudePlotter(transient=self, filters=filters, filename=filename, outdir=outdir, nrows=nrows, + ncols=ncols, figsize=figsize, **kwargs) elif self.flux_density_data: - plotter = FluxDensityPlotter(transient=self, filters=filters, filename=filename, outdir=outdir, nrows=nrows, ncols=ncols, figsize=figsize, **kwargs) + plotter = FluxDensityPlotter(transient=self, filters=filters, filename=filename, outdir=outdir, nrows=nrows, + ncols=ncols, figsize=figsize, **kwargs) else: return return plotter.plot_multiband(figure=figure, axes=axes, save=save, show=show) diff --git a/test/prior_test.py b/test/prior_test.py index 99b9e5cde..18e11db35 100644 --- a/test/prior_test.py +++ b/test/prior_test.py @@ -1,12 +1,17 @@ import unittest import bilby from os import listdir +from os.path import dirname +from pathlib import Path +from shutil import rmtree + +_dirname = dirname(__file__) class TestLoadPriors(unittest.TestCase): def setUp(self) -> None: - self.path_to_files = "../redback/priors/" + self.path_to_files = f"{_dirname}/../redback/priors/" self.prior_files = listdir(self.path_to_files) def tearDown(self) -> None: @@ -29,4 +34,58 @@ def test_load_priors(self): # assert occurences % 2 == 0 +import pandas as pd + + +class TestCornerPlotPriorSamples(unittest.TestCase): + outdir = "testing_corner" + + @classmethod + def setUpClass(cls) -> None: + Path(cls.outdir).mkdir(exist_ok=True, parents=True) + + @classmethod + def tearDownClass(cls) -> None: + rmtree(cls.outdir) + + def setUp(self) -> None: + self.path_to_files = f"{_dirname}/../redback/priors/" + self.prior_files = listdir(self.path_to_files) + def tearDown(self) -> None: + pass + + def get_prior(self, file): + prior_dict = bilby.prior.PriorDict() + prior_dict.from_file(f"{self.path_to_files}{file}") + return prior_dict + + def get_posterior(self, file): + return pd.DataFrame.from_dict(self.get_prior(file=file).sample(100)) + + def get_result(self, file): + prior = self.get_prior(file=file) + posterior = self.get_posterior(file=file) + search_parameter_keys = [k for k, v in prior.items() if + not isinstance(v, (bilby.core.prior.DeltaFunction, bilby.core.prior.Constraint, float, int))] + fixed_parameter_keys = [k for k, v in prior.items() if isinstance(v, (bilby.core.prior.DeltaFunction, float, int))] + constraint_parameter_keys = [k for k, v in prior.items() if isinstance(v, bilby.core.prior.Constraint)] + return bilby.result.Result(label=file, outdir=self.outdir, + search_parameter_keys=search_parameter_keys, + fixed_parameter_keys=fixed_parameter_keys, + constraint_parameter_keys=constraint_parameter_keys, priors=prior, + sampler_kwargs=dict(), injection_parameters=None, + meta_data=None, posterior=posterior, samples=None, + nested_samples=None, log_evidence=0, + log_evidence_err=0, information_gain=0, + log_noise_evidence=0, log_bayes_factor=0, + log_likelihood_evaluations=0, + log_prior_evaluations=0, sampling_time=0, nburn=0, + num_likelihood_evaluations=0, walkers=0, + max_autocorrelation_time=0, use_ratio=False, + version=None) + + def test_plot_priors(self): + for f in self.prior_files: + res = self.get_result(file=f) + res.plot_corner()