This commit is contained in:
Sakimori 2025-07-25 10:39:52 -04:00
commit 4b9ce25b3e
No known key found for this signature in database

View file

@ -13,6 +13,7 @@ from scipy.stats import median_abs_deviation
from your import Your, Writer from your import Your, Writer
from your.formats.filwriter import make_sigproc_object from your.formats.filwriter import make_sigproc_object
from will import create, inject from will import create, inject
from scipy import signal
@ -43,8 +44,17 @@ def show_dynamic(
save - Save the plot as `title` + `.png` 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) std = median_abs_deviation(flat, axis=None)
med = np.median(flat) med = np.median(flat)
plt.figure(figsize=(20, 10)) plt.figure(figsize=(20, 10))
@ -88,7 +98,8 @@ def addBurst(values):
spectra = filterbankObj.get_data(0, samples) spectra = filterbankObj.get_data(0, samples)
#save pre-injection spectra plot #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 #get bandpass and store in bpWeights
bpWeights = create.filter_weights(spectra) bpWeights = create.filter_weights(spectra)
@ -121,9 +132,10 @@ def addBurst(values):
gulp = samples gulp = samples
) )
logger.info("Saving plot and filterbank.")
#and save the new plot #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 #now generate new filterbank file
newName = f"{basename}_injected.fil" newName = f"{basename}_injected.fil"
sigprocObj = make_sigproc_object( sigprocObj = make_sigproc_object(
@ -137,17 +149,18 @@ def addBurst(values):
src_raj=filterbankObj.your_header.ra_deg, src_raj=filterbankObj.your_header.ra_deg,
src_dej=filterbankObj.your_header.dec_deg, src_dej=filterbankObj.your_header.dec_deg,
machine_id=0, machine_id=0,
nbeams=0, nbeams=1,
ibeam=0, ibeam=1,
nbits=filterbankObj.your_header.nbits, nbits=filterbankObj.your_header.nbits,
nifs=1, nifs=1,
barycentric=0, barycentric=0,
pulsarcentric=0, pulsarcentric=0,
data_type=0, data_type=1,
az_start=-1, az_start=-1,
za_start=-1, za_start=-1,
) )
sigprocObj.write_header(newName) sigprocObj.write_header(newName)
logger.info("Saving filterbank...")
sigprocObj.append_spectra(injectedSpectra, newName) sigprocObj.append_spectra(injectedSpectra, newName)
logger.info(f"{newName} successfully written.") logger.info(f"{newName} successfully written.")
@ -174,11 +187,15 @@ if __name__ == "__main__":
parser.add_argument( parser.add_argument(
"-p", "--plot", action="store_true", help="Just plot file and quit." "-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(dm=250.0)
parser.set_defaults(nsamp=int(3e5)) parser.set_defaults(nsamp=int(3e5))
parser.set_defaults(listfile=None) parser.set_defaults(listfile=None)
parser.set_defaults(file=None) parser.set_defaults(file=None)
parser.set_defaults(plot=False) parser.set_defaults(plot=False)
parser.set_defaults(skipplot=False)
values = parser.parse_args() values = parser.parse_args()
#set working directory to ignored directory #set working directory to ignored directory
@ -191,7 +208,7 @@ if __name__ == "__main__":
logging.info(f"Running with file {values.file}") logging.info(f"Running with file {values.file}")
if values.plot: if values.plot:
filterbankObj = Your(values.file) 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) show_dynamic(spectra, f"{values.file} Dynamic Spectra", save=True)
else: else:
addBurst(values) addBurst(values)