00001 #ifndef __SEQUENCE_COALESCENT_RECOMBINATION_HPP__
00002 #define __SEQUENCE_COALESCENT_RECOMBINATION_HPP__
00003
00004 #include <Sequence/Coalescent/SimTypes.hpp>
00005 namespace Sequence
00006 {
00007 int crossover( const int & current_nsam,
00008 const int & chromo,
00009 const int & pos,
00010 std::vector<chromosome> * sample,
00011 arg * sample_history);
00012
00013 std::pair<int,int> pick_uniform_spot(const double & random_01,
00014 const int & nlinks,
00015 std::vector<chromosome>::const_iterator sample_begin,
00016 const unsigned & current_nsam);
00017
00018 template<typename uniform01_generator>
00019 std::pair<int,int> pick_spot( uniform01_generator & uni01,
00020 const double & total_reclen,
00021 const std::vector<double> & reclens,
00022 std::vector<chromosome>::const_iterator sample_begin,
00023 const unsigned & current_nsam,
00024 const double * rec_map);
00025
00026 template<typename uniform01_generator>
00027 std::pair<int,int> pick_spot( const uniform01_generator & uni01,
00028 const double & total_reclen,
00029 const std::vector<double> & reclens,
00030 std::vector<chromosome>::const_iterator sample_begin,
00031 const unsigned & current_nsam,
00032 const double * rec_map);
00033 }
00034 #endif
00035 #include <Sequence/Coalescent/bits/Recombination.tcc>