Program Listing for File load_innoculum.hpp¶
↰ Return to documentation for file (include/dish2/load/load_innoculum.hpp)
#pragma once
#ifndef DISH2_LOAD_LOAD_INNOCULUM_HPP_INCLUDE
#define DISH2_LOAD_LOAD_INNOCULUM_HPP_INCLUDE
#include <algorithm>
#include <fstream>
#include "../../../third-party/conduit/include/uitsl/mpi/comm_utils.hpp"
#include "../../../third-party/Empirical/include/emp/base/always_assert.hpp"
#include "../../../third-party/Empirical/include/emp/base/assert.hpp"
#include "../../../third-party/Empirical/include/emp/tools/keyname_utils.hpp"
#include "../genome/Genome.hpp"
#include "get_innoculum_filename.hpp"
#include "load_innoculum_genome.hpp"
#include "load_innoculum_population.hpp"
namespace dish2 {
template< typename Spec >
emp::vector<dish2::Genome<Spec>> load_innoculum(
const std::filesystem::path& path
) {
const auto attrs = emp::keyname::unpack( path );
emp_assert( attrs.count("a") );
const auto& a = attrs.at("a");
if ( a == "genome" ) return { dish2::load_innoculum_genome<Spec>(path) };
else if ( a == "population" ) {
return dish2::load_innoculum_population<Spec>( path );
} else {
emp_always_assert(false, path, a, uitsl::get_proc_id(), dish2::thread_idx);
__builtin_unreachable();
}
}
template< typename Spec >
emp::vector<dish2::Genome<Spec>> load_innoculum( const size_t root_id ) {
return dish2::load_innoculum<Spec>( dish2::get_innoculum_filename(root_id) );
}
} // namespace dish2
#endif // #ifndef DISH2_LOAD_LOAD_INNOCULUM_HPP_INCLUDE