11"""
22Test Poisson Model
33"""
4+
45import numpy as np
56import pandas as pd
67import pytest
7-
88from regmod .data import Data
99from regmod .function import fun_dict
10- from regmod .models import PoissonModel
11- from regmod .prior import (GaussianPrior , SplineGaussianPrior ,
12- SplineUniformPrior , UniformPrior )
10+ from regmod .models import create_poisson_model
11+ from regmod .prior import (
12+ GaussianPrior ,
13+ SplineGaussianPrior ,
14+ SplineUniformPrior ,
15+ UniformPrior ,
16+ )
1317from regmod .utils import SplineSpecs
1418from regmod .variable import SplineVariable , Variable
1519
1923@pytest .fixture
2024def data ():
2125 num_obs = 5
22- df = pd .DataFrame ({
23- "obs" : np . random . rand ( num_obs ) * 10 ,
24- "cov0 " : np .random .randn (num_obs ),
25- "cov1 " : np .random .randn (num_obs )
26- })
27- return Data ( col_obs = "obs" ,
28- col_covs = [ "cov0" , "cov1" ],
29- df = df )
26+ df = pd .DataFrame (
27+ {
28+ "obs " : np .random .rand (num_obs ) * 10 ,
29+ "cov0 " : np .random .randn (num_obs ),
30+ "cov1" : np . random . randn ( num_obs ),
31+ }
32+ )
33+ return Data ( col_obs = "obs" , col_covs = [ "cov0" , "cov1" ], df = df )
3034
3135
3236@pytest .fixture
3337def wrong_data ():
3438 num_obs = 5
35- df = pd .DataFrame ({
36- "obs" : np . random . randn ( num_obs ),
37- "cov0 " : np .random .randn (num_obs ),
38- "cov1 " : np .random .randn (num_obs )
39- })
40- return Data ( col_obs = "obs" ,
41- col_covs = [ "cov0" , "cov1" ],
42- df = df )
39+ df = pd .DataFrame (
40+ {
41+ "obs " : np .random .randn (num_obs ),
42+ "cov0 " : np .random .randn (num_obs ),
43+ "cov1" : np . random . randn ( num_obs ),
44+ }
45+ )
46+ return Data ( col_obs = "obs" , col_covs = [ "cov0" , "cov1" ], df = df )
4347
4448
4549@pytest .fixture
@@ -54,9 +58,9 @@ def uprior():
5458
5559@pytest .fixture
5660def spline_specs ():
57- return SplineSpecs (knots = np . linspace ( 0.0 , 1.0 , 5 ),
58- degree = 3 ,
59- knots_type = "rel_domain" )
61+ return SplineSpecs (
62+ knots = np . linspace ( 0.0 , 1.0 , 5 ), degree = 3 , knots_type = "rel_domain"
63+ )
6064
6165
6266@pytest .fixture
@@ -71,20 +75,21 @@ def spline_uprior():
7175
7276@pytest .fixture
7377def var_cov0 (gprior , uprior ):
74- return Variable (name = "cov0" ,
75- priors = [gprior , uprior ])
78+ return Variable (name = "cov0" , priors = [gprior , uprior ])
7679
7780
7881@pytest .fixture
7982def var_cov1 (spline_gprior , spline_uprior , spline_specs ):
80- return SplineVariable (name = "cov1" ,
81- spline_specs = spline_specs ,
82- priors = [ spline_gprior , spline_uprior ] )
83+ return SplineVariable (
84+ name = "cov1" , spline_specs = spline_specs , priors = [ spline_gprior , spline_uprior ]
85+ )
8386
8487
8588@pytest .fixture
8689def model (data , var_cov0 , var_cov1 ):
87- return PoissonModel (data , param_specs = {"lam" : {"variables" : [var_cov0 , var_cov1 ]}})
90+ return create_poisson_model (
91+ data , param_specs = {"lam" : {"variables" : [var_cov0 , var_cov1 ]}}
92+ )
8893
8994
9095def test_model_size (model , var_cov0 , var_cov1 ):
@@ -124,7 +129,7 @@ def test_model_gradient(model, inv_link):
124129 tr_grad = np .zeros (model .size )
125130 for i in range (model .size ):
126131 coefs_c [i ] += 1e-16j
127- tr_grad [i ] = model .objective (coefs_c ).imag / 1e-16
132+ tr_grad [i ] = model .objective (coefs_c ).imag / 1e-16
128133 coefs_c [i ] -= 1e-16j
129134 assert np .allclose (my_grad , tr_grad )
130135
@@ -139,15 +144,17 @@ def test_model_hessian(model, inv_link):
139144 for i in range (model .size ):
140145 for j in range (model .size ):
141146 coefs_c [j ] += 1e-16j
142- tr_hess [i ][j ] = model .gradient (coefs_c ).imag [i ]/ 1e-16
147+ tr_hess [i ][j ] = model .gradient (coefs_c ).imag [i ] / 1e-16
143148 coefs_c [j ] -= 1e-16j
144149
145150 assert np .allclose (my_hess , tr_hess )
146151
147152
148153def test_wrong_data (wrong_data , var_cov0 , var_cov1 ):
149154 with pytest .raises (ValueError ):
150- PoissonModel (wrong_data , param_specs = {"lam" : {"variables" : [var_cov0 , var_cov1 ]}})
155+ create_poisson_model (
156+ wrong_data , param_specs = {"lam" : {"variables" : [var_cov0 , var_cov1 ]}}
157+ )
151158
152159
153160def test_get_ui (model ):
@@ -160,16 +167,18 @@ def test_get_ui(model):
160167
161168def test_model_no_variables ():
162169 num_obs = 5
163- df = pd .DataFrame ({
164- "obs" : np .random .rand (num_obs )* 10 ,
165- "offset" : np .ones (num_obs ),
166- })
170+ df = pd .DataFrame (
171+ {
172+ "obs" : np .random .rand (num_obs ) * 10 ,
173+ "offset" : np .ones (num_obs ),
174+ }
175+ )
167176 data = Data (
168177 col_obs = "obs" ,
169178 col_offset = "offset" ,
170179 df = df ,
171180 )
172- model = PoissonModel (data , param_specs = {"lam" : {"offset" : "offset" }})
181+ model = create_poisson_model (data , param_specs = {"lam" : {"offset" : "offset" }})
173182 coefs = np .array ([])
174183 grad = model .gradient (coefs )
175184 hessian = model .hessian (coefs )
0 commit comments