From 491e1775898b2b0f58c65bbb06a444f3406fa55a Mon Sep 17 00:00:00 2001 From: root Date: Mon, 20 Jun 2022 10:29:46 +0200 Subject: [PATCH] Server migration --- .../camera_config/SARES20-CAMS142-C1.json | 10 +- .../camera_config/SARES20-CAMS142-C2.json | 12 +- .../camera_config/SARES20-CAMS142-M3.json | 14 +- .../camera_config/SARES20-PROF141-M1.json | 2 +- .../camera_config/SLAAR21-LCAM-C511.json | 8 +- .../camera_config/SLAAR21-LCAM-C531.json | 8 +- configuration/camera_config/servers.json | 63 +++++++-- .../SARES11-SPEC125-M1_psen_db.json | 2 +- .../SARES12-CAMS128-M1_psen_db.json | 4 +- .../pipeline_config/SARFE10-PBPS053_proc.json | 14 +- .../pipeline_config/SAROP11-PBPS110_proc.json | 12 +- .../pipeline_config/SAROP11-PBPS122_proc.json | 14 +- .../SATOP31-PMOS132-2D_pmos.json | 4 +- .../pipeline_config/permanent_instances.json | 13 +- configuration/pipeline_config/servers.json | 131 ++++++++++++------ configuration/user_scripts/pmos132-2D.py | 2 +- configuration/user_scripts/test_alain.py | 9 +- 17 files changed, 205 insertions(+), 117 deletions(-) diff --git a/configuration/camera_config/SARES20-CAMS142-C1.json b/configuration/camera_config/SARES20-CAMS142-C1.json index 1f2cc9d..10c1561 100644 --- a/configuration/camera_config/SARES20-CAMS142-C1.json +++ b/configuration/camera_config/SARES20-CAMS142-C1.json @@ -2,12 +2,12 @@ "camera_calibration": { "reference_marker": [ 184, - 213, + 1143, 2280, - 1825 + 1432 ], - "reference_marker_width": 800.0, - "reference_marker_height": 600.0, + "reference_marker_width": 604.0, + "reference_marker_height": 100.0, "angle_horizontal": 0.0, "angle_vertical": 0.0 }, @@ -21,7 +21,7 @@ "name": "SARES20-CAMS142-C1", "source": "SARES20-CAMS142-C1", "alias": [ - "CAMERA (SARES20-CAMS142-C1)" + "SAMPLECAM_MICROSCOPE" ], "group": [ "Photonics", diff --git a/configuration/camera_config/SARES20-CAMS142-C2.json b/configuration/camera_config/SARES20-CAMS142-C2.json index 90a843b..a0d4db6 100644 --- a/configuration/camera_config/SARES20-CAMS142-C2.json +++ b/configuration/camera_config/SARES20-CAMS142-C2.json @@ -1,13 +1,13 @@ { "camera_calibration": { "reference_marker": [ - 832, - 502, - 875, - 545 + 1227, + 724, + 1241, + 738 ], - "reference_marker_width": 300.0, - "reference_marker_height": 300.0, + "reference_marker_width": 42.0, + "reference_marker_height": 42.0, "angle_horizontal": 0.0, "angle_vertical": 0.0 }, diff --git a/configuration/camera_config/SARES20-CAMS142-M3.json b/configuration/camera_config/SARES20-CAMS142-M3.json index 7b59074..daf8cae 100644 --- a/configuration/camera_config/SARES20-CAMS142-M3.json +++ b/configuration/camera_config/SARES20-CAMS142-M3.json @@ -1,13 +1,13 @@ { "camera_calibration": { "reference_marker": [ - 905, - 814, - 1551, - 1230 + 1165, + 1063, + 1265, + 1164 ], - "reference_marker_width": 800.0, - "reference_marker_height": 600.0, + "reference_marker_width": 136.0, + "reference_marker_height": 137.0, "angle_horizontal": 0.0, "angle_vertical": 0.0 }, @@ -25,6 +25,6 @@ "Bernina" ], "alias": [ - "CAM_SAMPLE_INLINE (SARES20-CAMS142-M3)" + "SAMPLECAM_INLINE (SARES20-CAMS142-M3)" ] } \ No newline at end of file diff --git a/configuration/camera_config/SARES20-PROF141-M1.json b/configuration/camera_config/SARES20-PROF141-M1.json index 929290c..1cb3ec0 100644 --- a/configuration/camera_config/SARES20-PROF141-M1.json +++ b/configuration/camera_config/SARES20-PROF141-M1.json @@ -27,6 +27,6 @@ "Bernina" ], "alias": [ - "PROF_KB (SARES20-PROF141-M1)" + "TT_KB (SARES20-PROF141-M1)" ] } \ No newline at end of file diff --git a/configuration/camera_config/SLAAR21-LCAM-C511.json b/configuration/camera_config/SLAAR21-LCAM-C511.json index 6ceb586..ab92846 100644 --- a/configuration/camera_config/SLAAR21-LCAM-C511.json +++ b/configuration/camera_config/SLAAR21-LCAM-C511.json @@ -1,10 +1,10 @@ { "camera_calibration": { "reference_marker": [ - 663, - 492, - 765, - 593 + 406, + 460, + 440, + 480 ], "reference_marker_width": 2.0, "reference_marker_height": 2.0, diff --git a/configuration/camera_config/SLAAR21-LCAM-C531.json b/configuration/camera_config/SLAAR21-LCAM-C531.json index 8923168..eaa98bd 100644 --- a/configuration/camera_config/SLAAR21-LCAM-C531.json +++ b/configuration/camera_config/SLAAR21-LCAM-C531.json @@ -1,10 +1,10 @@ { "camera_calibration": { "reference_marker": [ - 725, - 539, - 738, - 546 + 662, + 382, + 887, + 621 ], "reference_marker_width": 2.0, "reference_marker_height": 2.0, diff --git a/configuration/camera_config/servers.json b/configuration/camera_config/servers.json index edcd361..196d7f8 100644 --- a/configuration/camera_config/servers.json +++ b/configuration/camera_config/servers.json @@ -15,9 +15,7 @@ "http://sf-daqsync-02.psi.ch:8880": { "enabled": true, "expanding": false, - "instances": [ - "SARFE10-PSSS059" - ] + "instances": [] }, "http://sf-daqsync-03.psi.ch:8880": { "enabled": true, @@ -25,6 +23,41 @@ "instances": [] }, "http://sf-daqsync-04.psi.ch:8880": { + "enabled": true, + "expanding": false, + "instances": [] + }, + "http://sf-daqsync-05.psi.ch:8880": { + "expanding": false, + "instances": [] + }, + "http://sf-daqsync-06.psi.ch:8880": { + "enabled": true, + "expanding": false, + "instances": [] + }, + "http://sf-daqsync-08.psi.ch:8880": { + "enabled": true, + "expanding": false, + "instances": [] + }, + "http://sf-daqsync-09.psi.ch:8880": { + "enabled": true, + "expanding": false, + "instances": [] + }, + "http://sf-daqsync-10.psi.ch:8880": { + "expanding": true, + "instances": [] + }, + "http://sf-daqsync-11.psi.ch:8880": { + "enabled": true, + "expanding": false, + "instances": [ + "SARFE10-PSSS059" + ] + }, + "http://sf-daqsync-12.psi.ch:8880": { "enabled": true, "expanding": false, "instances": [ @@ -33,8 +66,9 @@ "SATES21-CAMS-PATT1" ] }, - "http://sf-daqsync-05.psi.ch:8880": { - "expanding": true, + "http://sf-daqsync-13.psi.ch:8880": { + "enabled": true, + "expanding": false, "instances": [ "SARES11-SPEC125-M1", "SARES11-SPEC125-M2", @@ -46,27 +80,28 @@ "#SARES12-CAMS128-M1" ] }, - "http://sf-daqsync-06.psi.ch:8880": { + "http://sf-daqsync-14.psi.ch:8880": { "enabled": true, - "expanding": true, + "expanding": false, "instances": [ "SARES20-CAMS142-M1", "SARES20-CAMS142-M4", "SARES20-CAMS142-M5" ] }, - "http://sf-daqsync-08.psi.ch:8880": { + "http://sf-daqsync-15.psi.ch:8880": { "enabled": true, - "expanding": true, + "expanding": false, "instances": [] }, - "http://sf-daqsync-09.psi.ch:8880": { + "http://sf-daqsync-16.psi.ch:8880": { "enabled": true, - "expanding": true, + "expanding": false, "instances": [] }, - "http://sf-daqsync-10.psi.ch:8880": { - "expanding": true, + "http://sf-daqsync-17.psi.ch:8880": { + "enabled": true, + "expanding": false, "instances": [] } -} \ No newline at end of file +} diff --git a/configuration/pipeline_config/SARES11-SPEC125-M1_psen_db.json b/configuration/pipeline_config/SARES11-SPEC125-M1_psen_db.json index a11ab71..3c48f40 100644 --- a/configuration/pipeline_config/SARES11-SPEC125-M1_psen_db.json +++ b/configuration/pipeline_config/SARES11-SPEC125-M1_psen_db.json @@ -1,6 +1,6 @@ { "image_background_enable": "passive", - "image_background": "SARES11-SPEC125-M1_20220519_104132_214128", + "image_background": "SARES11-SPEC125-M1_20220617_165603_663126", "image_threshold": null, "image_region_of_interest": null, "image_good_region": null, diff --git a/configuration/pipeline_config/SARES12-CAMS128-M1_psen_db.json b/configuration/pipeline_config/SARES12-CAMS128-M1_psen_db.json index 3c84c78..0a0b00b 100644 --- a/configuration/pipeline_config/SARES12-CAMS128-M1_psen_db.json +++ b/configuration/pipeline_config/SARES12-CAMS128-M1_psen_db.json @@ -13,8 +13,8 @@ "roi_signal": [ 0, 2048, - 50, - 300 + 0, + 450 ], "roi_background": [ 0, diff --git a/configuration/pipeline_config/SARFE10-PBPS053_proc.json b/configuration/pipeline_config/SARFE10-PBPS053_proc.json index a677d69..fad6d86 100644 --- a/configuration/pipeline_config/SARFE10-PBPS053_proc.json +++ b/configuration/pipeline_config/SARFE10-PBPS053_proc.json @@ -17,15 +17,15 @@ "down": "SARFE10-CVME-PHO6212:Lnk9Ch13-DATA-SUM", "right": "SARFE10-CVME-PHO6212:Lnk9Ch14-DATA-SUM", "left": "SARFE10-CVME-PHO6212:Lnk9Ch15-DATA-SUM", - "up_calib": 0.042157019527241796, - "down_calib": 0.04737200665020251, - "left_calib": 0.12996619439691445, - "right_calib": 0.06600253631257494, - "horiz_calib": -3.2454194888317494, - "vert_calib": -6.3614112459332235, + "up_calib": 0.04803064443648096, + "down_calib": 0.04507096781277373, + "left_calib": 0.11067497602726312, + "right_calib": 0.08288921509597266, + "horiz_calib": -4.3013667602203975, + "vert_calib": -325.9006421275876, "uJ_calib": 834.5191797495979, "threshold": 0, - "queue_length": 1000, + "queue_length": 5000, "xpos_all_x_pvname": "SARFE10-PBPS053:XPOS-ALL-HIST-X", "xpos_all_y_pvname": "SARFE10-PBPS053:XPOS-ALL-HIST-Y", "xpos_all_m_pvname": "SARFE10-PBPS053:XPOS-ALL-HIST-M", diff --git a/configuration/pipeline_config/SAROP11-PBPS110_proc.json b/configuration/pipeline_config/SAROP11-PBPS110_proc.json index 03884b8..4447a1d 100644 --- a/configuration/pipeline_config/SAROP11-PBPS110_proc.json +++ b/configuration/pipeline_config/SAROP11-PBPS110_proc.json @@ -17,12 +17,12 @@ "down": "SAROP11-CVME-PBPS2:Lnk9Ch11-DATA-SUM", "right": "SAROP11-CVME-PBPS2:Lnk9Ch14-DATA-SUM", "left": "SAROP11-CVME-PBPS2:Lnk9Ch15-DATA-SUM", - "up_calib": 0.7758997106676937, - "down_calib": 0.9865357962608744, - "left_calib": 0.9160488182215303, - "right_calib": 0.9440833997892732, - "horiz_calib": -3.9449990550256446, - "vert_calib": 4.770525214811945, + "up_calib": 0.4745836387414782, + "down_calib": 0.5560757031313921, + "left_calib": 0.3264283790325681, + "right_calib": 0.3463639735196534, + "horiz_calib": -4.37433336689245, + "vert_calib": 4.846107248781251, "uJ_calib": 605.4608924473305, "threshold": 0, "queue_length": 5000, diff --git a/configuration/pipeline_config/SAROP11-PBPS122_proc.json b/configuration/pipeline_config/SAROP11-PBPS122_proc.json index 81ec10e..968c429 100644 --- a/configuration/pipeline_config/SAROP11-PBPS122_proc.json +++ b/configuration/pipeline_config/SAROP11-PBPS122_proc.json @@ -16,12 +16,12 @@ "down": "SAROP11-CVME-PBPS1:Lnk9Ch5-DATA-SUM", "right": "SAROP11-CVME-PBPS1:Lnk9Ch3-DATA-SUM", "left": "SAROP11-CVME-PBPS1:Lnk9Ch7-DATA-SUM", - "up_calib": 0.6319196601746015, - "down_calib": 0.6198792447851743, - "left_calib": 0.6432162292007649, - "right_calib": 0.6495517436027075, - "horiz_calib": -5.64899791728686, - "vert_calib": 5.684183196827627, + "up_calib": 45.6503433037479, + "down_calib": 0.6249777232786504, + "left_calib": 0.6332086533252782, + "right_calib": 0.7387417337823715, + "horiz_calib": -150.28467775680843, + "vert_calib": 8.199674455891241, "uJ_calib": 605.9512700123181, "threshold": 0, "queue_length": 1000, @@ -53,4 +53,4 @@ "xpos_dif_w_pvname": "SAROP11-PBPS122:XPOS-DIF-HIST-W", "ypos_dif_m_pvname": "SAROP11-PBPS122:YPOS-DIF-HIST-M", "ypos_dif_w_pvname": "SAROP11-PBPS122:YPOS-DIF-HIST-W" -} +} \ No newline at end of file diff --git a/configuration/pipeline_config/SATOP31-PMOS132-2D_pmos.json b/configuration/pipeline_config/SATOP31-PMOS132-2D_pmos.json index 5da9179..b9bab2b 100644 --- a/configuration/pipeline_config/SATOP31-PMOS132-2D_pmos.json +++ b/configuration/pipeline_config/SATOP31-PMOS132-2D_pmos.json @@ -1,6 +1,6 @@ { "image_background_enable": true, - "image_background": "SATOP31-PMOS132-2D_20220119_165943_578699", + "image_background": "SATOP31-PMOS132-2D_20220607_121502_104208", "image_threshold": null, "image_region_of_interest": null, "image_good_region": null, @@ -15,6 +15,6 @@ "processing_threads": 6, "thread_buffer_size": 30, "abort_on_error": false, - "pixel_bkg": 98, + "pixel_bkg": 1, "port": "9001" } \ No newline at end of file diff --git a/configuration/pipeline_config/permanent_instances.json b/configuration/pipeline_config/permanent_instances.json index d65e408..b98eac2 100644 --- a/configuration/pipeline_config/permanent_instances.json +++ b/configuration/pipeline_config/permanent_instances.json @@ -1,13 +1,13 @@ { - "#SARES11-SPEC125-M1_psen_db": "SARES11-SPEC125-M1_psen_db1", - "#SARES11-SPEC125-M1_psen_ib": "SARES11-SPEC125-M1_psen_ib1", "#SARES11-SPEC125-M1_test": "SARES11-SPEC125-M1_test", + "#SARES11-SPEC125-M2_psen_db": "SARES11-SPEC125-M2_psen_db1", + "#SARES11-SPEC125-M2_psen_ib": "SARES11-SPEC125-M2_psen_ib1", + "#SARES12-CAMS128-M1_psen_db": "SARES12-CAMS128-M1_psen_db", + "#SARES12-CAMS128-M1_psen_ib": "SARES12-CAMS128-M1_psen_ib", "#test_stream": "test_stream", "#testdb_ib": "testdb_ib", - "SARES11-SPEC125-M2_psen_db": "SARES11-SPEC125-M2_psen_db1", - "SARES11-SPEC125-M2_psen_ib": "SARES11-SPEC125-M2_psen_ib1", - "SARES12-CAMS128-M1_psen_db": "SARES12-CAMS128-M1_psen_db", - "SARES12-CAMS128-M1_psen_ib": "SARES12-CAMS128-M1_psen_ib", + "SARES11-SPEC125-M1_psen_db": "SARES11-SPEC125-M1_psen_db1", + "SARES11-SPEC125-M1_psen_ib": "SARES11-SPEC125-M1_psen_ib1", "SARES20-CAMS142-M1_psen_db": "SARES20-CAMS142-M1_psen_db1", "SARES20-CAMS142-M1_psen_ib": "SARES20-CAMS142-M1_psen_ib1", "SARES20-CAMS142-M5_psen_db": "SARES20-CAMS142-M5_psen_db1", @@ -32,6 +32,7 @@ "SAROP21-PPRM102_proc": "SAROP21-PPRM102_proc", "SAROP21-PPRM138_ib": "SAROP21-PPRM138_ib", "SAROP21-PPRM138_proc": "SAROP21-PPRM138_proc", + "SAROP31-PBPS113_proc": "SAROP31-PBPS113_proc", "SAROP31-PBPS149_proc": "SAROP31-PBPS149_proc", "SATES21-CAMS-PATT1_spec_db": "SATES21-CAMS-PATT1_spec_db", "SATES21-CAMS-PATT1_spec_ib": "SATES21-CAMS-PATT1_spec_ib", diff --git a/configuration/pipeline_config/servers.json b/configuration/pipeline_config/servers.json index 16f8098..1419b9b 100644 --- a/configuration/pipeline_config/servers.json +++ b/configuration/pipeline_config/servers.json @@ -23,16 +23,10 @@ ] }, "http://sf-daqsync-02.psi.ch:8881": { - "cameras": [ - "SARFE10-PSSS059" - ], + "cameras": [], "enabled": true, "expanding": false, - "instances": [ - "SARFE10-PSSS059_psss:8889", - "SARFE10-PSSS059_store:8890", - "#SARFE10-PSSS059_psss_avg:9005" - ] + "instances": [] }, "http://sf-daqsync-03.psi.ch:8881": { "cameras": [ @@ -59,11 +53,77 @@ ] }, "http://sf-daqsync-04.psi.ch:8881": { + "cameras": [], + "enabled": true, + "expanding": false, + "instances": [] + + }, + "http://sf-daqsync-05.psi.ch:8881": { + "cameras": [], + "enabled": true, + "expanding": false, + "instances": [] + }, + "http://sf-daqsync-06.psi.ch:8881": { + "cameras": [], + "enabled": true, + "expanding": false, + "instances": [] + }, + "http://sf-daqsync-08.psi.ch:8881": { + "cameras": [ + "simulation_2", + "simulation", + "SARES30-CAMS156-XE", + "alain" + ], + "enabled": true, + "expanding": false, + "instances": [ + "simulation_2_sp", + "simulation2_sp", + "SARES30-CAMS156-XE_sp", + "test_alain_100Hz:9010", + "test_str:9000", + "simulation_proc", + "SAROP31-PPRM113_proc:9001" + ] + }, + "http://sf-daqsync-09.psi.ch:8881": { + "cameras": [], + "enabled": true, + "expanding": false, + "instances": [] + }, + "http://sf-daqsync-10.psi.ch:8881": { + "cameras": [], + "enabled": true, + "expanding": true, + "instances": [ + "SAROP11-ATT01_proc:9001" + ] + }, + "http://sf-daqsync-11.psi.ch:8881": { + "cameras": [ + "SARFE10-PSSS059" + ], + "enabled": true, + "expanding": false, + "instances": [ + "SARFE10-PSSS059_psss:8889", + "SARFE10-PSSS059_store:8890", + "SARFE10-PSSS059_sp", + "#SARFE10-PSSS059_psss_avg:9005" + ] + }, + "http://sf-daqsync-12.psi.ch:8881": { "cameras": [ "SATES21-CAMS154-M1", "SATES24-CAMS161-M1", "SATES21-CAMS-PATT1" ], + "enabled": true, "expanding": false, "instances": [ "bs_timing_test_perm:9000", @@ -77,9 +137,9 @@ "SATES21-CAMS-PATT1_spec_db:9003", "SATES21-CAMS-PATT1_spec_ib:9002", "SATES21-CAMS-PATT1_sp" - ] + ] }, - "http://sf-daqsync-05.psi.ch:8881": { + "http://sf-daqsync-13.psi.ch:8881": { "cameras": [ "SARES11-SPEC125-M1", "SARES12-CAMS128-M1", @@ -92,18 +152,18 @@ "enabled": true, "expanding": false, "instances": [ - "#SARES11-SPEC125-M1_psen_ib:9000", - "#SARES11-SPEC125-M1_psen_db:9001", + "SARES11-SPEC125-M1_psen_ib:9000", + "SARES11-SPEC125-M1_psen_db:9001", "#SARES11-SPEC125-M1_test:9009", - "SARES11-SPEC125-M2_psen_ib:9010", - "SARES11-SPEC125-M2_psen_db:9011", - "SARES12-CAMS128-M1_psen_ib:9002", - "SARES12-CAMS128-M1_psen_db:9003", + "#SARES11-SPEC125-M2_psen_ib:9010", + "#SARES11-SPEC125-M2_psen_db:9011", + "#SARES12-CAMS128-M1_psen_ib:9002", + "#SARES12-CAMS128-M1_psen_db:9003", "SARES12-XPR128-C4F1_ib:9004", "SARES11-XMI125-C4P1_ib:9005" ] }, - "http://sf-daqsync-06.psi.ch:8881": { + "http://sf-daqsync-14.psi.ch:8881": { "cameras": [ "SARES20-CAMS142-M1", "SARES20-CAMS142-M4", @@ -143,26 +203,7 @@ "test_arrival" ] }, - "http://sf-daqsync-08.psi.ch:8881": { - "cameras": [ - "simulation_2", - "simulation", - "SARES30-CAMS156-XE", - "alain" - ], - "enabled": true, - "expanding": false, - "instances": [ - "simulation_2_sp", - "simulation2_sp", - "SARES30-CAMS156-XE_sp", - "test_alain_100Hz:9010", - "test_str:9000", - "simulation_proc", - "SAROP31-PPRM113_proc:9001" - ] - }, - "http://sf-daqsync-09.psi.ch:8881": { + "http://sf-daqsync-15.psi.ch:8881": { "cameras": [ "SATES31-CAMS187-RIXS1" ], @@ -174,12 +215,16 @@ "SATES31-CAMS187-RIXS1_ib:9001" ] }, - "http://sf-daqsync-10.psi.ch:8881": { + "http://sf-daqsync-16.psi.ch:8881": { "cameras": [], "enabled": true, - "expanding": true, - "instances": [ - "SAROP11-ATT01_proc:9001" - ] + "expanding": false, + "instances": [] + }, + "http://sf-daqsync-17.psi.ch:8881": { + "cameras": [], + "enabled": true, + "expanding": false, + "instances": [] } -} \ No newline at end of file +} diff --git a/configuration/user_scripts/pmos132-2D.py b/configuration/user_scripts/pmos132-2D.py index fa5aabf..7802f91 100644 --- a/configuration/user_scripts/pmos132-2D.py +++ b/configuration/user_scripts/pmos132-2D.py @@ -78,7 +78,7 @@ def process_image(image, pulse_id, timestamp, x_axis, y_axis, parameters, bsdata _logger.warning("Energy axis not connected"); return None - if len(axis) < image.shape[0]: + if len(axis) < image.shape[1]: _logger.warning("Energy axis length %d < image width %d", len(axis), image.shape[1]) return None diff --git a/configuration/user_scripts/test_alain.py b/configuration/user_scripts/test_alain.py index b981210..86b098f 100644 --- a/configuration/user_scripts/test_alain.py +++ b/configuration/user_scripts/test_alain.py @@ -2,6 +2,7 @@ from cam_server.utils import timestamp_as_float from logging import getLogger import numpy as np +import json _logger = getLogger(__name__) @@ -30,7 +31,13 @@ def process_image(image, pulse_id, timestamp, x_axis, y_axis, parameters, bsdata od["image"] = image od["pulse_id"] = pulse_id #_logger.info(str(pulse_id)) - #od["timestamp"] = timestamp_as_float(timestamp) + od["timestamp"] = timestamp_as_float(timestamp) #if parameters: #od["parameters"] = json.dumps(parameters) + #od["x_axis"] = od["y_axis"] = 0 + od["x_axis"] = x_axis + od["y_axis"] = y_axis + #od["parameters"] = json.dumps({"camera_name": "simulation"}) + od["parameters"] = json.dumps(parameters) + return od \ No newline at end of file