def test_epoch_folding_search_expocorr_fails(self): """Test pulse phase calculation, frequency only.""" frequencies = np.arange(9.8, 9.99, 0.1/self.tseg) with pytest.raises(ValueError) as excinfo: freq, stat = epoch_folding_search(self.event_times, frequencies, nbin=23, expocorr=True) assert 'To calculate exposure correction' in str(excinfo)
def test_epoch_folding_search_expocorr_fails(self): """Test pulse phase calculation, frequency only.""" frequencies = np.arange(9.8, 9.99, 0.1 / self.tseg) with pytest.raises(ValueError) as excinfo: freq, stat = epoch_folding_search(self.event_times, frequencies, nbin=23, expocorr=True) assert 'To calculate exposure correction' in str(excinfo)
def test_epoch_folding_search_weights(self): """Test pulse phase calculation, frequency only.""" frequencies = np.arange(9.8, 9.99, 0.1/self.tseg) freq, stat = epoch_folding_search(self.times, frequencies, nbin=16, weights=self.counts) minbin = np.argmin(np.abs(frequencies - self.pulse_frequency)) maxstatbin = freq[np.argmax(stat)] assert np.allclose(maxstatbin, frequencies[minbin], atol=0.1/self.tseg)
def test_epoch_folding_search_expocorr(self): """Test pulse phase calculation, frequency only.""" frequencies = np.arange(9.8, 9.99, 0.1/self.tseg) freq, stat = epoch_folding_search(self.event_times, frequencies, nbin=42, expocorr=True, gti=self.gti) minbin = np.argmin(np.abs(frequencies - self.pulse_frequency)) maxstatbin = freq[np.argmax(stat)] assert np.allclose(maxstatbin, frequencies[minbin], atol=0.1/self.tseg)
def test_epoch_folding_search_expocorr(self): """Test pulse phase calculation, frequency only.""" frequencies = np.arange(9.89, 9.91, 0.1/self.tseg) freq, stat = epoch_folding_search(self.event_times, frequencies, nbin=16, expocorr=True) minbin = np.argmin(np.abs(frequencies - self.pulse_frequency)) maxstatbin = freq[np.argmax(stat)] assert maxstatbin == frequencies[minbin]
def test_epoch_folding_search(self): """Test pulse phase calculation, frequency only.""" frequencies = np.arange(9.85, 9.95, 0.1 / self.tseg) freq, stat = epoch_folding_search(self.event_times, frequencies, nbin=16) minbin = np.argmin(np.abs(frequencies - self.pulse_frequency)) maxstatbin = freq[np.argmax(stat)] assert maxstatbin == frequencies[minbin]
def test_epoch_folding_search_fdot(self): """Test pulse phase calculation, frequency only.""" frequencies = np.arange(9.8, 9.99, 0.1/self.tseg) fdots = [-0.1, 0, 0.1] freq, fdot, stat = epoch_folding_search(self.event_times, frequencies, nbin=43, fdots=fdots) minbin = np.argmin(np.abs(frequencies - self.pulse_frequency)) maxstatbin = freq.flatten()[np.argmax(stat)] assert np.allclose(maxstatbin, frequencies[minbin], atol=0.1/self.tseg) maxfdot = fdot.flatten()[np.argmax(stat)] assert np.allclose(maxfdot, 0.0, atol=0.1/self.tseg)
def test_epoch_folding_search_weights(self): """Test pulse phase calculation, frequency only.""" frequencies = np.arange(9.8, 9.99, 0.1 / self.tseg) freq, stat = epoch_folding_search(self.times, frequencies, nbin=16, weights=self.counts) minbin = np.argmin(np.abs(frequencies - self.pulse_frequency)) maxstatbin = freq[np.argmax(stat)] assert np.allclose(maxstatbin, frequencies[minbin], atol=0.1 / self.tseg)
def test_epoch_folding_search_expocorr(self): """Test pulse phase calculation, frequency only.""" frequencies = np.arange(9.8, 9.99, 0.1 / self.tseg) freq, stat = epoch_folding_search(self.event_times, frequencies, nbin=42, expocorr=True, gti=self.gti) minbin = np.argmin(np.abs(frequencies - self.pulse_frequency)) maxstatbin = freq[np.argmax(stat)] assert np.allclose(maxstatbin, frequencies[minbin], atol=0.1 / self.tseg)
def test_epoch_folding_search_fdot(self): """Test pulse phase calculation, frequency only.""" frequencies = np.arange(9.8, 9.99, 0.1 / self.tseg) fdots = [-0.1, 0, 0.1] freq, fdot, stat = epoch_folding_search(self.event_times, frequencies, nbin=43, fdots=fdots) minbin = np.argmin(np.abs(frequencies - self.pulse_frequency)) maxstatbin = freq.flatten()[np.argmax(stat)] assert np.allclose(maxstatbin, frequencies[minbin], atol=0.1 / self.tseg) maxfdot = fdot.flatten()[np.argmax(stat)] assert np.allclose(maxfdot, 0.0, atol=0.1 / self.tseg)
c1 = fits.Column(name='TIMES', array=TIME, format='D') t = fits.BinTableHDU.from_columns([c1], name='VALUES') t.writeto('fits_folder/' + add_space(source) + '_nustar_times.fits', overwrite=True) times = TIME print('Search for the best frequency') # We will search for pulsations over a range of frequencies around the known pulsation period. df = (period_ranges[1] - period_ranges[0]) / period_bins frequencies = 1 / np.arange(period_ranges[0], period_ranges[1], df) freq, efstat = epoch_folding_search(times, frequencies, nbin=nbin) pulse_frequency = freq[np.where(efstat == max(efstat))[0][0]] print('pulse frequency', pulse_frequency) _ = write_files('pulse_frequency_NuSTAR', pulse_frequency) #fitting epoch folding distribution with Lorentzian curve g_init = models.Lorentz1D( amplitude=max(efstat) - min(efstat), x_0=pulse_frequency, fwhm=pulse_frequency / 500) + models.Const1D(amplitude=min(efstat)) fit_g = fitting.LevMarLSQFitter() bin_max = [np.where(efstat == max(efstat))[0][0]][0] bin_left_min = 0 bin_right_min = len(efstat)