Program Listing for File read_innoculum_doses.hpp¶
↰ Return to documentation for file (include/dish2/load/read_innoculum_doses.hpp)
#pragma once
#ifndef DISH2_LOAD_READ_INNOCULUM_DOSES_HPP_INCLUDE
#define DISH2_LOAD_READ_INNOCULUM_DOSES_HPP_INCLUDE
#include <cstddef>
#include "../../../third-party/conduit/include/uitsl/math/math_utils.hpp"
#include "../../../third-party/conduit/include/uitsl/polyfill/filesystem.hpp"
#include "../../../third-party/Empirical/include/emp/base/vector.hpp"
#include "../../../third-party/Empirical/include/emp/tools/keyname_utils.hpp"
#include "../debug/log_msg.hpp"
#include "load_innoculum.hpp"
namespace dish2 {
emp::vector<size_t> read_innoculum_doses(
const emp::vector<std::filesystem::path>& innoculum_paths
) {
emp::vector<size_t> innoculum_doses;
std::transform(
std::begin( innoculum_paths ),
std::end( innoculum_paths ),
std::back_inserter( innoculum_doses ),
[](const auto& path){
const auto attrs = emp::keyname::unpack(path);
if (attrs.count("dose")) {
return uitsl::stoszt( attrs.at("dose") );
} else return size_t{1}; // default dose is 1
}
);
for (size_t i{}; i < innoculum_doses.size(); ++i) {
dish2::log_msg( "bucket ", i, " has dose ", innoculum_doses[i] );
}
return innoculum_doses;
}
} // namespace dish2
#endif // #ifndef DISH2_LOAD_READ_INNOCULUM_DOSES_HPP_INCLUDE