36 #ifndef _QUANTITATIVETRAITIMPLEMENTATION_HPP_
37 #define _QUANTITATIVETRAITIMPLEMENTATION_HPP_
40 #include "QuantitativeTrait.hpp"
72 const QuantitativeTraitPtrs& qts = QuantitativeTraitPtrs());
74 virtual DataVectorPtr calculate_trait_values(
const GenotypeMap& genotypes,
75 size_t generation_index,
76 size_t population_index)
const;
79 virtual std::string class_name()
const {
return "QuantitativeTrait_PopulationComposite";}
80 virtual Parameters parameters()
const;
81 virtual void configure(
const Parameters& parameters,
const Registry& registry);
82 virtual void write_child_configurations(std::ostream& os, std::set<std::string>& ids_written)
const;
86 QuantitativeTraitPtrs qts_;
109 typedef std::map<size_t, QuantitativeTraitPtr> GenerationQTMap;
112 const GenerationQTMap& qts = GenerationQTMap());
114 virtual DataVectorPtr calculate_trait_values(
const GenotypeMap& genotypes,
115 size_t generation_index,
116 size_t population_index)
const;
119 virtual std::string class_name()
const {
return "QuantitativeTrait_GenerationComposite";}
120 virtual Parameters parameters()
const;
121 virtual void configure(
const Parameters& parameters,
const Registry& registry);
122 virtual void write_child_configurations(std::ostream& os, std::set<std::string>& ids_written)
const;
126 GenerationQTMap qts_;
155 std::vector<double> w = std::vector<double>(3));
157 virtual DataVectorPtr calculate_trait_values(
const GenotypeMap& genotypes,
158 size_t generation_index,
159 size_t population_index)
const;
162 virtual std::string class_name()
const {
return "QuantitativeTrait_SingleLocusFitness";}
163 virtual Parameters parameters()
const;
164 virtual void configure(
const Parameters& parameters,
const Registry& registry);
165 virtual void write_child_configurations(std::ostream& os, std::set<std::string>& ids_written)
const;
170 std::vector<double> w_;
182 std::vector<double> effects;
187 std::string configuration()
const;
191 typedef std::vector<QTLEffect> QTLEffects;
218 LocusListPtr locus_list = LocusListPtr(),
219 Random::DistributionPtr effect_size_distribution = Random::DistributionPtr(),
220 Random::DistributionPtr dominance_distribution = Random::DistributionPtr(),
221 bool random_effect_sign =
false);
223 void generate_qtl_effects(QTLEffects& qtl_effects)
const;
227 virtual std::string class_name()
const {
return "QTLEffectGenerator";}
228 virtual Parameters parameters()
const;
229 virtual void configure(
const Parameters& parameters,
const Registry& registry);
230 virtual void write_child_configurations(std::ostream& os, std::set<std::string>& ids_written)
const;
234 LocusListPtr locus_list_;
235 Random::DistributionPtr effect_size_distribution_;
236 Random::DistributionPtr dominance_distribution_;
237 bool random_effect_sign_;
241 typedef shared_ptr<QTLEffectGenerator> QTLEffectGeneratorPtr;
267 QTLEffects qtl_effects = QTLEffects(),
268 double environmental_variance = 0);
270 virtual DataVectorPtr calculate_trait_values(
const GenotypeMap& genotypes,
271 size_t generation_index,
272 size_t population_index)
const;
274 const QTLEffects& qtl_effects()
const {
return qtl_effects_;}
278 virtual std::string class_name()
const {
return "QuantitativeTrait_IndependentLoci";}
279 virtual Parameters parameters()
const;
280 virtual void configure(
const Parameters& parameters,
const Registry& registry);
282 virtual void write_child_configurations(std::ostream& os, std::set<std::string>& ids_written)
const;
286 QTLEffects qtl_effects_;
287 size_t qtl_effects_specified_;
288 double environmental_variance_;
289 Random::DistributionPtr environment_effect_;
290 std::vector<QTLEffectGeneratorPtr> qtl_effect_generators_;
294 #endif // _QUANTITATIVETRAITIMPLEMENTATION_HPP_