Loading DataReductionGIANOB/Frame_Gofio.py +27 −29 Original line number Diff line number Diff line import re import tkinter as tk import traceback from pathlib import Path from tkinter import ttk Loading Loading @@ -1329,30 +1330,22 @@ class Frame_Gofio: listB = list() if instrument == "criresp": folder = Path(dirr) mjd_key = yaml_file['MJD'] if obs_mode == "Nodding": # Trova file A e B dictA = {int(f.stem.split("_")[-1]): f for f in folder.glob("cr2res_obs_nodding_extractedA_*.fits")} dictB = {int(f.stem.split("_")[-1]): f for f in folder.glob("cr2res_obs_nodding_extractedB_*.fits")} # Collect A and B nodding files filesA = list(folder.glob("cr2res_obs_nodding_extractedA_*.fits")) filesB = list(folder.glob("cr2res_obs_nodding_extractedB_*.fits")) if separate_A_B: all_indices = sorted(set(dictA.keys()) | set(dictB.keys())) for i in all_indices: if i in dictA: listA.append(dictA[i]) if i in dictB: listB.append(dictB[i]) # Sort A and B separately by MJD listA = sorted(filesA, key=lambda f: fits.getheader(f)[mjd_key]) listB = sorted(filesB, key=lambda f: fits.getheader(f)[mjd_key]) else: # Tutti gli indici trovati all_indices = sorted(set(dictA.keys()) | set(dictB.keys())) listAB = [] for i in all_indices: if i in dictA: listAB.append(dictA[i]) if i in dictB: listAB.append(dictB[i]) # Sort all A+B files together by MJD listAB = sorted(filesA + filesB, key=lambda f: fits.getheader(f)[mjd_key]) else: listAB = list(folder.glob("cr2res_obs_staring_extracted_*.fits")) # Staring mode: sort by MJD staring_files = list(folder.glob("cr2res_obs_staring_extracted*.fits")) listAB = sorted(staring_files, key=lambda f: fits.getheader(f)[mjd_key]) else: # for file in os.listdir(dirr): Loading @@ -1367,6 +1360,7 @@ class Frame_Gofio: listAB.append(os.path.join(dirr, file)) # self.run_from_gofio.configure(state="disabled") try: if separate_A_B and instrument in ["gianob", "criresp"] and obs_mode == "Nodding": if len(listA) == len(listB): self.procedure_fromgofio(listA, "A_", night, dirn, threshold_SNR_f, target, yaml_file, instrument) Loading @@ -1375,6 +1369,9 @@ class Frame_Gofio: print("The amount of files A is not equal to the amount of file B") else: # for nodding/stare mode of gianob/criresp and for espresso or harpsn self.procedure_fromgofio(listAB, "", night, dirn, threshold_SNR_f, target, yaml_file, instrument) except Exception as e: print(str(e), traceback.format_exc()) tk.messagebox.showerror("Error", "An error occurred during the reduction/separation process. Please check the log file for details.") self.run_from_gofio.configure(state="normal") def procedure_fromgofio( Loading @@ -1392,14 +1389,15 @@ class Frame_Gofio: m = re.match(r"(\d+)_01_SPEC", name) if m: order = m.group(1) # es. '07' print(f"Chip: {chip_idx}; Order: {order} ") if order not in channels_per_order: channels_per_order[order] = len(chip.data[name]) struct_crires.append((chip_idx, order)) else: struct_crires = None list_file.sort() orders_str = "" SNR_mean_str = "" list_file.sort() nimages = len(list_file) curr_image = ImageAnalysis(list_file[0], target_f, yaml_file, struct_crires) norder = curr_image.norder Loading DataReductionGIANOB/Image.py +2 −0 Original line number Diff line number Diff line Loading @@ -98,6 +98,8 @@ class ImageAnalysis: self.npix = yaml_file['npix'] # Total number of spectral orders in the echelle spectrum self.norder = yaml_file['norder'] if self.norder == "xx": self.norder = len(struct_crires) # ======================== OPEN AND READ FITS FILE ======================== # Open the FITS file containing the spectroscopic data Loading DataReductionGIANOB/Instruments/criresp.yaml +1 −1 Original line number Diff line number Diff line Loading @@ -12,7 +12,7 @@ index_header : 0 data_in_columns : "None" files_type : RAW npix : 2048 norder : 24 norder : xx # 24 ra_dec_deg : 1 corr_zero : 0 NEED_SUM_EXPOSURE_TO_MJD : 1 Loading Loading
DataReductionGIANOB/Frame_Gofio.py +27 −29 Original line number Diff line number Diff line import re import tkinter as tk import traceback from pathlib import Path from tkinter import ttk Loading Loading @@ -1329,30 +1330,22 @@ class Frame_Gofio: listB = list() if instrument == "criresp": folder = Path(dirr) mjd_key = yaml_file['MJD'] if obs_mode == "Nodding": # Trova file A e B dictA = {int(f.stem.split("_")[-1]): f for f in folder.glob("cr2res_obs_nodding_extractedA_*.fits")} dictB = {int(f.stem.split("_")[-1]): f for f in folder.glob("cr2res_obs_nodding_extractedB_*.fits")} # Collect A and B nodding files filesA = list(folder.glob("cr2res_obs_nodding_extractedA_*.fits")) filesB = list(folder.glob("cr2res_obs_nodding_extractedB_*.fits")) if separate_A_B: all_indices = sorted(set(dictA.keys()) | set(dictB.keys())) for i in all_indices: if i in dictA: listA.append(dictA[i]) if i in dictB: listB.append(dictB[i]) # Sort A and B separately by MJD listA = sorted(filesA, key=lambda f: fits.getheader(f)[mjd_key]) listB = sorted(filesB, key=lambda f: fits.getheader(f)[mjd_key]) else: # Tutti gli indici trovati all_indices = sorted(set(dictA.keys()) | set(dictB.keys())) listAB = [] for i in all_indices: if i in dictA: listAB.append(dictA[i]) if i in dictB: listAB.append(dictB[i]) # Sort all A+B files together by MJD listAB = sorted(filesA + filesB, key=lambda f: fits.getheader(f)[mjd_key]) else: listAB = list(folder.glob("cr2res_obs_staring_extracted_*.fits")) # Staring mode: sort by MJD staring_files = list(folder.glob("cr2res_obs_staring_extracted*.fits")) listAB = sorted(staring_files, key=lambda f: fits.getheader(f)[mjd_key]) else: # for file in os.listdir(dirr): Loading @@ -1367,6 +1360,7 @@ class Frame_Gofio: listAB.append(os.path.join(dirr, file)) # self.run_from_gofio.configure(state="disabled") try: if separate_A_B and instrument in ["gianob", "criresp"] and obs_mode == "Nodding": if len(listA) == len(listB): self.procedure_fromgofio(listA, "A_", night, dirn, threshold_SNR_f, target, yaml_file, instrument) Loading @@ -1375,6 +1369,9 @@ class Frame_Gofio: print("The amount of files A is not equal to the amount of file B") else: # for nodding/stare mode of gianob/criresp and for espresso or harpsn self.procedure_fromgofio(listAB, "", night, dirn, threshold_SNR_f, target, yaml_file, instrument) except Exception as e: print(str(e), traceback.format_exc()) tk.messagebox.showerror("Error", "An error occurred during the reduction/separation process. Please check the log file for details.") self.run_from_gofio.configure(state="normal") def procedure_fromgofio( Loading @@ -1392,14 +1389,15 @@ class Frame_Gofio: m = re.match(r"(\d+)_01_SPEC", name) if m: order = m.group(1) # es. '07' print(f"Chip: {chip_idx}; Order: {order} ") if order not in channels_per_order: channels_per_order[order] = len(chip.data[name]) struct_crires.append((chip_idx, order)) else: struct_crires = None list_file.sort() orders_str = "" SNR_mean_str = "" list_file.sort() nimages = len(list_file) curr_image = ImageAnalysis(list_file[0], target_f, yaml_file, struct_crires) norder = curr_image.norder Loading
DataReductionGIANOB/Image.py +2 −0 Original line number Diff line number Diff line Loading @@ -98,6 +98,8 @@ class ImageAnalysis: self.npix = yaml_file['npix'] # Total number of spectral orders in the echelle spectrum self.norder = yaml_file['norder'] if self.norder == "xx": self.norder = len(struct_crires) # ======================== OPEN AND READ FITS FILE ======================== # Open the FITS file containing the spectroscopic data Loading
DataReductionGIANOB/Instruments/criresp.yaml +1 −1 Original line number Diff line number Diff line Loading @@ -12,7 +12,7 @@ index_header : 0 data_in_columns : "None" files_type : RAW npix : 2048 norder : 24 norder : xx # 24 ra_dec_deg : 1 corr_zero : 0 NEED_SUM_EXPOSURE_TO_MJD : 1 Loading