Source code for aspros.transits

from batman import TransitModel, TransitParams
import numpy as np
import astropy.units as u
from astropy.constants import R_earth, G, M_sun

from .lightcurve import LightCurve

__all__ = ['inject_transits', 'period_to_a']

M_wd = 0.6 * M_sun
R_wd = 1 * R_earth


[docs]@u.quantity_input(radius=u.m, period=u.d, inc=u.deg, rstar=u.m) def inject_transits(lc, period, epoch, radius, inc, rstar=1*R_earth, a=None): """ Inject transits into a light curve. Parameters ---------- lc : `~aspros.LightCurve` Light curve to inject transits into period : `~astropy.units.Quantity` Orbital period epoch : `~astropy.time.Time` Mid-transit time radius : `~astropy.units.Quantity` Planetesimal radius inc : `~astropy.units.Quantity` Orbital inclination a : float (optional) Semi-major axis rstar : `~astropy.units.Quantity` (optional) Stellar radius Returns ------- lc_transit : `~aspros.LightCurve` Copy of the light curve with a transit injected """ p = TransitParams() p.per = period.to(u.day).value p.rp = float(radius / rstar) p.ecc = 0 p.w = 90 p.inc = inc.to(u.deg).value if a is None: a = period_to_a(period) p.a = a p.t0 = epoch.jd p.u = [0.4, 0.2] p.limb_dark = 'quadratic' model = TransitModel(p, lc.times.jd, supersample_factor=10, exp_time=(60*u.s).to(u.day).value).light_curve(p) new_lc = LightCurve(lc.times, lc.fluxes * model, lc.errors) return new_lc
[docs]@u.quantity_input(period=u.d) def period_to_a(period): a_rs = float((period**2 * (G * M_wd) / 4 / np.pi**2)**(1/3) / R_wd) return a_rs