36 #ifndef _VARIANTINDICATOR_HPP_
37 #define _VARIANTINDICATOR_HPP_
40 #include "Configurable.hpp"
42 #include "MSFormat.hpp"
43 #include "Reporter.hpp"
44 #include "Simulator.hpp"
45 #include "boost/filesystem.hpp"
46 #include "boost/filesystem/fstream.hpp"
68 virtual unsigned int operator()(
unsigned int chunk_id,
const Locus& locus)
const = 0;
69 virtual void write_file(
const std::string& filename)
const;
70 virtual unsigned int mutate(
unsigned int old_chunk_id,
const Locus& locus,
unsigned int value);
75 virtual std::string class_name()
const;
76 virtual Parameters parameters()
const;
77 virtual void configure(
const Parameters& parameters,
const Registry& registry);
90 typedef shared_ptr<VariantIndicator> VariantIndicatorPtr;
111 virtual unsigned int operator()(
unsigned int chunk_id,
const Locus& locus)
const {
return 0;}
115 virtual std::string class_name()
const {
return "VariantIndicator_Trivial";}
116 virtual Parameters parameters()
const {
return Parameters();}
117 virtual void configure(
const Parameters& parameters,
const Registry& registry) {}
143 virtual unsigned int operator()(
unsigned int chunk_id,
const Locus& locus)
const;
147 virtual std::string class_name()
const {
return "VariantIndicator_IDRange";}
148 virtual Parameters parameters()
const;
149 virtual void configure(
const Parameters& parameters,
const Registry& registry);
150 virtual void write_child_configurations(std::ostream& os, std::set<std::string>& written)
const;
156 unsigned int id_start;
157 unsigned int id_count;
158 unsigned int id_step;
161 Entry(
unsigned int _id_start,
unsigned int _id_count,
unsigned int _id_step,
unsigned int _value)
162 : id_start(_id_start), id_count(_id_count), id_step(_id_step), value(_value)
166 typedef std::multimap<Locus,Entry> EntryMap;
192 virtual unsigned int operator()(
unsigned int chunk_id,
const Locus& locus)
const;
193 virtual void write_file(
const std::string& filename)
const;
197 virtual std::string class_name()
const {
return "VariantIndicator_IDSet";}
198 virtual Parameters parameters()
const;
199 virtual void configure(
const Parameters& parameters,
const Registry& registry);
200 virtual void write_child_configurations(std::ostream& os, std::set<std::string>& written)
const;
205 std::set<unsigned int> ids;
207 Entry(
unsigned int _value = -1ul, std::set<unsigned int> _ids = std::set<unsigned int>())
208 : value(_value), ids(_ids)
212 typedef std::map<Locus,Entry> EntryMap;
214 const EntryMap& entries()
const {
return entries_;}
251 virtual std::string class_name()
const {
return "VariantIndicator_Random";}
252 virtual Parameters parameters()
const;
253 virtual void configure(
const Parameters& parameters,
const Registry& registry);
255 virtual void write_child_configurations(std::ostream& os, std::set<std::string>& written)
const;
261 size_t population_index;
262 LocusListPtr locus_list;
263 std::vector<double> frequencies;
264 Random::DistributionPtr distribution;
266 LocusListInfo(
size_t _population_index,
const LocusListPtr& _locus_list,
267 std::vector<double> _frequencies)
268 : population_index(_population_index), locus_list(_locus_list), frequencies(_frequencies)
271 LocusListInfo(
size_t _population_index,
const LocusListPtr& _locus_list,
272 Random::DistributionPtr _distribution)
273 : population_index(_population_index), locus_list(_locus_list), distribution(_distribution)
277 typedef std::vector<LocusListInfo> LocusListInfos;
278 LocusListInfos locus_list_infos_;
308 virtual unsigned int operator()(
unsigned int chunk_id,
const Locus& locus)
const;
312 virtual std::string class_name()
const {
return "VariantIndicator_File";}
313 virtual Parameters parameters()
const;
314 virtual void configure(
const Parameters& parameters,
const Registry& registry);
315 virtual void write_child_configurations(std::ostream& os, std::set<std::string>& written)
const;
321 std::vector<Locus> loci_;
322 std::map<Locus, size_t> locus_index_map_;
357 double allele_frequency = 0);
360 virtual std::string class_name()
const {
return "VariantIndicator_SingleLocusHardyWeinberg";}
361 virtual Parameters parameters()
const;
362 virtual void configure(
const Parameters& parameters,
const Registry& registry);
364 virtual void write_child_configurations(std::ostream& os, std::set<std::string>& written)
const;
369 double allele_frequency_;
403 size_t population_size = 0,
405 double allele_frequency_1 = 0,
407 double allele_frequency_2 = 0,
409 unsigned int id_offset_step = 0);
411 virtual unsigned int operator()(
unsigned int chunk_id,
const Locus& locus)
const;
415 virtual std::string class_name()
const {
return "VariantIndicator_TwoLocusLD";}
416 virtual Parameters parameters()
const;
417 virtual void configure(
const Parameters& parameters,
const Registry& registry);
418 virtual void write_child_configurations(std::ostream& os, std::set<std::string>& written)
const;
422 size_t population_size_;
424 double allele_frequency_1_;
426 double allele_frequency_2_;
428 unsigned int id_offset_step_;
439 #endif // _VARIANTINDICATOR_HPP_