Skip to content

Commit adcee20

Browse files
committed
move regions change to followup issue
1 parent 16e43e8 commit adcee20

File tree

13 files changed

+157
-214
lines changed

13 files changed

+157
-214
lines changed

cpp/memilio/epidemiology/populations.h

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -54,9 +54,8 @@ template <typename FP, class... Categories>
5454
class Populations : public CustomIndexArray<UncertainValue<FP>, Categories...>
5555
{
5656
public:
57-
using Base = CustomIndexArray<UncertainValue<FP>, Categories...>;
58-
using BaseFP = FP;
59-
using Index = typename Base::Index;
57+
using Base = CustomIndexArray<UncertainValue<FP>, Categories...>;
58+
using Index = typename Base::Index;
6059

6160
template <class... Ts,
6261
typename std::enable_if_t<std::is_constructible<UncertainValue<FP>, Ts...>::value>* = nullptr>

cpp/memilio/geography/holiday_data.ipp

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -25,10 +25,7 @@
2525
#include <utility>
2626
#include <vector>
2727

28-
namespace mio
29-
{
30-
31-
namespace regions
28+
namespace holidays
3229
{
3330

3431
namespace de
@@ -302,6 +299,4 @@ static const std::vector<std::pair<mio::Date, mio::Date>> holidays_16_th = {
302299

303300
} // namespace de
304301

305-
} // namespace regions
306-
307-
} // namespace mio
302+
} // namespace holidays

cpp/memilio/geography/regions.cpp

Lines changed: 16 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -28,9 +28,6 @@ namespace mio
2828
namespace regions
2929
{
3030

31-
namespace de
32-
{
33-
3431
StateId get_state_id(int county)
3532
{
3633
// integer division
@@ -46,52 +43,52 @@ get_holidays(StateId state)
4643
auto data = &def;
4744
switch (int(state)) {
4845
case 1:
49-
data = &holidays_01_sh;
46+
data = &holidays::de::holidays_01_sh;
5047
break;
5148
case 2:
52-
data = &holidays_02_hh;
49+
data = &holidays::de::holidays_02_hh;
5350
break;
5451
case 3:
55-
data = &holidays_03_ni;
52+
data = &holidays::de::holidays_03_ni;
5653
break;
5754
case 4:
58-
data = &holidays_04_hb;
55+
data = &holidays::de::holidays_04_hb;
5956
break;
6057
case 5:
61-
data = &holidays_05_nw;
58+
data = &holidays::de::holidays_05_nw;
6259
break;
6360
case 6:
64-
data = &holidays_06_he;
61+
data = &holidays::de::holidays_06_he;
6562
break;
6663
case 7:
67-
data = &holidays_07_rp;
64+
data = &holidays::de::holidays_07_rp;
6865
break;
6966
case 8:
70-
data = &holidays_08_bw;
67+
data = &holidays::de::holidays_08_bw;
7168
break;
7269
case 9:
73-
data = &holidays_09_by;
70+
data = &holidays::de::holidays_09_by;
7471
break;
7572
case 10:
76-
data = &holidays_10_sl;
73+
data = &holidays::de::holidays_10_sl;
7774
break;
7875
case 11:
79-
data = &holidays_11_be;
76+
data = &holidays::de::holidays_11_be;
8077
break;
8178
case 12:
82-
data = &holidays_12_bb;
79+
data = &holidays::de::holidays_12_bb;
8380
break;
8481
case 13:
85-
data = &holidays_13_mv;
82+
data = &holidays::de::holidays_13_mv;
8683
break;
8784
case 14:
88-
data = &holidays_14_sn;
85+
data = &holidays::de::holidays_14_sn;
8986
break;
9087
case 15:
91-
data = &holidays_15_st;
88+
data = &holidays::de::holidays_15_st;
9289
break;
9390
case 16:
94-
data = &holidays_16_th;
91+
data = &holidays::de::holidays_16_th;
9592
break;
9693
default:
9794
break;
@@ -114,8 +111,6 @@ get_holidays(StateId state, Date start_date, Date end_date)
114111
return {holidays_in_range};
115112
}
116113

117-
} // namespace de
118-
119114
} // namespace regions
120115

121116
} // namespace mio

cpp/memilio/geography/regions.h

Lines changed: 15 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -46,9 +46,6 @@ struct Region : public mio::Index<Region> {
4646
}
4747
};
4848

49-
namespace de
50-
{
51-
5249
/**
5350
* Id of a state.
5451
* For Germany the Ids are:
@@ -105,23 +102,24 @@ get_holidays(StateId state);
105102
*/
106103
Range<std::pair<std::vector<std::pair<Date, Date>>::const_iterator, std::vector<std::pair<Date, Date>>::const_iterator>>
107104
get_holidays(StateId state, Date start_date, Date end_date);
108-
struct EpidataFilenames
105+
106+
namespace de
109107
{
110-
private:
111108

112-
EpidataFilenames(std::string& pydata) :
113-
population_data_path(mio::path_join(pydata, "county_current_population.json"))
109+
struct EpidataFilenames {
110+
private:
111+
EpidataFilenames(std::string& pydata)
112+
: population_data_path(mio::path_join(pydata, "county_current_population.json"))
114113
{
115114
}
116-
117-
public:
118115

116+
public:
119117
static EpidataFilenames county(std::string& pydata)
120118
{
121119
EpidataFilenames s(pydata);
122120

123-
s.case_data_path = mio::path_join(pydata, "cases_all_county_age_ma7.json");
124-
s.divi_data_path = mio::path_join(pydata, "county_divi_ma7.json");
121+
s.case_data_path = mio::path_join(pydata, "cases_all_county_age_ma7.json");
122+
s.divi_data_path = mio::path_join(pydata, "county_divi_ma7.json");
125123
s.vaccination_data_path = mio::path_join(pydata, "vacc_county_ageinf_ma7.json");
126124

127125
return s;
@@ -131,21 +129,21 @@ struct EpidataFilenames
131129
{
132130
EpidataFilenames s(pydata);
133131

134-
s.case_data_path = mio::path_join(pydata, "cases_all_state_age_ma7.json");
135-
s.divi_data_path = mio::path_join(pydata, "state_divi_ma7.json");
132+
s.case_data_path = mio::path_join(pydata, "cases_all_state_age_ma7.json");
133+
s.divi_data_path = mio::path_join(pydata, "state_divi_ma7.json");
136134
s.vaccination_data_path = mio::path_join(pydata, "vacc_state_ageinf_ma7.json");
137-
135+
138136
return s;
139137
}
140138

141139
static EpidataFilenames country(std::string& pydata)
142140
{
143141
EpidataFilenames s(pydata);
144142

145-
s.case_data_path = mio::path_join(pydata, "cases_all_age_ma7.json");
146-
s.divi_data_path = mio::path_join(pydata, "germany_divi_ma7.json");
143+
s.case_data_path = mio::path_join(pydata, "cases_all_age_ma7.json");
144+
s.divi_data_path = mio::path_join(pydata, "germany_divi_ma7.json");
147145
s.vaccination_data_path = mio::path_join(pydata, "vacc_ageinf_ma7.json");
148-
146+
149147
return s;
150148
}
151149

cpp/memilio/io/epi_data.h

Lines changed: 24 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -133,9 +133,9 @@ class ConfirmedCasesDataEntry
133133
ScalarType num_deaths;
134134
Date date;
135135
AgeGroup age_group;
136-
boost::optional<regions::de::StateId> state_id;
137-
boost::optional<regions::de::CountyId> county_id;
138-
boost::optional<regions::de::DistrictId> district_id;
136+
boost::optional<regions::StateId> state_id;
137+
boost::optional<regions::CountyId> county_id;
138+
boost::optional<regions::DistrictId> district_id;
139139

140140
template <class IOContext>
141141
static IOResult<ConfirmedCasesDataEntry> deserialize(IOContext& io)
@@ -146,9 +146,9 @@ class ConfirmedCasesDataEntry
146146
auto num_deaths = obj.expect_element("Deaths", Tag<ScalarType>{});
147147
auto date = obj.expect_element("Date", Tag<StringDate>{});
148148
auto age_group_str = obj.expect_element("Age_RKI", Tag<std::string>{});
149-
auto state_id = obj.expect_optional("ID_State", Tag<regions::de::StateId>{});
150-
auto county_id = obj.expect_optional("ID_County", Tag<regions::de::CountyId>{});
151-
auto district_id = obj.expect_optional("ID_District", Tag<regions::de::DistrictId>{});
149+
auto state_id = obj.expect_optional("ID_State", Tag<regions::StateId>{});
150+
auto county_id = obj.expect_optional("ID_County", Tag<regions::CountyId>{});
151+
auto district_id = obj.expect_optional("ID_District", Tag<regions::DistrictId>{});
152152
return apply(
153153
io,
154154
[](auto&& nc, auto&& nr, auto&& nd, auto&& d, auto&& a_str, auto&& sid, auto&& cid,
@@ -208,19 +208,19 @@ class DiviEntry
208208
public:
209209
ScalarType num_icu;
210210
Date date;
211-
boost::optional<regions::de::StateId> state_id;
212-
boost::optional<regions::de::CountyId> county_id;
213-
boost::optional<regions::de::DistrictId> district_id;
211+
boost::optional<regions::StateId> state_id;
212+
boost::optional<regions::CountyId> county_id;
213+
boost::optional<regions::DistrictId> district_id;
214214

215215
template <class IoContext>
216216
static IOResult<DiviEntry> deserialize(IoContext& io)
217217
{
218218
auto obj = io.expect_object("DiviEntry");
219219
auto num_icu = obj.expect_element("ICU", Tag<ScalarType>{});
220220
auto date = obj.expect_element("Date", Tag<StringDate>{});
221-
auto state_id = obj.expect_optional("ID_State", Tag<regions::de::StateId>{});
222-
auto county_id = obj.expect_optional("ID_County", Tag<regions::de::CountyId>{});
223-
auto district_id = obj.expect_optional("ID_District", Tag<regions::de::DistrictId>{});
221+
auto state_id = obj.expect_optional("ID_State", Tag<regions::StateId>{});
222+
auto county_id = obj.expect_optional("ID_County", Tag<regions::CountyId>{});
223+
auto district_id = obj.expect_optional("ID_District", Tag<regions::DistrictId>{});
224224
return apply(
225225
io,
226226
[](auto&& ni, auto&& d, auto&& sid, auto&& cid, auto&& did) {
@@ -304,17 +304,17 @@ class PopulationDataEntry
304304
static std::vector<const char*> age_group_names;
305305

306306
CustomIndexArray<ScalarType, AgeGroup> population;
307-
boost::optional<regions::de::StateId> state_id;
308-
boost::optional<regions::de::CountyId> county_id;
309-
boost::optional<regions::de::DistrictId> district_id;
307+
boost::optional<regions::StateId> state_id;
308+
boost::optional<regions::CountyId> county_id;
309+
boost::optional<regions::DistrictId> district_id;
310310

311311
template <class IoContext>
312312
static IOResult<PopulationDataEntry> deserialize(IoContext& io)
313313
{
314314
auto obj = io.expect_object("PopulationDataEntry");
315-
auto state_id = obj.expect_optional("ID_State", Tag<regions::de::StateId>{});
316-
auto county_id = obj.expect_optional("ID_County", Tag<regions::de::CountyId>{});
317-
auto district_id = obj.expect_optional("ID_District", Tag<regions::de::DistrictId>{});
315+
auto state_id = obj.expect_optional("ID_State", Tag<regions::StateId>{});
316+
auto county_id = obj.expect_optional("ID_County", Tag<regions::CountyId>{});
317+
auto district_id = obj.expect_optional("ID_District", Tag<regions::DistrictId>{});
318318
std::vector<IOResult<ScalarType>> age_groups;
319319
age_groups.reserve(age_group_names.size());
320320
std::transform(age_group_names.begin(), age_group_names.end(), std::back_inserter(age_groups),
@@ -487,9 +487,9 @@ class VaccinationDataEntry
487487
num_vaccinations_refreshed_additional;
488488
Date date;
489489
AgeGroup age_group;
490-
boost::optional<regions::de::StateId> state_id;
491-
boost::optional<regions::de::CountyId> county_id;
492-
boost::optional<regions::de::DistrictId> district_id;
490+
boost::optional<regions::StateId> state_id;
491+
boost::optional<regions::CountyId> county_id;
492+
boost::optional<regions::DistrictId> district_id;
493493

494494
template <class IoContext>
495495
static IOResult<VaccinationDataEntry> deserialize(IoContext& io)
@@ -501,9 +501,9 @@ class VaccinationDataEntry
501501
auto num_vaccinations_refreshed_additional = obj.expect_optional("Vacc_refreshed_2", Tag<ScalarType>{});
502502
auto date = obj.expect_element("Date", Tag<StringDate>{});
503503
auto age_group_str = obj.expect_element("Age_RKI", Tag<std::string>{});
504-
auto state_id = obj.expect_optional("ID_County", Tag<regions::de::StateId>{});
505-
auto county_id = obj.expect_optional("ID_County", Tag<regions::de::CountyId>{});
506-
auto district_id = obj.expect_optional("ID_District", Tag<regions::de::DistrictId>{});
504+
auto state_id = obj.expect_optional("ID_County", Tag<regions::StateId>{});
505+
auto county_id = obj.expect_optional("ID_County", Tag<regions::CountyId>{});
506+
auto district_id = obj.expect_optional("ID_District", Tag<regions::DistrictId>{});
507507
return mio::apply(
508508
io,
509509
[](auto np, auto nc, auto n_refreshed_1, auto n_refreshed_2, auto d, auto&& a_str, auto sid, auto cid,

cpp/memilio/io/parameters_io.cpp

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,8 @@
3131

3232
namespace mio
3333
{
34-
IOResult<std::vector<ScalarType>> compute_divi_data(const std::vector<DiviEntry>& divi_data, const std::vector<int>& vregion, Date date)
34+
IOResult<std::vector<ScalarType>> compute_divi_data(const std::vector<DiviEntry>& divi_data,
35+
const std::vector<int>& vregion, Date date)
3536
{
3637

3738
auto max_date_entry = std::max_element(divi_data.begin(), divi_data.end(), [](auto&& a, auto&& b) {
@@ -49,7 +50,6 @@ IOResult<std::vector<ScalarType>> compute_divi_data(const std::vector<DiviEntry>
4950

5051
std::vector<ScalarType> vnum_icu(vregion.size(), 0.0);
5152

52-
5353
for (auto&& entry : divi_data) {
5454
auto it = std::find_if(vregion.begin(), vregion.end(), [&entry](auto r) {
5555
return r == 0 || r == get_region_id(entry);
@@ -86,9 +86,9 @@ read_population_data(const std::vector<PopulationDataEntry>& population_data, co
8686
auto it = std::find_if(vregion.begin(), vregion.end(), [&county_entry](auto r) {
8787
return r == 0 ||
8888
(county_entry.county_id &&
89-
regions::de::StateId(r) == regions::de::get_state_id(int(*county_entry.county_id))) ||
90-
(county_entry.county_id && regions::de::CountyId(r) == *county_entry.county_id) ||
91-
(county_entry.district_id && regions::de::DistrictId(r) == *county_entry.district_id);
89+
regions::StateId(r) == regions::get_state_id(int(*county_entry.county_id))) ||
90+
(county_entry.county_id && regions::CountyId(r) == *county_entry.county_id) ||
91+
(county_entry.district_id && regions::DistrictId(r) == *county_entry.district_id);
9292
});
9393
if (it != vregion.end()) {
9494
auto region_idx = size_t(it - vregion.begin());

cpp/memilio/mobility/graph.h

Lines changed: 2 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -155,42 +155,6 @@ class Graph
155155
using NodeProperty = NodePropertyT;
156156
using EdgeProperty = EdgePropertyT;
157157

158-
Graph(const std::vector<int>& node_ids, const std::vector<NodePropertyT>& node_properties)
159-
{
160-
assert(node_ids.size() == node_properties.size());
161-
162-
for (auto i = size_t(0); i < node_ids.size(); ++i) {
163-
add_node(node_ids[i], node_properties[i]);
164-
}
165-
}
166-
167-
Graph(std::vector<NodePropertyT>& node_properties)
168-
{
169-
for (auto i = size_t(0); i < node_properties.size(); ++i) {
170-
add_node(i, node_properties[i]);
171-
}
172-
}
173-
174-
template <class... Args>
175-
requires std::constructible_from<NodePropertyT, Args...>
176-
Graph(const std::vector<int>& node_ids, Args&&... node_args)
177-
{
178-
for (int id : node_ids) {
179-
add_node(id, std::forward<Args>(node_args)...);
180-
}
181-
}
182-
183-
template <class... Args>
184-
requires std::constructible_from<NodePropertyT, Args...>
185-
Graph(const int number_of_nodes, Args&&... args)
186-
{
187-
for (int id = 0; id < number_of_nodes; ++id) {
188-
add_node(id, std::forward<Args>(args)...);
189-
}
190-
}
191-
192-
Graph() = default;
193-
194158
/**
195159
* @brief Construct graph without edges from pairs of node_ids and node_properties.
196160
*/
@@ -376,8 +340,8 @@ void set_german_holidays(const mio::VectorRange<Node<Model>>& nodes, const mio::
376340
const mio::Date& end_date)
377341
{
378342
for (size_t node_idx = 0; node_idx < nodes.size(); ++node_idx) {
379-
auto state_id = regions::de::get_state_id(nodes[node_idx].id);
380-
auto holiday_periods = regions::de::get_holidays(state_id, start_date, end_date);
343+
auto state_id = regions::get_state_id(nodes[node_idx].id);
344+
auto holiday_periods = regions::get_holidays(state_id, start_date, end_date);
381345

382346
auto& contacts = nodes[node_idx].property.parameters.template get<ContactPattern>();
383347
contacts.get_school_holidays() =

0 commit comments

Comments
 (0)