@@ -60,6 +60,7 @@ def __init__(self):
6060 self .ui .importSpec_pushButton .clicked .connect (self .open_file )
6161 self .ui .importBck_pushButton .clicked .connect (self .open_bck_file )
6262 self .ui .importWLRef_pushButton .clicked .connect (self .open_wlref_file )
63+
6364 self .ui .load_spectra_scan_pushButton .clicked .connect (self .open_spectra_scan_file )
6465 self .ui .load_bck_file_pushButton .clicked .connect (self .open_spectra_bck_file )
6566 self .ui .load_fitted_scan_pushButton .clicked .connect (self .open_fit_scan_file )
@@ -137,8 +138,14 @@ def open_wlref_file(self):
137138 """Open Scan Files"""
138139 def open_spectra_scan_file (self ):
139140 try :
140- filename = QtWidgets .QFileDialog .getOpenFileName (self )
141- self .spec_scan_file = pickle .load (open (filename [0 ], 'rb' ))
141+ filename = QtWidgets .QFileDialog .getOpenFileName (self , filter = "Scan files (*.pkl *.h5)" )
142+ if ".pkl" in filename [0 ]:
143+ self .spec_scan_file = pickle .load (open (filename [0 ], 'rb' ))
144+ self .scan_file_type = "pkl"
145+ elif ".h5" in filename [0 ]:
146+ self .spec_scan_file = h5py .File (filename [0 ], 'r' )
147+ self .scan_file_type = "h5"
148+ self .get_data_params ()
142149 self .ui .result_textBrowser2 .append ("Done Loading - Spectra Scan File" )
143150 except Exception as e :
144151 self .ui .result_textBrowser2 .append (str (e ))
@@ -262,13 +269,13 @@ def clear_check(self):
262269 return False
263270
264271 """Open param window and get peak center range values and assign it to variables to use later"""
265- # def configure_fit_params (self):
266- # self.param_window = ParamWindow()
272+ def configure_scan_params (self ):
273+ self .param_window = ParamWindow ()
267274 # self.param_window.peak_range.connect(self.peak_range)
268275
269- def peak_range (self , peaks ):
270- self .center_min = peaks [0 ]
271- self .center_max = peaks [1 ]
276+ # def peak_range(self, peaks):
277+ # self.center_min = peaks[0]
278+ # self.center_max = peaks[1]
272279
273280
274281 def fit_and_plot (self ):
@@ -409,12 +416,41 @@ def pub_ready_plot_export(self):
409416
410417
411418 """ Scan spectra functions """
419+ def get_data_params (self ):
420+ data = self .spec_scan_file
421+ if self .scan_file_type == "pkl" :
422+ self .intensities = data ['Intensities' ]
423+ self .wavelengths = data ['Wavelengths' ]
424+ try :
425+ self .x_scan_size = data ['Scan Parameters' ]['X scan size (um)' ]
426+ self .y_scan_size = data ['Scan Parameters' ]['Y scan size (um)' ]
427+ self .x_step_size = data ['Scan Parameters' ]['X step size (um)' ]
428+ self .y_step_size = data ['Scan Parameters' ]['Y step size (um)' ]
429+ except : # TODO test and debug loading pkl file w/o scan parameters
430+ self .configure_scan_params ()
431+ while not hasattr (self , "scan_params_entered" ):
432+ pass
433+ self .x_scan_size = self .param_window .ui .x_scan_size_spinBox .value ()
434+ self .y_scan_size = self .param_window .ui .y_scan_size_spinBox .value ()
435+ self .x_step_size = self .param_window .ui .x_step_size_spinBox .value ()
436+ self .y_step_size = self .param_window .ui .y_step_size_spinBox .value ()
437+
438+ else : #run this if scan file is h5
439+ self .x_scan_size = data ['Scan Parameters' ].attrs ['X scan size (um)' ]
440+ self .y_scan_size = data ['Scan Parameters' ].attrs ['Y scan size (um)' ]
441+ self .x_step_size = data ['Scan Parameters' ].attrs ['X step size (um)' ]
442+ self .y_step_size = data ['Scan Parameters' ].attrs ['Y step size (um)' ]
443+ self .intensities = data ['Intensities' ][()] #get dataset values
444+ self .wavelengths = data ['Wavelengths' ][()]
445+
446+ self .numb_x_pixels = int (self .x_scan_size / self .x_step_size )
447+ self .numb_y_pixels = int (self .y_scan_size / self .y_step_size )
448+
412449 def plot_fit_scan (self ):
413450 try :
414451 if self .ui .use_raw_scan_settings .isChecked ():
415- data = self .spec_scan_file
416- num_x = int ((data ['Scan Parameters' ]['X scan size (um)' ])/ (data ['Scan Parameters' ]['X step size (um)' ]))
417- num_y = int ((data ['Scan Parameters' ]['Y scan size (um)' ])/ (data ['Scan Parameters' ]['Y step size (um)' ]))
452+ num_x = self .numb_x_pixels
453+ num_y = self .numb_y_pixels
418454 else :
419455 num_x = self .ui .num_x_spinBox .value ()
420456 num_y = self .ui .num_y_spinBox .value ()
@@ -441,8 +477,8 @@ def plot_fit_scan(self):
441477
442478 if self .ui .use_raw_scan_settings .isChecked ():
443479 self .ui .fit_scan_viewbox .setImage (self .img , scale =
444- (data [ 'Scan Parameters' ][ 'X step size (um)' ] ,
445- data [ 'Scan Parameters' ][ 'Y step size (um)' ] ))
480+ (self . x_step_size ,
481+ self . y_step_size ))
446482 scale = pg .ScaleBar (size = 2 ,suffix = 'um' )
447483 scale .setParentItem (self .ui .fit_scan_viewbox .view )
448484 scale .anchor ((1 , 1 ), (1 , 1 ), offset = (- 30 , - 30 ))
@@ -457,21 +493,16 @@ def plot_fit_scan(self):
457493
458494 def plot_raw_scan (self ):
459495 try :
460- data = self .spec_scan_file
461- numb_pixels_X = int ((data ['Scan Parameters' ]['X scan size (um)' ])/ (data ['Scan Parameters' ]['X step size (um)' ]))
462- numb_pixels_Y = int ((data ['Scan Parameters' ]['Y scan size (um)' ])/ (data ['Scan Parameters' ]['Y step size (um)' ]))
463496 # TODO test line scan plots
464497
465- intensities = data [ 'Intensities' ] .T #this is only there because of how we are saving the data in the app
498+ intensities = self . intensities .T #this is only there because of how we are saving the data in the app
466499
467- intensities = np .reshape (intensities , newshape = (2048 ,numb_pixels_X ,numb_pixels_Y ))
468-
469- wavelengths = data ['Wavelengths' ]
500+ intensities = np .reshape (intensities , newshape = (2048 ,self .numb_x_pixels , self .numb_y_pixels ))
470501
471502 self .ui .raw_scan_viewbox .view .invertY (False )
472503 self .ui .raw_scan_viewbox .setImage (intensities , scale =
473- (data [ 'Scan Parameters' ][ 'X step size (um)' ] ,
474- data [ 'Scan Parameters' ][ 'Y step size (um)' ]) , xvals = wavelengths )
504+ (self . x_step_size ,
505+ self . y_step_size ) , xvals = self . wavelengths )
475506
476507
477508 #roi_plot = self.ui.raw_scan_viewBox.getRoiPlot()
@@ -485,21 +516,16 @@ def plot_raw_scan(self):
485516
486517 def plot_intensity_sums (self ):
487518 try :
488- data = self .spec_scan_file
489- numb_pixels_X = int ((data ['Scan Parameters' ]['X scan size (um)' ])/ (data ['Scan Parameters' ]['X step size (um)' ]))
490- numb_pixels_Y = int ((data ['Scan Parameters' ]['Y scan size (um)' ])/ (data ['Scan Parameters' ]['Y step size (um)' ]))
491519 # TODO test line scan plots
492520
493- intensities = data ['Intensities' ]
494-
495521 #intensities = np.reshape(intensities, newshape=(2048, numb_pixels_X*numb_pixels_Y))
496522
497- sums = np .sum (intensities , axis = - 1 )
498- sums = np .reshape (sums , newshape = (numb_pixels_X , numb_pixels_Y ))
523+ sums = np .sum (self . intensities , axis = - 1 )
524+ sums = np .reshape (sums , newshape = (self . numb_x_pixels , self . numb_y_pixels ))
499525
500526 self .ui .intensity_sums_viewBox .setImage (sums , scale =
501- (data [ 'Scan Parameters' ][ 'X step size (um)' ] ,
502- data [ 'Scan Parameters' ][ 'Y step size (um)' ] ))
527+ (self . x_step_size ,
528+ self . y_step_size ))
503529 self .ui .intensity_sums_viewBox .view .invertY (False )
504530
505531 scale = pg .ScaleBar (size = 2 ,suffix = 'um' )
@@ -522,10 +548,10 @@ def fit_and_plot_scan(self):
522548 ref = self .bck_file
523549 index = (ref [:,0 ]> start_nm ) & (ref [:,0 ]< stop_nm )
524550
525- x = self .spec_scan_file [ 'Wavelengths' ]
551+ x = self .wavelengths
526552 x = x [index ]
527553
528- data_array = self .spec_scan_file [ 'Intensities' ]
554+ data_array = self .intensities
529555
530556 result_dict = {}
531557
@@ -653,37 +679,35 @@ def close_application(self):
653679
654680
655681"""Parameter Window GUI and Functions"""
656- # param_file_path = (base_path / "peak_bounds_input .ui").resolve()
682+ param_file_path = (base_path / "scan_params_input .ui" ).resolve ()
657683
658- # param_uiFile = param_file_path
684+ param_uiFile = param_file_path
659685
660- # param_WindowTemplate, param_TemplateBaseClass = pg.Qt.loadUiType(param_uiFile)
686+ param_WindowTemplate , param_TemplateBaseClass = pg .Qt .loadUiType (param_uiFile )
661687
662- # class ParamWindow(param_TemplateBaseClass):
688+ class ParamWindow (param_TemplateBaseClass ):
663689
664- # peak_range = QtCore.pyqtSignal(list)
690+ # peak_range = QtCore.pyqtSignal(list)
665691
666- # def __init__(self):
667- # # super(param_TemplateBaseClass, self).__init__()
668- # param_TemplateBaseClass.__init__(self)
692+ def __init__ (self ):
693+ # super(param_TemplateBaseClass, self).__init__()
694+ param_TemplateBaseClass .__init__ (self )
669695
670- # # Create the param window
671- # self.pui = param_WindowTemplate()
672- # self.pui.setupUi(self)
696+ # Create the param window
697+ self .pui = param_WindowTemplate ()
698+ self .pui .setupUi (self )
673699
674- # self.pui.pushButton .clicked.connect(self.done)
700+ self .pui .done_pushButton .clicked .connect (self .done )
675701
676- # self.show()
702+ self .show ()
677703
678- # def current_peak_range(self):
679- # center_min = self.pui.cent_min_doubleSpinBox.value()
680- # center_max = self.pui.cent_max_doubleSpinBox.value()
681- # return center_min, center_max
704+
682705
683- # def done(self):
684- # center_min, center_max = self.current_peak_range()
685- # self.peak_range.emit([center_min, center_max])
686- # self.close()
706+ def done (self ):
707+ #center_min, center_max = self.current_peak_range()
708+ #self.peak_range.emit([center_min, center_max])
709+ self .close ()
710+ self .scan_params_entered = True
687711
688712"""Run the Main Window"""
689713def run ():
0 commit comments