Skip to content

Commit 499fba2

Browse files
refactor: re-ran notebook
1 parent 1e934a4 commit 499fba2

File tree

1 file changed

+119
-5
lines changed

1 file changed

+119
-5
lines changed

notebooks/INLA_testing.ipynb

Lines changed: 119 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -579,7 +579,7 @@
579579
},
580580
{
581581
"cell_type": "code",
582-
"execution_count": 20,
582+
"execution_count": 11,
583583
"id": "e344b7d0-f76e-4a28-9be9-884a2ba1f2c4",
584584
"metadata": {},
585585
"outputs": [
@@ -607,7 +607,7 @@
607607
},
608608
{
609609
"cell_type": "code",
610-
"execution_count": 6,
610+
"execution_count": 17,
611611
"id": "f1eb9a04-15dd-437d-bcf0-ce369feec912",
612612
"metadata": {},
613613
"outputs": [
@@ -624,10 +624,124 @@
624624
"collected 3 items \u001b[0m\u001b[1m\n",
625625
"\n",
626626
"../tests/test_inla.py::test_non_gaussian_latent \u001b[32mPASSED\u001b[0m\u001b[32m [ 33%]\u001b[0m\n",
627-
"../tests/test_inla.py::test_non_precision_MvNormal \u001b[32mPASSED\u001b[0m\u001b[32m [ 66%]\u001b[0m\n",
628-
"../tests/test_inla.py::test_3_layer_normal \u001b[32mPASSED\u001b[0m\u001b[32m [100%]\u001b[0m\n",
627+
"../tests/test_inla.py::test_non_precision_MvNormal \u001b[31mFAILED\u001b[0m\u001b[31m [ 66%]\u001b[0m\n",
628+
"../tests/test_inla.py::test_3_layer_normal \u001b[31mFAILED\u001b[0m\u001b[31m [100%]\u001b[0m\n",
629629
"\n",
630-
"\u001b[32m============================== \u001b[32m\u001b[1m3 passed\u001b[0m\u001b[32m in 19.44s\u001b[0m\u001b[32m ==============================\u001b[0m\n"
630+
"=================================== FAILURES ===================================\n",
631+
"\u001b[31m\u001b[1m_________________________ test_non_precision_MvNormal __________________________\u001b[0m\n",
632+
"\n",
633+
"rng = Generator(PCG64) at 0x7F6BDC40DC40\n",
634+
"\n",
635+
" \u001b[0m\u001b[94mdef\u001b[39;49;00m\u001b[90m \u001b[39;49;00m\u001b[92mtest_non_precision_MvNormal\u001b[39;49;00m(rng):\u001b[90m\u001b[39;49;00m\n",
636+
" \u001b[90m \u001b[39;49;00m\u001b[33m\"\"\"\u001b[39;49;00m\n",
637+
" \u001b[33m INLA should raise an error if trying to use a latent not in precision form\u001b[39;49;00m\n",
638+
" \u001b[33m \"\"\"\u001b[39;49;00m\u001b[90m\u001b[39;49;00m\n",
639+
" n = \u001b[94m10000\u001b[39;49;00m\u001b[90m\u001b[39;49;00m\n",
640+
" d = \u001b[94m3\u001b[39;49;00m\u001b[90m\u001b[39;49;00m\n",
641+
" \u001b[90m\u001b[39;49;00m\n",
642+
" mu_mu = np.zeros((d,))\u001b[90m\u001b[39;49;00m\n",
643+
" mu_true = rng.random(d)\u001b[90m\u001b[39;49;00m\n",
644+
" tau = np.identity(d)\u001b[90m\u001b[39;49;00m\n",
645+
" cov = np.linalg.inv(tau)\u001b[90m\u001b[39;49;00m\n",
646+
" y_obs = rng.multivariate_normal(mean=mu_true, cov=cov, size=n)\u001b[90m\u001b[39;49;00m\n",
647+
" \u001b[90m\u001b[39;49;00m\n",
648+
" \u001b[94mwith\u001b[39;49;00m pm.Model() \u001b[94mas\u001b[39;49;00m model:\u001b[90m\u001b[39;49;00m\n",
649+
" mu = pm.MvNormal(\u001b[33m\"\u001b[39;49;00m\u001b[33mmu\u001b[39;49;00m\u001b[33m\"\u001b[39;49;00m, mu=mu_mu, tau=tau)\u001b[90m\u001b[39;49;00m\n",
650+
" x = pm.MvNormal(\u001b[33m\"\u001b[39;49;00m\u001b[33mx\u001b[39;49;00m\u001b[33m\"\u001b[39;49;00m, mu=mu, cov=cov)\u001b[90m\u001b[39;49;00m\n",
651+
" y = pm.MvNormal(\u001b[33m\"\u001b[39;49;00m\u001b[33my\u001b[39;49;00m\u001b[33m\"\u001b[39;49;00m, mu=x, tau=tau, observed=y_obs)\u001b[90m\u001b[39;49;00m\n",
652+
" \u001b[90m\u001b[39;49;00m\n",
653+
" \u001b[94mwith\u001b[39;49;00m pytest.raises(\u001b[96mValueError\u001b[39;49;00m):\u001b[90m\u001b[39;49;00m\n",
654+
"> pmx.fit(method=\u001b[33m\"\u001b[39;49;00m\u001b[33mINLA\u001b[39;49;00m\u001b[33m\"\u001b[39;49;00m, x=x)\u001b[90m\u001b[39;49;00m\n",
655+
"\n",
656+
"\u001b[1m\u001b[31m../tests/test_inla.py\u001b[0m:67: \n",
657+
"_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ \n",
658+
"\u001b[1m\u001b[31m../pymc_extras/inference/fit.py\u001b[0m:47: in fit\n",
659+
" \u001b[0m\u001b[94mreturn\u001b[39;49;00m fit_INLA(**kwargs)\u001b[90m\u001b[39;49;00m\n",
660+
" ^^^^^^^^^^^^^^^^^^\u001b[90m\u001b[39;49;00m\n",
661+
"_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ \n",
662+
"\n",
663+
"x = x, temp_kwargs = None, model = None, minimizer_kwargs = None\n",
664+
"return_latent_posteriors = True, sampler_kwargs = {}\n",
665+
"\n",
666+
" \u001b[0m\u001b[94mdef\u001b[39;49;00m\u001b[90m \u001b[39;49;00m\u001b[92mfit_INLA\u001b[39;49;00m(\u001b[90m\u001b[39;49;00m\n",
667+
" x: TensorVariable,\u001b[90m\u001b[39;49;00m\n",
668+
" temp_kwargs=\u001b[94mNone\u001b[39;49;00m, \u001b[90m# TODO REMOVE. DEBUGGING TOOL\u001b[39;49;00m\u001b[90m\u001b[39;49;00m\n",
669+
" model: pm.Model | \u001b[94mNone\u001b[39;49;00m = \u001b[94mNone\u001b[39;49;00m,\u001b[90m\u001b[39;49;00m\n",
670+
" minimizer_kwargs: \u001b[96mdict\u001b[39;49;00m | \u001b[94mNone\u001b[39;49;00m = \u001b[94mNone\u001b[39;49;00m,\u001b[90m\u001b[39;49;00m\n",
671+
" return_latent_posteriors: \u001b[96mbool\u001b[39;49;00m = \u001b[94mTrue\u001b[39;49;00m,\u001b[90m\u001b[39;49;00m\n",
672+
" **sampler_kwargs,\u001b[90m\u001b[39;49;00m\n",
673+
" ) -> az.InferenceData:\u001b[90m\u001b[39;49;00m\n",
674+
"> warnings.warn(\u001b[33m'\u001b[39;49;00m\u001b[33mCurrently only valid for a nested normal model. WIP.\u001b[39;49;00m\u001b[33m'\u001b[39;49;00m, \u001b[96mUserWarning\u001b[39;49;00m)\u001b[90m\u001b[39;49;00m\n",
675+
"\u001b[1m\u001b[31mE UserWarning: Currently only valid for a nested normal model. WIP.\u001b[0m\n",
676+
"\n",
677+
"\u001b[1m\u001b[31m../pymc_extras/inference/inla.py\u001b[0m:151: UserWarning\n",
678+
"\u001b[31m\u001b[1m_____________________________ test_3_layer_normal ______________________________\u001b[0m\n",
679+
"\n",
680+
"rng = Generator(PCG64) at 0x7F6BDC40DC40\n",
681+
"\n",
682+
" \u001b[0m\u001b[94mdef\u001b[39;49;00m\u001b[90m \u001b[39;49;00m\u001b[92mtest_3_layer_normal\u001b[39;49;00m(rng):\u001b[90m\u001b[39;49;00m\n",
683+
" \u001b[90m \u001b[39;49;00m\u001b[33m\"\"\"\u001b[39;49;00m\n",
684+
" \u001b[33m Test INLA against a simple toy problem:\u001b[39;49;00m\n",
685+
" \u001b[33m\u001b[39;49;00m\n",
686+
" \u001b[33m mu ~ N(mu_mu, I)\u001b[39;49;00m\n",
687+
" \u001b[33m x ~ N(mu, I)\u001b[39;49;00m\n",
688+
" \u001b[33m y ~ N(x, I)\u001b[39;49;00m\n",
689+
" \u001b[33m\u001b[39;49;00m\n",
690+
" \u001b[33m The mean of the posterior should be the midpoint between mu_mu and mu_true\u001b[39;49;00m\n",
691+
" \u001b[33m \"\"\"\u001b[39;49;00m\u001b[90m\u001b[39;49;00m\n",
692+
" n = \u001b[94m10000\u001b[39;49;00m\u001b[90m\u001b[39;49;00m\n",
693+
" d = \u001b[94m3\u001b[39;49;00m\u001b[90m\u001b[39;49;00m\n",
694+
" \u001b[90m\u001b[39;49;00m\n",
695+
" mu_mu = \u001b[94m10\u001b[39;49;00m * rng.random(d)\u001b[90m\u001b[39;49;00m\n",
696+
" mu_true = rng.random(d)\u001b[90m\u001b[39;49;00m\n",
697+
" tau = np.identity(d)\u001b[90m\u001b[39;49;00m\n",
698+
" cov = np.linalg.inv(tau)\u001b[90m\u001b[39;49;00m\n",
699+
" y_obs = rng.multivariate_normal(mean=mu_true, cov=cov, size=n)\u001b[90m\u001b[39;49;00m\n",
700+
" \u001b[90m\u001b[39;49;00m\n",
701+
" \u001b[94mwith\u001b[39;49;00m pm.Model() \u001b[94mas\u001b[39;49;00m model:\u001b[90m\u001b[39;49;00m\n",
702+
" mu = pm.MvNormal(\u001b[33m\"\u001b[39;49;00m\u001b[33mmu\u001b[39;49;00m\u001b[33m\"\u001b[39;49;00m, mu=mu_mu, tau=tau)\u001b[90m\u001b[39;49;00m\n",
703+
" x = pm.MvNormal(\u001b[33m\"\u001b[39;49;00m\u001b[33mx\u001b[39;49;00m\u001b[33m\"\u001b[39;49;00m, mu=mu, tau=tau)\u001b[90m\u001b[39;49;00m\n",
704+
" y = pm.MvNormal(\u001b[33m\"\u001b[39;49;00m\u001b[33my\u001b[39;49;00m\u001b[33m\"\u001b[39;49;00m, mu=x, tau=tau, observed=y_obs)\u001b[90m\u001b[39;49;00m\n",
705+
" \u001b[90m\u001b[39;49;00m\n",
706+
"> idata = pmx.fit(\u001b[90m\u001b[39;49;00m\n",
707+
" method=\u001b[33m\"\u001b[39;49;00m\u001b[33mINLA\u001b[39;49;00m\u001b[33m\"\u001b[39;49;00m,\u001b[90m\u001b[39;49;00m\n",
708+
" x=x,\u001b[90m\u001b[39;49;00m\n",
709+
" temp_kwargs=[n, y_obs], \u001b[90m# TODO REMOVE LATER - DEBUGGING TOOL\u001b[39;49;00m\u001b[90m\u001b[39;49;00m\n",
710+
" return_latent_posteriors=\u001b[94mFalse\u001b[39;49;00m,\u001b[90m\u001b[39;49;00m\n",
711+
" )\u001b[90m\u001b[39;49;00m\n",
712+
"\n",
713+
"\u001b[1m\u001b[31m../tests/test_inla.py\u001b[0m:94: \n",
714+
"_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ \n",
715+
"\u001b[1m\u001b[31m../pymc_extras/inference/fit.py\u001b[0m:47: in fit\n",
716+
" \u001b[0m\u001b[94mreturn\u001b[39;49;00m fit_INLA(**kwargs)\u001b[90m\u001b[39;49;00m\n",
717+
" ^^^^^^^^^^^^^^^^^^\u001b[90m\u001b[39;49;00m\n",
718+
"_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ \n",
719+
"\n",
720+
"x = x\n",
721+
"temp_kwargs = [10000, array([[-0.92256686, 0.34251042, -1.07012389],\n",
722+
" [ 1.54076702, -0.55042364, 1.023203 ],\n",
723+
" [ 2.251...37462 , 0.78161016],\n",
724+
" [ 2.21600752, -0.66114102, -0.10427736],\n",
725+
" [ 1.37171357, -0.27766388, -0.73127505]])]\n",
726+
"model = None, minimizer_kwargs = None, return_latent_posteriors = False\n",
727+
"sampler_kwargs = {}\n",
728+
"\n",
729+
" \u001b[0m\u001b[94mdef\u001b[39;49;00m\u001b[90m \u001b[39;49;00m\u001b[92mfit_INLA\u001b[39;49;00m(\u001b[90m\u001b[39;49;00m\n",
730+
" x: TensorVariable,\u001b[90m\u001b[39;49;00m\n",
731+
" temp_kwargs=\u001b[94mNone\u001b[39;49;00m, \u001b[90m# TODO REMOVE. DEBUGGING TOOL\u001b[39;49;00m\u001b[90m\u001b[39;49;00m\n",
732+
" model: pm.Model | \u001b[94mNone\u001b[39;49;00m = \u001b[94mNone\u001b[39;49;00m,\u001b[90m\u001b[39;49;00m\n",
733+
" minimizer_kwargs: \u001b[96mdict\u001b[39;49;00m | \u001b[94mNone\u001b[39;49;00m = \u001b[94mNone\u001b[39;49;00m,\u001b[90m\u001b[39;49;00m\n",
734+
" return_latent_posteriors: \u001b[96mbool\u001b[39;49;00m = \u001b[94mTrue\u001b[39;49;00m,\u001b[90m\u001b[39;49;00m\n",
735+
" **sampler_kwargs,\u001b[90m\u001b[39;49;00m\n",
736+
" ) -> az.InferenceData:\u001b[90m\u001b[39;49;00m\n",
737+
"> warnings.warn(\u001b[33m'\u001b[39;49;00m\u001b[33mCurrently only valid for a nested normal model. WIP.\u001b[39;49;00m\u001b[33m'\u001b[39;49;00m, \u001b[96mUserWarning\u001b[39;49;00m)\u001b[90m\u001b[39;49;00m\n",
738+
"\u001b[1m\u001b[31mE UserWarning: Currently only valid for a nested normal model. WIP.\u001b[0m\n",
739+
"\n",
740+
"\u001b[1m\u001b[31m../pymc_extras/inference/inla.py\u001b[0m:151: UserWarning\n",
741+
"\u001b[36m\u001b[1m=========================== short test summary info ============================\u001b[0m\n",
742+
"\u001b[31mFAILED\u001b[0m ../tests/test_inla.py::\u001b[1mtest_non_precision_MvNormal\u001b[0m - UserWarning: Currently only valid for a nested normal model. WIP.\n",
743+
"\u001b[31mFAILED\u001b[0m ../tests/test_inla.py::\u001b[1mtest_3_layer_normal\u001b[0m - UserWarning: Currently only valid for a nested normal model. WIP.\n",
744+
"\u001b[31m========================= \u001b[31m\u001b[1m2 failed\u001b[0m, \u001b[32m1 passed\u001b[0m\u001b[31m in 2.37s\u001b[0m\u001b[31m ==========================\u001b[0m\n"
631745
]
632746
}
633747
],

0 commit comments

Comments
 (0)