def add_planet(self): """Add parameters for one more planet to posterior. """ current_num_planets = self.post.params.num_planets fitting_basis = self.post.params.basis.name param_list = fitting_basis.split() new_num_planets = current_num_planets + 1 default_pars = utils.initialize_default_pars( instnames=self.tels, fitting_basis=fitting_basis) new_params = radvel.Parameters(new_num_planets, basis=fitting_basis) for planet in np.arange(1, new_num_planets): for par in param_list: parkey = par + str(planet) new_params[parkey] = self.post.params[parkey] for par in self.post.likelihood.extra_params: new_params[par] = self.post.params[par] # For gamma and jitter # Set default parameters for n+1th planet default_params = utils.initialize_default_pars( self.tels, fitting_basis=fitting_basis) for par in param_list: parkey = par + str(new_num_planets) onepar = par + '1' # MESSY, FIX THIS 10/22/18 new_params[parkey] = default_params[onepar] new_params['dvdt'] = self.post.params['dvdt'] new_params['curv'] = self.post.params['curv'] if not self.post.params['dvdt'].vary: new_params['dvdt'].vary = False if not self.post.params['curv'].vary: new_params['curv'].vary = False new_params['per{}'.format(new_num_planets)].vary = False if not self.eccentric: new_params['secosw{}'.format(new_num_planets)].vary = False new_params['sesinw{}'.format(new_num_planets)].vary = False new_params.num_planets = new_num_planets # Respect setup file priors. if self.setup: priors = self.priors else: priors = [] priors.append(radvel.prior.PositiveKPrior(new_num_planets)) priors.append(radvel.prior.EccentricityPrior(new_num_planets)) new_post = utils.initialize_post(self.data, new_params, priors) self.post = new_post
def test_priors(): """ Test basic functionality of all Priors """ params = radvel.Parameters(1) params['per1'] = radvel.Parameter(10.0) params['tc1'] = radvel.Parameter(0.0) params['secosw1'] = radvel.Parameter(0.0) params['sesinw1'] = radvel.Parameter(0.0) params['logk1'] = radvel.Parameter(1.5) testTex = 'Delta Function Prior on $\sqrt{e}\cos{\omega}_{b}$' def userdef_prior_func(inp_list): if inp_list[0] >= 0. and inp_list[0] < 1.: return 0. else: return -np.inf prior_tests = { radvel.prior.EccentricityPrior(1): 1 / .99, radvel.prior.PositiveKPrior(1): 1.0, radvel.prior.Gaussian('per1', 9.9, 0.1): scipy.stats.norm(9.9, 0.1).pdf(10.), radvel.prior.HardBounds('per1', 1.0, 9.0): 0., radvel.prior.HardBounds('per1', 1.0, 11.0): 1. / 10., radvel.prior.Jeffreys('per1', 0.1, 100.0): (1. / 10.) / np.log(100. / 0.1), radvel.prior.ModifiedJeffreys('per1', 0.1, 100.0, 0.): (1. / 10.) / np.log(100. / 0.1), radvel.prior.ModifiedJeffreys('per1', 2., 100.0, 1.): (1. / 9.) / np.log(99.), radvel.prior.SecondaryEclipsePrior(1, 5.0, 10.0): 1. / np.sqrt(2. * np.pi), radvel.prior.NumericalPrior(['sesinw1'], np.random.randn(1, 5000000)): scipy.stats.norm(0, 1).pdf(0.), radvel.prior.UserDefinedPrior(['secosw1'], userdef_prior_func, testTex): 1.0 } for prior, val in prior_tests.items(): print(prior.__repr__()) print(prior.__str__()) tolerance = .01 print(abs(np.exp(prior(params)))) print(val) assert abs(np.exp(prior(params)) - val) < tolerance, \ "Prior output does not match expectation"
def initialize_model(e): time_base = 0.0 params = radvel.Parameters(1, basis='per tp e w k') params['per1'] = radvel.Parameter(value=6) params['tp1'] = radvel.Parameter(value=2) params['e1'] = radvel.Parameter(value=e) params['w1'] = radvel.Parameter(value=0.0) params['k1'] = radvel.Parameter(value=10.1) mod = radvel.RVModel(params, time_base=time_base) mod.params['dvdt'] = radvel.Parameter(value=-0.0) mod.params['curv'] = radvel.Parameter(value=0.0) return mod
def initialize_default_pars(instnames=['inst'], times=None, linear=True, fitting_basis='per tc secosw sesinw k'): """Set up a default Parameters object. None of the basis values are free params, for the initial 0-planet fit. Remember to reset .vary to True for all relevant params. Args: instnames (list): codes of instruments used times (array): optional, timestamps of observations. linear (bool): Determine whether to optimize gammas linearly. fitting_basis: optional Returns: Parameters object """ anybasis_params = radvel.Parameters(num_planets=1, basis='per tc e w k') if times is None: anybasis_params['tc1'] = radvel.Parameter(value=2455200.0) else: anybasis_params['tc1'] = radvel.Parameter(value=np.median(times)) anybasis_params['w1'] = radvel.Parameter(value=np.pi / 2.) anybasis_params['k1'] = radvel.Parameter(value=0.0) anybasis_params['e1'] = radvel.Parameter(value=0.0) anybasis_params['per1'] = radvel.Parameter(value=100.0) anybasis_params['dvdt'] = radvel.Parameter(value=0.0) anybasis_params['curv'] = radvel.Parameter(value=0.0) for inst in instnames: if linear: anybasis_params['gamma_' + inst] = radvel.Parameter(value=0.0, linear=True, vary=False) else: anybasis_params['gamma_' + inst] = radvel.Parameter(value=0.0) anybasis_params['jit_' + inst] = radvel.Parameter(value=2.0) params = anybasis_params.basis.to_any_basis(anybasis_params, fitting_basis) params['secosw1'].vary = False params['sesinw1'].vary = False params['per1'].vary = False params['dvdt'].vary = False params['curv'].vary = False return params
def initialize_params(): params = radvel.Parameters(1, basis='per tp e w k') params['per1'] = radvel.Parameter(value=12525.0) params['tp1'] = radvel.Parameter(value=2450593.5) params['k1'] = radvel.Parameter(value=725.3) params['e1'] = radvel.Parameter(value=0.74) params['w1'] = radvel.Parameter(value=4.6967) params['dvdt'] = radvel.Parameter(value=0, vary=vary_dvdt) params['curv'] = radvel.Parameter(value=0, vary=False) # Convert input orbital parameters into the fitting basis params = params.basis.to_any_basis(params, fitting_basis) return params
def initialize_params(): params = radvel.Parameters(1, basis='per tc e w k') params['per1'] = radvel.Parameter(value=26905) params['tc1'] = radvel.Parameter(value=7604.22 + bjd0) params['k1'] = radvel.Parameter(value=711.0) params['e1'] = radvel.Parameter(value=0.637) params['w1'] = radvel.Parameter(value=2.358) params['dvdt'] = radvel.Parameter(value=0, vary=vary_dvdt) params['curv'] = radvel.Parameter(value=0, vary=False) # Convert input orbital parameters into the fitting basis params = params.basis.to_any_basis(params, fitting_basis) return params
def initialize_params(): params = radvel.Parameters(1, basis='per tc e w k') params['per1'] = radvel.Parameter(value=323.33) params['tc1'] = radvel.Parameter(value=2450305.3) params['k1'] = radvel.Parameter(value=27019.0) params['e1'] = radvel.Parameter(value=0.832) params['w1'] = radvel.Parameter(value=2.2) params['dvdt'] = radvel.Parameter(value=4.07, vary=vary_dvdt) params['curv'] = radvel.Parameter(value=0, vary=False) # Convert input orbital parameters into the fitting basis params = params.basis.to_any_basis(params, fitting_basis) return params
def initialize_params(): params = radvel.Parameters(1, basis='per tc secosw sesinw k') params['per1'] = radvel.Parameter(value=30477.33) params['tc1'] = radvel.Parameter(value=2451703.3) params['k1'] = radvel.Parameter(value=4252.6) params['secosw1'] = radvel.Parameter(value=0.23) params['sesinw1'] = radvel.Parameter(value=0.65) params['dvdt'] = radvel.Parameter(value=0, vary=vary_dvdt) params['curv'] = radvel.Parameter(value=0, vary=False) # Convert input orbital parameters into the fitting basis params = params.basis.to_any_basis(params, fitting_basis) return params
def initialize_params(): params = radvel.Parameters(1, basis='per tc e w k') params['per1'] = radvel.Parameter(value=4433.0) params['tc1'] = radvel.Parameter(value=2451281.0) params['k1'] = radvel.Parameter(value=612.2) params['e1'] = radvel.Parameter(value=0.34) params['w1'] = radvel.Parameter(value=-2.36) params['dvdt'] = radvel.Parameter(value=0, vary=vary_dvdt) params['curv'] = radvel.Parameter(value=0, vary=False) # Convert input orbital parameters into the fitting basis params = params.basis.to_any_basis(params, fitting_basis) return params
def initialize_params(): params = radvel.Parameters(1,basis='per tc e w k') params['per1'] = radvel.Parameter(value=44495.8) params['tc1'] = radvel.Parameter(value=2441100.06) params['k1'] = radvel.Parameter(value=578.2) params['e1'] = radvel.Parameter(value=0.63) params['w1'] = radvel.Parameter(value=-1.85) params['dvdt'] = radvel.Parameter(value=0, vary=vary_dvdt) params['curv'] = radvel.Parameter(value=0, vary=False) # Convert input orbital parameters into the fitting basis params = params.basis.to_any_basis(params,fitting_basis) return params
def initialize_params(): params = radvel.Parameters(1, basis='per tc e w k') params['per1'] = radvel.Parameter(value=6829) params['tc1'] = radvel.Parameter(value=2458538.0) params['k1'] = radvel.Parameter(value=3530) params['e1'] = radvel.Parameter(value=0.87) params['w1'] = radvel.Parameter(value=2.97) params['dvdt'] = radvel.Parameter(value=0, vary=vary_dvdt) params['curv'] = radvel.Parameter(value=0, vary=False) # Convert input orbital parameters into the fitting basis params = params.basis.to_any_basis(params, fitting_basis) return params
def initialize_params(): params = radvel.Parameters(1, basis='per tp e w k') params['per1'] = radvel.Parameter(value=25962.) params['tp1'] = radvel.Parameter(value=18134.) params['e1'] = radvel.Parameter(value=0.84) params['w1'] = radvel.Parameter(value=-0.26) params['k1'] = radvel.Parameter(value=38.) params['dvdt'] = radvel.Parameter(value=0, vary=vary_dvdt) params['curv'] = radvel.Parameter(value=0, vary=False) # Convert input orbital parameters into the fitting basis params = params.basis.to_any_basis(params, fitting_basis) return params
def initialize_params(): params = radvel.Parameters(1, basis='per tc e w k') params['per1'] = radvel.Parameter(value=10084.5) params['tc1'] = radvel.Parameter(value=2455548.8) params['k1'] = radvel.Parameter(value=900.3) params['e1'] = radvel.Parameter(value=0.52) params['w1'] = radvel.Parameter(value=-0.83) params['dvdt'] = radvel.Parameter(value=0, vary=vary_dvdt) params['curv'] = radvel.Parameter(value=0, vary=False) # Convert input orbital parameters into the fitting basis params = params.basis.to_any_basis(params, fitting_basis) return params
def initialize_params(): params = radvel.Parameters(1, basis='per tc e w k') params['per1'] = radvel.Parameter(value=8443.5) #8585.24) params['tc1'] = radvel.Parameter(value=2458314.1) #8341.5) params['k1'] = radvel.Parameter(value=2908.0) #2958.5) params['e1'] = radvel.Parameter(value=0.678) #0.685) params['w1'] = radvel.Parameter(value=1.129) #1.134) params['dvdt'] = radvel.Parameter(value=0, vary=False) params['curv'] = radvel.Parameter(value=0, vary=False) # Convert input orbital parameters into the fitting basis params = params.basis.to_any_basis(params, fitting_basis) return params
def initialize_params(): params = radvel.Parameters(1,basis='per tc e w k') params['per1'] = radvel.Parameter(value=16469.7) params['tc1'] = radvel.Parameter(value=2457211.2) params['k1'] = radvel.Parameter(value=786.5) params['e1'] = radvel.Parameter(value=0.645) params['w1'] = radvel.Parameter(value=-2.48) params['dvdt'] = radvel.Parameter(value=0, vary=vary_dvdt) params['curv'] = radvel.Parameter(value=0, vary=False) # Convert input orbital parameters into the fitting basis params = params.basis.to_any_basis(params,fitting_basis) return params
def initialize_params(): params = radvel.Parameters(1, basis='per tp e w k') params['per1'] = radvel.Parameter(value=71.4808) params['tp1'] = radvel.Parameter(value=2450300.608) params['k1'] = radvel.Parameter(value=343.232) params['e1'] = radvel.Parameter(value=0.11316) params['w1'] = radvel.Parameter(value=2.89598) params['dvdt'] = radvel.Parameter(value=0, vary=False) params['curv'] = radvel.Parameter(value=0, vary=False) # Convert input orbital parameters into the fitting basis params = params.basis.to_any_basis(params, fitting_basis) return params
def initialize_params(): params = radvel.Parameters(1, basis='per tc e w k') params['per1'] = radvel.Parameter(value=709.54) params['tc1'] = radvel.Parameter(value=2457758.54) #2454920.0) params['k1'] = radvel.Parameter(value=5672.0) params['e1'] = radvel.Parameter(value=0.32) params['w1'] = radvel.Parameter(value=1.11) params['dvdt'] = radvel.Parameter(value=0, vary=vary_dvdt) params['curv'] = radvel.Parameter(value=0, vary=False) # Convert input orbital parameters into the fitting basis params = params.basis.to_any_basis(params, fitting_basis) return params
def initialize_params(): params = radvel.Parameters(1,basis='per tc e w k') params['per1'] = radvel.Parameter(value=80686) params['tc1'] = radvel.Parameter(value=2455110.7) params['k1'] = radvel.Parameter(value=2730.3) params['e1'] = radvel.Parameter(value=0.66) params['w1'] = radvel.Parameter(value=0.76) params['dvdt'] = radvel.Parameter(value=0, vary=vary_dvdt) params['curv'] = radvel.Parameter(value=0, vary=False) # Convert input orbital parameters into the fitting basis params = params.basis.to_any_basis(params,fitting_basis) return params
def __init__(self,j,k,acr_curves_fn,time_base=0): self.j = j self.k = k self._acr_curves_fn = acr_curves_fn params = radvel.Parameters(1,basis ='per tc secosw sesinw k') params.pop('secosw1') params.pop('sesinw1') alpha = ((j-k)/j)**(2/3.) params['jres']=radvel.Parameter(j,vary=False) params['kres']=radvel.Parameter(k,vary=False) params['m2_by_m1']=radvel.Parameter(1,vary=True) params['stcosw']=radvel.Parameter(0,vary=True) params['stsinw']=radvel.Parameter(0,vary=True) params['angle_n']=radvel.Parameter(0,vary=False) super(ACRModel,self).__init__(params,acr_forward_model,time_base)
def initialize_params(): params = radvel.Parameters(1, basis='per tc e w k') #From Halbwachs et al. 2018 params['per1'] = radvel.Parameter(value=5554.71) params['tc1'] = radvel.Parameter(value=2453540.68) #2448024.2) params['k1'] = radvel.Parameter(value=2812.17) params['e1'] = radvel.Parameter(value=0.656) params['w1'] = radvel.Parameter(value=1.987) params['dvdt'] = radvel.Parameter(value=0, vary=vary_dvdt) params['curv'] = radvel.Parameter(value=0, vary=False) # Convert input orbital parameters into the fitting basis params = params.basis.to_any_basis(params, fitting_basis) return params
def initialize_params(): params = radvel.Parameters(nplanets, basis='per tp e w k') params['per1'] = radvel.Parameter(value=7832.52) params['tp1'] = radvel.Parameter(value=2460992.28) #2453159.76) params['k1'] = radvel.Parameter(value=2041.37) params['e1'] = radvel.Parameter(value=0.357) params['w1'] = radvel.Parameter(value=-2.176) params['dvdt'] = radvel.Parameter(value=0, vary=False) params['curv'] = radvel.Parameter(value=0, vary=False) # Convert input orbital parameters into the fitting basis params = params.basis.to_any_basis(params, fitting_basis) return params
def initialize_params(): params = radvel.Parameters(nplanets, basis='per tp e w k') params['per1'] = radvel.Parameter(value=18882.) #8729.5) params['tp1'] = radvel.Parameter(value=2457296.2) #2457218.85) params['k1'] = radvel.Parameter(value=5481.5) #4756.) params['e1'] = radvel.Parameter(value=0.66) #0.54) params['w1'] = radvel.Parameter(value=-2.59) #-2.628) params['dvdt'] = radvel.Parameter(value=0, vary=False) params['curv'] = radvel.Parameter(value=0, vary=False) # Convert input orbital parameters into the fitting basis params = params.basis.to_any_basis(params, fitting_basis) return params
def initialize_params(): params = radvel.Parameters(nplanets, basis='per tp e w k') params['per1'] = radvel.Parameter(value=31168.7) params['tp1'] = radvel.Parameter(value=2454063.2) params['k1'] = radvel.Parameter(value=8619.68) params['e1'] = radvel.Parameter(value=0.9776) params['w1'] = radvel.Parameter(value=1.4421) params['dvdt'] = radvel.Parameter(value=0, vary=False) params['curv'] = radvel.Parameter(value=0, vary=False) # Convert input orbital parameters into the fitting basis params = params.basis.to_any_basis(params, fitting_basis) return params
def initialize_params(): params = radvel.Parameters(nplanets, basis='per tp e w k') params['per1'] = radvel.Parameter(value=494.62) params['tp1'] = radvel.Parameter(value=2458002.08) #2457507.46) params['k1'] = radvel.Parameter(value=69.9) params['e1'] = radvel.Parameter(value=0.741) params['w1'] = radvel.Parameter(value=1.774) params['dvdt'] = radvel.Parameter(value=0, vary=False) params['curv'] = radvel.Parameter(value=0, vary=False) # Convert input orbital parameters into the fitting basis params = params.basis.to_any_basis(params, fitting_basis) return params
def initialize_params(): params = radvel.Parameters(1,basis='per tc e w k') params['per1'] = radvel.Parameter(value=14.8386, vary=True) params['tc1'] = radvel.Parameter(value=2450770.578) params['k1'] = radvel.Parameter(value=10713.9) params['e1'] = radvel.Parameter(value=0.206929) params['w1'] = radvel.Parameter(value=0.179116) params['dvdt'] = radvel.Parameter(value=0, vary=vary_dvdt) params['curv'] = radvel.Parameter(value=0, vary=False) # Convert input orbital parameters into the fitting basis params = params.basis.to_any_basis(params,fitting_basis) return params
def initialize_params(): params = radvel.Parameters(nplanets, basis='per tp e w k') params['per1'] = radvel.Parameter(value=694.29) params['tp1'] = radvel.Parameter(value=2456800) params['k1'] = radvel.Parameter(value=8239.) params['e1'] = radvel.Parameter(value=0.84) params['w1'] = radvel.Parameter(value=-2.6) params['dvdt'] = radvel.Parameter(value=0, vary=False) params['curv'] = radvel.Parameter(value=0, vary=False) # Convert input orbital parameters into the fitting basis params = params.basis.to_any_basis(params, fitting_basis) return params
def initialize_params(): params = radvel.Parameters(nplanets, basis='per tp e w k') params['per1'] = radvel.Parameter(value=13296.1) params['tp1'] = radvel.Parameter(value=2454937) params['k1'] = radvel.Parameter(value=2619) params['e1'] = radvel.Parameter(value=0.06) params['w1'] = radvel.Parameter(value=-1.047) params['dvdt'] = radvel.Parameter(value=0, vary=False) params['curv'] = radvel.Parameter(value=0, vary=False) # Convert input orbital parameters into the fitting basis params = params.basis.to_any_basis(params, fitting_basis) return params
def initialize_params(): params = radvel.Parameters(nplanets, basis='per tp e w k') params['per1'] = radvel.Parameter(value=25884.52) params['tp1'] = radvel.Parameter(value=2453958.17) params['k1'] = radvel.Parameter(value=1755.8) params['e1'] = radvel.Parameter(value=0.59) params['w1'] = radvel.Parameter(value=-0.87) params['dvdt'] = radvel.Parameter(value=0, vary=False) params['curv'] = radvel.Parameter(value=0, vary=False) # Convert input orbital parameters into the fitting basis params = params.basis.to_any_basis(params,fitting_basis) return params
def initialize_params(): params = radvel.Parameters(nplanets, basis='per tp e w k') params['per1'] = radvel.Parameter(value=4401.43) params['tp1'] = radvel.Parameter(value=2456550.94) params['k1'] = radvel.Parameter(value=4000.) params['e1'] = radvel.Parameter(value=0.62) params['w1'] = radvel.Parameter(value=0.39) params['dvdt'] = radvel.Parameter(value=0, vary=False) params['curv'] = radvel.Parameter(value=0, vary=False) # Convert input orbital parameters into the fitting basis params = params.basis.to_any_basis(params,fitting_basis) return params
def initialize_params(): params = radvel.Parameters(nplanets, basis='per tp e w k') params['per1'] = radvel.Parameter(value=3759.22) params['tp1'] = radvel.Parameter(value=2457360.69) params['k1'] = radvel.Parameter(value=1336.42) params['e1'] = radvel.Parameter(value=0.60) params['w1'] = radvel.Parameter(value=0.94) params['dvdt'] = radvel.Parameter(value=0, vary=False) params['curv'] = radvel.Parameter(value=0, vary=False) # Convert input orbital parameters into the fitting basis params = params.basis.to_any_basis(params,fitting_basis) return params