Program Listing for File make_genome_slug.hpp¶
↰ Return to documentation for file (include/dish2/load/make_genome_slug.hpp)
#pragma once
#ifndef DISH2_LOAD_MAKE_GENOME_SLUG_HPP_INCLUDE
#define DISH2_LOAD_MAKE_GENOME_SLUG_HPP_INCLUDE
#include <algorithm>
#include <set>
#include <string>
#include <unordered_set>
namespace dish2 {
std::string make_genome_slug( const std::string& genome_filename ) {
const auto innoculum_attrs = emp::keyname::unpack( genome_filename );
emp::keyname::unpack_t res_attrs;
std::copy_if(
std::begin( innoculum_attrs ), std::end( innoculum_attrs ),
std::inserter( res_attrs, std::begin( res_attrs ) ),
[]( const auto& kv_pair ){ return std::unordered_set<std::string>{
"criteria", "morph", "proc", "replicate",
"series", "stint", "thread", "treatment", "variation"
}.count( kv_pair.first ); }
);
return emp::keyname::demote( emp::keyname::pack( res_attrs ) );
}
} // namespace dish2
#endif // #ifndef DISH2_LOAD_MAKE_GENOME_SLUG_HPP_INCLUDE