Skip to content
This repository was archived by the owner on Apr 1, 2026. It is now read-only.

Commit 7b41091

Browse files
Convert Multiple PKL files to H5 and TXT at once
1 parent 2270b02 commit 7b41091

1 file changed

Lines changed: 55 additions & 50 deletions

File tree

PythonGUI_apps/Spectrum_analysis/Spectra_plot_fit.py

Lines changed: 55 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -224,9 +224,11 @@ def open_fit_scan_file(self):
224224
def open_pkl_file(self):
225225
""" Open pkl file to convert to txt """
226226
try:
227-
self.pkl_to_convert = QtWidgets.QFileDialog.getOpenFileName(self)
228-
self.filename_for_viewer_launch = self.pkl_to_convert[0]
229-
self.launch_h5_pkl_viewer()
227+
self.pkl_to_convert = QtWidgets.QFileDialog.getOpenFileNames(self)
228+
files = self.pkl_to_convert[0]
229+
for i in range(len(files)):
230+
self.filename_for_viewer_launch = files[i]
231+
self.launch_h5_pkl_viewer()
230232
except:
231233
pass
232234

@@ -792,59 +794,62 @@ def fit_and_plot_scan(self):
792794
""" Pkl conversion functions """
793795
def pkl_data_to_txt(self):
794796
""" Get data from ocean optics scan pkl file, convert to txt"""
795-
folder = os.path.dirname(self.pkl_to_convert[0])
796-
filename_ext = os.path.basename(self.pkl_to_convert[0])
797-
filename = os.path.splitext(filename_ext)[0] #get filename without extension
798-
pkl_file = pickle.load(open(self.pkl_to_convert[0], 'rb'))
799-
800-
txt_file = np.zeros(shape=(2048,pkl_file['Intensities'].shape[0] + 1))
801-
802-
data_array = pkl_file['Intensities']
803-
data_array = np.transpose(data_array)
804-
wavelength = pkl_file['Wavelengths']
805-
806-
txt_file[:,0] = wavelength
807-
808-
for i in range(pkl_file['Intensities'].shape[0]):
809-
txt_file[:,i+1] = data_array[:,i]
810-
811-
np.savetxt(folder +"/"+ filename +"_data.txt", txt_file, fmt = '%.2f', delimiter= "\t", header="wavelength(nm), Intensities at different points")
797+
for i in range(len(self.pkl_to_convert[0])):
798+
folder = os.path.dirname(self.pkl_to_convert[0][i])
799+
filename_ext = os.path.basename(self.pkl_to_convert[0][i])
800+
filename = os.path.splitext(filename_ext)[0] #get filename without extension
801+
pkl_file = pickle.load(open(self.pkl_to_convert[0][i], 'rb'))
802+
803+
txt_file = np.zeros(shape=(2048,pkl_file['Intensities'].shape[0] + 1))
804+
805+
data_array = pkl_file['Intensities']
806+
data_array = np.transpose(data_array)
807+
wavelength = pkl_file['Wavelengths']
808+
809+
txt_file[:,0] = wavelength
810+
811+
for i in range(pkl_file['Intensities'].shape[0]):
812+
txt_file[:,i+1] = data_array[:,i]
813+
814+
np.savetxt(folder +"/"+ filename +"_data.txt", txt_file, fmt = '%.2f', delimiter= "\t", header="wavelength(nm), Intensities at different points")
812815

813816
def pkl_params_to_txt(self):
814817
""" Get scan parameters from ocean optics scan pkl file, convert to txt """
815-
folder = os.path.dirname(self.pkl_to_convert[0])
816-
filename_ext = os.path.basename(self.pkl_to_convert[0])
817-
filename = os.path.splitext(filename_ext)[0] #get filename without extension
818-
pkl_file = pickle.load(open(self.pkl_to_convert[0], 'rb'))
819-
820-
pkl_scan = pkl_file['Scan Parameters']
821-
pkl_oo = pkl_file['OceanOptics Parameters']
822-
823-
param_list = []
824-
param_list.append(['X scan start (um)', 'Y scan start (um)', 'X scan size (um)', 'Y scan size (um)',
825-
'X step size (um)', 'Y step size (um)', 'Integration Time (ms)', 'Scans to Average', 'Correct Dark Counts']) #list of param names
826-
param_list.append([ pkl_scan['X scan start (um)'], pkl_scan['Y scan start (um)'], pkl_scan['X scan size (um)'],
827-
pkl_scan['Y scan size (um)'], pkl_scan['X step size (um)'], pkl_scan['Y step size (um)'],
828-
pkl_oo['Integration Time (ms)'], pkl_oo['Scans Averages'], pkl_oo['Correct Dark Counts'] ]) #list of param values
829-
830-
param_list = list(zip(*param_list)) #transpose so names and values are side-by-side
831-
save_to = folder +"/"+ filename +"_scan_parameters.txt"
832-
833-
with open(save_to, 'w') as f:
834-
for item in param_list:
835-
f.write("%s\t" % str(item[0])) #write name
836-
f.write("%s\n" % str(item[1])) #write value
818+
for i in range(len(self.pkl_to_convert[0])):
819+
folder = os.path.dirname(self.pkl_to_convert[0][i])
820+
filename_ext = os.path.basename(self.pkl_to_convert[0][i])
821+
filename = os.path.splitext(filename_ext)[0] #get filename without extension
822+
pkl_file = pickle.load(open(self.pkl_to_convert[0][i], 'rb'))
823+
824+
pkl_scan = pkl_file['Scan Parameters']
825+
pkl_oo = pkl_file['OceanOptics Parameters']
826+
827+
param_list = []
828+
param_list.append(['X scan start (um)', 'Y scan start (um)', 'X scan size (um)', 'Y scan size (um)',
829+
'X step size (um)', 'Y step size (um)', 'Integration Time (ms)', 'Scans to Average', 'Correct Dark Counts']) #list of param names
830+
param_list.append([ pkl_scan['X scan start (um)'], pkl_scan['Y scan start (um)'], pkl_scan['X scan size (um)'],
831+
pkl_scan['Y scan size (um)'], pkl_scan['X step size (um)'], pkl_scan['Y step size (um)'],
832+
pkl_oo['Integration Time (ms)'], pkl_oo['Scans Averages'], pkl_oo['Correct Dark Counts'] ]) #list of param values
833+
834+
param_list = list(zip(*param_list)) #transpose so names and values are side-by-side
835+
save_to = folder +"/"+ filename +"_scan_parameters.txt"
836+
837+
with open(save_to, 'w') as f:
838+
for item in param_list:
839+
f.write("%s\t" % str(item[0])) #write name
840+
f.write("%s\n" % str(item[1])) #write value
837841

838842
def pkl_to_h5(self):
839843
""" Convert raw scan .pkl file to h5 """
840-
folder = os.path.dirname(self.pkl_to_convert[0])
841-
filename_ext = os.path.basename(self.pkl_to_convert[0])
842-
filename = os.path.splitext(filename_ext)[0] #get filename without extension
843-
pkl_file = pickle.load(open(self.pkl_to_convert[0], 'rb'))
844-
845-
h5_filename = folder + "/" + filename + ".h5"
846-
h5_file = h5py.File(h5_filename, "w")
847-
self.traverse_dict_into_h5(pkl_file, h5_file)
844+
for i in range(len(self.pkl_to_convert[0])):
845+
folder = os.path.dirname(self.pkl_to_convert[0][i])
846+
filename_ext = os.path.basename(self.pkl_to_convert[0][i])
847+
filename = os.path.splitext(filename_ext)[0] #get filename without extension
848+
pkl_file = pickle.load(open(self.pkl_to_convert[0][i], 'rb'))
849+
850+
h5_filename = folder + "/" + filename + ".h5"
851+
h5_file = h5py.File(h5_filename, "w")
852+
self.traverse_dict_into_h5(pkl_file, h5_file)
848853

849854
def traverse_dict_into_h5(self, dictionary, h5_output):
850855
"""

0 commit comments

Comments
 (0)