def test_stsp_double_transit(fast): planet = TransitParams() planet.per = 88 planet.a = float(0.387*u.AU / u.R_sun) planet.rp = 0.1 planet.w = 90 planet.ecc = 0 planet.inc = 90 planet.t0 = 0 planet.limb_dark = 'quadratic' planet.u = [0.5079, 0.2239] stsp_lc = np.loadtxt(os.path.join(os.path.dirname(__file__), os.pardir, 'data', 'stsp_double_transit.txt')) inc_stellar = 90 * u.deg spot_radii = np.array([[0.05], [0.05]]) spot_lats = np.array([[0], [0]]) * u.deg spot_lons = np.array([[360-30], [30]]) * u.deg times = np.concatenate([np.linspace(-0.5, 0.5, 500), np.linspace(87.5, 88.5, 500)]) star = Star(spot_contrast=0.7, u_ld=planet.u, rotation_period=10) fleck_lc = star.light_curve(spot_lons, spot_lats, spot_radii, inc_stellar, planet=planet, times=times, fast=fast, time_ref=0) # Assert matches STSP results to within 1 ppt: np.testing.assert_allclose(fleck_lc[:, 0], stsp_lc, atol=1e-3)
def init_batman(t, init_params, exp_time=0.000694): a = inclination(init_params['p'], init_params['r']) i = inclination(a, init_params['b']) params = TransitParams() params.t0 = init_params['t0'] #time of inferior conjunction params.per = init_params['p'] #orbital period params.rp = init_params['k'] #planet radius (in units of stellar radii) params.a = a #semi-major axis (in units of stellar radii) params.inc = i #orbital inclination (in degrees) params.ecc = 0. #eccentricity params.w = 90. #longitude of periastron (in degrees) u1, u2 = q_to_u(init_params['q1'], init_params['q2']) params.u = [u1, u2] #limb darkening coefficients params.limb_dark = "quadratic" tm = TransitModel(params, t, supersample_factor=1, exp_time=exp_time) return tm
def transit_model(theta, t, exp_time=0.002): params = TransitParams() t0, p, k, r, b, q1, q2 = theta[:7] u1, u2 = q_to_u(q1, q2) a = arstar(p, r) i = inclination(a, b) params.t0 = t0 #time of inferior conjunction params.per = p #orbital period params.rp = k #planet radius (in units of stellar radii) params.a = a #semi-major axis (in units of stellar radii) params.inc = i #orbital inclination (in degrees) params.ecc = 0. #eccentricity params.w = 90. #longitude of periastron (in degrees) params.u = [u1, u2] #limb darkening coefficients params.limb_dark = "quadratic" m = TransitModel(params, t, supersample_factor=1, exp_time=exp_time) # m = TransitModel(params, t) return m.light_curve(params)
def test_lc(): from ..wrapper import simulate_lightcurve n = 4096 x, y = np.meshgrid(np.arange(n), np.arange(n)) r = 950 * 2 u1, u2 = 0.6, 0.2 on_star = (x - n / 2)**2 + (y - n / 2)**2 <= r**2 d_sq = (x - n / 2)**2 / r**2 + (y - n / 2)**2 / r**2 mu = np.sqrt(1 - d_sq) limb_dark = lambda mu: (1 - u1 * (1 - mu) - u2 * (1 - mu)**2) / (1 - u1 / 3 - u2 / 6) / np.pi image = limb_dark(mu) / limb_dark(0) image[~on_star] = 0 # Earth's orbit: period = 365.25 * u.day a = 1.0 * u.AU b = 0 lc = simulate_lightcurve(image, period, a, b, sdo_hmi=False, background=0) params = TransitParams() params.rp = float(R_earth / R_sun) params.inc = 90 params.t0 = 0 params.u = [0, 0] params.limb_dark = 'quadratic' params.per = period.value params.ecc = 0 params.w = 90 params.a = float(a / R_sun) best_fit = lc.get_transit_model(params, 1e-6) np.testing.assert_allclose(lc.fluxes, best_fit.fluxes, rtol=1e-3)
for i in range(len(lc_paths)): time, flux = np.load(lc_paths[i]).T if time.ptp() > 8 / 24: real_lcs.append(np.array([time, flux]).T) from batman import TransitModel, TransitParams from astropy.constants import R_earth, R_sun, M_sun, G M_star = 0.1 * M_sun R_star = 0.12 * R_sun params = TransitParams() params.per = 1.6 params.rp = float(R_earth / R_star) params.limb_dark = 'quadratic' params.u = [1.0, 0.0] # Luger 2017 params.w = 90 params.ecc = 0 params.a = float(((G * M_star * (params.per * u.day)**2) / (4 * np.pi**2))**(1 / 3) / R_star) from astroplan import time_grid_from_range, observability_table n_objects_per_night = int(sys.argv[-1]) print(n_objects_per_night) airmass_cutoff = 3.5 fraction_cloudy = 0.3 n_years = 1 n_trials = 15 constraints = [
period = props['koi_period'] duration = props['koi_duration'] / 24 epoch = props['koi_time0bk'] + 2454833 b = props['koi_impact'] params = TransitParams() params.per = period params.t0 = 0 params.duration = duration params.rp = float(props['koi_prad']*R_earth/(props['koi_srad']*R_sun)) a = (np.sin(duration * np.pi / period) / np.sqrt((1 + params.rp)**2 - b**2))**-1 params.a = a params.inc = np.degrees(np.arccos(b/params.a)) params.limb_dark = 'quadratic' params.u = u_ld params.ecc = 0 params.w = 90 stddev = koi_stdevs[np.random.randint(0, len(koi_stdevs))] if params.rp**2 > 0.005 and stddev < params.rp**2 and duration < 0.2: if counter % 2 == 0: n_spots = 50 else: n_spots = 0 spot_lons, spot_lats, spot_radii, inc_stellar = generate_spots(-90, 90, 0.1, n_spots, inclinations=90*u.deg) lc, so = star.light_curve(spot_lons, spot_lats, spot_radii, inc_stellar, planet=params, times=times, return_spots_occulted=True, fast=True)
from stash import LightCurve from astropy.constants import R_earth, R_sun import astropy.units as u # Load light curve generated by `fetch_series.py` fig, ax = plt.subplots(2, 1, figsize=(4, 8), sharex=True) times, fluxes = np.loadtxt('data/lc.txt', unpack=True) lc = LightCurve(times, fluxes) params = TransitParams() params.rp = float(R_earth / R_sun) # Radius ratio (planet/star) params.inc = 89.9 # Orbital inclination params.t0 = 0 # Midtransit time params.u = [0.6, 0.2] # Quadratic limb-darkening parameters params.w = 90 # Argument of periastron -- leave this params.ecc = 0 # Orbital eccentricity -- leave this params.per = 365 # orbital period params.limb_dark = 'quadratic' params.a = float(1 * u.AU / R_sun) # Semimajor axis in units of [R_star] # Fit transit model to light curve `lc` best_fit_lc = lc.get_transit_model(params, 1e-6) best_fit_lc.plot(color='r', label='model', ls='--', ax=ax[0]) lc.plot(label='stash', ax=ax[0]) ax[0].set_ylabel('Flux') ax[1].plot(lc.times, 1e6 * (lc.fluxes - best_fit_lc.fluxes))