def plot_transit_fit(self, ax=None): res = rarr(self.result) period, zero_epoch, duration = res.trf_period, res.trf_zero_epoch, res.trf_duration if duration >= (0.25/24.): hdur = 24*duration*array([-0.5,0.5]) else: hdur = 24*array([-0.25,0.25]) duration = 0.5 flux_m = self.transit_model(self._pv_trf) phase = 24*(fold(self.time, period, zero_epoch, 0.5, normalize=False) - 0.5*period) sids = argsort(phase) phase = phase[sids] pmask = abs(phase) < 2*24*duration flux_m = flux_m[sids] flux_o = self.flux[sids] ax.plot(phase[pmask], flux_o[pmask], '.') ax.plot(phase[pmask], flux_m[pmask], 'k') ax.text(2.5*hdur[0], flux_m.min(), '{:6.4f}'.format(flux_m.min()), size=7, va='center', bbox=dict(color='white')) ax.axhline(flux_m.min(), alpha=0.25, ls='--') ax.get_yaxis().get_major_formatter().set_useOffset(False) ax.axvline(0, alpha=0.25, ls='--', lw=1) [ax.axvline(hd, alpha=0.25, ls='-', lw=1) for hd in hdur] fluxrange =flux_o.max()-flux_o.min() setp(ax, xlim=3*hdur, ylim=[flux_o.min()-0.05*fluxrange,flux_o.max()+0.05*fluxrange], xlabel='Phase [h]', ylabel='Normalised flux') setp(ax.get_yticklabels(), visible=False)
def plot_fit_and_eo(self, ax=None, nbin=None): nbin = nbin or self.nbin res = rarr(self.result) period, zero_epoch, duration = res.trf_period, res.trf_zero_epoch, res.trf_duration if duration >= (0.25/24.): hdur = 24*duration*array([-0.5,0.5]) else: hdur = 24*array([-0.25,0.25]) duration = 0.5 self.plot_transit_fit(ax[0]) for time,flux_o in ((self.time_even,self.flux_even), (self.time_odd,self.flux_odd)): phase = 24*(fold(time, period, zero_epoch, shift=0.5, normalize=False) - 0.5*period) bpd,bfd,bed = uf.bin(phase, flux_o, nbin) pmask = abs(bpd) < 2*24*duration omask = pmask & isfinite(bfd) ax[1].plot(bpd[omask], bfd[omask], marker='o', ms=2) [a.axvline(0, alpha=0.25, ls='--', lw=1) for a in ax] [[a.axvline(24*hd, alpha=0.25, ls='-', lw=1) for hd in hdur] for a in ax] setp(ax[1],xlim=3*hdur, xlabel='Phase [h]') setp(ax[1].get_yticklabels(), visible=False) ax[1].get_yaxis().get_major_formatter().set_useOffset(False)
def plot_fit_and_eo(self, ax=None, nbin=None): nbin = nbin or self.nbin res = rarr(self.result) period, zero_epoch, duration = res.trf_period, res.trf_zero_epoch, res.trf_duration hdur = 24 * duration * array([-0.5, 0.5]) self.plot_transit_fit(ax[0]) for time, flux_o in ((self.time_even, self.flux_even), (self.time_odd, self.flux_odd)): phase = 24 * ( fold(time, period, zero_epoch, shift=0.5, normalize=False) - 0.5 * period) bpd, bfd, bed = uf.bin(phase, flux_o, nbin) pmask = abs(bpd) < 2 * 24 * duration omask = pmask & isfinite(bfd) ax[1].plot(bpd[omask], bfd[omask], marker='o', ms=2) [a.axvline(0, alpha=0.25, ls='--', lw=1) for a in ax] [[a.axvline(24 * hd, alpha=0.25, ls='-', lw=1) for hd in hdur] for a in ax] setp(ax[1], xlim=3 * hdur, xlabel='Phase [h]') setp(ax[1].get_yticklabels(), visible=False) ax[1].get_yaxis().get_major_formatter().set_useOffset(False)
def plot_even_odd_lc(self, ax=None, nbin=None): nbin = nbin or self.nbin res = rarr(self.result) period, zero_epoch, duration = res.trf_period, res.trf_zero_epoch, res.trf_duration if duration >= (0.25/24.): hdur = array([-0.5,0.5]) * duration else: hdur = array([-1.,1.]) duration = 0.5 for time,flux_o in ((self.time_even,self.flux_even), (self.time_odd,self.flux_odd)): phase = fold(time, period, zero_epoch, shift=0.5, normalize=False) - 0.5*period flux_m = self.transit_model(self._pv_trf, time) bpd,bfd,bed = uf.bin(phase, flux_o, nbin) bpm,bfm,bem = uf.bin(phase, flux_m, nbin) pmask = abs(bpd) < 1.5*duration omask = pmask & isfinite(bfd) mmask = pmask & isfinite(bfm) ax[0].plot(bpd[omask], bfd[omask], marker='o') ax[1].plot(bpm[mmask], bfm[mmask], marker='o') [a.axvline(0, alpha=0.25, ls='--', lw=1) for a in ax] [[a.axvline(hd, alpha=0.25, ls='-', lw=1) for hd in hdur] for a in ax] setp(ax,xlim=3*hdur, xlabel='Phase [d]', ylim=(0.9998*nanmin(bfd[pmask]), 1.0002*nanmax(bfd[pmask]))) setp(ax[0], ylabel='Normalised flux') setp(ax[1].get_yticklabels(), visible=False)
def plot_transit_fit(self, ax=None): res = rarr(self.result) period, zero_epoch, duration = res.trf_period, res.trf_zero_epoch, res.trf_duration hdur = 24 * duration * array([-0.5, 0.5]) flux_m = self.transit_model(self._pv_trf) phase = 24 * (fold(self.time, period, zero_epoch, 0.5, normalize=False) - 0.5 * period) sids = argsort(phase) phase = phase[sids] pmask = abs(phase) < 2 * 24 * duration flux_m = flux_m[sids] flux_o = self.flux[sids] ax.plot(phase[pmask], flux_o[pmask], '.') ax.plot(phase[pmask], flux_m[pmask], 'k') ax.text(2.5 * hdur[0], flux_m.min(), '{:6.4f}'.format(flux_m.min()), size=7, va='center', bbox=dict(color='white')) ax.axhline(flux_m.min(), alpha=0.25, ls='--') ax.get_yaxis().get_major_formatter().set_useOffset(False) ax.axvline(0, alpha=0.25, ls='--', lw=1) [ax.axvline(hd, alpha=0.25, ls='-', lw=1) for hd in hdur] setp(ax, xlim=3 * hdur, xlabel='Phase [h]', ylabel='Normalised flux') setp(ax.get_yticklabels(), visible=False)
def plot_even_odd_lc(self, ax=None, nbin=None): nbin = nbin or self.nbin res = rarr(self.result) period, zero_epoch, duration = res.trf_period, res.trf_zero_epoch, res.trf_duration hdur = array([-0.5, 0.5]) * duration for time, flux_o in ((self.time_even, self.flux_even), (self.time_odd, self.flux_odd)): phase = fold(time, period, zero_epoch, shift=0.5, normalize=False) - 0.5 * period flux_m = self.transit_model(self._pv_trf, time) bpd, bfd, bed = uf.bin(phase, flux_o, nbin) bpm, bfm, bem = uf.bin(phase, flux_m, nbin) pmask = abs(bpd) < 1.5 * duration omask = pmask & isfinite(bfd) mmask = pmask & isfinite(bfm) ax[0].plot(bpd[omask], bfd[omask], marker='o') ax[1].plot(bpm[mmask], bfm[mmask], marker='o') [a.axvline(0, alpha=0.25, ls='--', lw=1) for a in ax] [[a.axvline(hd, alpha=0.25, ls='-', lw=1) for hd in hdur] for a in ax] setp(ax, xlim=3 * hdur, xlabel='Phase [d]', ylim=(0.9998 * nanmin(bfd[pmask]), 1.0002 * nanmax(bfd[pmask]))) setp(ax[0], ylabel='Normalised flux') setp(ax[1].get_yticklabels(), visible=False)
def plot_lc(self, ax=None, nbin=None): nbin = nbin or self.nbin r = rarr(self.result) period, t0, trdur = self._rbls['bls_period'], self._rbls[ 'bls_zero_epoch'], self._rbls[ 'bls_duration'] #r.trf_period, r.trf_zero_epoch, r.trf_duration phase = period * (fold(self.time, period, t0, shift=0.5) - 0.5) bp, bfo, beo = uf.bin(phase, self.flux, nbin) bp, bfm, bem = uf.bin(phase, self.transit_model(self._pv_trf), nbin) mo, mm = isfinite(bfo), isfinite(bfm) ax.plot(bp[mo], bfo[mo], '.') ax.plot(bp[mm], bfm[mm], 'k--', drawstyle='steps-mid') if self._rvar: flux_s = self.sine_model([self._rvar['sine_amplitude']], 2 * period, t0) bp, bf, be = uf.bin(phase, flux_s, nbin) ax.plot(bp, bf, 'k:', drawstyle='steps-mid') setp(ax, xlim=bp[[0, -1]], xlabel='Phase [d]', ylabel='Normalised flux') setp(ax.get_yticklabels(), visible=False) ax.get_yaxis().get_major_formatter().set_useOffset(False)
def plot_transits(self, ax=None): offset = 1.1*scoreatpercentile([f.ptp() for f in self.fluxes], 95) twodur = 24*2*self.duration for i,(time,flux) in enumerate(zip(self.times, self.fluxes)[:10]): phase = 24*(fold(time, self.period, self.zero_epoch, 0.5, normalize=False) - 0.5*self.period) sids = argsort(phase) phase, flux = phase[sids], flux[sids] pmask = abs(phase) < 2.5*twodur if any(pmask): ax.plot(phase[pmask], flux[pmask]+i*offset, marker='o') setp(ax, xlim=(-twodur,twodur), xlabel='Phase [h]', yticks=[])
def plot_transits(self, ax=None): offset = 1.1 * scoreatpercentile([f.ptp() for f in self.fluxes], 95) twodur = 24 * 2 * self.duration for i, (time, flux) in enumerate(zip(self.times, self.fluxes)[:10]): phase = 24 * (fold( time, self.period, self.zero_epoch, 0.5, normalize=False) - 0.5 * self.period) sids = argsort(phase) phase, flux = phase[sids], flux[sids] pmask = abs(phase) < 2.5 * twodur if any(pmask): ax.plot(phase[pmask], flux[pmask] + i * offset, marker='o') setp(ax, xlim=(-twodur, twodur), xlabel='Phase [h]', yticks=[])
def plot_lc(self, ax=None, nbin=None): nbin = nbin or self.nbin r = rarr(self.result) period, t0, trdur = self._rbls['bls_period'], self._rbls['bls_zero_epoch'], self._rbls['bls_duration'] #r.trf_period, r.trf_zero_epoch, r.trf_duration phase = period*(fold(self.time, period, t0, shift=0.5) - 0.5) bp,bfo,beo = uf.bin(phase, self.flux, nbin) bp,bfm,bem = uf.bin(phase, self.transit_model(self._pv_trf), nbin) mo,mm = isfinite(bfo), isfinite(bfm) ax.plot(bp[mo], bfo[mo], '.') ax.plot(bp[mm], bfm[mm], 'k--', drawstyle='steps-mid') if self._rvar: flux_s = self.sine_model([self._rvar['sine_amplitude']], 2*period, t0) bp,bf,be = uf.bin(phase, flux_s, nbin) ax.plot(bp, bf, 'k:', drawstyle='steps-mid') setp(ax,xlim=bp[[0,-1]], xlabel='Phase [d]', ylabel='Normalised flux') setp(ax.get_yticklabels(), visible=False) ax.get_yaxis().get_major_formatter().set_useOffset(False)
def create_transit_arrays(self): p = self._rbls['bls_period'] tc = self._rbls['bls_zero_epoch'] dur = max(0.15, self._rbls['bls_duration']) tid_arr = np.round((self.time - tc) / p).astype(np.int) tid_arr -= tid_arr.min() tids = unique(tid_arr) phase = p*(fold(self.time, p, tc, shift=0.5) - 0.5) pmask = abs(phase) < 5*dur self.times = [self.time[tid_arr==tt] for tt in unique(tids)] self.fluxes = [self.flux[tid_arr==tt] for tt in unique(tids)] self.flux_es = [self.flux_e[tid_arr==tt] for tt in unique(tids)] self.time_even = concatenate(self.times[0::2]) self.time_odd = concatenate(self.times[1::2]) self.flux_even = concatenate(self.fluxes[0::2]) self.flux_odd = concatenate(self.fluxes[1::2]) self.flux_e_even = concatenate(self.flux_es[0::2]) self.flux_e_odd = concatenate(self.flux_es[1::2])
def create_transit_arrays(self): p = self._rbls['bls_period'] tc = self._rbls['bls_zero_epoch'] dur = max(0.15, self._rbls['bls_duration']) tid_arr = np.round((self.time - tc) / p).astype(np.int) tid_arr -= tid_arr.min() tids = unique(tid_arr) phase = p * (fold(self.time, p, tc, shift=0.5) - 0.5) pmask = abs(phase) < 5 * dur self.times = [self.time[tid_arr == tt] for tt in unique(tids)] self.fluxes = [self.flux[tid_arr == tt] for tt in unique(tids)] self.flux_es = [self.flux_e[tid_arr == tt] for tt in unique(tids)] self.time_even = concatenate(self.times[0::2]) self.time_odd = concatenate(self.times[1::2]) self.flux_even = concatenate(self.fluxes[0::2]) self.flux_odd = concatenate(self.fluxes[1::2]) self.flux_e_even = concatenate(self.flux_es[0::2]) self.flux_e_odd = concatenate(self.flux_es[1::2])