Ejemplo n.º 1
0
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
Ejemplo n.º 2
0
lc_paths = glob('data/npy/*.npy')

real_lcs = [np.load(p) for p in lc_paths]
real_lcs = []

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
Ejemplo n.º 3
0
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)
Ejemplo n.º 4
0
def test_stsp_double_transit(fast):
    from batman import TransitParams

    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)
Ejemplo n.º 5
0
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)
Ejemplo n.º 6
0
import numpy as np
from scipy import stats
import lmfit
from batman import TransitParams, TransitModel

from .util import inclination, q_to_u, t14_circ, arstar

params = TransitParams()
params.limb_dark = "quadratic"


def model_tra_lm(par, t, tm):
    u1, u2 = q_to_u(par['q1'], par['q2'])
    a = arstar(par['p'], par['r'])
    i = inclination(a, par['b'].value)
    params.t0 = par['t0']  #time of inferior conjunction
    params.per = par['p']  #orbital period
    params.rp = par['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
    return tm.light_curve(params)


def model_sys_lm(par, sm):
    theta = [par.get(i) for i in sm.parameter_names]
    sm.parameter_vector = theta
    sys = sm.model
    return sys
Ejemplo n.º 7
0
        kepid = keys[np.random.randint(0, len(keys))]

        bstr = str(int(kepid)).encode()

        props = koi_table.loc[bstr]

        if not isinstance(koi_table.loc[bstr]['kepid'], bytes): 
            props = props[np.argmax(props['koi_depth'])]

        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: 
Ejemplo n.º 8
0
import numpy as np
import matplotlib.pyplot as plt
from batman import TransitParams
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])