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 PopulationDatas& 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 PopulationDatas& 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 PopulationDatas& 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 PopulationDatas& 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;
281 const std::string& qtid =
"");
283 virtual void update(
size_t generation_index,
284 const PopulationPtrs& populations,
285 const PopulationDatas& population_datas,
286 bool is_final_generation);
290 virtual std::string class_name()
const {
return "Reporter_TraitValues";}
291 virtual Parameters parameters()
const;
292 virtual void configure(
const Parameters& parameters,
const Registry& registry);
298 bfs::ofstream os_mean_;
324 virtual void update(
size_t generation_index,
325 const PopulationPtrs& populations,
326 const PopulationDatas& population_datas,
327 bool is_final_generation);
331 virtual std::string class_name()
const {
return "Reporter_MeanFitnesses";}
332 virtual Parameters parameters()
const;
333 virtual void configure(
const Parameters& parameters,
const Registry& registry);
369 std::string configuration()
const;
372 typedef std::map<size_t, ChromosomeEntry> ChromosomeEntries;
375 const ChromosomeEntries& chromosome_entries = ChromosomeEntries());
377 virtual void update(
size_t generation_index,
378 const PopulationPtrs& populations,
379 const PopulationDatas& population_datas,
380 bool is_final_generation);
384 virtual std::string class_name()
const {
return "Reporter_HaplotypeDiversity";}
385 virtual Parameters parameters()
const;
386 virtual void configure(
const Parameters& parameters,
const Registry& registry);
390 ChromosomeEntries chromosome_entries_;
393 typedef std::map< size_t, std::vector< shared_ptr<bfs::ofstream> > > ChromosomeStreams;
394 ChromosomeStreams chromosome_streams_;
396 void open_streams(
size_t population_count);
412 virtual size_t group_count()
const = 0;
413 virtual size_t group(
unsigned int chromosome_id)
const = 0;
418 virtual std::string class_name()
const;
419 virtual Parameters parameters()
const;
420 virtual void configure(
const Parameters& parameters,
const Registry& registry);
424 typedef shared_ptr<HaplotypeGrouping> HaplotypeGroupingPtr;
450 virtual size_t group_count()
const;
451 virtual size_t group(
unsigned int chromosome_id)
const;
455 virtual std::string class_name()
const {
return "HaplotypeGrouping_IDRange";}
456 virtual Parameters parameters()
const;
457 virtual void configure(
const Parameters& parameters,
const Registry& registry);
461 std::vector<unsigned int> id_starts_;
462 std::vector<unsigned int> id_counts_;
491 virtual size_t group_count()
const;
492 virtual size_t group(
unsigned int chromosome_id)
const;
496 virtual std::string class_name()
const {
return "HaplotypeGrouping_Uniform";}
497 virtual Parameters parameters()
const;
498 virtual void configure(
const Parameters& parameters,
const Registry& registry);
502 unsigned int ids_per_group_;
503 unsigned int id_offset_;
504 unsigned int id_count_;
532 HaplotypeGroupingPtr haplotype_grouping = HaplotypeGroupingPtr(),
533 size_t chromosome_step = 0,
534 size_t update_step = 0);
536 virtual void update(
size_t generation_index,
537 const PopulationPtrs& populations,
538 const PopulationDatas& population_datas,
539 bool is_final_generation);
543 virtual std::string class_name()
const {
return "Reporter_HaplotypeFrequencies";}
544 virtual Parameters parameters()
const;
545 virtual void configure(
const Parameters& parameters,
const Registry& registry);
547 virtual void write_child_configurations(std::ostream& os, std::set<std::string>& ids_written)
const;
551 HaplotypeGroupingPtr haplotype_grouping_;
552 size_t chromosome_step_;
554 std::vector<unsigned int> chromosome_lengths_;
556 void write_haplotype_frequencies(std::ostream& os,
const Population& population,
557 size_t chromosome_pair_index,
unsigned int chromosome_length)
const;
589 : locus(_locus), length(_length)
592 std::string configuration()
const;
595 typedef std::vector<Region> Regions;
598 const Regions& regions = Regions());
600 virtual void update(
size_t generation_index,
601 const PopulationPtrs& populations,
602 const PopulationDatas& population_datas,
603 bool is_final_generation);
607 virtual std::string class_name()
const {
return "Reporter_Regions";}
608 virtual Parameters parameters()
const;
609 virtual void configure(
const Parameters& parameters,
const Registry& registry);
610 virtual void write_child_configurations(std::ostream& os, std::set<std::string>& ids_written)
const;
615 unsigned int ms_mapping_begin_;
616 unsigned int ms_mapping_end_;
645 double initial_allele_frequency = 0,
646 std::vector<double> w = std::vector<double>(3))
647 :
Configurable(
id), initial_allele_frequency_(initial_allele_frequency), w_(w), generation_count_(0)
650 virtual void update(
size_t generation_number,
651 const PopulationPtrs& populations,
652 const PopulationDatas& population_datas,
653 bool is_final_generation);
657 virtual std::string class_name()
const {
return "Reporter_DeterministicTrajectories";}
658 virtual Parameters parameters()
const;
659 virtual void configure(
const Parameters& parameters,
const Registry& registry);
664 double initial_allele_frequency_;
665 std::vector<double> w_;
666 double generation_count_;
670 #endif // _REPORTERIMPLEMENTATION_HPP_