Source code for redback.transient_models.prompt_models

import numpy as np


[docs]def gaussian_prompt(times, amplitude, t_0, sigma, **kwargs): dt = kwargs.get('dt', 1) return amplitude * np.exp(-(times - t_0) ** 2 / (2 * sigma ** 2)) * dt
[docs]def skew_gaussian(times, amplitude, t_0, sigma_rise, sigma_fall, **kwargs): dt = kwargs.get('dt', 1) before_burst_indices = np.where(times <= t_0) after_burst_indices = np.where(times > t_0) envelope = np.zeros(len(times)) envelope[before_burst_indices] = gaussian_prompt( times=times[before_burst_indices], amplitude=amplitude, t_0=t_0, sigma=sigma_rise) envelope[after_burst_indices] = gaussian_prompt( times=times[after_burst_indices], amplitude=amplitude, t_0=t_0, sigma=sigma_fall) return envelope * dt
[docs]def skew_exponential(times, amplitude, t_0, tau_rise, tau_fall, **kwargs): dt = kwargs.get('dt', 1) before_burst_indices = np.where(times <= t_0) after_burst_indices = np.where(times > t_0) envelope = np.zeros(len(times)) envelope[before_burst_indices] = amplitude * np.exp((times[before_burst_indices] - t_0) / tau_rise) envelope[after_burst_indices] = amplitude * np.exp(-(times[after_burst_indices] - t_0) / tau_fall) return envelope * dt
[docs]def fred(times, amplitude, psi, tau, delta, **kwargs): dt = kwargs.get('dt', 1) frac = (times - delta) / tau with np.errstate(divide='ignore', invalid='ignore', over='ignore'): return amplitude * np.exp(-psi * (frac + 1 / frac)) * np.exp(2 * psi) * dt
[docs]def fred_extended(times, amplitude, psi, tau, delta, gamma, nu, **kwargs): dt = kwargs.get('dt', 1) frac = (times - delta) / tau with np.errstate(divide='ignore', invalid='ignore', over='ignore'): return amplitude * np.exp(-psi ** gamma * frac ** gamma - psi ** nu / frac ** nu) * np.exp(2 * psi) * dt