From b8434be91c78085867100b82ed7a49b4334b351b Mon Sep 17 00:00:00 2001 From: Andrey Mukhin Date: Mon, 19 Sep 2022 15:24:52 +0300 Subject: [PATCH] Fixed bug with raw files on empty regions --- nuwavsource/nuwavsource.py | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/nuwavsource/nuwavsource.py b/nuwavsource/nuwavsource.py index b927091..784ceeb 100644 --- a/nuwavsource/nuwavsource.py +++ b/nuwavsource/nuwavsource.py @@ -254,7 +254,11 @@ class Observation: test = np.zeros(len(pixpos['REF_DET1X']), dtype=bool) for idx, (x, y) in enumerate(zip(pixpos['REF_DET1X'], pixpos['REF_DET1Y'])): test[idx] = np.logical_and(np.equal(x, x_region), np.equal(y, y_region)).any() - tables.append(unique(Table({'RAWX': pixpos['RAWX'][test], 'RAWY': pixpos['RAWY'][test]}))) + table = Table({'RAWX': pixpos['RAWX'][test], 'RAWY': pixpos['RAWY'][test]}) + if not table: + tables.append(table) + else: + tables.append(unique(table)) hdu_list = fits.HDUList([ fits.PrimaryHDU(), fits.table_to_hdu(tables[0]), @@ -278,6 +282,7 @@ def process(args): lon, lat = sky_coord.l.value, sky_coord.b.value rem_signal, rem_area, poiss_comp, rms = np.zeros((4, 2**bin_num)) region = np.zeros(obs.data.shape, dtype=bool) + region_raw = -1 rem_region = np.logical_and(region, np.logical_not(obs.data.mask)) masked_obs = np.ma.masked_array(obs.data, mask=region) good_lvl = np.zeros(bin_num, dtype=bool) @@ -302,9 +307,10 @@ def process(args): good_lvl = lvl try: region = wav_obs[2:-1][good_lvl].sum(0) > 0 + if region.sum() > 0: + region_raw = obs.region_to_raw(region.astype(int)) except ValueError: region = np.zeros(obs.data.shape, dtype=bool) - region_raw = obs.region_to_raw(region.astype(int)) masked_obs = np.ma.masked_array(obs.data, mask=region) rem_region = np.logical_and(region, np.logical_not(obs.data.mask)) to_table = [obs.obs_id, @@ -423,7 +429,8 @@ def process_folder(input_folder=None, start_new_file=None, fits_folder=None, thr continue DataFrame(table).to_csv(f'{fits_folder}\\test.csv', mode='a', header=False) fits.writeto(f'{region_folder}\\{str(result[0])+result[1]}_region.fits', region, overwrite=True) - fits.writeto(f'{region_raw_folder}\\{str(result[0])+result[1]}_reg_raw.fits', region_raw, overwrite=True) + if region_raw != -1: + region_raw.writeto(f'{region_raw_folder}\\{str(result[0])+result[1]}_reg_raw.fits', overwrite=True) print(f'{num:>3} {str(result[0])+result[1]} is written.') num +=1 print('Converting generated csv to fits file...') @@ -432,3 +439,8 @@ def process_folder(input_folder=None, start_new_file=None, fits_folder=None, thr csv_file = read_csv(f'{fits_folder}\\test.csv', index_col=0, dtype={'obs_id': str}) Table.from_pandas(csv_file).write(f'{fits_folder}\\test.fits', overwrite=True) print(f'Finished writing: {perf_counter()-start}') + + +if __name__ == '__main__': + process_folder(r'E:\Archive','y','D:\Programms\Jupyter\Science\Source_mask\Archive\Github_v3',(5,3)) +# %%