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_;
160 std::vector<double> w = std::vector<double>(3));
162 virtual void calculate_trait_values(
const PopulationData& population_data)
const;
166 virtual std::string class_name()
const {
return "QuantitativeTrait_SingleLocusFitness";}
167 virtual Parameters parameters()
const;
168 virtual void configure(
const Parameters& parameters,
const Registry& registry);
169 virtual void write_child_configurations(std::ostream& os, std::set<std::string>& ids_written)
const;
174 std::vector<double> w_;
186 std::vector<double> effects;
191 std::string configuration()
const;
195 typedef std::vector<QTLEffect> QTLEffects;
222 LocusListPtr locus_list = LocusListPtr(),
223 Random::DistributionPtr effect_size_distribution = Random::DistributionPtr(),
224 Random::DistributionPtr dominance_distribution = Random::DistributionPtr(),
225 bool random_effect_sign =
false);
227 void generate_qtl_effects(QTLEffects& qtl_effects)
const;
231 virtual std::string class_name()
const {
return "QTLEffectGenerator";}
232 virtual Parameters parameters()
const;
233 virtual void configure(
const Parameters& parameters,
const Registry& registry);
234 virtual void write_child_configurations(std::ostream& os, std::set<std::string>& ids_written)
const;
238 LocusListPtr locus_list_;
239 Random::DistributionPtr effect_size_distribution_;
240 Random::DistributionPtr dominance_distribution_;
241 bool random_effect_sign_;
245 typedef shared_ptr<QTLEffectGenerator> QTLEffectGeneratorPtr;
271 QTLEffects qtl_effects = QTLEffects(),
272 double environmental_variance = 0);
274 virtual void calculate_trait_values(
const PopulationData& population_data)
const;
276 const QTLEffects& qtl_effects()
const {
return qtl_effects_;}
280 virtual std::string class_name()
const {
return "QuantitativeTrait_IndependentLoci";}
281 virtual Parameters parameters()
const;
282 virtual void configure(
const Parameters& parameters,
const Registry& registry);
284 virtual void write_child_configurations(std::ostream& os, std::set<std::string>& ids_written)
const;
288 QTLEffects qtl_effects_;
289 size_t qtl_effects_specified_;
290 double environmental_variance_;
291 Random::DistributionPtr environment_effect_;
292 std::vector<QTLEffectGeneratorPtr> qtl_effect_generators_;
300 namespace mu {
class Parser;}
322 virtual void calculate_trait_values(
const PopulationData& population_data)
const;
326 virtual std::string class_name()
const {
return "QuantitativeTrait_Expression";}
327 virtual Parameters parameters()
const;
328 virtual void configure(
const Parameters& parameters,
const Registry& registry);
334 std::string variable;
338 typedef std::vector<Assignment> Assignments;
339 Assignments assignments_;
340 std::string expression_;
342 shared_ptr<mu::Parser> parser_;
366 virtual void calculate_trait_values(
const PopulationData& population_data)
const;
370 virtual std::string class_name()
const {
return "QuantitativeTrait_Alternator";}
371 virtual Parameters parameters()
const {
return Parameters();}
372 virtual void configure(
const Parameters& parameters,
const Registry& registry) {}
376 #endif // _QUANTITATIVETRAITIMPLEMENTATION_HPP_