diff --git a/src/power_grid_model_io/converters/pandapower_converter.py b/src/power_grid_model_io/converters/pandapower_converter.py index 86f44a28..2850c30f 100644 --- a/src/power_grid_model_io/converters/pandapower_converter.py +++ b/src/power_grid_model_io/converters/pandapower_converter.py @@ -1664,17 +1664,14 @@ def join_currents(table: str, bus_name: str, i_name: str) -> pd.DataFrame: pp_switches_output_index = pp_switches_output.index # Combine all branch bus, current and et in one dataframe - all_i_df = pd.concat( - [ - ( - join_currents(table, bus_name, i_name) - if not rest_switches_absent[table] - else pd.DataFrame(columns=["bus", "element", "et", "i_ka"]) - ) - for table, attr_names in switch_attrs.items() - for bus_name, i_name in attr_names.items() - ] - ) + dfs = [ + join_currents(table, bus_name, i_name) + for table, attr_names in switch_attrs.items() + for bus_name, i_name in attr_names.items() + if not rest_switches_absent[table] + ] + all_i_df = pd.DataFrame(columns=["bus", "element", "et", "i_ka"]) if not dfs else pd.concat(dfs) + # Merge on input data to get current and drop other columns pp_switches_output = pd.merge( pp_switches_output, diff --git a/tests/data/pandapower/pgm_asym_output_data.json b/tests/data/pandapower/pgm_asym_output_data.json index dea1427e..2c4e6efa 100644 --- a/tests/data/pandapower/pgm_asym_output_data.json +++ b/tests/data/pandapower/pgm_asym_output_data.json @@ -1,43 +1,49 @@ { - "node": - [ - {"id": 0, "energized": 1, "u_pu": [1.000000000042805, 1.000000000042805, 1.000000000040956], "u": [63508.52961357732, 63508.52961357732, 63508.52961345989], "u_angle": [-2.297462191765614e-10, -2.094395102622942, 2.094395102852041], "p": [765820.7217852274, 765820.7235734381, -1529485.490304183], "q": [-142683.6055350895, -142683.5967414472, -136520.3696246375], "id_reference": {"table": "bus", "index": 101}}, - {"id": 1, "energized": 1, "u_pu": [0.9994132656313264, 0.9994132656313274, 1.002844167287654], "u": [11540.23035887859, 11540.2303588786, 11579.84699877547], "u_angle": [-0.002501623712801432, -2.096896726105997, 2.098735152107258], "p": [5.662039942836705e-08, 4.158749852077411e-07, 5.339208304447429e-08], "q": [-7.588863607722517e-08, -6.631148746093378e-08, 3.610845913546241e-07], "id_reference": {"table": "bus", "index": 102}}, - {"id": 2, "energized": 1, "u_pu": [0.9987870960752929, 0.9987870960752938, 1.004418511811836], "u": [11532.9999756439, 11532.99997564391, 11598.02596347214], "u_angle": [-0.002966986920613948, -2.09736208931381, 2.099116406819713], "p": [-729999.9999998733, -730000.000000165, 1570000.000000135], "q": [189999.9999999996, 190000.0000003468, 189999.9999996292], "id_reference": {"table": "bus", "index": 103}}, - {"id": 3, "energized": 1, "u_pu": [1.000000000042805, 1.000000000042805, 1.000000000040956], "u": [63508.52961357732, 63508.52961357732, 63508.52961345989], "u_angle": [-2.297462191765614e-10, -2.094395102622942, 2.094395102852041], "p": [0, 0, 0], "q": [0, 0, 0], "id_reference": {"table": "bus", "index": 106}} - ], - "line": - [ - {"id": 4, "energized": 1, "loading": 1.265330032238072, "p_from": [-729999.9999998733, -730000.000000165, 1570000.000000135], "q_from": [189999.9999999996, 190000.0000003468, 189999.9999996292], "i_from": [65.40543555178559, 65.40543555181758, 136.3555342275158], "s_from": [754320.8866257217, 754320.8866260914, 1581455.026233842], "p_to": [730552.3008243673, 730552.3008246894, -1567616.527443881], "q_to": [-216633.7469513389, -216633.7469515898, -216173.5239478488], "i_to": [66.02947091323357, 66.02947091326645, 136.6556434817117], "s_to": [761995.3048135885, 761995.3048139686, 1582451.44303743], "id_reference": {"table": "line", "index": 101}, "pgm_input": {"from_node": 2, "to_node": 1, "i_n": 108.0}} - ], - "source": - [ - {"id": 5, "energized": 1, "p": [765820.730621319, 765820.4766903995, -1529485.219644774], "q": [-142683.6428608279, -142684.1067247107, -136520.4031334404], "i": [12.26605892917178, 12.26605633625489, 24.17889348713215], "s": [778999.36674519, 778999.2020728515, 1535565.973048225], "pf": [0.9830826099654819, 0.9830824918082272, -0.9960400572100595], "id_reference": {"table": "ext_grid", "index": 0}, "pgm_input": {"node": 0}} - ], - "sym_load": - [ - {"id": 6, "energized": 1, "p": [833333.3333333333, 833333.3333333333, 833333.3333333333], "q": [79999.99999999999, 79999.99999999999, 79999.99999999999], "i": [72.58861772969922, 72.58861772969915, 72.18163928458914], "s": [837164.5265086454, 837164.5265086454, 837164.5265086454], "pf": [0.9954236078405162, 0.9954236078405162, 0.9954236078405162], "id_reference": {"table": "load", "name": "const_power", "index": 101}, "pgm_input": {"node": 2}}, - {"id": 7, "energized": 1, "p": [0, 0, 0], "q": [0, 0, 0], "i": [0, 0, 0], "s": [0, 0, 0], "pf": [0, 0, 0], "id_reference": {"table": "load", "name": "const_impedance", "index": 101}, "pgm_input": {"node": 2}}, - {"id": 8, "energized": 1, "p": [0, 0, 0], "q": [0, 0, 0], "i": [0, 0, 0], "s": [0, 0, 0], "pf": [0, 0, 0], "id_reference": {"table": "load", "name": "const_current", "index": 101}, "pgm_input": {"node": 2}} - ], - "transformer": - [ - {"id": 9, "energized": 1, "loading": 0.03883052565830863, "p_from": [765820.724989093, 765820.7249890427, -1529485.491438911], "q_from": [-142683.6001096883, -142683.6001099306, -136520.3668874493], "i_from": [12.26605871869048, 12.2660587186904, 24.17889769909201], "s_from": [778999.3533778327, 778999.3533778277, 1535566.240543602], "p_to": [-730552.3008242727, -730552.300824217, 1567616.527444104], "q_to": [216633.7469512629, 216633.7469515783, 216173.5239482207], "i_to": [66.02947091322386, 66.02947091322693, 136.6556434817352], "s_to": [761995.3048134763, 761995.3048135125, 1582451.443037701], "id_reference": {"table": "trafo", "index": 0}, "pgm_input": {"from_node": 0, "to_node": 1}, "pp_input": {"df": 1.0}} - ], - "sym_gen": - [ - {"id": 10, "energized": 1, "p": [403333.3333333333, 403333.3333333333, 403333.3333333333], "q": [269999.9999999999, 269999.9999999999, 269999.9999999999], "i": [42.08476139753746, 42.08476139753742, 41.84880717644763], "s": [485363.5521727787, 485363.5521727787, 485363.5521727787], "pf": [0.8309922150680065, 0.8309922150680065, 0.8309922150680065], "id_reference": {"table": "sgen", "index": 31}, "pgm_input": {"node": 2}} - ], - "link": - [ - {"id": 11, "energized": 1, "loading": 0, "p_from": [0, 0, 0], "q_from": [0, 0, 0], "i_from": [0, 0, 0], "s_from": [0, 0, 0], "p_to": [0, 0, 0], "q_to": [0, 0, 0], "i_to": [0, 0, 0], "s_to": [0, 0, 0], "id_reference": {"table": "switch", "name": "b2b_switches", "index": 3021}, "pgm_input": {"from_node": 0, "to_node": 3}} - ], - "asym_load": - [ - {"id": 12, "energized": 1, "p": [399999.9999999999, 500000, 1000000], "q": [10000, 10000, 10000], "i": [34.69392016993495, 43.36252415313805, 86.22588032650638], "s": [400124.980474851, 500099.9900019995, 1000049.998750063], "pf": [0.9996876464081228, 0.999800059980007, 0.9999500037496875], "id_reference": {"table": "asymmetric_load", "index": 33}, "pgm_input": {"node": 2}} - ], - "asym_gen": - [ - {"id": 13, "energized": 1, "p": [99999.99999999999, 200000, 3000000], "q": [10000, 10000, 10000], "i": [8.71401685801165, 17.3632050956306, 258.6661450895947], "s": [100498.7562112089, 200249.8439450078, 3000016.66662037], "pf": [0.9950371902099889, 0.9987523388778446, 0.9999944444907404], "id_reference": {"table": "asymmetric_sgen", "index": 32}, "pgm_input": {"node": 2}} - ] -} + "version": "1.0", + "type": "asym_output", + "is_batch": false, + "attributes": {}, + "data": { + "node": + [ + {"id": 0, "energized": 1, "u_pu": [1.000000000042805, 1.000000000042805, 1.000000000040956], "u": [63508.52961357732, 63508.52961357732, 63508.52961345989], "u_angle": [-2.297462191765614e-10, -2.094395102622942, 2.094395102852041], "p": [765820.7217852274, 765820.7235734381, -1529485.490304183], "q": [-142683.6055350895, -142683.5967414472, -136520.3696246375], "id_reference": {"table": "bus", "index": 101}}, + {"id": 1, "energized": 1, "u_pu": [0.9994132656313264, 0.9994132656313274, 1.002844167287654], "u": [11540.23035887859, 11540.2303588786, 11579.84699877547], "u_angle": [-0.002501623712801432, -2.096896726105997, 2.098735152107258], "p": [5.662039942836705e-08, 4.158749852077411e-07, 5.339208304447429e-08], "q": [-7.588863607722517e-08, -6.631148746093378e-08, 3.610845913546241e-07], "id_reference": {"table": "bus", "index": 102}}, + {"id": 2, "energized": 1, "u_pu": [0.9987870960752929, 0.9987870960752938, 1.004418511811836], "u": [11532.9999756439, 11532.99997564391, 11598.02596347214], "u_angle": [-0.002966986920613948, -2.09736208931381, 2.099116406819713], "p": [-729999.9999998733, -730000.000000165, 1570000.000000135], "q": [189999.9999999996, 190000.0000003468, 189999.9999996292], "id_reference": {"table": "bus", "index": 103}}, + {"id": 3, "energized": 1, "u_pu": [1.000000000042805, 1.000000000042805, 1.000000000040956], "u": [63508.52961357732, 63508.52961357732, 63508.52961345989], "u_angle": [-2.297462191765614e-10, -2.094395102622942, 2.094395102852041], "p": [0, 0, 0], "q": [0, 0, 0], "id_reference": {"table": "bus", "index": 106}} + ], + "line": + [ + {"id": 4, "energized": 1, "loading": 1.265330032238072, "p_from": [-729999.9999998733, -730000.000000165, 1570000.000000135], "q_from": [189999.9999999996, 190000.0000003468, 189999.9999996292], "i_from": [65.40543555178559, 65.40543555181758, 136.3555342275158], "s_from": [754320.8866257217, 754320.8866260914, 1581455.026233842], "p_to": [730552.3008243673, 730552.3008246894, -1567616.527443881], "q_to": [-216633.7469513389, -216633.7469515898, -216173.5239478488], "i_to": [66.02947091323357, 66.02947091326645, 136.6556434817117], "s_to": [761995.3048135885, 761995.3048139686, 1582451.44303743], "id_reference": {"table": "line", "index": 101}, "pgm_input": {"from_node": 2, "to_node": 1, "i_n": 108.0}} + ], + "source": + [ + {"id": 5, "energized": 1, "p": [765820.730621319, 765820.4766903995, -1529485.219644774], "q": [-142683.6428608279, -142684.1067247107, -136520.4031334404], "i": [12.26605892917178, 12.26605633625489, 24.17889348713215], "s": [778999.36674519, 778999.2020728515, 1535565.973048225], "pf": [0.9830826099654819, 0.9830824918082272, -0.9960400572100595], "id_reference": {"table": "ext_grid", "index": 0}, "pgm_input": {"node": 0}} + ], + "sym_load": + [ + {"id": 6, "energized": 1, "p": [833333.3333333333, 833333.3333333333, 833333.3333333333], "q": [79999.99999999999, 79999.99999999999, 79999.99999999999], "i": [72.58861772969922, 72.58861772969915, 72.18163928458914], "s": [837164.5265086454, 837164.5265086454, 837164.5265086454], "pf": [0.9954236078405162, 0.9954236078405162, 0.9954236078405162], "id_reference": {"table": "load", "name": "const_power", "index": 101}, "pgm_input": {"node": 2}}, + {"id": 7, "energized": 1, "p": [0, 0, 0], "q": [0, 0, 0], "i": [0, 0, 0], "s": [0, 0, 0], "pf": [0, 0, 0], "id_reference": {"table": "load", "name": "const_impedance", "index": 101}, "pgm_input": {"node": 2}}, + {"id": 8, "energized": 1, "p": [0, 0, 0], "q": [0, 0, 0], "i": [0, 0, 0], "s": [0, 0, 0], "pf": [0, 0, 0], "id_reference": {"table": "load", "name": "const_current", "index": 101}, "pgm_input": {"node": 2}} + ], + "transformer": + [ + {"id": 9, "energized": 1, "loading": 0.03883052565830863, "p_from": [765820.724989093, 765820.7249890427, -1529485.491438911], "q_from": [-142683.6001096883, -142683.6001099306, -136520.3668874493], "i_from": [12.26605871869048, 12.2660587186904, 24.17889769909201], "s_from": [778999.3533778327, 778999.3533778277, 1535566.240543602], "p_to": [-730552.3008242727, -730552.300824217, 1567616.527444104], "q_to": [216633.7469512629, 216633.7469515783, 216173.5239482207], "i_to": [66.02947091322386, 66.02947091322693, 136.6556434817352], "s_to": [761995.3048134763, 761995.3048135125, 1582451.443037701], "id_reference": {"table": "trafo", "index": 0}, "pgm_input": {"from_node": 0, "to_node": 1}, "pp_input": {"df": 1.0}} + ], + "sym_gen": + [ + {"id": 10, "energized": 1, "p": [403333.3333333333, 403333.3333333333, 403333.3333333333], "q": [269999.9999999999, 269999.9999999999, 269999.9999999999], "i": [42.08476139753746, 42.08476139753742, 41.84880717644763], "s": [485363.5521727787, 485363.5521727787, 485363.5521727787], "pf": [0.8309922150680065, 0.8309922150680065, 0.8309922150680065], "id_reference": {"table": "sgen", "index": 31}, "pgm_input": {"node": 2}} + ], + "link": + [ + {"id": 11, "energized": 1, "loading": 0, "p_from": [0, 0, 0], "q_from": [0, 0, 0], "i_from": [0, 0, 0], "s_from": [0, 0, 0], "p_to": [0, 0, 0], "q_to": [0, 0, 0], "i_to": [0, 0, 0], "s_to": [0, 0, 0], "id_reference": {"table": "switch", "name": "b2b_switches", "index": 3021}, "pgm_input": {"from_node": 0, "to_node": 3}} + ], + "asym_load": + [ + {"id": 12, "energized": 1, "p": [399999.9999999999, 500000, 1000000], "q": [10000, 10000, 10000], "i": [34.69392016993495, 43.36252415313805, 86.22588032650638], "s": [400124.980474851, 500099.9900019995, 1000049.998750063], "pf": [0.9996876464081228, 0.999800059980007, 0.9999500037496875], "id_reference": {"table": "asymmetric_load", "index": 33}, "pgm_input": {"node": 2}} + ], + "asym_gen": + [ + {"id": 13, "energized": 1, "p": [99999.99999999999, 200000, 3000000], "q": [10000, 10000, 10000], "i": [8.71401685801165, 17.3632050956306, 258.6661450895947], "s": [100498.7562112089, 200249.8439450078, 3000016.66662037], "pf": [0.9950371902099889, 0.9987523388778446, 0.9999944444907404], "id_reference": {"table": "asymmetric_sgen", "index": 32}, "pgm_input": {"node": 2}} + ] + } +} \ No newline at end of file diff --git a/tests/data/pandapower/pgm_input_data.json b/tests/data/pandapower/pgm_input_data.json index 0191d91d..0a9a3729 100644 --- a/tests/data/pandapower/pgm_input_data.json +++ b/tests/data/pandapower/pgm_input_data.json @@ -1,319 +1,325 @@ { - "asym_gen": [ - { - "id": 17, - "id_reference": { - "index": 32, - "table": "asymmetric_sgen" + "version": "1.0", + "type": "input", + "is_batch": false, + "attributes": {}, + "data": { + "asym_gen": [ + { + "id": 17, + "id_reference": { + "index": 32, + "table": "asymmetric_sgen" + }, + "node": 4, + "p_specified": [ + 100000.0, + 200000.0, + 3000000.0 + ], + "q_specified": [ + 10000.0, + 10000.0, + 10000.0 + ], + "status": 1, + "type": 0 + } + ], + "asym_load": [ + { + "id": 16, + "id_reference": { + "index": 33, + "table": "asymmetric_load" + }, + "node": 4, + "p_specified": [ + 100000.0, + 200000.0, + 3000000.0 + ], + "q_specified": [ + 10000.0, + 10000.0, + 10000.0 + ], + "status": 1, + "type": 0 + } + ], + "line": [ + { + "c1": 6.4206e-07, + "from_node": 2, + "from_status": 1, + "i_n": 108.0, + "id": 6, + "id_reference": { + "index": 101, + "table": "line" + }, + "r1": 0.12792, + "tan1": 0, + "to_node": 1, + "to_status": 1, + "x1": 0.0492 + } + ], + "link": [ + { + "from_node": 0, + "from_status": 1, + "id": 15, + "id_reference": { + "index": 3021, + "name": "b2b_switches", + "table": "switch" + }, + "to_node": 5, + "to_status": 1 + } + ], + "node": [ + { + "id": 0, + "id_reference": { + "index": 101, + "table": "bus" + }, + "u_rated": 110000.0 }, - "node": 4, - "p_specified": [ - 100000.0, - 200000.0, - 3000000.0 - ], - "q_specified": [ - 10000.0, - 10000.0, - 10000.0 - ], - "status": 1, - "type": 0 - } - ], - "asym_load": [ - { - "id": 16, - "id_reference": { - "index": 33, - "table": "asymmetric_load" + { + "id": 1, + "id_reference": { + "index": 102, + "table": "bus" + }, + "u_rated": 20000.0 }, - "node": 4, - "p_specified": [ - 100000.0, - 200000.0, - 3000000.0 - ], - "q_specified": [ - 10000.0, - 10000.0, - 10000.0 - ], - "status": 1, - "type": 0 - } - ], - "line": [ - { - "c1": 6.4206e-07, - "from_node": 2, - "from_status": 1, - "i_n": 108.0, - "id": 6, - "id_reference": { - "index": 101, - "table": "line" + { + "id": 2, + "id_reference": { + "index": 103, + "table": "bus" + }, + "u_rated": 20000.0 }, - "r1": 0.12792, - "tan1": 0, - "to_node": 1, - "to_status": 1, - "x1": 0.0492 - } - ], - "link": [ - { - "from_node": 0, - "from_status": 1, - "id": 15, - "id_reference": { - "index": 3021, - "name": "b2b_switches", - "table": "switch" + { + "id": 3, + "id_reference": { + "index": 104, + "table": "bus" + }, + "u_rated": 30100.0 }, - "to_node": 5, - "to_status": 1 - } - ], - "node": [ - { - "id": 0, - "id_reference": { - "index": 101, - "table": "bus" + { + "id": 4, + "id_reference": { + "index": 105, + "table": "bus" + }, + "u_rated": 60000.0 }, - "u_rated": 110000.0 - }, - { - "id": 1, - "id_reference": { - "index": 102, - "table": "bus" + { + "id": 5, + "id_reference": { + "index": 106, + "table": "bus" + }, + "u_rated": 110000.0 + } + ], + "shunt": [ + { + "b1": -0.001821171951744462, + "g1": 0.00033112217304444763, + "id": 11, + "id_reference": { + "index": 1201, + "table": "shunt" + }, + "node": 3, + "status": 1 + } + ], + "source": [ + { + "id": 7, + "id_reference": { + "index": 1, + "table": "ext_grid" + }, + "node": 0, + "rx_ratio": 0.0, + "sk": 1e+16, + "status": 1, + "u_ref": 1.0, + "u_ref_angle": 0.0 + } + ], + "sym_gen": [ + { + "id": 13, + "id_reference": { + "index": 31, + "table": "sgen" + }, + "node": 4, + "p_specified": 1210000, + "q_specified": 810000, + "status": 1, + "type": 0 + } + ], + "sym_load": [ + { + "id": 8, + "id_reference": { + "index": 101, + "name": "const_power", + "table": "load" + }, + "node": 2, + "p_specified": 575000.0, + "q_specified": 55200.0, + "status": 1, + "type": 0 }, - "u_rated": 20000.0 - }, - { - "id": 2, - "id_reference": { - "index": 103, - "table": "bus" + { + "id": 9, + "id_reference": { + "index": 101, + "name": "const_impedance", + "table": "load" + }, + "node": 2, + "p_specified": 1275000.0, + "q_specified": 122400.0, + "status": 1, + "type": 1 }, - "u_rated": 20000.0 - }, - { - "id": 3, - "id_reference": { - "index": 104, - "table": "bus" + { + "id": 10, + "id_reference": { + "index": 101, + "name": "const_current", + "table": "load" + }, + "node": 2, + "p_specified": 650000.0, + "q_specified": 62400.0, + "status": 1, + "type": 2 }, - "u_rated": 30100.0 - }, - { - "id": 4, - "id_reference": { - "index": 105, - "table": "bus" + { + "id": 18, + "id_reference": { + "index": 34, + "name": "ward_const_power_load", + "table": "ward" + }, + "node": 4, + "p_specified": 100000.0, + "q_specified": 100000.0, + "status": 1, + "type": 0 }, - "u_rated": 60000.0 - }, - { - "id": 5, - "id_reference": { - "index": 106, - "table": "bus" + { + "id": 19, + "id_reference": { + "index": 34, + "name": "ward_const_impedance_load", + "table": "ward" + }, + "node": 4, + "p_specified": 100000.0, + "q_specified": 100000.0, + "status": 1, + "type": 1 }, - "u_rated": 110000.0 - } - ], - "shunt": [ - { - "b1": -0.001821171951744462, - "g1": 0.00033112217304444763, - "id": 11, - "id_reference": { - "index": 1201, - "table": "shunt" - }, - "node": 3, - "status": 1 - } - ], - "source": [ - { - "id": 7, - "id_reference": { - "index": 1, - "table": "ext_grid" - }, - "node": 0, - "rx_ratio": 0.0, - "sk": 1e+16, - "status": 1, - "u_ref": 1.0, - "u_ref_angle": 0.0 - } - ], - "sym_gen": [ - { - "id": 13, - "id_reference": { - "index": 31, - "table": "sgen" - }, - "node": 4, - "p_specified": 1210000, - "q_specified": 810000, - "status": 1, - "type": 0 - } - ], - "sym_load": [ - { - "id": 8, - "id_reference": { - "index": 101, - "name": "const_power", - "table": "load" - }, - "node": 2, - "p_specified": 575000.0, - "q_specified": 55200.0, - "status": 1, - "type": 0 - }, - { - "id": 9, - "id_reference": { - "index": 101, - "name": "const_impedance", - "table": "load" - }, - "node": 2, - "p_specified": 1275000.0, - "q_specified": 122400.0, - "status": 1, - "type": 1 - }, - { - "id": 10, - "id_reference": { - "index": 101, - "name": "const_current", - "table": "load" - }, - "node": 2, - "p_specified": 650000.0, - "q_specified": 62400.0, - "status": 1, - "type": 2 - }, - { - "id": 18, - "id_reference": { - "index": 34, - "name": "ward_const_power_load", - "table": "ward" - }, - "node": 4, - "p_specified": 100000.0, - "q_specified": 100000.0, - "status": 1, - "type": 0 - }, - { - "id": 19, - "id_reference": { - "index": 34, - "name": "ward_const_impedance_load", - "table": "ward" - }, - "node": 4, - "p_specified": 100000.0, - "q_specified": 100000.0, - "status": 1, - "type": 1 - }, - { - "id": 20, - "id_reference": { - "index": 12, - "name": "motor_load", - "table": "motor" - }, - "node": 4, - "p_specified": 71111.11, - "q_specified": 34440.68, - "status": 1, - "type": 0 - } - ], - "three_winding_transformer": [ - { - "clock_12": 1, - "clock_13": 1, - "i0": 0.001, - "id": 14, - "id_reference": { - "index": 102, - "table": "trafo3w" - }, - "node_1": 2, - "node_2": 4, - "node_3": 3, - "p0": 10000.0, - "pk_12": 400000.0, - "pk_13": 1600000.0, - "pk_23": 1000000.0, - "sn_1": 40000000.0, - "sn_2": 100000000.0, - "sn_3": 50000000.0, - "status_1": 1, - "status_2": 1, - "status_3": 1, - "tap_max": 3, - "tap_min": 1, - "tap_nom": 2, - "tap_pos": 2, - "tap_side": 2, - "tap_size": 903.0, - "u1": 20000.0, - "u2": 60000.0, - "u3": 30100.0, - "uk_12": 0.1, - "uk_13": 0.12, - "uk_23": 0.11, - "winding_1": 2, - "winding_2": 1, - "winding_3": 0 - } - ], - "transformer": [ - { - "clock": 1, - "from_node": 0, - "from_status": 1, - "i0": 0.03, - "id": 12, - "id_reference": { - "index": 101, - "table": "trafo" - }, - "p0": 23200, - "pk": 8176000.0, - "sn": 80000000.0, - "tap_max": 3, - "tap_min": -1, - "tap_nom": 1, - "tap_pos": 2, - "tap_side": 0, - "tap_size": 2200.0, - "to_node": 1, - "to_status": 1, - "u1": 110000.0, - "u2": 20000.0, - "uk": 0.178, - "winding_from": 2, - "winding_to": 1 - } - ] + { + "id": 20, + "id_reference": { + "index": 12, + "name": "motor_load", + "table": "motor" + }, + "node": 4, + "p_specified": 71111.11, + "q_specified": 34440.68, + "status": 1, + "type": 0 + } + ], + "three_winding_transformer": [ + { + "clock_12": 1, + "clock_13": 1, + "i0": 0.001, + "id": 14, + "id_reference": { + "index": 102, + "table": "trafo3w" + }, + "node_1": 2, + "node_2": 4, + "node_3": 3, + "p0": 10000.0, + "pk_12": 400000.0, + "pk_13": 1600000.0, + "pk_23": 1000000.0, + "sn_1": 40000000.0, + "sn_2": 100000000.0, + "sn_3": 50000000.0, + "status_1": 1, + "status_2": 1, + "status_3": 1, + "tap_max": 3, + "tap_min": 1, + "tap_nom": 2, + "tap_pos": 2, + "tap_side": 2, + "tap_size": 903.0, + "u1": 20000.0, + "u2": 60000.0, + "u3": 30100.0, + "uk_12": 0.1, + "uk_13": 0.12, + "uk_23": 0.11, + "winding_1": 2, + "winding_2": 1, + "winding_3": 0 + } + ], + "transformer": [ + { + "clock": 1, + "from_node": 0, + "from_status": 1, + "i0": 0.03, + "id": 12, + "id_reference": { + "index": 101, + "table": "trafo" + }, + "p0": 23200, + "pk": 8176000.0, + "sn": 80000000.0, + "tap_max": 3, + "tap_min": -1, + "tap_nom": 1, + "tap_pos": 2, + "tap_side": 0, + "tap_size": 2200.0, + "to_node": 1, + "to_status": 1, + "u1": 110000.0, + "u2": 20000.0, + "uk": 0.178, + "winding_from": 2, + "winding_to": 1 + } + ] + } } \ No newline at end of file diff --git a/tests/data/pandapower/pgm_output_data.json b/tests/data/pandapower/pgm_output_data.json index 7e62a9bc..b6c569b7 100644 --- a/tests/data/pandapower/pgm_output_data.json +++ b/tests/data/pandapower/pgm_output_data.json @@ -1,56 +1,62 @@ { - "node": - [ - {"id": 0, "energized": 1, "u_pu": 0.9999999996523372, "u": 109999.9999617571, "u_angle": -1.798666001063812e-10, "p": 1798665.98546505, "q": 3476628.82353626, "id_reference": {"table": "bus", "index": 101}}, - {"id": 1, "energized": 1, "u_pu": 0.97374599364253, "u": 19474.9198728506, "u_angle": -0.5239008142519944, "p": 1.408570295181389e-07, "q": -3.370807360039286e-07, "id_reference": {"table": "bus", "index": 102}}, - {"id": 2, "energized": 1, "u_pu": 0.9730137872763268, "u": 19460.27574552653, "u_angle": -0.5237223960629773, "p": -2414572.645273485, "q": -231798.9739460695, "id_reference": {"table": "bus", "index": 103}}, - {"id": 3, "energized": 1, "u_pu": 0.9695497239124967, "u": 29183.44668976615, "u_angle": -1.04518706304991, "p": -8.295648914520637e-08, "q": 1.430200360429221e-07, "id_reference": {"table": "bus", "index": 104}}, - {"id": 4, "energized": 1, "u_pu": 0.9719979160849105, "u": 58319.87496509463, "u_angle": -1.044828700708015, "p": 944410.894001629, "q": 581081.3221020879, "id_reference": {"table": "bus", "index": 105}}, - {"id": 5, "energized": 1, "u_pu": 0.9999999996523372, "u": 109999.9999617571, "u_angle": -1.798666001063812e-10, "p": 0, "q": 0, "id_reference": {"table": "bus", "index": 106}} - ], - "line": - [ - {"id": 6, "energized": 1, "loading": 0.5930290459172566, "p_from": -1763554.11350539, "q_from": -1245081.686597617, "i_from": 64.0471369590637, "s_from": 2158784.731640131, "p_to": 1765096.677117153, "q_to": 1169229.770073222, "i_to": 62.7670637419498, "s_to": 2117230.39246925, "id_reference": {"table": "line", "index": 101}, "pgm_input": {"from_node": 2, "to_node": 1, "i_n": 108.0}} - ], - "source": - [ - {"id": 7, "energized": 1, "p": 1798666.000438483, "q": 3476627.872944676, "i": 20.54501257148846, "s": 3914350.616394652, "pf": 0.4595055928063901, "id_reference": {"table": "ext_grid", "index": 1}, "pgm_input": {"node": 0}} - ], - "sym_load": - [ - {"id": 8, "energized": 1, "p": 575000, "q": 55200, "i": 17.13761141048308, "s": 577643.5232909652, "pf": 0.9954236078405164, "id_reference": {"table": "load", "name": "const_power", "index": 101}, "pgm_input": {"node": 2}}, - {"id": 9, "energized": 1, "p": 1207113.683543022, "q": 115882.9136201301, "i": 35.97746997710809, "s": 1212663.306390481, "pf": 0.9954236078405161, "id_reference": {"table": "load", "name": "const_impedance", "index": 101}, "pgm_input": {"node": 2}}, - {"id": 10, "energized": 1, "p": 632458.9617296124, "q": 60716.06032604279, "i": 18.85014942469511, "s": 635366.6486790245, "pf": 0.9954236078405163, "id_reference": {"table": "load", "name": "const_current", "index": 101}, "pgm_input": {"node": 2}}, - {"id": 18, "energized": 1, "p": 99999.99999999999, "q": 99999.99999999999, "i": 1.400031432537213, "s": 141421.3562373095, "pf": 0.7071067811865475, "id_reference": {"table": "ward", "name": "ward_const_power_load", "index": 34}, "pgm_input": {"node": 4}}, - {"id": 19, "energized": 1, "p": 94477.99488734086, "q": 94477.99488734086, "i": 1.322721625253674, "s": 133612.0617154934, "pf": 0.7071067811865475, "id_reference": {"table": "ward", "name": "ward_const_impedance_load", "index": 34}, "pgm_input": {"node": 4}}, - {"id": 20, "energized": 1, "p": 71111.11111111111, "q": 34440.68301069173, "i": 0.7821998773897324, "s": 79012.34567901235, "pf": 0.9, "id_reference": {"table": "motor", "name": "motor_load", "index": 12}, "pgm_input": {"node": 4}} - ], - "shunt": - [ - {"id": 11, "energized": 1, "p": 282008.0001416396, "q": 1551044.000779018, "i": 31.18812237569019, "s": 1576472.646288691, "pf": 0.1788854381999832, "id_reference": {"table": "shunt", "index": 1201}, "pgm_input": {"node": 3}} - ], - "transformer": - [ - {"id": 12, "energized": 1, "loading": 0.04892939318768632, "p_from": 1798665.9834271, "q_from": 3476628.825951878, "i_from": 20.54501697310328, "s_from": 3914351.455014905, "p_to": -1765096.677117184, "q_to": -1169229.770073524, "i_to": 62.76706374195551, "s_to": 2117230.392469442, "id_reference": {"table": "trafo", "index": 101}, "pgm_input": {"from_node": 0, "to_node": 1}, "pp_input": {"df": 1.0}} - ], - "sym_gen": - [ - {"id": 13, "energized": 1, "p": 1210000, "q": 810000, "i": 14.414885714493, "s": 1456090.656518336, "pf": 0.8309922150680065, "id_reference": {"table": "sgen", "index": 31}, "pgm_input": {"node": 4}} - ], - "three_winding_transformer": - [ - {"id": 14, "energized": 1, "loading": 0.03152945292576947, "p_1": -651018.5317680555, "q_1": 1013282.712651781, "i_1": 35.73216058618558, "s_1": 1204394.862353865, "p_2": 944410.894001629, "q_2": 581081.3221020879, "i_2": 10.97738675283968, "s_2": 1108858.62020587, "p_3": -282008.0001417859, "q_3": -1551044.00077877, "i_3": 31.18812237568588, "s_3": 1576472.646288473, "id_reference": {"table": "trafo3w", "index": 102}, "pgm_input": {"node_1": 2, "node_2": 4, "node_3": 3}} - ], - "link": - [ - {"id": 15, "energized": 1, "loading": 0, "p_from": 0, "q_from": 0, "i_from": 0, "s_from": 0, "p_to": 0, "q_to": 0, "i_to": 0, "s_to": 0, "id_reference": {"table": "switch", "name": "b2b_switches", "index": 3021}, "pgm_input": {"from_node": 0, "to_node": 5}} - ], - "asym_load": - [ - {"id": 16, "energized": 1, "p": 3300000, "q": 30000, "i": 32.67041668765106, "s": 3300136.36081905, "pf": 0.9999586802470745, "id_reference": {"table": "asymmetric_load", "index": 33}, "pgm_input": {"node": 4}} - ], - "asym_gen": - [ - {"id": 17, "energized": 1, "p": 3300000, "q": 30000, "i": 32.67041668765106, "s": 3300136.36081905, "pf": 0.9999586802470745, "id_reference": {"table": "asymmetric_sgen", "index": 32}, "pgm_input": {"node": 4}} - ] -} + "version": "1.0", + "type": "sym_output", + "is_batch": false, + "attributes": {}, + "data": { + "node": + [ + {"id": 0, "energized": 1, "u_pu": 0.9999999996523372, "u": 109999.9999617571, "u_angle": -1.798666001063812e-10, "p": 1798665.98546505, "q": 3476628.82353626, "id_reference": {"table": "bus", "index": 101}}, + {"id": 1, "energized": 1, "u_pu": 0.97374599364253, "u": 19474.9198728506, "u_angle": -0.5239008142519944, "p": 1.408570295181389e-07, "q": -3.370807360039286e-07, "id_reference": {"table": "bus", "index": 102}}, + {"id": 2, "energized": 1, "u_pu": 0.9730137872763268, "u": 19460.27574552653, "u_angle": -0.5237223960629773, "p": -2414572.645273485, "q": -231798.9739460695, "id_reference": {"table": "bus", "index": 103}}, + {"id": 3, "energized": 1, "u_pu": 0.9695497239124967, "u": 29183.44668976615, "u_angle": -1.04518706304991, "p": -8.295648914520637e-08, "q": 1.430200360429221e-07, "id_reference": {"table": "bus", "index": 104}}, + {"id": 4, "energized": 1, "u_pu": 0.9719979160849105, "u": 58319.87496509463, "u_angle": -1.044828700708015, "p": 944410.894001629, "q": 581081.3221020879, "id_reference": {"table": "bus", "index": 105}}, + {"id": 5, "energized": 1, "u_pu": 0.9999999996523372, "u": 109999.9999617571, "u_angle": -1.798666001063812e-10, "p": 0, "q": 0, "id_reference": {"table": "bus", "index": 106}} + ], + "line": + [ + {"id": 6, "energized": 1, "loading": 0.5930290459172566, "p_from": -1763554.11350539, "q_from": -1245081.686597617, "i_from": 64.0471369590637, "s_from": 2158784.731640131, "p_to": 1765096.677117153, "q_to": 1169229.770073222, "i_to": 62.7670637419498, "s_to": 2117230.39246925, "id_reference": {"table": "line", "index": 101}, "pgm_input": {"from_node": 2, "to_node": 1, "i_n": 108.0}} + ], + "source": + [ + {"id": 7, "energized": 1, "p": 1798666.000438483, "q": 3476627.872944676, "i": 20.54501257148846, "s": 3914350.616394652, "pf": 0.4595055928063901, "id_reference": {"table": "ext_grid", "index": 1}, "pgm_input": {"node": 0}} + ], + "sym_load": + [ + {"id": 8, "energized": 1, "p": 575000, "q": 55200, "i": 17.13761141048308, "s": 577643.5232909652, "pf": 0.9954236078405164, "id_reference": {"table": "load", "name": "const_power", "index": 101}, "pgm_input": {"node": 2}}, + {"id": 9, "energized": 1, "p": 1207113.683543022, "q": 115882.9136201301, "i": 35.97746997710809, "s": 1212663.306390481, "pf": 0.9954236078405161, "id_reference": {"table": "load", "name": "const_impedance", "index": 101}, "pgm_input": {"node": 2}}, + {"id": 10, "energized": 1, "p": 632458.9617296124, "q": 60716.06032604279, "i": 18.85014942469511, "s": 635366.6486790245, "pf": 0.9954236078405163, "id_reference": {"table": "load", "name": "const_current", "index": 101}, "pgm_input": {"node": 2}}, + {"id": 18, "energized": 1, "p": 99999.99999999999, "q": 99999.99999999999, "i": 1.400031432537213, "s": 141421.3562373095, "pf": 0.7071067811865475, "id_reference": {"table": "ward", "name": "ward_const_power_load", "index": 34}, "pgm_input": {"node": 4}}, + {"id": 19, "energized": 1, "p": 94477.99488734086, "q": 94477.99488734086, "i": 1.322721625253674, "s": 133612.0617154934, "pf": 0.7071067811865475, "id_reference": {"table": "ward", "name": "ward_const_impedance_load", "index": 34}, "pgm_input": {"node": 4}}, + {"id": 20, "energized": 1, "p": 71111.11111111111, "q": 34440.68301069173, "i": 0.7821998773897324, "s": 79012.34567901235, "pf": 0.9, "id_reference": {"table": "motor", "name": "motor_load", "index": 12}, "pgm_input": {"node": 4}} + ], + "shunt": + [ + {"id": 11, "energized": 1, "p": 282008.0001416396, "q": 1551044.000779018, "i": 31.18812237569019, "s": 1576472.646288691, "pf": 0.1788854381999832, "id_reference": {"table": "shunt", "index": 1201}, "pgm_input": {"node": 3}} + ], + "transformer": + [ + {"id": 12, "energized": 1, "loading": 0.04892939318768632, "p_from": 1798665.9834271, "q_from": 3476628.825951878, "i_from": 20.54501697310328, "s_from": 3914351.455014905, "p_to": -1765096.677117184, "q_to": -1169229.770073524, "i_to": 62.76706374195551, "s_to": 2117230.392469442, "id_reference": {"table": "trafo", "index": 101}, "pgm_input": {"from_node": 0, "to_node": 1}, "pp_input": {"df": 1.0}} + ], + "sym_gen": + [ + {"id": 13, "energized": 1, "p": 1210000, "q": 810000, "i": 14.414885714493, "s": 1456090.656518336, "pf": 0.8309922150680065, "id_reference": {"table": "sgen", "index": 31}, "pgm_input": {"node": 4}} + ], + "three_winding_transformer": + [ + {"id": 14, "energized": 1, "loading": 0.03152945292576947, "p_1": -651018.5317680555, "q_1": 1013282.712651781, "i_1": 35.73216058618558, "s_1": 1204394.862353865, "p_2": 944410.894001629, "q_2": 581081.3221020879, "i_2": 10.97738675283968, "s_2": 1108858.62020587, "p_3": -282008.0001417859, "q_3": -1551044.00077877, "i_3": 31.18812237568588, "s_3": 1576472.646288473, "id_reference": {"table": "trafo3w", "index": 102}, "pgm_input": {"node_1": 2, "node_2": 4, "node_3": 3}} + ], + "link": + [ + {"id": 15, "energized": 1, "loading": 0, "p_from": 0, "q_from": 0, "i_from": 0, "s_from": 0, "p_to": 0, "q_to": 0, "i_to": 0, "s_to": 0, "id_reference": {"table": "switch", "name": "b2b_switches", "index": 3021}, "pgm_input": {"from_node": 0, "to_node": 5}} + ], + "asym_load": + [ + {"id": 16, "energized": 1, "p": 3300000, "q": 30000, "i": 32.67041668765106, "s": 3300136.36081905, "pf": 0.9999586802470745, "id_reference": {"table": "asymmetric_load", "index": 33}, "pgm_input": {"node": 4}} + ], + "asym_gen": + [ + {"id": 17, "energized": 1, "p": 3300000, "q": 30000, "i": 32.67041668765106, "s": 3300136.36081905, "pf": 0.9999586802470745, "id_reference": {"table": "asymmetric_sgen", "index": 32}, "pgm_input": {"node": 4}} + ] + } +} \ No newline at end of file diff --git a/tests/data/vision/pgm_input_data_en.json b/tests/data/vision/pgm_input_data_en.json index f3a476fb..3d7ddf00 100644 --- a/tests/data/vision/pgm_input_data_en.json +++ b/tests/data/vision/pgm_input_data_en.json @@ -1,63 +1,69 @@ { - "node": - [ - {"id": 0, "id_reference": {"table": "Nodes", "key": {"Number": 1}}, "Name": "node1"}, - {"id": 1, "id_reference": {"table": "Nodes", "key": {"Number": 2}}, "Name": "node2"}, - {"id": 2, "id_reference": {"table": "Nodes", "key": {"Number": 3}}, "Name": "node3"}, - {"id": 3, "id_reference": {"table": "Nodes", "key": {"Number": 4}}, "Name": "node4"}, - {"id": 4, "id_reference": {"table": "Nodes", "key": {"Number": 5}}}, - {"id": 15, "id_reference": {"table": "Transformer loads", "name": "internal_node", "key": {"Node.Number": 3, "Subnumber": 4}}, "Name": "transformer_load_2"}, - {"id": 16, "id_reference": {"table": "Transformer loads", "name": "internal_node", "key": {"Node.Number": 3, "Subnumber": 2}}, "Name": "transformer_load_1"} - ], - "line": - [ - {"id": 5, "from_node": 0, "to_node": 1, "id_reference": {"table": "Cables", "key": {"Number": 1}}, "Name": "cable1"}, - {"id": 6, "from_node": 0, "to_node": 1, "id_reference": {"table": "Lines", "key": {"Number": 1}}, "Name": "line1"}, - {"id": 8, "from_node": 0, "to_node": 1, "id_reference": {"table": "Reactance coils", "key": {"Number": 1}}, "Name": "rcoil1"} - ], - "link": - [ - {"id": 7, "from_node": 0, "to_node": 1, "id_reference": {"table": "Links", "key": {"Number": 1}}, "Name": "link1"} - ], - "transformer": - [ - {"id": 9, "from_node": 1, "to_node": 2, "id_reference": {"table": "Transformers", "key": {"Number": 1}}, "Name": "transformer1"}, - {"id": 11, "from_node": 1, "to_node": 3, "id_reference": {"table": "Special transformers", "key": {"Number": 1}}, "Name": "special_trans1"}, - {"id": 13, "from_node": 2, "to_node": 15, "id_reference": {"table": "Transformer loads", "name": "transformer", "key": {"Node.Number": 3, "Subnumber": 4}}, "Name": "transformer_load_2"}, - {"id": 14, "from_node": 2, "to_node": 16, "id_reference": {"table": "Transformer loads", "name": "transformer", "key": {"Node.Number": 3, "Subnumber": 2}}, "Name": "transformer_load_1"} - ], - "transformer_tap_regulator": - [ - {"id": 10, "regulated_object": 9, "id_reference": {"table": "Transformers", "name": "transformer_tap_regulator", "key": {"Number": 1}}, "Name": "transformer1"}, - {"id": 12, "regulated_object": 11, "id_reference": {"table": "Special transformers", "name": "transformer_tap_regulator", "key": {"Number": 1}}, "Name": "special_trans1"}, - {"id": 30, "regulated_object": 29, "id_reference": {"table": "Three winding transformers", "name": "transformer_tap_regulator", "key": {"Number": 1}}} - ], - "sym_load": - [ - {"id": 17, "node": 15, "id_reference": {"table": "Transformer loads", "name": "load", "key": {"Node.Number": 3, "Subnumber": 4}}, "Name": "transformer_load_2"}, - {"id": 18, "node": 16, "id_reference": {"table": "Transformer loads", "name": "load", "key": {"Node.Number": 3, "Subnumber": 2}}, "Name": "transformer_load_1"}, - {"id": 24, "node": 2, "id_reference": {"table": "Loads", "key": {"Node.Number": 3, "Subnumber": 6}}, "Name": "load1"} - ], - "sym_gen": - [ - {"id": 19, "node": 16, "id_reference": {"table": "Transformer loads", "name": "generation", "key": {"Node.Number": 3, "Subnumber": 2}}, "Name": "transformer_load_1"}, - {"id": 20, "node": 16, "id_reference": {"table": "Transformer loads", "name": "pv_generation", "key": {"Node.Number": 3, "Subnumber": 2}}, "Name": "transformer_load_1"}, - {"id": 22, "node": 3, "id_reference": {"table": "Synchronous generators", "key": {"Node.Number": 4, "Subnumber": 2}}, "Name": "syngen1"}, - {"id": 23, "node": 2, "id_reference": {"table": "Wind turbines", "key": {"Node.Number": 3, "Subnumber": 3}}, "Name": "wind1"}, - {"id": 28, "node": 2, "id_reference": {"table": "Pvs", "key": {"Node.Number": 3, "Subnumber": 1}}, "Name": "pv1"} - ], - "source": - [ - {"id": 21, "node": 0, "id_reference": {"table": "Sources", "key": {"Node.Number": 1, "Subnumber": 1}}, "Name": "source1"} - ], - "shunt": - [ - {"id": 25, "node": 2, "id_reference": {"table": "Zigzag transformers", "key": {"Node.Number": 3, "Subnumber": 5}}, "Name": "zztrans1"}, - {"id": 26, "node": 3, "id_reference": {"table": "Capacitors", "key": {"Node.Number": 4, "Subnumber": 9}}, "Name": "shunt1"}, - {"id": 27, "node": 3, "id_reference": {"table": "Reactors", "key": {"Node.Number": 4, "Subnumber": 1}}} - ], - "three_winding_transformer": - [ - {"id": 29, "node_1": 1, "node_2": 2, "node_3": 4, "id_reference": {"table": "Three winding transformers", "key": {"Number": 1}}} - ] -} + "version": "1.0", + "type": "input", + "is_batch": false, + "attributes": {}, + "data": { + "node": + [ + {"id": 0, "id_reference": {"table": "Nodes", "key": {"Number": 1}}, "Name": "node1"}, + {"id": 1, "id_reference": {"table": "Nodes", "key": {"Number": 2}}, "Name": "node2"}, + {"id": 2, "id_reference": {"table": "Nodes", "key": {"Number": 3}}, "Name": "node3"}, + {"id": 3, "id_reference": {"table": "Nodes", "key": {"Number": 4}}, "Name": "node4"}, + {"id": 4, "id_reference": {"table": "Nodes", "key": {"Number": 5}}}, + {"id": 15, "id_reference": {"table": "Transformer loads", "name": "internal_node", "key": {"Node.Number": 3, "Subnumber": 4}}, "Name": "transformer_load_2"}, + {"id": 16, "id_reference": {"table": "Transformer loads", "name": "internal_node", "key": {"Node.Number": 3, "Subnumber": 2}}, "Name": "transformer_load_1"} + ], + "line": + [ + {"id": 5, "from_node": 0, "to_node": 1, "id_reference": {"table": "Cables", "key": {"Number": 1}}, "Name": "cable1"}, + {"id": 6, "from_node": 0, "to_node": 1, "id_reference": {"table": "Lines", "key": {"Number": 1}}, "Name": "line1"}, + {"id": 8, "from_node": 0, "to_node": 1, "id_reference": {"table": "Reactance coils", "key": {"Number": 1}}, "Name": "rcoil1"} + ], + "link": + [ + {"id": 7, "from_node": 0, "to_node": 1, "id_reference": {"table": "Links", "key": {"Number": 1}}, "Name": "link1"} + ], + "transformer": + [ + {"id": 9, "from_node": 1, "to_node": 2, "id_reference": {"table": "Transformers", "key": {"Number": 1}}, "Name": "transformer1"}, + {"id": 11, "from_node": 1, "to_node": 3, "id_reference": {"table": "Special transformers", "key": {"Number": 1}}, "Name": "special_trans1"}, + {"id": 13, "from_node": 2, "to_node": 15, "id_reference": {"table": "Transformer loads", "name": "transformer", "key": {"Node.Number": 3, "Subnumber": 4}}, "Name": "transformer_load_2"}, + {"id": 14, "from_node": 2, "to_node": 16, "id_reference": {"table": "Transformer loads", "name": "transformer", "key": {"Node.Number": 3, "Subnumber": 2}}, "Name": "transformer_load_1"} + ], + "transformer_tap_regulator": + [ + {"id": 10, "regulated_object": 9, "id_reference": {"table": "Transformers", "name": "transformer_tap_regulator", "key": {"Number": 1}}, "Name": "transformer1"}, + {"id": 12, "regulated_object": 11, "id_reference": {"table": "Special transformers", "name": "transformer_tap_regulator", "key": {"Number": 1}}, "Name": "special_trans1"}, + {"id": 30, "regulated_object": 29, "id_reference": {"table": "Three winding transformers", "name": "transformer_tap_regulator", "key": {"Number": 1}}} + ], + "sym_load": + [ + {"id": 17, "node": 15, "id_reference": {"table": "Transformer loads", "name": "load", "key": {"Node.Number": 3, "Subnumber": 4}}, "Name": "transformer_load_2"}, + {"id": 18, "node": 16, "id_reference": {"table": "Transformer loads", "name": "load", "key": {"Node.Number": 3, "Subnumber": 2}}, "Name": "transformer_load_1"}, + {"id": 24, "node": 2, "id_reference": {"table": "Loads", "key": {"Node.Number": 3, "Subnumber": 6}}, "Name": "load1"} + ], + "sym_gen": + [ + {"id": 19, "node": 16, "id_reference": {"table": "Transformer loads", "name": "generation", "key": {"Node.Number": 3, "Subnumber": 2}}, "Name": "transformer_load_1"}, + {"id": 20, "node": 16, "id_reference": {"table": "Transformer loads", "name": "pv_generation", "key": {"Node.Number": 3, "Subnumber": 2}}, "Name": "transformer_load_1"}, + {"id": 22, "node": 3, "id_reference": {"table": "Synchronous generators", "key": {"Node.Number": 4, "Subnumber": 2}}, "Name": "syngen1"}, + {"id": 23, "node": 2, "id_reference": {"table": "Wind turbines", "key": {"Node.Number": 3, "Subnumber": 3}}, "Name": "wind1"}, + {"id": 28, "node": 2, "id_reference": {"table": "Pvs", "key": {"Node.Number": 3, "Subnumber": 1}}, "Name": "pv1"} + ], + "source": + [ + {"id": 21, "node": 0, "id_reference": {"table": "Sources", "key": {"Node.Number": 1, "Subnumber": 1}}, "Name": "source1"} + ], + "shunt": + [ + {"id": 25, "node": 2, "id_reference": {"table": "Zigzag transformers", "key": {"Node.Number": 3, "Subnumber": 5}}, "Name": "zztrans1"}, + {"id": 26, "node": 3, "id_reference": {"table": "Capacitors", "key": {"Node.Number": 4, "Subnumber": 9}}, "Name": "shunt1"}, + {"id": 27, "node": 3, "id_reference": {"table": "Reactors", "key": {"Node.Number": 4, "Subnumber": 1}}} + ], + "three_winding_transformer": + [ + {"id": 29, "node_1": 1, "node_2": 2, "node_3": 4, "id_reference": {"table": "Three winding transformers", "key": {"Number": 1}}} + ] + } +} \ No newline at end of file diff --git a/tests/data/vision/pgm_input_data_nl.json b/tests/data/vision/pgm_input_data_nl.json index 73332570..c67e6988 100644 --- a/tests/data/vision/pgm_input_data_nl.json +++ b/tests/data/vision/pgm_input_data_nl.json @@ -1,63 +1,69 @@ { - "node": - [ - {"id": 0, "id_reference": {"table": "Knooppunten", "key": {"Nummer": 1}}, "Naam": "node1"}, - {"id": 1, "id_reference": {"table": "Knooppunten", "key": {"Nummer": 2}}, "Naam": "node2"}, - {"id": 2, "id_reference": {"table": "Knooppunten", "key": {"Nummer": 3}}, "Naam": "node3"}, - {"id": 3, "id_reference": {"table": "Knooppunten", "key": {"Nummer": 4}}, "Naam": "node4"}, - {"id": 4, "id_reference": {"table": "Knooppunten", "key": {"Nummer": 5}}}, - {"id": 15, "id_reference": {"table": "Transformatorbelastingen", "name": "internal_node", "key": {"Knooppunt.Nummer": 3, "Subnummer": 4}}, "Naam": "transformer_load_2"}, - {"id": 16, "id_reference": {"table": "Transformatorbelastingen", "name": "internal_node", "key": {"Knooppunt.Nummer": 3, "Subnummer": 2}}, "Naam": "transformer_load_1"} - ], - "line": - [ - {"id": 5, "from_node": 0, "to_node": 1, "id_reference": {"table": "Kabels", "key": {"Nummer": 1}}, "Naam": "cable1"}, - {"id": 6, "from_node": 0, "to_node": 1, "id_reference": {"table": "Verbindingen", "key": {"Nummer": 1}}, "Naam": "line1"}, - {"id": 8, "from_node": 0, "to_node": 1, "id_reference": {"table": "Smoorspoelen", "key": {"Nummer": 1}}, "Naam": "rcoil1"} - ], - "link": - [ - {"id": 7, "from_node": 0, "to_node": 1, "id_reference": {"table": "Links", "key": {"Nummer": 1}}, "Naam": "link1"} - ], - "transformer": - [ - {"id": 9, "from_node": 1, "to_node": 2, "id_reference": {"table": "Transformatoren", "key": {"Nummer": 1}}, "Naam": "transformer1"}, - {"id": 11, "from_node": 1, "to_node": 3, "id_reference": {"table": "Speciale transformatoren", "key": {"Nummer": 1}}, "Naam": "special_trans1"}, - {"id": 13, "from_node": 2, "to_node": 15, "id_reference": {"table": "Transformatorbelastingen", "name": "transformer", "key": {"Knooppunt.Nummer": 3, "Subnummer": 4}}, "Naam": "transformer_load_2"}, - {"id": 14, "from_node": 2, "to_node": 16, "id_reference": {"table": "Transformatorbelastingen", "name": "transformer", "key": {"Knooppunt.Nummer": 3, "Subnummer": 2}}, "Naam": "transformer_load_1"} - ], - "transformer_tap_regulator": - [ - {"id": 10, "regulated_object": 9, "id_reference": {"table": "Transformatoren", "name": "transformer_tap_regulator", "key": {"Nummer": 1}}, "Naam": "transformer1"}, - {"id": 12, "regulated_object": 11, "id_reference": {"table": "Speciale transformatoren", "name": "transformer_tap_regulator", "key": {"Nummer": 1}}, "Naam": "special_trans1"}, - {"id": 30, "regulated_object": 29, "id_reference": {"table": "Driewikkelingstransformatoren", "name": "transformer_tap_regulator", "key": {"Nummer": 1}}} - ], - "sym_load": - [ - {"id": 17, "node": 15, "id_reference": {"table": "Transformatorbelastingen", "name": "load", "key": {"Knooppunt.Nummer": 3, "Subnummer": 4}}, "Naam": "transformer_load_2"}, - {"id": 18, "node": 16, "id_reference": {"table": "Transformatorbelastingen", "name": "load", "key": {"Knooppunt.Nummer": 3, "Subnummer": 2}}, "Naam": "transformer_load_1"}, - {"id": 24, "node": 2, "id_reference": {"table": "Belastingen", "key": {"Knooppunt.Nummer": 3, "Subnummer": 6}}, "Naam": "load1"} - ], - "sym_gen": - [ - {"id": 19, "node": 16, "id_reference": {"table": "Transformatorbelastingen", "name": "generation", "key": {"Knooppunt.Nummer": 3, "Subnummer": 2}}, "Naam": "transformer_load_1"}, - {"id": 20, "node": 16, "id_reference": {"table": "Transformatorbelastingen", "name": "pv_generation", "key": {"Knooppunt.Nummer": 3, "Subnummer": 2}}, "Naam": "transformer_load_1"}, - {"id": 22, "node": 3, "id_reference": {"table": "Synchrone generatoren", "key": {"Knooppunt.Nummer": 4, "Subnummer": 2}}, "Naam": "syngen1"}, - {"id": 23, "node": 2, "id_reference": {"table": "Windturbines", "key": {"Knooppunt.Nummer": 3, "Subnummer": 3}}, "Naam": "wind1"}, - {"id": 28, "node": 2, "id_reference": {"table": "Pv's", "key": {"Knooppunt.Nummer": 3, "Subnummer": 1}}, "Naam": "pv1"} - ], - "source": - [ - {"id": 21, "node": 0, "id_reference": {"table": "Netvoedingen", "key": {"Knooppunt.Nummer": 1, "Subnummer": 1}}, "Naam": "source1"} - ], - "shunt": - [ - {"id": 25, "node": 2, "id_reference": {"table": "Nulpuntstransformatoren", "key": {"Knooppunt.Nummer": 3, "Subnummer": 5}}, "Naam": "zztrans1"}, - {"id": 26, "node": 3, "id_reference": {"table": "Condensatoren", "key": {"Knooppunt.Nummer": 4, "Subnummer": 9}}, "Naam": "shunt1"}, - {"id": 27, "node": 3, "id_reference": {"table": "Spoelen", "key": {"Knooppunt.Nummer": 4, "Subnummer": 1}}} - ], - "three_winding_transformer": - [ - {"id": 29, "node_1": 1, "node_2": 2, "node_3": 4, "id_reference": {"table": "Driewikkelingstransformatoren", "key": {"Nummer": 1}}} - ] + "version": "1.0", + "type": "input", + "is_batch": false, + "attributes": {}, + "data": { + "node": + [ + {"id": 0, "id_reference": {"table": "Knooppunten", "key": {"Nummer": 1}}, "Naam": "node1"}, + {"id": 1, "id_reference": {"table": "Knooppunten", "key": {"Nummer": 2}}, "Naam": "node2"}, + {"id": 2, "id_reference": {"table": "Knooppunten", "key": {"Nummer": 3}}, "Naam": "node3"}, + {"id": 3, "id_reference": {"table": "Knooppunten", "key": {"Nummer": 4}}, "Naam": "node4"}, + {"id": 4, "id_reference": {"table": "Knooppunten", "key": {"Nummer": 5}}}, + {"id": 15, "id_reference": {"table": "Transformatorbelastingen", "name": "internal_node", "key": {"Knooppunt.Nummer": 3, "Subnummer": 4}}, "Naam": "transformer_load_2"}, + {"id": 16, "id_reference": {"table": "Transformatorbelastingen", "name": "internal_node", "key": {"Knooppunt.Nummer": 3, "Subnummer": 2}}, "Naam": "transformer_load_1"} + ], + "line": + [ + {"id": 5, "from_node": 0, "to_node": 1, "id_reference": {"table": "Kabels", "key": {"Nummer": 1}}, "Naam": "cable1"}, + {"id": 6, "from_node": 0, "to_node": 1, "id_reference": {"table": "Verbindingen", "key": {"Nummer": 1}}, "Naam": "line1"}, + {"id": 8, "from_node": 0, "to_node": 1, "id_reference": {"table": "Smoorspoelen", "key": {"Nummer": 1}}, "Naam": "rcoil1"} + ], + "link": + [ + {"id": 7, "from_node": 0, "to_node": 1, "id_reference": {"table": "Links", "key": {"Nummer": 1}}, "Naam": "link1"} + ], + "transformer": + [ + {"id": 9, "from_node": 1, "to_node": 2, "id_reference": {"table": "Transformatoren", "key": {"Nummer": 1}}, "Naam": "transformer1"}, + {"id": 11, "from_node": 1, "to_node": 3, "id_reference": {"table": "Speciale transformatoren", "key": {"Nummer": 1}}, "Naam": "special_trans1"}, + {"id": 13, "from_node": 2, "to_node": 15, "id_reference": {"table": "Transformatorbelastingen", "name": "transformer", "key": {"Knooppunt.Nummer": 3, "Subnummer": 4}}, "Naam": "transformer_load_2"}, + {"id": 14, "from_node": 2, "to_node": 16, "id_reference": {"table": "Transformatorbelastingen", "name": "transformer", "key": {"Knooppunt.Nummer": 3, "Subnummer": 2}}, "Naam": "transformer_load_1"} + ], + "transformer_tap_regulator": + [ + {"id": 10, "regulated_object": 9, "id_reference": {"table": "Transformatoren", "name": "transformer_tap_regulator", "key": {"Nummer": 1}}, "Naam": "transformer1"}, + {"id": 12, "regulated_object": 11, "id_reference": {"table": "Speciale transformatoren", "name": "transformer_tap_regulator", "key": {"Nummer": 1}}, "Naam": "special_trans1"}, + {"id": 30, "regulated_object": 29, "id_reference": {"table": "Driewikkelingstransformatoren", "name": "transformer_tap_regulator", "key": {"Nummer": 1}}} + ], + "sym_load": + [ + {"id": 17, "node": 15, "id_reference": {"table": "Transformatorbelastingen", "name": "load", "key": {"Knooppunt.Nummer": 3, "Subnummer": 4}}, "Naam": "transformer_load_2"}, + {"id": 18, "node": 16, "id_reference": {"table": "Transformatorbelastingen", "name": "load", "key": {"Knooppunt.Nummer": 3, "Subnummer": 2}}, "Naam": "transformer_load_1"}, + {"id": 24, "node": 2, "id_reference": {"table": "Belastingen", "key": {"Knooppunt.Nummer": 3, "Subnummer": 6}}, "Naam": "load1"} + ], + "sym_gen": + [ + {"id": 19, "node": 16, "id_reference": {"table": "Transformatorbelastingen", "name": "generation", "key": {"Knooppunt.Nummer": 3, "Subnummer": 2}}, "Naam": "transformer_load_1"}, + {"id": 20, "node": 16, "id_reference": {"table": "Transformatorbelastingen", "name": "pv_generation", "key": {"Knooppunt.Nummer": 3, "Subnummer": 2}}, "Naam": "transformer_load_1"}, + {"id": 22, "node": 3, "id_reference": {"table": "Synchrone generatoren", "key": {"Knooppunt.Nummer": 4, "Subnummer": 2}}, "Naam": "syngen1"}, + {"id": 23, "node": 2, "id_reference": {"table": "Windturbines", "key": {"Knooppunt.Nummer": 3, "Subnummer": 3}}, "Naam": "wind1"}, + {"id": 28, "node": 2, "id_reference": {"table": "Pv's", "key": {"Knooppunt.Nummer": 3, "Subnummer": 1}}, "Naam": "pv1"} + ], + "source": + [ + {"id": 21, "node": 0, "id_reference": {"table": "Netvoedingen", "key": {"Knooppunt.Nummer": 1, "Subnummer": 1}}, "Naam": "source1"} + ], + "shunt": + [ + {"id": 25, "node": 2, "id_reference": {"table": "Nulpuntstransformatoren", "key": {"Knooppunt.Nummer": 3, "Subnummer": 5}}, "Naam": "zztrans1"}, + {"id": 26, "node": 3, "id_reference": {"table": "Condensatoren", "key": {"Knooppunt.Nummer": 4, "Subnummer": 9}}, "Naam": "shunt1"}, + {"id": 27, "node": 3, "id_reference": {"table": "Spoelen", "key": {"Knooppunt.Nummer": 4, "Subnummer": 1}}} + ], + "three_winding_transformer": + [ + {"id": 29, "node_1": 1, "node_2": 2, "node_3": 4, "id_reference": {"table": "Driewikkelingstransformatoren", "key": {"Nummer": 1}}} + ] + } } diff --git a/tests/validation/converters/test_pandapower_converter_output.py b/tests/validation/converters/test_pandapower_converter_output.py index d9d8bc77..fd744d28 100644 --- a/tests/validation/converters/test_pandapower_converter_output.py +++ b/tests/validation/converters/test_pandapower_converter_output.py @@ -14,13 +14,14 @@ import pytest from pandapower.results import reset_results from power_grid_model import PowerGridModel +from power_grid_model.utils import json_deserialize_from_file from power_grid_model.validation import assert_valid_input_data from power_grid_model_io.converters import PandaPowerConverter from power_grid_model_io.converters.pandapower_converter import PandaPowerData from ...data.pandapower.pp_validation import pp_net, pp_net_3ph, pp_net_3ph_minimal_trafo -from ..utils import component_attributes_df, load_json_single_dataset +from ..utils import component_attributes_df pp = pytest.importorskip("pandapower", reason="pandapower is not installed") # we add this to enable python 3.13 testing even though pandapower 3.0 is not yet compatible with it @@ -46,7 +47,7 @@ def load_and_convert_pgm_data(trafo_loading="power") -> PandaPowerData: """ Load and convert the power_grid_model results """ - data, _ = load_json_single_dataset(PGM_OUTPUT_FILE, data_type="sym_output") + data = json_deserialize_from_file(PGM_OUTPUT_FILE) converter = PandaPowerConverter(trafo_loading=trafo_loading) converter.load_input_data(load_validation_data(), make_extra_info=False) return converter.convert(data=data) @@ -57,7 +58,7 @@ def load_and_convert_pgm_data_3ph(trafo_loading="power") -> PandaPowerData: """ Load and convert the power_grid_model results """ - data, _ = load_json_single_dataset(PGM_ASYM_OUTPUT_FILE, data_type="asym_output") + data = json_deserialize_from_file(PGM_ASYM_OUTPUT_FILE) converter = PandaPowerConverter(trafo_loading=trafo_loading) converter.load_input_data(load_validation_data_3ph(), make_extra_info=False) return converter.convert(data=data) diff --git a/tests/validation/test_test_utils.py b/tests/validation/test_test_utils.py index 7ba0d2d9..cd90dd26 100644 --- a/tests/validation/test_test_utils.py +++ b/tests/validation/test_test_utils.py @@ -11,7 +11,16 @@ from .utils import component_attributes, extract_extra_info, select_values -MOCK_JSON_DATA = '{"node":[{"id":0,"u_rated":0.0},{"id":0,"u_rated":0.0,"bar":0}],"line":[{"id":0,"i_n": 0}]}' +MOCK_JSON_DATA = r"""{ + "version": "1.0", + "type": "input", + "is_batch": false, + "attributes": {}, + "data": { + "node": [{"id":0,"u_rated":0.0}, {"id":0,"u_rated":0.0,"bar":0}], + "line": [{"id":0,"i_n": 0}] + } +}""" @patch("pathlib.Path.open", mock_open(read_data=MOCK_JSON_DATA)) diff --git a/tests/validation/utils.py b/tests/validation/utils.py index 405dd6b2..ceda3b1b 100644 --- a/tests/validation/utils.py +++ b/tests/validation/utils.py @@ -10,8 +10,9 @@ import numpy as np import pandas as pd -from power_grid_model import DatasetType, power_grid_meta_data +from power_grid_model import ComponentType, DatasetType, power_grid_meta_data from power_grid_model.data_types import SingleDataset, SinglePythonDataset +from power_grid_model.enum import ComponentAttributeFilterOptions from power_grid_model.errors import PowerGridSerializationError from power_grid_model.utils import import_json_data, json_deserialize_from_file @@ -42,12 +43,15 @@ def component_objects(json_path: Path) -> Generator[Tuple[str, List[int]], None, Yields: A tuple (component, ids) for each component available in the json file """ - data = load_json_file(json_path) + data = json_deserialize_from_file( + json_path, + data_filter={key: ["id"] for key in ComponentType}, + ) assert isinstance(data, dict) # Loop over all components in the validation file (in alphabetical order) for component, objects in sorted(data.items(), key=lambda x: x[0]): - obj_ids = [obj["id"] for obj in objects] + obj_ids = list(objects["id"]) if obj_ids: yield component, obj_ids @@ -63,22 +67,24 @@ def component_attributes(json_path: Path, data_type: DatasetType) -> Generator[T Yields: A tuple (component, attribute) for each attribute available in the json file """ - data = load_json_file(json_path) + data = json_deserialize_from_file(json_path, data_filter=ComponentAttributeFilterOptions.relevant) assert isinstance(data, dict) # Loop over all components in the validation file (in alphabetical order) for component, objects in sorted(data.items(), key=lambda x: x[0]): # Create a set of attribute names for each object, then take the union of all those sets pgm_attr = set(power_grid_meta_data[data_type][component].dtype.names) - obj_keys = (set(obj.keys()) & pgm_attr for obj in objects) - unique_attributes = set().union(*obj_keys) + obj_keys = set(objects.keys()) & pgm_attr + unique_attributes = set(obj_keys) # Yield the data for each attribute (in alphabetical order) for attribute in sorted(unique_attributes): yield component, attribute -def component_attributes_df(data: Mapping[str, pd.DataFrame]) -> Generator[Tuple[str, str], None, None]: +def component_attributes_df( + data: Mapping[str, pd.DataFrame], +) -> Generator[Tuple[str, str], None, None]: """ Extract the component and attribute names from the DataFrames @@ -194,7 +200,11 @@ def load_json_single_dataset(file_path: Path, data_type: str) -> Tuple[SingleDat if error is not None: raise error - extra_info = extract_extra_info(json.loads(file_path.read_text(encoding="utf-8")), data_type=data_type) + raw_data = json.loads(file_path.read_text(encoding="utf-8")) + if {"version", "data"} <= raw_data.keys(): # new format + raw_data = raw_data["data"] + + extra_info = extract_extra_info(raw_data, data_type=data_type) return dataset, extra_info