diff --git a/signalgen.py b/signalgen.py index ba8d021..3eee25d 100755 --- a/signalgen.py +++ b/signalgen.py @@ -13,6 +13,7 @@ from scipy.stats import median_abs_deviation from your import Your, Writer from your.formats.filwriter import make_sigproc_object from will import create, inject +from scipy import signal @@ -43,8 +44,17 @@ def show_dynamic( save - Save the plot as `title` + `.png` """ - spectra_mads = median_fitter(np.median(dynamic_spectra, axis=0)) - flat = dynamic_spectra - spectra_mads + + #downsample the spectra first + downFac = np.shape(dynamic_spectra)[0] // 8920 + if downFac > 1: + logging.info(f"Downsampling with factor {downFac}...") + decSpectra = signal.decimate(dynamic_spectra, downFac, axis=0) + else: + decSpectra = dynamic_spectra + + spectra_mads = median_fitter(np.median(decSpectra, axis=0)) + flat = decSpectra - spectra_mads std = median_abs_deviation(flat, axis=None) med = np.median(flat) plt.figure(figsize=(20, 10)) @@ -88,7 +98,8 @@ def addBurst(values): spectra = filterbankObj.get_data(0, samples) #save pre-injection spectra plot - #show_dynamic(spectra, f"{basename} Pre-injection Dynamic Spectra", save=True) + if not values.skipplot: + show_dynamic(spectra, f"{basename} Pre-injection Dynamic Spectra", save=True) #get bandpass and store in bpWeights bpWeights = create.filter_weights(spectra) @@ -121,9 +132,10 @@ def addBurst(values): gulp = samples ) - logger.info("Saving plot and filterbank.") #and save the new plot - show_dynamic(injectedSpectra, f"{basename} Dynamic Spectra and {values.dm} DM Pulse", save=True) + if not values.skipplot: + logger.info("Saving plot...") + show_dynamic(injectedSpectra, f"{basename} Dynamic Spectra and {values.dm} DM Pulse", save=True) #now generate new filterbank file newName = f"{basename}_injected.fil" sigprocObj = make_sigproc_object( @@ -137,17 +149,18 @@ def addBurst(values): src_raj=filterbankObj.your_header.ra_deg, src_dej=filterbankObj.your_header.dec_deg, machine_id=0, - nbeams=0, - ibeam=0, + nbeams=1, + ibeam=1, nbits=filterbankObj.your_header.nbits, nifs=1, barycentric=0, pulsarcentric=0, - data_type=0, + data_type=1, az_start=-1, za_start=-1, ) sigprocObj.write_header(newName) + logger.info("Saving filterbank...") sigprocObj.append_spectra(injectedSpectra, newName) logger.info(f"{newName} successfully written.") @@ -174,11 +187,15 @@ if __name__ == "__main__": parser.add_argument( "-p", "--plot", action="store_true", help="Just plot file and quit." ) + parser.add_argument( + "-s", "--skipplot", action="store_true", help="Skip plotting for large filterbanks." + ) parser.set_defaults(dm=250.0) parser.set_defaults(nsamp=int(3e5)) parser.set_defaults(listfile=None) parser.set_defaults(file=None) parser.set_defaults(plot=False) + parser.set_defaults(skipplot=False) values = parser.parse_args() #set working directory to ignored directory @@ -191,7 +208,7 @@ if __name__ == "__main__": logging.info(f"Running with file {values.file}") if values.plot: filterbankObj = Your(values.file) - spectra = filterbankObj.get_data(0, 8096) + spectra = filterbankObj.get_data(0, 524288) show_dynamic(spectra, f"{values.file} Dynamic Spectra", save=True) else: addBurst(values)