result output changed

This commit is contained in:
Andrey Mukhin 2023-06-22 16:20:08 +03:00
parent a58a1f612e
commit fd708d8170

View File

@ -278,7 +278,7 @@ class Observation:
correction_poiss = np.random.poisson(corr*array, corr.shape)
return array + correction_poiss
def wavdecomp(self, mode='gauss', thresh=False, occ_coeff=False):
def wavdecomp(self, mode='gauss', thresh=0, occ_coeff=False):
"""
Performs a wavelet decomposition of image.
"""
@ -338,11 +338,11 @@ class Observation:
current_dir = os.path.dirname(__file__)
pixpos = Table(fits.getdata(os.path.join(current_dir, 'pixpos', f'nu{self.det}pixpos20100101v007.fits'), i+1))
pixpos = pixpos[pixpos['REF_DET1X'] != -1]
ref_condition = np.zeros(len(pixpos['REF_DET1X']), dtype=bool)
for idx, (x, y) in enumerate(zip(pixpos['REF_DET1X'], pixpos['REF_DET1Y'])):
ref_condition[idx] = np.logical_and(np.equal(x, x_region), np.equal(y, y_region)).any()
positions = np.array((pixpos['RAWX'][ref_condition], pixpos['RAWY'][ref_condition]))
if sum(ref_condition) != 0:
positions = np.unique(positions, axis=1)
@ -392,7 +392,6 @@ def process(obs_path, thresh):
Arguments: path to the file of interest and threshold,
e.g. process('D:\\Data\\obs_cl.evt', (3, 2))
"""
bin_num = 6
table = {
'obs_id': [], 'detector': [], 'ra': [], 'dec': [],
@ -407,17 +406,18 @@ def process(obs_path, thresh):
dec=obs.dec*u.deg,
frame='fk5').transform_to('galactic')
lon, lat = sky_coord.l.value, sky_coord.b.value
rem_signal, rem_area, poiss_comp, rms = np.zeros((4, 2**bin_num))
useful_bin_num = 6
rem_signal, rem_area, poiss_comp, rms = np.zeros((4, 2**useful_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)
good_lvl = np.zeros(useful_bin_num, dtype=bool)
if obs.exposure > 1000:
wav_obs = obs.wavdecomp('atrous', thresh, occ_coeff=True)
wav_sum = wav_obs[2:-1].sum(0)
occ_coeff = obs.get_coeff()
binary_arr = binary_array(bin_num)
binary_arr = binary_array(useful_bin_num)
good_idx = len(binary_arr) - 1
for idx, lvl in enumerate(binary_arr):
@ -456,7 +456,7 @@ def process(obs_path, thresh):
obs.dec,
lon,
lat,
obs.time_start,
obs.time_start,
obs.exposure,
masked_obs.mean()/obs.exposure, # count rate
1 - rem_region.sum()/np.logical_not(obs.data.mask).sum(), # rem_area
@ -482,7 +482,7 @@ def process(obs_path, thresh):
]
for key, value in zip(table.keys(), to_table):
table[key] = [value]
table[key] = value
return table, region.astype(int), region_raw, wav_sum
except TypeError:
return obs_path, -1, -1, -1
@ -603,14 +603,14 @@ def process_folder(input_folder=None, start_new_file=None, fits_folder=None,
num += 1
continue
obs_name = str(result['obs_id'][0])+result['detector'][0]
if result['exposure'][0] < 1000:
obs_name = str(result['obs_id'])+result['detector']
if result['exposure'] < 1000:
print(f'{num:>3} {obs_name} is skipped. Exposure < 1000')
DataFrame(result).to_csv(os.path.join(fits_folder, 'overview_skipped.csv'), mode='a', header=False)
DataFrame(result, index=[0]).to_csv(os.path.join(fits_folder, 'overview_skipped.csv'), mode='a', header=False)
num += 1
continue
DataFrame(result).to_csv(os.path.join(fits_folder, 'overview.csv'), mode='a', header=False)
DataFrame(result, index=[0]).to_csv(os.path.join(fits_folder, 'overview.csv'), mode='a', header=False)
save_region(region, os.path.join(region_folder, f'{obs_name}_region.fits'), overwrite=True)
region_raw.writeto(os.path.join(region_raw_folder, f'{obs_name}_reg_raw.fits'), overwrite=True)
fits.writeto(os.path.join(wav_sum_folder, f'{obs_name}_wav_sum.fits'), wav_sum, overwrite=True)