Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 1 addition & 8 deletions cpp/memilio/utils/parameter_distributions.h
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,6 @@
#ifndef PARAMETER_DISTRIBUTIONS_H
#define PARAMETER_DISTRIBUTIONS_H

#include "memilio/utils/compiler_diagnostics.h"
#include "memilio/utils/logging.h"
#include "memilio/utils/visitor.h"
#include "memilio/utils/random_number_generator.h"
Expand Down Expand Up @@ -275,11 +274,6 @@ class ParameterDistributionNormal : public VisitableParameterDistribution<Parame
return m_standard_dev;
}

void log_stddev_changes(bool log_stddev_change)
{
m_log_stddev_change = log_stddev_change;
}

void set_lower_bound(ScalarType lower_bound)
{
m_lower_bound = lower_bound;
Expand Down Expand Up @@ -338,7 +332,7 @@ class ParameterDistributionNormal : public VisitableParameterDistribution<Parame

int i = 0;
int retries = 10;
ScalarType rnumb = m_distribution.get_distribution_instance()(thread_local_rng(), m_distribution.params);
ScalarType rnumb = m_distribution.get_distribution_instance()(rng, m_distribution.params);
while ((rnumb > m_upper_bound || rnumb < m_lower_bound) && i < retries) {
rnumb = m_distribution.get_distribution_instance()(rng, m_distribution.params);
i++;
Expand Down Expand Up @@ -430,7 +424,6 @@ class ParameterDistributionNormal : public VisitableParameterDistribution<Parame
ScalarType m_lower_bound = std::numeric_limits<ScalarType>::min();
ScalarType m_quantile = 2.5758; // default is 0.995 quartile
NormalDistribution<ScalarType>::ParamType m_distribution;
bool m_log_stddev_change = true;
};

template <class IOObj>
Expand Down
4 changes: 2 additions & 2 deletions cpp/tests/random_number_test.h
Original file line number Diff line number Diff line change
Expand Up @@ -59,9 +59,9 @@ class RandomNumberTest : public ::testing::Test
protected:
void SetUp() override
{
log_rng_seeds(m_rng, mio::LogLevel::warn);
m_rng.set_counter(mio::Counter<uint64_t>{0});
}

private:
mio::RandomNumberGenerator m_rng{}; ///< Seeded rng used by this test fixture.
static inline mio::RandomNumberGenerator m_rng = mio::thread_local_rng(); ///< Seeded rng used by this test fixture.
};
11 changes: 0 additions & 11 deletions cpp/tests/test_abstract_parameter_dist.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -23,13 +23,10 @@
#include "memilio/utils/random_number_generator.h"
#include "models/abm/personal_rng.h"
#include <gtest/gtest.h>
#include <stdio.h>
#include <vector>

TEST(AbstractParameterDist, test_abstract_normal_distribution)
{
mio::log_thread_local_rng_seeds(mio::LogLevel::warn);

mio::AbstractParameterDistribution p1(mio::ParameterDistributionNormal(10., 0.5));
mio::AbstractParameterDistribution p2(mio::ParameterDistributionNormal(20., 0.3));
auto params1 = std::vector<double>{10., 0.5};
Expand All @@ -52,8 +49,6 @@ TEST(AbstractParameterDist, test_abstract_normal_distribution)

TEST(AbstractParameterDist, test_abstract_uniform_distribution)
{
mio::log_thread_local_rng_seeds(mio::LogLevel::warn);

mio::AbstractParameterDistribution p1(mio::ParameterDistributionUniform(0., 1.));
mio::AbstractParameterDistribution p2(mio::ParameterDistributionUniform(2., 3.));
auto params1 = std::vector<double>{0., 1.};
Expand All @@ -78,8 +73,6 @@ TEST(AbstractParameterDist, test_abstract_uniform_distribution)

TEST(AbstractParameterDist, test_abstract_lognormal_distribution)
{
mio::log_thread_local_rng_seeds(mio::LogLevel::warn);

mio::AbstractParameterDistribution p1(mio::ParameterDistributionLogNormal(1., 0.25));
mio::AbstractParameterDistribution p2(mio::ParameterDistributionLogNormal(2., 0.1));
auto params1 = std::vector<double>{1., 0.25};
Expand All @@ -102,8 +95,6 @@ TEST(AbstractParameterDist, test_abstract_lognormal_distribution)

TEST(AbstractParameterDist, test_abstract_exponential_distribution)
{
mio::log_thread_local_rng_seeds(mio::LogLevel::warn);

mio::AbstractParameterDistribution p1(mio::ParameterDistributionExponential(1.));
mio::AbstractParameterDistribution p2(mio::ParameterDistributionExponential(2.));
auto params1 = std::vector<double>{1.};
Expand All @@ -126,8 +117,6 @@ TEST(AbstractParameterDist, test_abstract_exponential_distribution)

TEST(AbstractParameterDist, test_abstract_constant_distribution)
{
mio::log_thread_local_rng_seeds(mio::LogLevel::warn);

mio::AbstractParameterDistribution p1(mio::ParameterDistributionConstant(1.));
mio::AbstractParameterDistribution p2(mio::ParameterDistributionConstant(2.));
auto params1 = std::vector<double>{1.};
Expand Down
12 changes: 10 additions & 2 deletions cpp/tests/test_analyze_result.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@
#include "memilio/utils/time_series.h"
#include "ode_secir/analyze_result.h"
#include "ode_secir/model.h"
#include "utils.h"

#include "gtest/gtest.h"
#include "gmock/gmock.h"
Expand Down Expand Up @@ -679,15 +680,19 @@ TEST(TestMergeTimeSeries, joint_tp_add)

TEST(TestMergeTimeSeries, joint_tp)
{
mio::RedirectLogger logger;
logger.capture();

mio::TimeSeries<double> ts1(2);
mio::TimeSeries<double> ts2(2);
ts1.add_time_point(0., mio::TimeSeries<double>::Vector::Constant(2, 1.));
ts2.add_time_point(0., mio::TimeSeries<double>::Vector::Constant(2, 2.));

//Check for both TimeSeries having only one time point
auto merged_ts_status = mio::merge_time_series(ts1, ts2, false);
auto merged_ts = merged_ts_status.value();
EXPECT_THAT(logger.read(), testing::HasSubstr("Both TimeSeries have values for t=0"));
ASSERT_TRUE(merged_ts_status);
auto merged_ts = merged_ts_status.value();
ASSERT_EQ(merged_ts.get_num_time_points(), 1);
EXPECT_NEAR(merged_ts.get_time(0), 0., 1e-12);
EXPECT_NEAR(merged_ts.get_value(0)[0], 1., 1e-12);
Expand All @@ -698,13 +703,16 @@ TEST(TestMergeTimeSeries, joint_tp)
ts2.add_time_point(1., mio::TimeSeries<double>::Vector::Constant(2, 3.));

merged_ts_status = mio::merge_time_series(ts1, ts2, false);
merged_ts = merged_ts_status.value();
EXPECT_THAT(logger.read(), testing::AllOf(testing::HasSubstr("Both TimeSeries have values for t=0"),
testing::HasSubstr("Both TimeSeries have values for t=1")));
ASSERT_TRUE(merged_ts_status);
merged_ts = merged_ts_status.value();
ASSERT_EQ(merged_ts.get_num_time_points(), 2);
EXPECT_NEAR(merged_ts.get_time(0), 0., 1e-12);
EXPECT_NEAR(merged_ts.get_value(0)[0], 1., 1e-12);
EXPECT_NEAR(merged_ts.get_value(0)[1], 1., 1e-12);
EXPECT_NEAR(merged_ts.get_time(1), 1., 1e-12);
EXPECT_NEAR(merged_ts.get_value(1)[0], 2., 1e-12);
EXPECT_NEAR(merged_ts.get_value(1)[1], 2., 1e-12);
logger.release();
}
16 changes: 5 additions & 11 deletions cpp/tests/test_binary_serializer.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -17,22 +17,17 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#include "boost/none.hpp"
#include "boost/none_t.hpp"
#include "matchers.h"
#include "memilio/epidemiology/damping.h"
#include "memilio/epidemiology/damping_sampling.h"
#include "memilio/io/binary_serializer.h"
#include "memilio/io/io.h"
#include "memilio/utils/logging.h"
#include "memilio/utils/parameter_distributions.h"
#include "memilio/utils/time_series.h"
#include "memilio/utils/uncertain_value.h"
#include "ode_secir/model.h"
#include "ode_secir/parameter_space.h"
#include "ode_secir/parameters.h"
#include "utils.h"

#include "boost/none.hpp"
#include "gtest/gtest.h"
#include <memory>

namespace
{
Expand Down Expand Up @@ -180,10 +175,9 @@ TEST(BinarySerializer, model)
//this test is only to make sure the correct number of bytes are serialized/deserialized
//in a very complex object. correct serializing of single values is tested by other tests.
mio::osecir::Model<double> model{5};
mio::set_log_level(mio::LogLevel::err);
mio::osecir::set_params_distributions_normal<double>(model, 0, 10, 0.01);
mio::set_log_level(mio::LogLevel::warn);
auto stream = mio::serialize_binary(model);
mio::LogLevelOverride llo(mio::LogLevel::off); // suppress warnings from model constructor
auto result = mio::deserialize_binary(stream, mio::Tag<mio::osecir::Model<double>>{});
EXPECT_THAT(result, IsSuccess());
}
Expand Down Expand Up @@ -233,4 +227,4 @@ TEST(ByteStream, reset)
auto p = (unsigned char*)&i;
EXPECT_TRUE(stream.read(p, sizeof(i)));
EXPECT_EQ(i, 0);
}
}
13 changes: 7 additions & 6 deletions cpp/tests/test_epi_data_io.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -17,21 +17,19 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/

#include "abm/infection_state.h"
#include "memilio/epidemiology/age_group.h"
#include "memilio/geography/regions.h"
#include "memilio/io/epi_data.h"
#include "matchers.h"
#include "memilio/io/io.h"
#include "memilio/io/mobility_io.h"
#include "test_data_dir.h"
#include "gtest/gtest.h"
#include "json/value.h"
#include "ode_secirts/model.h"
#include "ode_secirts/parameters_io.h"
#include "memilio/utils/stl_util.h"
#include "boost/optional/optional_io.hpp"
#include "utils.h"
#include <gmock/gmock-matchers.h>

TEST(TestEpiDataIo, read_rki)
Expand Down Expand Up @@ -423,9 +421,12 @@ TEST(TestEpiData, set_vaccination_data)
model.parameters.set<mio::osecirts::DaysUntilEffectiveBoosterImmunity<double>>(1);
std::vector<mio::osecirts::Model<double>> model_vector{model};

auto f = mio::osecirts::details::set_vaccination_data(model_vector,
mio::path_join(TEST_DATA_DIR, "vaccination_test.json"),
mio::Date(2022, 4, 15), county_ids, num_days);
{
mio::LogLevelOverride llo(mio::LogLevel::off); // suppress "Vaccination data only available from [...]"
mio::unused(mio::osecirts::details::set_vaccination_data(model_vector,
mio::path_join(TEST_DATA_DIR, "vaccination_test.json"),
mio::Date(2022, 4, 15), county_ids, num_days));
}

auto expected_values_PI =
(Eigen::ArrayXd(num_age_groups * (num_days + 1)) << 7, 10, 20, 15, 10, 5, 2, 15, 8, 0).finished();
Expand Down
9 changes: 8 additions & 1 deletion cpp/tests/test_graph.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -35,10 +35,13 @@
#include "matchers.h"
#include "temp_file_register.h"
#include "memilio/utils/stl_util.h"
#include "utils.h"
#include "gmock/gmock-matchers.h"
#include "gmock/gmock.h"
#include <cstddef>
#include <gtest/gtest.h>
#include <gmock/gmock.h>
#include <sys/types.h>
#include <type_traits>
#include <string>

Expand Down Expand Up @@ -148,7 +151,7 @@ TEST(TestGraph, graph_without_edges)
std::vector<int> ids = {1, 2};

mio::Graph<MockModel, MockMobility> g(ids, models);

EXPECT_EQ(g.edges().size(), 0);
EXPECT_EQ(g.nodes().size(), 2);
EXPECT_EQ(g.nodes()[0].id, 1);
Expand Down Expand Up @@ -373,7 +376,11 @@ TEST(TestGraphBuilder, Build_unique)
builder.add_edge(1, 2, 200);
builder.add_edge(2, 1, 300);

mio::RedirectLogger logger;
logger.capture();
auto g = std::move(builder).build(true);
EXPECT_THAT(logger.read(), testing::HasSubstr("[warning] Removed duplicate edge(s)"));
logger.release();

EXPECT_EQ(g.nodes().size(), 3);
EXPECT_EQ(g.edges().size(), 3);
Expand Down
22 changes: 12 additions & 10 deletions cpp/tests/test_graph_abm.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -29,13 +29,10 @@
#include "graph_abm/graph_abm_mobility.h"
#include "memilio/epidemiology/age_group.h"
#include "memilio/utils/logging.h"
#include "memilio/utils/miompi.h"
#include "memilio/mobility/graph.h"
#include "abm_helpers.h"
#include <algorithm>
#include <cstddef>
#include "utils.h"

#include <gtest/gtest.h>
#include <iostream>

struct MockHistory {

Expand Down Expand Up @@ -253,10 +250,15 @@ TEST(TestGraphABM, test_get_person)
auto& p1 = model.get_person(pid1);
EXPECT_EQ(p1.get_location(), home);
EXPECT_EQ(p1.get_age(), mio::AgeGroup(0));
model.remove_person(model.get_person_index(pid1));
EXPECT_EQ(model.get_person_index(pid1), std::numeric_limits<uint32_t>::max());

auto& p2 = model.get_person(pid2);
EXPECT_EQ(p2.get_location(), work);
EXPECT_EQ(p2.get_age(), mio::AgeGroup(1));
{
model.remove_person(model.get_person_index(pid1));

mio::LogLevelOverride llo(mio::LogLevel::off);
EXPECT_EQ(model.get_person_index(pid1), std::numeric_limits<uint32_t>::max());

auto& p2 = model.get_person(pid2);
EXPECT_EQ(p2.get_location(), work);
EXPECT_EQ(p2.get_age(), mio::AgeGroup(1));
}
}
3 changes: 3 additions & 0 deletions cpp/tests/test_odemseirs4.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@
#include "ode_mseirs4/model.h"
#include "ode_mseirs4/infection_state.h"
#include "ode_mseirs4/parameters.h"
#include "utils.h"

#include <gtest/gtest.h>

Expand Down Expand Up @@ -113,6 +114,7 @@ TEST_F(ModelTestOdeMseirs4, checkPopulationConservation)

TEST(TestOdeMseirs4, apply_constraints_parameters)
{
mio::LogLevelOverride llo(mio::LogLevel::off); // hide contstraint warnings/errors
mio::omseirs4::Model<double> model;

auto& params = model.parameters;
Expand Down Expand Up @@ -148,6 +150,7 @@ TEST(TestOdeMseirs4, apply_constraints_parameters)

TEST(TestOdeMseirs4, check_constraints_parameters)
{
mio::LogLevelOverride llo(mio::LogLevel::off); // hide contstraint warnings/errors
mio::omseirs4::Model<double> model;
auto& params = model.parameters;

Expand Down
Loading