This commit is contained in:
voulot_d
2017-08-15 12:12:09 +02:00
parent 73c0cf9798
commit ef416da30d
7 changed files with 36 additions and 35 deletions
@@ -1,18 +1,18 @@
import numpy as np
def ext(x, y):
def extremum(x, y):
"""
Return extremum coordinates of quadratic fit
"""
p = np.polyfit(x, y, 2)
f = np.poly1d(p)
x_fit = 1.0 #np.linspace(min(x), max(x), 100)
#y_fit = 2.0 #f(x_fit)
if p[0] != 0:
x_ext = -p[1]/2/p[0]
y_ext = f(x_ext)
else:
x_ext = None
y_ext = None
return (x_ext, y_ext, x_ext)
x_fit = np.linspace(min(x), max(x), 100)
y_fit = f(x_fit)
return (x_ext, y_ext, x_fit, y_fit)
+3 -4
View File
@@ -4,10 +4,9 @@ def hfitoff(data, xdeg):
ret = call_jep("CPython/hfitoff", "hfitoff", [to_npa(data),to_npa(xdeg)])
return (ret[0], ret[1], ret[2],ret[3], ret[4].data, ret[5].data)
def ext(x, y):
ret = call_jep("CPython/ext", "ext", [to_npa(x),to_npa(y)])
#return (ret[0], ret[1], ret[2].data, ret[3].data)
return (ret[0], ret[1], ret[2])
def extremum(x, y):
ret = call_jep("CPython/extremum", "extremum", [to_npa(x),to_npa(y)])
return (ret[0], ret[1], ret[2].data, ret[3].data)
def gfitoff(x, y, off=None, amp=None, com=None, sigma=None):
ret = call_jep("CPython/gfitoff", "gfitoff", [to_npa(x), to_npa(y), off, amp, com, sigma])
+2 -2
View File
@@ -1,8 +1,8 @@
import ch.psi.pshell.epics.Positioner as Positioner
import ch.psi.pshell.epics.ChannelDouble as ChannelDouble
dry_run = False
do_elog = True
dry_run = True
do_elog = FalseTrue
if get_exec_pars().source == CommandSource.ui:
station = "STEST01"
+7 -5
View File
@@ -63,7 +63,7 @@ dx = camtool.stream.getChild("x_fit_standard_deviation")
#Creating averagers
x_averager = create_averager(x, nb, -1) # -1 event based, waits for the next value
dx_averager = create_averager(dx, nb, -1)
dx_averager.monitored=True # not blocking, will return last nb values
dx_averager.monitored = True # not blocking, will return last nb values
#Record callback: uptate of output plot
def after_sample(record, scan):
@@ -93,10 +93,12 @@ save_dataset(get_exec_pars().group + "/p", p)
save_dataset(get_exec_pars().group + "/dp", dp)
try:
run("CPython/wrapper")
(ph_p_max, p_max, ph_p_fit, p_fit) = ext(ph[i_max-5:i_max+6], p[i_max-5:i_max+6])
(ph_dp_min, dp_min, ph_dp_fit, dp_fit) = ext(ph[i_min-5:i_min+6], dp[i_min-5:i_min+6])
#plt.getSeries(2).appendData(ph_p_fit, p_fit)
#plt.getSeries(3).appendData(ph_dp_fit, dp_fit)
i_max = p.index(max(p))
i_min = dp.index(min(dp))
(ph_p_max, p_max, ph_p_fit, p_fit) = extremum(ph[i_max-5:i_max+6], p[i_max-5:i_max+6])
(ph_dp_min, dp_min, ph_dp_fit, dp_fit) = extremum(ph[i_min-5:i_min+6], dp[i_min-5:i_min+6])
plt.getSeries(2).appendData(ph_p_fit, p_fit)
plt.getSeries(3).appendData(ph_dp_fit, dp_fit)
except:
raise Exception("Fit failure")