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.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,8 +132,9 @@ def addBurst(values):
gulp = samples
)
logger.info("Saving plot and filterbank.")
#and save the new plot
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"
@ -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)