Skip to content

Commit 6233316

Browse files
authored
Add missing members to ABM serialization (#1408)
1 parent b44ce1d commit 6233316

File tree

3 files changed

+25
-18
lines changed

3 files changed

+25
-18
lines changed

cpp/models/abm/infection.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -133,6 +133,7 @@ class Infection
133133
.add("viral_load", m_viral_load)
134134
.add("log_norm_alpha", m_log_norm_alpha)
135135
.add("log_norm_beta", m_log_norm_beta)
136+
.add("individual_virus_shed_factor", m_individual_virus_shed_factor)
136137
.add("detected", m_detected);
137138
}
138139

cpp/models/abm/model.h

Lines changed: 16 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -130,6 +130,7 @@ class Model
130130
// skip caches, they are rebuild by the deserialized model
131131
obj.add_list("persons", get_persons().begin(), get_persons().end());
132132
obj.add_list("locations", get_locations().begin(), get_locations().end());
133+
obj.add_list("activeness_statuses", m_activeness_statuses.begin(), m_activeness_statuses.end());
133134
obj.add_element("location_types", m_has_locations.to_ulong());
134135
obj.add_element("testing_strategy", m_testing_strategy);
135136
obj.add_element("trip_list", m_trip_list);
@@ -145,30 +146,33 @@ class Model
145146
template <class IOContext>
146147
static IOResult<Model> deserialize(IOContext& io)
147148
{
148-
auto obj = io.expect_object("Model");
149-
auto params = obj.expect_element("parameters", Tag<Parameters>{});
150-
auto persons = obj.expect_list("persons", Tag<Person>{});
151-
auto locations = obj.expect_list("locations", Tag<Location>{});
152-
auto location_types = obj.expect_element("location_types", Tag<unsigned long>{});
153-
auto trip_list = obj.expect_element("trip_list", Tag<TripList>{});
154-
auto use_mobility_rules = obj.expect_element("use_mobility_rules", Tag<bool>{});
155-
auto cemetery_id = obj.expect_element("cemetery_id", Tag<LocationId>{});
156-
auto rng = obj.expect_element("rng", Tag<RandomNumberGenerator>{});
149+
auto obj = io.expect_object("Model");
150+
auto params = obj.expect_element("parameters", Tag<Parameters>{});
151+
auto persons = obj.expect_list("persons", Tag<Person>{});
152+
auto locations = obj.expect_list("locations", Tag<Location>{});
153+
auto activeness_statuses = obj.expect_list("activeness_statuses", Tag<bool>{});
154+
auto location_types = obj.expect_element("location_types", Tag<unsigned long>{});
155+
auto trip_list = obj.expect_element("trip_list", Tag<TripList>{});
156+
auto use_mobility_rules = obj.expect_element("use_mobility_rules", Tag<bool>{});
157+
auto cemetery_id = obj.expect_element("cemetery_id", Tag<LocationId>{});
158+
auto rng = obj.expect_element("rng", Tag<RandomNumberGenerator>{});
157159
return apply(
158160
io,
159-
[](auto&& params_, auto&& persons_, auto&& locations_, auto&& location_types_, auto&& trip_list_,
160-
auto&& use_mobility_rules_, auto&& cemetery_id_, auto&& rng_) {
161+
[](auto&& params_, auto&& persons_, auto&& locations_, auto&& activeness_statuses_, auto&& location_types_,
162+
auto&& trip_list_, auto&& use_mobility_rules_, auto&& cemetery_id_, auto&& rng_) {
161163
Model model{params_};
162164
model.m_persons.assign(persons_.cbegin(), persons_.cend());
163165
model.m_locations.assign(locations_.cbegin(), locations_.cend());
166+
model.m_activeness_statuses.assign(activeness_statuses_.cbegin(), activeness_statuses_.cend());
164167
model.m_has_locations = location_types_;
165168
model.m_trip_list = trip_list_;
166169
model.m_use_mobility_rules = use_mobility_rules_;
167170
model.m_cemetery_id = cemetery_id_;
168171
model.m_rng = rng_;
169172
return model;
170173
},
171-
params, persons, locations, location_types, trip_list, use_mobility_rules, cemetery_id, rng);
174+
params, persons, locations, activeness_statuses, location_types, trip_list, use_mobility_rules, cemetery_id,
175+
rng);
172176
}
173177

174178
/**

cpp/tests/test_abm_serialization.cpp

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -112,12 +112,13 @@ TEST(TestAbmSerialization, Infection)
112112
viral_load["start_date"]["seconds"] = Json::Int(i++);
113113

114114
Json::Value reference_json;
115-
reference_json["infection_course"] = Json::Value(Json::arrayValue);
116-
reference_json["virus_variant"] = Json::UInt(0);
117-
reference_json["viral_load"] = viral_load;
118-
reference_json["log_norm_alpha"] = Json::Value((double)i++);
119-
reference_json["log_norm_beta"] = Json::Value((double)i++);
120-
reference_json["detected"] = Json::Value((bool)0);
115+
reference_json["infection_course"] = Json::Value(Json::arrayValue);
116+
reference_json["virus_variant"] = Json::UInt(0);
117+
reference_json["viral_load"] = viral_load;
118+
reference_json["log_norm_alpha"] = Json::Value((double)i++);
119+
reference_json["log_norm_beta"] = Json::Value((double)i++);
120+
reference_json["individual_virus_shed_factor"] = Json::Value((double)i++);
121+
reference_json["detected"] = Json::Value((bool)0);
121122

122123
test_json_serialization<mio::abm::Infection>(reference_json);
123124
}
@@ -260,6 +261,7 @@ TEST(TestAbmSerialization, Model)
260261
reference_json["locations"] = Json::Value(Json::arrayValue);
261262
reference_json["parameters"] = abm_parameters;
262263
reference_json["persons"] = Json::Value(Json::arrayValue);
264+
reference_json["activeness_statuses"] = Json::Value(Json::arrayValue);
263265
reference_json["rng"]["counter"] = Json::UInt(i++);
264266
reference_json["rng"]["key"] = Json::UInt(i++);
265267
reference_json["rng"]["seeds"] = json_uint_array({i++, i++, i++, i++, i++, i++});

0 commit comments

Comments
 (0)