36 #ifndef _VARIANTINDICATORIMPLEMENTATION_HPP_
37 #define _VARIANTINDICATORIMPLEMENTATION_HPP_
40 #include "VariantIndicator.hpp"
42 #include "Reporter.hpp"
70 virtual unsigned int operator()(
unsigned int chunk_id,
const Locus& locus)
const {
return 0;}
74 virtual std::string class_name()
const {
return "VariantIndicator_Trivial";}
75 virtual Parameters parameters()
const {
return Parameters();}
76 virtual void configure(
const Parameters& parameters,
const Registry& registry) {}
102 virtual unsigned int operator()(
unsigned int chunk_id,
const Locus& locus)
const;
106 virtual std::string class_name()
const {
return "VariantIndicator_IDRange";}
107 virtual Parameters parameters()
const;
108 virtual void configure(
const Parameters& parameters,
const Registry& registry);
109 virtual void write_child_configurations(std::ostream& os, std::set<std::string>& written)
const;
115 unsigned int id_start;
116 unsigned int id_count;
117 unsigned int id_step;
120 Entry(
unsigned int _id_start,
unsigned int _id_count,
unsigned int _id_step,
unsigned int _value)
121 : id_start(_id_start), id_count(_id_count), id_step(_id_step), value(_value)
125 typedef std::multimap<Locus,Entry> EntryMap;
151 virtual unsigned int operator()(
unsigned int chunk_id,
const Locus& locus)
const;
152 virtual void write_file(
const std::string& filename)
const;
156 virtual std::string class_name()
const {
return "VariantIndicator_IDSet";}
157 virtual Parameters parameters()
const;
158 virtual void configure(
const Parameters& parameters,
const Registry& registry);
159 virtual void write_child_configurations(std::ostream& os, std::set<std::string>& written)
const;
164 std::set<unsigned int> ids;
166 Entry(
unsigned int _value = -1ul, std::set<unsigned int> _ids = std::set<unsigned int>())
167 : value(_value), ids(_ids)
171 typedef std::map<Locus,Entry> EntryMap;
173 const EntryMap& entries()
const {
return entries_;}
210 virtual std::string class_name()
const {
return "VariantIndicator_Random";}
211 virtual Parameters parameters()
const;
212 virtual void configure(
const Parameters& parameters,
const Registry& registry);
214 virtual void write_child_configurations(std::ostream& os, std::set<std::string>& written)
const;
220 size_t population_index;
221 LocusListPtr locus_list;
222 std::vector<double> frequencies;
223 Random::DistributionPtr distribution;
225 LocusListInfo(
size_t _population_index,
const LocusListPtr& _locus_list,
226 std::vector<double> _frequencies)
227 : population_index(_population_index), locus_list(_locus_list), frequencies(_frequencies)
230 LocusListInfo(
size_t _population_index,
const LocusListPtr& _locus_list,
231 Random::DistributionPtr _distribution)
232 : population_index(_population_index), locus_list(_locus_list), distribution(_distribution)
236 typedef std::vector<LocusListInfo> LocusListInfos;
237 LocusListInfos locus_list_infos_;
267 virtual unsigned int operator()(
unsigned int chunk_id,
const Locus& locus)
const;
271 virtual std::string class_name()
const {
return "VariantIndicator_File";}
272 virtual Parameters parameters()
const;
273 virtual void configure(
const Parameters& parameters,
const Registry& registry);
274 virtual void write_child_configurations(std::ostream& os, std::set<std::string>& written)
const;
280 std::vector<Locus> loci_;
281 std::map<Locus, size_t> locus_index_map_;
316 double allele_frequency = 0);
319 virtual std::string class_name()
const {
return "VariantIndicator_SingleLocusHardyWeinberg";}
320 virtual Parameters parameters()
const;
321 virtual void configure(
const Parameters& parameters,
const Registry& registry);
323 virtual void write_child_configurations(std::ostream& os, std::set<std::string>& written)
const;
328 double allele_frequency_;
362 size_t population_size = 0,
364 double allele_frequency_1 = 0,
366 double allele_frequency_2 = 0,
368 unsigned int id_offset_step = 0);
370 virtual unsigned int operator()(
unsigned int chunk_id,
const Locus& locus)
const;
374 virtual std::string class_name()
const {
return "VariantIndicator_TwoLocusLD";}
375 virtual Parameters parameters()
const;
376 virtual void configure(
const Parameters& parameters,
const Registry& registry);
377 virtual void write_child_configurations(std::ostream& os, std::set<std::string>& written)
const;
381 size_t population_size_;
383 double allele_frequency_1_;
385 double allele_frequency_2_;
387 unsigned int id_offset_step_;
411 unsigned int unused_id_start = 0,
412 VariantIndicatorPtr vi = VariantIndicatorPtr(),
413 const std::string& output_directory =
"");
415 virtual unsigned int operator()(
unsigned int chunk_id,
const Locus& locus)
const;
417 virtual unsigned int mutate(
unsigned int old_chunk_id,
const Locus& locus,
unsigned int value);
419 void report(std::ostream& os)
const;
423 virtual std::string class_name()
const {
return "VariantIndicator_Mutable";}
424 virtual Parameters parameters()
const;
425 virtual void configure(
const Parameters& parameters,
const Registry& registry);
427 virtual void write_child_configurations(std::ostream& os, std::set<std::string>& written)
const;
431 virtual void update(
size_t generation_index,
432 const PopulationPtrs& populations,
433 const PopulationDatas& population_datas,
434 bool is_final_generation);
436 virtual Loci loci(
size_t generation_index,
437 bool is_final_generation)
const;
441 unsigned int unused_id_start_;
442 unsigned int unused_id_current_;
443 VariantIndicatorPtr vi_;
445 bfs::ofstream os_debug_;
447 typedef std::map<unsigned int, unsigned int> IDAncestry;
448 IDAncestry id_ancestry_;
450 typedef std::map<unsigned int, unsigned int> IDValueMap;
451 typedef std::map<Locus, IDValueMap> IDValueMaps;
452 IDValueMaps id_value_maps_;
456 #endif // _VARIANTINDICATORIMPLEMENTATION_HPP_