33 int seeding_time,
int index){
34 int gt_length = num_elements(gt_rev_pmf);
38 int inf_start = max(1, (index + seeding_time - gt_length + 1));
40 int inf_end = (index + seeding_time);
43 int pmf_accessed = min(gt_length, index + seeding_time);
45 real new_inf = dot_product(
46 infections[inf_start:inf_end], tail(gt_rev_pmf, pmf_accessed)
69 int use_pop, data real pop_floor,
int nht);
94 array[] real initial_infections, real pop,
95 int use_pop, data real pop_floor,
int ht,
int obs_scale, real fraction_observed,
96 int initial_as_scale) {
97 int ot = num_elements(R);
99 real growth =
R_to_r(R[1], gt_rev_pmf, 1e-3);
101 if (initial_as_scale) {
102 seed[1] = exp(initial_infections[1] - growth * uot);
104 seed[1] = seed[1] / fraction_observed;
107 seed[1] = exp(initial_infections[1]);
110 real exp_growth = exp(growth);
112 seed[s] = seed[s - 1] * exp_growth;
116 seed, R, gt_rev_pmf, pop, use_pop, pop_floor, ot - ht
143 int t = num_elements(shifted_cases);
144 vector[t] infections = rep_vector(1e-5, t);
146 vector[t] exp_noise = exp(noise);
148 infections = infections + shifted_cases .* exp_noise;
149 }
else if (prior == 0) {
150 infections = infections + exp_noise;
151 }
else if (prior == 2) {
152 infections[1] = infections[1] + shifted_cases[1] * exp_noise[1];
154 infections[i] = infections[i - 1] * exp_noise[i];
158 infections = infections + shifted_cases;
real update_infectiousness(vector infections, vector gt_rev_pmf, int seeding_time, int index)
vector generate_infections(vector R, int uot, vector gt_rev_pmf, array[] real initial_infections, real pop, int use_pop, data real pop_floor, int ht, int obs_scale, real fraction_observed, int initial_as_scale)
Generate infections using a renewal equation approach.
vector deconvolve_infections(vector shifted_cases, vector noise, int fixed, int prior)
vector renewal_infections(vector seed, vector R, vector gt_rev_pmf, real pop, int use_pop, data real pop_floor, int nht)
real R_to_r(real R, vector gt_rev_pmf, data real abs_tol)