Add motor tracking plotting in python
This commit is contained in:
60
site_ansto/instrument/TEST_SICS/tests/plot-tracking.py
Executable file
60
site_ansto/instrument/TEST_SICS/tests/plot-tracking.py
Executable file
@@ -0,0 +1,60 @@
|
||||
#!/usr/bin/env python
|
||||
# vim: ts=8 sts=4 sw=4 expandtab autoindent smartindent
|
||||
# plotting for the motor tracking CSV file
|
||||
# Author Douglas Clowes 2013 (dcl@ansto.gov.au)
|
||||
#
|
||||
import numpy as np
|
||||
import matplotlib as mpl
|
||||
import matplotlib.pyplot as plt
|
||||
|
||||
def make_delta(q):
|
||||
delta_q = np.arange(len(q), dtype=np.float)
|
||||
delta_q[0] = 0.0
|
||||
for i in range(1, len(q)):
|
||||
delta_q[i] = q[i] - q[i - 1]
|
||||
return delta_q
|
||||
|
||||
if False:
|
||||
data = np.genfromtxt("s2_tracking.csv", delimiter=",", skip_header=1,
|
||||
names=['time', 'position', 'steps', 'counts'])
|
||||
else:
|
||||
data = np.loadtxt("s2_tracking.csv", delimiter=",", skiprows=1, unpack=True)
|
||||
|
||||
t, p, s, c = data
|
||||
|
||||
if False:
|
||||
print dir(data)
|
||||
#print data.T
|
||||
print len(data)
|
||||
print len(t)
|
||||
|
||||
delta_t = make_delta(t)
|
||||
delta_p = make_delta(p)
|
||||
delta_s = make_delta(s)
|
||||
delta_c = make_delta(c)
|
||||
|
||||
fig = plt.figure()
|
||||
ax1 = fig.add_subplot(111)
|
||||
|
||||
ax1.set_title("Motion Tracking")
|
||||
ax1.set_xlabel('position')
|
||||
ax1.set_ylabel('Steps/Count')
|
||||
|
||||
delta_spc = np.arange(len(t), dtype=np.float)
|
||||
for i in range(len(delta_spc)):
|
||||
if delta_c[i] == 0:
|
||||
delta_spc[i] = 0
|
||||
else:
|
||||
delta_spc[i] = delta_s[i] / delta_c[i]
|
||||
if False:
|
||||
print len(t), len(delta_s), len(delta_spc)
|
||||
print delta_spc
|
||||
for i in range(len(t)):
|
||||
print "%4d: %18.6f %18.6f %18.6f %18.6f %18.6f" % (i, t[i], delta_t[i], delta_s[i], delta_c[i], delta_spc[i])
|
||||
|
||||
ax1.plot(p, delta_spc, c='r', label='delta steps per count')
|
||||
ax1.plot(p, c / s / 70, c='b', label='counts / steps')
|
||||
|
||||
leg = ax1.legend()
|
||||
|
||||
plt.show()
|
||||
Reference in New Issue
Block a user