36 #ifndef _REPORTERIMPLEMENTATION_HPP_
37 #define _REPORTER_IMPLEMENTATIONHPP_
40 #include "Reporter.hpp"
41 #include "Simulator.hpp"
42 #include "boost/filesystem.hpp"
43 #include "boost/filesystem/fstream.hpp"
47 namespace bfs = boost::filesystem;
80 const std::vector<double>& times() {
return times_;}
81 double mean_generation_time()
const;
83 virtual void update(
size_t generation_index,
84 const PopulationPtrs& populations,
85 const PopulationDataPtrs& population_datas,
86 bool is_final_generation);
90 virtual std::string class_name()
const {
return "Reporter_Timer";}
91 virtual Parameters parameters()
const;
92 virtual void configure(
const Parameters& parameters,
const Registry& registry);
97 std::vector<double> times_;
124 virtual void update(
size_t generation_index,
125 const PopulationPtrs& populations,
126 const PopulationDataPtrs& population_datas,
127 bool is_final_generation);
131 virtual std::string class_name()
const {
return "Reporter_Population";}
132 virtual Parameters parameters()
const;
133 virtual void configure(
const Parameters& parameters,
const Registry& registry);
172 virtual void update(
size_t generation_index,
173 const PopulationPtrs& populations,
174 const PopulationDataPtrs& population_datas,
175 bool is_final_generation);
177 virtual Loci loci(
size_t generation_index,
178 bool is_final_generation)
const {
return loci_;}
182 virtual std::string class_name()
const {
return "Reporter_AlleleFrequencies";}
183 virtual Parameters parameters()
const;
184 virtual void configure(
const Parameters& parameters,
const Registry& registry);
186 virtual void write_child_configurations(std::ostream& os, std::set<std::string>& ids_written)
const;
192 Loci loci_specified_;
193 LocusListPtrs locus_lists_specified_;
194 QuantitativeTraitPtrs qts_specified_;
196 typedef shared_ptr<std::ostream> OstreamPtr;
197 typedef std::map<Locus, OstreamPtr> OstreamMap;
200 std::string generate_filename(
const Locus& locus)
const;
232 virtual void update(
size_t generation_index,
233 const PopulationPtrs& populations,
234 const PopulationDataPtrs& population_datas,
235 bool is_final_generation);
237 virtual Loci loci(
size_t generation_index,
238 bool is_final_generation)
const;
242 virtual std::string class_name()
const {
return "Reporter_LD";}
243 virtual Parameters parameters()
const;
244 virtual void configure(
const Parameters& parameters,
const Registry& registry);
245 virtual void write_child_configurations(std::ostream& os, std::set<std::string>& ids_written)
const;
282 const std::string& qtid =
"");
284 virtual void update(
size_t generation_index,
285 const PopulationPtrs& populations,
286 const PopulationDataPtrs& population_datas,
287 bool is_final_generation);
291 virtual std::string class_name()
const {
return "Reporter_TraitValues";}
292 virtual Parameters parameters()
const;
293 virtual void configure(
const Parameters& parameters,
const Registry& registry);
299 bool ignore_zero_values_;
300 bfs::ofstream os_mean_;
332 std::string configuration()
const;
335 typedef std::map<size_t, ChromosomeEntry> ChromosomeEntries;
338 const ChromosomeEntries& chromosome_entries = ChromosomeEntries());
340 virtual void update(
size_t generation_index,
341 const PopulationPtrs& populations,
342 const PopulationDataPtrs& population_datas,
343 bool is_final_generation);
347 virtual std::string class_name()
const {
return "Reporter_HaplotypeDiversity";}
348 virtual Parameters parameters()
const;
349 virtual void configure(
const Parameters& parameters,
const Registry& registry);
353 ChromosomeEntries chromosome_entries_;
356 typedef std::map< size_t, std::vector< shared_ptr<bfs::ofstream> > > ChromosomeStreams;
357 ChromosomeStreams chromosome_streams_;
359 void open_streams(
size_t population_count);
375 virtual size_t group_count()
const = 0;
376 virtual size_t group(
unsigned int chromosome_id)
const = 0;
381 virtual std::string class_name()
const;
382 virtual Parameters parameters()
const;
383 virtual void configure(
const Parameters& parameters,
const Registry& registry);
387 typedef shared_ptr<HaplotypeGrouping> HaplotypeGroupingPtr;
413 virtual size_t group_count()
const;
414 virtual size_t group(
unsigned int chromosome_id)
const;
418 virtual std::string class_name()
const {
return "HaplotypeGrouping_IDRange";}
419 virtual Parameters parameters()
const;
420 virtual void configure(
const Parameters& parameters,
const Registry& registry);
424 std::vector<unsigned int> id_starts_;
425 std::vector<unsigned int> id_counts_;
454 virtual size_t group_count()
const;
455 virtual size_t group(
unsigned int chromosome_id)
const;
459 virtual std::string class_name()
const {
return "HaplotypeGrouping_Uniform";}
460 virtual Parameters parameters()
const;
461 virtual void configure(
const Parameters& parameters,
const Registry& registry);
465 unsigned int ids_per_group_;
466 unsigned int id_offset_;
467 unsigned int id_count_;
495 HaplotypeGroupingPtr haplotype_grouping = HaplotypeGroupingPtr(),
496 size_t chromosome_step = 0,
497 size_t update_step = 0);
499 virtual void update(
size_t generation_index,
500 const PopulationPtrs& populations,
501 const PopulationDataPtrs& population_datas,
502 bool is_final_generation);
506 virtual std::string class_name()
const {
return "Reporter_HaplotypeFrequencies";}
507 virtual Parameters parameters()
const;
508 virtual void configure(
const Parameters& parameters,
const Registry& registry);
510 virtual void write_child_configurations(std::ostream& os, std::set<std::string>& ids_written)
const;
514 HaplotypeGroupingPtr haplotype_grouping_;
515 size_t chromosome_step_;
517 std::vector<unsigned int> chromosome_lengths_;
519 void write_haplotype_frequencies(std::ostream& os,
const Population& population,
520 size_t chromosome_pair_index,
unsigned int chromosome_length)
const;
552 : locus(_locus), length(_length)
555 std::string configuration()
const;
558 typedef std::vector<Region> Regions;
561 const Regions& regions = Regions());
563 virtual void update(
size_t generation_index,
564 const PopulationPtrs& populations,
565 const PopulationDataPtrs& population_datas,
566 bool is_final_generation);
570 virtual std::string class_name()
const {
return "Reporter_Regions";}
571 virtual Parameters parameters()
const;
572 virtual void configure(
const Parameters& parameters,
const Registry& registry);
573 virtual void write_child_configurations(std::ostream& os, std::set<std::string>& ids_written)
const;
578 unsigned int ms_mapping_begin_;
579 unsigned int ms_mapping_end_;
608 double initial_allele_frequency = 0,
609 std::vector<double> w = std::vector<double>(3))
610 :
Configurable(
id), initial_allele_frequency_(initial_allele_frequency), w_(w), generation_count_(0)
613 virtual void update(
size_t generation_number,
614 const PopulationPtrs& populations,
615 const PopulationDataPtrs& population_datas,
616 bool is_final_generation);
620 virtual std::string class_name()
const {
return "Reporter_DeterministicTrajectories";}
621 virtual Parameters parameters()
const;
622 virtual void configure(
const Parameters& parameters,
const Registry& registry);
627 double initial_allele_frequency_;
628 std::vector<double> w_;
629 double generation_count_;
633 #endif // _REPORTERIMPLEMENTATION_HPP_