36 #ifndef _REPORTERIMPLEMENTATION_HPP_
37 #define _REPORTERIMPLEMENTATION_HPP_
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;
234 virtual void update(
size_t generation_index,
235 const PopulationPtrs& populations,
236 const PopulationDataPtrs& population_datas,
237 bool is_final_generation);
239 virtual Loci loci(
size_t generation_index,
240 bool is_final_generation)
const;
244 virtual std::string class_name()
const {
return "Reporter_LD";}
245 virtual Parameters parameters()
const;
246 virtual void configure(
const Parameters& parameters,
const Registry& registry);
247 virtual void write_child_configurations(std::ostream& os, std::set<std::string>& ids_written)
const;
286 virtual void update(
size_t generation_index,
287 const PopulationPtrs& populations,
288 const PopulationDataPtrs& population_datas,
289 bool is_final_generation);
293 virtual std::string class_name()
const {
return "Reporter_TraitValues";}
294 virtual Parameters parameters()
const;
295 virtual void configure(
const Parameters& parameters,
const Registry& registry);
299 std::vector<std::string> qtids_;
300 std::set<std::string> qtids_ignore_zero_values_;
302 std::string filetag_;
304 typedef shared_ptr<std::ostream> OstreamPtr;
305 typedef std::vector<OstreamPtr> OstreamPtrs;
306 OstreamPtrs os_means_;
338 std::string configuration()
const;
341 typedef std::map<size_t, ChromosomeEntry> ChromosomeEntries;
344 const ChromosomeEntries& chromosome_entries = ChromosomeEntries());
346 virtual void update(
size_t generation_index,
347 const PopulationPtrs& populations,
348 const PopulationDataPtrs& population_datas,
349 bool is_final_generation);
353 virtual std::string class_name()
const {
return "Reporter_HaplotypeDiversity";}
354 virtual Parameters parameters()
const;
355 virtual void configure(
const Parameters& parameters,
const Registry& registry);
359 ChromosomeEntries chromosome_entries_;
362 typedef std::map< size_t, std::vector< shared_ptr<bfs::ofstream> > > ChromosomeStreams;
363 ChromosomeStreams chromosome_streams_;
365 void open_streams(
size_t population_count);
381 virtual size_t group_count()
const = 0;
382 virtual size_t group(
unsigned int chromosome_id)
const = 0;
387 virtual std::string class_name()
const;
388 virtual Parameters parameters()
const;
389 virtual void configure(
const Parameters& parameters,
const Registry& registry);
393 typedef shared_ptr<HaplotypeGrouping> HaplotypeGroupingPtr;
419 virtual size_t group_count()
const;
420 virtual size_t group(
unsigned int chromosome_id)
const;
424 virtual std::string class_name()
const {
return "HaplotypeGrouping_IDRange";}
425 virtual Parameters parameters()
const;
426 virtual void configure(
const Parameters& parameters,
const Registry& registry);
430 std::vector<unsigned int> id_starts_;
431 std::vector<unsigned int> id_counts_;
460 virtual size_t group_count()
const;
461 virtual size_t group(
unsigned int chromosome_id)
const;
465 virtual std::string class_name()
const {
return "HaplotypeGrouping_Uniform";}
466 virtual Parameters parameters()
const;
467 virtual void configure(
const Parameters& parameters,
const Registry& registry);
471 unsigned int ids_per_group_;
472 unsigned int id_offset_;
473 unsigned int id_count_;
501 HaplotypeGroupingPtr haplotype_grouping = HaplotypeGroupingPtr(),
502 size_t chromosome_step = 0,
503 size_t update_step = 0);
505 virtual void update(
size_t generation_index,
506 const PopulationPtrs& populations,
507 const PopulationDataPtrs& population_datas,
508 bool is_final_generation);
512 virtual std::string class_name()
const {
return "Reporter_HaplotypeFrequencies";}
513 virtual Parameters parameters()
const;
514 virtual void configure(
const Parameters& parameters,
const Registry& registry);
516 virtual void write_child_configurations(std::ostream& os, std::set<std::string>& ids_written)
const;
520 HaplotypeGroupingPtr haplotype_grouping_;
521 size_t chromosome_step_;
523 std::vector<unsigned int> chromosome_lengths_;
525 void write_haplotype_frequencies(std::ostream& os,
const Population& population,
526 size_t chromosome_pair_index,
unsigned int chromosome_length)
const;
558 : locus(_locus), length(_length)
561 std::string configuration()
const;
564 typedef std::vector<Region> Regions;
567 const Regions& regions = Regions());
569 virtual void update(
size_t generation_index,
570 const PopulationPtrs& populations,
571 const PopulationDataPtrs& population_datas,
572 bool is_final_generation);
576 virtual std::string class_name()
const {
return "Reporter_Regions";}
577 virtual Parameters parameters()
const;
578 virtual void configure(
const Parameters& parameters,
const Registry& registry);
579 virtual void write_child_configurations(std::ostream& os, std::set<std::string>& ids_written)
const;
584 unsigned int ms_mapping_begin_;
585 unsigned int ms_mapping_end_;
621 double initial_allele_frequency = 0,
622 std::vector<double> w = std::vector<double>(3))
623 :
Configurable(
id), initial_allele_frequency_(initial_allele_frequency), w_(w), generation_count_(0)
626 virtual void update(
size_t generation_number,
627 const PopulationPtrs& populations,
628 const PopulationDataPtrs& population_datas,
629 bool is_final_generation);
633 virtual std::string class_name()
const {
return "Reporter_DeterministicTrajectories";}
634 virtual Parameters parameters()
const;
635 virtual void configure(
const Parameters& parameters,
const Registry& registry);
640 double initial_allele_frequency_;
641 std::vector<double> w_;
642 double generation_count_;
668 virtual void update(
size_t generation_index,
669 const PopulationPtrs& populations,
670 const PopulationDataPtrs& population_datas,
671 bool is_final_generation);
673 virtual Loci loci(
size_t generation_index,
bool is_final_generation)
const;
677 virtual std::string class_name()
const {
return "Reporter_Variants";}
678 virtual Parameters parameters()
const;
679 virtual void configure(
const Parameters& parameters,
const Registry& registry);
681 virtual void write_child_configurations(std::ostream& os, std::set<std::string>& ids_written)
const;
685 std::vector<std::string> locus_ids_;
687 std::vector<Locus> loci_;
688 ConfigurablePtrs children_;
689 QuantitativeTraitPtrs qts_specified_;
693 #endif // _REPORTERIMPLEMENTATION_HPP_