cgse 2024.7.0__py3-none-any.whl → 2025.0.2__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- README.md +27 -0
- bump.py +85 -0
- cgse-2025.0.2.dist-info/METADATA +38 -0
- cgse-2025.0.2.dist-info/RECORD +5 -0
- {cgse-2024.7.0.dist-info → cgse-2025.0.2.dist-info}/WHEEL +1 -2
- cgse-2024.7.0.dist-info/COPYING +0 -674
- cgse-2024.7.0.dist-info/COPYING.LESSER +0 -165
- cgse-2024.7.0.dist-info/METADATA +0 -144
- cgse-2024.7.0.dist-info/RECORD +0 -660
- cgse-2024.7.0.dist-info/entry_points.txt +0 -75
- cgse-2024.7.0.dist-info/top_level.txt +0 -2
- egse/__init__.py +0 -12
- egse/__main__.py +0 -32
- egse/aeu/aeu.py +0 -5238
- egse/aeu/aeu_awg.yaml +0 -265
- egse/aeu/aeu_crio.yaml +0 -273
- egse/aeu/aeu_cs.py +0 -627
- egse/aeu/aeu_devif.py +0 -321
- egse/aeu/aeu_main_ui.py +0 -903
- egse/aeu/aeu_metrics.py +0 -131
- egse/aeu/aeu_protocol.py +0 -463
- egse/aeu/aeu_psu.yaml +0 -204
- egse/aeu/aeu_ui.py +0 -873
- egse/aeu/arbdata/FccdRead.arb +0 -2
- egse/aeu/arbdata/FccdRead_min_points.arb +0 -2
- egse/aeu/arbdata/HeaterSync_FccdRead.arb +0 -2
- egse/aeu/arbdata/HeaterSync_ccdRead25.arb +0 -2
- egse/aeu/arbdata/HeaterSync_ccdRead31_25.arb +0 -2
- egse/aeu/arbdata/HeaterSync_ccdRead37_50.arb +0 -2
- egse/aeu/arbdata/HeaterSync_ccdRead43_75.arb +0 -2
- egse/aeu/arbdata/HeaterSync_ccdRead50.arb +0 -2
- egse/aeu/arbdata/Heater_FccdRead_min_points.arb +0 -2
- egse/aeu/arbdata/ccdRead25.arb +0 -2
- egse/aeu/arbdata/ccdRead25_150ms.arb +0 -2
- egse/aeu/arbdata/ccdRead31_25.arb +0 -2
- egse/aeu/arbdata/ccdRead31_25_150ms.arb +0 -2
- egse/aeu/arbdata/ccdRead37_50.arb +0 -2
- egse/aeu/arbdata/ccdRead37_50_150ms.arb +0 -2
- egse/aeu/arbdata/ccdRead43_75.arb +0 -2
- egse/aeu/arbdata/ccdRead43_75_150ms.arb +0 -2
- egse/aeu/arbdata/ccdRead50.arb +0 -2
- egse/aeu/arbdata/ccdRead50_150ms.arb +0 -2
- egse/alert/__init__.py +0 -1049
- egse/alert/alertman.yaml +0 -37
- egse/alert/alertman_cs.py +0 -233
- egse/alert/alertman_ui.py +0 -600
- egse/alert/gsm/beaglebone.py +0 -138
- egse/alert/gsm/beaglebone.yaml +0 -51
- egse/alert/gsm/beaglebone_cs.py +0 -108
- egse/alert/gsm/beaglebone_devif.py +0 -122
- egse/alert/gsm/beaglebone_protocol.py +0 -46
- egse/bits.py +0 -318
- egse/camera.py +0 -44
- egse/collimator/__init__.py +0 -0
- egse/collimator/fcul/__init__.py +0 -0
- egse/collimator/fcul/ogse.py +0 -1077
- egse/collimator/fcul/ogse.yaml +0 -14
- egse/collimator/fcul/ogse_cs.py +0 -154
- egse/collimator/fcul/ogse_devif.py +0 -358
- egse/collimator/fcul/ogse_protocol.py +0 -132
- egse/collimator/fcul/ogse_sim.py +0 -431
- egse/collimator/fcul/ogse_ui.py +0 -1108
- egse/command.py +0 -699
- egse/config.py +0 -410
- egse/confman/__init__.py +0 -1058
- egse/confman/confman.yaml +0 -70
- egse/confman/confman_cs.py +0 -240
- egse/confman/confman_ui.py +0 -381
- egse/confman/setup_ui.py +0 -565
- egse/control.py +0 -632
- egse/coordinates/__init__.py +0 -534
- egse/coordinates/avoidance.py +0 -100
- egse/coordinates/cslmodel.py +0 -127
- egse/coordinates/laser_tracker_to_dict.py +0 -122
- egse/coordinates/point.py +0 -707
- egse/coordinates/pyplot.py +0 -194
- egse/coordinates/referenceFrame.py +0 -1279
- egse/coordinates/refmodel.py +0 -737
- egse/coordinates/rotationMatrix.py +0 -85
- egse/coordinates/transform3d_addon.py +0 -419
- egse/csl/__init__.py +0 -50
- egse/csl/commanding.py +0 -78
- egse/csl/icons/hexapod-connected-selected.svg +0 -30
- egse/csl/icons/hexapod-connected.svg +0 -30
- egse/csl/icons/hexapod-homing-selected.svg +0 -68
- egse/csl/icons/hexapod-homing.svg +0 -68
- egse/csl/icons/hexapod-retract-selected.svg +0 -56
- egse/csl/icons/hexapod-retract.svg +0 -51
- egse/csl/icons/hexapod-zero-selected.svg +0 -56
- egse/csl/icons/hexapod-zero.svg +0 -56
- egse/csl/icons/logo-puna.svg +0 -92
- egse/csl/icons/stop.svg +0 -1
- egse/csl/initialisation.py +0 -102
- egse/csl/mech_pos_settings.yaml +0 -18
- egse/das.py +0 -1240
- egse/das.yaml +0 -7
- egse/data/conf/SETUP_CSL_00000_170620_150000.yaml +0 -5
- egse/data/conf/SETUP_CSL_00001_170620_151010.yaml +0 -69
- egse/data/conf/SETUP_CSL_00002_170620_151020.yaml +0 -69
- egse/data/conf/SETUP_CSL_00003_170620_151030.yaml +0 -69
- egse/data/conf/SETUP_CSL_00004_170620_151040.yaml +0 -69
- egse/data/conf/SETUP_CSL_00005_170620_151050.yaml +0 -69
- egse/data/conf/SETUP_CSL_00006_170620_151060.yaml +0 -69
- egse/data/conf/SETUP_CSL_00007_170620_151070.yaml +0 -69
- egse/data/conf/SETUP_CSL_00008_170620_151080.yaml +0 -75
- egse/data/conf/SETUP_CSL_00010_210308_083016.yaml +0 -138
- egse/data/conf/SETUP_INTA_00000_170620_150000.yaml +0 -4
- egse/data/conf/SETUP_SRON_00000_170620_150000.yaml +0 -4
- egse/decorators.py +0 -514
- egse/device.py +0 -269
- egse/dpu/__init__.py +0 -2698
- egse/dpu/ccd_ui.py +0 -514
- egse/dpu/dpu.py +0 -783
- egse/dpu/dpu.yaml +0 -153
- egse/dpu/dpu_cs.py +0 -272
- egse/dpu/dpu_ui.py +0 -671
- egse/dpu/fitsgen.py +0 -2096
- egse/dpu/fitsgen_ui.py +0 -399
- egse/dpu/hdf5_model.py +0 -332
- egse/dpu/hdf5_ui.py +0 -277
- egse/dpu/hdf5_viewer.py +0 -506
- egse/dpu/hk_ui.py +0 -468
- egse/dpu_commands.py +0 -81
- egse/dsi/__init__.py +0 -33
- egse/dsi/_libesl.py +0 -232
- egse/dsi/constants.py +0 -296
- egse/dsi/esl.py +0 -630
- egse/dsi/rmap.py +0 -444
- egse/dsi/rmapci.py +0 -39
- egse/dsi/spw.py +0 -335
- egse/dsi/spw_state.py +0 -29
- egse/dummy.py +0 -318
- egse/dyndummy.py +0 -179
- egse/env.py +0 -278
- egse/exceptions.py +0 -88
- egse/fdir/__init__.py +0 -26
- egse/fdir/fdir_manager.py +0 -85
- egse/fdir/fdir_manager.yaml +0 -37
- egse/fdir/fdir_manager_controller.py +0 -136
- egse/fdir/fdir_manager_cs.py +0 -164
- egse/fdir/fdir_manager_interface.py +0 -15
- egse/fdir/fdir_remote.py +0 -73
- egse/fdir/fdir_remote.yaml +0 -30
- egse/fdir/fdir_remote_controller.py +0 -30
- egse/fdir/fdir_remote_cs.py +0 -94
- egse/fdir/fdir_remote_interface.py +0 -9
- egse/fdir/fdir_remote_popup.py +0 -26
- egse/fee/__init__.py +0 -106
- egse/fee/f_fee_register.yaml +0 -43
- egse/fee/feesim.py +0 -914
- egse/fee/n_fee_hk.py +0 -768
- egse/fee/nfee.py +0 -188
- egse/filterwheel/__init__.py +0 -4
- egse/filterwheel/eksma/__init__.py +0 -49
- egse/filterwheel/eksma/fw8smc4.py +0 -657
- egse/filterwheel/eksma/fw8smc4.yaml +0 -121
- egse/filterwheel/eksma/fw8smc4_cs.py +0 -144
- egse/filterwheel/eksma/fw8smc4_devif.py +0 -473
- egse/filterwheel/eksma/fw8smc4_protocol.py +0 -82
- egse/filterwheel/eksma/fw8smc4_ui.py +0 -940
- egse/filterwheel/eksma/fw8smc5.py +0 -115
- egse/filterwheel/eksma/fw8smc5.yaml +0 -105
- egse/filterwheel/eksma/fw8smc5_controller.py +0 -307
- egse/filterwheel/eksma/fw8smc5_cs.py +0 -141
- egse/filterwheel/eksma/fw8smc5_interface.py +0 -65
- egse/filterwheel/eksma/fw8smc5_simulator.py +0 -29
- egse/filterwheel/eksma/fw8smc5_ui.py +0 -1065
- egse/filterwheel/eksma/testpythonfw.py +0 -215
- egse/fov/__init__.py +0 -65
- egse/fov/fov_hk.py +0 -710
- egse/fov/fov_ui.py +0 -859
- egse/fov/fov_ui_controller.py +0 -140
- egse/fov/fov_ui_model.py +0 -200
- egse/fov/fov_ui_view.py +0 -345
- egse/gimbal/__init__.py +0 -32
- egse/gimbal/symetrie/__init__.py +0 -26
- egse/gimbal/symetrie/alpha.py +0 -586
- egse/gimbal/symetrie/generic_gimbal_ui.py +0 -1521
- egse/gimbal/symetrie/gimbal.py +0 -877
- egse/gimbal/symetrie/gimbal.yaml +0 -168
- egse/gimbal/symetrie/gimbal_cs.py +0 -183
- egse/gimbal/symetrie/gimbal_protocol.py +0 -138
- egse/gimbal/symetrie/gimbal_ui.py +0 -361
- egse/gimbal/symetrie/pmac.py +0 -1006
- egse/gimbal/symetrie/pmac_regex.py +0 -83
- egse/graph.py +0 -132
- egse/gui/__init__.py +0 -47
- egse/gui/buttons.py +0 -378
- egse/gui/focalplane.py +0 -1285
- egse/gui/formatter.py +0 -10
- egse/gui/led.py +0 -162
- egse/gui/limitswitch.py +0 -143
- egse/gui/mechanisms.py +0 -587
- egse/gui/states.py +0 -148
- egse/gui/stripchart.py +0 -729
- egse/gui/styles.qss +0 -48
- egse/gui/switch.py +0 -112
- egse/h5.py +0 -274
- egse/help/__init__.py +0 -0
- egse/help/help_ui.py +0 -126
- egse/hexapod/__init__.py +0 -32
- egse/hexapod/symetrie/__init__.py +0 -137
- egse/hexapod/symetrie/alpha.py +0 -874
- egse/hexapod/symetrie/dynalpha.py +0 -1387
- egse/hexapod/symetrie/hexapod_ui.py +0 -1516
- egse/hexapod/symetrie/pmac.py +0 -1010
- egse/hexapod/symetrie/pmac_regex.py +0 -83
- egse/hexapod/symetrie/puna.py +0 -1167
- egse/hexapod/symetrie/puna.yaml +0 -193
- egse/hexapod/symetrie/puna_cs.py +0 -195
- egse/hexapod/symetrie/puna_protocol.py +0 -134
- egse/hexapod/symetrie/puna_ui.py +0 -433
- egse/hexapod/symetrie/punaplus.py +0 -107
- egse/hexapod/symetrie/zonda.py +0 -872
- egse/hexapod/symetrie/zonda.yaml +0 -337
- egse/hexapod/symetrie/zonda_cs.py +0 -172
- egse/hexapod/symetrie/zonda_devif.py +0 -414
- egse/hexapod/symetrie/zonda_protocol.py +0 -123
- egse/hexapod/symetrie/zonda_ui.py +0 -449
- egse/hk.py +0 -791
- egse/icons/aeu-cs-start.svg +0 -117
- egse/icons/aeu-cs-stop.svg +0 -118
- egse/icons/aeu-cs.svg +0 -107
- egse/icons/aeu_cs-started.svg +0 -112
- egse/icons/aeu_cs-stopped.svg +0 -112
- egse/icons/aeu_cs.svg +0 -55
- egse/icons/alert.svg +0 -1
- egse/icons/arrow-double-left.png +0 -0
- egse/icons/arrow-double-right.png +0 -0
- egse/icons/arrow-up.svg +0 -11
- egse/icons/backward.svg +0 -1
- egse/icons/busy.svg +0 -1
- egse/icons/cleaning.svg +0 -115
- egse/icons/color-scheme.svg +0 -1
- egse/icons/cs-connected-alert.svg +0 -91
- egse/icons/cs-connected-disabled.svg +0 -43
- egse/icons/cs-connected.svg +0 -89
- egse/icons/cs-not-connected.svg +0 -44
- egse/icons/double-left-arrow.svg +0 -1
- egse/icons/double-right-arrow.svg +0 -1
- egse/icons/erase-disabled.svg +0 -19
- egse/icons/erase.svg +0 -59
- egse/icons/fitsgen-start.svg +0 -47
- egse/icons/fitsgen-stop.svg +0 -48
- egse/icons/fitsgen.svg +0 -1
- egse/icons/forward.svg +0 -1
- egse/icons/fov-hk-start.svg +0 -33
- egse/icons/fov-hk-stop.svg +0 -37
- egse/icons/fov-hk.svg +0 -1
- egse/icons/front-desk.svg +0 -1
- egse/icons/home-actioned.svg +0 -15
- egse/icons/home-disabled.svg +0 -15
- egse/icons/home.svg +0 -13
- egse/icons/info.svg +0 -1
- egse/icons/invalid.png +0 -0
- egse/icons/led-green.svg +0 -20
- egse/icons/led-grey.svg +0 -20
- egse/icons/led-orange.svg +0 -20
- egse/icons/led-red.svg +0 -20
- egse/icons/led-square-green.svg +0 -134
- egse/icons/led-square-grey.svg +0 -134
- egse/icons/led-square-orange.svg +0 -134
- egse/icons/led-square-red.svg +0 -134
- egse/icons/limit-switch-all-green.svg +0 -115
- egse/icons/limit-switch-all-red.svg +0 -117
- egse/icons/limit-switch-el+.svg +0 -116
- egse/icons/limit-switch-el-.svg +0 -117
- egse/icons/location-marker.svg +0 -1
- egse/icons/logo-dpu.svg +0 -48
- egse/icons/logo-gimbal.svg +0 -112
- egse/icons/logo-huber.svg +0 -23
- egse/icons/logo-ogse.svg +0 -31
- egse/icons/logo-puna.svg +0 -92
- egse/icons/logo-tcs.svg +0 -29
- egse/icons/logo-zonda.svg +0 -66
- egse/icons/maximize.svg +0 -1
- egse/icons/meter.svg +0 -1
- egse/icons/more.svg +0 -45
- egse/icons/n-fee-hk-start.svg +0 -24
- egse/icons/n-fee-hk-stop.svg +0 -25
- egse/icons/n-fee-hk.svg +0 -83
- egse/icons/observing-off.svg +0 -46
- egse/icons/observing-on.svg +0 -46
- egse/icons/open-document-hdf5.png +0 -0
- egse/icons/open-document-hdf5.svg +0 -21
- egse/icons/ops-mode.svg +0 -1
- egse/icons/play-green.svg +0 -17
- egse/icons/plugged-disabled.svg +0 -27
- egse/icons/plugged.svg +0 -21
- egse/icons/pm_ui.svg +0 -1
- egse/icons/power-button-green.svg +0 -27
- egse/icons/power-button-red.svg +0 -27
- egse/icons/power-button.svg +0 -27
- egse/icons/radar.svg +0 -1
- egse/icons/radioactive.svg +0 -2
- egse/icons/reload.svg +0 -1
- egse/icons/remote-control-off.svg +0 -28
- egse/icons/remote-control-on.svg +0 -28
- egse/icons/repeat-blue.svg +0 -15
- egse/icons/repeat.svg +0 -1
- egse/icons/settings.svg +0 -1
- egse/icons/shrink.svg +0 -1
- egse/icons/shutter.svg +0 -1
- egse/icons/sign-off.svg +0 -1
- egse/icons/sign-on.svg +0 -1
- egse/icons/sim-mode.svg +0 -1
- egse/icons/small-buttons-go.svg +0 -20
- egse/icons/small-buttons-minus.svg +0 -51
- egse/icons/small-buttons-plus.svg +0 -51
- egse/icons/sponge.svg +0 -220
- egse/icons/start-button-disabled.svg +0 -84
- egse/icons/start-button.svg +0 -50
- egse/icons/stop-button-disabled.svg +0 -84
- egse/icons/stop-button.svg +0 -50
- egse/icons/stop-red.svg +0 -17
- egse/icons/stop.svg +0 -1
- egse/icons/switch-disabled-square.svg +0 -87
- egse/icons/switch-disabled.svg +0 -15
- egse/icons/switch-off-square.svg +0 -87
- egse/icons/switch-off.svg +0 -72
- egse/icons/switch-on-square.svg +0 -87
- egse/icons/switch-on.svg +0 -61
- egse/icons/temperature-control.svg +0 -44
- egse/icons/th_ui_logo.svg +0 -1
- egse/icons/unplugged.svg +0 -23
- egse/icons/unvalid.png +0 -0
- egse/icons/user-interface.svg +0 -1
- egse/icons/vacuum.svg +0 -1
- egse/icons/valid.png +0 -0
- egse/icons/zoom-to-pixel-dark.svg +0 -64
- egse/icons/zoom-to-pixel-white.svg +0 -36
- egse/images/big-rotation-stage.png +0 -0
- egse/images/connected-100.png +0 -0
- egse/images/cross.svg +0 -6
- egse/images/disconnected-100.png +0 -0
- egse/images/gui-icon.png +0 -0
- egse/images/home.svg +0 -6
- egse/images/info-icon.png +0 -0
- egse/images/led-black.svg +0 -89
- egse/images/led-green.svg +0 -85
- egse/images/led-orange.svg +0 -85
- egse/images/led-red.svg +0 -85
- egse/images/load-icon.png +0 -0
- egse/images/load-setup.png +0 -0
- egse/images/load.png +0 -0
- egse/images/pause.png +0 -0
- egse/images/play-button.svg +0 -8
- egse/images/play.png +0 -0
- egse/images/process-status.png +0 -0
- egse/images/restart.png +0 -0
- egse/images/search.png +0 -0
- egse/images/sma.png +0 -0
- egse/images/start.png +0 -0
- egse/images/stop-button.svg +0 -8
- egse/images/stop.png +0 -0
- egse/images/switch-off.svg +0 -48
- egse/images/switch-on.svg +0 -48
- egse/images/undo.png +0 -0
- egse/images/update-button.svg +0 -11
- egse/imageviewer/exposureselection.py +0 -475
- egse/imageviewer/imageviewer.py +0 -198
- egse/imageviewer/matchfocalplane.py +0 -179
- egse/imageviewer/subfieldposition.py +0 -133
- egse/lampcontrol/__init__.py +0 -4
- egse/lampcontrol/beaglebone/beaglebone.py +0 -178
- egse/lampcontrol/beaglebone/beaglebone.yaml +0 -62
- egse/lampcontrol/beaglebone/beaglebone_cs.py +0 -106
- egse/lampcontrol/beaglebone/beaglebone_devif.py +0 -150
- egse/lampcontrol/beaglebone/beaglebone_protocol.py +0 -73
- egse/lampcontrol/energetiq/__init__.py +0 -22
- egse/lampcontrol/energetiq/eq99.yaml +0 -98
- egse/lampcontrol/energetiq/lampEQ99.py +0 -283
- egse/lampcontrol/energetiq/lampEQ99_cs.py +0 -128
- egse/lampcontrol/energetiq/lampEQ99_devif.py +0 -158
- egse/lampcontrol/energetiq/lampEQ99_encode_decode_errors.py +0 -73
- egse/lampcontrol/energetiq/lampEQ99_protocol.py +0 -71
- egse/lampcontrol/energetiq/lampEQ99_ui.py +0 -465
- egse/lib/CentOS-7/EtherSpaceLink_v34_86.dylib +0 -0
- egse/lib/CentOS-8/ESL-RMAP_v34_86.dylib +0 -0
- egse/lib/CentOS-8/EtherSpaceLink_v34_86.dylib +0 -0
- egse/lib/Debian/ESL-RMAP_v34_86.dylib +0 -0
- egse/lib/Debian/EtherSpaceLink_v34_86.dylib +0 -0
- egse/lib/Debian/libetherspacelink_v35_21.dylib +0 -0
- egse/lib/Linux/ESL-RMAP_v34_86.dylib +0 -0
- egse/lib/Linux/EtherSpaceLink_v34_86.dylib +0 -0
- egse/lib/Ubuntu-20/ESL-RMAP_v34_86.dylib +0 -0
- egse/lib/Ubuntu-20/EtherSpaceLink_v34_86.dylib +0 -0
- egse/lib/gssw/python3-gssw_2.2.3+31f63c9f-1_all.deb +0 -0
- egse/lib/ximc/__pycache__/pyximc.cpython-38 2.pyc +0 -0
- egse/lib/ximc/__pycache__/pyximc.cpython-38.pyc +0 -0
- egse/lib/ximc/libximc.framework/Frameworks/libbindy.dylib +0 -0
- egse/lib/ximc/libximc.framework/Frameworks/libxiwrapper.dylib +0 -0
- egse/lib/ximc/libximc.framework/Headers/ximc.h +0 -5510
- egse/lib/ximc/libximc.framework/Resources/Info.plist +0 -42
- egse/lib/ximc/libximc.framework/Resources/keyfile.sqlite +0 -0
- egse/lib/ximc/libximc.framework/libbindy.so +0 -0
- egse/lib/ximc/libximc.framework/libximc +0 -0
- egse/lib/ximc/libximc.framework/libximc.so +0 -0
- egse/lib/ximc/libximc.framework/libximc.so.7.0.0 +0 -0
- egse/lib/ximc/libximc.framework/libxiwrapper.so +0 -0
- egse/lib/ximc/pyximc.py +0 -922
- egse/listener.py +0 -179
- egse/logger/__init__.py +0 -243
- egse/logger/log_cs.py +0 -321
- egse/metrics.py +0 -102
- egse/mixin.py +0 -464
- egse/monitoring.py +0 -95
- egse/ni/alarms/__init__.py +0 -26
- egse/ni/alarms/cdaq9375.py +0 -300
- egse/ni/alarms/cdaq9375.yaml +0 -89
- egse/ni/alarms/cdaq9375_cs.py +0 -130
- egse/ni/alarms/cdaq9375_devif.py +0 -183
- egse/ni/alarms/cdaq9375_protocol.py +0 -48
- egse/obs_inspection.py +0 -165
- egse/observer.py +0 -41
- egse/obsid.py +0 -163
- egse/powermeter/__init__.py +0 -0
- egse/powermeter/ni/__init__.py +0 -38
- egse/powermeter/ni/cdaq9184.py +0 -224
- egse/powermeter/ni/cdaq9184.yaml +0 -73
- egse/powermeter/ni/cdaq9184_cs.py +0 -130
- egse/powermeter/ni/cdaq9184_devif.py +0 -201
- egse/powermeter/ni/cdaq9184_protocol.py +0 -48
- egse/powermeter/ni/cdaq9184_ui.py +0 -544
- egse/powermeter/thorlabs/__init__.py +0 -25
- egse/powermeter/thorlabs/pm100a.py +0 -380
- egse/powermeter/thorlabs/pm100a.yaml +0 -132
- egse/powermeter/thorlabs/pm100a_cs.py +0 -136
- egse/powermeter/thorlabs/pm100a_devif.py +0 -127
- egse/powermeter/thorlabs/pm100a_protocol.py +0 -80
- egse/powermeter/thorlabs/pm100a_ui.py +0 -725
- egse/process.py +0 -451
- egse/procman/__init__.py +0 -834
- egse/procman/cannot_start_process_popup.py +0 -43
- egse/procman/procman.yaml +0 -49
- egse/procman/procman_cs.py +0 -201
- egse/procman/procman_ui.py +0 -2081
- egse/protocol.py +0 -605
- egse/proxy.py +0 -531
- egse/randomwalk.py +0 -140
- egse/reg.py +0 -585
- egse/reload.py +0 -122
- egse/reprocess.py +0 -693
- egse/resource.py +0 -333
- egse/rmap.py +0 -406
- egse/rst.py +0 -135
- egse/search.py +0 -182
- egse/serialdevice.py +0 -190
- egse/services.py +0 -247
- egse/services.yaml +0 -68
- egse/settings.py +0 -379
- egse/settings.yaml +0 -980
- egse/setup.py +0 -1181
- egse/shutter/__init__.py +0 -0
- egse/shutter/thorlabs/__init__.py +0 -19
- egse/shutter/thorlabs/ksc101.py +0 -205
- egse/shutter/thorlabs/ksc101.yaml +0 -105
- egse/shutter/thorlabs/ksc101_cs.py +0 -136
- egse/shutter/thorlabs/ksc101_devif.py +0 -201
- egse/shutter/thorlabs/ksc101_protocol.py +0 -71
- egse/shutter/thorlabs/ksc101_ui.py +0 -548
- egse/shutter/thorlabs/sc10.py +0 -82
- egse/shutter/thorlabs/sc10.yaml +0 -52
- egse/shutter/thorlabs/sc10_controller.py +0 -81
- egse/shutter/thorlabs/sc10_cs.py +0 -108
- egse/shutter/thorlabs/sc10_interface.py +0 -25
- egse/shutter/thorlabs/sc10_simulator.py +0 -30
- egse/simulator.py +0 -41
- egse/slack.py +0 -61
- egse/socketdevice.py +0 -218
- egse/sockets.py +0 -218
- egse/spw.py +0 -1401
- egse/stages/__init__.py +0 -12
- egse/stages/aerotech/ensemble.py +0 -245
- egse/stages/aerotech/ensemble.yaml +0 -205
- egse/stages/aerotech/ensemble_controller.py +0 -275
- egse/stages/aerotech/ensemble_cs.py +0 -110
- egse/stages/aerotech/ensemble_interface.py +0 -132
- egse/stages/aerotech/ensemble_parameters.py +0 -433
- egse/stages/aerotech/ensemble_simulator.py +0 -27
- egse/stages/aerotech/mgse_sim.py +0 -188
- egse/stages/arun/smd3.py +0 -110
- egse/stages/arun/smd3.yaml +0 -68
- egse/stages/arun/smd3_controller.py +0 -470
- egse/stages/arun/smd3_cs.py +0 -112
- egse/stages/arun/smd3_interface.py +0 -53
- egse/stages/arun/smd3_simulator.py +0 -27
- egse/stages/arun/smd3_stop.py +0 -16
- egse/stages/huber/__init__.py +0 -49
- egse/stages/huber/smc9300.py +0 -920
- egse/stages/huber/smc9300.yaml +0 -63
- egse/stages/huber/smc9300_cs.py +0 -178
- egse/stages/huber/smc9300_devif.py +0 -345
- egse/stages/huber/smc9300_protocol.py +0 -113
- egse/stages/huber/smc9300_sim.py +0 -547
- egse/stages/huber/smc9300_ui.py +0 -973
- egse/state.py +0 -173
- egse/statemachine.py +0 -274
- egse/storage/__init__.py +0 -1067
- egse/storage/persistence.py +0 -2295
- egse/storage/storage.yaml +0 -79
- egse/storage/storage_cs.py +0 -231
- egse/styles/dark.qss +0 -343
- egse/styles/default.qss +0 -48
- egse/synoptics/__init__.py +0 -417
- egse/synoptics/syn.yaml +0 -9
- egse/synoptics/syn_cs.py +0 -195
- egse/system.py +0 -1611
- egse/tcs/__init__.py +0 -14
- egse/tcs/tcs.py +0 -879
- egse/tcs/tcs.yaml +0 -14
- egse/tcs/tcs_cs.py +0 -202
- egse/tcs/tcs_devif.py +0 -292
- egse/tcs/tcs_protocol.py +0 -180
- egse/tcs/tcs_sim.py +0 -177
- egse/tcs/tcs_ui.py +0 -543
- egse/tdms.py +0 -171
- egse/tempcontrol/__init__.py +0 -23
- egse/tempcontrol/agilent/agilent34970.py +0 -109
- egse/tempcontrol/agilent/agilent34970.yaml +0 -44
- egse/tempcontrol/agilent/agilent34970_cs.py +0 -114
- egse/tempcontrol/agilent/agilent34970_devif.py +0 -182
- egse/tempcontrol/agilent/agilent34970_protocol.py +0 -96
- egse/tempcontrol/agilent/agilent34972.py +0 -111
- egse/tempcontrol/agilent/agilent34972.yaml +0 -44
- egse/tempcontrol/agilent/agilent34972_cs.py +0 -115
- egse/tempcontrol/agilent/agilent34972_devif.py +0 -189
- egse/tempcontrol/agilent/agilent34972_protocol.py +0 -98
- egse/tempcontrol/beaglebone/beaglebone.py +0 -341
- egse/tempcontrol/beaglebone/beaglebone.yaml +0 -110
- egse/tempcontrol/beaglebone/beaglebone_cs.py +0 -117
- egse/tempcontrol/beaglebone/beaglebone_protocol.py +0 -134
- egse/tempcontrol/beaglebone/beaglebone_ui.py +0 -674
- egse/tempcontrol/digalox/digalox.py +0 -115
- egse/tempcontrol/digalox/digalox.yaml +0 -36
- egse/tempcontrol/digalox/digalox_cs.py +0 -108
- egse/tempcontrol/digalox/digalox_protocol.py +0 -56
- egse/tempcontrol/keithley/__init__.py +0 -33
- egse/tempcontrol/keithley/daq6510.py +0 -662
- egse/tempcontrol/keithley/daq6510.yaml +0 -105
- egse/tempcontrol/keithley/daq6510_cs.py +0 -163
- egse/tempcontrol/keithley/daq6510_devif.py +0 -343
- egse/tempcontrol/keithley/daq6510_protocol.py +0 -79
- egse/tempcontrol/keithley/daq6510_sim.py +0 -186
- egse/tempcontrol/lakeshore/__init__.py +0 -33
- egse/tempcontrol/lakeshore/lsci.py +0 -361
- egse/tempcontrol/lakeshore/lsci.yaml +0 -162
- egse/tempcontrol/lakeshore/lsci_cs.py +0 -174
- egse/tempcontrol/lakeshore/lsci_devif.py +0 -292
- egse/tempcontrol/lakeshore/lsci_protocol.py +0 -76
- egse/tempcontrol/lakeshore/lsci_ui.py +0 -387
- egse/tempcontrol/ni/__init__.py +0 -0
- egse/tempcontrol/spid/spid.py +0 -109
- egse/tempcontrol/spid/spid.yaml +0 -81
- egse/tempcontrol/spid/spid_controller.py +0 -279
- egse/tempcontrol/spid/spid_cs.py +0 -136
- egse/tempcontrol/spid/spid_protocol.py +0 -107
- egse/tempcontrol/spid/spid_ui.py +0 -723
- egse/tempcontrol/srs/__init__.py +0 -22
- egse/tempcontrol/srs/ptc10.py +0 -867
- egse/tempcontrol/srs/ptc10.yaml +0 -227
- egse/tempcontrol/srs/ptc10_cs.py +0 -128
- egse/tempcontrol/srs/ptc10_devif.py +0 -116
- egse/tempcontrol/srs/ptc10_protocol.py +0 -39
- egse/tempcontrol/srs/ptc10_ui.py +0 -906
- egse/ups/apc/apc.py +0 -236
- egse/ups/apc/apc.yaml +0 -45
- egse/ups/apc/apc_cs.py +0 -101
- egse/ups/apc/apc_protocol.py +0 -125
- egse/user.yaml +0 -7
- egse/vacuum/beaglebone/beaglebone.py +0 -149
- egse/vacuum/beaglebone/beaglebone.yaml +0 -44
- egse/vacuum/beaglebone/beaglebone_cs.py +0 -108
- egse/vacuum/beaglebone/beaglebone_devif.py +0 -159
- egse/vacuum/beaglebone/beaglebone_protocol.py +0 -192
- egse/vacuum/beaglebone/beaglebone_ui.py +0 -638
- egse/vacuum/instrutech/igm402.py +0 -91
- egse/vacuum/instrutech/igm402.yaml +0 -90
- egse/vacuum/instrutech/igm402_controller.py +0 -124
- egse/vacuum/instrutech/igm402_cs.py +0 -108
- egse/vacuum/instrutech/igm402_interface.py +0 -49
- egse/vacuum/instrutech/igm402_simulator.py +0 -36
- egse/vacuum/keller/kellerBus.py +0 -256
- egse/vacuum/keller/leo3.py +0 -100
- egse/vacuum/keller/leo3.yaml +0 -38
- egse/vacuum/keller/leo3_controller.py +0 -81
- egse/vacuum/keller/leo3_cs.py +0 -101
- egse/vacuum/keller/leo3_interface.py +0 -33
- egse/vacuum/mks/evision.py +0 -86
- egse/vacuum/mks/evision.yaml +0 -75
- egse/vacuum/mks/evision_cs.py +0 -101
- egse/vacuum/mks/evision_devif.py +0 -313
- egse/vacuum/mks/evision_interface.py +0 -60
- egse/vacuum/mks/evision_simulator.py +0 -24
- egse/vacuum/mks/evision_ui.py +0 -701
- egse/vacuum/pfeiffer/acp40.py +0 -87
- egse/vacuum/pfeiffer/acp40.yaml +0 -60
- egse/vacuum/pfeiffer/acp40_controller.py +0 -117
- egse/vacuum/pfeiffer/acp40_cs.py +0 -109
- egse/vacuum/pfeiffer/acp40_interface.py +0 -40
- egse/vacuum/pfeiffer/acp40_simulator.py +0 -37
- egse/vacuum/pfeiffer/tc400.py +0 -87
- egse/vacuum/pfeiffer/tc400.yaml +0 -83
- egse/vacuum/pfeiffer/tc400_controller.py +0 -136
- egse/vacuum/pfeiffer/tc400_cs.py +0 -109
- egse/vacuum/pfeiffer/tc400_interface.py +0 -70
- egse/vacuum/pfeiffer/tc400_simulator.py +0 -35
- egse/vacuum/pfeiffer/tpg261.py +0 -80
- egse/vacuum/pfeiffer/tpg261.yaml +0 -66
- egse/vacuum/pfeiffer/tpg261_controller.py +0 -150
- egse/vacuum/pfeiffer/tpg261_cs.py +0 -109
- egse/vacuum/pfeiffer/tpg261_interface.py +0 -59
- egse/vacuum/pfeiffer/tpg261_simulator.py +0 -23
- egse/version.py +0 -174
- egse/visitedpositions.py +0 -398
- egse/windowing.py +0 -213
- egse/zmq/__init__.py +0 -28
- egse/zmq/spw.py +0 -160
- egse/zmq_ser.py +0 -41
- scripts/alerts/cold.yaml +0 -278
- scripts/alerts/example_alerts.yaml +0 -54
- scripts/alerts/transition.yaml +0 -14
- scripts/alerts/warm.yaml +0 -49
- scripts/analyse_n_fee_hk_data.py +0 -52
- scripts/check_hdf5_files.py +0 -192
- scripts/check_register_sync.py +0 -47
- scripts/check_tcs_calib_coef.py +0 -90
- scripts/correct_ccd_cold_temperature_cal.py +0 -157
- scripts/create_hdf5_report.py +0 -293
- scripts/csl_model.py +0 -420
- scripts/csl_restore_setup.py +0 -229
- scripts/export-grafana-dashboards.py +0 -49
- scripts/fdir/cs_recovery/fdir_cs_recovery.py +0 -54
- scripts/fdir/fdir_table.yaml +0 -70
- scripts/fdir/fdir_test_recovery.py +0 -10
- scripts/fdir/hw_recovery/fdir_agilent_hw_recovery.py +0 -73
- scripts/fdir/limit_recovery/fdir_agilent_limit.py +0 -61
- scripts/fdir/limit_recovery/fdir_bb_heater_limit.py +0 -59
- scripts/fdir/limit_recovery/fdir_ensemble_limit.py +0 -33
- scripts/fdir/limit_recovery/fdir_pressure_limit_recovery.py +0 -71
- scripts/fix_csv.py +0 -80
- scripts/ias/correct_ccd_temp_cal_elfique.py +0 -43
- scripts/ias/correct_ccd_temp_cal_floreffe.py +0 -43
- scripts/ias/correct_trp_swap_achel.py +0 -199
- scripts/inta/correct_ccd_temp_cal_duvel.py +0 -43
- scripts/inta/correct_ccd_temp_cal_gueuze.py +0 -43
- scripts/n_fee_supply_voltage_calculation.py +0 -92
- scripts/playground.py +0 -30
- scripts/print_hdf5_hk_data.py +0 -68
- scripts/print_register_map.py +0 -43
- scripts/remove_lines_between_matches.py +0 -188
- scripts/sron/commanding/control_heaters.py +0 -44
- scripts/sron/commanding/pumpdown.py +0 -46
- scripts/sron/commanding/set_pid_setpoint.py +0 -19
- scripts/sron/commanding/shutdown_bbb_heaters.py +0 -10
- scripts/sron/commanding/shutdown_pumps.py +0 -33
- scripts/sron/correct_mgse_coordinates_brigand_chimay.py +0 -272
- scripts/sron/correct_trp_swap_brigand.py +0 -204
- scripts/sron/gimbal_conversions.py +0 -75
- scripts/sron/tm_gen/tm_gen_agilent.py +0 -37
- scripts/sron/tm_gen/tm_gen_heaters.py +0 -4
- scripts/sron/tm_gen/tm_gen_spid.py +0 -13
- scripts/update_operational_cgse.py +0 -268
- scripts/update_operational_cgse_old.py +0 -273
|
@@ -1,54 +0,0 @@
|
|
|
1
|
-
import importlib
|
|
2
|
-
import logging
|
|
3
|
-
from argparse import ArgumentParser
|
|
4
|
-
|
|
5
|
-
from egse.control import is_control_server_active
|
|
6
|
-
from egse.procman import ProcessManagerProxy
|
|
7
|
-
from egse.setup import Setup, load_setup
|
|
8
|
-
from egse.zmq_ser import connect_address
|
|
9
|
-
|
|
10
|
-
logger = logging.getLogger(__name__)
|
|
11
|
-
logging.basicConfig()
|
|
12
|
-
|
|
13
|
-
parser = ArgumentParser()
|
|
14
|
-
parser.add_argument('cs_name', help='Name of the CS in the config')
|
|
15
|
-
args = parser.parse_args()
|
|
16
|
-
|
|
17
|
-
SETUP = load_setup()
|
|
18
|
-
SETUP = SETUP['gse']
|
|
19
|
-
|
|
20
|
-
devices = {}
|
|
21
|
-
devices = Setup.find_devices(SETUP, devices=devices)
|
|
22
|
-
|
|
23
|
-
cs_name = args.cs_name
|
|
24
|
-
|
|
25
|
-
for key, value in devices.items():
|
|
26
|
-
if cs_name in key:
|
|
27
|
-
proxy = value[0]
|
|
28
|
-
args = value[1]
|
|
29
|
-
module_name = proxy[7:].rsplit(".", 1)[0]
|
|
30
|
-
|
|
31
|
-
module = importlib.import_module(module_name)
|
|
32
|
-
|
|
33
|
-
ctrl_settings = module.CTRL_SETTINGS
|
|
34
|
-
transport = ctrl_settings.PROTOCOL
|
|
35
|
-
hostname = ctrl_settings.HOSTNAME
|
|
36
|
-
if module_name == "egse.aeu.aeu" or "egse.tempcontrol.agilent.agilent3497" in module_name:
|
|
37
|
-
name = key.split(" ")[1].upper()
|
|
38
|
-
commanding_port = ctrl_settings[name]["COMMANDING_PORT"]
|
|
39
|
-
else:
|
|
40
|
-
commanding_port = ctrl_settings.COMMANDING_PORT
|
|
41
|
-
|
|
42
|
-
if is_control_server_active(connect_address(transport,
|
|
43
|
-
hostname,
|
|
44
|
-
commanding_port)):
|
|
45
|
-
logger.info("False positive: CS seems to be online")
|
|
46
|
-
else:
|
|
47
|
-
try:
|
|
48
|
-
with ProcessManagerProxy() as procman:
|
|
49
|
-
procman.start_cs(cs_name, False)
|
|
50
|
-
|
|
51
|
-
except Exception as e:
|
|
52
|
-
logger.error(f"Could not start {args.cs_name}")
|
|
53
|
-
|
|
54
|
-
logger.info(f"finished {__name__}")
|
scripts/fdir/fdir_table.yaml
DELETED
|
@@ -1,70 +0,0 @@
|
|
|
1
|
-
# This file hold the configuration of the FDIR system
|
|
2
|
-
# Each entry represents a predefined FDIR situation.
|
|
3
|
-
# The entries hold:
|
|
4
|
-
# - priority: only FDIR signals with a higher priority that the current state of the FDIR manager
|
|
5
|
-
# are acted on (idle = -1).
|
|
6
|
-
# - script: the mitigation script to execute with its arguments.
|
|
7
|
-
# - actions: description of the mitigation actions performed by the script. This information is
|
|
8
|
-
# shown in the alert pop-up on the client.
|
|
9
|
-
|
|
10
|
-
# Just for testing
|
|
11
|
-
FDIR_TEST:
|
|
12
|
-
priority: 1
|
|
13
|
-
script: /fdir_test_recovery.py
|
|
14
|
-
actions:
|
|
15
|
-
- don't worry
|
|
16
|
-
- just a test
|
|
17
|
-
|
|
18
|
-
# Hardware failures
|
|
19
|
-
# Are called whenever the CS loses its connection with the device
|
|
20
|
-
# Usually recovers by trying to reconnect to the device and gettings its IDN
|
|
21
|
-
# If the CS is unable to retreive an IDN from the device, it will alert an operator
|
|
22
|
-
FDIR_AGILENT_HW:
|
|
23
|
-
priority: 1
|
|
24
|
-
script: /hw_recovery/fdir_agilent_hw_recovery.py
|
|
25
|
-
args: [agilent_index]
|
|
26
|
-
actions:
|
|
27
|
-
- shut down heaters regulated by this DAQ
|
|
28
|
-
- alert operator
|
|
29
|
-
|
|
30
|
-
# Control server failures
|
|
31
|
-
# Are called whenever proxies can't reach a control server
|
|
32
|
-
# Usually recovers by trying to restart the control server
|
|
33
|
-
# If the CS can't be restarted, it will alert an operator
|
|
34
|
-
FDIR_CS_STOPPED:
|
|
35
|
-
priority: 1
|
|
36
|
-
script: /cs_recovery/fdir_cs_recovery.py
|
|
37
|
-
actions:
|
|
38
|
-
- alert operator
|
|
39
|
-
|
|
40
|
-
# Hardware errors
|
|
41
|
-
# Are called when a device raises an error flag
|
|
42
|
-
# Recovery depends on the type of error
|
|
43
|
-
# An operator will be alerted if scripts is unable to recover within a set amount of time
|
|
44
|
-
FDIR_TC400_ERROR:
|
|
45
|
-
priority: 1
|
|
46
|
-
script: /error_recovery/fdir_tc400_error_recovery.py
|
|
47
|
-
actions:
|
|
48
|
-
- alert operator
|
|
49
|
-
|
|
50
|
-
# Housekeeping limit violations
|
|
51
|
-
# Are called when a upper or lower limit on some HK variable is crossed
|
|
52
|
-
# Recovery depends on the type of error
|
|
53
|
-
# An operator will always be alerted in this case
|
|
54
|
-
FDIR_PRESSURE_LIMIT:
|
|
55
|
-
priority: 1
|
|
56
|
-
script: /limit_recovery/fdir_pressure_limit_recovery.py
|
|
57
|
-
actions:
|
|
58
|
-
- close gate valve
|
|
59
|
-
- close LN2 valves
|
|
60
|
-
- Turn off IG filament
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
# Pealing of heaters, which leads to high resistance.
|
|
64
|
-
FDIR_BB_HEATER_LIMIT:
|
|
65
|
-
priority: 1
|
|
66
|
-
scripts: /limit_recovery/fdir_bb_beaglebone_limit.py
|
|
67
|
-
args: [agilent_index, channel_index]
|
|
68
|
-
actions:
|
|
69
|
-
- shut down heater and corresponding PID channel
|
|
70
|
-
- alert operator
|
|
@@ -1,73 +0,0 @@
|
|
|
1
|
-
import logging
|
|
2
|
-
from argparse import ArgumentParser
|
|
3
|
-
|
|
4
|
-
import sys
|
|
5
|
-
from numpy import mean
|
|
6
|
-
from time import time
|
|
7
|
-
|
|
8
|
-
from egse.hk import get_housekeeping
|
|
9
|
-
from egse.setup import load_setup
|
|
10
|
-
from egse.system import EPOCH_1958_1970
|
|
11
|
-
from egse.tempcontrol.beaglebone.beaglebone import BeagleboneProxy
|
|
12
|
-
from egse.tempcontrol.spid.spid import PidProxy
|
|
13
|
-
|
|
14
|
-
# This script is triggered when one of the agilent DAQs becomes unresponsive.
|
|
15
|
-
# This script is called with the agilent index as argument.
|
|
16
|
-
# All PID channels driven by a sensor connected to the DAQ are disabled.
|
|
17
|
-
# All corresponding heaters are set to the last value given by the PID.
|
|
18
|
-
|
|
19
|
-
log = logging.getLogger(__name__)
|
|
20
|
-
logging.basicConfig()
|
|
21
|
-
|
|
22
|
-
log.info(f'running {__name__}')
|
|
23
|
-
|
|
24
|
-
parser = ArgumentParser()
|
|
25
|
-
parser.add_argument('device_index', type=int, help='DAQ device index [0 - 3]')
|
|
26
|
-
args = parser.parse_args()
|
|
27
|
-
|
|
28
|
-
# Try to get the setup from the SM.
|
|
29
|
-
setup = load_setup()
|
|
30
|
-
|
|
31
|
-
# Try to get device proxies.
|
|
32
|
-
bb_proxy = BeagleboneProxy()
|
|
33
|
-
pid_proxy = PidProxy()
|
|
34
|
-
|
|
35
|
-
if not bb_proxy.is_cs_connected():
|
|
36
|
-
log.crticial("Could not connect to Beaglebone proxy")
|
|
37
|
-
sys.exit("Could not connect to Beaglebone proxy")
|
|
38
|
-
if not pid_proxy.is_cs_connected():
|
|
39
|
-
log.crticial("Could not connect to PID proxy")
|
|
40
|
-
sys.exit("Could not connect to PID proxy")
|
|
41
|
-
|
|
42
|
-
pid_channels = []
|
|
43
|
-
for l in setup.gse.spid.configuration.heaters.values():
|
|
44
|
-
pid_channels.extend(l)
|
|
45
|
-
|
|
46
|
-
# Turn off all PID channels controlled by this DAQ and set the heater power to the last value.
|
|
47
|
-
for (channel, agilent_idx, _, beaglebone_idx, beaglebone_ch, _, _, _) in pid_channels:
|
|
48
|
-
|
|
49
|
-
if agilent_idx == args.device_index:
|
|
50
|
-
|
|
51
|
-
# Calculate the average duty cycle over the last minute before shutting down
|
|
52
|
-
hk_name = f"GSRON_PID_CH{channel}_OUTPUT"
|
|
53
|
-
timestamp, values = get_housekeeping(hk_name=hk_name, time_window=60)
|
|
54
|
-
if time() - (float(timestamp[-1]) - EPOCH_1958_1970) > 30:
|
|
55
|
-
sys.exit("Retrieved duty cycles are more than a minute old")
|
|
56
|
-
|
|
57
|
-
values = [float(val) for val in values]
|
|
58
|
-
duty_cycle = mean(values)
|
|
59
|
-
|
|
60
|
-
# Read heater power before disabling PID channel.
|
|
61
|
-
pid_proxy.disable(channel=channel)
|
|
62
|
-
log.info(f'Disabled PID channel {channel}')
|
|
63
|
-
|
|
64
|
-
# Set heater power to last value.
|
|
65
|
-
|
|
66
|
-
bb_proxy.set_duty_cycle(beaglebone_idx, beaglebone_ch, int(duty_cycle * 10000))
|
|
67
|
-
bb_proxy.set_enable(beaglebone_idx, beaglebone_ch, True)
|
|
68
|
-
log.info(f'Set heater {beaglebone_idx}.{beaglebone_ch} to (fixed) {duty_cycle * 100} %')
|
|
69
|
-
|
|
70
|
-
else:
|
|
71
|
-
log.info(f"PID channel #{channel} not associated with DAQ #{args.device_index}")
|
|
72
|
-
|
|
73
|
-
log.info(f'finished {__name__}')
|
|
@@ -1,61 +0,0 @@
|
|
|
1
|
-
import logging
|
|
2
|
-
from argparse import ArgumentParser
|
|
3
|
-
|
|
4
|
-
import sys
|
|
5
|
-
|
|
6
|
-
from egse.setup import load_setup
|
|
7
|
-
from egse.tempcontrol.beaglebone.beaglebone import BeagleboneProxy
|
|
8
|
-
from egse.tempcontrol.spid.spid import PidProxy
|
|
9
|
-
|
|
10
|
-
# This script is triggered when one of the agilent channels violated the rate of change limit.
|
|
11
|
-
# This script is called with the agilent index and channel index as arguments.
|
|
12
|
-
# The corresponding PID channel and heater are turned off.
|
|
13
|
-
|
|
14
|
-
log = logging.getLogger(__name__)
|
|
15
|
-
logging.basicConfig()
|
|
16
|
-
|
|
17
|
-
log.info(f'running {__name__}')
|
|
18
|
-
|
|
19
|
-
parser = ArgumentParser()
|
|
20
|
-
parser.add_argument('hk_name', type=str, help='HK metric name')
|
|
21
|
-
args = parser.parse_args()
|
|
22
|
-
|
|
23
|
-
setup = load_setup()
|
|
24
|
-
|
|
25
|
-
bb_proxy = BeagleboneProxy()
|
|
26
|
-
pid_proxy = PidProxy()
|
|
27
|
-
|
|
28
|
-
if not pid_proxy.is_cs_connected():
|
|
29
|
-
log.critical(f"Could not connect to PID proxy")
|
|
30
|
-
sys.exit(f"Could not connect to PID proxy")
|
|
31
|
-
if not bb_proxy.is_cs_connected():
|
|
32
|
-
log.critical(f"Could not connect to Beaglebone Black proxy")
|
|
33
|
-
sys.exit(f"Could not connect to Beaglebone Black proxy")
|
|
34
|
-
|
|
35
|
-
agilent_model = 0 if args.hk_name.split('_')[1] == 'AG34972' else 2
|
|
36
|
-
agilent_num = 0 if int(args.hk_name.split('_')[2]) == 0 else 1
|
|
37
|
-
agilent_channel = int(args.hk_name.split('_')[3][1:])
|
|
38
|
-
daq_num = agilent_model + agilent_num
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
pid_channels = []
|
|
42
|
-
for l in setup.gse.spid.configuration.heaters.values():
|
|
43
|
-
pid_channels.extend(l)
|
|
44
|
-
|
|
45
|
-
# Turn off all PID channels controlled by this DAQ and set the heater power to the last value.
|
|
46
|
-
for (pid_channel, agilent_idx, channel_index, beaglebone_idx, beaglebone_ch, _, _, _) in pid_channels:
|
|
47
|
-
|
|
48
|
-
if agilent_idx == daq_num and channel_index == agilent_channel:
|
|
49
|
-
log.info(f"Temperature sensor {agilent_channel} of DAQ {daq_num} was associated to PID channel {pid_channel}")
|
|
50
|
-
log.info(f"PID channel {pid_channel} was associated with heater {beaglebone_idx} channel {beaglebone_ch}")
|
|
51
|
-
|
|
52
|
-
log.info(f"Turning off PID channel {pid_channel}")
|
|
53
|
-
# log.debug(f"pid_proxy.disable({pid_channel})")
|
|
54
|
-
pid_proxy.disable(pid_channel)
|
|
55
|
-
|
|
56
|
-
log.info(f'Disabling heater {beaglebone_idx} channel {beaglebone_ch}')
|
|
57
|
-
# log.debug(f"bb_proxy.set_enable({beaglebone_idx}, {beaglebone_ch}, False)")
|
|
58
|
-
bb_proxy.set_enable(beaglebone_idx, beaglebone_ch, False)
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
log.info(f'finished {__name__}')
|
|
@@ -1,59 +0,0 @@
|
|
|
1
|
-
import logging
|
|
2
|
-
from argparse import ArgumentParser
|
|
3
|
-
|
|
4
|
-
import sys
|
|
5
|
-
|
|
6
|
-
from egse.setup import load_setup
|
|
7
|
-
from egse.tempcontrol.beaglebone.beaglebone import BeagleboneProxy
|
|
8
|
-
from egse.tempcontrol.spid.spid import PidProxy
|
|
9
|
-
|
|
10
|
-
# This script is triggered when the resistance of a heater becomes too high (because of pealing).
|
|
11
|
-
# The corresponding PID channel and heater are disabled.
|
|
12
|
-
|
|
13
|
-
log = logging.getLogger(__name__)
|
|
14
|
-
logging.basicConfig()
|
|
15
|
-
|
|
16
|
-
log.info(f'running {__name__}')
|
|
17
|
-
|
|
18
|
-
parser = ArgumentParser()
|
|
19
|
-
parser.add_argument('hk_name', type=str, help="HK metric name")
|
|
20
|
-
args = parser.parse_args()
|
|
21
|
-
|
|
22
|
-
setup = load_setup()
|
|
23
|
-
|
|
24
|
-
bb_proxy = BeagleboneProxy()
|
|
25
|
-
pid_proxy = PidProxy()
|
|
26
|
-
|
|
27
|
-
if not pid_proxy.is_cs_connected():
|
|
28
|
-
log.critical(f"Could not connect to PID proxy")
|
|
29
|
-
sys.exit(f"Could not connect to PID proxy")
|
|
30
|
-
if not bb_proxy.is_cs_connected():
|
|
31
|
-
log.critical(f"Could not connect to Beaglebone Black proxy")
|
|
32
|
-
sys.exit(f"Could not connect to Beaglebone Black proxy")
|
|
33
|
-
|
|
34
|
-
agilent_model = 0 if args.hk_name.split('_')[1] == 'AG34972' else 2
|
|
35
|
-
agilent_num = 0 if int(args.hk_name.split('_')[2]) == 0 else 1
|
|
36
|
-
agilent_channel = int(args.hk_name.split('_')[3][1:])
|
|
37
|
-
daq_num = agilent_model + agilent_num
|
|
38
|
-
|
|
39
|
-
pid_channels = []
|
|
40
|
-
for l in setup.gse.spid.configuration.heaters.values():
|
|
41
|
-
pid_channels.extend(l)
|
|
42
|
-
|
|
43
|
-
# Turn off all PID channels controlled by this DAQ and set the heater power to the last value.
|
|
44
|
-
for (pid_channel, agilent_idx, channel_index, beaglebone_idx, beaglebone_ch, _, _, _) in pid_channels:
|
|
45
|
-
|
|
46
|
-
if agilent_idx == daq_num and channel_index == agilent_channel:
|
|
47
|
-
log.info(f"Resistor {agilent_channel} was associated to PID channel {pid_channel}")
|
|
48
|
-
log.info(f"PID channel {pid_channel} was associated with heater {beaglebone_idx} channel {beaglebone_ch}")
|
|
49
|
-
|
|
50
|
-
log.info(f"Turning off PID channel {pid_channel}")
|
|
51
|
-
# log.debug(f"pid_proxy.disable({pid_channel})")
|
|
52
|
-
pid_proxy.disable(pid_channel)
|
|
53
|
-
|
|
54
|
-
log.info(f"Disabling heater {beaglebone_idx} channel {beaglebone_ch}")
|
|
55
|
-
# log.debug(f"bb_proxy.set_enable({beaglebone_idx}, {beaglebone_ch}, False)")
|
|
56
|
-
bb_proxy.set_enable(beaglebone_idx, beaglebone_ch, False)
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
log.info(f'finished {__name__}')
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
import logging
|
|
2
|
-
|
|
3
|
-
from egse.setup import load_setup
|
|
4
|
-
from egse.stages.aerotech.ensemble import EnsembleProxy
|
|
5
|
-
|
|
6
|
-
# This script is triggerend when the gimbal motor tempertature is too high.
|
|
7
|
-
# The gimbal is moved to the resting position and is disabled.
|
|
8
|
-
|
|
9
|
-
log = logging.getLogger(__name__)
|
|
10
|
-
logging.basicConfig()
|
|
11
|
-
|
|
12
|
-
log.info(f'running {__name__}')
|
|
13
|
-
|
|
14
|
-
setup = load_setup()
|
|
15
|
-
|
|
16
|
-
# Get resting position values from the setup.
|
|
17
|
-
position = setup.gse.ensemble.resting_positions
|
|
18
|
-
|
|
19
|
-
with EnsembleProxy() as ensemble:
|
|
20
|
-
|
|
21
|
-
# Move to resting position.
|
|
22
|
-
ensemble.move_axes_degrees(position['X'], position['Y'])
|
|
23
|
-
while ensemble.is_moving():
|
|
24
|
-
pass
|
|
25
|
-
|
|
26
|
-
log.info('moved to resting position')
|
|
27
|
-
|
|
28
|
-
# Disable motors.
|
|
29
|
-
ensemble.disable_axis('X')
|
|
30
|
-
ensemble.disable_axis('Y')
|
|
31
|
-
log.info('disabled axes')
|
|
32
|
-
|
|
33
|
-
log.info(f'finished {__name__}')
|
|
@@ -1,71 +0,0 @@
|
|
|
1
|
-
import logging
|
|
2
|
-
import sys
|
|
3
|
-
|
|
4
|
-
from time import time
|
|
5
|
-
|
|
6
|
-
from egse.hk import get_housekeeping
|
|
7
|
-
from egse.system import EPOCH_1958_1970
|
|
8
|
-
from egse.vacuum.beaglebone.beaglebone import BeagleboneProxy
|
|
9
|
-
from egse.vacuum.instrutech.igm402 import Igm402Proxy
|
|
10
|
-
# This script is run when the pressure in the vessel is too high.
|
|
11
|
-
# Indicating something wrong with the pump(s) or a leak.
|
|
12
|
-
# First the gate valve is closed. Then the LN2 valve. and finally the IGM402 filament is disabled.
|
|
13
|
-
|
|
14
|
-
MAXPRESSURE = 1.5E-6
|
|
15
|
-
|
|
16
|
-
log = logging.getLogger(__name__)
|
|
17
|
-
logging.basicConfig()
|
|
18
|
-
|
|
19
|
-
log.info(f'Running {__name__}')
|
|
20
|
-
|
|
21
|
-
# Try to connect to the Beaglebone Valve controller and IGM402 pressure gauge proxy
|
|
22
|
-
|
|
23
|
-
valves = BeagleboneProxy()
|
|
24
|
-
igm402 = Igm402Proxy()
|
|
25
|
-
if not valves.is_cs_connected():
|
|
26
|
-
log.critical(f"Could not connect to Beaglebone Black proxy")
|
|
27
|
-
sys.exit(f"Could not connect to Beaglebone Black proxy")
|
|
28
|
-
if not igm402.is_cs_connected():
|
|
29
|
-
log.critical(f"Could not connect to IGM402 proxy")
|
|
30
|
-
sys.exit(f"Could not connect to IGM402 proxy")
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
# Get the most recent values from the housekeeping
|
|
34
|
-
igm402Timestamp, igm402Value = get_housekeeping("GSRON_IGM402_IG_P")
|
|
35
|
-
tpg261Timestamp, tpg261Value, = get_housekeeping("GSRON_TPG261_P_1")
|
|
36
|
-
|
|
37
|
-
igm402Age = time() - (float(igm402Timestamp) - EPOCH_1958_1970)
|
|
38
|
-
tpg261Age = time() - (float(tpg261Timestamp) - EPOCH_1958_1970)
|
|
39
|
-
|
|
40
|
-
# Ensure that these values are not too old
|
|
41
|
-
if igm402Age > 60:
|
|
42
|
-
raise Exception(f"IGM402 HK is more than 60 seconds old")
|
|
43
|
-
|
|
44
|
-
if tpg261Age > 60:
|
|
45
|
-
raise Exception(f"TPG261 HK is more than 60 seconds old")
|
|
46
|
-
log.info(f"IGM402 - Current value: {igm402Value}, Max: {MAXPRESSURE}")
|
|
47
|
-
log.info(f"TPG261 - Current value: {tpg261Value}, Max: {MAXPRESSURE}")
|
|
48
|
-
|
|
49
|
-
# Make sure that both pressure gauges are exeecuding their limits
|
|
50
|
-
if float(igm402Value) > float(MAXPRESSURE):
|
|
51
|
-
if float(tpg261Value) > float(MAXPRESSURE):
|
|
52
|
-
# Close the gate valve
|
|
53
|
-
log.info("Closing Gate valve")
|
|
54
|
-
# log.debug("set_valve, MV001, False")
|
|
55
|
-
valves.set_valve('MV001', False)
|
|
56
|
-
|
|
57
|
-
# Close the LN2 valves
|
|
58
|
-
log.info("Closing the LN2 valves")
|
|
59
|
-
for i in range(1, 5):
|
|
60
|
-
# log.debug(f"set_valve, MV01{i}, False")
|
|
61
|
-
valves.set_valve(f"MV01{i}", False)
|
|
62
|
-
|
|
63
|
-
log.info("Turning off IG filament")
|
|
64
|
-
# log.debug("set_filament_enable, False")
|
|
65
|
-
igm402.set_filament_enable(False)
|
|
66
|
-
else:
|
|
67
|
-
log.info(f"TPG261 is still in a safe range: {tpg261Value}")
|
|
68
|
-
else:
|
|
69
|
-
log.info(f"IGM402 is still in a safe range: {igm402Value}")
|
|
70
|
-
|
|
71
|
-
log.info(f'Finished {__name__}')
|
scripts/fix_csv.py
DELETED
|
@@ -1,80 +0,0 @@
|
|
|
1
|
-
"""
|
|
2
|
-
Small script to fix some problems with CSV files.
|
|
3
|
-
|
|
4
|
-
All the functions are written for a specific problem, you might need to run the script for
|
|
5
|
-
several functions to fix different problems.
|
|
6
|
-
|
|
7
|
-
Synopsis:
|
|
8
|
-
|
|
9
|
-
$ python3 fix_csv.py original_input.csv out.csv --function newlines
|
|
10
|
-
$ python3 fix_csv.py out.csv out2.csv --function vbar
|
|
11
|
-
|
|
12
|
-
"""
|
|
13
|
-
def fix_newlines_in_fields(input_file, output_file, delimiter: str = ','):
|
|
14
|
-
"""
|
|
15
|
-
Sometimes we have seen that a field contains a newline character (usually due to an error
|
|
16
|
-
in processing the response from a device where the trailing newline was not removed). This
|
|
17
|
-
function tries to fix that problem.
|
|
18
|
-
|
|
19
|
-
Args:
|
|
20
|
-
input_file: the original CSV file where the problem occurs
|
|
21
|
-
output_file: the file with the fixed lines
|
|
22
|
-
delimiter: the delimiter that is used for the CSV [default=',']
|
|
23
|
-
|
|
24
|
-
Returns:
|
|
25
|
-
None.
|
|
26
|
-
"""
|
|
27
|
-
|
|
28
|
-
with open(input_file, 'r') as fd:
|
|
29
|
-
lines = fd.read().split('\n')
|
|
30
|
-
fixed_lines = []
|
|
31
|
-
prev_line = None
|
|
32
|
-
|
|
33
|
-
for line in lines:
|
|
34
|
-
if prev_line is None:
|
|
35
|
-
# We assume the first row in the CSV file has the correct number of fields
|
|
36
|
-
expected_num_delimiters = line.count(delimiter)
|
|
37
|
-
prev_line = line
|
|
38
|
-
elif prev_line.count(delimiter) < expected_num_delimiters:
|
|
39
|
-
prev_line += line
|
|
40
|
-
else:
|
|
41
|
-
fixed_lines.append(prev_line)
|
|
42
|
-
prev_line = line
|
|
43
|
-
|
|
44
|
-
if prev_line is not None:
|
|
45
|
-
fixed_lines.append(prev_line)
|
|
46
|
-
|
|
47
|
-
with open(output_file, 'w', newline='\n') as fd:
|
|
48
|
-
fd.writelines([f"{x}\n" for x in fixed_lines])
|
|
49
|
-
|
|
50
|
-
def fix_vertical_bar(input_file, output_file, delimiter: str = ','):
|
|
51
|
-
"""Removes all vertical bar '|' characters from the file."""
|
|
52
|
-
|
|
53
|
-
with open(input_file, 'r') as fd:
|
|
54
|
-
lines = fd.read().split('\n')
|
|
55
|
-
fixed_lines = [line.replace('|', '') for line in lines]
|
|
56
|
-
|
|
57
|
-
with open(output_file, 'w', newline='\n') as fd:
|
|
58
|
-
fd.writelines([f"{x}\n" for x in fixed_lines])
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
if __name__ == '__main__':
|
|
62
|
-
|
|
63
|
-
import argparse
|
|
64
|
-
|
|
65
|
-
parser = argparse.ArgumentParser(description="Script to fix several CSV issues")
|
|
66
|
-
|
|
67
|
-
parser.add_argument("input_file", help="Path to the input file")
|
|
68
|
-
parser.add_argument("output_file", help="Path to the output file")
|
|
69
|
-
|
|
70
|
-
parser.add_argument('--function', default='newlines', choices=('newlines', 'vbar'),
|
|
71
|
-
help="Function to apply to the input file. Default: 'newlines'")
|
|
72
|
-
|
|
73
|
-
args = parser.parse_args()
|
|
74
|
-
|
|
75
|
-
if args.function == "newlines":
|
|
76
|
-
fix_newlines_in_fields(args.input_file, args.output_file)
|
|
77
|
-
elif args.function == "vbar":
|
|
78
|
-
fix_vertical_bar(args.input_file, args.output_file)
|
|
79
|
-
else:
|
|
80
|
-
print(f"Invalid function argument given: {args.function}.")
|
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
import os
|
|
2
|
-
|
|
3
|
-
from egse.setup import _load_yaml
|
|
4
|
-
from scripts.correct_ccd_cold_temperature_cal import correct_obsid_range, correct_od_range
|
|
5
|
-
|
|
6
|
-
SITE_ID = "IAS"
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
def correct_elfique(data_dir: str = None):
|
|
10
|
-
""" Apply correct CCD temperature calibration in the cold.
|
|
11
|
-
|
|
12
|
-
The problem was reported in https://github.com/IvS-KULeuven/plato-cgse-conf/issues/403:
|
|
13
|
-
Correction needed to Cold CCD Temperature Calibration Coefficient
|
|
14
|
-
|
|
15
|
-
During the Elfique test campaign, the CCD temperature calibration in the cold was incorrect.
|
|
16
|
-
|
|
17
|
-
For all N-FEE HK files of the Elfique test campaign (obsid 1529 - 1754 / OD 20230822 - 20231009), this functions does
|
|
18
|
-
the following:
|
|
19
|
-
|
|
20
|
-
* Make a copy of the original N-FEE HK files (incl. "old" in their filename)
|
|
21
|
-
* In the original files: Apply the correct CCD temperature calibration in the columns for the calibrated CCD
|
|
22
|
-
temperatures (in the cold)
|
|
23
|
-
|
|
24
|
-
These changes will be applied to the relevant folders in the /obs and /daily sub-folder of the given data folder.
|
|
25
|
-
|
|
26
|
-
Args:
|
|
27
|
-
- data_dir: Full path to the directory in which the data resides. This is the folder with sub-folders /obs and
|
|
28
|
-
/daily, in which the N-FEE HK files are stored. Default is the content of the
|
|
29
|
-
PLATO_DATA_STORAGE_LOCATION environment variable.
|
|
30
|
-
"""
|
|
31
|
-
|
|
32
|
-
data_dir = data_dir or os.environ["PLATO_DATA_STORAGE_LOCATION"]
|
|
33
|
-
|
|
34
|
-
cal_filename = "yaml//../../common/n-fee/nfee_sensor_calibration_elfique_v2.yaml"
|
|
35
|
-
sensor_info = _load_yaml(cal_filename).temperatures.CCD_PT1000
|
|
36
|
-
|
|
37
|
-
# Correct /obs folder -> https://github.com/IvS-KULeuven/plato-common-egse/issues/2772
|
|
38
|
-
|
|
39
|
-
correct_obsid_range(1529, 1754, sensor_info, "elfique", data_dir, SITE_ID)
|
|
40
|
-
|
|
41
|
-
# Correct /daily folder -> https://github.com/IvS-KULeuven/plato-common-egse/issues/2772
|
|
42
|
-
|
|
43
|
-
correct_od_range(20230822, 20231009, sensor_info, data_dir, SITE_ID)
|
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
import os
|
|
2
|
-
|
|
3
|
-
from egse.setup import _load_yaml
|
|
4
|
-
from scripts.correct_ccd_cold_temperature_cal import correct_obsid_range, correct_od_range
|
|
5
|
-
|
|
6
|
-
SITE_ID = "IAS"
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
def correct_floreffe(data_dir: str = None):
|
|
10
|
-
""" Apply correct CCD temperature calibration in the cold.
|
|
11
|
-
|
|
12
|
-
The problem was reported in https://github.com/IvS-KULeuven/plato-cgse-conf/issues/403:
|
|
13
|
-
Correction needed to Cold CCD Temperature Calibration Coefficient
|
|
14
|
-
|
|
15
|
-
During the Floreffe test campaign, the CCD temperature calibration in the cold was incorrect.
|
|
16
|
-
|
|
17
|
-
For all N-FEE HK files of the Floreffe test campaign (obsid 1755 - 1896 / OD 20231027 - 20231117), this functions
|
|
18
|
-
does the following:
|
|
19
|
-
|
|
20
|
-
* Make a copy of the original N-FEE HK files (incl. "old" in their filename)
|
|
21
|
-
* In the original files: Apply the correct CCD temperature calibration in the columns for the calibrated CCD
|
|
22
|
-
temperatures (in the cold)
|
|
23
|
-
|
|
24
|
-
These changes will be applied to the relevant folders in the /obs and /daily sub-folder of the given data folder.
|
|
25
|
-
|
|
26
|
-
Args:
|
|
27
|
-
- data_dir: Full path to the directory in which the data resides. This is the folder with sub-folders /obs and
|
|
28
|
-
/daily, in which the N-FEE HK files are stored. Default is the content of the
|
|
29
|
-
PLATO_DATA_STORAGE_LOCATION environment variable.
|
|
30
|
-
"""
|
|
31
|
-
|
|
32
|
-
data_dir = data_dir or os.environ["PLATO_DATA_STORAGE_LOCATION"]
|
|
33
|
-
|
|
34
|
-
cal_filename = "yaml//../../common/n-fee/nfee_sensor_calibration_floreffe_v2.yaml"
|
|
35
|
-
sensor_info = _load_yaml(cal_filename).temperatures.CCD_PT1000
|
|
36
|
-
|
|
37
|
-
# Correct /obs folder -> https://github.com/IvS-KULeuven/plato-common-egse/issues/2773
|
|
38
|
-
|
|
39
|
-
correct_obsid_range(1755, 1896, sensor_info, "floreffe", data_dir, SITE_ID)
|
|
40
|
-
|
|
41
|
-
# Correct /daily folder -> https://github.com/IvS-KULeuven/plato-common-egse/issues/2773
|
|
42
|
-
|
|
43
|
-
correct_od_range(20231027, 20231117, sensor_info, data_dir, SITE_ID)
|