{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Test notebook for Pastas parameter sensitivity analysis with PEST++ SEN Solver" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "DeprecationWarning: As of Pastas 1.5, no noisemodel is added to the pastas Model class by default anymore. To solve your model using a noisemodel, you have to explicitly add a noisemodel to your model before solving. For more information, and how to adapt your code, please see this issue on GitHub: https://github.com/pastas/pastas/issues/735/home/martin/repos/pyemu/pyemu/__init__.py:29: UserWarning: Failed to import legacy module. May impact ability to access older methods.ModuleNotFoundError No module named 'flopy'\n" ] } ], "source": [ "from pathlib import Path\n", "\n", "import matplotlib.pyplot as plt\n", "import pandas as pd\n", "import pastas as ps\n", "\n", "import pastas_plugins.pest as psp" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "head = (\n", " pd.read_csv(\n", " \"https://raw.githubusercontent.com/pastas/pastas/master/doc/examples/data/head_nb1.csv\",\n", " index_col=\"date\",\n", " parse_dates=True,\n", " ).squeeze()\n", ").iloc[-300:]\n", "prec = pd.read_csv(\n", " \"https://raw.githubusercontent.com/pastas/pastas/master/doc/examples/data/rain_nb1.csv\",\n", " index_col=\"date\",\n", " parse_dates=True,\n", ").squeeze()\n", "evap = pd.read_csv(\n", " \"https://raw.githubusercontent.com/pastas/pastas/master/doc/examples/data/evap_nb1.csv\",\n", " index_col=\"date\",\n", " parse_dates=True,\n", ").squeeze()\n", "pex = (prec - evap).dropna().rename(\"PrecipitationExcess\")" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "ml = ps.Model(head)\n", "sm = ps.StressModel(\n", " pex, ps.Exponential(), name=\"pex\", settings=ps.rcParams[\"timeseries\"][\"evap\"]\n", ")\n", "\n", "ml.add_stressmodel(sm)" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "tags": [ "hide-output" ] }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "2025-05-22 10:43:54.231677 starting: opening PstFrom.log for logging\n", "2025-05-22 10:43:54.234961 starting PstFrom process\n", "2025-05-22 10:43:54.235822 starting: setting up dirs\n", "2025-05-22 10:43:54.236113 starting: removing existing new_d '/home/martin/repos/pastas-plugins/docs/examples/pestf_sen/temp'\n", "2025-05-22 10:43:54.239164 finished: removing existing new_d '/home/martin/repos/pastas-plugins/docs/examples/pestf_sen/temp' took: 0:00:00.003051\n", "2025-05-22 10:43:54.239406 starting: copying original_d '/home/martin/repos/pastas-plugins/docs/examples/pestf_sen/model' to new_d '/home/martin/repos/pastas-plugins/docs/examples/pestf_sen/temp'\n", "2025-05-22 10:43:54.243253 finished: copying original_d '/home/martin/repos/pastas-plugins/docs/examples/pestf_sen/model' to new_d '/home/martin/repos/pastas-plugins/docs/examples/pestf_sen/temp' took: 0:00:00.003847\n", "2025-05-22 10:43:54.246437 finished: setting up dirs took: 0:00:00.010615\n", "2025-05-22 10:43:54.280707 starting: adding grid type d style parameters for file(s) ['parameters_sel.csv']\n", "2025-05-22 10:43:54.282970 starting: loading list-style /home/martin/repos/pastas-plugins/docs/examples/pestf_sen/temp/parameters_sel.csv\n", "2025-05-22 10:43:54.284340 starting: reading list-style file: /home/martin/repos/pastas-plugins/docs/examples/pestf_sen/temp/parameters_sel.csv\n", "2025-05-22 10:43:54.288411 finished: reading list-style file: /home/martin/repos/pastas-plugins/docs/examples/pestf_sen/temp/parameters_sel.csv took: 0:00:00.004071\n", "2025-05-22 10:43:54.290689 loaded list-style '/home/martin/repos/pastas-plugins/docs/examples/pestf_sen/temp/parameters_sel.csv' of shape (3, 2)\n", "2025-05-22 10:43:54.293918 finished: loading list-style /home/martin/repos/pastas-plugins/docs/examples/pestf_sen/temp/parameters_sel.csv took: 0:00:00.010948\n", "2025-05-22 10:43:54.295155 starting: writing list-style template file '/home/martin/repos/pastas-plugins/docs/examples/pestf_sen/temp/parameters_sel.csv.tpl'\n", "2025-05-22 10:43:54.314358 finished: writing list-style template file '/home/martin/repos/pastas-plugins/docs/examples/pestf_sen/temp/parameters_sel.csv.tpl' took: 0:00:00.019203\n", "2025-05-22 10:43:54.323356 finished: adding grid type d style parameters for file(s) ['parameters_sel.csv'] took: 0:00:00.042649\n", "2025-05-22 10:43:54.324542 starting: adding observations from output file simulation.csv\n", "2025-05-22 10:43:54.324791 starting: adding observations from tabular output file '['simulation.csv']'\n", "2025-05-22 10:43:54.325015 starting: reading list-style file: /home/martin/repos/pastas-plugins/docs/examples/pestf_sen/temp/simulation.csv\n", "2025-05-22 10:43:54.328622 finished: reading list-style file: /home/martin/repos/pastas-plugins/docs/examples/pestf_sen/temp/simulation.csv took: 0:00:00.003607\n", "2025-05-22 10:43:54.338682 starting: building insfile for tabular output file simulation.csv\n", "2025-05-22 10:43:54.355475 finished: building insfile for tabular output file simulation.csv took: 0:00:00.016793\n", "2025-05-22 10:43:54.356444 starting: adding observation from instruction file '/home/martin/repos/pastas-plugins/docs/examples/pestf_sen/temp/simulation.csv.ins'\n", "2025-05-22 10:43:54.372230 finished: adding observation from instruction file '/home/martin/repos/pastas-plugins/docs/examples/pestf_sen/temp/simulation.csv.ins' took: 0:00:00.015786\n", "2025-05-22 10:43:54.373990 finished: adding observations from tabular output file '['simulation.csv']' took: 0:00:00.049199\n", "2025-05-22 10:43:54.377013 finished: adding observations from output file simulation.csv took: 0:00:00.052471\n", "2025-05-22 10:43:54.379744 WARNING: add_py_function() command: run() is not being called directly\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "/home/martin/repos/pyemu/pyemu/logger.py:100: PyemuWarning: 2025-05-22 10:43:54.379744 WARNING: add_py_function() command: run() is not being called directly\n", "\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "noptmax:0, npar_adj:3, nnz_obs:300\n", "noptmax:1, npar_adj:3, nnz_obs:300\n", "noptmax:1, npar_adj:3, nnz_obs:300\n", "\n", "\n", " pestpp-sen: a tool for global sensitivity analysis\n", "\n", " by The PEST++ Development Team\n", "\n", "\n", "version: 5.2.16\n", "binary compiled on Dec 1 2024 at 10:51:08\n", "\n", "started at 05/22/25 10:43:54\n", "...processing command line: ' ./pestpp-sen pest.pst /h :4005'\n", "...using panther run manager in master mode using port 4005\n", "\n", "using control file: \"pest.pst\"\n", "in directory: \"/home/martin/repos/pastas-plugins/docs/examples/pestf_sen/temp\"\n", "on host: \"VonkXPS15\"\n", "\n", "processing control file pest.pst\n", "\n", "\n", ":~-._ _.-~:\n", ": :.~^o._ ________---------________ _.o^~.:.:\n", " : ::.`?88booo~~~.::::::::...::::::::::::..~~oood88P'.::.:\n", " : ::: `?88P .:::.... ........:::::. ?88P' :::. :\n", " : :::. `? .::. . ...........:::. P' .:::. :\n", " : ::: ... .. ... .. .::::......::. :::. :\n", " ` :' .... .. .:::::. . ..:::::::....:::. `: .'\n", " :.. ____:::::::::. . . ....:::::::::____ ... :\n", " :... `:~ ^~-:::::.. .........:::::-~^ ~::.::::\n", " `.::. `\\ (8) \\b:::..::.:.:::::::d/ (8) /'.::::'\n", " ::::. ~-._v |b.::::::::::::::d| v_.-~..:::::\n", " `.:::::... ~~^?888b..:::::::::::d888P^~...::::::::'\n", " `.::::::::::....~~~ .:::::::::~~~:::::::::::::::'\n", " `..::::::::::: . ....:::: ::::::::::::,'\n", " `. .::::::: . .::::. ::::::::'.'\n", " `._ .::: . :::::. :::::_.'\n", " `-. : . ::::: :,-'\n", " :. :___ .:::___ .::\n", " ..--~~~~--:+::. ~~^?b..:::dP^~~.::++:--~~~~--..\n", " ___....--`+:::. `~8~' .:::+'--....___\n", " ~~ __..---`_=:: ___gd8bg___ :==_'---..__ ~~\n", " -~~~ _.--~~`-.~~~~~~~~~~~~~~~,-' ~~--._ ~~~-\n", "\n", "\n", " starting PANTHER master...\n", "\n", "IP addresses:\n", " 0.0.0.0:4005 (IPv4)\n", "\n", "PANTHER master listening on socket: 0.0.0.0:4005 (IPv4)\n", "\n", "using control file: \"pest.pst\"\n", "\n", "Note: only non-zero weighted observations contribute to\n", " the phi and group phi sensitivity metrics. Please\n", " make sure this is what you want...\n", "\n", "\n", "Building model run parameter sets...\n", "\n", "Performing model runs...\n", " running model 16 times\n", " starting at 05/22/25 10:43:54\n", "\n", " waiting for agents to appear...\n", "\n", "\n", "PANTHER progress\n", " avg = average model run time in minutes\n", " runs(C = completed | F = failed | T = timed out)\n", " agents(R = running | W = waiting | U = unavailable)\n", "--------------------------------------------------------------------------------\n", "2025-05-22 10:43:55.175610 : trying to connect to localhost:4005...\n", "2025-05-22 10:43:55.192563 : trying to connect to localhost:4005...\n", "2025-05-22 10:43:55.215713 : trying to connect to localhost:4005...\n", "2025-05-22 10:43:55.224188 : trying to connect to localhost:4005...\n", "2025-05-22 10:43:55.250394 : trying to connect to localhost:4005...\n", "2025-05-22 10:43:55.270683 : trying to connect to localhost:4005...\n", "2025-05-22 10:43:55.294529 : trying to connect to localhost:4005...\n", "2025-05-22 10:43:55.324636 : trying to connect to localhost:4005...\n", "2025-05-22 10:43:55.441099 : connected to localhost:4005\n", "2025-05-22 10:43:55.449900 : connected to localhost:4005\n", "2025-05-22 10:43:55.473354 : connected to localhost:4005\n", "2025-05-22 10:43:55.486236 : connected to localhost:4005\n", "2025-05-22 10:43:55.508256 : connected to localhost:4005\n", "2025-05-22 10:43:55.528148 : connected to localhost:4005\n", "2025-05-22 10:43:55.551553 : connected to localhost:4005\n", "2025-05-22 10:43:55.582018 : connected to localhost:4005\n", "05/22 10:43:57 remaining file transfers: 0 \n", "\n", " 16 runs complete : 0 runs failed\n", " 0.00534 avg run time (min) : 0.0446 run mgr time (min)\n", " 8 agents connected\n", "\n", "\n", "Calculating sensitivities...\n", "\n", "par_name:PNAME:P_INST:0_PTYPE:GR_USECOL:OPTIMAL_PSTYLE:D_PARNAMES:PEX_G\n", "PNAME:P_INST:0_PTYPE:GR_USECOL:OPTIMAL_PSTYLE:D_PARNAMES:PEX_G\n", "\n", "par_name:PNAME:P_INST:0_PTYPE:GR_USECOL:OPTIMAL_PSTYLE:D_PARNAMES:PEX_A\n", "PNAME:P_INST:0_PTYPE:GR_USECOL:OPTIMAL_PSTYLE:D_PARNAMES:PEX_A\n", "\n", "par_name:PNAME:P_INST:0_PTYPE:GR_USECOL:OPTIMAL_PSTYLE:D_PARNAMES:CONSTANT_D\n", "PNAME:P_INST:0_PTYPE:GR_USECOL:OPTIMAL_PSTYLE:D_PARNAMES:CONSTANT_D\n", "\n", "par_name:\n", "\n", "\n", "par_name:PNAME:P_INST:0_PTYPE:GR_USECOL:OPTIMAL_PSTYLE:D_PARNAMES:PEX_G\n", "PNAME:P_INST:0_PTYPE:GR_USECOL:OPTIMAL_PSTYLE:D_PARNAMES:PEX_G\n", "\n", "par_name:PNAME:P_INST:0_PTYPE:GR_USECOL:OPTIMAL_PSTYLE:D_PARNAMES:PEX_A\n", "PNAME:P_INST:0_PTYPE:GR_USECOL:OPTIMAL_PSTYLE:D_PARNAMES:PEX_A\n", "\n", "par_name:PNAME:P_INST:0_PTYPE:GR_USECOL:OPTIMAL_PSTYLE:D_PARNAMES:CONSTANT_D\n", "PNAME:P_INST:0_PTYPE:GR_USECOL:OPTIMAL_PSTYLE:D_PARNAMES:CONSTANT_D\n", "\n", "par_name:\n", "\n", "\n", "par_name:PNAME:P_INST:0_PTYPE:GR_USECOL:OPTIMAL_PSTYLE:D_PARNAMES:PEX_G\n", "PNAME:P_INST:0_PTYPE:GR_USECOL:OPTIMAL_PSTYLE:D_PARNAMES:PEX_G\n", "\n", "par_name:PNAME:P_INST:0_PTYPE:GR_USECOL:OPTIMAL_PSTYLE:D_PARNAMES:PEX_A\n", "PNAME:P_INST:0_PTYPE:GR_USECOL:OPTIMAL_PSTYLE:D_PARNAMES:PEX_A\n", "\n", "par_name:PNAME:P_INST:0_PTYPE:GR_USECOL:OPTIMAL_PSTYLE:D_PARNAMES:CONSTANT_D\n", "PNAME:P_INST:0_PTYPE:GR_USECOL:OPTIMAL_PSTYLE:D_PARNAMES:CONSTANT_D\n", "\n", "par_name:\n", "\n", "\n", "par_name:PNAME:P_INST:0_PTYPE:GR_USECOL:OPTIMAL_PSTYLE:D_PARNAMES:PEX_G\n", "PNAME:P_INST:0_PTYPE:GR_USECOL:OPTIMAL_PSTYLE:D_PARNAMES:PEX_G\n", "\n", "par_name:PNAME:P_INST:0_PTYPE:GR_USECOL:OPTIMAL_PSTYLE:D_PARNAMES:PEX_A\n", "PNAME:P_INST:0_PTYPE:GR_USECOL:OPTIMAL_PSTYLE:D_PARNAMES:PEX_A\n", "\n", "par_name:PNAME:P_INST:0_PTYPE:GR_USECOL:OPTIMAL_PSTYLE:D_PARNAMES:CONSTANT_D\n", "PNAME:P_INST:0_PTYPE:GR_USECOL:OPTIMAL_PSTYLE:D_PARNAMES:CONSTANT_D\n", "\n", "\n", "writing output files\n", "\n", "\n", "pestpp-sen analysis complete...\n", "started at 05/22/25 10:43:54\n", "finished at 05/22/25 10:43:57\n", "took 0.0333333 minutes\n" ] } ], "source": [ "ml_sen = ml.copy()\n", "ml_sen.name = \"Pestsen\"\n", "solver = psp.PestSenSolver(\n", " exe_name=\"bin/pestpp-sen\",\n", " model_ws=Path(\"pestf_sen/model\"),\n", " temp_ws=Path(\"pestf_sen/temp\"),\n", " master_ws=Path(\"pestf_sen/master\"),\n", " noptmax=1,\n", " port_number=4005,\n", ")\n", "ml_sen.solver = solver\n", "ml_sen.solver.set_model(ml_sen)\n", "ml_sen.solver.start()" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
n_samplessen_meansen_mean_abssen_std_dev
pex_A4-2125350.002125350.002686220.00
pex_a4-174948.00174948.00349897.00
constant_d41158.041369.952072.42
\n", "
" ], "text/plain": [ " n_samples sen_mean sen_mean_abs sen_std_dev\n", "pex_A 4 -2125350.00 2125350.00 2686220.00\n", "pex_a 4 -174948.00 174948.00 349897.00\n", "constant_d 4 1158.04 1369.95 2072.42" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df = pd.read_csv(\n", " ml_sen.solver.master_ws / \"pest.msn\", index_col=\"parameter_name\"\n", ").set_index(ml.parameters.index)\n", "df.head()" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "data": { "image/png": "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VQAAAAagVAEAABiAUgUAAGAAShUAAIABDL33H6qvQ4cOacmSJZozZ47ZUQDgrlK7dm1ZLJZybXvhwoU7nAa3QqnCTeXn52vVqlVasmSJdu7cqZCQEEoVHFJqaqrWrFmjkydPqrCw0GbdunXrTEoFlM/8+fOt/z5//rxmzpypXr16qVOnTpKkHTt26O9//7tefvllkxLiOmZURxnbtm3TkiVLtGbNGl29elXjxo3TiBEjFBwcbHY0oMJWrVqlIUOGqFevXvr888/Vs2dPpaenKzMzU/369dOyZcvMjgiU26OPPqqoqKgyt4J799139eWXX2r9+vXmBIMkxlTh/2VlZenNN99UcHCwHnvsMfn6+mrLli1ycnLSsGHDKFRwWLNmzdLbb7+tTz75RK6urlqwYIEOHz6sxx9/XE2aNDE7HlAhf//739W7d+8yy3v37q0vv/zShET4OUoVJElNmzbVgQMHtGDBAv3www+aN2+ewsPDzY4F3LZjx47p4YcfliS5uroqPz9fFotF48aN0x//+EeT0wEVU7duXX388cdlln/88ceqW7euCYnwc4ypgqSfStU333yjJk2aqGnTppyZQrVRu3ZtXb58WZLUqFEj/eMf/1BoaKhycnJ05coVk9MBFTNjxgyNGDFCW7ZsUYcOHSRJKSkp2rRpkxYvXmxyOlCqIEk6fPiwdSxVRESEgoKC9NRTT0lSuX91Atijrl276osvvlBoaKgGDBigF154QV999ZW++OIL9ejRw+x4QIU8/fTTatOmjRYuXGj9kUWbNm30zTffWEsWzMNAdZSRl5enP//5z1q2bJl27typBx98UIMGDVLfvn1Vv359s+MBFXLhwgX9+OOPCggIUElJid58801t375drVq10ksvvaTatWubHREw3BtvvKHnnntOvr6+Zke5q1CqcEvX56f68MMPdeHCBV27ds3sSMAdwUEI1Ym3t7f27dunFi1amB3lrsJAddxSmzZtNGfOHP3www9avXq1dfkbb7yhnJwc84IBBps1axYTJ6La4HyJOShVKBcXFxf179/f+pwDEKobDkIAbhelCpXCAQgAAFuUKgAAAANQqgAAAAxAqQIAoJrp0qWLPDw8zI5x16FUAYA4CMExODs7Kysrq8zy8+fPy9nZ2fp848aNatiwYVVGgyhVqCQOQHAUiYmJN1xeVFSkKVOmWJ9z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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "image/png": "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cAUEBKhgwYJ64IEHtHr1akl/nEi/bt26WWsuJenQoUPy8/PTlClTsp1h8uTJ6t69u3r27Jmj2yH73nrrLX3++eeKiIhQkSJF8v34FFkAAJAnvv/+e3l4eGjjxo0aN26cPv/8c02aNEmSNGjQIEVFRWnmzJnasWOHunTporZt2+rAgQPy8fHR9OnT9f3332vhwoXKyMhQjx491Lp1a/Xp0ydbx758+bJmz56ddbv4+Hj997//zcuH6zIyMzN19epVSZLFYtErr7yi8uXLG8nC6bcAAECeqFChgsaOHSuLxaKaNWtq586dGjt2rNq0aaOpU6cqJiZG5cqVkyQNHz5cS5cu1dSpU/XRRx+pYcOGGjVqlPr166du3brp2LFjCg8Pz/axZ86cqerVq6tu3bqSpG7dumny5Ml6+OGH8+SxupI33nhDu3fv1syZM1WoUCGjWZiRBQAAeaJZs2bXvPGnefPmOnDggHbu3KmMjAzVqFFDhQoVyvpas2aNDh06lLX/sGHDVKNGDY0fP15TpkxR8eLFs33sKVOmqEePHlnbPXr00OzZs3X58uXceXAuasKECfrkk0+0ZMkSrVy50nQcZmQBAEAu2r9fqlHjlrskJibK3d1dmzdvlru7+zXX/XWGLy4uTvv375e7u7sOHDigtm3bZivCnj17tGHDBm3cuFGvv/561uUZGRmaOXNmvp3j1NksWrRIL7/8siTpgw8+UIcOHQwnosgCAIDcMmeO1KWLNHu2JOm333675uoNGzaoevXqatSokTIyMhQXF3fLP/X36dNH9erVU9++fdW/f3+1atVKtWvXvm2MyZMnq2XLlpowYcI1l0+dOlWTJ0+myN6B3377Td26dVNmZqb69eunN99803QkSRRZAACQGzIzpbfe+uP7t9+WSpdWTEyMhg4dqgEDBmjLli366quvNGbMGNWoUUPPPPOMevXqpTFjxqhRo0Y6e/asVq5cqfr16ys4OFgTJkxQVFSUduzYoQoVKmjJkiV65plntGHDhlue4ik9PV0//PCD3n//fd17773XXNevXz99/vnn2r17d9baWdzeoUOHFBISouTkZFmtVn3zzTf5eq7YW2GNLAAAuHtz50rR0X98v2+fdPasevXqpeTkZN1///0aOHCgBg8enHVKralTp6pXr14aNmyYatasqdDQUP3++++qWLGi9u3bp1df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cOXKlfXbb7/p6NGjOnfunDIzM1W9enVt2rRJy5Yt0/79+/X222/r999/z/HDrFy5stauXauTJ0/q3Llzt93/5Zdf1tKlS/XZZ5/pwIEDGj9+POtjAQBAjhktsmlpadq8ebNatWqVdZmbm5tatWqlqKioG94mKirqmv0lqU2bNjfd36i5c6UDB1SyZEn9191d84YP1+uvv6533nlHtWvXVteuXRUXFydfX18tW7ZMFy5cUNOmTdW5c2c9/vjjOSrnRYsW1bx58/TYY4+pdu3amjhxon788UfVrVtXkjR8+HC5u7urTp06KlmypGJiYjRgwAB16tRJXbt21QMPPKDz58/rxRdfzPHDfP/993X06FFVrVpVJUuWvO3+zZo103fffadx48apQYMGWr58ud56660cHxcAALg2i81ms5k6+KlTpxQQEKD169df82af1157TWvWrLnuz8/SH3/G/v777/X0009nXfb1119r5MiROnPmzHX7p6amKjU1NWs7ISFBFSpU0Llz51S4cOFcfkR/kZmp+CZN5HvmjFZMmqTW/frJMyBA+u03yc34RDj+Ij09XStWrFDr1q2vWw8M+8AY2TfGx/4xRvaPMfqfhIQElShRQvHx8bftak5/+q3Ro0dfc4qpPy1fvly+vr55dty9e/dq1NGjGjhwoFpIWjFp0h9X8Cd0u7VixQrTEXAbjJF9Y3zsH2Nk/xgjZeusS38yWmRLlCghd3f362ZSz5w5c9NzkpYpUyZH+7/xxhsaOnRo1vafM7JPPPFEns3IRu/bpz5PPqmkjAztGztWzZs31xN9+8ozNVWqVs3pZ2VDQkK0bt26G173+uuva8SIEfmc6Nb4X7D9Y4zsG+Nj/xgj+8cY/U9CQkK29zVaZL28vNSkSROtXLlSoaGhkv74GNeVK1de96lWf2revLlWrlypIUOGZF22YsWKm56H1NvbW97e3tdd7unpmSe/KGfOnFF7q1UXMjL0gKRp7u5abbHIMzlZnsnJ0vbt0u7dUuPGuX5sezF58mQlJyff8Dp/f3+7fYLm1e8Ecg9jZN8YH/vHGNk/xuj6037eivGlBUOHDlXv3r1133336f7779cXX3yhpKQkPffcc5KkXr16KSAgQKNHj5YkDR48WI888ojGjBmj4OBgzZw5U5s2bdK3335r8mFIkpKSktSuXTsdOXlSVcuV0+KPP5Zv4cKSzSbNnClZLFLBglLDhqaj5qmAgADTEQAAgAswXmS7du2qs2fP6p133lFsbKwaNmyopUuXZp12KiYmRm5/+TN8ixYtNGPGDL311lv65z//qerVq2vBggW69957TT0ESdLVq1fVtWtXbdq0ScWLF1fk6tUqWb260tPTpYgIyWqVXPx/WAAAALnJeJGVpEGDBt10KcHq1auvu6xLly7q0qVLHqfKmbCwMC1ZskQ+Pj5avHixqlevbjoSAACAU7OLIusM+vTpo7179+qhhx666XpdAAAA5B6KbC5xc3PTmDFjTMcAAABwGc57Dqh8sGrVKj333HPXfOACAAAA8gczsndo165d6tixo+Lj41WtWjW9+eabpiMBAAC4FGZk78DJkycVFBSk+Ph4Pfzwwxo2bJjpSAAAAC6HIptDCQkJCgoK0vHjx1WrVi0tWLBAPj4+pmMBAAC4HIpsDqSnp6tz587asWOHSpcurcjISPn7+5uOBQAA4JIosjkwcOBArVixQgULFtSSJUtUuXJl05EAAABcFkU2B7p3767ixYtr1qxZatKkiek4AAAALo2zFuRAYGCgjhw5Ij8/P9NRAAAAXB4zsrexcuVK7d69O2ubEgsAAGAfKLK3sHXrVoWGhurBBx/Url27TMcBAADAX1Bkb+LYsWMKCgpSYmKi7rvvPtWoUcN0JAAAAPwFRfYGLl68KKvVqtjYWNWrV09z586Vl5eX6VgAAAD4C4rs36Smpqpjx47au3evAgICFBERoSJFipiOBQAAgL+hyP5FZmamnn32Wa1Zs0aFCxdWRESEypcvbzoWAAAAboAi+xfJycmKjY2Vh4eH5s2bp/r165uOBAAAgJvgPLJ/UbBgQS1dulQbNmzQI488YjoOAAAAboEZWUlHjhzJ+t7b25sSCwAA4ABcvsj+9ttvqlu3roYOHarMzEzTcQAAAJBNLl1kDx06pJCQECUnJ2vfvn0UWQAAAAfiskX2/PnzslqtOnv2rBo3bqxZs2bJw4MlwwAAAI7CZYts165ddeDAAVWqVElLlixRoUKFTEcCAABADrhskf39999VrFgxRUZGqkyZMqbjAAAAIIdc7m/pNptNkuTh4aHp06crICBACQkJeXa89PR0XblyRQkJCfL09Myz4+DOMUb2jzGyb4yP/WOM7B9j9D9/9rI/O9utWGzZ2cuJnDhxQhUqVDAdAwAAALdw/Pjx237CqssV2czMTJ06dUp+fn6yWCx5fryEhARVqFBBx48fV+HChfP8eMg5xsj+MUb2jfGxf4yR/WOM/sdms+ny5csqV66c3NxuvQrW5ZYWuLm53bbd54XChQu7/C+mvWOM7B9jZN8YH/vHGNk/xugPRYoUydZ+LvtmLwAAADg2iiwAAAAcEkU2j3l7e+vdd9+Vt7e36Si4CcbI/jFG9o3xsX+Mkf1jjO6My73ZCwAAAM6BGVkAAAA4JIosAAAAHBJFFgAAAA6JIgsAAACHRJHNBRMmTFDlypXl4+OjBx54QBs3brzl/rNnz1atWrXk4+OjevXqKSIiIp+Suq6cjFFYWJgsFss1Xz4+PvmY1rWsXbtWISEhKleunCwWixYsWHDb26xevVqNGzeWt7e3qlWrprCwsDzP6cpyOkarV6++7jlksVgUGxubP4FdzOjRo9W0aVP5+fmpVKlSCg0NVXR09G1vx2tR/rmTMeK1KHsosnfpp59+0tChQ/Xuu+9qy5YtatCggdq0aaO4uLgb7r9+/Xo9/fTT6tu3r7Zu3arQ0FCFhoZq165d+ZzcdeR0jKQ/Plnl9OnTWV/Hjh3Lx8SuJSkpSQ0aNNCECROytf+RI0cUHBysRx99VNu2bdOQIUPUr18/LVu2LI+Tuq6cjtGfoqOjr3kelSpVKo8SurY1a9Zo4MCB2rBhg1asWKH09HQ98cQTSkpKuulteC3KX3cyRhKvRdliw125//77bQMHDszazsjIsJUrV842evToG+7/1FNP2YKDg6+57IEHHrANGDAgT3O6spyO0dSpU21FihTJp3T4K0m2+fPn33Kf1157zVa3bt1rLuvatautTZs2eZgMf8rOGK1atcomyXbx4sV8yYRrxcXF2STZ1qxZc9N9eC0yKztjxGtR9jAjexfS0tK0efNmtWrVKusyNzc3tWrVSlFRUTe8TVRU1DX7S1KbNm1uuj/uzp2MkSQlJiaqUqVKqlChgjp06KDdu3fnR1xkA88hx9GwYUOVLVtWrVu31q+//mo6jsuIj4+XJPn7+990H55HZmVnjCRei7KDInsXzp07p4yMDJUuXfqay0uXLn3TtWCxsbE52h93507GqGbNmpoyZYoWLlyo//znP8rMzFSLFi104sSJ/IiM27jZcyghIUHJycmGUuGvypYtq4kTJ2ru3LmaO3euKlSooMDAQG3ZssV0NKeXmZmpIUOG6MEHH9S999570/14LTInu2PEa1H2eJgOANib5s2bq3nz5lnbLVq0UO3atfXvf/9bH3zwgcFkgGOoWbOmatasmbXdokULHTp0SGPHjtUPP/xgMJnzGzhwoHbt2qV169aZjoKbyO4Y8VqUPczI3oUSJUrI3d1dZ86cuebyM2fOqEyZMje8TZkyZXK0P+7OnYzR33l6eqpRo0Y6ePBgXkREDt3sOVS4cGEVKFDAUCrczv33389zKI8NGjRI4eHhWrVqlcqXL3/LfXktMiMnY/R3vBbdGEX2Lnh5ealJkyZauXJl1mWZmZlauXLlNf+L+qvmzZtfs78krVix4qb74+7cyRj9XUZGhnbu3KmyZcvmVUzkAM8hx7Rt2zaeQ3nEZrNp0KBBmj9/vn755RdVqVLltrfheZS/7mSM/o7Xopsw/W4zRzdz5kybt7e3LSwszLZnzx7b888/bytatKgtNjbWZrPZbD179rSNGDEia/9ff/3V5uHhYfvss89se/futb377rs2T09P286dO009BKeX0zEaOXKkbdmyZbZDhw7ZNm/ebOvWrZvNx8fHtnv3blMPwaldvnzZtnXrVtvWrVttkmyff/65bevWrbZjx47ZbDabbcSIEbaePXtm7X/48GGbr6+v7dVXX7Xt3bvXNmHCBJu7u7tt6dKlph6C08vpGI0dO9a2YMEC24EDB2w7d+60DR482Obm5mb7+eefTT0Ep/bCCy/YihQpYlu9erXt9OnTWV9XrlzJ2ofXIrPuZIx4Lcoeimwu+Oqrr2wVK1a0eXl52e6//37bhg0bsq575JFHbL17975m/1mzZtlq1Khh8/LystWtW9e2ZMmSfE7senIyRkOGDMnat3Tp0ragoCDbli1bDKR2DX+equnvX3+OSe/evW2PPPLIdbdp2LChzcvLy3bPPffYpk6dmu+5XUlOx+jjjz+2Va1a1ebj42Pz9/e3BQYG2n755Rcz4V3AjcZG0jXPC16LzLqTMeK1KHssNpvNln/zvwAAAEDuYI0sAAAAHBJFFgAAAA6JIgsAAACHRJEFAACAQ6LIAgAAwCFRZAEAAOCQKLIAAABwSBRZAAAAZNvatWsVEhKicuXKyWKxaMGCBTm+D5vNps8++0w1atSQt7e3AgIC9OGHH+b4fjxyfAsAAAC4rKSkJDVo0EB9+vRRp06d7ug+Bg8erOXLl+uzzz5TvXr1dOHCBV24cCHH98MnewGAk7HZbLJYLHrvvff03nvvZW0DQG6zWCyaP3++QkNDsy5LTU3Vm2++qR9//FGXLl3Svffeq48//liBgYGSpL1796p+/fratWuXataseVfHZ2kBADiZb775Rt9++62SkpI0YsQIrV271nQkAC5k0KBBioqK0syZM7Vjxw516dJFbdu21YEDByRJixcv1j333KPw8HBVqVJFlStXVr9+/e5oRpYiCwBO5sUXX1R8fLy+/PJLhYSE6JFHHjEdCYCLiImJ0dSpUzV79mw9/PDDqlq1qoYPH66HHnpIU6dOlSQdPnxYx44d0+zZszVt2jSFhYVp8+bN6ty5c46PxxpZAHAyEydOVJEiRfTyyy9r8eLFyszM1MMPP2w6FgAXsHPnTmVkZKhGjRrXXJ6amqrixYtLkjIzM5Wamqpp06Zl7Td58mQ1adJE0dHROVpuQJEFACczYMCA69bIAkB+SExMlLu7uzZv3ix3d/drritUqJAkqWzZsvLw8Lim7NauXVvSHzO6OSmyLC0AAAexbt06eXp6KiUlJeuyo0ePymKx6NixY1mX/fnGrvfee++abQDIa40aNVJGRobi4uJUrVq1a77KlCkjSXrwwQd19epVHTp0KOt2+/fvlyRVqlQpR8djRhYAHMS2bdtUu3Zt+fj4ZF22detWFStWLMf/+APAnUpMTNTBgwezto8cOaJt27bJ399fNWrU0DPPPKNevXppzJgxatSokc6ePauVK1eqfv36Cg4OVqtWrdS4cWP16dNHX3zxhTIzMzVw4EC1bt36uiUJt8OMLAA4iO3bt6tRo0bXXLZt2zY1aNDAUCIArmjTpk1q1KhR1r9HQ4cOVaNGjfTOO+9IkqZOnapevXpp2LBhqlmzpkJDQ/X777+rYsWKkiQ3NzctXrxYJUqUUMuWLRUcHKzatWtr5syZOc7CeWQBwEE0bdpU3bt31yuvvJJ1Wfv27VW1alWNHTvWYDIAMIMZWQBwABkZGdq1a9d1M7JbtmxRw4YNzYQCAMMosgDgAKKjo5WSkqJy5cplXRYVFaWTJ09SZAG4LIosADiAbdu2SZK++uorHThwQJGRkerVq5ckKS0tzWAyADCHIgsADmDbtm1q06aNDh8+rHr16unNN9/UyJEjVbhwYX355Zem4wGAEbzZCwAcQJs2bdS0aVONGjXKdBQAsBvMyAKAA9i+fbvq1atnOgYA2BWKLADYudjYWJ05c4YiCwB/w9ICAAAAOCRmZAEAAOCQKLIAAABwSBRZAAAAOCSKLAAAABwSRRYAAAAOiSILAAAAh0SRBQAAgEOiyAIAAMAhUWQBAADgkCiyAAAAcEgUWQAAADgkiiwAAAAcEkUWAAAADun/AK00jZO6Rv7cAAAAAElFTkSuQmCC", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "df = df.loc[df.sen_mean_abs > 1e-6, :]\n", "df.loc[:, [\"sen_mean_abs\", \"sen_std_dev\"]].plot(kind=\"bar\", figsize=(7, 4))\n", "# ax = plt.gca()\n", "# ax.set_ylim(1,ax.get_ylim()[1]*1.1)\n", "plt.yscale(\"log\")\n", "fig, ax = plt.subplots(1, 1, figsize=(7.0, 8))\n", "tmp_df = df\n", "ax.scatter(tmp_df.sen_mean_abs, tmp_df.sen_std_dev, marker=\"^\", s=20, c=\"r\")\n", "tmp_df = tmp_df.iloc[:8]\n", "for x, y, n in zip(tmp_df.sen_mean_abs, tmp_df.sen_std_dev, tmp_df.index):\n", " ax.text(x, y, n)\n", "mx = max(ax.get_xlim()[1], ax.get_ylim()[1])\n", "mn = min(ax.get_xlim()[0], ax.get_ylim()[0])\n", "ax.plot([mn, mx], [mn, mx], \"k--\")\n", "ax.set_ylim(mn, mx)\n", "ax.set_xlim(mn, mx)\n", "ax.grid()\n", "ax.set_ylabel(\"$\\\\sigma$\")\n", "ax.set_xlabel(\"$\\\\mu^*$\")\n", "plt.tight_layout()" ] } ], "metadata": { "kernelspec": { "display_name": ".venv", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.13.1" } }, "nbformat": 4, "nbformat_minor": 2 }