00001 #ifndef __SEQUENCE_COALESCENT_COALESCE_HPP__
00002 #define __SEQUENCE_COALESCENT_COALESCE_HPP__
00003
00004 #include <Sequence/Coalescent/SimTypes.hpp>
00005 #include <utility>
00006 #include <boost/ref.hpp>
00007 namespace Sequence
00008 {
00009 template<typename uniform_generator>
00010 std::pair<int,int> pick2_in_deme( uniform_generator & uni,
00011 const std::vector<Sequence::chromosome> & sample,
00012 const int & ttl_nsam,
00013 const int & deme_nsam,
00014 const int & deme );
00015
00016 template<typename uniform_generator>
00017 std::pair<int,int> pick2_in_deme( const uniform_generator & uni,
00018 const std::vector<Sequence::chromosome> & sample,
00019 const int & ttl_nsam,
00020 const int & deme_nsam,
00021 const int & deme );
00022
00023 template<typename uniform_generator>
00024 std::pair<int,int> pick2( uniform_generator & uni, const int & nsam);
00025
00026 template<typename uniform_generator>
00027 std::pair<int,int> pick2( const uniform_generator & uni, const int & nsam);
00028
00029 bool isseg( chromosome::const_iterator seg, const int nsegs,
00030 const int pos, int * offset );
00031
00032 int coalesce(const double & time,
00033 const int & ttl_nsam,
00034 const int & current_nsam,
00035 const int & c1,
00036 const int & c2,
00037 const int & nsites,
00038 int * nlinks,
00039 std::vector<chromosome> * sample,
00040 arg * sample_history);
00041 }
00042 #endif
00043 #include <Sequence/Coalescent/bits/Coalesce.tcc>