diff --git a/docs/devcontainer/sample_opflow.output b/docs/devcontainer/sample_opflow.output new file mode 100644 index 00000000..4aafff93 --- /dev/null +++ b/docs/devcontainer/sample_opflow.output @@ -0,0 +1,26 @@ +nbus,ngen,nbranch,baseMVA +9,3,9,100.00 +Bus,Pd,Qd,Vm,Va,mult_Pmis,mult_Qmis + 1, 0.00, 0.00, 1.04, 0.00, 2064.25, 0.00 + 2, 0.00, 0.00, 1.02, 4.54, 2013.83, -0.00 + 3, 0.00, 0.00, 1.02, 2.90, 2018.37, -0.00 + 4, 0.00, 0.00, 1.03, -2.19, 2064.55, 0.78 + 5, 75.00, 50.00, 1.01, -3.38, 2076.02, 11.05 + 6, 90.00, 30.00, 1.02, -4.26, 2093.63, 5.44 + 7, 0.00, 0.00, 1.03, 0.75, 2014.50, 3.54 + 8, 100.00, 35.00, 1.02, -1.72, 2035.99, 7.25 + 9, 0.00, 0.00, 1.03, 0.21, 2018.82, 2.49 +From,To,Status,Sft,Stf,Slim,mult_Sf,mult_St + 1, 4, 1, 73.27, 72.63, 380.00, -0.00, -0.00 + 2, 7, 1, 111.43, 111.84, 250.00, -0.00, -0.00 + 3, 9, 1, 86.05, 86.79, 300.00, -0.00, -0.00 + 4, 5, 1, 32.20, 43.00, 250.00, -0.00, -0.00 + 4, 6, 1, 42.77, 44.87, 250.00, -0.00, -0.00 + 5, 7, 1, 49.98, 48.69, 250.00, -0.00, -0.00 + 6, 9, 1, 50.00, 51.77, 150.00, -0.00, -0.00 + 7, 8, 1, 63.90, 64.98, 250.00, -0.00, -0.00 + 8, 9, 1, 42.30, 36.62, 150.00, -0.00, -0.00 +Gen bus,Status,Fuel,Pg,Qg,Pmin,Pmax,Qmin,Qmax + 1, 1, NG, 71.10, 17.70, 10.00, 350.00, -300.00, 300.00 + 2, 1, NG, 111.40, -2.61, 10.00, 300.00, -300.00, 300.00 + 3, 1, WIND, 85.00, -13.42, 0.00, 85.00, -300.00, 300.00 diff --git a/docs/devcontainer/sample_opflow_data.json b/docs/devcontainer/sample_opflow_data.json new file mode 100644 index 00000000..9ddfa3cb --- /dev/null +++ b/docs/devcontainer/sample_opflow_data.json @@ -0,0 +1,222 @@ +{ + "nbus": 9, + "ngen": 3, + "nbranch": 9, + "baseMVA": 100.0, + "Bus": { + "Num": [ + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9 + ], + "Pd": [ + 0.0, + 0.0, + 0.0, + 0.0, + 75.0, + 90.0, + 0.0, + 100.0, + 0.0 + ], + "Qd": [ + 0.0, + 0.0, + 0.0, + 0.0, + 50.0, + 30.0, + 0.0, + 35.0, + 0.0 + ], + "Vm": [ + 1.04, + 1.02, + 1.02, + 1.03, + 1.01, + 1.02, + 1.03, + 1.02, + 1.03 + ], + "Va": [ + 0.0, + 4.54, + 2.9, + -2.19, + -3.38, + -4.26, + 0.75, + -1.72, + 0.21 + ], + "mult_Pmis": [ + 2064.25, + 2013.83, + 2018.37, + 2064.55, + 2076.02, + 2093.63, + 2014.5, + 2035.99, + 2018.82 + ], + "mult_Qmis": [ + 0.0, + -0.0, + -0.0, + 0.78, + 11.05, + 5.44, + 3.54, + 7.25, + 2.49 + ] + }, + "Branch": { + "From": [ + 1, + 2, + 3, + 4, + 4, + 5, + 6, + 7, + 8 + ], + "To": [ + 4, + 7, + 9, + 5, + 6, + 7, + 9, + 8, + 9 + ], + "Status": [ + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1 + ], + "Sft": [ + 73.27, + 111.43, + 86.05, + 32.2, + 42.77, + 49.98, + 50.0, + 63.9, + 42.3 + ], + "Stf": [ + 72.63, + 111.84, + 86.79, + 43.0, + 44.87, + 48.69, + 51.77, + 64.98, + 36.62 + ], + "Slim": [ + 380.0, + 250.0, + 300.0, + 250.0, + 250.0, + 250.0, + 150.0, + 250.0, + 150.0 + ], + "mult_Sf": [ + -0.0, + -0.0, + -0.0, + -0.0, + -0.0, + -0.0, + -0.0, + -0.0, + -0.0 + ], + "mult_St": [ + -0.0, + -0.0, + -0.0, + -0.0, + -0.0, + -0.0, + -0.0, + -0.0, + -0.0 + ] + }, + "Gen": { + "Genbus": [ + 1, + 2, + 3 + ], + "Status": [ + 1, + 1, + 1 + ], + "Fuel": [ + "NG", + "NG", + "WIND" + ], + "Pg": [ + 71.1, + 111.4, + 85.0 + ], + "Qg": [ + 17.7, + -2.61, + -13.42 + ], + "Pmin": [ + 10.0, + 10.0, + 0.0 + ], + "Pmax": [ + 350.0, + 300.0, + 85.0 + ], + "Qmin": [ + -300.0, + -300.0, + -300.0 + ], + "Qmax": [ + 300.0, + 300.0, + 300.0 + ] + } +} diff --git a/docs/devcontainer/tutorial.ipynb b/docs/devcontainer/tutorial.ipynb index ecc54b11..3f2293c0 100644 --- a/docs/devcontainer/tutorial.ipynb +++ b/docs/devcontainer/tutorial.ipynb @@ -74,49 +74,62 @@ " inequality constraints with only upper bounds: 0\n", "\n", "iter objective inf_pr inf_du lg(mu) ||d|| lg(rg) alpha_du alpha_pr ls\n", - " 0 1.0318125e+04 1.80e+00 1.00e+02 -1.0 0.00e+00 - 0.00e+00 0.00e+00 0\n", - " 1 7.7157691e+03 1.17e+00 1.03e+02 -1.0 1.08e+00 - 6.27e-01 3.50e-01f 1\n", - " 2 7.6608235e+03 1.15e+00 1.01e+02 -1.0 6.28e+00 - 1.20e-02 1.37e-02f 1\n", - " 3 7.4466686e+03 1.09e+00 3.06e+02 -1.0 3.74e+00 - 4.15e-03 5.81e-02f 1\n", - " 4 5.4292675e+03 3.92e-01 4.83e+03 -1.0 7.34e-01 - 3.34e-03 6.40e-01f 1\n", - " 5 4.5792834e+03 2.24e-01 1.51e+03 -1.0 6.46e-01 2.0 8.77e-03 7.37e-01f 1\n", - " 6 4.2907579e+03 1.20e-02 3.57e+02 -1.0 3.36e-01 - 5.37e-01 1.00e+00f 1\n", - " 7 4.1690456e+03 4.40e-02 5.31e+01 -1.0 3.31e-01 - 9.22e-01 1.00e+00f 1\n", - " 8 4.1687926e+03 4.88e-04 1.93e+00 -1.0 4.79e-02 1.5 1.00e+00 1.00e+00h 1\n", - " 9 4.1497176e+03 1.19e-02 9.92e+00 -2.5 1.87e-01 - 8.38e-01 1.00e+00f 1\n", + " 0 7.4421250e+03 1.80e+00 1.00e+02 -1.0 0.00e+00 - 0.00e+00 0.00e+00 0\n", + " 1 6.3366435e+03 1.62e+00 8.99e+01 -1.0 1.98e+00 - 1.82e-01 9.95e-02f 1\n", + " 2 5.0084316e+03 1.33e+00 7.40e+01 -1.0 1.45e+00 - 5.25e-02 1.78e-01f 1\n", + " 3 4.5539744e+03 1.10e+00 6.09e+01 -1.0 6.68e-01 - 4.48e-01 1.77e-01f 1\n", + " 4 4.5260321e+03 1.08e+00 9.94e+01 -1.0 1.07e+00 - 2.40e-03 1.22e-02f 1\n", + " 5 3.8651832e+03 8.63e-01 4.94e+03 -1.0 8.05e-01 - 5.00e-03 6.98e-01f 1\n", + " 6 3.7924522e+03 7.81e-01 4.43e+03 -1.0 1.04e+00 - 1.92e-01 9.50e-02f 1\n", + " 7 3.5649304e+03 7.72e-02 2.36e+03 -1.0 1.33e+00 - 2.89e-01 1.00e+00f 1\n", + " 8 2.9970732e+03 1.07e-01 1.80e+02 -1.0 7.79e-01 - 3.36e-01 1.00e+00f 1\n", + " 9 2.8542043e+03 5.64e-02 2.10e+01 -1.0 5.06e-01 - 7.72e-01 1.00e+00f 1\n", "iter objective inf_pr inf_du lg(mu) ||d|| lg(rg) alpha_du alpha_pr ls\n", - " 10 4.1463942e+03 1.09e-02 5.09e-01 -2.5 1.15e-01 - 8.71e-01 1.00e+00h 1\n", - " 11 4.1449657e+03 1.47e-03 1.79e-02 -2.5 2.75e-02 - 1.00e+00 1.00e+00h 1\n", - " 12 4.1445415e+03 6.63e-04 9.12e-02 -3.8 1.48e-02 - 1.00e+00 6.30e-01h 1\n", - " 13 4.1444705e+03 3.43e-04 4.96e-02 -3.8 2.08e-02 - 1.00e+00 8.93e-01h 1\n", - " 14 4.1444809e+03 4.48e-05 1.79e-04 -3.8 6.82e-03 - 1.00e+00 1.00e+00f 1\n", - " 15 4.1444611e+03 1.96e-05 4.55e-03 -5.7 4.57e-03 - 1.00e+00 9.34e-01h 1\n", - " 16 4.1444607e+03 6.49e-06 1.17e-05 -5.7 2.60e-03 - 1.00e+00 1.00e+00h 1\n", - " 17 4.1444605e+03 1.19e-06 2.07e-06 -7.0 1.11e-03 - 1.00e+00 1.00e+00h 1\n", - " 18 4.1444605e+03 1.58e-07 3.29e-07 -7.0 4.06e-04 - 1.00e+00 1.00e+00h 1\n", + " 10 2.8514258e+03 1.36e-03 8.51e-01 -1.7 1.33e-01 - 8.66e-01 1.00e+00h 1\n", + " 11 2.8503356e+03 6.12e-06 8.96e-03 -2.5 5.62e-03 - 1.00e+00 1.00e+00h 1\n", + " 12 2.8501932e+03 3.44e-08 8.43e-05 -3.8 2.65e-04 - 1.00e+00 1.00e+00h 1\n", + " 13 2.8501865e+03 8.49e-11 2.34e-07 -5.7 1.35e-05 - 1.00e+00 1.00e+00h 1\n", + " 14 2.8501864e+03 2.05e-12 1.01e-05 -7.0 1.47e-06 - 7.77e-01 1.00e+00h 1\n", + " 15 2.8501863e+03 3.98e-12 1.64e-07 -7.0 2.14e-06 - 9.86e-01 1.00e+00h 1\n", "\n", - "Number of Iterations....: 18\n", + "Number of Iterations....: 15\n", "\n", " (scaled) (unscaled)\n", - "Objective...............: 9.2925122354655841e+01 4.1444604570176507e+03\n", - "Dual infeasibility......: 3.2927386798181678e-07 1.4685614511989028e-05\n", - "Constraint violation....: 2.6639672009998172e-08 2.6639672009998172e-08\n", - "Complementarity.........: 4.7840038622662564e-07 2.1336657225707505e-05\n", - "Overall NLP error.......: 4.7840038622662564e-07 2.1336657225707505e-05\n", + "Objective...............: 6.3905523451457867e+01 2.8501863459350211e+03\n", + "Dual infeasibility......: 1.6359318072423079e-07 7.2962558603006936e-06\n", + "Constraint violation....: 1.1539658117953877e-12 1.1539658117953877e-12\n", + "Complementarity.........: 1.9165791600022652e-07 8.5479430536101036e-06\n", + "Overall NLP error.......: 1.9165791600022652e-07 8.5479430536101036e-06\n", "\n", "\n", - "Number of objective function evaluations = 19\n", - "Number of objective gradient evaluations = 19\n", - "Number of equality constraint evaluations = 19\n", - "Number of inequality constraint evaluations = 19\n", - "Number of equality constraint Jacobian evaluations = 19\n", - "Number of inequality constraint Jacobian evaluations = 19\n", - "Number of Lagrangian Hessian evaluations = 18\n", - "Total CPU secs in IPOPT (w/o function evaluations) = 0.014\n", - "Total CPU secs in NLP function evaluations = 0.002\n", + "Number of objective function evaluations = 16\n", + "Number of objective gradient evaluations = 16\n", + "Number of equality constraint evaluations = 16\n", + "Number of inequality constraint evaluations = 16\n", + "Number of equality constraint Jacobian evaluations = 16\n", + "Number of inequality constraint Jacobian evaluations = 16\n", + "Number of Lagrangian Hessian evaluations = 15\n", + "Total CPU secs in IPOPT (w/o function evaluations) = 0.002\n", + "Total CPU secs in NLP function evaluations = 0.000\n", "\n", "EXIT: Optimal Solution Found.\n", - "=============================================================\n", + "=============================================================\n" + ] + }, + { + "data": { + "text/plain": [ + "0" + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ "\t\tOptimal Power Flow\n", "=============================================================\n", "Model POWER_BALANCE_POLAR\n", @@ -133,65 +146,202 @@ "Number of inequality constraints 18\n", "\n", "Convergence status CONVERGED\n", - "Objective value 4144.46\n", + "Objective value 2850.19\n", "\n", "------------------------------------------------------------------------------------------------------\n", "Bus Pd Pdloss Qd Qdloss Vm Va mult_Pmis mult_Qmis Pslack Qslack \n", "------------------------------------------------------------------------------------------------------\n", - "1 0.00 0.00 0.00 0.00 1.100 0.000 2102.91 0.00 0.00 0.00\n", - "2 0.00 0.00 0.00 0.00 1.095 3.928 2059.18 -0.00 0.00 0.00\n", - "3 0.00 0.00 0.00 0.00 1.087 2.120 2065.15 -0.00 0.00 0.00\n", - "4 0.00 0.00 0.00 0.00 1.097 -1.993 2103.16 0.08 0.00 0.00\n", - "5 75.00 0.00 50.00 0.00 1.079 -3.060 2113.45 7.29 0.00 0.00\n", - "6 90.00 0.00 30.00 0.00 1.087 -3.927 2129.85 1.62 0.00 0.00\n", - "7 0.00 0.00 0.00 0.00 1.100 0.535 2059.57 -0.04 0.00 0.00\n", - "8 100.00 0.00 35.00 0.00 1.089 -1.720 2079.34 2.99 0.00 0.00\n", - "9 0.00 0.00 0.00 0.00 1.100 -0.135 2065.43 -0.09 0.00 0.00\n", + "1 0.00 0.00 0.00 0.00 1.040 0.000 2064.25 0.00 0.00 0.00\n", + "2 0.00 0.00 0.00 0.00 1.025 4.538 2013.83 -0.00 0.00 0.00\n", + "3 0.00 0.00 0.00 0.00 1.025 2.901 2018.37 -0.00 0.00 0.00\n", + "4 0.00 0.00 0.00 0.00 1.031 -2.188 2064.55 0.78 0.00 0.00\n", + "5 75.00 0.00 50.00 0.00 1.008 -3.380 2076.02 11.05 0.00 0.00\n", + "6 90.00 0.00 30.00 0.00 1.017 -4.265 2093.63 5.44 0.00 0.00\n", + "7 0.00 0.00 0.00 0.00 1.029 0.752 2014.50 3.54 0.00 0.00\n", + "8 100.00 0.00 35.00 0.00 1.018 -1.725 2035.99 7.25 0.00 0.00\n", + "9 0.00 0.00 0.00 0.00 1.034 0.206 2018.82 2.49 0.00 0.00\n", "\n", "------------------------------------------------------------------------------------------------------\n", "From To Status Sft Stf Slim mult_Sf mult_St \n", "----------------------------------------------------------------------------------------\n", - "1 4 1 73.18 72.98 380.00 -0.00 -0.00\n", - "2 7 1 114.18 114.68 250.00 -0.00 -0.00\n", - "3 9 1 83.57 84.60 300.00 -0.00 -0.00\n", - "4 5 1 29.68 40.50 250.00 -0.00 -0.00\n", - "4 6 1 44.86 46.03 250.00 -0.00 -0.00\n", - "5 7 1 51.29 49.04 250.00 -0.00 -0.00\n", - "6 9 1 48.94 51.43 150.00 -0.00 -0.00\n", - "7 8 1 66.61 68.11 250.00 -0.00 -0.00\n", - "8 9 1 38.86 34.15 150.00 -0.00 -0.00\n", + "1 4 1 73.27 72.63 380.00 -0.00 -0.00\n", + "2 7 1 111.43 111.84 250.00 -0.00 -0.00\n", + "3 9 1 86.05 86.79 300.00 -0.00 -0.00\n", + "4 5 1 32.20 43.00 250.00 -0.00 -0.00\n", + "4 6 1 42.77 44.87 250.00 -0.00 -0.00\n", + "5 7 1 49.98 48.69 250.00 -0.00 -0.00\n", + "6 9 1 50.00 51.77 150.00 -0.00 -0.00\n", + "7 8 1 63.90 64.98 250.00 -0.00 -0.00\n", + "8 9 1 42.30 36.62 150.00 -0.00 -0.00\n", "\n", "----------------------------------------------------------------------------------------\n", "Gen Status Fuel Pg Qg Pmin Pmax Qmin Qmax \n", "----------------------------------------------------------------------------------------\n", - "1 1 UNDEFINED 72.86 6.79 10.00 350.00 -300.00 300.00\n", - "2 1 UNDEFINED 114.07 -5.13 10.00 300.00 -300.00 300.00\n", - "3 1 UNDEFINED 80.21 -23.47 10.00 270.00 -300.00 300.00\n", + "1 1 NG 71.10 17.70 10.00 350.00 -300.00 300.00\n", + "2 1 NG 111.40 -2.61 10.00 300.00 -300.00 300.00\n", + "3 1 WIND 85.00 -13.42 0.00 85.00 -300.00 300.00\n", "[ExaGO] Finalizing opflow application.\n" ] - }, - { - "data": { - "text/plain": [ - "0" - ] - }, - "execution_count": 3, - "metadata": {}, - "output_type": "execute_result" } ], "source": [ "exago.initialize(\"opflow\")\n", "opf = exago.OPFLOW()\n", - "opf.read_mat_power_data('datafiles/case9/case9mod.m')\n", + "opf.read_mat_power_data('datafiles/case9/case9mod_gen3_wind2.m')\n", "opf.solve()\n", + "filepath = './docs/devcontainer/sample_opflow.output'\n", + "opf.save_solution(exago.CSV, filepath)\n", "opf.print_solution()\n", "del opf\n", "exago.finalize()" ] }, { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "{'nbus': 9, 'ngen': 3, 'nbranch': 9, 'baseMVA': 100.0, 'Bus': {'Num': [1, 2, 3, 4, 5, 6, 7, 8, 9], 'Pd': [0.0, 0.0, 0.0, 0.0, 75.0, 90.0, 0.0, 100.0, 0.0], 'Qd': [0.0, 0.0, 0.0, 0.0, 50.0, 30.0, 0.0, 35.0, 0.0], 'Vm': [1.04, 1.02, 1.02, 1.03, 1.01, 1.02, 1.03, 1.02, 1.03], 'Va': [0.0, 4.54, 2.9, -2.19, -3.38, -4.26, 0.75, -1.72, 0.21], 'mult_Pmis': [2064.25, 2013.83, 2018.37, 2064.55, 2076.02, 2093.63, 2014.5, 2035.99, 2018.82], 'mult_Qmis': [0.0, -0.0, -0.0, 0.78, 11.05, 5.44, 3.54, 7.25, 2.49]}, 'Branch': {'From': [1, 2, 3, 4, 4, 5, 6, 7, 8], 'To': [4, 7, 9, 5, 6, 7, 9, 8, 9], 'Status': [1, 1, 1, 1, 1, 1, 1, 1, 1], 'Sft': [73.27, 111.43, 86.05, 32.2, 42.77, 49.98, 50.0, 63.9, 42.3], 'Stf': [72.63, 111.84, 86.79, 43.0, 44.87, 48.69, 51.77, 64.98, 36.62], 'Slim': [380.0, 250.0, 300.0, 250.0, 250.0, 250.0, 150.0, 250.0, 150.0], 'mult_Sf': [-0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0], 'mult_St': [-0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0]}, 'Gen': {'Genbus': [1, 2, 3], 'Status': [1, 1, 1], 'Fuel': ['NG', 'NG', 'WIND'], 'Pg': [71.1, 111.4, 85.0], 'Qg': [17.7, -2.61, -13.42], 'Pmin': [10.0, 10.0, 0.0], 'Pmax': [350.0, 300.0, 85.0], 'Qmin': [-300.0, -300.0, -300.0], 'Qmax': [300.0, 300.0, 300.0]}}\n", + "data converted from ./docs/devcontainer/sample_opflow.output to ./docs/devcontainer/sample_opflow_data.json\n" + ] + } + ], + "source": [ + "import csv \n", + "import json\n", + "\n", + "def add_keys(dict, row, tag=\"\"):\n", + " for i in range(0, len(row)):\n", + " if row[i] == \"Bus\":\n", + " row[i] = \"Num\"\n", + " elif row[i] == \"Gen bus\":\n", + " row[i] = \"Genbus\" \n", + " for key in row:\n", + " if tag:\n", + " if tag not in dict.keys():\n", + " dict[tag] = {}\n", + " if key == \"Bus\":\n", + " dict[tag][\"Num\"] = []\n", + " elif key == \"Gen bus\":\n", + " dict[tag][\"Genbus\"] = []\n", + " else:\n", + " dict[tag][key] = [] \n", + " else:\n", + " dict[key] = 0\n", + " return dict\n", + "\n", + "def write_json(dict):\n", + " #convert python jsonArray to JSON String and write to file\n", + " with open(jsonFilePath, 'w', encoding='utf-8') as jsonf: \n", + " jsonString = json.dumps(dict, indent=4)\n", + " jsonf.write(jsonString)\n", + "\n", + "def count_lines_in_file(filename):\n", + " lines = 0\n", + " with open(filename, encoding='utf-8') as csvf: \n", + " lines = sum(1 for _ in csvf)\n", + " csvf.close()\n", + " return lines\n", + "\n", + "def opflow_csv_to_json(csvFilePath, jsonFilePath):\n", + " #count the number of lines in the csv file\n", + " lines = count_lines_in_file(csvFilePath)\n", + "\n", + " #read csv file\n", + " with open(csvFilePath, encoding='utf-8') as csvf: \n", + " #load csv file data using csv library's reader\n", + " csvReader = csv.reader(csvf) \n", + " current_row = 0\n", + " temp = {}\n", + " keys = True\n", + "\n", + " #add first two rows manually\n", + " row = next(csvReader)\n", + " current_row += 1\n", + " temp = add_keys(temp, row)\n", + " current_keys = row\n", + " #check if there's another row\n", + " if current_row < lines:\n", + " row = next(csvReader)\n", + " current_row += 1\n", + " #add values to corresponding keys\n", + " for x in range(0, len(current_keys)):\n", + " if x < 3:\n", + " temp[current_keys[x]] = int(row[x])\n", + " else:\n", + " temp[current_keys[x]] = float(row[x])\n", + "\n", + " #hard coded category names and how many rows\n", + " tags = [(\"Bus\", 9), (\"Branch\", 9), (\"Gen\", 3)]\n", + " for pair in tags:\n", + " tag = pair[0]\n", + " num = pair[1]\n", + " #check if there's another row\n", + " if current_row < lines:\n", + " row = next(csvReader)\n", + " current_row += 1\n", + " temp = add_keys(temp, row, tag)\n", + " current_keys = row\n", + "\n", + " for k in range(0, num): #rows in each category\n", + " #check if there's another row\n", + " if current_row < lines:\n", + " row = next(csvReader)\n", + " current_row += 1\n", + "\n", + " if tag == \"Bus\":\n", + " #add values to corresponding keys\n", + " for x in range(0, len(current_keys)):\n", + " for j in range(0, len(row)):\n", + " if j == 0:\n", + " row[j] = int(row[j])\n", + " else:\n", + " row[j] = float(row[j])\n", + " temp[tag][current_keys[x]].append(row[x]) \n", + " elif tag == \"Branch\": \n", + " #add values to corresponding keys\n", + " for x in range(0, len(current_keys)):\n", + " for j in range(0, len(row)):\n", + " if j >= 0 and j < 3:\n", + " row[j] = int(row[j])\n", + " else:\n", + " row[j] = float(row[j])\n", + " temp[tag][current_keys[x]].append(row[x]) \n", + " elif tag == \"Gen\": #cannot cast the string fields\n", + " #add values to corresponding keys\n", + " for x in range(0, len(current_keys)):\n", + " for j in range(0, len(row)):\n", + " if j >= 0 and j < 2:\n", + " row[j] = int(row[j])\n", + " elif j == 2:\n", + " row[j] = row[2].strip()\n", + " else:\n", + " row[j] = float(row[j])\n", + " temp[tag][current_keys[x]].append(row[x]) \n", + " else:\n", + " #add values to corresponding keys\n", + " for x in range(0, len(current_keys)):\n", + " temp[tag][current_keys[x]].append(float(row[x]))\n", + " \n", + " print(temp)\n", + " write_json(temp) \n", + " return\n", + "\n", + "#if cell 2 is run, then ./ is the top level of the ExaGO dir\n", + "csvFilePath = r'./docs/devcontainer/sample_opflow.output'\n", + "jsonFilePath = r'./docs/devcontainer/sample_opflow_data.json'\n", + "\n", + "opflow_csv_to_json(csvFilePath, jsonFilePath)\n", + "\n", + "print(f\"data converted from {csvFilePath} to {jsonFilePath}\")" + ] + }, + { + "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ @@ -202,7 +352,7 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 5, "metadata": {}, "outputs": [ { @@ -214,9 +364,8 @@ "0.00s - to python to disable frozen modules.\n", "0.00s - Note: Debugging will proceed. Set PYDEVD_DISABLE_FILE_VALIDATION=1 to disable this validation.\n", "Available kernels:\n", - " python3 /opt/views/view/share/jupyter/kernels/python3\n", - " py311-exago /usr/local/share/jupyter/kernels/py311-exago\n", - " py311-mpi4py-exago /usr/local/share/jupyter/kernels/py311-mpi4py-exago\n" + " python3 /opt/views/view/share/jupyter/kernels/python3\n", + " py311-exago /usr/local/share/jupyter/kernels/py311-exago\n" ] } ], @@ -226,7 +375,7 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 6, "metadata": {}, "outputs": [ { @@ -256,7 +405,7 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": 7, "metadata": {}, "outputs": [ { @@ -386,7 +535,7 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": 8, "metadata": {}, "outputs": [ { @@ -412,7 +561,7 @@ }, { "cell_type": "code", - "execution_count": 8, + "execution_count": 9, "metadata": {}, "outputs": [ { @@ -431,7 +580,7 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 10, "metadata": {}, "outputs": [ { @@ -446,7 +595,6 @@ "export C_INCLUDE_PATH=/opt/views/view/include;\n", "export JUPYTERLAB_DIR=/opt/views/view/share/jupyter/lab;\n", "export JUPYTER_PATH=/opt/views/view/share/jupyter;\n", - "export LD_LIBRARY_PATH=/opt/views/view/lib64:/opt/views/view/lib;\n", "export LIBRARY_PATH=/opt/views/view/lib;\n", "export MANPATH=/opt/views/view/share/man:/opt/views/view/man:;\n", "export MPICC=/opt/views/view/bin/mpicc;\n", @@ -456,7 +604,7 @@ "export PATH=/opt/views/view/bin:/opt/spack/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin;\n", "export PETSC_ARCH=\"\";\n", "export PETSC_DIR=/opt/views/view;\n", - "export PKG_CONFIG_PATH=/opt/views/view/lib64/pkgconfig:/opt/views/view/lib/pkgconfig:/opt/views/view/share/pkgconfig;\n", + "export PKG_CONFIG_PATH=/opt/views/view/lib/pkgconfig:/opt/views/view/share/pkgconfig:/opt/views/view/lib64/pkgconfig;\n", "export PYTHONPATH=/opt/views/view/lib/python3.11/site-packages;\n" ] } @@ -467,7 +615,7 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 11, "metadata": {}, "outputs": [ { @@ -484,7 +632,7 @@ }, { "cell_type": "code", - "execution_count": 11, + "execution_count": 12, "metadata": {}, "outputs": [ { @@ -492,220 +640,220 @@ "output_type": "stream", "text": [ "total 864\n", - "drwxr-xr-x 193 root root 12288 Nov 6 20:19 .\n", - "drwxr-xr-x 39 root root 4096 Nov 6 20:19 ..\n", - "drwxr-xr-x 2 root root 4096 Nov 6 20:19 Babel-2.12.1.dist-info\n", - "drwxr-xr-x 11 root root 4096 Nov 6 20:19 IPython\n", - "drwxr-xr-x 2 root root 4096 Nov 6 20:19 Jinja2-3.0.3.dist-info\n", - "drwxr-xr-x 2 root root 4096 Nov 6 20:19 MarkupSafe-2.1.3.dist-info\n", - "drwxr-xr-x 2 root root 4096 Nov 6 20:19 PyYAML-6.0.dist-info\n", - "drwxr-xr-x 2 root root 4096 Nov 6 20:19 Pygments-2.16.1.dist-info\n", - "lrwxrwxrwx 1 root root 139 Nov 6 20:19 README.txt -> /opt/software/linux-ubuntu22.04-x86_64_v3/gcc-11.4.0/python-3.11.6-ybsi7tlnssr3m4h3eqrzq6tyxdcsr2n7/lib/python3.11/site-packages/README.txt\n", - "drwxr-xr-x 2 root root 4096 Nov 6 20:19 Send2Trash-1.8.0.dist-info\n", - "drwxr-xr-x 2 root root 4096 Nov 6 20:19 __pycache__\n", - "drwxr-xr-x 3 root root 4096 Nov 6 20:19 _argon2_cffi_bindings\n", - "lrwxrwxrwx 1 root root 175 Nov 6 20:19 _cffi_backend.cpython-311-x86_64-linux-gnu.so -> /opt/software/linux-ubuntu22.04-x86_64_v3/gcc-11.4.0/py-cffi-1.15.1-ns7kiujztzymljhmkwceej66qntnjlcr/lib/python3.11/site-packages/_cffi_backend.cpython-311-x86_64-linux-gnu.so\n", - "drwxr-xr-x 3 root root 4096 Nov 6 20:19 _distutils_hack\n", - "lrwxrwxrwx 1 root root 158 Nov 6 20:19 _pyrsistent_version.py -> /opt/software/linux-ubuntu22.04-x86_64_v3/gcc-11.4.0/py-pyrsistent-0.19.3-ptruwnt5v52i3udbb6cbvhq5oeqn7dox/lib/python3.11/site-packages/_pyrsistent_version.py\n", - "drwxr-xr-x 9 root root 4096 Nov 6 20:19 _pytest\n", - "drwxr-xr-x 3 root root 4096 Nov 6 20:19 _yaml\n", - "drwxr-xr-x 7 root root 4096 Nov 6 20:19 anyio\n", - "drwxr-xr-x 2 root root 4096 Nov 6 20:19 anyio-4.0.0.dist-info\n", - "drwxr-xr-x 3 root root 4096 Nov 6 20:19 argon2\n", - "drwxr-xr-x 2 root root 4096 Nov 6 20:19 argon2_cffi-21.3.0.dist-info\n", - "drwxr-xr-x 2 root root 4096 Nov 6 20:19 argon2_cffi_bindings-21.2.0.dist-info\n", - "drwxr-xr-x 3 root root 4096 Nov 6 20:19 arrow\n", - "drwxr-xr-x 2 root root 4096 Nov 6 20:19 arrow-1.2.3.dist-info\n", - "drwxr-xr-x 3 root root 4096 Nov 6 20:19 asttokens\n", - "drwxr-xr-x 2 root root 4096 Nov 6 20:19 asttokens-2.4.0.dist-info\n", - "drwxr-xr-x 2 root root 4096 Nov 6 20:19 async_lru-1.0.3.dist-info\n", - "lrwxrwxrwx 1 root root 146 Nov 6 20:19 async_lru.py -> /opt/software/linux-ubuntu22.04-x86_64_v3/gcc-11.4.0/py-async-lru-1.0.3-n4nwu7jegsgtzsmiplftm3ik7dsghnz7/lib/python3.11/site-packages/async_lru.py\n", - "drwxr-xr-x 3 root root 4096 Nov 6 20:19 attr\n", - "drwxr-xr-x 3 root root 4096 Nov 6 20:19 attrs\n", - "drwxr-xr-x 3 root root 4096 Nov 6 20:19 attrs-23.1.0.dist-info\n", - "drwxr-xr-x 6 root root 4096 Nov 6 20:19 babel\n", - "drwxr-xr-x 3 root root 4096 Nov 6 20:19 backcall\n", - "drwxr-xr-x 2 root root 4096 Nov 6 20:19 backcall-0.2.0.dist-info\n", - "drwxr-xr-x 3 root root 4096 Nov 6 20:19 beautifulsoup4-4.12.2.dist-info\n", - "drwxr-xr-x 4 root root 4096 Nov 6 20:19 bleach\n", - "drwxr-xr-x 2 root root 4096 Nov 6 20:19 bleach-6.0.0.dist-info\n", - "drwxr-xr-x 5 root root 4096 Nov 6 20:19 bs4\n", - "drwxr-xr-x 3 root root 4096 Nov 6 20:19 certifi\n", - "drwxr-xr-x 2 root root 4096 Nov 6 20:19 certifi-2023.7.22.dist-info\n", - "drwxr-xr-x 3 root root 4096 Nov 6 20:19 cffi\n", - "drwxr-xr-x 2 root root 4096 Nov 6 20:19 cffi-1.15.1.dist-info\n", - "drwxr-xr-x 4 root root 4096 Nov 6 20:19 charset_normalizer\n", - "drwxr-xr-x 2 root root 4096 Nov 6 20:19 charset_normalizer-3.3.0.dist-info\n", - "drwxr-xr-x 3 root root 4096 Nov 6 20:19 comm\n", - "drwxr-xr-x 3 root root 4096 Nov 6 20:19 comm-0.1.4.dist-info\n", - "drwxr-xr-x 6 root root 4096 Nov 6 20:19 dateutil\n", - "drwxr-xr-x 8 root root 4096 Nov 6 20:19 debugpy\n", - "drwxr-xr-x 2 root root 4096 Nov 6 20:19 debugpy-1.6.7.dist-info\n", - "drwxr-xr-x 2 root root 4096 Nov 6 20:19 decorator-5.1.1.dist-info\n", - "lrwxrwxrwx 1 root root 146 Nov 6 20:19 decorator.py -> /opt/software/linux-ubuntu22.04-x86_64_v3/gcc-11.4.0/py-decorator-5.1.1-y6omagu7er3rjtyisfdajw5upayicgxe/lib/python3.11/site-packages/decorator.py\n", - "drwxr-xr-x 3 root root 4096 Nov 6 20:19 defusedxml\n", - "drwxr-xr-x 2 root root 4096 Nov 6 20:19 defusedxml-0.7.1.dist-info\n", - "lrwxrwxrwx 1 root root 160 Nov 6 20:19 distutils-precedence.pth -> /opt/software/linux-ubuntu22.04-x86_64_v3/gcc-11.4.0/py-setuptools-68.0.0-ceuwjz4g6i5jxk4babjsbh6oxmqggbba/lib/python3.11/site-packages/distutils-precedence.pth\n", - "drwxr-xr-x 3 root root 4096 Nov 6 20:19 editables\n", - "drwxr-xr-x 2 root root 4096 Nov 6 20:19 editables-0.3.dist-info\n", - "lrwxrwxrwx 1 root root 164 Nov 6 20:19 exago.cpython-311-x86_64-linux-gnu.so -> /opt/software/linux-ubuntu22.04-x86_64_v3/gcc-11.4.0/exago-1.6.0-ssrhw6tbxmal4jmksthjndq2wu33csoe/lib/python3.11/site-packages/exago.cpython-311-x86_64-linux-gnu.so\n", - "drwxr-xr-x 3 root root 4096 Nov 6 20:19 executing\n", - "drwxr-xr-x 2 root root 4096 Nov 6 20:19 executing-1.2.0.dist-info\n", - "drwxr-xr-x 3 root root 4096 Nov 6 20:19 fastjsonschema\n", - "drwxr-xr-x 2 root root 4096 Nov 6 20:19 fastjsonschema-2.16.3.dist-info\n", - "drwxr-xr-x 3 root root 4096 Nov 6 20:19 fqdn\n", - "drwxr-xr-x 2 root root 4096 Nov 6 20:19 fqdn-1.5.1.dist-info\n", - "drwxr-xr-x 9 root root 4096 Nov 6 20:19 gevent\n", - "drwxr-xr-x 2 root root 4096 Nov 6 20:19 gevent-23.7.0.dist-info\n", - "drwxr-xr-x 5 root root 4096 Nov 6 20:19 greenlet\n", - "drwxr-xr-x 2 root root 4096 Nov 6 20:19 greenlet-2.0.2.dist-info\n", - "drwxr-xr-x 5 root root 4096 Nov 6 20:19 hatch_jupyter_builder\n", - "drwxr-xr-x 3 root root 4096 Nov 6 20:19 hatch_jupyter_builder-0.8.3.dist-info\n", - "drwxr-xr-x 12 root root 4096 Nov 6 20:19 hatchling\n", - "drwxr-xr-x 3 root root 4096 Nov 6 20:19 hatchling-1.18.0.dist-info\n", - "drwxr-xr-x 3 root root 4096 Nov 6 20:19 idna\n", - "drwxr-xr-x 2 root root 4096 Nov 6 20:19 idna-3.4.dist-info\n", - "drwxr-xr-x 3 root root 4096 Nov 6 20:19 iniconfig\n", - "drwxr-xr-x 3 root root 4096 Nov 6 20:19 iniconfig-2.0.0.dist-info\n", - "drwxr-xr-x 9 root root 4096 Nov 6 20:19 ipykernel\n", - "drwxr-xr-x 3 root root 4096 Nov 6 20:19 ipykernel-6.23.1.dist-info\n", - "lrwxrwxrwx 1 root root 156 Nov 6 20:19 ipykernel_launcher.py -> /opt/software/linux-ubuntu22.04-x86_64_v3/gcc-11.4.0/py-ipykernel-6.23.1-raogvtxj7buw67byp3cbpliaqqc4bgkc/lib/python3.11/site-packages/ipykernel_launcher.py\n", - "drwxr-xr-x 2 root root 4096 Nov 6 20:19 ipython-8.14.0.dist-info\n", - "drwxr-xr-x 6 root root 4096 Nov 6 20:19 isoduration\n", - "drwxr-xr-x 2 root root 4096 Nov 6 20:19 isoduration-20.11.0.dist-info\n", - "drwxr-xr-x 7 root root 4096 Nov 6 20:19 jedi\n", - "drwxr-xr-x 2 root root 4096 Nov 6 20:19 jedi-0.18.2.dist-info\n", - "drwxr-xr-x 3 root root 4096 Nov 6 20:19 jinja2\n", - "drwxr-xr-x 3 root root 4096 Nov 6 20:19 json5\n", - "drwxr-xr-x 2 root root 4096 Nov 6 20:19 json5-0.9.14.dist-info\n", - "drwxr-xr-x 2 root root 4096 Nov 6 20:19 jsonpointer-2.0.dist-info\n", - "lrwxrwxrwx 1 root root 148 Nov 6 20:19 jsonpointer.py -> /opt/software/linux-ubuntu22.04-x86_64_v3/gcc-11.4.0/py-jsonpointer-2.0-6f5qc5t5ix6e77lewi5pgup5cwgmbngu/lib/python3.11/site-packages/jsonpointer.py\n", - "drwxr-xr-x 6 root root 4096 Nov 6 20:19 jsonschema\n", - "drwxr-xr-x 3 root root 4096 Nov 6 20:19 jsonschema-4.17.3.dist-info\n", - "lrwxrwxrwx 1 root root 147 Nov 6 20:19 jupyter.py -> /opt/software/linux-ubuntu22.04-x86_64_v3/gcc-11.4.0/py-jupyter-core-5.3.0-bupox3eooyhmccqjf75vgk34tys5l75z/lib/python3.11/site-packages/jupyter.py\n", - "drwxr-xr-x 8 root root 4096 Nov 6 20:19 jupyter_client\n", - "drwxr-xr-x 3 root root 4096 Nov 6 20:19 jupyter_client-8.2.0.dist-info\n", - "drwxr-xr-x 5 root root 4096 Nov 6 20:19 jupyter_core\n", - "drwxr-xr-x 3 root root 4096 Nov 6 20:19 jupyter_core-5.3.0.dist-info\n", - "drwxr-xr-x 4 root root 4096 Nov 6 20:19 jupyter_events\n", - "drwxr-xr-x 3 root root 4096 Nov 6 20:19 jupyter_events-0.6.3.dist-info\n", - "drwxr-xr-x 7 root root 4096 Nov 6 20:19 jupyter_lsp\n", - "drwxr-xr-x 2 root root 4096 Nov 6 20:19 jupyter_lsp-2.2.0.dist-info\n", - "drwxr-xr-x 18 root root 4096 Nov 6 20:19 jupyter_server\n", - "drwxr-xr-x 3 root root 4096 Nov 6 20:19 jupyter_server-2.6.0.dist-info\n", - "drwxr-xr-x 3 root root 4096 Nov 6 20:19 jupyter_server_terminals\n", - "drwxr-xr-x 3 root root 4096 Nov 6 20:19 jupyter_server_terminals-0.4.4.dist-info\n", - "drwxr-xr-x 11 root root 4096 Nov 6 20:19 jupyterlab\n", - "drwxr-xr-x 3 root root 4096 Nov 6 20:19 jupyterlab-4.0.1.dist-info\n", - "drwxr-xr-x 4 root root 4096 Nov 6 20:19 jupyterlab_pygments\n", - "drwxr-xr-x 2 root root 4096 Nov 6 20:19 jupyterlab_pygments-0.2.2.dist-info\n", - "drwxr-xr-x 5 root root 4096 Nov 6 20:19 jupyterlab_server\n", - "drwxr-xr-x 3 root root 4096 Nov 6 20:19 jupyterlab_server-2.22.1.dist-info\n", - "drwxr-xr-x 3 root root 4096 Nov 6 20:19 markupsafe\n", - "drwxr-xr-x 3 root root 4096 Nov 6 20:19 matplotlib_inline\n", - "drwxr-xr-x 2 root root 4096 Nov 6 20:19 matplotlib_inline-0.1.6.dist-info\n", - "drwxr-xr-x 5 root root 4096 Nov 6 20:19 mistune\n", - "drwxr-xr-x 2 root root 4096 Nov 6 20:19 mistune-2.0.5.dist-info\n", - "drwxr-xr-x 7 root root 4096 Nov 6 20:19 mpi4py\n", - "drwxr-xr-x 2 root root 4096 Nov 6 20:19 mpi4py-3.1.4.dist-info\n", - "drwxr-xr-x 4 root root 4096 Nov 6 20:19 nbclient\n", - "drwxr-xr-x 3 root root 4096 Nov 6 20:19 nbclient-0.8.0.dist-info\n", - "drwxr-xr-x 11 root root 4096 Nov 6 20:19 nbconvert\n", - "drwxr-xr-x 3 root root 4096 Nov 6 20:19 nbconvert-7.4.0.dist-info\n", - "drwxr-xr-x 8 root root 4096 Nov 6 20:19 nbformat\n", - "drwxr-xr-x 3 root root 4096 Nov 6 20:19 nbformat-5.8.0.dist-info\n", - "drwxr-xr-x 2 root root 4096 Nov 6 20:19 nest_asyncio-1.5.6.dist-info\n", - "lrwxrwxrwx 1 root root 152 Nov 6 20:19 nest_asyncio.py -> /opt/software/linux-ubuntu22.04-x86_64_v3/gcc-11.4.0/py-nest-asyncio-1.5.6-hbtnt2uhwofptyytpmbxi2uqcbngvlox/lib/python3.11/site-packages/nest_asyncio.py\n", - "drwxr-xr-x 4 root root 4096 Nov 6 20:19 notebook_shim\n", - "drwxr-xr-x 3 root root 4096 Nov 6 20:19 notebook_shim-0.2.3.dist-info\n", - "drwxr-xr-x 3 root root 4096 Nov 6 20:19 overrides\n", - "drwxr-xr-x 2 root root 4096 Nov 6 20:19 overrides-7.3.1.dist-info\n", - "drwxr-xr-x 3 root root 4096 Nov 6 20:19 packaging\n", - "drwxr-xr-x 2 root root 4096 Nov 6 20:19 packaging-23.1.dist-info\n", - "drwxr-xr-x 2 root root 4096 Nov 6 20:19 pandocfilters-1.5.0.dist-info\n", - "lrwxrwxrwx 1 root root 154 Nov 6 20:19 pandocfilters.py -> /opt/software/linux-ubuntu22.04-x86_64_v3/gcc-11.4.0/py-pandocfilters-1.5.0-wseldytxe3leiottrhb5ogloooxslfd5/lib/python3.11/site-packages/pandocfilters.py\n", - "drwxr-xr-x 5 root root 4096 Nov 6 20:19 parso\n", - "drwxr-xr-x 2 root root 4096 Nov 6 20:19 parso-0.8.3.dist-info\n", - "drwxr-xr-x 4 root root 4096 Nov 6 20:19 pathspec\n", - "drwxr-xr-x 2 root root 4096 Nov 6 20:19 pathspec-0.11.1.dist-info\n", - "drwxr-xr-x 3 root root 4096 Nov 6 20:19 pexpect\n", - "drwxr-xr-x 2 root root 4096 Nov 6 20:19 pexpect-4.8.0.dist-info\n", - "drwxr-xr-x 2 root root 4096 Nov 6 20:19 pickleshare-0.7.5.dist-info\n", - "lrwxrwxrwx 1 root root 150 Nov 6 20:19 pickleshare.py -> /opt/software/linux-ubuntu22.04-x86_64_v3/gcc-11.4.0/py-pickleshare-0.7.5-wty2ecbqmknacpwe6nwpiyxbq5oqhcza/lib/python3.11/site-packages/pickleshare.py\n", - "drwxr-xr-x 5 root root 4096 Nov 6 20:19 pkg_resources\n", - "drwxr-xr-x 3 root root 4096 Nov 6 20:19 platformdirs\n", - "drwxr-xr-x 3 root root 4096 Nov 6 20:19 platformdirs-3.10.0.dist-info\n", - "drwxr-xr-x 3 root root 4096 Nov 6 20:19 pluggy\n", - "drwxr-xr-x 2 root root 4096 Nov 6 20:19 pluggy-1.0.0.dist-info\n", - "drwxr-xr-x 6 root root 4096 Nov 6 20:19 prometheus_client\n", - "drwxr-xr-x 2 root root 4096 Nov 6 20:19 prometheus_client-0.17.0.dist-info\n", - "drwxr-xr-x 18 root root 4096 Nov 6 20:19 prompt_toolkit\n", - "drwxr-xr-x 2 root root 4096 Nov 6 20:19 prompt_toolkit-3.0.38.dist-info\n", - "drwxr-xr-x 4 root root 4096 Nov 6 20:19 psutil\n", - "drwxr-xr-x 2 root root 4096 Nov 6 20:19 psutil-5.9.5.dist-info\n", - "drwxr-xr-x 3 root root 4096 Nov 6 20:19 ptyprocess\n", - "drwxr-xr-x 2 root root 4096 Nov 6 20:19 ptyprocess-0.7.0.dist-info\n", - "drwxr-xr-x 3 root root 4096 Nov 6 20:19 pure_eval\n", - "drwxr-xr-x 2 root root 4096 Nov 6 20:19 pure_eval-0.2.2.dist-info\n", - "lrwxrwxrwx 1 root root 176 Nov 6 20:19 pvectorc.cpython-311-x86_64-linux-gnu.so -> /opt/software/linux-ubuntu22.04-x86_64_v3/gcc-11.4.0/py-pyrsistent-0.19.3-ptruwnt5v52i3udbb6cbvhq5oeqn7dox/lib/python3.11/site-packages/pvectorc.cpython-311-x86_64-linux-gnu.so\n", - "lrwxrwxrwx 1 root root 136 Nov 6 20:19 py.py -> /opt/software/linux-ubuntu22.04-x86_64_v3/gcc-11.4.0/py-pytest-7.3.2-wx6nsrjdt6ftqyuprphukh4m64lu3hk6/lib/python3.11/site-packages/py.py\n", - "drwxr-xr-x 4 root root 4096 Nov 6 20:19 pycparser\n", - "drwxr-xr-x 2 root root 4096 Nov 6 20:19 pycparser-2.21.dist-info\n", - "drwxr-xr-x 7 root root 4096 Nov 6 20:19 pygments\n", - "drwxr-xr-x 3 root root 4096 Nov 6 20:19 pyrsistent\n", - "drwxr-xr-x 2 root root 4096 Nov 6 20:19 pyrsistent-0.19.3.dist-info\n", - "drwxr-xr-x 3 root root 4096 Nov 6 20:19 pytest\n", - "drwxr-xr-x 2 root root 4096 Nov 6 20:19 pytest-7.3.2.dist-info\n", - "drwxr-xr-x 2 root root 4096 Nov 6 20:19 python_dateutil-2.8.2.dist-info\n", - "drwxr-xr-x 2 root root 4096 Nov 6 20:19 python_json_logger-2.0.7.dist-info\n", - "drwxr-xr-x 3 root root 4096 Nov 6 20:19 pythonjsonlogger\n", - "drwxr-xr-x 2 root root 4096 Nov 6 20:19 pyzmq-25.0.2.dist-info\n", - "drwxr-xr-x 3 root root 4096 Nov 6 20:19 requests\n", - "drwxr-xr-x 2 root root 4096 Nov 6 20:19 requests-2.31.0.dist-info\n", - "drwxr-xr-x 2 root root 4096 Nov 6 20:19 rfc3339_validator-0.1.4.dist-info\n", - "lrwxrwxrwx 1 root root 162 Nov 6 20:19 rfc3339_validator.py -> /opt/software/linux-ubuntu22.04-x86_64_v3/gcc-11.4.0/py-rfc3339-validator-0.1.4-ifadhrcyquy632ftjvceaylpe4aqn7kt/lib/python3.11/site-packages/rfc3339_validator.py\n", - "drwxr-xr-x 2 root root 4096 Nov 6 20:19 rfc3986_validator-0.1.1.dist-info\n", - "lrwxrwxrwx 1 root root 162 Nov 6 20:19 rfc3986_validator.py -> /opt/software/linux-ubuntu22.04-x86_64_v3/gcc-11.4.0/py-rfc3986-validator-0.1.1-zkwpotfen5ywonax22utpdph5j4eczmr/lib/python3.11/site-packages/rfc3986_validator.py\n", - "drwxr-xr-x 3 root root 4096 Nov 6 20:19 send2trash\n", - "drwxr-xr-x 8 root root 4096 Nov 6 20:19 setuptools\n", - "drwxr-xr-x 2 root root 4096 Nov 6 20:19 setuptools-68.0.0.dist-info\n", - "drwxr-xr-x 2 root root 4096 Nov 6 20:19 six-1.16.0.dist-info\n", - "lrwxrwxrwx 1 root root 135 Nov 6 20:19 six.py -> /opt/software/linux-ubuntu22.04-x86_64_v3/gcc-11.4.0/py-six-1.16.0-nbnfdrflk6rrh3fu3pengfnlmslekoqs/lib/python3.11/site-packages/six.py\n", - "drwxr-xr-x 4 root root 4096 Nov 6 20:19 sniffio\n", - "drwxr-xr-x 2 root root 4096 Nov 6 20:19 sniffio-1.3.0.dist-info\n", - "drwxr-xr-x 3 root root 4096 Nov 6 20:19 soupsieve\n", - "drwxr-xr-x 3 root root 4096 Nov 6 20:19 soupsieve-2.4.1.dist-info\n", - "drwxr-xr-x 3 root root 4096 Nov 6 20:19 stack_data\n", - "drwxr-xr-x 2 root root 4096 Nov 6 20:19 stack_data-0.6.2.dist-info\n", - "drwxr-xr-x 5 root root 4096 Nov 6 20:19 terminado\n", - "drwxr-xr-x 3 root root 4096 Nov 6 20:19 terminado-0.17.1.dist-info\n", - "drwxr-xr-x 3 root root 4096 Nov 6 20:19 tinycss2\n", - "drwxr-xr-x 2 root root 4096 Nov 6 20:19 tinycss2-1.2.1.dist-info\n", - "drwxr-xr-x 5 root root 4096 Nov 6 20:19 tornado\n", - "drwxr-xr-x 2 root root 4096 Nov 6 20:19 tornado-6.3.3.dist-info\n", - "drwxr-xr-x 6 root root 4096 Nov 6 20:19 traitlets\n", - "drwxr-xr-x 3 root root 4096 Nov 6 20:19 traitlets-5.9.0.dist-info\n", - "drwxr-xr-x 3 root root 4096 Nov 6 20:19 trove_classifiers\n", - "drwxr-xr-x 2 root root 4096 Nov 6 20:19 trove_classifiers-2023.8.7.dist-info\n", - "drwxr-xr-x 3 root root 4096 Nov 6 20:19 uri_template\n", - "drwxr-xr-x 2 root root 4096 Nov 6 20:19 uri_template-1.2.0.dist-info\n", - "drwxr-xr-x 5 root root 4096 Nov 6 20:19 urllib3\n", - "drwxr-xr-x 3 root root 4096 Nov 6 20:19 urllib3-2.0.6.dist-info\n", - "drwxr-xr-x 3 root root 4096 Nov 6 20:19 wcwidth\n", - "drwxr-xr-x 2 root root 4096 Nov 6 20:19 wcwidth-0.2.7.dist-info\n", - "drwxr-xr-x 2 root root 4096 Nov 6 20:19 webcolors-1.11.1.dist-info\n", - "lrwxrwxrwx 1 root root 147 Nov 6 20:19 webcolors.py -> /opt/software/linux-ubuntu22.04-x86_64_v3/gcc-11.4.0/py-webcolors-1.11.1-x6fsbcye464konn2u33psb3vrat7bmzj/lib/python3.11/site-packages/webcolors.py\n", - "drwxr-xr-x 3 root root 4096 Nov 6 20:19 webencodings\n", - "drwxr-xr-x 2 root root 4096 Nov 6 20:19 webencodings-0.5.1.dist-info\n", - "drwxr-xr-x 4 root root 4096 Nov 6 20:19 websocket\n", - "drwxr-xr-x 2 root root 4096 Nov 6 20:19 websocket_client-1.6.3.dist-info\n", - "drwxr-xr-x 3 root root 4096 Nov 6 20:19 yaml\n", - "drwxr-xr-x 13 root root 4096 Nov 6 20:19 zmq\n", - "drwxr-xr-x 4 root root 4096 Nov 6 20:19 zope\n", - "lrwxrwxrwx 1 root root 164 Nov 6 20:19 zope.event-4.6-py3.11-nspkg.pth -> /opt/software/linux-ubuntu22.04-x86_64_v3/gcc-11.4.0/py-zope-event-4.6-mlah5dql76d33hl34zeysun66ik2nmjk/lib/python3.11/site-packages/zope.event-4.6-py3.11-nspkg.pth\n", - "drwxr-xr-x 2 root root 4096 Nov 6 20:19 zope.event-4.6.dist-info\n", - "lrwxrwxrwx 1 root root 176 Nov 6 20:19 zope.interface-5.4.0-py3.11-nspkg.pth -> /opt/software/linux-ubuntu22.04-x86_64_v3/gcc-11.4.0/py-zope-interface-5.4.0-6jsmi36ohggmpihuchqcd3r3s2eiqaan/lib/python3.11/site-packages/zope.interface-5.4.0-py3.11-nspkg.pth\n", - "drwxr-xr-x 2 root root 4096 Nov 6 20:19 zope.interface-5.4.0.dist-info\n" + "drwxr-xr-x 193 root root 12288 Nov 6 20:20 .\n", + "drwxr-xr-x 39 root root 4096 Nov 6 20:20 ..\n", + "drwxr-xr-x 2 root root 4096 Nov 6 20:20 Babel-2.12.1.dist-info\n", + "drwxr-xr-x 11 root root 4096 Nov 6 20:20 IPython\n", + "drwxr-xr-x 2 root root 4096 Nov 6 20:20 Jinja2-3.0.3.dist-info\n", + "drwxr-xr-x 2 root root 4096 Nov 6 20:20 MarkupSafe-2.1.3.dist-info\n", + "drwxr-xr-x 2 root root 4096 Nov 6 20:20 PyYAML-6.0.dist-info\n", + "drwxr-xr-x 2 root root 4096 Nov 6 20:20 Pygments-2.16.1.dist-info\n", + "lrwxrwxrwx 1 root root 137 Nov 6 20:20 README.txt -> /opt/software/linux-ubuntu22.04-aarch64/gcc-11.4.0/python-3.11.6-ozxud23jpixysn5kk2g6epau3picfer7/lib/python3.11/site-packages/README.txt\n", + "drwxr-xr-x 2 root root 4096 Nov 6 20:20 Send2Trash-1.8.0.dist-info\n", + "drwxr-xr-x 2 root root 4096 Nov 6 20:20 __pycache__\n", + "drwxr-xr-x 3 root root 4096 Nov 6 20:20 _argon2_cffi_bindings\n", + "lrwxrwxrwx 1 root root 174 Nov 6 20:20 _cffi_backend.cpython-311-aarch64-linux-gnu.so -> /opt/software/linux-ubuntu22.04-aarch64/gcc-11.4.0/py-cffi-1.15.1-sdsgvrpap3uc37yifwipr5osebotkhcn/lib/python3.11/site-packages/_cffi_backend.cpython-311-aarch64-linux-gnu.so\n", + "drwxr-xr-x 3 root root 4096 Nov 6 20:20 _distutils_hack\n", + "lrwxrwxrwx 1 root root 156 Nov 6 20:20 _pyrsistent_version.py -> /opt/software/linux-ubuntu22.04-aarch64/gcc-11.4.0/py-pyrsistent-0.19.3-6km7s7cewaaeo536njuwlsdya3yc7x2r/lib/python3.11/site-packages/_pyrsistent_version.py\n", + "drwxr-xr-x 9 root root 4096 Nov 6 20:20 _pytest\n", + "drwxr-xr-x 3 root root 4096 Nov 6 20:20 _yaml\n", + "drwxr-xr-x 7 root root 4096 Nov 6 20:20 anyio\n", + "drwxr-xr-x 2 root root 4096 Nov 6 20:20 anyio-4.0.0.dist-info\n", + "drwxr-xr-x 3 root root 4096 Nov 6 20:20 argon2\n", + "drwxr-xr-x 2 root root 4096 Nov 6 20:20 argon2_cffi-21.3.0.dist-info\n", + "drwxr-xr-x 2 root root 4096 Nov 6 20:20 argon2_cffi_bindings-21.2.0.dist-info\n", + "drwxr-xr-x 3 root root 4096 Nov 6 20:20 arrow\n", + "drwxr-xr-x 2 root root 4096 Nov 6 20:20 arrow-1.2.3.dist-info\n", + "drwxr-xr-x 3 root root 4096 Nov 6 20:20 asttokens\n", + "drwxr-xr-x 2 root root 4096 Nov 6 20:20 asttokens-2.4.0.dist-info\n", + "drwxr-xr-x 2 root root 4096 Nov 6 20:20 async_lru-1.0.3.dist-info\n", + "lrwxrwxrwx 1 root root 144 Nov 6 20:20 async_lru.py -> /opt/software/linux-ubuntu22.04-aarch64/gcc-11.4.0/py-async-lru-1.0.3-eih2je4cxqrjhd2n2u2n7674qab5br46/lib/python3.11/site-packages/async_lru.py\n", + "drwxr-xr-x 3 root root 4096 Nov 6 20:20 attr\n", + "drwxr-xr-x 3 root root 4096 Nov 6 20:20 attrs\n", + "drwxr-xr-x 3 root root 4096 Nov 6 20:20 attrs-23.1.0.dist-info\n", + "drwxr-xr-x 6 root root 4096 Nov 6 20:20 babel\n", + "drwxr-xr-x 3 root root 4096 Nov 6 20:20 backcall\n", + "drwxr-xr-x 2 root root 4096 Nov 6 20:20 backcall-0.2.0.dist-info\n", + "drwxr-xr-x 3 root root 4096 Nov 6 20:20 beautifulsoup4-4.12.2.dist-info\n", + "drwxr-xr-x 4 root root 4096 Nov 6 20:20 bleach\n", + "drwxr-xr-x 2 root root 4096 Nov 6 20:20 bleach-6.0.0.dist-info\n", + "drwxr-xr-x 5 root root 4096 Nov 6 20:20 bs4\n", + "drwxr-xr-x 3 root root 4096 Nov 6 20:20 certifi\n", + "drwxr-xr-x 2 root root 4096 Nov 6 20:20 certifi-2023.7.22.dist-info\n", + "drwxr-xr-x 3 root root 4096 Nov 6 20:20 cffi\n", + "drwxr-xr-x 2 root root 4096 Nov 6 20:20 cffi-1.15.1.dist-info\n", + "drwxr-xr-x 4 root root 4096 Nov 6 20:20 charset_normalizer\n", + "drwxr-xr-x 2 root root 4096 Nov 6 20:20 charset_normalizer-3.3.0.dist-info\n", + "drwxr-xr-x 3 root root 4096 Nov 6 20:20 comm\n", + "drwxr-xr-x 3 root root 4096 Nov 6 20:20 comm-0.1.4.dist-info\n", + "drwxr-xr-x 6 root root 4096 Nov 6 20:20 dateutil\n", + "drwxr-xr-x 8 root root 4096 Nov 6 20:20 debugpy\n", + "drwxr-xr-x 2 root root 4096 Nov 6 20:20 debugpy-1.6.7.dist-info\n", + "drwxr-xr-x 2 root root 4096 Nov 6 20:20 decorator-5.1.1.dist-info\n", + "lrwxrwxrwx 1 root root 144 Nov 6 20:20 decorator.py -> /opt/software/linux-ubuntu22.04-aarch64/gcc-11.4.0/py-decorator-5.1.1-rfbd6u4gz6rlkk5ghzek6bpmfhlvf5ey/lib/python3.11/site-packages/decorator.py\n", + "drwxr-xr-x 3 root root 4096 Nov 6 20:20 defusedxml\n", + "drwxr-xr-x 2 root root 4096 Nov 6 20:20 defusedxml-0.7.1.dist-info\n", + "lrwxrwxrwx 1 root root 158 Nov 6 20:20 distutils-precedence.pth -> /opt/software/linux-ubuntu22.04-aarch64/gcc-11.4.0/py-setuptools-68.0.0-lch6bg35s75lmdpxg52ydcgb5q3fuhbj/lib/python3.11/site-packages/distutils-precedence.pth\n", + "drwxr-xr-x 3 root root 4096 Nov 6 20:20 editables\n", + "drwxr-xr-x 2 root root 4096 Nov 6 20:20 editables-0.3.dist-info\n", + "lrwxrwxrwx 1 root root 163 Nov 6 20:20 exago.cpython-311-aarch64-linux-gnu.so -> /opt/software/linux-ubuntu22.04-aarch64/gcc-11.4.0/exago-1.6.0-qvniqbcmkpfzfgkflscdpt3whngbtidt/lib/python3.11/site-packages/exago.cpython-311-aarch64-linux-gnu.so\n", + "drwxr-xr-x 3 root root 4096 Nov 6 20:20 executing\n", + "drwxr-xr-x 2 root root 4096 Nov 6 20:20 executing-1.2.0.dist-info\n", + "drwxr-xr-x 3 root root 4096 Nov 6 20:20 fastjsonschema\n", + "drwxr-xr-x 2 root root 4096 Nov 6 20:20 fastjsonschema-2.16.3.dist-info\n", + "drwxr-xr-x 3 root root 4096 Nov 6 20:20 fqdn\n", + "drwxr-xr-x 2 root root 4096 Nov 6 20:20 fqdn-1.5.1.dist-info\n", + "drwxr-xr-x 9 root root 4096 Nov 6 20:20 gevent\n", + "drwxr-xr-x 2 root root 4096 Nov 6 20:20 gevent-23.7.0.dist-info\n", + "drwxr-xr-x 5 root root 4096 Nov 6 20:20 greenlet\n", + "drwxr-xr-x 2 root root 4096 Nov 6 20:20 greenlet-2.0.2.dist-info\n", + "drwxr-xr-x 5 root root 4096 Nov 6 20:20 hatch_jupyter_builder\n", + "drwxr-xr-x 3 root root 4096 Nov 6 20:20 hatch_jupyter_builder-0.8.3.dist-info\n", + "drwxr-xr-x 12 root root 4096 Nov 6 20:20 hatchling\n", + "drwxr-xr-x 3 root root 4096 Nov 6 20:20 hatchling-1.18.0.dist-info\n", + "drwxr-xr-x 3 root root 4096 Nov 6 20:20 idna\n", + "drwxr-xr-x 2 root root 4096 Nov 6 20:20 idna-3.4.dist-info\n", + "drwxr-xr-x 3 root root 4096 Nov 6 20:20 iniconfig\n", + "drwxr-xr-x 3 root root 4096 Nov 6 20:20 iniconfig-2.0.0.dist-info\n", + "drwxr-xr-x 9 root root 4096 Nov 6 20:20 ipykernel\n", + "drwxr-xr-x 3 root root 4096 Nov 6 20:20 ipykernel-6.23.1.dist-info\n", + "lrwxrwxrwx 1 root root 154 Nov 6 20:20 ipykernel_launcher.py -> /opt/software/linux-ubuntu22.04-aarch64/gcc-11.4.0/py-ipykernel-6.23.1-bkrhhd2syhqe3ufqm7ehvfjwpum7sszl/lib/python3.11/site-packages/ipykernel_launcher.py\n", + "drwxr-xr-x 2 root root 4096 Nov 6 20:20 ipython-8.14.0.dist-info\n", + "drwxr-xr-x 6 root root 4096 Nov 6 20:20 isoduration\n", + "drwxr-xr-x 2 root root 4096 Nov 6 20:20 isoduration-20.11.0.dist-info\n", + "drwxr-xr-x 7 root root 4096 Nov 6 20:20 jedi\n", + "drwxr-xr-x 2 root root 4096 Nov 6 20:20 jedi-0.18.2.dist-info\n", + "drwxr-xr-x 3 root root 4096 Nov 6 20:20 jinja2\n", + "drwxr-xr-x 3 root root 4096 Nov 6 20:20 json5\n", + "drwxr-xr-x 2 root root 4096 Nov 6 20:20 json5-0.9.14.dist-info\n", + "drwxr-xr-x 2 root root 4096 Nov 6 20:20 jsonpointer-2.0.dist-info\n", + "lrwxrwxrwx 1 root root 146 Nov 6 20:20 jsonpointer.py -> /opt/software/linux-ubuntu22.04-aarch64/gcc-11.4.0/py-jsonpointer-2.0-tjim62tnuwevu5qkkviuq75lq433jvll/lib/python3.11/site-packages/jsonpointer.py\n", + "drwxr-xr-x 6 root root 4096 Nov 6 20:20 jsonschema\n", + "drwxr-xr-x 3 root root 4096 Nov 6 20:20 jsonschema-4.17.3.dist-info\n", + "lrwxrwxrwx 1 root root 145 Nov 6 20:20 jupyter.py -> /opt/software/linux-ubuntu22.04-aarch64/gcc-11.4.0/py-jupyter-core-5.3.0-c5ikgdobb4e3fypk4k74lexmzsnq7a33/lib/python3.11/site-packages/jupyter.py\n", + "drwxr-xr-x 8 root root 4096 Nov 6 20:20 jupyter_client\n", + "drwxr-xr-x 3 root root 4096 Nov 6 20:20 jupyter_client-8.2.0.dist-info\n", + "drwxr-xr-x 5 root root 4096 Nov 6 20:20 jupyter_core\n", + "drwxr-xr-x 3 root root 4096 Nov 6 20:20 jupyter_core-5.3.0.dist-info\n", + "drwxr-xr-x 4 root root 4096 Nov 6 20:20 jupyter_events\n", + "drwxr-xr-x 3 root root 4096 Nov 6 20:20 jupyter_events-0.6.3.dist-info\n", + "drwxr-xr-x 7 root root 4096 Nov 6 20:20 jupyter_lsp\n", + "drwxr-xr-x 2 root root 4096 Nov 6 20:20 jupyter_lsp-2.2.0.dist-info\n", + "drwxr-xr-x 18 root root 4096 Nov 6 20:20 jupyter_server\n", + "drwxr-xr-x 3 root root 4096 Nov 6 20:20 jupyter_server-2.6.0.dist-info\n", + "drwxr-xr-x 3 root root 4096 Nov 6 20:20 jupyter_server_terminals\n", + "drwxr-xr-x 3 root root 4096 Nov 6 20:20 jupyter_server_terminals-0.4.4.dist-info\n", + "drwxr-xr-x 11 root root 4096 Nov 6 20:20 jupyterlab\n", + "drwxr-xr-x 3 root root 4096 Nov 6 20:20 jupyterlab-4.0.1.dist-info\n", + "drwxr-xr-x 4 root root 4096 Nov 6 20:20 jupyterlab_pygments\n", + "drwxr-xr-x 2 root root 4096 Nov 6 20:20 jupyterlab_pygments-0.2.2.dist-info\n", + "drwxr-xr-x 5 root root 4096 Nov 6 20:20 jupyterlab_server\n", + "drwxr-xr-x 3 root root 4096 Nov 6 20:20 jupyterlab_server-2.22.1.dist-info\n", + "drwxr-xr-x 3 root root 4096 Nov 6 20:20 markupsafe\n", + "drwxr-xr-x 3 root root 4096 Nov 6 20:20 matplotlib_inline\n", + "drwxr-xr-x 2 root root 4096 Nov 6 20:20 matplotlib_inline-0.1.6.dist-info\n", + "drwxr-xr-x 5 root root 4096 Nov 6 20:20 mistune\n", + "drwxr-xr-x 2 root root 4096 Nov 6 20:20 mistune-2.0.5.dist-info\n", + "drwxr-xr-x 7 root root 4096 Nov 6 20:20 mpi4py\n", + "drwxr-xr-x 2 root root 4096 Nov 6 20:20 mpi4py-3.1.4.dist-info\n", + "drwxr-xr-x 4 root root 4096 Nov 6 20:20 nbclient\n", + "drwxr-xr-x 3 root root 4096 Nov 6 20:20 nbclient-0.8.0.dist-info\n", + "drwxr-xr-x 11 root root 4096 Nov 6 20:20 nbconvert\n", + "drwxr-xr-x 3 root root 4096 Nov 6 20:20 nbconvert-7.4.0.dist-info\n", + "drwxr-xr-x 8 root root 4096 Nov 6 20:20 nbformat\n", + "drwxr-xr-x 3 root root 4096 Nov 6 20:20 nbformat-5.8.0.dist-info\n", + "drwxr-xr-x 2 root root 4096 Nov 6 20:20 nest_asyncio-1.5.6.dist-info\n", + "lrwxrwxrwx 1 root root 150 Nov 6 20:20 nest_asyncio.py -> /opt/software/linux-ubuntu22.04-aarch64/gcc-11.4.0/py-nest-asyncio-1.5.6-tfiycsaobyt6eckmz6fjaejlmffutggg/lib/python3.11/site-packages/nest_asyncio.py\n", + "drwxr-xr-x 4 root root 4096 Nov 6 20:20 notebook_shim\n", + "drwxr-xr-x 3 root root 4096 Nov 6 20:20 notebook_shim-0.2.3.dist-info\n", + "drwxr-xr-x 3 root root 4096 Nov 6 20:20 overrides\n", + "drwxr-xr-x 2 root root 4096 Nov 6 20:20 overrides-7.3.1.dist-info\n", + "drwxr-xr-x 3 root root 4096 Nov 6 20:20 packaging\n", + "drwxr-xr-x 2 root root 4096 Nov 6 20:20 packaging-23.1.dist-info\n", + "drwxr-xr-x 2 root root 4096 Nov 6 20:20 pandocfilters-1.5.0.dist-info\n", + "lrwxrwxrwx 1 root root 152 Nov 6 20:20 pandocfilters.py -> /opt/software/linux-ubuntu22.04-aarch64/gcc-11.4.0/py-pandocfilters-1.5.0-pm3hywezts76kc2wjs3jdqapn6psyjcn/lib/python3.11/site-packages/pandocfilters.py\n", + "drwxr-xr-x 5 root root 4096 Nov 6 20:20 parso\n", + "drwxr-xr-x 2 root root 4096 Nov 6 20:20 parso-0.8.3.dist-info\n", + "drwxr-xr-x 4 root root 4096 Nov 6 20:20 pathspec\n", + "drwxr-xr-x 2 root root 4096 Nov 6 20:20 pathspec-0.11.1.dist-info\n", + "drwxr-xr-x 3 root root 4096 Nov 6 20:20 pexpect\n", + "drwxr-xr-x 2 root root 4096 Nov 6 20:20 pexpect-4.8.0.dist-info\n", + "drwxr-xr-x 2 root root 4096 Nov 6 20:20 pickleshare-0.7.5.dist-info\n", + "lrwxrwxrwx 1 root root 148 Nov 6 20:20 pickleshare.py -> /opt/software/linux-ubuntu22.04-aarch64/gcc-11.4.0/py-pickleshare-0.7.5-yo7puz3mlvpqg6hygn3ax7echumjkrxy/lib/python3.11/site-packages/pickleshare.py\n", + "drwxr-xr-x 5 root root 4096 Nov 6 20:20 pkg_resources\n", + "drwxr-xr-x 3 root root 4096 Nov 6 20:20 platformdirs\n", + "drwxr-xr-x 3 root root 4096 Nov 6 20:20 platformdirs-3.10.0.dist-info\n", + "drwxr-xr-x 3 root root 4096 Nov 6 20:20 pluggy\n", + "drwxr-xr-x 2 root root 4096 Nov 6 20:20 pluggy-1.0.0.dist-info\n", + "drwxr-xr-x 6 root root 4096 Nov 6 20:20 prometheus_client\n", + "drwxr-xr-x 2 root root 4096 Nov 6 20:20 prometheus_client-0.17.0.dist-info\n", + "drwxr-xr-x 18 root root 4096 Nov 6 20:20 prompt_toolkit\n", + "drwxr-xr-x 2 root root 4096 Nov 6 20:20 prompt_toolkit-3.0.38.dist-info\n", + "drwxr-xr-x 4 root root 4096 Nov 6 20:20 psutil\n", + "drwxr-xr-x 2 root root 4096 Nov 6 20:20 psutil-5.9.5.dist-info\n", + "drwxr-xr-x 3 root root 4096 Nov 6 20:20 ptyprocess\n", + "drwxr-xr-x 2 root root 4096 Nov 6 20:20 ptyprocess-0.7.0.dist-info\n", + "drwxr-xr-x 3 root root 4096 Nov 6 20:20 pure_eval\n", + "drwxr-xr-x 2 root root 4096 Nov 6 20:20 pure_eval-0.2.2.dist-info\n", + "lrwxrwxrwx 1 root root 175 Nov 6 20:20 pvectorc.cpython-311-aarch64-linux-gnu.so -> /opt/software/linux-ubuntu22.04-aarch64/gcc-11.4.0/py-pyrsistent-0.19.3-6km7s7cewaaeo536njuwlsdya3yc7x2r/lib/python3.11/site-packages/pvectorc.cpython-311-aarch64-linux-gnu.so\n", + "lrwxrwxrwx 1 root root 134 Nov 6 20:20 py.py -> /opt/software/linux-ubuntu22.04-aarch64/gcc-11.4.0/py-pytest-7.3.2-2zcb5w54yg342qkkvyy4at5h7jpgaywp/lib/python3.11/site-packages/py.py\n", + "drwxr-xr-x 4 root root 4096 Nov 6 20:20 pycparser\n", + "drwxr-xr-x 2 root root 4096 Nov 6 20:20 pycparser-2.21.dist-info\n", + "drwxr-xr-x 7 root root 4096 Nov 6 20:20 pygments\n", + "drwxr-xr-x 3 root root 4096 Nov 6 20:20 pyrsistent\n", + "drwxr-xr-x 2 root root 4096 Nov 6 20:20 pyrsistent-0.19.3.dist-info\n", + "drwxr-xr-x 3 root root 4096 Nov 6 20:20 pytest\n", + "drwxr-xr-x 2 root root 4096 Nov 6 20:20 pytest-7.3.2.dist-info\n", + "drwxr-xr-x 2 root root 4096 Nov 6 20:20 python_dateutil-2.8.2.dist-info\n", + "drwxr-xr-x 2 root root 4096 Nov 6 20:20 python_json_logger-2.0.7.dist-info\n", + "drwxr-xr-x 3 root root 4096 Nov 6 20:20 pythonjsonlogger\n", + "drwxr-xr-x 2 root root 4096 Nov 6 20:20 pyzmq-25.0.2.dist-info\n", + "drwxr-xr-x 3 root root 4096 Nov 6 20:20 requests\n", + "drwxr-xr-x 2 root root 4096 Nov 6 20:20 requests-2.31.0.dist-info\n", + "drwxr-xr-x 2 root root 4096 Nov 6 20:20 rfc3339_validator-0.1.4.dist-info\n", + "lrwxrwxrwx 1 root root 160 Nov 6 20:20 rfc3339_validator.py -> /opt/software/linux-ubuntu22.04-aarch64/gcc-11.4.0/py-rfc3339-validator-0.1.4-ut6x432azdzrjmlentdp56lv2xfwehfe/lib/python3.11/site-packages/rfc3339_validator.py\n", + "drwxr-xr-x 2 root root 4096 Nov 6 20:20 rfc3986_validator-0.1.1.dist-info\n", + "lrwxrwxrwx 1 root root 160 Nov 6 20:20 rfc3986_validator.py -> /opt/software/linux-ubuntu22.04-aarch64/gcc-11.4.0/py-rfc3986-validator-0.1.1-h22nhb3gntwiumbk3uhpgwh3vpbdcjox/lib/python3.11/site-packages/rfc3986_validator.py\n", + "drwxr-xr-x 3 root root 4096 Nov 6 20:20 send2trash\n", + "drwxr-xr-x 8 root root 4096 Nov 6 20:20 setuptools\n", + "drwxr-xr-x 2 root root 4096 Nov 6 20:20 setuptools-68.0.0.dist-info\n", + "drwxr-xr-x 2 root root 4096 Nov 6 20:20 six-1.16.0.dist-info\n", + "lrwxrwxrwx 1 root root 133 Nov 6 20:20 six.py -> /opt/software/linux-ubuntu22.04-aarch64/gcc-11.4.0/py-six-1.16.0-zf4zil3zxqp3vf4a7ie5fnqxagfnddhm/lib/python3.11/site-packages/six.py\n", + "drwxr-xr-x 4 root root 4096 Nov 6 20:20 sniffio\n", + "drwxr-xr-x 2 root root 4096 Nov 6 20:20 sniffio-1.3.0.dist-info\n", + "drwxr-xr-x 3 root root 4096 Nov 6 20:20 soupsieve\n", + "drwxr-xr-x 3 root root 4096 Nov 6 20:20 soupsieve-2.4.1.dist-info\n", + "drwxr-xr-x 3 root root 4096 Nov 6 20:20 stack_data\n", + "drwxr-xr-x 2 root root 4096 Nov 6 20:20 stack_data-0.6.2.dist-info\n", + "drwxr-xr-x 5 root root 4096 Nov 6 20:20 terminado\n", + "drwxr-xr-x 3 root root 4096 Nov 6 20:20 terminado-0.17.1.dist-info\n", + "drwxr-xr-x 3 root root 4096 Nov 6 20:20 tinycss2\n", + "drwxr-xr-x 2 root root 4096 Nov 6 20:20 tinycss2-1.2.1.dist-info\n", + "drwxr-xr-x 5 root root 4096 Nov 6 20:20 tornado\n", + "drwxr-xr-x 2 root root 4096 Nov 6 20:20 tornado-6.3.3.dist-info\n", + "drwxr-xr-x 6 root root 4096 Nov 6 20:20 traitlets\n", + "drwxr-xr-x 3 root root 4096 Nov 6 20:20 traitlets-5.9.0.dist-info\n", + "drwxr-xr-x 3 root root 4096 Nov 6 20:20 trove_classifiers\n", + "drwxr-xr-x 2 root root 4096 Nov 6 20:20 trove_classifiers-2023.8.7.dist-info\n", + "drwxr-xr-x 3 root root 4096 Nov 6 20:20 uri_template\n", + "drwxr-xr-x 2 root root 4096 Nov 6 20:20 uri_template-1.2.0.dist-info\n", + "drwxr-xr-x 5 root root 4096 Nov 6 20:20 urllib3\n", + "drwxr-xr-x 3 root root 4096 Nov 6 20:20 urllib3-2.0.6.dist-info\n", + "drwxr-xr-x 3 root root 4096 Nov 6 20:20 wcwidth\n", + "drwxr-xr-x 2 root root 4096 Nov 6 20:20 wcwidth-0.2.7.dist-info\n", + "drwxr-xr-x 2 root root 4096 Nov 6 20:20 webcolors-1.11.1.dist-info\n", + "lrwxrwxrwx 1 root root 145 Nov 6 20:20 webcolors.py -> /opt/software/linux-ubuntu22.04-aarch64/gcc-11.4.0/py-webcolors-1.11.1-v6qajcpqynupucgengn2mxiobaeesfj4/lib/python3.11/site-packages/webcolors.py\n", + "drwxr-xr-x 3 root root 4096 Nov 6 20:20 webencodings\n", + "drwxr-xr-x 2 root root 4096 Nov 6 20:20 webencodings-0.5.1.dist-info\n", + "drwxr-xr-x 4 root root 4096 Nov 6 20:20 websocket\n", + "drwxr-xr-x 2 root root 4096 Nov 6 20:20 websocket_client-1.6.3.dist-info\n", + "drwxr-xr-x 3 root root 4096 Nov 6 20:20 yaml\n", + "drwxr-xr-x 13 root root 4096 Nov 6 20:20 zmq\n", + "drwxr-xr-x 4 root root 4096 Nov 6 20:20 zope\n", + "lrwxrwxrwx 1 root root 162 Nov 6 20:20 zope.event-4.6-py3.11-nspkg.pth -> /opt/software/linux-ubuntu22.04-aarch64/gcc-11.4.0/py-zope-event-4.6-7lkqnj3r2zpolmjlvrohnkljusv4xwms/lib/python3.11/site-packages/zope.event-4.6-py3.11-nspkg.pth\n", + "drwxr-xr-x 2 root root 4096 Nov 6 20:20 zope.event-4.6.dist-info\n", + "lrwxrwxrwx 1 root root 174 Nov 6 20:20 zope.interface-5.4.0-py3.11-nspkg.pth -> /opt/software/linux-ubuntu22.04-aarch64/gcc-11.4.0/py-zope-interface-5.4.0-nowyywjqtdv4mjnrj6aw5mrxvjlx7zon/lib/python3.11/site-packages/zope.interface-5.4.0-py3.11-nspkg.pth\n", + "drwxr-xr-x 2 root root 4096 Nov 6 20:20 zope.interface-5.4.0.dist-info\n" ] } ], @@ -729,7 +877,7 @@ }, { "cell_type": "code", - "execution_count": 12, + "execution_count": 13, "metadata": {}, "outputs": [ { @@ -751,6 +899,122 @@ "source": [ "!cat /etc/os-release" ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Previous version of `csv_to_json` (more modularized)" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "{'nbus': [9.0], 'ngen': [3.0], 'nbranch': [9.0], 'baseMVA': [100.0], 'Bus': [1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0], 'Pd': [0.0, 0.0, 0.0, 0.0, 75.0, 90.0, 0.0, 100.0, 0.0], 'Qd': [0.0, 0.0, 0.0, 0.0, 50.0, 30.0, 0.0, 35.0, 0.0], 'Vm': [1.04, 1.02, 1.02, 1.03, 1.01, 1.02, 1.03, 1.02, 1.03], 'Va': [0.0, 4.54, 2.9, -2.19, -3.38, -4.26, 0.75, -1.72, 0.21], 'mult_Pmis': [2064.25, 2013.83, 2018.37, 2064.55, 2076.02, 2093.63, 2014.5, 2035.99, 2018.82], 'mult_Qmis': [0.0, -0.0, -0.0, 0.78, 11.05, 5.44, 3.54, 7.25, 2.49], 'From': [1.0, 2.0, 3.0, 4.0, 4.0, 5.0, 6.0, 7.0, 8.0], 'To': [4.0, 7.0, 9.0, 5.0, 6.0, 7.0, 9.0, 8.0, 9.0], 'Status': [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0], 'Sft': [73.27, 111.43, 86.05, 32.2, 42.77, 49.98, 50.0, 63.9, 42.3], 'Stf': [72.63, 111.84, 86.79, 43.0, 44.87, 48.69, 51.77, 64.98, 36.62], 'Slim': [380.0, 250.0, 300.0, 250.0, 250.0, 250.0, 150.0, 250.0, 150.0], 'mult_Sf': [-0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0], 'mult_St': [-0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0], 'Gen bus': [1.0, 2.0, 3.0], 'Status-2': [1.0, 1.0, 1.0], 'Fuel': ['NG', 'NG', 'WIND'], 'Pg': [71.1, 111.4, 85.0], 'Qg': [17.7, -2.61, -13.42], 'Pmin': [10.0, 10.0, 0.0], 'Pmax': [350.0, 300.0, 85.0], 'Qmin': [-300.0, -300.0, -300.0], 'Qmax': [300.0, 300.0, 300.0]}\n", + "data converted from ./tmp.output to ./data.json\n" + ] + } + ], + "source": [ + "import csv \n", + "import json\n", + "import time\n", + "import numbers\n", + "\n", + "def csv_to_json(csvFilePath, jsonFilePath):\n", + " jsonArray = []\n", + "\n", + " #count the number of lines in the csv file\n", + " lines = 0\n", + " with open(csvFilePath, encoding='utf-8') as csvf: \n", + " lines = sum(1 for _ in csvf)\n", + " csvf.close()\n", + " \n", + " #read csv file\n", + " with open(csvFilePath, encoding='utf-8') as csvf: \n", + " #load csv file data using csv library's reader\n", + " csvReader = csv.reader(csvf) \n", + "\n", + " current_row = 0\n", + " temp = {}\n", + " keys = True\n", + " row = next(csvReader)\n", + " current_row += 1\n", + "\n", + " while True:\n", + " #set non-number rows as keys in the dictionary\n", + " if keys:\n", + " for y in range(0, len(row)):\n", + " item = row[y]\n", + " if item in temp.keys():\n", + " item += \"-2\"\n", + " row[y] = item\n", + " temp[item] = []\n", + " keys = False\n", + " current_keys = row\n", + "\n", + " #check if there's another row\n", + " if current_row < lines:\n", + " row = next(csvReader)\n", + " current_row += 1\n", + " else:\n", + " print(temp)\n", + " jsonArray = temp\n", + " #convert python jsonArray to JSON String and write to file\n", + " with open(jsonFilePath, 'w', encoding='utf-8') as jsonf: \n", + " jsonString = json.dumps(jsonArray, indent=4)\n", + " jsonf.write(jsonString)\n", + " return\n", + "\n", + " #add values to the current keys until a non-number row\n", + " while not keys: \n", + " try:\n", + " #check for the non-number Fuel value\n", + " if row[2].strip() in [\"COAL\", \"WIND\", \"SOLAR\", \"NG\", \"NUCLEAR\", \"HYDRO\", \"UNDEFINED\"]:\n", + " for j in range(0, len(row)):\n", + " if j != 2:\n", + " row[j] = float(row[j])\n", + " else:\n", + " row[j] = row[2].strip()\n", + " else:\n", + " #convert numbers to floats\n", + " row = [float(i) for i in row] #if this fails, go back to keys\n", + "\n", + " #add values to corresponding keys\n", + " for x in range(0, len(current_keys)):\n", + " temp[current_keys[x]].append(row[x])\n", + "\n", + " #check if there's another row\n", + " if current_row < lines:\n", + " row = next(csvReader)\n", + " current_row += 1\n", + " else:\n", + " print(temp)\n", + " jsonArray = temp\n", + " #convert python jsonArray to JSON String and write to file\n", + " with open(jsonFilePath, 'w', encoding='utf-8') as jsonf: \n", + " jsonString = json.dumps(jsonArray, indent=4)\n", + " jsonf.write(jsonString)\n", + " return\n", + " except ValueError:\n", + " #back to keys loop\n", + " keys = True\n", + "\n", + "#if cell 2 is run, then ./ is the top level of the ExaGO dir\n", + "csvFilePath = r'./tmp.output'\n", + "jsonFilePath = r'./data.json'\n", + "\n", + "csv_to_json(csvFilePath, jsonFilePath)\n", + "\n", + "print(f\"data converted from {csvFilePath} to {jsonFilePath}\")" + ] } ], "metadata": {