def testPhaseFoldTime(self): time = np.arange(0, 2, 0.1) # Simple. tfold = util.phase_fold_time(time, period=1, t0=0.45) expected = [ -0.45, -0.35, -0.25, -0.15, -0.05, 0.05, 0.15, 0.25, 0.35, 0.45, -0.45, -0.35, -0.25, -0.15, -0.05, 0.05, 0.15, 0.25, 0.35, 0.45 ] self.assertSequenceAlmostEqual(expected, tfold) # Large t0. tfold = util.phase_fold_time(time, period=1, t0=1.25) expected = [ -0.25, -0.15, -0.05, 0.05, 0.15, 0.25, 0.35, 0.45, -0.45, -0.35, -0.25, -0.15, -0.05, 0.05, 0.15, 0.25, 0.35, 0.45, -0.45, -0.35 ] self.assertSequenceAlmostEqual(expected, tfold) # Negative t0. tfold = util.phase_fold_time(time, period=1, t0=-1.65) expected = [ -0.35, -0.25, -0.15, -0.05, 0.05, 0.15, 0.25, 0.35, 0.45, -0.45, -0.35, -0.25, -0.15, -0.05, 0.05, 0.15, 0.25, 0.35, 0.45, -0.45 ] self.assertSequenceAlmostEqual(expected, tfold) # Negative time. time = np.arange(-3, -1, 0.1) tfold = util.phase_fold_time(time, period=1, t0=0.55) expected = [ 0.45, -0.45, -0.35, -0.25, -0.15, -0.05, 0.05, 0.15, 0.25, 0.35, 0.45, -0.45, -0.35, -0.25, -0.15, -0.05, 0.05, 0.15, 0.25, 0.35 ] self.assertSequenceAlmostEqual(expected, tfold)
def phase_fold_and_sort_light_curve(time, flux, period, t0): """Phase folds a light curve and sorts by ascending time. Args: time: 1D NumPy array of time values. flux: 1D NumPy array of flux values. period: A positive real scalar; the period to fold over. t0: The center of the resulting folded vector; this value is mapped to 0. Returns: folded_time: 1D NumPy array of phase folded time values in [-period / 2, period / 2), where 0 corresponds to t0 in the original time array. Values are sorted in ascending order. folded_flux: 1D NumPy array. Values are the same as the original input array, but sorted by folded_time. """ # Phase fold time. time = util.phase_fold_time(time, period, t0) # Sort by ascending time. sorted_i = np.argsort(time) time = time[sorted_i] flux = flux[sorted_i] return time, flux
def phase_fold_and_sort_light_curve(time, flux, mask, period, t0): if not len(time): return np.array([]), np.array([]), np.array([]), np.array([]) # Phase fold time. time, fold_num = util.phase_fold_time(time, period, t0) # Sort by ascending time. sorted_i = np.argsort(time) time = time[sorted_i] flux = flux[sorted_i] mask = mask[sorted_i] fold_num = fold_num[sorted_i] return time, flux, fold_num, mask
def get_spline_mask(time, period, t0, tdur): phase, _ = util.phase_fold_time(time, period, t0) outtran = (np.abs(phase) > (tdur / 2)) return outtran