In [1]:
%pip install dash dash-core-components dash-html-components
Requirement already satisfied: dash in /home/robbiec/Git/pfun-cma-model/.venv/lib/python3.12/site-packages (3.0.4) Collecting dash-core-components Using cached dash_core_components-2.0.0-py3-none-any.whl.metadata (2.9 kB) Requirement already satisfied: dash-html-components in /home/robbiec/Git/pfun-cma-model/.venv/lib/python3.12/site-packages (2.0.0) Requirement already satisfied: Flask<3.1,>=1.0.4 in /home/robbiec/Git/pfun-cma-model/.venv/lib/python3.12/site-packages (from dash) (3.0.3) Requirement already satisfied: Werkzeug<3.1 in /home/robbiec/Git/pfun-cma-model/.venv/lib/python3.12/site-packages (from dash) (3.0.6) Requirement already satisfied: plotly>=5.0.0 in /home/robbiec/Git/pfun-cma-model/.venv/lib/python3.12/site-packages (from dash) (6.1.2) Requirement already satisfied: importlib-metadata in /home/robbiec/Git/pfun-cma-model/.venv/lib/python3.12/site-packages (from dash) (8.7.0) Requirement already satisfied: typing-extensions>=4.1.1 in /home/robbiec/Git/pfun-cma-model/.venv/lib/python3.12/site-packages (from dash) (4.14.0) Requirement already satisfied: requests in /home/robbiec/Git/pfun-cma-model/.venv/lib/python3.12/site-packages (from dash) (2.32.4) Requirement already satisfied: retrying in /home/robbiec/Git/pfun-cma-model/.venv/lib/python3.12/site-packages (from dash) (1.3.4) Requirement already satisfied: nest-asyncio in /home/robbiec/Git/pfun-cma-model/.venv/lib/python3.12/site-packages (from dash) (1.6.0) Requirement already satisfied: setuptools in /home/robbiec/Git/pfun-cma-model/.venv/lib/python3.12/site-packages (from dash) (80.9.0) Requirement already satisfied: Jinja2>=3.1.2 in /home/robbiec/Git/pfun-cma-model/.venv/lib/python3.12/site-packages (from Flask<3.1,>=1.0.4->dash) (3.1.6) Requirement already satisfied: itsdangerous>=2.1.2 in /home/robbiec/Git/pfun-cma-model/.venv/lib/python3.12/site-packages (from Flask<3.1,>=1.0.4->dash) (2.2.0) Requirement already satisfied: click>=8.1.3 in /home/robbiec/Git/pfun-cma-model/.venv/lib/python3.12/site-packages (from Flask<3.1,>=1.0.4->dash) (8.2.1) Requirement already satisfied: blinker>=1.6.2 in /home/robbiec/Git/pfun-cma-model/.venv/lib/python3.12/site-packages (from Flask<3.1,>=1.0.4->dash) (1.9.0) Requirement already satisfied: MarkupSafe>=2.1.1 in /home/robbiec/Git/pfun-cma-model/.venv/lib/python3.12/site-packages (from Werkzeug<3.1->dash) (3.0.2) Requirement already satisfied: narwhals>=1.15.1 in /home/robbiec/Git/pfun-cma-model/.venv/lib/python3.12/site-packages (from plotly>=5.0.0->dash) (1.42.1) Requirement already satisfied: packaging in /home/robbiec/Git/pfun-cma-model/.venv/lib/python3.12/site-packages (from plotly>=5.0.0->dash) (25.0) Requirement already satisfied: zipp>=3.20 in /home/robbiec/Git/pfun-cma-model/.venv/lib/python3.12/site-packages (from importlib-metadata->dash) (3.23.0) Requirement already satisfied: charset_normalizer<4,>=2 in /home/robbiec/Git/pfun-cma-model/.venv/lib/python3.12/site-packages (from requests->dash) (3.4.2) Requirement already satisfied: idna<4,>=2.5 in /home/robbiec/Git/pfun-cma-model/.venv/lib/python3.12/site-packages (from requests->dash) (3.10) Requirement already satisfied: urllib3<3,>=1.21.1 in /home/robbiec/Git/pfun-cma-model/.venv/lib/python3.12/site-packages (from requests->dash) (2.4.0) Requirement already satisfied: certifi>=2017.4.17 in /home/robbiec/Git/pfun-cma-model/.venv/lib/python3.12/site-packages (from requests->dash) (2025.4.26) Requirement already satisfied: six>=1.7.0 in /home/robbiec/Git/pfun-cma-model/.venv/lib/python3.12/site-packages (from retrying->dash) (1.17.0) Using cached dash_core_components-2.0.0-py3-none-any.whl (3.8 kB) Installing collected packages: dash-core-components Successfully installed dash-core-components-2.0.0 Note: you may need to restart the kernel to use updated packages.
CMA Model Tuning¶
In [2]:
import pfun_cma_model as pfun
# Load sample data
data = pfun.PFunDataPaths().read_sample_data()
# Fit the model
pfun.fit_model(data)
# Visualize the results
# TODO ...
Out[2]:
CMAFitResult(soln= t c m a I_S \
0 days 00:00:00 0.000000 0.075597 0.854758 0.251604 0.153497
0 days 00:01:24.457478005 0.023460 0.074229 0.856916 0.251662 0.151719
0 days 00:02:48.914956010 0.046921 0.072885 0.859060 0.251722 0.149949
0 days 00:04:13.372434019 0.070381 0.071566 0.861190 0.251783 0.148186
0 days 00:05:37.829912024 0.093842 0.070270 0.863307 0.251845 0.146430
... ... ... ... ... ...
0 days 23:54:22.170087975 23.906158 0.019881 0.845996 0.250010 0.174811
0 days 23:55:46.627565980 23.929619 0.019499 0.848206 0.250009 0.172755
0 days 23:57:11.085043989 23.953079 0.019123 0.850404 0.250008 0.170710
0 days 23:58:35.542521994 23.976540 0.018754 0.852588 0.250008 0.168677
1 days 00:00:00 24.000000 0.018392 0.854758 0.250007 0.166654
I_E L g_0 g_1 \
0 days 00:00:00 0.038620 1.517875e-08 0.311846 0.311846
0 days 00:01:24.457478005 0.038182 1.756372e-08 0.311846 0.311846
0 days 00:02:48.914956010 0.037745 2.030605e-08 0.311846 0.311846
0 days 00:04:13.372434019 0.037311 2.345654e-08 0.311846 0.311846
0 days 00:05:37.829912024 0.036878 2.707282e-08 0.311846 0.311846
... ... ... ... ...
0 days 23:54:22.170087975 0.043704 2.308257e-08 0.311846 0.311846
0 days 23:55:46.627565980 0.043190 1.998041e-08 0.311846 0.311846
0 days 23:57:11.085043989 0.042679 1.728041e-08 0.311846 0.311846
0 days 23:58:35.542521994 0.042170 1.493248e-08 0.311846 0.311846
1 days 00:00:00 0.041665 1.289247e-08 0.311846 0.311846
g_2 g_3 G is_meal
0 days 00:00:00 0.311846 0.311846 1.247385 False
0 days 00:01:24.457478005 0.311846 0.311846 1.247385 False
0 days 00:02:48.914956010 0.311846 0.311846 1.247385 False
0 days 00:04:13.372434019 0.311846 0.311846 1.247385 False
0 days 00:05:37.829912024 0.311846 0.311846 1.247385 False
... ... ... ... ...
0 days 23:54:22.170087975 0.311846 0.311846 1.247385 False
0 days 23:55:46.627565980 0.311846 0.311846 1.247385 False
0 days 23:57:11.085043989 0.311846 0.311846 1.247385 False
0 days 23:58:35.542521994 0.311846 0.311846 1.247385 False
1 days 00:00:00 0.311846 0.311846 1.247385 False
[1024 rows x 13 columns], formatted_data= time value tod \
t
0.097361 2021-01-24 23:58:24.337242924+00:00 126.000000 0.097500
0.136667 2021-01-21 00:01:18.484848280+00:00 113.666667 0.136852
0.138333 2021-01-24 00:02:36.969696560+00:00 123.333333 0.138519
0.181806 2021-01-27 00:03:55.454544840+00:00 132.000000 0.181944
0.220000 2021-01-20 00:05:31.117301916+00:00 120.333333 0.220093
... ... ... ...
23.804259 2021-01-21 23:43:09.470185456+00:00 126.333333 23.804444
23.806574 2021-01-25 23:40:15.322580100+00:00 126.000000 23.806574
23.886574 2021-01-20 23:47:22.102639092+00:00 115.333333 23.886667
23.889074 2021-01-24 23:44:27.955033736+00:00 123.333333 23.889167
23.930000 2021-01-23 23:48:40.587487372+00:00 117.500000 23.930139
t G
t
0.097361 0.097361 1.362543
0.136667 0.136667 1.105691
0.138333 0.138333 1.293078
0.181806 0.181806 1.540046
0.220000 0.220000 1.224470
... ... ...
23.804259 23.804259 1.376253
23.806574 23.806574 1.362543
23.886574 23.886574 1.130516
23.889074 23.889074 1.293078
23.930000 23.930000 1.167496
[1024 rows x 5 columns], cma=<pfun_cma_model.engine.cma.CMASleepWakeModel object at 0x7f05c63cfa10>, popt=array([-1.30407158e-02, 1.17487785e+00, -8.79689646e-03, 1.55923109e-01,
1.96784610e-09, 0.00000000e+00]), pcov=array([[ 1.84434284e+00, -1.11679301e+01, 6.41788775e+01,
-7.40825896e-01, 8.87783912e-01, 0.00000000e+00],
[-1.11679301e+01, 1.48715665e+02, -8.48879542e+02,
9.79873182e+00, -1.17424226e+01, 0.00000000e+00],
[ 6.41788775e+01, -8.48879542e+02, 4.87927048e+03,
-5.63219569e+01, 6.74926632e+01, 0.00000000e+00],
[-7.40825896e-01, 9.79873182e+00, -5.63219569e+01,
6.51156372e-01, -7.81072971e-01, 0.00000000e+00],
[ 8.87783912e-01, -1.17424226e+01, 6.74926632e+01,
-7.81072971e-01, 9.41569785e-01, 0.00000000e+00],
[ 0.00000000e+00, 0.00000000e+00, 0.00000000e+00,
0.00000000e+00, 0.00000000e+00, 1.00000000e+00]]), infodict={'message': 'Optimization terminated successfully.', 'error': None, 'ier': 0, 'result': message: CONVERGENCE: RELATIVE REDUCTION OF F <= FACTR*EPSMCH
success: True
status: 0
fun: 78.24510432625571
x: [-1.304e-02 1.175e+00 -8.797e-03 1.559e-01 1.968e-09
0.000e+00]
nit: 20
jac: [ 0.000e+00 0.000e+00 0.000e+00 6.168e-04 2.416e-05
0.000e+00]
nfev: 308
njev: 44
hess_inv: <6x6 LbfgsInvHessProduct with dtype=float64>}, mesg='Optimization terminated successfully.', ier=0, popt_named={'d': np.float64(-0.013040715801225806), 'taup': np.float64(1.1748778461821738), 'taug': np.float64(-0.00879689646450262), 'B': np.float64(0.1559231093783914), 'Cm': np.float64(1.9678460960653582e-09), 'toff': np.float64(0.0)}, cond=np.float64(10213028.026154377), diag=array([1.84434284e+00, 1.48715665e+02, 4.87927048e+03, 6.51156372e-01,
9.41569785e-01, 1.00000000e+00]))
In [ ]:
%%sh
uv run jupyter nbconvert --to html cma-model-tuning.ipynb --output cma-model-tuning.html
cp cma-model-tuning.html ../../pfun_cma_model/static/notebooks/cma-model-tuning.html
In [ ]: