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,199 +0,0 @@
|
|
|
1
|
-
import os
|
|
2
|
-
import shutil
|
|
3
|
-
from datetime import datetime
|
|
4
|
-
from pathlib import PosixPath
|
|
5
|
-
|
|
6
|
-
import pandas as pd
|
|
7
|
-
from pandas.core.frame import DataFrame
|
|
8
|
-
|
|
9
|
-
from egse.config import find_file
|
|
10
|
-
from egse.fee.n_fee_hk import counts_to_temperature, ORIGIN
|
|
11
|
-
from egse.obsid import obsid_from_storage
|
|
12
|
-
from egse.setup import load_setup, NavigableDict
|
|
13
|
-
from dateutil.rrule import rrule, DAILY
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
def correct_achel(data_dir: str = None):
|
|
17
|
-
""" PLATO-IAS-PL-NCR-0037: TRP5-8-10 inconsistent telemetry.
|
|
18
|
-
|
|
19
|
-
During the Achel test campaign, the TRP5, TRP8, and TRP10 temperature sensors of the N-FEE were swapped in the TM
|
|
20
|
-
dictionary. As a result, the columns with their raw values have been swapped in the N-FEE HK file and the
|
|
21
|
-
calibration is applied incorrectly.
|
|
22
|
-
|
|
23
|
-
For all N-FEE HK files of the Achel test campaign (obsid 996 - 1528 / OD 20230404 - 20230719), this functions does
|
|
24
|
-
the following:
|
|
25
|
-
|
|
26
|
-
* Make a copy of the original N-FEE HK files (incl. "old" in their filename)
|
|
27
|
-
* In the original files:
|
|
28
|
-
- Swap the column names for the raw values for those three TRPs
|
|
29
|
-
- Apply the calibration for those three columns
|
|
30
|
-
|
|
31
|
-
These changes will be applied to the relevant folders in the /obs and /daily sub-folder of the given data folder.
|
|
32
|
-
|
|
33
|
-
Args:
|
|
34
|
-
- data_dir: Full path to the directory in which the data resides. This is the folder with sub-folders /obs and
|
|
35
|
-
/daily, in which the N-FEE HK files are stored. Default is the content of the
|
|
36
|
-
PLATO_DATA_STORAGE_LOCATION environment variable.
|
|
37
|
-
"""
|
|
38
|
-
|
|
39
|
-
data_dir = data_dir or os.environ["PLATO_DATA_STORAGE_LOCATION"]
|
|
40
|
-
|
|
41
|
-
setup = load_setup(setup_id=115, site_id="IAS", from_disk=True)
|
|
42
|
-
sensor_info = setup.camera.fee.calibration.temperatures.TOU_TRP_PT1000
|
|
43
|
-
|
|
44
|
-
# Correct /obs folder
|
|
45
|
-
|
|
46
|
-
correct_obsid_range(996, 1528, sensor_info, "achel", data_dir)
|
|
47
|
-
|
|
48
|
-
# Correct /daily folder
|
|
49
|
-
|
|
50
|
-
correct_od_range(20230404, 20230719, sensor_info, data_dir)
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
def correct_obsid_range(first_obsid: int, last_obsid: int, sensor_info: NavigableDict, camera_name: str, data_dir: str):
|
|
54
|
-
"""
|
|
55
|
-
Correct for the swap between TRP5, TRP8, and TRP10 in the N-FEE HK file for the obsid range.
|
|
56
|
-
|
|
57
|
-
This function does the following:
|
|
58
|
-
|
|
59
|
-
* Make a copy of the original N-FEE HK files (incl. "old" in the filename)
|
|
60
|
-
* In the original files:
|
|
61
|
-
- Swap the column names for the raw values for those three TRPs
|
|
62
|
-
- Apply the calibration for those three columns
|
|
63
|
-
|
|
64
|
-
Args:
|
|
65
|
-
- first_obsid: First obsid.
|
|
66
|
-
- last_obsid: Last obsid.
|
|
67
|
-
- sensor_info: Calibration information for the TOU_TRP_PT1000 sensor type.
|
|
68
|
-
- data_dir: Full path to the directory in which the data resides. This is the folder with sub-folders /obs and
|
|
69
|
-
/daily, in which the N-FEE HK files are stored.
|
|
70
|
-
"""
|
|
71
|
-
|
|
72
|
-
for obsid in range(first_obsid, last_obsid + 1):
|
|
73
|
-
correct_obsid(obsid, sensor_info, camera_name, data_dir)
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
def correct_obsid(obsid: int, sensor_info: NavigableDict, camera_name: str, data_dir: str):
|
|
77
|
-
"""
|
|
78
|
-
Correct for the swap between TRP5, TRP8, and TRP10 in the N-FEE HK file for the given obsid.
|
|
79
|
-
|
|
80
|
-
This function does the following:
|
|
81
|
-
|
|
82
|
-
* Make a copy of the original file (incl. "old" in the filename)
|
|
83
|
-
* In the original file:
|
|
84
|
-
- Swap the column names for the raw values for those three TRPs
|
|
85
|
-
- Apply the calibration for those three columns
|
|
86
|
-
|
|
87
|
-
Args:
|
|
88
|
-
- obsid: Observation identifier.
|
|
89
|
-
- sensor_info: Calibration information for the TOU_TRP_PT1000 sensor type.
|
|
90
|
-
- data_dir: Full path to the directory in which the data resides. This is the folder with sub-folders /obs and
|
|
91
|
-
/daily, in which the N-FEE HK files are stored.
|
|
92
|
-
"""
|
|
93
|
-
|
|
94
|
-
stored_obsid = obsid_from_storage(obsid, data_dir=data_dir, site_id="IAS", camera_name=camera_name)
|
|
95
|
-
pattern = f"{stored_obsid}_{ORIGIN}_*.csv"
|
|
96
|
-
nfee_hk_filename = find_file(pattern, root=f"{data_dir}/obs/{stored_obsid}") # PosixPath
|
|
97
|
-
|
|
98
|
-
if nfee_hk_filename is None:
|
|
99
|
-
print(f"No N-FEE HK available for obsid {stored_obsid}")
|
|
100
|
-
return
|
|
101
|
-
|
|
102
|
-
correct_file(nfee_hk_filename, sensor_info)
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
def correct_od_range(first_od: int, last_od: int, sensor_info: NavigableDict, data_dir: str):
|
|
106
|
-
"""
|
|
107
|
-
Correct for the swap between TRP5, TRP8, and TRP10 in the N-FEE HK file for the OD range.
|
|
108
|
-
|
|
109
|
-
This function does the following:
|
|
110
|
-
|
|
111
|
-
* Make a copy of the original N-FEE HK files (incl. "old" in the filename)
|
|
112
|
-
* In the original files:
|
|
113
|
-
- Swap the column names for the raw values for those three TRPs
|
|
114
|
-
- Apply the calibration for those three columns
|
|
115
|
-
|
|
116
|
-
Args:
|
|
117
|
-
- first_od: First observing day [yyyymmdd].
|
|
118
|
-
- last_od: Last observing day [yyyymmdd].
|
|
119
|
-
- sensor_info: Calibration information for the TOU_TRP_PT1000 sensor type.
|
|
120
|
-
- data_dir: Full path to the directory in which the data resides. This is the folder with sub-folders /obs and
|
|
121
|
-
/daily, in which the N-FEE HK files are stored.
|
|
122
|
-
"""
|
|
123
|
-
|
|
124
|
-
start = datetime.strptime(str(first_od), "%Y%m%d")
|
|
125
|
-
end = datetime.strptime(str(last_od), "%Y%m%d")
|
|
126
|
-
|
|
127
|
-
for dt in rrule(DAILY, dtstart=start, until=end):
|
|
128
|
-
correct_od(dt.strftime("%Y%m%d"), sensor_info, data_dir)
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
def correct_od(od: int, sensor_info: NavigableDict, data_dir: str):
|
|
132
|
-
"""
|
|
133
|
-
Correct for the swap between TRP5, TRP8, and TRP10 in the N-FEE HK file for the given OD.
|
|
134
|
-
|
|
135
|
-
This function does the following:
|
|
136
|
-
|
|
137
|
-
* Make a copy of the original N-FEE HK file (incl. "old" in the filename)
|
|
138
|
-
* In the original file:
|
|
139
|
-
- Swap the column names for the raw values for those three TRPs
|
|
140
|
-
- Apply the calibration for those three columns
|
|
141
|
-
|
|
142
|
-
Args:
|
|
143
|
-
- od: Observing day [yyyymmdd].
|
|
144
|
-
- sensor_info: Calibration information for the TOU_TRP_PT1000 sensor type.
|
|
145
|
-
- data_dir: Full path to the directory in which the data resides. This is the folder with sub-folders /obs and
|
|
146
|
-
/daily, in which the N-FEE HK files are stored.
|
|
147
|
-
"""
|
|
148
|
-
|
|
149
|
-
pattern = f"{od}_IAS_{ORIGIN}.csv"
|
|
150
|
-
nfee_hk_filename = find_file(pattern, root=f"{data_dir}/daily/{od}") # PosixPath
|
|
151
|
-
|
|
152
|
-
if nfee_hk_filename is None:
|
|
153
|
-
print(f"No N-FEE HK available for OD {od}")
|
|
154
|
-
return
|
|
155
|
-
|
|
156
|
-
correct_file(nfee_hk_filename, sensor_info)
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
def correct_file(filename: PosixPath, sensor_info: NavigableDict):
|
|
160
|
-
"""
|
|
161
|
-
Correct for the swap between TRP5, TRP8, and TRP10 in the N-FEE HK file with the given filename.
|
|
162
|
-
|
|
163
|
-
This function does the following:
|
|
164
|
-
|
|
165
|
-
* Make a copy of the original file (incl. "old" in the filename)
|
|
166
|
-
* In the original file:
|
|
167
|
-
- Swap the column names for the raw values for those three TRPs
|
|
168
|
-
- Apply the calibration for those three columns
|
|
169
|
-
|
|
170
|
-
Args:
|
|
171
|
-
- filename: Filename of the original N-FEE HK file that needs to be corrected.
|
|
172
|
-
- sensor_info: Calibration information for the TOU_TRP_PT1000 sensor type.
|
|
173
|
-
"""
|
|
174
|
-
|
|
175
|
-
filename = str(filename)
|
|
176
|
-
|
|
177
|
-
# Make a copy of the original file (incl. "old" in the filename) in the same folder
|
|
178
|
-
|
|
179
|
-
copy_filename = f"{filename.split('.')[0]}_old.csv"
|
|
180
|
-
if not os.path.isfile(copy_filename):
|
|
181
|
-
shutil.copyfile(filename, copy_filename)
|
|
182
|
-
|
|
183
|
-
# Swap the column names (TRP5 -> TRP8; TRP8 -> TRP10; TRP10 -> TRP5)
|
|
184
|
-
|
|
185
|
-
dataframe: DataFrame = pd.read_csv(filename)
|
|
186
|
-
dataframe[["NFEE_TOU_TRP5_RAW", "NFEE_TOU_TRP8_RAW", "NFEE_TOU_TRP10_RAW"]] \
|
|
187
|
-
= dataframe[["NFEE_TOU_TRP8_RAW", "NFEE_TOU_TRP10_RAW", "NFEE_TOU_TRP5_RAW"]]
|
|
188
|
-
|
|
189
|
-
# Correct the calibration
|
|
190
|
-
|
|
191
|
-
for trp in ["NFEE_TOU_TRP5", "NFEE_TOU_TRP8", "NFEE_TOU_TRP10"]:
|
|
192
|
-
raw_values = dataframe[f"{trp}_RAW"].values
|
|
193
|
-
calibrated_values = [counts_to_temperature(f"{trp}_RAW", raw_value, sensor_info[trp])
|
|
194
|
-
for raw_value in raw_values]
|
|
195
|
-
dataframe[trp] = calibrated_values
|
|
196
|
-
|
|
197
|
-
# Update the changes in the original file (not in the copy that was created at the beginning)
|
|
198
|
-
|
|
199
|
-
dataframe.to_csv(filename)
|
|
@@ -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 = "INTA"
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
def correct_duvel(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 Duvel test campaign, the CCD temperature calibration in the cold was incorrect.
|
|
16
|
-
|
|
17
|
-
For all N-FEE HK files of the Duvel test campaign (obsid 872 - 1139 / OD 20230922 - 20231019), 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_duvel_v3.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/2771
|
|
38
|
-
|
|
39
|
-
correct_obsid_range(872, 1139, sensor_info, "duvel", data_dir, SITE_ID)
|
|
40
|
-
|
|
41
|
-
# Correct /daily folder -> https://github.com/IvS-KULeuven/plato-common-egse/issues/2771
|
|
42
|
-
|
|
43
|
-
correct_od_range(20230922, 20231019, 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 = "INTA"
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
def gueuze(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 Gueuze test campaign, the CCD temperature calibration in the cold was incorrect.
|
|
16
|
-
|
|
17
|
-
For all N-FEE HK files of the Gueuze test campaign (obsid 1140 - 1497 / OD 20231107 - 20231213), 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_gueuze_v3.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/2771
|
|
38
|
-
|
|
39
|
-
correct_obsid_range(1140, 1497, sensor_info, "gueuze", data_dir, SITE_ID)
|
|
40
|
-
|
|
41
|
-
# Correct /daily folder -> https://github.com/IvS-KULeuven/plato-common-egse/issues/2771
|
|
42
|
-
|
|
43
|
-
correct_od_range(20231107, 20231213, sensor_info, data_dir, SITE_ID)
|
|
@@ -1,92 +0,0 @@
|
|
|
1
|
-
import pandas
|
|
2
|
-
from math import isnan
|
|
3
|
-
from egse.hk import read_conversion_dict
|
|
4
|
-
from egse.fee.n_fee_hk import ORIGIN
|
|
5
|
-
|
|
6
|
-
filename = "/Users/sara/work/Instrumentation/Plato/data/PLATO-MSSL-PL-FI-0063_1.1_N-FEE_PFM_HK_Calibrations_File.xlsx"
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
def print_temperature_calibration(filename: str):
|
|
10
|
-
table = pandas.read_excel(filename, sheet_name="HK & DAC Calibrations",
|
|
11
|
-
usecols="B, E, F, I, J",
|
|
12
|
-
names=["mssl_names", "gain1", "offset1", "gain2", "offset2"])
|
|
13
|
-
|
|
14
|
-
mssl_names = table["mssl_names"]
|
|
15
|
-
gain1 = table["gain1"]
|
|
16
|
-
offset1 = table["offset1"]
|
|
17
|
-
gain2 = table["gain2"]
|
|
18
|
-
offset2 = table["offset2"]
|
|
19
|
-
|
|
20
|
-
hk_name_mapping = read_conversion_dict(ORIGIN, use_site=False)
|
|
21
|
-
|
|
22
|
-
for index in range(len(mssl_names)):
|
|
23
|
-
mssl_name = mssl_names[index]
|
|
24
|
-
|
|
25
|
-
if isinstance(mssl_name, str) and "[" in mssl_name and "]" in mssl_name:
|
|
26
|
-
mssl_name = mssl_name.split("[")[0]
|
|
27
|
-
egse_name = hk_name_mapping[mssl_name]
|
|
28
|
-
|
|
29
|
-
is_temperature_calibration = "_T_" in egse_name or "TRP" in egse_name
|
|
30
|
-
if is_temperature_calibration:
|
|
31
|
-
print(f"\t{egse_name} ({mssl_name}):")
|
|
32
|
-
# print(gain1[index], offset1[index])
|
|
33
|
-
|
|
34
|
-
if "TSENSE" in mssl_name:
|
|
35
|
-
print(f"\t\tcounts_to_temperature_gain: {gain1[index]}")
|
|
36
|
-
print(f"\tcounts_to_temperature_offset: {offset1[index]}")
|
|
37
|
-
|
|
38
|
-
else:
|
|
39
|
-
print(f"\t\tcounts_to_resistance_gain: {gain2[index]}")
|
|
40
|
-
print(f"\t\toffset: {offset2[index]}")
|
|
41
|
-
print(f"\t\tresistance_to_temperature:")
|
|
42
|
-
|
|
43
|
-
if "CCD" in mssl_name:
|
|
44
|
-
print(f"\t\t\tmethod: polynomial")
|
|
45
|
-
print(f"\t\t\ttemperature_to_resistance_coefficients: XXX")
|
|
46
|
-
else:
|
|
47
|
-
print(f"\t\t\tmethod: callendar_van_dusen")
|
|
48
|
-
print(f"\t\t\tstandard: EN60751")
|
|
49
|
-
print(f"\t\t\tref_resistance: 1000")
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
def print_supply_voltage_calibration(filename: str):
|
|
53
|
-
table = pandas.read_excel(filename, sheet_name="HK & DAC Calibrations",
|
|
54
|
-
usecols="B, T, U, E, F",
|
|
55
|
-
names=["mssl_names", "gain1", "offset1", "gain2", "offset2"])
|
|
56
|
-
|
|
57
|
-
mssl_names = table["mssl_names"]
|
|
58
|
-
gain1 = table["gain1"]
|
|
59
|
-
offset1 = table["offset1"]
|
|
60
|
-
gain2 = table["gain2"]
|
|
61
|
-
offset2 = table["offset2"]
|
|
62
|
-
|
|
63
|
-
hk_name_mapping = read_conversion_dict(ORIGIN, use_site=False)
|
|
64
|
-
|
|
65
|
-
for index in range(len(mssl_names)):
|
|
66
|
-
mssl_name = mssl_names[index]
|
|
67
|
-
|
|
68
|
-
if isinstance(mssl_name, str) and "[" in mssl_name and "]" in mssl_name:
|
|
69
|
-
mssl_name = mssl_name.split("[")[0]
|
|
70
|
-
egse_name = hk_name_mapping[mssl_name]
|
|
71
|
-
|
|
72
|
-
is_temperature_calibration = "_T_" in egse_name or "TRP" in egse_name
|
|
73
|
-
if not is_temperature_calibration:
|
|
74
|
-
print(f"\t{egse_name}:")
|
|
75
|
-
|
|
76
|
-
if not isnan(gain1[index]) and not isnan(offset1[index]):
|
|
77
|
-
print(f"\t\tgain: {gain1[index]}")
|
|
78
|
-
print(f"\t\toffset: {offset1[index]}")
|
|
79
|
-
elif not isnan(gain2[index]) and not isnan(offset2[index]):
|
|
80
|
-
print(f"\t\tgain: {gain2[index]}")
|
|
81
|
-
print(f"\t\toffset: {offset2[index]}")
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
def print_n_fee_calibration(filename):
|
|
85
|
-
print("temperatures:")
|
|
86
|
-
# TODO Print sub-sections
|
|
87
|
-
print_temperature_calibration(filename)
|
|
88
|
-
|
|
89
|
-
print("")
|
|
90
|
-
|
|
91
|
-
print("supply_voltages:")
|
|
92
|
-
print_supply_voltage_calibration(filename)
|
scripts/playground.py
DELETED
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
import logging
|
|
2
|
-
|
|
3
|
-
from egse.aeu.aeu import CRIOProxy
|
|
4
|
-
from egse.tcs.tcs import TCSProxy
|
|
5
|
-
|
|
6
|
-
LOGGER = logging.getLogger("egse.test.tcs")
|
|
7
|
-
|
|
8
|
-
while True:
|
|
9
|
-
|
|
10
|
-
time.sleep(1.0)
|
|
11
|
-
|
|
12
|
-
with TCSProxy() as tcs_proxy, CRIOProxy() as aeu_crio:
|
|
13
|
-
|
|
14
|
-
try:
|
|
15
|
-
trp1_avg = float(tcs_proxy.get_housekeeping_value("tou_rtd_tav").value)
|
|
16
|
-
except ValueError:
|
|
17
|
-
LOGGER.warning(f"TRP1 Value Error in cdaq alarms: trp1_avg should be a number, got {trp1_avg}."
|
|
18
|
-
f"\nTerminating...")
|
|
19
|
-
if trp1_avg == "tbd":
|
|
20
|
-
LOGGER.warning("Got TBD for TRP1_AVG.\nCheck if the task is well running.\nTerminating...")
|
|
21
|
-
break
|
|
22
|
-
trp22_avg = float(tcs_proxy.get_housekeeping_value("fee_rtd_tav").value)
|
|
23
|
-
except ValueError:
|
|
24
|
-
LOGGER.warning(f"TRP22_AVG ValueError: trp22_avg should be a number, got {trp22_avg}."
|
|
25
|
-
f"\nTerminating...")
|
|
26
|
-
if trp22_avg == "tbd":
|
|
27
|
-
LOGGER.warning("Got TBD for TRP22_AVG.\nCheck if the task is well running.\nTerminating...")
|
|
28
|
-
break
|
|
29
|
-
|
|
30
|
-
aeu_standby = aeu_crio.get_operating_mode() == OperatingMode.STANDBY # True means aeu is in standby mode
|
scripts/print_hdf5_hk_data.py
DELETED
|
@@ -1,68 +0,0 @@
|
|
|
1
|
-
from __future__ import annotations
|
|
2
|
-
from pathlib import Path
|
|
3
|
-
|
|
4
|
-
import click
|
|
5
|
-
import rich
|
|
6
|
-
from rich.console import Console
|
|
7
|
-
from rich.table import Table
|
|
8
|
-
|
|
9
|
-
from egse import h5
|
|
10
|
-
from egse.fee.nfee import HousekeepingData
|
|
11
|
-
|
|
12
|
-
@click.command()
|
|
13
|
-
@click.argument('filename')
|
|
14
|
-
def print_hk_data(filename: str | Path):
|
|
15
|
-
"""Prints the updated HK data that is saved in the HDF5 file."""
|
|
16
|
-
|
|
17
|
-
filename = Path(filename)
|
|
18
|
-
|
|
19
|
-
if filename.exists():
|
|
20
|
-
console = Console(width=80)
|
|
21
|
-
try:
|
|
22
|
-
with h5.get_file(filename, mode='r') as hdf5_file:
|
|
23
|
-
rich.print(f"HK data from {filename}", end='')
|
|
24
|
-
if "/obsid" in hdf5_file:
|
|
25
|
-
obsid = h5.get_data(hdf5_file["/obsid"]).item().decode()
|
|
26
|
-
if obsid != 'None':
|
|
27
|
-
rich.print(f", OBSID = {obsid}\n")
|
|
28
|
-
else:
|
|
29
|
-
rich.print()
|
|
30
|
-
|
|
31
|
-
# TODO:
|
|
32
|
-
# Make a table with 5 columns where the first column is the parameter name
|
|
33
|
-
# the next columns the values for each frame
|
|
34
|
-
# Detect specific names and convert the values (use dictionary dispatching?)
|
|
35
|
-
|
|
36
|
-
tmp_hk_data = {}
|
|
37
|
-
tmp_frame_numbers = []
|
|
38
|
-
|
|
39
|
-
for frame_number in {0, 1, 2, 3}:
|
|
40
|
-
if (key := f"/{frame_number}/hk_data") in hdf5_file:
|
|
41
|
-
tmp_frame_numbers.append(frame_number)
|
|
42
|
-
hk_data = h5.get_data(hdf5_file[key])
|
|
43
|
-
hk_data = HousekeepingData(hk_data)
|
|
44
|
-
# rich.print(hk_data)
|
|
45
|
-
for par_name in hk_data:
|
|
46
|
-
if par_name not in tmp_hk_data:
|
|
47
|
-
tmp_hk_data[par_name] = []
|
|
48
|
-
tmp_hk_data[par_name].append(hk_data[par_name])
|
|
49
|
-
|
|
50
|
-
table = Table(title=f"Housekeeping Data for {obsid}", expand=False)
|
|
51
|
-
table.add_column("Parameter")
|
|
52
|
-
|
|
53
|
-
for fn in tmp_frame_numbers:
|
|
54
|
-
table.add_column(f"Frame {fn}")
|
|
55
|
-
|
|
56
|
-
for k, v in tmp_hk_data.items():
|
|
57
|
-
table.add_row(str(k), *[f"0x{x:0x}" for x in v])
|
|
58
|
-
|
|
59
|
-
console.print(table)
|
|
60
|
-
|
|
61
|
-
except OSError as exc:
|
|
62
|
-
rich.print(f"{filename=!s}, {exc}")
|
|
63
|
-
else:
|
|
64
|
-
rich.print(f"no such file {filename!s}")
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
if __name__ == "__main__":
|
|
68
|
-
print_hk_data()
|
scripts/print_register_map.py
DELETED
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
from __future__ import annotations
|
|
2
|
-
from pathlib import Path
|
|
3
|
-
|
|
4
|
-
import click
|
|
5
|
-
import rich
|
|
6
|
-
|
|
7
|
-
from egse import h5
|
|
8
|
-
from egse.reg import RegisterMap
|
|
9
|
-
|
|
10
|
-
@click.command()
|
|
11
|
-
@click.argument('filename')
|
|
12
|
-
def print_register_map(filename: str | Path):
|
|
13
|
-
"""
|
|
14
|
-
Prints the Register Map that is saved in the HDF5 file.
|
|
15
|
-
|
|
16
|
-
The FILENAME argument shall be the full path to the HDF5 file from which the register map is requested.
|
|
17
|
-
"""
|
|
18
|
-
|
|
19
|
-
filename = Path(filename)
|
|
20
|
-
|
|
21
|
-
if filename.exists():
|
|
22
|
-
try:
|
|
23
|
-
with h5.get_file(filename, mode='r') as hdf5_file:
|
|
24
|
-
rich.print(f"Register Map from {filename}", end='')
|
|
25
|
-
if "/obsid" in hdf5_file:
|
|
26
|
-
obsid = h5.get_data(hdf5_file["/obsid"]).item().decode()
|
|
27
|
-
if obsid != 'None':
|
|
28
|
-
rich.print(f", OBSID = {obsid}\n")
|
|
29
|
-
else:
|
|
30
|
-
rich.print()
|
|
31
|
-
|
|
32
|
-
if "/register" in hdf5_file:
|
|
33
|
-
reg_data = h5.get_data(hdf5_file["/register"])
|
|
34
|
-
reg_map = RegisterMap("N-FEE", memory_map=reg_data)
|
|
35
|
-
rich.print(reg_map)
|
|
36
|
-
except OSError as exc:
|
|
37
|
-
rich.print(f"{filename=!s}, {exc}")
|
|
38
|
-
else:
|
|
39
|
-
rich.print(f"no such file {filename!s}")
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
if __name__ == "__main__":
|
|
43
|
-
print_register_map()
|