def align_telescope_lightcurve(lightcurve_telescope_flux, model_ghost, model_telescope): """Align data to the survey telescope (i.e telescope 0). :param array_like lightcurve_telescope_mag: the survey telescope in magnitude :param float fs_reference: thce survey telescope reference source flux (i.e the fitted value) :param float g_reference: the survey telescope reference blending parameter (i.e the fitted value) :param float fs_telescope: the telescope source flux (i.e the fitted value) :param float g_reference: the telescope blending parameter (i.e the fitted value) :return: the aligned to survey lightcurve in magnitude :rtype: array_like """ time = lightcurve_telescope_flux[:, 0] flux = lightcurve_telescope_flux[:, 1] error_flux = lightcurve_telescope_flux[:, 2] err_mag = microltoolbox.error_flux_to_error_magnitude(error_flux, flux) residuals = 2.5 * np.log10(model_telescope / flux) magnitude_normalised = microltoolbox.flux_to_magnitude(model_ghost)+residuals lightcurve_normalised = [time, magnitude_normalised, err_mag] lightcurve_mag_normalised = np.array(lightcurve_normalised).T return lightcurve_mag_normalised
def lightcurve_in_magnitude(self): """ Transform flux to magnitude using m = 27.4-2.5*log10(flux) convention. Transform error bar accordingly. More details in microltoolbox module. :return: the lightcurve in magnitude, lightcurve_magnitude. :rtype: array_like """ lightcurve = self.lightcurve_flux time = lightcurve[:, 0] flux = lightcurve[:, 1] error_flux = lightcurve[:, 2] magnitude = microltoolbox.flux_to_magnitude(flux) error_magnitude = microltoolbox.error_flux_to_error_magnitude(error_flux, flux) ligthcurve_magnitude = np.array([time, magnitude, error_magnitude]).T return ligthcurve_magnitude
def LM_plot_residuals(fit, figure_axe): """Plot the residuals from the fit. :param object fit: a fit object. See the microlfits for more details. :param matplotlib_axes figure_axe: a matplotlib axes correpsonding to the figure. """ MARKER_SYMBOLS.reset() for telescope in fit.event.telescopes: time = telescope.lightcurve_flux[:, 0] flux = telescope.lightcurve_flux[:, 1] error_flux = telescope.lightcurve_flux[:, 2] err_mag = microltoolbox.error_flux_to_error_magnitude(error_flux, flux) pyLIMA_parameters = fit.model.compute_pyLIMA_parameters(fit.fit_results) flux_model = fit.model.compute_the_microlensing_model(telescope, pyLIMA_parameters)[0] residuals = 2.5 * np.log10(flux_model / flux) figure_axe.errorbar(time, residuals, yerr=err_mag, ls='None', markersize=7.5, marker=str(MARKER_SYMBOLS.next()),capsize=0.0) figure_axe.set_ylim([-plot_residuals_windows, plot_residuals_windows]) figure_axe.invert_yaxis()
def MCMC_plot_residuals(fit, parameters, ax): """Plot the data residual on the appropriate figure. :param fit: a fit object. See the microlfits for more details. :param parameters: the parameters [list] of the model you want to plot. :param ax: the matplotlib axes where you plot the data """ MARKER_SYMBOLS.reset() for telescope in fit.event.telescopes: time = telescope.lightcurve_flux[:, 0] flux = telescope.lightcurve_flux[:, 1] error_flux = telescope.lightcurve_flux[:, 2] err_mag = microltoolbox.error_flux_to_error_magnitude(error_flux, flux) pyLIMA_parameters = fit.model.compute_pyLIMA_parameters(parameters) flux_model = fit.model.compute_the_microlensing_model(telescope, pyLIMA_parameters)[0] residuals = 2.5 * np.log10(flux_model / flux) ax.errorbar(time, residuals, yerr=err_mag, ls='None', marker=str(MARKER_SYMBOLS.next())) ax.set_ylim([-plot_residuals_windows, plot_residuals_windows]) ax.invert_yaxis() ax.xaxis.get_major_ticks()[0].draw = lambda *args: None ax.ticklabel_format(useOffset=False, style='plain')