def run_bls(self): b = self.bls r = self.bls() self._rbls = array((b.bsde, b.tc, b.bper, b.duration, b.depth, sqrt(b.depth), floor(diff(self.time[[0,-1]])[0]/b.bper)), dt_blsresult) self._pv_bls = [b.bper, b.tc, sqrt(b.depth), as_from_rhop(2.5, b.bper), 0.1] self.create_transit_arrays() self.lcinfo['lnlike_constant'] = ll_normal_es(self.flux, ones_like(self.flux), self.flux_e) self.period = b.bper self.zero_epoch = b.tc self.duration = b.duration
def compute_lc_model(self, pv): _tc, _p, _b = pv[0], pv[1], pv[3] _ld = pv[self.ldc_slice] _a = as_from_rhop(pv[2], pv[1]) _i = m.acos(_b/_a) k = np.sqrt(pv[self.k2_slice]) _k = k.mean() kf = (k/_k)**2 z = of.z_circular(self.time, _tc, _p, _a, _i, 4) flux = self.tmodel(z, _k, pv[self.ldc_slice]) return (kf*(flux-1.)+1.).reshape((self.npt,self.npb))
def compute_lc_model(self, pv): _tc, _p, _b = pv[0], pv[1], pv[3] _ld = pv[self.ldc_slice] _a = as_from_rhop(pv[2], pv[1]) _i = m.acos(_b/_a) self.ld[0::2] = 2.*np.sqrt(_ld[0::2])*_ld[1::2] self.ld[1::2] = np.sqrt(_ld[0::2])*(1.-2.*_ld[1::2]) k = np.sqrt(pv[self.k2_slice]) _k = k.mean() kf = (k/_k)**2 z = of.z_circular(self.time, _tc, _p, _a, _i, 4) flux = self.tmodel(z, _k, self.ld) return kf*(flux-1.)+1.
def run_bls(self): b = self.bls r = self.bls() self._rbls = array( (b.bsde, b.tc, b.bper, b.duration, b.depth, sqrt(b.depth), floor(diff(self.time[[0, -1]])[0] / b.bper)), dt_blsresult) self._pv_bls = [ b.bper, b.tc, sqrt(b.depth), as_from_rhop(2.5, b.bper), 0.1 ] self.create_transit_arrays() self.lcinfo['lnlike_constant'] = ll_normal_es(self.flux, ones_like(self.flux), self.flux_e) self.period = b.bper self.zero_epoch = b.tc self.duration = b.duration
def __call__(self, qmi=0.02, qma = 0.25, df = 0.0001, nf = 10000, nb = 1000, fmin = 1./50., dur=0.2, period_range=None, plot=False, win=49, period_fit_prior=None, t0_fit_prior=None): self.bb = blsMOD.blsMOD(self.t,self.f, nf, fmin, df, nb, qmi, qma,period_range) print("Computing bls...") self.bb.compute() self.pv_bls = [self.bb._best_period,self.bb._epoch,np.sqrt(self.bb._depth),as_from_rhop(2.5,self.bb._best_period),0.1] self.fit_transit(pv_init=self.pv_bls,time=self.t,flux=self.f,period_fit_prior=period_fit_prior,t0_fit_prior=t0_fit_prior) print("Per=",self.pv_min[0],"epoch=",self.pv_min[1]) if plot: self.fig, self.ax = plt.subplots(nrows=4) self.bb.plot_power_spectrum(inverse=True,ax=self.ax.flat[0]) self.bb.plot_folded(ax=self.ax.flat[1]) self.bb.plot_transits(ax=self.ax.flat[2]) if self.time is not None: self.t_folded,self.f_folded = k2help.fold_transit_everest(self.t,self.f,t0=self.bb._epoch,period=self.bb._best_period,dur=dur) self.ax.flat[3].plot(self.t_folded,self.f_folded,"k.",label="BLS",alpha=0.5) self.t_folded,self.f_folded = k2help.fold_transit_everest(self.t,self.f,t0=self.pv_min[1],period=self.pv_min[0],dur=dur) self.ax.flat[3].plot(self.t_folded,self.f_folded,"r.",label="Best Fit",markersize=5) self.ax.flat[3].legend(loc="lower left",fontsize=8) else: self.t_folded,self.f_folded = self.star.get_folded_transit(t0=self.bb._epoch,period=self.bb._best_period,dur=dur,plot=False); self.ax.flat[3].plot(self.t_folded,self.f_folded,"k.",label="BLS",alpha=0.5) self.t_folded,self.f_folded = self.star.get_folded_transit(t0=self.pv_min[1],period=self.pv_min[0],dur=dur,plot=False); self.ax.flat[3].plot(self.t_folded,self.f_folded,"r.",label="Best Fit",markersize=5) self.ax.flat[3].legend(loc="lower left",fontsize=8)