@@ -166,8 +166,10 @@ def run_projection(self, p):
166
166
p .recovered ,
167
167
self .gamma ,
168
168
- self .i_day ,
169
- self .beta , pre_mitigation_days ,
170
- self .beta_t , post_mitigation_days
169
+ [
170
+ (self .beta , pre_mitigation_days ),
171
+ (self .beta_t , post_mitigation_days ),
172
+ ]
171
173
)
172
174
173
175
self .dispositions_df = build_dispositions_df (self .raw_df , self .rates , p .market_share , p .current_date )
@@ -233,7 +235,7 @@ def sir(
233
235
234
236
235
237
def gen_sir (
236
- s : float , i : float , r : float , gamma : float , i_day : int , * args
238
+ s : float , i : float , r : float , gamma : float , i_day : int , policies : List [ Tuple [ float , int ]]
237
239
) -> Generator [Tuple [int , float , float , float ], None , None ]:
238
240
"""Simulate SIR model forward in time yielding tuples.
239
241
Parameter order has changed to allow multiple (beta, n_days)
@@ -242,8 +244,7 @@ def gen_sir(
242
244
s , i , r = (float (v ) for v in (s , i , r ))
243
245
n = s + i + r
244
246
d = i_day
245
- while args :
246
- beta , n_days , * args = args
247
+ for beta , n_days in policies :
247
248
for _ in range (n_days ):
248
249
yield d , s , i , r
249
250
s , i , r = sir (s , i , r , beta , gamma , n )
@@ -253,11 +254,11 @@ def gen_sir(
253
254
254
255
def sim_sir_df (
255
256
s : float , i : float , r : float ,
256
- gamma : float , i_day : int , * args
257
+ gamma : float , i_day : int , policies : List [ Tuple [ float , int ]]
257
258
) -> pd .DataFrame :
258
259
"""Simulate the SIR model forward in time."""
259
260
return pd .DataFrame (
260
- data = gen_sir (s , i , r , gamma , i_day , * args ),
261
+ data = gen_sir (s , i , r , gamma , i_day , policies ),
261
262
columns = ("day" , "susceptible" , "infected" , "recovered" ),
262
263
)
263
264
0 commit comments