36 #ifndef _QUANTITATIVETRAITIMPLEMENTATION_HPP_
37 #define _QUANTITATIVETRAITIMPLEMENTATION_HPP_
40 #include "QuantitativeTrait.hpp"
72 const QuantitativeTraitPtrs& qts = QuantitativeTraitPtrs());
74 virtual void calculate_trait_values(
const PopulationData& population_data)
const;
77 virtual std::string class_name()
const {
return "QuantitativeTrait_PopulationComposite";}
78 virtual Parameters parameters()
const;
79 virtual void configure(
const Parameters& parameters,
const Registry& registry);
81 virtual void write_child_configurations(std::ostream& os, std::set<std::string>& ids_written)
const;
85 QuantitativeTraitPtrs qts_;
108 typedef std::map<size_t, QuantitativeTraitPtr> GenerationQTMap;
111 const GenerationQTMap& qts = GenerationQTMap());
113 virtual void calculate_trait_values(
const PopulationData& population_data)
const;
117 virtual std::string class_name()
const {
return "QuantitativeTrait_GenerationComposite";}
118 virtual Parameters parameters()
const;
119 virtual void configure(
const Parameters& parameters,
const Registry& registry);
120 virtual void write_child_configurations(std::ostream& os, std::set<std::string>& ids_written)
const;
124 GenerationQTMap qts_;
153 std::vector<double> w = std::vector<double>(3));
155 virtual void calculate_trait_values(
const PopulationData& population_data)
const;
159 virtual std::string class_name()
const {
return "QuantitativeTrait_SingleLocusFitness";}
160 virtual Parameters parameters()
const;
161 virtual void configure(
const Parameters& parameters,
const Registry& registry);
162 virtual void write_child_configurations(std::ostream& os, std::set<std::string>& ids_written)
const;
167 std::vector<double> w_;
179 std::vector<double> effects;
184 std::string configuration()
const;
188 typedef std::vector<QTLEffect> QTLEffects;
215 LocusListPtr locus_list = LocusListPtr(),
216 Random::DistributionPtr effect_size_distribution = Random::DistributionPtr(),
217 Random::DistributionPtr dominance_distribution = Random::DistributionPtr(),
218 bool random_effect_sign =
false);
220 void generate_qtl_effects(QTLEffects& qtl_effects)
const;
224 virtual std::string class_name()
const {
return "QTLEffectGenerator";}
225 virtual Parameters parameters()
const;
226 virtual void configure(
const Parameters& parameters,
const Registry& registry);
227 virtual void write_child_configurations(std::ostream& os, std::set<std::string>& ids_written)
const;
231 LocusListPtr locus_list_;
232 Random::DistributionPtr effect_size_distribution_;
233 Random::DistributionPtr dominance_distribution_;
234 bool random_effect_sign_;
238 typedef shared_ptr<QTLEffectGenerator> QTLEffectGeneratorPtr;
264 QTLEffects qtl_effects = QTLEffects(),
265 double environmental_variance = 0);
267 virtual void calculate_trait_values(
const PopulationData& population_data)
const;
269 const QTLEffects& qtl_effects()
const {
return qtl_effects_;}
273 virtual std::string class_name()
const {
return "QuantitativeTrait_IndependentLoci";}
274 virtual Parameters parameters()
const;
275 virtual void configure(
const Parameters& parameters,
const Registry& registry);
277 virtual void write_child_configurations(std::ostream& os, std::set<std::string>& ids_written)
const;
281 QTLEffects qtl_effects_;
282 size_t qtl_effects_specified_;
283 double environmental_variance_;
284 Random::DistributionPtr environment_effect_;
285 std::vector<QTLEffectGeneratorPtr> qtl_effect_generators_;
293 namespace mu {
class Parser;}
315 virtual void calculate_trait_values(
const PopulationData& population_data)
const;
319 virtual std::string class_name()
const {
return "QuantitativeTrait_Expression";}
320 virtual Parameters parameters()
const;
321 virtual void configure(
const Parameters& parameters,
const Registry& registry);
327 std::string variable;
331 typedef std::vector<Assignment> Assignments;
332 Assignments assignments_;
333 std::string expression_;
335 shared_ptr<mu::Parser> parser_;
359 virtual void calculate_trait_values(
const PopulationData& population_data)
const;
363 virtual std::string class_name()
const {
return "QuantitativeTrait_Alternator";}
364 virtual Parameters parameters()
const {
return Parameters();}
365 virtual void configure(
const Parameters& parameters,
const Registry& registry) {}
369 #endif // _QUANTITATIVETRAITIMPLEMENTATION_HPP_