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
egse/gui/styles.qss
DELETED
|
@@ -1,48 +0,0 @@
|
|
|
1
|
-
/*css stylesheet file that contains all the style information*/
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
QGroupBox {
|
|
5
|
-
border: 1px solid lightGray;
|
|
6
|
-
border-radius: 0px;
|
|
7
|
-
margin-top: 0px;
|
|
8
|
-
padding-top: 10px;
|
|
9
|
-
}
|
|
10
|
-
|
|
11
|
-
QGroupBox::title {
|
|
12
|
-
background-color: transparent;
|
|
13
|
-
padding-top: 0px;
|
|
14
|
-
padding-left: 0px;
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
/*
|
|
18
|
-
QGroupBox#ManualModeGroupBox {
|
|
19
|
-
border: 1px solid lightGray;
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
QFrame#AppFrame {
|
|
23
|
-
border: 1px solid black;
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
QFrame#StatusFrame {
|
|
27
|
-
border: 1px solid red;
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
QFrame#TabsFrame {
|
|
31
|
-
border: 1px solid red;
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
QWidget#ManualPositions {
|
|
35
|
-
border: 0px solid green;
|
|
36
|
-
}
|
|
37
|
-
*/
|
|
38
|
-
|
|
39
|
-
/*
|
|
40
|
-
tabs_frame.setStyleSheet("border: 1px solid orange; ")
|
|
41
|
-
states_frame.setStyleSheet("border: 1px solid green; ")
|
|
42
|
-
positions_frame.setStyleSheet("border: 1px solid blue; ")
|
|
43
|
-
toolbar_widget.setStyleSheet("border: 1px solid black; ")
|
|
44
|
-
states_widget.setStyleSheet("border: 1px solid magenta; ")
|
|
45
|
-
user_positions_widget.setStyleSheet("border: 1px solid cyan; ")
|
|
46
|
-
mach_positions_widget.setStyleSheet("border: 1px solid cyan; ")
|
|
47
|
-
atcuator_length_widget.setStyleSheet("border: 1px solid cyan; ")
|
|
48
|
-
*/
|
egse/gui/switch.py
DELETED
|
@@ -1,112 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/python3
|
|
2
|
-
# -*- coding: utf-8 -*-
|
|
3
|
-
|
|
4
|
-
"""
|
|
5
|
-
A Switch button widget.
|
|
6
|
-
"""
|
|
7
|
-
import logging
|
|
8
|
-
import sys
|
|
9
|
-
|
|
10
|
-
from PyQt5.QtCore import QSize
|
|
11
|
-
from PyQt5.QtGui import QPainter
|
|
12
|
-
from PyQt5.QtSvg import QSvgRenderer
|
|
13
|
-
from PyQt5.QtWidgets import QWidget
|
|
14
|
-
|
|
15
|
-
from egse.config import find_dir
|
|
16
|
-
|
|
17
|
-
logger = logging.getLogger(__name__)
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
class Indic:
|
|
21
|
-
ON = 0
|
|
22
|
-
OFF = 1
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
class Switch(QWidget):
|
|
26
|
-
|
|
27
|
-
IMAGE_LOCATION = find_dir("/egse/icons") or ""
|
|
28
|
-
|
|
29
|
-
def __init__(self, parent):
|
|
30
|
-
super().__init__(parent)
|
|
31
|
-
|
|
32
|
-
self.state = Indic.OFF
|
|
33
|
-
self.image_location = Switch.IMAGE_LOCATION
|
|
34
|
-
|
|
35
|
-
# logger.info(f"image_location = {self.image_location} of type({type(self.image_location)})")
|
|
36
|
-
|
|
37
|
-
self.setMinimumSize(QSize(40, 40))
|
|
38
|
-
self.setMaximumSize(QSize(40, 40))
|
|
39
|
-
|
|
40
|
-
self.states = ["switch-on.svg", "switch-off.svg"]
|
|
41
|
-
|
|
42
|
-
def paintEvent(self, event):
|
|
43
|
-
painter = QPainter()
|
|
44
|
-
painter.begin(self)
|
|
45
|
-
self.drawCustomWidget(painter)
|
|
46
|
-
painter.end()
|
|
47
|
-
|
|
48
|
-
def drawCustomWidget(self, painter):
|
|
49
|
-
renderer = QSvgRenderer()
|
|
50
|
-
renderer.load(str(self.image_location / self.states[self.state]))
|
|
51
|
-
renderer.render(painter)
|
|
52
|
-
|
|
53
|
-
def setState(self, state):
|
|
54
|
-
self.state = state
|
|
55
|
-
self.repaint()
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
if __name__ == "__main__":
|
|
59
|
-
|
|
60
|
-
from PyQt5.QtWidgets import QApplication, QVBoxLayout, QHBoxLayout, QPushButton
|
|
61
|
-
|
|
62
|
-
class Example(QWidget):
|
|
63
|
-
def __init__(self):
|
|
64
|
-
super().__init__()
|
|
65
|
-
|
|
66
|
-
self.setGeometry(300, 300, 300, 200)
|
|
67
|
-
self.setWindowTitle("Switch widget")
|
|
68
|
-
|
|
69
|
-
self.initUI()
|
|
70
|
-
|
|
71
|
-
def initUI(self):
|
|
72
|
-
|
|
73
|
-
vbox = QVBoxLayout()
|
|
74
|
-
hbox = QHBoxLayout()
|
|
75
|
-
|
|
76
|
-
self.switch = Switch(self)
|
|
77
|
-
|
|
78
|
-
hbox.addWidget(self.switch)
|
|
79
|
-
vbox.addStretch(1)
|
|
80
|
-
vbox.addLayout(hbox)
|
|
81
|
-
vbox.addStretch(1)
|
|
82
|
-
|
|
83
|
-
hbox = QHBoxLayout()
|
|
84
|
-
|
|
85
|
-
self.pb1 = QPushButton("On", self)
|
|
86
|
-
self.pb2 = QPushButton("Off", self)
|
|
87
|
-
|
|
88
|
-
hbox.addWidget(self.pb1)
|
|
89
|
-
hbox.addWidget(self.pb2)
|
|
90
|
-
|
|
91
|
-
vbox.addLayout(hbox)
|
|
92
|
-
|
|
93
|
-
self.pb1.clicked.connect(self.onClick)
|
|
94
|
-
self.pb2.clicked.connect(self.onClick)
|
|
95
|
-
|
|
96
|
-
self.setLayout(vbox)
|
|
97
|
-
|
|
98
|
-
def onClick(self):
|
|
99
|
-
|
|
100
|
-
sender = self.sender()
|
|
101
|
-
text = sender.text()
|
|
102
|
-
|
|
103
|
-
print(text)
|
|
104
|
-
if text == "On":
|
|
105
|
-
self.switch.setState(Indic.ON)
|
|
106
|
-
elif text == "Off":
|
|
107
|
-
self.switch.setState(Indic.OFF)
|
|
108
|
-
|
|
109
|
-
app = QApplication([])
|
|
110
|
-
ex = Example()
|
|
111
|
-
ex.show()
|
|
112
|
-
sys.exit(app.exec_())
|
egse/h5.py
DELETED
|
@@ -1,274 +0,0 @@
|
|
|
1
|
-
"""
|
|
2
|
-
H5 - Inspect HDF5 files from the commandline (REPL)
|
|
3
|
-
|
|
4
|
-
This module uses the h5py module to load and navigate the HDF5. It provides
|
|
5
|
-
a number of convenience methods for inspecting the HDF5 file structure and
|
|
6
|
-
contents.
|
|
7
|
-
|
|
8
|
-
Usage: The examples are for PlatoSim3 HDF5 output files
|
|
9
|
-
|
|
10
|
-
hfile = h5py.File(<filename>) or myh5 = h5.get_file(filename)
|
|
11
|
-
|
|
12
|
-
h5.show_file(myh5)
|
|
13
|
-
|
|
14
|
-
myh5.has_groups(hfile["StarPositions"])
|
|
15
|
-
myh5.show_groups(hfile['StarPositions'], recursive=False)
|
|
16
|
-
|
|
17
|
-
myh5.has_datasets(hfile["Images"])
|
|
18
|
-
myh5.show_datasets(hfile["Images"])
|
|
19
|
-
|
|
20
|
-
myh5.has_attributes(hfile['InputParameters/CCD'])
|
|
21
|
-
myh5.show_attributes(hfile['InputParameters/CCD'])
|
|
22
|
-
|
|
23
|
-
colPix = myh5.get_data(out["StarPositions/Exposure000000/colPix"])
|
|
24
|
-
|
|
25
|
-
position = myh5.get_attribute_value(out["InputParameters/CCD"], "Position")
|
|
26
|
-
"""
|
|
27
|
-
|
|
28
|
-
import sys
|
|
29
|
-
|
|
30
|
-
import h5py
|
|
31
|
-
|
|
32
|
-
INDENT = " " * 4
|
|
33
|
-
MAX_LEVEL = 100
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
def dummy_calc_size_of(x):
|
|
37
|
-
return 0
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
# Trying to make an option to calc or not the size of objects.
|
|
41
|
-
# This approach doesn't work, since the whole dataset is still
|
|
42
|
-
# extracted from the HDF5 when choosing no.
|
|
43
|
-
calc_size_of = dummy_calc_size_of
|
|
44
|
-
calc_size_of = sys.getsizeof
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
def get_type_id(x) -> str:
|
|
48
|
-
"""
|
|
49
|
-
Returns the type of the argument as a single letter.
|
|
50
|
-
|
|
51
|
-
* 'D' - Dataset
|
|
52
|
-
* 'G' - Group
|
|
53
|
-
* 'F' - File
|
|
54
|
-
|
|
55
|
-
If the type is not one of the options above, ``type(x)`` is returned as a string.
|
|
56
|
-
|
|
57
|
-
:return: a character that identifies the type
|
|
58
|
-
"""
|
|
59
|
-
if isinstance(x, h5py.Dataset):
|
|
60
|
-
return "D"
|
|
61
|
-
if isinstance(x, h5py.Group):
|
|
62
|
-
return "G"
|
|
63
|
-
if isinstance(x, h5py.File):
|
|
64
|
-
return "F"
|
|
65
|
-
return str(type(x))
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
def get_type_name(x) -> str:
|
|
69
|
-
"""
|
|
70
|
-
Returns the type of the argument as a single letter.
|
|
71
|
-
|
|
72
|
-
* 'D' - Dataset
|
|
73
|
-
* 'G' - Group
|
|
74
|
-
* 'F' - File
|
|
75
|
-
|
|
76
|
-
If the type is not one of the options above, ``type(x)`` is returned as a string.
|
|
77
|
-
|
|
78
|
-
:return: a character that identifies the type
|
|
79
|
-
"""
|
|
80
|
-
if isinstance(x, h5py.Dataset):
|
|
81
|
-
return "Dataset"
|
|
82
|
-
if isinstance(x, h5py.Group):
|
|
83
|
-
return "Group"
|
|
84
|
-
if isinstance(x, h5py.File):
|
|
85
|
-
return "File"
|
|
86
|
-
return str(type(x))
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
# FIXME: replace with egse.bits.humanize_bytes()
|
|
90
|
-
|
|
91
|
-
def show_size(n) -> str:
|
|
92
|
-
"""
|
|
93
|
-
Returns the size ``n`` in human readable form, i.e. as bytes, KB, MB, GB, ...
|
|
94
|
-
|
|
95
|
-
:return: human readable size
|
|
96
|
-
"""
|
|
97
|
-
_n = n
|
|
98
|
-
if _n < 1024:
|
|
99
|
-
return "{} bytes".format(_n)
|
|
100
|
-
|
|
101
|
-
for dim in ['KB', 'MB', 'GB', 'TB', 'PB']:
|
|
102
|
-
_n = _n / 1024.0
|
|
103
|
-
if _n < 1024:
|
|
104
|
-
return "{:.3f} {}".format(_n, dim)
|
|
105
|
-
|
|
106
|
-
return "{} bytes".format(n)
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
def show_file(x):
|
|
110
|
-
"""
|
|
111
|
-
Print the top-level groups and attributes in the HDF5 file.
|
|
112
|
-
|
|
113
|
-
This will recursively crawl through the HDF5 file and calculate the total size
|
|
114
|
-
of the all the groups and attributes.
|
|
115
|
-
Only the top-level of the HDF5 structure will be printed. The total size of the
|
|
116
|
-
group includes the attributes that belong to that group. Total size of attributes
|
|
117
|
-
is only for top-level attributes.
|
|
118
|
-
|
|
119
|
-
"""
|
|
120
|
-
if not isinstance(x, h5py.File):
|
|
121
|
-
print("Error: Please pass a HDF5 File argument.")
|
|
122
|
-
return
|
|
123
|
-
__show_groups__(x, recursive=True, max_level=1)
|
|
124
|
-
show_attributes(x)
|
|
125
|
-
return
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
def get_file(filename, mode='r', locking=None):
|
|
129
|
-
"""
|
|
130
|
-
Load the HDF5 file.
|
|
131
|
-
|
|
132
|
-
Args:
|
|
133
|
-
filename: the absolute filename of the HDF5 file
|
|
134
|
-
mode: r, r+, w, w-, x, a (see documentation of h5py module) [default='r']
|
|
135
|
-
locking: False to disable locking [default=None]
|
|
136
|
-
|
|
137
|
-
Returns:
|
|
138
|
-
a h5py File object.
|
|
139
|
-
"""
|
|
140
|
-
return h5py.File(filename, mode=mode, locking=locking)
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
def has_attributes(x):
|
|
144
|
-
return len(x.attrs) > 0
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
def show_attributes(x):
|
|
148
|
-
_size = 0
|
|
149
|
-
|
|
150
|
-
for a in x.attrs:
|
|
151
|
-
t_size = calc_size_of(x.attrs[a])
|
|
152
|
-
print("{}: {} ({})".format(a, x.attrs[a], show_size(t_size)))
|
|
153
|
-
_size = _size + t_size
|
|
154
|
-
|
|
155
|
-
print("Total size of attributes: {}".format(show_size(_size)))
|
|
156
|
-
pass
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
def get_attribute_value(x, a):
|
|
160
|
-
return x.attrs[a]
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
def has_groups(x):
|
|
164
|
-
return len([g for g in x.keys() if get_type_id(x[g]) == 'G']) > 0
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
def groups(x):
|
|
168
|
-
return (x[g] for g in x.keys() if get_type_id(x[g]) == 'G')
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
def __show_groups__(x, recursive=True, indent="", verbose=True, max_level=MAX_LEVEL, level=0):
|
|
172
|
-
_indent = indent + INDENT
|
|
173
|
-
_level = level + 1
|
|
174
|
-
_size = 0
|
|
175
|
-
|
|
176
|
-
# print ("indent=*{}*, _indent=*{}*".format(indent, _indent))
|
|
177
|
-
if isinstance(x, h5py.Dataset):
|
|
178
|
-
print("Error: you passed in a Dataset. Please provide a HDF5 File or a Group object.")
|
|
179
|
-
return
|
|
180
|
-
|
|
181
|
-
for g in x.keys():
|
|
182
|
-
type_id = get_type_id(x[g])
|
|
183
|
-
|
|
184
|
-
if has_attributes(x[g]):
|
|
185
|
-
t_size = 0
|
|
186
|
-
for a in x[g].attrs:
|
|
187
|
-
t_size = t_size + calc_size_of(x[g].attrs[a])
|
|
188
|
-
if verbose and max_level > _level:
|
|
189
|
-
print(f"{indent}[A] Total size: {show_size(t_size)}")
|
|
190
|
-
_size = _size + t_size
|
|
191
|
-
|
|
192
|
-
if type_id == 'D':
|
|
193
|
-
t_size = calc_size_of(x[g][...])
|
|
194
|
-
if verbose and max_level > level:
|
|
195
|
-
print(f"{indent}[{type_id}] {g} ({show_size(t_size)})")
|
|
196
|
-
_size = _size + t_size
|
|
197
|
-
else:
|
|
198
|
-
if verbose and max_level > level:
|
|
199
|
-
print(f"{indent}[{type_id}] {g}")
|
|
200
|
-
if recursive:
|
|
201
|
-
_size = _size + __show_groups__(x[g], indent=_indent, verbose=verbose, max_level=max_level, level=_level)
|
|
202
|
-
|
|
203
|
-
if max_level > level:
|
|
204
|
-
print(f"{indent}Total size of Group = {show_size(_size)}")
|
|
205
|
-
|
|
206
|
-
return _size
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
def show_groups(x, recursive=True, verbose=True, max_level=MAX_LEVEL):
|
|
210
|
-
"""
|
|
211
|
-
:param x: HDF5 group object
|
|
212
|
-
:param recursive: crawl over all groups recursively if True
|
|
213
|
-
:param verbose:
|
|
214
|
-
:param max_level:
|
|
215
|
-
"""
|
|
216
|
-
__show_groups__(x, recursive=recursive, verbose=verbose, max_level=max_level)
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
def has_datasets(x):
|
|
220
|
-
return len([g for g in x.keys() if get_type_id(x[g]) == 'D']) > 0
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
def datasets(x):
|
|
224
|
-
"""
|
|
225
|
-
Returns a generator for all datasets in 'x'.
|
|
226
|
-
|
|
227
|
-
:param x:
|
|
228
|
-
:return:
|
|
229
|
-
"""
|
|
230
|
-
return (x[g] for g in x.keys() if get_type_id(x[g]) == 'D')
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
def show_datasets(x):
|
|
234
|
-
_size = 0
|
|
235
|
-
for key in x.keys():
|
|
236
|
-
type_id = get_type_id(x[key])
|
|
237
|
-
|
|
238
|
-
if type_id == 'D':
|
|
239
|
-
t_size = calc_size_of(x[key][...])
|
|
240
|
-
print("[{}] {} ({})".format(type_id, key, show_size(t_size)))
|
|
241
|
-
_size = _size + t_size
|
|
242
|
-
|
|
243
|
-
print("Total size of datasets in this group is {}".format(show_size(_size)))
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
def show_dataset(x):
|
|
247
|
-
if not isinstance(x, h5py.Dataset):
|
|
248
|
-
print("Error: Please provide a HDF5 Dataset as input.")
|
|
249
|
-
return
|
|
250
|
-
print("Shape: {}, Type: {}, Size: {}".format(x.shape, x.dtype, show_size(calc_size_of(x[...]))))
|
|
251
|
-
pass
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
def get_data(x):
|
|
255
|
-
if not isinstance(x, h5py.Dataset):
|
|
256
|
-
print("Error: Please provide a HDF5 Dataset as input.")
|
|
257
|
-
return None
|
|
258
|
-
|
|
259
|
-
return x[...]
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
__all__ = [
|
|
263
|
-
"show_file",
|
|
264
|
-
"get_type_id",
|
|
265
|
-
"has_groups",
|
|
266
|
-
"show_groups",
|
|
267
|
-
"has_datasets",
|
|
268
|
-
"show_datasets",
|
|
269
|
-
"show_dataset",
|
|
270
|
-
"get_data",
|
|
271
|
-
"has_attributes",
|
|
272
|
-
"show_attributes",
|
|
273
|
-
"get_attribute_value"
|
|
274
|
-
]
|
egse/help/__init__.py
DELETED
|
File without changes
|
egse/help/help_ui.py
DELETED
|
@@ -1,126 +0,0 @@
|
|
|
1
|
-
"""
|
|
2
|
-
This module provides a HelpWindow that can be used in GUIs to provide easy access to the
|
|
3
|
-
documentation of the GUI. The docs are part of the overall Common-EGSE documentation, but
|
|
4
|
-
are mainly located in the man-pages section.
|
|
5
|
-
|
|
6
|
-
To use this in your GUI, use the following template:
|
|
7
|
-
|
|
8
|
-
url = HELP_TOPICS["puna_ui"]
|
|
9
|
-
|
|
10
|
-
help_window = HelpWindow(url=url)
|
|
11
|
-
help_window.show()
|
|
12
|
-
|
|
13
|
-
Make sure the `help_window` variable is not garbage collected (which will destroy the window).
|
|
14
|
-
Keep a reference to the window somewhere in your main window or application setup. The HelpWindow
|
|
15
|
-
can be closed and re-opened with the `.close()` and `.show()` methods.
|
|
16
|
-
"""
|
|
17
|
-
|
|
18
|
-
import sys
|
|
19
|
-
|
|
20
|
-
from PyQt5.QtCore import QSize
|
|
21
|
-
from PyQt5.QtCore import QUrl
|
|
22
|
-
from PyQt5.QtGui import QIcon
|
|
23
|
-
from PyQt5.QtWebEngineWidgets import QWebEngineView
|
|
24
|
-
from PyQt5.QtWidgets import QAction
|
|
25
|
-
from PyQt5.QtWidgets import QApplication
|
|
26
|
-
from PyQt5.QtWidgets import QMainWindow
|
|
27
|
-
from PyQt5.QtWidgets import QToolBar
|
|
28
|
-
|
|
29
|
-
from egse.resource import get_resource
|
|
30
|
-
|
|
31
|
-
__all__ = [
|
|
32
|
-
"HELP_TOPICS",
|
|
33
|
-
"HelpWindow",
|
|
34
|
-
]
|
|
35
|
-
|
|
36
|
-
BASE_URL = "https://ivs-kuleuven.github.io/plato-common-egse/"
|
|
37
|
-
|
|
38
|
-
# Below are the topics for the GUIs that are known by the setup.py.
|
|
39
|
-
|
|
40
|
-
HELP_TOPICS = dict(
|
|
41
|
-
home=BASE_URL,
|
|
42
|
-
ogse_ui=BASE_URL,
|
|
43
|
-
puna_ui=f'{BASE_URL}man-pages/hexapod-gui/',
|
|
44
|
-
zonda_ui=f'{BASE_URL}man-pages/hexapod-gui/',
|
|
45
|
-
smc9300_ui=f'{BASE_URL}man-pages/huber-gui/',
|
|
46
|
-
fpa_ui=f'{BASE_URL}man-pages/source-position-gui/',
|
|
47
|
-
vis_pos_ui=f'{BASE_URL}man-pages/visited-positions-gui/',
|
|
48
|
-
lsci336_ui=f'{BASE_URL}man-pages/lakeshore-gui/',
|
|
49
|
-
gimbal_ui=f'{BASE_URL}man-pages/gimbal-gui/',
|
|
50
|
-
)
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
class HelpWindow(QMainWindow):
|
|
54
|
-
"""
|
|
55
|
-
Show the help window for a certain topic. This will open a simple browser window pointing to
|
|
56
|
-
the URL that you pass into the constructor. You will be able to navigate through the
|
|
57
|
-
documentation and used the `backward`, `forward` and `reload` buttons as expected for a
|
|
58
|
-
web browser.
|
|
59
|
-
|
|
60
|
-
The _Home_ button brings you back to the page referred to by the `topic_url` argument.
|
|
61
|
-
"""
|
|
62
|
-
|
|
63
|
-
def __init__(self, topic_url: str):
|
|
64
|
-
"""
|
|
65
|
-
Args:
|
|
66
|
-
topic_url (str): the starting point for the Help topic.
|
|
67
|
-
"""
|
|
68
|
-
super().__init__()
|
|
69
|
-
|
|
70
|
-
self.setGeometry(300, 300, 1000, 600)
|
|
71
|
-
|
|
72
|
-
self._url = topic_url
|
|
73
|
-
|
|
74
|
-
self.browser = QWebEngineView()
|
|
75
|
-
self.browser.setUrl(QUrl(self._url))
|
|
76
|
-
|
|
77
|
-
self.setCentralWidget(self.browser)
|
|
78
|
-
|
|
79
|
-
navigation_toolbar = QToolBar("Navigation")
|
|
80
|
-
navigation_toolbar.setIconSize(QSize(32, 32))
|
|
81
|
-
self.addToolBar(navigation_toolbar)
|
|
82
|
-
|
|
83
|
-
home_btn = QAction(QIcon(str(get_resource(":/icons/home.svg"))), "Home", self)
|
|
84
|
-
home_btn.setStatusTip("Go home")
|
|
85
|
-
home_btn.triggered.connect(self.navigate_home)
|
|
86
|
-
navigation_toolbar.addAction(home_btn)
|
|
87
|
-
|
|
88
|
-
back_btn = QAction(QIcon(str(get_resource(":/icons/backward.svg"))), "Back", self)
|
|
89
|
-
back_btn.setStatusTip("Back to previous page")
|
|
90
|
-
back_btn.triggered.connect(lambda: self.browser.back())
|
|
91
|
-
navigation_toolbar.addAction(back_btn)
|
|
92
|
-
|
|
93
|
-
next_btn = QAction(QIcon(str(get_resource(":/icons/forward.svg"))), "Forward", self)
|
|
94
|
-
next_btn.setStatusTip("Forward to next page")
|
|
95
|
-
next_btn.triggered.connect(lambda: self.browser.forward())
|
|
96
|
-
navigation_toolbar.addAction(next_btn)
|
|
97
|
-
|
|
98
|
-
navigation_toolbar.addSeparator()
|
|
99
|
-
|
|
100
|
-
reload_btn = QAction(QIcon(str(get_resource(":/icons/reload.svg"))), "Reload", self)
|
|
101
|
-
reload_btn.setStatusTip("Reload")
|
|
102
|
-
reload_btn.triggered.connect(self.browser.reload)
|
|
103
|
-
navigation_toolbar.addAction(reload_btn)
|
|
104
|
-
|
|
105
|
-
def set_topic_home(self, topic: str):
|
|
106
|
-
url = HELP_TOPICS[topic]
|
|
107
|
-
self._url = url
|
|
108
|
-
self.navigate_home()
|
|
109
|
-
|
|
110
|
-
def navigate_home(self):
|
|
111
|
-
"""
|
|
112
|
-
Navigate to the home page, i.e. the URL that was passed as an argument when constructing
|
|
113
|
-
the Help Window.
|
|
114
|
-
"""
|
|
115
|
-
self.browser.setUrl(QUrl(self._url))
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
if __name__ == "__main__":
|
|
119
|
-
|
|
120
|
-
app = QApplication(sys.argv)
|
|
121
|
-
|
|
122
|
-
url = HELP_TOPICS["puna_ui"]
|
|
123
|
-
help_window = HelpWindow(topic_url=url)
|
|
124
|
-
help_window.show()
|
|
125
|
-
|
|
126
|
-
app.exec_()
|
egse/hexapod/__init__.py
DELETED
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
"""
|
|
2
|
-
The Hexapod package provides the components to interact with the PUNA Hexapod of
|
|
3
|
-
Symétrie, i.e.
|
|
4
|
-
|
|
5
|
-
* The Hexapod commanding concept with Command, and CommandProtocol
|
|
6
|
-
* The client server access through Proxy and ControlServer
|
|
7
|
-
* The interface to the hardware controller: HexapodController and its simulator
|
|
8
|
-
|
|
9
|
-
This package also contains the Hexapod GUI which can be used to monitor the
|
|
10
|
-
hexapod positions in different reference frames and apply simple movements.
|
|
11
|
-
|
|
12
|
-
"""
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
class HexapodError(Exception):
|
|
16
|
-
"""A Hexapod specific error."""
|
|
17
|
-
pass
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
# These are the classes and function that we would like to export. This is mainly
|
|
21
|
-
# to simplify import statements in scripts. The user can now use the following:
|
|
22
|
-
#
|
|
23
|
-
# >>> from egse.hexapod import HexapodProxy
|
|
24
|
-
#
|
|
25
|
-
# while she previously had to import the class as follows:
|
|
26
|
-
#
|
|
27
|
-
# >>> from egse.hexapod.hexapodProxy import HexapodProxy
|
|
28
|
-
#
|
|
29
|
-
|
|
30
|
-
__all__ = [
|
|
31
|
-
'HexapodError',
|
|
32
|
-
]
|