{ "cells": [ { "metadata": {}, "cell_type": "markdown", "source": [ "# Exercise 2: Using best fit methods in gwrefpy\n", "\n", "This notebook introduces how to use the best fit method for a large `gwrefpy` model. \n", "\n", "This notebook can be downloaded from the source code [here](https://github.com/andersretznerSGU/gwrefpy/blob/main/docs/tutorial/exercises/1_exerciese1.ipynb).\n", "\n", "In this exercise, you will:\n", "1. Import the `gwrefpy` package and load the model (already done for you)\n", "5. Fit the model\n", "6. Plot the results" ], "id": "da019a3e0a3820ec" }, { "metadata": {}, "cell_type": "markdown", "source": "## 1. Import the gwrefpy package and load the data", "id": "402830e86ed13f04" }, { "cell_type": "code", "id": "initial_id", "metadata": { "collapsed": true, "ExecuteTime": { "end_time": "2025-09-23T18:58:58.664626Z", "start_time": "2025-09-23T18:58:58.585465Z" } }, "source": [ "import gwrefpy as gr\n", "\n", "model = gr.Model('large_example.gwref') # Load an example model for the package\n", "model.fits = [] # Clear any fits that may be present in the example model\n", "model.wells_summary()" ], "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Model 'Large Example' loaded from 'large_example.gwref'.\n" ] }, { "data": { "text/plain": [ " name well_type data_points start_date end_date mean_level \\\n", "0 01OBS observation 112 2020-01-01 2020-04-21 11.753155 \n", "1 02OBS observation 80 2020-01-01 2020-03-20 12.931890 \n", "2 03OBS observation 95 2020-01-01 2020-04-04 14.096635 \n", "3 04OBS observation 93 2020-01-01 2020-04-02 15.277157 \n", "4 05OBS observation 105 2020-01-01 2020-04-14 16.442842 \n", "5 06OBS observation 82 2020-01-01 2020-03-22 17.621488 \n", "6 07OBS observation 116 2020-01-01 2020-04-25 18.796522 \n", "7 08OBS observation 81 2020-01-01 2020-03-21 19.976834 \n", "8 09OBS observation 95 2020-01-01 2020-04-04 21.156969 \n", "9 10OBS observation 100 2020-01-01 2020-04-09 22.316877 \n", "10 11OBS observation 104 2020-01-01 2020-04-13 23.514971 \n", "11 12OBS observation 88 2020-01-01 2020-03-28 24.666201 \n", "12 01REF reference 112 2020-01-01 2020-04-21 8.759759 \n", "13 02REF reference 80 2020-01-01 2020-03-20 9.620159 \n", "14 03REF reference 95 2020-01-01 2020-04-04 10.494114 \n", "15 04REF reference 93 2020-01-01 2020-04-02 11.375509 \n", "16 05REF reference 105 2020-01-01 2020-04-14 12.253849 \n", "17 06REF reference 82 2020-01-01 2020-03-22 13.129146 \n", "18 07REF reference 116 2020-01-01 2020-04-25 13.999060 \n", "19 08REF reference 81 2020-01-01 2020-03-21 14.880381 \n", "20 09REF reference 95 2020-01-01 2020-04-04 15.745920 \n", "21 10REF reference 100 2020-01-01 2020-04-09 16.625979 \n", "22 11REF reference 104 2020-01-01 2020-04-13 17.500392 \n", "23 12REF reference 88 2020-01-01 2020-03-28 18.375225 \n", "\n", " latest_value latest_date latitude longitude elevation best_fit_ref_well \\\n", "0 11.562414 2020-04-21 None None None None \n", "1 12.925313 2020-03-20 None None None None \n", "2 14.106713 2020-04-04 None None None None \n", "3 15.287510 2020-04-02 None None None None \n", "4 16.579736 2020-04-14 None None None None \n", "5 17.655653 2020-03-22 None None None None \n", "6 18.716346 2020-04-25 None None None None \n", "7 20.053553 2020-03-21 None None None None \n", "8 20.993342 2020-04-04 None None None None \n", "9 22.388860 2020-04-09 None None None None \n", "10 23.588313 2020-04-13 None None None None \n", "11 24.744872 2020-03-28 None None None None \n", "12 8.747352 2020-04-21 None None None NaN \n", "13 9.607570 2020-03-20 None None None NaN \n", "14 10.446796 2020-04-04 None None None NaN \n", "15 11.427661 2020-04-02 None None None NaN \n", "16 12.174917 2020-04-14 None None None NaN \n", "17 13.109889 2020-03-22 None None None NaN \n", "18 14.108201 2020-04-25 None None None NaN \n", "19 14.838350 2020-03-21 None None None NaN \n", "20 15.777444 2020-04-04 None None None NaN \n", "21 16.671081 2020-04-09 None None None NaN \n", "22 17.443029 2020-04-13 None None None NaN \n", "23 18.342771 2020-03-28 None None None NaN \n", "\n", " best_rmse num_fits avg_rmse \n", "0 None NaN NaN \n", "1 None NaN NaN \n", "2 None NaN NaN \n", "3 None NaN NaN \n", "4 None NaN NaN \n", "5 None NaN NaN \n", "6 None NaN NaN \n", "7 None NaN NaN \n", "8 None NaN NaN \n", "9 None NaN NaN \n", "10 None NaN NaN \n", "11 None NaN NaN \n", "12 NaN 0.0 None \n", "13 NaN 0.0 None \n", "14 NaN 0.0 None \n", "15 NaN 0.0 None \n", "16 NaN 0.0 None \n", "17 NaN 0.0 None \n", "18 NaN 0.0 None \n", "19 NaN 0.0 None \n", "20 NaN 0.0 None \n", "21 NaN 0.0 None \n", "22 NaN 0.0 None \n", "23 NaN 0.0 None " ], "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", " \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", " \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", " \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", " \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", " \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", " \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", " \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", " \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", " \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", " \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", " \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", " \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", "
namewell_typedata_pointsstart_dateend_datemean_levellatest_valuelatest_datelatitudelongitudeelevationbest_fit_ref_wellbest_rmsenum_fitsavg_rmse
001OBSobservation1122020-01-012020-04-2111.75315511.5624142020-04-21NoneNoneNoneNoneNoneNaNNaN
102OBSobservation802020-01-012020-03-2012.93189012.9253132020-03-20NoneNoneNoneNoneNoneNaNNaN
203OBSobservation952020-01-012020-04-0414.09663514.1067132020-04-04NoneNoneNoneNoneNoneNaNNaN
304OBSobservation932020-01-012020-04-0215.27715715.2875102020-04-02NoneNoneNoneNoneNoneNaNNaN
405OBSobservation1052020-01-012020-04-1416.44284216.5797362020-04-14NoneNoneNoneNoneNoneNaNNaN
506OBSobservation822020-01-012020-03-2217.62148817.6556532020-03-22NoneNoneNoneNoneNoneNaNNaN
607OBSobservation1162020-01-012020-04-2518.79652218.7163462020-04-25NoneNoneNoneNoneNoneNaNNaN
708OBSobservation812020-01-012020-03-2119.97683420.0535532020-03-21NoneNoneNoneNoneNoneNaNNaN
809OBSobservation952020-01-012020-04-0421.15696920.9933422020-04-04NoneNoneNoneNoneNoneNaNNaN
910OBSobservation1002020-01-012020-04-0922.31687722.3888602020-04-09NoneNoneNoneNoneNoneNaNNaN
1011OBSobservation1042020-01-012020-04-1323.51497123.5883132020-04-13NoneNoneNoneNoneNoneNaNNaN
1112OBSobservation882020-01-012020-03-2824.66620124.7448722020-03-28NoneNoneNoneNoneNoneNaNNaN
1201REFreference1122020-01-012020-04-218.7597598.7473522020-04-21NoneNoneNoneNaNNaN0.0None
1302REFreference802020-01-012020-03-209.6201599.6075702020-03-20NoneNoneNoneNaNNaN0.0None
1403REFreference952020-01-012020-04-0410.49411410.4467962020-04-04NoneNoneNoneNaNNaN0.0None
1504REFreference932020-01-012020-04-0211.37550911.4276612020-04-02NoneNoneNoneNaNNaN0.0None
1605REFreference1052020-01-012020-04-1412.25384912.1749172020-04-14NoneNoneNoneNaNNaN0.0None
1706REFreference822020-01-012020-03-2213.12914613.1098892020-03-22NoneNoneNoneNaNNaN0.0None
1807REFreference1162020-01-012020-04-2513.99906014.1082012020-04-25NoneNoneNoneNaNNaN0.0None
1908REFreference812020-01-012020-03-2114.88038114.8383502020-03-21NoneNoneNoneNaNNaN0.0None
2009REFreference952020-01-012020-04-0415.74592015.7774442020-04-04NoneNoneNoneNaNNaN0.0None
2110REFreference1002020-01-012020-04-0916.62597916.6710812020-04-09NoneNoneNoneNaNNaN0.0None
2211REFreference1042020-01-012020-04-1317.50039217.4430292020-04-13NoneNoneNoneNaNNaN0.0None
2312REFreference882020-01-012020-03-2818.37522518.3427712020-03-28NoneNoneNoneNaNNaN0.0None
\n", "
" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "execution_count": 3 }, { "metadata": {}, "cell_type": "markdown", "source": "## 2. Use the best fit method to fit the model", "id": "74d8f6918785d91d" }, { "metadata": {}, "cell_type": "code", "outputs": [], "execution_count": null, "source": "# Use the best fit method here to fit the model", "id": "de002510d9d1a6d1" }, { "metadata": {}, "cell_type": "markdown", "source": "## 3. Plot the results", "id": "2411337ab0ebf279" }, { "metadata": {}, "cell_type": "code", "outputs": [], "execution_count": null, "source": "# Plot the results here", "id": "bbad3bade29c6b91" } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 2 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython2", "version": "2.7.6" } }, "nbformat": 4, "nbformat_minor": 5 }