Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
### Baseline is of the type y = a*exp(-log(2)*((x-b)/c)**2)
# optional parameters
p0_gauss = kwargs.get('p0_gaussian',[1.,1.,1.])
## fit of the baseline
coeffs, pcov = curve_fit(rampy.gaussian,yafit[:,0],yafit[:,1],p0 = p0_gauss)
baseline_fitted = rampy.gaussian(x,coeffs[0],coeffs[1],coeffs[2])
elif method == 'exp':
### Baseline is of the type y = a*exp(b*(x-xo))
# optional parameters
p0_exp = kwargs.get('p0_exp',[1.,1.,1.])
## fit of the baseline
coeffs, pcov = curve_fit(rampy.funexp,yafit[:,0],yafit[:,1],p0 = p0_exp)
baseline_fitted = rampy.funexp(x,coeffs[0],coeffs[1],coeffs[2])
elif method == 'log':
### Baseline is of the type y = a*exp(b*(x-xo))
# optional parameters
p0_log = kwargs.get('p0_log',[1.,1.,1.,1.])
## fit of the baseline
coeffs, pcov = curve_fit(rampy.funlog,yafit[:,0],yafit[:,1],p0 = p0_log)
baseline_fitted = rampy.funlog(x,coeffs[0],coeffs[1],coeffs[2],coeffs[3])
elif method == 'rubberband':
# code from this stack-exchange forum
#https://dsp.stackexchange.com/questions/2725/how-to-perform-a-rubberband-correction-on-spectroscopic-data
# Find the convex hull
v = ConvexHull(np.array([x, y])).vertices
elif method == 'gaussian':
### Baseline is of the type y = a*exp(-log(2)*((x-b)/c)**2)
# optional parameters
p0_gauss = kwargs.get('p0_gaussian',[1.,1.,1.])
## fit of the baseline
coeffs, pcov = curve_fit(rampy.gaussian,yafit[:,0],yafit[:,1],p0 = p0_gauss)
baseline_fitted = rampy.gaussian(x,coeffs[0],coeffs[1],coeffs[2])
elif method == 'exp':
### Baseline is of the type y = a*exp(b*(x-xo))
# optional parameters
p0_exp = kwargs.get('p0_exp',[1.,1.,1.])
## fit of the baseline
coeffs, pcov = curve_fit(rampy.funexp,yafit[:,0],yafit[:,1],p0 = p0_exp)
baseline_fitted = rampy.funexp(x,coeffs[0],coeffs[1],coeffs[2])
elif method == 'log':
### Baseline is of the type y = a*exp(b*(x-xo))
# optional parameters
p0_log = kwargs.get('p0_log',[1.,1.,1.,1.])
## fit of the baseline
coeffs, pcov = curve_fit(rampy.funlog,yafit[:,0],yafit[:,1],p0 = p0_log)
baseline_fitted = rampy.funlog(x,coeffs[0],coeffs[1],coeffs[2],coeffs[3])
elif method == 'rubberband':
# code from this stack-exchange forum
#https://dsp.stackexchange.com/questions/2725/how-to-perform-a-rubberband-correction-on-spectroscopic-data
elif method == 'exp':
### Baseline is of the type y = a*exp(b*(x-xo))
# optional parameters
p0_exp = kwargs.get('p0_exp',[1.,1.,1.])
## fit of the baseline
coeffs, pcov = curve_fit(rampy.funexp,yafit[:,0],yafit[:,1],p0 = p0_exp)
baseline_fitted = rampy.funexp(x,coeffs[0],coeffs[1],coeffs[2])
elif method == 'log':
### Baseline is of the type y = a*exp(b*(x-xo))
# optional parameters
p0_log = kwargs.get('p0_log',[1.,1.,1.,1.])
## fit of the baseline
coeffs, pcov = curve_fit(rampy.funlog,yafit[:,0],yafit[:,1],p0 = p0_log)
baseline_fitted = rampy.funlog(x,coeffs[0],coeffs[1],coeffs[2],coeffs[3])
elif method == 'rubberband':
# code from this stack-exchange forum
#https://dsp.stackexchange.com/questions/2725/how-to-perform-a-rubberband-correction-on-spectroscopic-data
# Find the convex hull
v = ConvexHull(np.array([x, y])).vertices
# Rotate convex hull vertices until they start from the lowest one
v = np.roll(v, -v.argmin())
# Leave only the ascending part
v = v[:v.argmax()]
# Create baseline using linear interpolation between vertices
### Baseline is of the type y = a*exp(b*(x-xo))
# optional parameters
p0_exp = kwargs.get('p0_exp',[1.,1.,1.])
## fit of the baseline
coeffs, pcov = curve_fit(rampy.funexp,yafit[:,0],yafit[:,1],p0 = p0_exp)
baseline_fitted = rampy.funexp(x,coeffs[0],coeffs[1],coeffs[2])
elif method == 'log':
### Baseline is of the type y = a*exp(b*(x-xo))
# optional parameters
p0_log = kwargs.get('p0_log',[1.,1.,1.,1.])
## fit of the baseline
coeffs, pcov = curve_fit(rampy.funlog,yafit[:,0],yafit[:,1],p0 = p0_log)
baseline_fitted = rampy.funlog(x,coeffs[0],coeffs[1],coeffs[2],coeffs[3])
elif method == 'rubberband':
# code from this stack-exchange forum
#https://dsp.stackexchange.com/questions/2725/how-to-perform-a-rubberband-correction-on-spectroscopic-data
# Find the convex hull
v = ConvexHull(np.array([x, y])).vertices
# Rotate convex hull vertices until they start from the lowest one
v = np.roll(v, -v.argmin())
# Leave only the ascending part
v = v[:v.argmax()]
# Create baseline using linear interpolation between vertices
baseline_fitted = np.interp(x, x[v], y[v])
print('ERROR: Install gcvspline to use this mode (needs a working FORTRAN compiler).')
# optional parameters
splinesmooth = kwargs.get('s',2.0)
# Spline baseline with mode 1 of gcvspl.f, see gcvspline documentation
c, wk, ier = gcvspline(yafit[:,0],yafit[:,1],np.sqrt(np.abs(yafit[:,1])),splinesmooth,splmode = 1) # gcvspl with mode 1 and smooth factor
baseline_fitted = splderivative(x,yafit[:,0],c)
elif method == 'gaussian':
### Baseline is of the type y = a*exp(-log(2)*((x-b)/c)**2)
# optional parameters
p0_gauss = kwargs.get('p0_gaussian',[1.,1.,1.])
## fit of the baseline
coeffs, pcov = curve_fit(rampy.gaussian,yafit[:,0],yafit[:,1],p0 = p0_gauss)
baseline_fitted = rampy.gaussian(x,coeffs[0],coeffs[1],coeffs[2])
elif method == 'exp':
### Baseline is of the type y = a*exp(b*(x-xo))
# optional parameters
p0_exp = kwargs.get('p0_exp',[1.,1.,1.])
## fit of the baseline
coeffs, pcov = curve_fit(rampy.funexp,yafit[:,0],yafit[:,1],p0 = p0_exp)
baseline_fitted = rampy.funexp(x,coeffs[0],coeffs[1],coeffs[2])
elif method == 'log':
### Baseline is of the type y = a*exp(b*(x-xo))
# optional parameters
p0_log = kwargs.get('p0_log',[1.,1.,1.,1.])
# optional parameters
splinesmooth = kwargs.get('s',2.0)
# Spline baseline with mode 1 of gcvspl.f, see gcvspline documentation
c, wk, ier = gcvspline(yafit[:,0],yafit[:,1],np.sqrt(np.abs(yafit[:,1])),splinesmooth,splmode = 1) # gcvspl with mode 1 and smooth factor
baseline_fitted = splderivative(x,yafit[:,0],c)
elif method == 'gaussian':
### Baseline is of the type y = a*exp(-log(2)*((x-b)/c)**2)
# optional parameters
p0_gauss = kwargs.get('p0_gaussian',[1.,1.,1.])
## fit of the baseline
coeffs, pcov = curve_fit(rampy.gaussian,yafit[:,0],yafit[:,1],p0 = p0_gauss)
baseline_fitted = rampy.gaussian(x,coeffs[0],coeffs[1],coeffs[2])
elif method == 'exp':
### Baseline is of the type y = a*exp(b*(x-xo))
# optional parameters
p0_exp = kwargs.get('p0_exp',[1.,1.,1.])
## fit of the baseline
coeffs, pcov = curve_fit(rampy.funexp,yafit[:,0],yafit[:,1],p0 = p0_exp)
baseline_fitted = rampy.funexp(x,coeffs[0],coeffs[1],coeffs[2])
elif method == 'log':
### Baseline is of the type y = a*exp(b*(x-xo))
# optional parameters
p0_log = kwargs.get('p0_log',[1.,1.,1.,1.])
## fit of the baseline
coeffs, pcov = curve_fit(rampy.funlog,yafit[:,0],yafit[:,1],p0 = p0_log)
sp = np.genfromtxt(path_in+data_liste["Name"][i],delimiter=delim,skip_header=1)
# constructing an interpolator: this will allow an output of all data with the same X axis
f = scipy.interpolate.interp1d(sp[:,0], sp[:,1],fill_value="extrapolate")
# temperature and excitation line correction (see Rameau help)
x, y_all[:,i], sdf = rp.tlcorrection(x,f(x),23.0,laser,normalisation='intensity')
# getting the roi
roi = np.array(rois.loc[i]).reshape(int(len(rois.loc[i])/2),2)
# calculating baseline
if method == "LL2012": # spline
try:
c_hf, b_hf = rp.baseline(x,y_all[:,i],roi,"gcvspline",s=spline_coeff)
except:
break
y_all_corr[:,i]=c_hf[:,0]
y_all_base[:,i]=b_hf[:,0]
elif method == "DG2017": # polynomial 3 following DG2017 method
# getting portion of interrest
x_lf = x[np.where(x<2000.)].reshape(-1)
x_hf = x[np.where(x>2000.)].reshape(-1)
y_lf = y_all[np.where(x<2000.),i].reshape(-1)
y_hf = y_all[np.where(x>2000.),i].reshape(-1)
c_lf, b_lf = rp.baseline(x_lf,y_lf,np.array([[0,200],[1240,1500]]),"poly",polynomial_order = poly_coeff)
break
y_all_corr[:,i]=c_hf[:,0]
y_all_base[:,i]=b_hf[:,0]
elif method == "DG2017": # polynomial 3 following DG2017 method
# getting portion of interrest
x_lf = x[np.where(x<2000.)].reshape(-1)
x_hf = x[np.where(x>2000.)].reshape(-1)
y_lf = y_all[np.where(x<2000.),i].reshape(-1)
y_hf = y_all[np.where(x>2000.),i].reshape(-1)
c_lf, b_lf = rp.baseline(x_lf,y_lf,np.array([[0,200],[1240,1500]]),"poly",polynomial_order = poly_coeff)
c_hf, b_hf = rp.baseline(x_hf,y_hf,np.array([[2500,3100],[3750,3900]]),"poly",polynomial_order = poly_coeff)
y_all_corr[:,i] = np.hstack((c_lf.reshape(-1),c_hf.reshape(-1)))
y_all_base[:,i] = np.hstack((b_lf.reshape(-1),b_hf.reshape(-1)))
else:
raise TypeError('method should be set to LL2012 or DG2017')
# Area / Integrated Intensity calculation
S = np.trapz(y_all_corr[np.where((x>150)&(x<1250)),i],x[np.where((x>150)&(x<1250))])
W = np.trapz(y_all_corr[np.where((x>3100)&(x<3750)),i],x[np.where((x>3100)&(x<3750))])
# updating the Pandas dataframe rws
rs[i] = S[0]
rw[i] = W[0]
rws[i] = W[0]/S[0]
except:
break
y_all_corr[:,i]=c_hf[:,0]
y_all_base[:,i]=b_hf[:,0]
elif method == "DG2017": # polynomial 3 following DG2017 method
# getting portion of interrest
x_lf = x[np.where(x<2000.)].reshape(-1)
x_hf = x[np.where(x>2000.)].reshape(-1)
y_lf = y_all[np.where(x<2000.),i].reshape(-1)
y_hf = y_all[np.where(x>2000.),i].reshape(-1)
c_lf, b_lf = rp.baseline(x_lf,y_lf,np.array([[0,200],[1240,1500]]),"poly",polynomial_order = poly_coeff)
c_hf, b_hf = rp.baseline(x_hf,y_hf,np.array([[2500,3100],[3750,3900]]),"poly",polynomial_order = poly_coeff)
y_all_corr[:,i] = np.hstack((c_lf.reshape(-1),c_hf.reshape(-1)))
y_all_base[:,i] = np.hstack((b_lf.reshape(-1),b_hf.reshape(-1)))
else:
raise TypeError('method should be set to LL2012 or DG2017')
# Area / Integrated Intensity calculation
S = np.trapz(y_all_corr[np.where((x>150)&(x<1250)),i],x[np.where((x>150)&(x<1250))])
W = np.trapz(y_all_corr[np.where((x>3100)&(x<3750)),i],x[np.where((x>3100)&(x<3750))])
# updating the Pandas dataframe rws
rs[i] = S[0]
rw[i] = W[0]
rws[i] = W[0]/S[0]
rs = np.ones(len(data_liste))
record_std = np.zeros((len(data_liste),2))
rois = data_liste.loc[:,"ROI1 lb":"ROI6 hb"]
for i in range(len(data_liste)):
# importing the spectra
sp = np.genfromtxt(path_in+data_liste["Name"][i],delimiter=delim,skip_header=1)
# constructing an interpolator: this will allow an output of all data with the same X axis
f = scipy.interpolate.interp1d(sp[:,0], sp[:,1],fill_value="extrapolate")
# temperature and excitation line correction (see Rameau help)
x, y_all[:,i], sdf = rp.tlcorrection(x,f(x),23.0,laser,normalisation='intensity')
# getting the roi
roi = np.array(rois.loc[i]).reshape(int(len(rois.loc[i])/2),2)
# calculating baseline
if method == "LL2012": # spline
try:
c_hf, b_hf = rp.baseline(x,y_all[:,i],roi,"gcvspline",s=spline_coeff)
except:
break
y_all_corr[:,i]=c_hf[:,0]
y_all_base[:,i]=b_hf[:,0]
elif method == "DG2017": # polynomial 3 following DG2017 method