This commit is contained in:
43
script/tutorial/61_MultipleGaussianFit.js
Executable file
43
script/tutorial/61_MultipleGaussianFit.js
Executable file
@@ -0,0 +1,43 @@
|
||||
///////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
// Multiple Gaussians peak search with mathutils.py
|
||||
///////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
|
||||
run("mathutils")
|
||||
|
||||
start = 0
|
||||
end = 50
|
||||
step_size = 0.2
|
||||
|
||||
result= lscan(ao1,ai1,start,end,[step_size,])
|
||||
|
||||
readable = result.getReadable(0)
|
||||
positions = result.getPositions(0)
|
||||
|
||||
min = Math.min.apply(null, readable)
|
||||
max = Math.max.apply(null, readable)
|
||||
|
||||
threshold = (min + max)/2
|
||||
min_peak_distance = 5.0
|
||||
|
||||
peaks = estimate_peak_indexes(readable, positions, threshold, min_peak_distance)
|
||||
print ("Peak indexes: " + peaks)
|
||||
print ("Peak x: " + peaks.map(function(x) {return positions[x]}))
|
||||
print ("Peak y: " + peaks.map(function(x) {return readable[x]}))
|
||||
|
||||
gaussians = fit_gaussians(readable, positions, peaks)
|
||||
|
||||
plots = plot([readable],["sin"],[positions], undefined, title="Data" )
|
||||
for (var i=0; i< peaks.length; i++){
|
||||
peak = peaks[i]
|
||||
pars_gaussian = gaussians[i]
|
||||
normalization = pars_gaussian[0]
|
||||
mean_val = pars_gaussian[1]
|
||||
sigma = pars_gaussian [2]
|
||||
if (Math.abs(mean_val - positions[peak]) < min_peak_distance){
|
||||
print ("Peak -> " + mean_val)
|
||||
plots[0].addMarker(mean_val, null, "N="+ Math.round(normalization,2), new Color(210,0,0))
|
||||
}else {
|
||||
print ("Invalid gaussian fit: " + mean_val)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user