Program Listing for File sample_diploid.hpp

Return to documentation for file (fwdpp/sample_diploid.hpp)

#ifndef FWDPP_SAMPLE_DIPLOID_HPP
#define FWDPP_SAMPLE_DIPLOID_HPP

#include <utility>
#include <vector>
#include <fwdpp/fwd_functional.hpp>
#include <fwdpp/insertion_policies.hpp>
namespace fwdpp
{
    template <typename haploid_genome_type, typename haploid_genome_cont_type_allocator,
              typename mutation_type, typename mutation_cont_type_allocator,
              typename diploid_geno_t, typename diploid_vector_type_allocator,
              typename diploid_fitness_function, typename mutation_model,
              typename recombination_policy,
              template <typename, typename> class haploid_genome_cont_type,
              template <typename, typename> class mutation_cont_type,
              template <typename, typename> class diploid_vector_type,
              typename mutation_removal_policy = std::true_type>
    double sample_diploid(
        const gsl_rng *r,
        haploid_genome_cont_type<haploid_genome_type, haploid_genome_cont_type_allocator> &haploid_genomes,
        diploid_vector_type<diploid_geno_t, diploid_vector_type_allocator>
            &diploids,
        mutation_cont_type<mutation_type, mutation_cont_type_allocator>
            &mutations,
        std::vector<uint_t> &mcounts, const uint_t &N_curr, const double &mu,
        const mutation_model &mmodel, const recombination_policy &rec_pol,
        const diploid_fitness_function &ff,
        typename haploid_genome_type::mutation_container &neutral,
        typename haploid_genome_type::mutation_container &selected,
        const double f = 0.,
        const mutation_removal_policy mp = mutation_removal_policy());

    template <typename haploid_genome_type, typename haploid_genome_cont_type_allocator,
              typename mutation_type, typename mutation_cont_type_allocator,
              typename diploid_geno_t, typename diploid_vector_type_allocator,
              typename diploid_fitness_function, typename mutation_model,
              typename recombination_policy,
              template <typename, typename> class haploid_genome_cont_type,
              template <typename, typename> class mutation_cont_type,
              template <typename, typename> class diploid_vector_type,
              typename mutation_removal_policy = std::true_type>
    double sample_diploid(
        const gsl_rng *r,
        haploid_genome_cont_type<haploid_genome_type, haploid_genome_cont_type_allocator> &haploid_genomes,
        diploid_vector_type<diploid_geno_t, diploid_vector_type_allocator>
            &diploids,
        mutation_cont_type<mutation_type, mutation_cont_type_allocator>
            &mutations,
        std::vector<uint_t> &mcounts, const uint_t &N_curr,
        const uint_t &N_next, const double &mu, const mutation_model &mmodel,
        const recombination_policy &rec_pol,
        const diploid_fitness_function &ff,
        typename haploid_genome_type::mutation_container &neutral,
        typename haploid_genome_type::mutation_container &selected,
        const double f = 0.,
        const mutation_removal_policy mp = mutation_removal_policy());
} // namespace fwdpp

#include <fwdpp/sample_diploid.tcc>
#endif