The tool allows overcoming some deficits in plotting available to LBT users either on the web or in the other tools. A major starting point was to enable polynomial fitting of the time-series to plot the residuals in fit (see later for an explanation), and inability to plot data from more than 2 streams.
The tool needs the following non-standard Python modules:
- h5py (h5py RPM)
- astropy (python-astropy RPM)
- matplotlib (python-matplotlib RPM)
The tool supports --help to get basic documentation of available features.
Examples
- plot one value (nested) from for 1st April 2018 7:00 UT for 30 minutes:
[pkubanek@pkubanek-dev tools/python]$ ./telemetry-graph --from 2018-04-01T07:00 --for 30m psfr.primarymirror_collimation.collimation.x_value
Gtk-Message: Failed to load module "pk-gtk-module"
Gtk-Message: Failed to load module "canberra-gtk-module"
- plot all collimtions values from for 1st April 2018 7:00 UT for 30 minutes, with custom marks (lines and X cross):
[pkubanek@pkubanek-dev tools/python]$ ./telemetry-graph --mark x --line - --from 2018-04-01T07:00 --for 30m psfr.primarymirror_collimation.collimation.*_value
Gtk-Message: Failed to load module "pk-gtk-module"
Gtk-Message: Failed to load module "canberra-gtk-module"
- plot values for debugging NS jump problem (showing what the optics and mount does, with 2 deg polynomial removed from el/az position to show the jumps):
[pkubanek@pkubanek-dev tools/python]$ ./telemetry-graph -vvv --line - --mark x --from 2018-04-01T07:15 --to 2018-04-01T07:55 pcs.trajectories.azposition#2 pcs.trajectories.elposition#2 . pmcl.mirror.*pos . gcsl.agwprobe.nativeachieved* gcsl.agwprobe.nativerequested* . pmcr.mirror.*pos . gcsr.agwprobe.nativeachieved* gcsr.agwprobe.nativerequested* . pcs/sx.telescope.porigi* pcs/sx.guide.guide* . pcs/dx.telescope.porigi* pcs/dx.guide.guide*
Gtk-Message: Failed to load module "pk-gtk-module"
Gtk-Message: Failed to load module "canberra-gtk-module"
DEBUG:root:Start time: 2018-04-01 07:15:00 end time: 2018-04-01 07:55:00
INFO:root:Added variable pcs.trajectories.azposition
INFO:root:Added variable pcs.trajectories.elposition
DEBUG:root:adding xpos to pmcl.mirror set
INFO:root:Added variable pmcl.mirror.xpos
DEBUG:root:adding ypos to pmcl.mirror set
INFO:root:Added variable pmcl.mirror.ypos
DEBUG:root:adding zpos to pmcl.mirror set
...
- same as above, but zoom onto troubled region (shows porigin* change preceeding jums in el/az position demands, hence points to them beeing responsible for the jump):
[pkubanek@pkubanek-dev tools/python]$ ./telemetry-graph -vv --line - --mark x --from 2018-04-01T07:18 --for 3m pcs.trajectories.azposition#2 pcs.trajectories.elposition#2 . pmcl.mirror.*pos . gcsl.agwprobe.nativeachieved* gcsl.agwprobe.nativerequested* . pmcr.mirror.*pos . gcsr.agwprobe.nativeachieved* gcsr.agwprobe.nativerequested* . pcs/sx.telescope.porigi* pcs/sx.guide.guide* . pcs/dx.telescope.porigi* pcs/dx.guide.guide*
Gtk-Message: Failed to load module "pk-gtk-module"
Gtk-Message: Failed to load module "canberra-gtk-module"
INFO:root:Added variable pcs.trajectories.azposition
INFO:root:Added variable pcs.trajectories.elposition
INFO:root:Added variable pmcl.mirror.xpos
INFO:root:Added variable pmcl.mirror.ypos
INFO:root:Added variable pmcl.mirror.zpos
INFO:root:Added variable gcsl.agwprobe.nativeachievedx
INFO:root:Added variable gcsl.agwprobe.nativeachievedy
INFO:root:Added variable gcsl.agwprobe.nativerequestedx
INFO:root:Added variable gcsl.agwprobe.nativerequestedy
INFO:root:Added variable pmcr.mirror.xpos
INFO:root:Added variable pmcr.mirror.ypos
INFO:root:Added variable pmcr.mirror.zpos
INFO:root:Added variable gcsr.agwprobe.nativeachievedx
INFO:root:Added variable gcsr.agwprobe.nativeachievedy
INFO:root:Added variable gcsr.agwprobe.nativerequestedx
INFO:root:Added variable gcsr.agwprobe.nativerequestedy
INFO:root:Added variable pcs/sx.telescope.poriginx
....
- list all streams available for 1st April 2018 0:0 UT:
[pkubanek@pkubanek-dev tools/python]$ ./telemetry-graph --from 2018-04-01 --list "*"
** /lbt/telemetry_data/tcs/aosl/2018/04/01/201804010001.aosl.anemometer_data.h5 anemometer_data_01
time_stamp
tai_offset
vx_1s_avg
vy_1s_avg
vz_1s_avg
md_1s_avg
vx_10s_avg
vy_10s_avg
vz_10s_avg
md_10s_avg
vx_1m_avg
vy_1m_avg
vz_1m_avg
md_1m_avg
** /lbt/telemetry_data/tcs/aosl/2018/04/01/201804010000.aosl.metrics.h5 metrics_01
time_stamp
....
Future upgrades
- use eval for data sources. So one will be able to run:
telemetry-graph "(${pcs.trajectories.elposition} - polyfit(${pcs.trajectories.elposition}, 2)) * 3600"
to get residuals of elposition - 2 deg fit of elposition in arcseconds (instead of arcdegrees).
- make regular expression parsing default (currently string has to contain * to be re matched to list of know variables)
- fix axis displays (separate Y scales, mix two datasets if feasible (e.g. share similar Y/value range))
-- %USERSIG{PetrKubanek - 2018-04-09}%