00001 #ifndef __SEQUENCE_COALESCENT_DEMOGRAPHICMODELS_HPP__
00002 #define __SEQUENCE_COALESCENT_DEMOGRAPHICMODELS_HPP__
00003
00004 #include <Sequence/Coalescent/SimTypes.hpp>
00005
00006 namespace Sequence
00007 {
00008 template<typename uniform_generator,
00009 typename uniform01_generator,
00010 typename exponential_generator>
00011 arg bottleneck( uniform_generator & uni,
00012 uniform01_generator & uni01,
00013 exponential_generator & expo,
00014 const std::vector<chromosome> & initialized_sample,
00015 const marginal & initialized_marginal,
00016 const double & tr,
00017 const double & d,
00018 const double & f,
00019 const double & rho = 0.,
00020 const bool & exponential_recovery = false,
00021 const double & recovered_size = 1. );
00022
00023 template<typename uniform_generator,
00024 typename uniform01_generator,
00025 typename exponential_generator>
00026 arg bottleneck( const uniform_generator & uni,
00027 const uniform01_generator & uni01,
00028 const exponential_generator & expo,
00029 const std::vector<chromosome> & initialized_sample,
00030 const marginal & initialized_marginal,
00031 const double & tr,
00032 const double & d,
00033 const double & f,
00034 const double & rho = 0.,
00035 const bool & exponential_recovery = false,
00036 const double & recovered_size = 1. );
00037
00038 template<typename uniform_generator,
00039 typename uniform01_generator,
00040 typename exponential_generator>
00041 arg exponential_change( uniform_generator & uni,
00042 uniform01_generator & uni01,
00043 exponential_generator & expo,
00044 const std::vector<chromosome> & initialized_sample,
00045 const marginal & initialized_marginal,
00046 const double & G,
00047 const double & t_begin,
00048 const double & t_end,
00049 const double & rho = 0.,
00050 const double & size_at_end = -1);
00051
00052 template<typename uniform_generator,
00053 typename uniform01_generator,
00054 typename exponential_generator>
00055 arg exponential_change( const uniform_generator & uni,
00056 const uniform01_generator & uni01,
00057 const exponential_generator & expo,
00058 const std::vector<chromosome> & initialized_sample,
00059 const marginal & initialized_marginal,
00060 const double & G,
00061 const double & t_begin,
00062 const double & t_end,
00063 const double & rho = 0.,
00064 const double & size_at_end = -1);
00065
00066 template<typename uniform_generator,
00067 typename uniform01_generator,
00068 typename exponential_generator>
00069 arg snm( uniform_generator & uni,
00070 uniform01_generator & uni01,
00071 exponential_generator & expo,
00072 const std::vector<chromosome> & initialized_sample,
00073 const marginal & initialized_marginal,
00074 const double & rho);
00075
00076 template<typename uniform_generator,
00077 typename uniform01_generator,
00078 typename exponential_generator>
00079 arg snm( const uniform_generator & uni,
00080 const uniform01_generator & uni01,
00081 const exponential_generator & expo,
00082 const std::vector<chromosome> & initialized_sample,
00083 const marginal & initialized_marginal,
00084 const double & rho);
00085
00086 }
00087 #endif
00088 #include <Sequence/Coalescent/bits/DemographicModels.tcc>