From b00fd8329bcd43e88627c572cfee9f65059fd013 Mon Sep 17 00:00:00 2001 From: Nitish Bharambe Date: Wed, 21 Aug 2024 16:41:38 +0200 Subject: [PATCH 1/2] add jupyter check Signed-off-by: Nitish Bharambe --- .pre-commit-config.yaml | 2 +- docs/examples/arrow_example.ipynb | 34 +++++- docs/examples/pandapower_example.ipynb | 141 +++++++++++++++++++------ docs/examples/vision_example.ipynb | 15 +-- 4 files changed, 146 insertions(+), 46 deletions(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 379d2749..6e15ecde 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -14,7 +14,7 @@ repos: - repo: https://github.com/psf/black rev: 22.10.0 hooks: - - id: black + - id: black-jupyter - repo: https://github.com/pre-commit/mirrors-mypy rev: v1.2.0 hooks: diff --git a/docs/examples/arrow_example.ipynb b/docs/examples/arrow_example.ipynb index 1680c90a..65119d1e 100644 --- a/docs/examples/arrow_example.ipynb +++ b/docs/examples/arrow_example.ipynb @@ -148,7 +148,21 @@ " pa.array([4.1e-05, 5.4e-05], type=pa.float64()), # c0\n", " pa.array([0.4, 0.1], type=pa.float64()), # tan0\n", " ],\n", - " names=(\"id\", \"from_node\", \"to_node\", \"from_status\", \"to_status\", \"r1\", \"x1\", \"c1\", \"tan1\", \"r0\", \"x0\", \"c0\", \"tan0\"),\n", + " names=(\n", + " \"id\",\n", + " \"from_node\",\n", + " \"to_node\",\n", + " \"from_status\",\n", + " \"to_status\",\n", + " \"r1\",\n", + " \"x1\",\n", + " \"c1\",\n", + " \"tan1\",\n", + " \"r0\",\n", + " \"x0\",\n", + " \"c0\",\n", + " \"tan0\",\n", + " ),\n", ")\n", "sources = pa.table(\n", " [\n", @@ -511,7 +525,18 @@ " pa.array([1.5e3, 2.5], type=pa.float64()), # q_specified_b\n", " pa.array([0.1, 1.5e3], type=pa.float64()), # q_specified_c\n", " ],\n", - " names=(\"id\", \"node\", \"status\", \"type\", \"p_specified_a\", \"p_specified_b\", \"p_specified_c\", \"q_specified_a\", \"q_specified_b\", \"q_specified_c\"),\n", + " names=(\n", + " \"id\",\n", + " \"node\",\n", + " \"status\",\n", + " \"type\",\n", + " \"p_specified_a\",\n", + " \"p_specified_b\",\n", + " \"p_specified_c\",\n", + " \"q_specified_a\",\n", + " \"q_specified_b\",\n", + " \"q_specified_c\",\n", + " ),\n", ")\n", "\n", "asym_loads" @@ -538,7 +563,7 @@ "source": [ "def arrow_to_numpy_asym(data: pa.lib.Table, data_type: str, component: str) -> np.ndarray:\n", " \"\"\"Convert asymmetric Arrow data to NumPy data.\n", - " \n", + "\n", " This function is similar to the arrow_to_numpy function, but also supports asymmetric data.\"\"\"\n", " result = initialize_array(data_type, component, len(data))\n", " phases = (\"a\", \"b\", \"c\")\n", @@ -557,9 +582,10 @@ "\n", " return result\n", "\n", + "\n", "asym_load_input = arrow_to_numpy_asym(asym_loads, \"input\", \"asym_load\")\n", "\n", - "asym_load_input\n" + "asym_load_input" ] }, { diff --git a/docs/examples/pandapower_example.ipynb b/docs/examples/pandapower_example.ipynb index c169af30..07206538 100644 --- a/docs/examples/pandapower_example.ipynb +++ b/docs/examples/pandapower_example.ipynb @@ -44,7 +44,8 @@ "import warnings\n", "import pandapower as pp\n", "\n", - "warnings.filterwarnings(\"ignore\", module=\"pandapower\", category=FutureWarning) # Hide warnings related to pandas\n", + "warnings.filterwarnings(\"ignore\", module=\"pandapower\", category=FutureWarning) # Hide warnings related to pandas\n", + "\n", "\n", "def pandapower_simple_grid():\n", " net = pp.create_empty_network(f_hz=50)\n", @@ -55,19 +56,80 @@ " pp.create_bus(net, index=105, vn_kv=60)\n", " pp.create_bus(net, index=106, vn_kv=110)\n", " pp.create_ext_grid(net, index=1, in_service=True, bus=101, vm_pu=1, s_sc_max_mva=1e10, rx_max=0, va_degree=0)\n", - " pp.create_transformer_from_parameters(net,index=101,hv_bus=101,lv_bus=102,i0_percent=3.0,pfe_kw=11.6,vkr_percent=10.22,sn_mva=40,vn_lv_kv=20.0,vn_hv_kv=110.0,vk_percent=17.8,vector_group=\"Dyn\",shift_degree=30,tap_side=\"hv\",tap_pos=2,tap_min=-1,tap_max=3,tap_step_percent=2,tap_neutral=1,parallel=2,)\n", - " pp.create_line(net, index=101, from_bus=103, to_bus=102, length_km=1.23, parallel=2, df=0.2, std_type=\"NAYY 4x150 SE\")\n", - " pp.create_load(net, index=101, bus=103, p_mw=2.5, q_mvar=0.24, const_i_percent=26.0, const_z_percent=51.0, cos_phi=2)\n", + " pp.create_transformer_from_parameters(\n", + " net,\n", + " index=101,\n", + " hv_bus=101,\n", + " lv_bus=102,\n", + " i0_percent=3.0,\n", + " pfe_kw=11.6,\n", + " vkr_percent=10.22,\n", + " sn_mva=40,\n", + " vn_lv_kv=20.0,\n", + " vn_hv_kv=110.0,\n", + " vk_percent=17.8,\n", + " vector_group=\"Dyn\",\n", + " shift_degree=30,\n", + " tap_side=\"hv\",\n", + " tap_pos=2,\n", + " tap_min=-1,\n", + " tap_max=3,\n", + " tap_step_percent=2,\n", + " tap_neutral=1,\n", + " parallel=2,\n", + " )\n", + " pp.create_line(\n", + " net, index=101, from_bus=103, to_bus=102, length_km=1.23, parallel=2, df=0.2, std_type=\"NAYY 4x150 SE\"\n", + " )\n", + " pp.create_load(\n", + " net, index=101, bus=103, p_mw=2.5, q_mvar=0.24, const_i_percent=26.0, const_z_percent=51.0, cos_phi=2\n", + " )\n", " pp.create_switch(net, index=101, et=\"l\", bus=103, element=101, closed=True)\n", " pp.create_switch(net, index=3021, et=\"b\", bus=101, element=106, closed=True)\n", " pp.create_switch(net, index=321, et=\"t\", bus=101, element=101, closed=True)\n", " pp.create_shunt(net, index=1201, in_service=True, bus=104, p_mw=0.1, q_mvar=0.55, step=3)\n", " pp.create_sgen(net, index=31, bus=105, p_mw=1.21, q_mvar=0.81)\n", - " pp.create_asymmetric_sgen(net, index=32, bus=105, p_a_mw=0.1, p_b_mw=0.2, p_c_mw=3, q_a_mvar=0.01, q_b_mvar=0.01, q_c_mvar=0.01)\n", - " pp.create_asymmetric_load(net, index=33, bus=105, p_a_mw=0.1, p_b_mw=0.2, p_c_mw=3, q_a_mvar=0.01, q_b_mvar=0.01, q_c_mvar=0.01)\n", + " pp.create_asymmetric_sgen(\n", + " net, index=32, bus=105, p_a_mw=0.1, p_b_mw=0.2, p_c_mw=3, q_a_mvar=0.01, q_b_mvar=0.01, q_c_mvar=0.01\n", + " )\n", + " pp.create_asymmetric_load(\n", + " net, index=33, bus=105, p_a_mw=0.1, p_b_mw=0.2, p_c_mw=3, q_a_mvar=0.01, q_b_mvar=0.01, q_c_mvar=0.01\n", + " )\n", " pp.create_ward(net, index=34, bus=105, ps_mw=0.1, qs_mvar=0.1, pz_mw=0.1, qz_mvar=0.1)\n", - " pp.create_motor(net, bus=105, index=12, pn_mech_mw=0.1, cos_phi=0.9, loading_percent=80, efficiency_percent=90, scaling=0.8)\n", - " pp.create_transformer3w_from_parameters(net,index=102,hv_bus=103,mv_bus=105,lv_bus=104,in_service=True,vn_hv_kv=20.0,vn_mv_kv=60.0,vn_lv_kv=30.1,sn_hv_mva=40,sn_mv_mva=100,sn_lv_mva=50,vk_hv_percent=10,vk_mv_percent=11,vk_lv_percent=12,vkr_hv_percent=1,vkr_mv_percent=2,vkr_lv_percent=4,i0_percent=0.1,pfe_kw=10,vector_group=\"Dyny\",shift_mv_degree=30,shift_lv_degree=30,tap_side=\"lv\",tap_pos=2,tap_min=1,tap_max=3,tap_step_percent=3,tap_neutral=2)\n", + " pp.create_motor(\n", + " net, bus=105, index=12, pn_mech_mw=0.1, cos_phi=0.9, loading_percent=80, efficiency_percent=90, scaling=0.8\n", + " )\n", + " pp.create_transformer3w_from_parameters(\n", + " net,\n", + " index=102,\n", + " hv_bus=103,\n", + " mv_bus=105,\n", + " lv_bus=104,\n", + " in_service=True,\n", + " vn_hv_kv=20.0,\n", + " vn_mv_kv=60.0,\n", + " vn_lv_kv=30.1,\n", + " sn_hv_mva=40,\n", + " sn_mv_mva=100,\n", + " sn_lv_mva=50,\n", + " vk_hv_percent=10,\n", + " vk_mv_percent=11,\n", + " vk_lv_percent=12,\n", + " vkr_hv_percent=1,\n", + " vkr_mv_percent=2,\n", + " vkr_lv_percent=4,\n", + " i0_percent=0.1,\n", + " pfe_kw=10,\n", + " vector_group=\"Dyny\",\n", + " shift_mv_degree=30,\n", + " shift_lv_degree=30,\n", + " tap_side=\"lv\",\n", + " tap_pos=2,\n", + " tap_min=1,\n", + " tap_max=3,\n", + " tap_step_percent=3,\n", + " tap_neutral=2,\n", + " )\n", " return net" ] }, @@ -133,7 +195,7 @@ "source": [ "import pandas as pd\n", "\n", - "pd.set_option('future.no_silent_downcasting', True) # enable behaviour of pandas 3.x\n", + "pd.set_option(\"future.no_silent_downcasting\", True) # enable behaviour of pandas 3.x\n", "\n", "# The node data is stored as a numpy structured array in input_data[\"line\"]\n", "display(input_data[\"line\"])\n", @@ -162,7 +224,7 @@ "from power_grid_model import CalculationType\n", "from power_grid_model.validation import assert_valid_input_data\n", "\n", - "assert_valid_input_data(input_data, calculation_type=CalculationType.power_flow, symmetric=True)\n" + "assert_valid_input_data(input_data, calculation_type=CalculationType.power_flow, symmetric=True)" ] }, { @@ -348,7 +410,7 @@ "outputs": [], "source": [ "from power_grid_model_io.converters import PgmJsonConverter\n", - " \n", + "\n", "input_file = \"data/pandapower/example_simple_input.json\"\n", "output_file = \"data/pandapower/example_simple_output.json\"\n", "\n", @@ -464,7 +526,7 @@ } ], "source": [ - "pp.runpp(pp_net, trafo_model='pi', trafo_loading='power', calculate_voltage_angles=True, numba=False)\n", + "pp.runpp(pp_net, trafo_model=\"pi\", trafo_loading=\"power\", calculate_voltage_angles=True, numba=False)\n", "display(pp_net.res_bus)" ] }, @@ -613,23 +675,42 @@ "source": [ "def pandapower_simple_asym_grid():\n", " net = pp.create_empty_network()\n", - " b1 = pp.create_bus(net, 20.0)\n", - " b2 = pp.create_bus(net, 0.4)\n", - " b3 = pp.create_bus(net, 0.4)\n", - " pp.create_ext_grid(net, b1, s_sc_max_mva=1000, rx_max=0.1, x0x_max=1.0,\n", - " r0x0_max=0.1)\n", - " pp.create_transformer_from_parameters(net, b1, b2, sn_mva=0.63,\n", - " vn_hv_kv=20., vn_lv_kv=0.4,\n", - " vkr_percent=0.1, vk_percent=6,\n", - " vk0_percent=6, vkr0_percent=0.78125,\n", - " mag0_percent=100, mag0_rx=0.,\n", - " pfe_kw=0.1, i0_percent=0.1,\n", - " vector_group=\"Dyn\", shift_degree=150,\n", - " si0_hv_partial=0.9)\n", - " pp.create_line_from_parameters(net, b2, b3, length_km=0.1, r0_ohm_per_km=0.0848,\n", - " x0_ohm_per_km=0.4649556, c0_nf_per_km=230.6,\n", - " max_i_ka=0.963, r_ohm_per_km=0.0212,\n", - " x_ohm_per_km=0.1162389, c_nf_per_km= 230)\n", + " b1 = pp.create_bus(net, 20.0)\n", + " b2 = pp.create_bus(net, 0.4)\n", + " b3 = pp.create_bus(net, 0.4)\n", + " pp.create_ext_grid(net, b1, s_sc_max_mva=1000, rx_max=0.1, x0x_max=1.0, r0x0_max=0.1)\n", + " pp.create_transformer_from_parameters(\n", + " net,\n", + " b1,\n", + " b2,\n", + " sn_mva=0.63,\n", + " vn_hv_kv=20.0,\n", + " vn_lv_kv=0.4,\n", + " vkr_percent=0.1,\n", + " vk_percent=6,\n", + " vk0_percent=6,\n", + " vkr0_percent=0.78125,\n", + " mag0_percent=100,\n", + " mag0_rx=0.0,\n", + " pfe_kw=0.1,\n", + " i0_percent=0.1,\n", + " vector_group=\"Dyn\",\n", + " shift_degree=150,\n", + " si0_hv_partial=0.9,\n", + " )\n", + " pp.create_line_from_parameters(\n", + " net,\n", + " b2,\n", + " b3,\n", + " length_km=0.1,\n", + " r0_ohm_per_km=0.0848,\n", + " x0_ohm_per_km=0.4649556,\n", + " c0_nf_per_km=230.6,\n", + " max_i_ka=0.963,\n", + " r_ohm_per_km=0.0212,\n", + " x_ohm_per_km=0.1162389,\n", + " c_nf_per_km=230,\n", + " )\n", " pp.create_asymmetric_load(net, b3, p_a_mw=0.25, p_b_mw=0.18, p_c_mw=0.20, type=\"wye\")\n", " return net" ] @@ -657,7 +738,7 @@ } ], "source": [ - "pp_net_3ph = pandapower_simple_asym_grid()\n", + "pp_net_3ph = pandapower_simple_asym_grid()\n", "asym_input_data, asym_extra_info = converter.load_input_data(pp_net_3ph)\n", "asym_pgm = PowerGridModel(input_data=asym_input_data)\n", "asym_output_data = asym_pgm.calculate_power_flow(symmetric=False)\n", diff --git a/docs/examples/vision_example.ipynb b/docs/examples/vision_example.ipynb index 5e952f35..53179562 100644 --- a/docs/examples/vision_example.ipynb +++ b/docs/examples/vision_example.ipynb @@ -317,24 +317,17 @@ "print(\"PGM object #7:\", converter.lookup_id(7))\n", "print(\"PGM object #9:\", converter.lookup_id(9))\n", "\n", - "print(\n", - " \"Node with Number=1:\",\n", - " converter.get_node_id(number=1)\n", - ")\n", + "print(\"Node with Number=1:\", converter.get_node_id(number=1))\n", "\n", - "print(\n", - " \"Cables with Number=6:\",\n", - " converter.get_branch_id(table=\"Cables\", number=6)\n", - ")\n", + "print(\"Cables with Number=6:\", converter.get_branch_id(table=\"Cables\", number=6))\n", "\n", "print(\n", " \"Source with Node.Number=1 and Subnumber=1:\",\n", - " converter.get_appliance_id(table=\"Sources\", node_number=1, sub_number=1)\n", + " converter.get_appliance_id(table=\"Sources\", node_number=1, sub_number=1),\n", ")\n", "\n", "print(\n", - " \"Loads with Node.Number=4 and Subnumber=1:\",\n", - " converter.get_appliance_id(table=\"Loads\", node_number=4, sub_number=1)\n", + " \"Loads with Node.Number=4 and Subnumber=1:\", converter.get_appliance_id(table=\"Loads\", node_number=4, sub_number=1)\n", ")" ] }, From 5ea386480c7a966506063f2475c68f5874a2e55f Mon Sep 17 00:00:00 2001 From: Nitish Bharambe Date: Wed, 21 Aug 2024 22:34:11 +0200 Subject: [PATCH 2/2] add to CI Signed-off-by: Nitish Bharambe --- .github/workflows/check-code-quality.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/check-code-quality.yml b/.github/workflows/check-code-quality.yml index 9941dd0d..f7000d8c 100644 --- a/.github/workflows/check-code-quality.yml +++ b/.github/workflows/check-code-quality.yml @@ -41,7 +41,7 @@ jobs: - name: Install and run black run: | - pip install black + pip install black[jupyter] black . - name: Install and run mypy