@@ -40,7 +40,9 @@ def background_correction(self):
4040 y = y / wlref
4141
4242 if self .fit_in_eV is True :
43- x = 1240 / x
43+ x = np .sort (1240 / self .data [:, 0 ]) # converting to eV and sorting in ascending order
44+ y = [y [i ] for i in np .argsort (1240 / x )] # sorting argument of y acc to x sorting index
45+ # need to do this because data is collected in wavelength
4446
4547 return [x ,y ]
4648
@@ -69,12 +71,16 @@ def gaussian_model(self):
6971 # return result #770 760 780 sigma 15
7072 def gaussian_model_w_lims (self , peak_pos , sigma , min_max_range ):
7173 x ,y = self .background_correction ()
74+ if self .fit_in_eV is True :
75+ peak_pos = 1240 / peak_pos
76+ sigma = 1240 / sigma
77+ min_max_range = np .sort (1240 / np .asarray (min_max_range ))
7278 gmodel = GaussianModel (prefix = 'g1_' ) # calling gaussian model
7379 pars = gmodel .guess (y , x = x ) # parameters - center, width, height
7480 pars ['g1_center' ].set (peak_pos , min = min_max_range [0 ], max = min_max_range [1 ])
7581 pars ['g1_sigma' ].set (sigma )
7682 result = gmodel .fit (y , pars , x = x , nan_policy = 'propagate' )
77- return result #770 760 780 sigma 15
83+ return result
7884
7985class Single_Lorentzian (Spectra_Fit ):
8086 """Fit a single Lorentzian to the spectrum
@@ -93,6 +99,10 @@ def lorentzian_model(self):
9399
94100 def lorentzian_model_w_lims (self , peak_pos , sigma , min_max_range ):
95101 x ,y = self .background_correction ()
102+ if self .fit_in_eV is True :
103+ peak_pos = 1240 / peak_pos
104+ sigma = 1240 / sigma
105+ min_max_range = np .sort (1240 / np .asarray (min_max_range ))
96106 lmodel = LorentzianModel (prefix = 'l1_' ) # calling lorentzian model
97107 pars = lmodel .guess (y , x = x ) # parameters - center, width, height
98108 pars ['l1_center' ].set (peak_pos , min = min_max_range [0 ], max = min_max_range [1 ])
@@ -127,6 +137,10 @@ def gaussian_model_w_lims(self, peak_pos, sigma, min_max_range):
127137 #min_max_range - list containing lists of min and max for peak center. [ [min1, max1], [min2, max2] ]
128138
129139 x ,y = self .background_correction ()
140+ if self .fit_in_eV is True :
141+ peak_pos = 1240 / np .asarray (peak_pos )
142+ sigma = 1240 / np .asarray (sigma )
143+ min_max_range = np .sort (1240 / np .asarray (min_max_range ))
130144 gmodel_1 = GaussianModel (prefix = 'g1_' ) # calling gaussian model
131145 pars = gmodel_1 .guess (y , x = x ) # parameters - center, width, height
132146 pars ['g1_center' ].set (peak_pos [0 ], min = min_max_range [0 ][0 ], max = min_max_range [0 ][1 ])
@@ -136,7 +150,7 @@ def gaussian_model_w_lims(self, peak_pos, sigma, min_max_range):
136150 gmodel_2 = GaussianModel (prefix = 'g2_' )
137151 pars .update (gmodel_2 .make_params ()) # update parameters - center, width, height
138152 pars ['g2_center' ].set (peak_pos [1 ], min = min_max_range [1 ][0 ], max = min_max_range [1 ][1 ])
139- pars ['g2_sigma' ].set (sigma [1 ], min = composite_pars ['g1_sigma' ].value )
153+ pars ['g2_sigma' ].set (sigma [1 ], min = pars ['g1_sigma' ].value )
140154 pars ['g2_amplitude' ].set (min = 0 )
141155
142156 gmodel = gmodel_1 + gmodel_2
@@ -192,6 +206,11 @@ def gaussian_model_w_lims(self, peak_pos, sigma, min_max_range):
192206 assert self .num_of_gaussians == len (self .peak_pos ), ("Number of gaussians must be equal to the number of peak positions" )
193207 assert len (self .min_max_range ) == len (self .peak_pos ), ("Number of bounds on the range must be equal to the number of peak positions" )
194208
209+ if self .fit_in_eV is True :
210+ peak_pos = 1240 / np .asarray (peak_pos )
211+ sigma = 1240 / np .asarray (sigma )
212+ min_max_range = np .sort (1240 / np .asarray (min_max_range ))
213+
195214
196215 for i in range (self .num_of_gaussians ):
197216
0 commit comments