Source code for salter.params
from __future__ import (absolute_import, division, print_function,
unicode_literals)
import batman
import numpy as np
from .cache import planet_props
from .limbdarkening import quad
__all__ = ['kic_to_params', 'transit_model']
[docs]def kic_to_params(kic):
"""
For a KIC number ``kic``, return a `~batman.TransitParams` object for that
star-planet system.
Parameters
----------
kic : int
KIC number
Returns
-------
params : `~batman.TransitParams`
Transit parameter object
Examples
--------
>>> from salter import kic_to_params
>>> params = kic_to_params(9705459)
"""
table = planet_props.table
params = batman.TransitParams() # object to store transit parameters
params.limb_dark = "quadratic" #limb darkening model
params.u = quad(table.loc[kic]['TEFF'], 4.5, 'KP') # limb darkening coefficients
params.t0 = table.loc[kic]['koi_time0bk'] + 2454833.0 # time of inferior conjunction
params.per = table.loc[kic]['koi_period'] # orbital period
constant = 1/(1 - params.u[0]/3 - params.u[1]/6)
params.rp = np.sqrt(table.loc[kic]['koi_depth'] / 1e6 / constant) # planet radius (in units of stellar radii)
params.ecc = 0 # table.loc[kic]['koi_eccen']
params.w = 90 # table.loc[kic]['koi_longp']
params.duration = table.loc[kic]['koi_duration'] / 24.0 # [days]
params.b = table.loc[kic]['koi_impact'] # impact parameter
a_rs, inc = T14b2aRsi(params.per,params.duration, params.b,
params.rp, params.ecc, params.w)
params.a = a_rs
params.inc = inc
return params
[docs]def transit_model(kic, times):
"""
Compute a transit model for KIC ``kic`` at times ``times``
Parameters
----------
kic : int
KIC number
times : `~astropy.time.Time`
Times to compute model
Returns
-------
flux : `~numpy.ndarray`
Model fluxes at ``tiems``
"""
table = planet_props.table
params = kic_to_params(kic)
m = batman.TransitModel(params, times) #initializes model
flux = m.light_curve(params) #calculates light curve
return flux
def impact_parameter(transit_params):
"""
Calculate impact parameter of transit from other transit parameters. From
Winn 2010, Eqn 7 [1]_.
Parameters
----------
transit_params : `~batman.TransitParams`
Transit light curve parameters
Returns
-------
b : float
Impact parameter
References
----------
.. [1] http://adsabs.harvard.edu/abs/2010arXiv1001.2010W
"""
e = transit_params.ecc # eccentricity
w = transit_params.w # long. of pericenter [deg]
a_on_Rs = transit_params.a # a/R_s
i = transit_params.inc # inclination [deg]
b = (a_on_Rs * np.cos(np.radians(i)) *
(1 - e**2) / (1 + e*np.sin(np.radians(w))))
return b
def T14b2aRsi(P, T14, b, RpRs, eccentricity, omega):
"""
Convert from duration and impact param to a/Rs and inclination
Parameters
----------
P : float
Period [days]
T14 : float
Duration [days]
b : float
Impact parameter
eccentricity : float
Eccentricity
omega : float
argument of periastron
Returns
aRs : float
semimajor axis in units of stellar radii
inc : float
Orbital inclination in units of degrees
"""
beta = (1 - eccentricity**2)/(1 + eccentricity*np.sin(np.radians(omega)))
C = np.sqrt(1 - eccentricity**2)/(1 + eccentricity*np.sin(np.radians(omega)))
i = np.arctan(beta * np.sqrt((1 + RpRs)**2 - b**2)/(b*np.sin(T14*np.pi/(P*C))))
aRs = b/(np.cos(i) * beta)
return aRs, np.degrees(i)