Skip to content
GitLab
Menu
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in
Toggle navigation
Menu
Open sidebar
Peter Jentsch
CovidAlertABM
Commits
5779702d
Commit
5779702d
authored
May 29, 2021
by
Peter Jentsch
Browse files
manually fitting lol
parent
59744455
Changes
4
Hide whitespace changes
Inline
Side-by-side
CovidAlertVaccinationModel/prem_mixing_approx.jl
View file @
5779702d
...
@@ -4,16 +4,16 @@ function approximate_mixing_matricies()
...
@@ -4,16 +4,16 @@ function approximate_mixing_matricies()
sol
=
abm
(
p
,
nothing
)
sol
=
abm
(
p
,
nothing
)
mean_mixing
=
zeros
(
3
,
3
)
mean_mixing
=
zeros
(
3
,
3
)
display
(
p
.
O_distribution_shift
)
display
(
p
.
O_distribution_shift
)
for
(
node_i
,
demo_i
)
in
enumerate
(
sol
.
demographics
)
for
g_list
in
sol
.
inf_network
.
graph_list
for
g_list
in
sol
.
inf_network
.
graph_list
for
g
in
g_list
for
g
in
g_list
# display(g.mixing_edges.weights_dict)
# display(g.mixing_edges.weights_dict)
for
node_j
in
neighbors
(
g
,
node_i
)
for
e
in
keys
(
g
.
mixing_edges
.
weights_dict
)
demo_j
=
sol
.
demographics
[
node_j
];
demo_i
=
sol
.
demographics
[
e
.
a
]
demo_j
=
sol
.
demographics
[
e
.
b
]
mean_mixing
[
Int
(
demo_i
),
Int
(
demo_j
)]
+=
1
#get_weight(g,GraphEdge(node_i,node_j)) /2
mean_mixing
[
Int
(
demo_i
),
Int
(
demo_j
)]
+=
1
#get_weight(g,GraphEdge(node_i,node_j)) /2
mean_mixing
[
Int
(
demo_j
),
Int
(
demo_i
)]
+=
1
#get_weight(g,GraphEdge(node_i,node_j)) /2
end
end
end
end
end
end
end
mean_mixing
./=
(
500
.*
length
.
(
sol
.
index_vectors
)
*
2
)
mean_mixing
./=
(
500
.*
length
.
(
sol
.
index_vectors
)
*
2
)
display
(
mean_mixing
)
display
(
mean_mixing
)
...
...
CovidAlertVaccinationModel/src/ABM/mixing_graphs.jl
View file @
5779702d
...
@@ -102,6 +102,7 @@ function create_mixing_edges(demographic_index_vectors,mixing_matrix,weights_dis
...
@@ -102,6 +102,7 @@ function create_mixing_edges(demographic_index_vectors,mixing_matrix,weights_dis
contact_array
[
j
,
i
]
=
GraphEdge
.
(
stubs_i
,
stubs_j
)
contact_array
[
j
,
i
]
=
GraphEdge
.
(
stubs_i
,
stubs_j
)
end
end
return
MixingEdges
(
tot
,
contact_array
,
weights_distribution_matrix
)
return
MixingEdges
(
tot
,
contact_array
,
weights_distribution_matrix
)
end
end
...
...
CovidAlertVaccinationModel/src/ABM/model_setup.jl
View file @
5779702d
...
@@ -27,7 +27,7 @@ function get_parameters()
...
@@ -27,7 +27,7 @@ function get_parameters()
immunization_delay
=
14
,
immunization_delay
=
14
,
immunization_begin_day
=
60
,
immunization_begin_day
=
60
,
infection_introduction_day
=
180
,
infection_introduction_day
=
180
,
O_distribution_shift
=
0.2
,
O_distribution_shift
=
1.0
,
)
)
return
params
return
params
end
end
...
@@ -94,11 +94,11 @@ mutable struct ModelSolution{T,InfNet,SocNet,WSMixingDist,RestMixingDist}
...
@@ -94,11 +94,11 @@ mutable struct ModelSolution{T,InfNet,SocNet,WSMixingDist,RestMixingDist}
adjust_distributions_mean!
(
md
[
1
:
3
,
3
],
params
.
O_distribution_shift
)
adjust_distributions_mean!
(
md
[
1
:
3
,
3
],
params
.
O_distribution_shift
)
adjust_distributions_mean!
(
md
[
3
,
1
:
2
],
params
.
O_distribution_shift
)
#dont shift OO twice
adjust_distributions_mean!
(
md
[
3
,
1
:
2
],
params
.
O_distribution_shift
)
#dont shift OO twice
end
end
map_symmetrize
(
m_tuple
)
=
map
(
md
->
symmetrize_means
(
pop_sizes
,
md
),
m_tuple
)
map_symmetrize
(
m_tuple
)
=
map
(
md
->
symmetrize_means
(
pop_sizes
,
md
),
m_tuple
)
ws_matrix_tuple
=
map_symmetrize
(
ws_mixing_tuple_preshift
)
ws_matrix_tuple
=
map_symmetrize
(
ws_mixing_tuple_preshift
)
rest_matrix_tuple
=
map_symmetrize
(
rest_mixing_tuple_preshift
)
rest_matrix_tuple
=
map_symmetrize
(
rest_mixing_tuple_preshift
)
# display(mean.(rest_matrix_tuple.daily))
is_app_user
=
app_users
(
demographics
,
params
.
app_user_fraction
)
is_app_user
=
app_users
(
demographics
,
params
.
app_user_fraction
)
app_user_list
=
zeros
(
nodes
)
app_user_list
=
zeros
(
nodes
)
...
...
CovidAlertVaccinationModel/src/ABM/parameter_optimization.jl
View file @
5779702d
...
@@ -97,33 +97,29 @@ function fit_distribution_parameters(p_tuple)
...
@@ -97,33 +97,29 @@ function fit_distribution_parameters(p_tuple)
)
)
)
)
function
cost
(
p
)
function
cost
(
p
)
p_mergedbeta
=
merge
(
p_tuple_adjust
,
(
β_m
=
p
[
2
],
β_o
=
p
[
2
],
))
#assume one beta
output
,
model
=
solve_w_parameters
(
p_tuple_adjust
,
p_names
,
p
)
output
,
model
=
solve_w_parameters
(
p_mergedbeta
,
p_names
,
p
)
target_ymo_vac
=
ymo_vac
.*
sum
(
vaccination_data
[
1
:
end
])
.*
length
.
(
model
.
index_vectors
)
ymo_vaccination_ts
=
output
.
daily_immunized_by_age
ymo_vaccination_ts
=
output
.
daily_immunized_by_age
normalize_by_pop
(
v
)
=
v
./
length
.
(
model
.
index_vectors
)
total_postinf_vaccination
=
sum
.
(
eachrow
(
ymo_vaccination_ts
[
:
,
181
:
end
]))
total_postinf_vaccination
=
sum
.
(
eachrow
(
ymo_vaccination_ts
[
:
,
180
:
end
]))
final_size
=
sum
.
(
eachrow
(
output
.
daily_unvac_cases_by_age
))
final_size
=
sum
.
(
eachrow
(
output
.
daily_unvac_cases_by_age
))
total_preinf_vaccination
=
sum
.
(
eachrow
(
ymo_vaccination_ts
[
:
,
1
:
180
]))
target_final_size
=
ymo_attack_rate
.*
length
.
(
model
.
index_vectors
)
target_final_size
=
ymo_attack_rate
.*
length
.
(
model
.
index_vectors
)
target_ymo_vac
=
ymo_vac
.*
sum
(
vaccination_data
[
1
:
4
])
.*
length
.
(
model
.
index_vectors
)
target_preinf_vac
=
ymo_vac
.*
sum
(
vaccination_data
[
1
:
4
])
.*
length
.
(
model
.
index_vectors
)
target_postinf_vac
=
ymo_vac
.*
sum
(
vaccination_data
[
5
:
end
])
.*
length
.
(
model
.
index_vectors
)
ymo_vaccination_ts
=
output
.
daily_immunized_by_age
total_preinfection_vaccination
=
sum
.
(
eachrow
(
ymo_vaccination_ts
))
return
sum
((
normalize_by_pop
(
total_preinfection_vaccination
.-
target_ymo_vac
))
.^
2
)
display
((
final_size
,
target_final_size
))
+
sum
(
normalize_by_pop
((
total_postinf_vaccination
.-
target_ymo_vac
))
.^
2
)
display
((
total_preinf_vaccination
,
target_preinf_vac
))
+
5
*
sum
(
normalize_by_pop
((
final_size
.-
target_final_size
))
.^
2
)
display
((
total_postinf_vaccination
,
target_postinf_vac
))
# display(final_size)
display
(
sum
.
(
eachrow
(
ymo_vaccination_ts
))
./
length
.
(
model
.
index_vectors
))
# display( sum.(eachrow(ymo_vaccination_ts[:,1:end])))
# display( length.(model.index_vectors))
return
sum
((
total_preinf_vaccination
.-
target_preinf_vac
)
.^
2
)
# return sum(normalize_by_pop((final_size .- target_final_size)).^2)
+
sum
((
total_postinf_vaccination
.-
total_postinf_vaccination
)
.^
2
)
end
+
5
*
sum
((
final_size
.-
target_final_size
)
.^
2
)
# display(cost((0.0,0.0005,-3.0,-3.0,-0.2,0.25,0.25,0.0,0.1)))
end
display
(
cost
((
0.0000
,
0.00048
,
0.0005
,
0.16
,
-
1.30
,
-
1.24
,
-
0.8
,
0.35
,
0.35
,
0.35
,
0.2
)))
#
#
out
=
smc
(
priors
,
cost
;
verbose
=
true
,
nparticles
=
8
00
,
parallel
=
true
)
#
out = smc(priors,cost; verbose = true, nparticles =
6
00, parallel = true)
return
NamedTuple
{
p_names
}(
ntuple
(
i
->
out
.
P
[
i
]
.
particles
,
length
(
p_names
)))
return
NamedTuple
{
p_names
}(
ntuple
(
i
->
out
.
P
[
i
]
.
particles
,
length
(
p_names
)))
end
end
function
fit_parameters
(
default_parameters
)
function
fit_parameters
(
default_parameters
)
...
@@ -133,8 +129,8 @@ function fit_parameters(default_parameters)
...
@@ -133,8 +129,8 @@ function fit_parameters(default_parameters)
fit_dist_parameters_path
=
joinpath
(
PACKAGE_FOLDER
,
"abm_parameter_fits"
,
"fit_dist_parameters.dat"
)
fit_dist_parameters_path
=
joinpath
(
PACKAGE_FOLDER
,
"abm_parameter_fits"
,
"fit_dist_parameters.dat"
)
#
output = fit_distribution_parameters(default_parameters)
output
=
fit_distribution_parameters
(
default_parameters
)
#
serialize(fit_all_parameters_path,output)
serialize
(
fit_all_parameters_path
,
output
)
fitted_parameter_tuple
=
deserialize
(
fit_all_parameters_path
)
fitted_parameter_tuple
=
deserialize
(
fit_all_parameters_path
)
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment