Parallel PopGen Package
go_fish.cuh File Reference

GO Fish Simulation API (contains namespaces GO_Fish and Sim_Model) More...

#include <cuda_runtime.h>
#include "../3P/_outside_libraries/helper_math.h"
#include "../3P/go_fish_data_struct.h"
#include "../3P/_internal/template_inline_simulation_functors.cuh"
#include "../3P/_internal/go_fish_impl.cuh"

Go to the source code of this file.

Classes

struct  Sim_Model::selection_constant
 functor: models selection coefficient s as a constant across populations and over time More...
 
struct  Sim_Model::selection_linear_frequency_dependent
 functor: models selection coefficient as linearly dependent on frequency More...
 
struct  Sim_Model::selection_sine_wave
 functor: models selection as a sine wave through time More...
 
struct  Sim_Model::selection_population_specific< Functor_sel, Functor_sel_pop >
 functor: one population, pop, has a different, selection function, s_pop, all other have function s More...
 
struct  Sim_Model::selection_piecewise< Functor_sel1, Functor_sel2 >
 functor: selection function changes from s1 to s2 at generation inflection_point More...
 
struct  Sim_Model::F_mu_h_constant
 functor: models parameter p as a constant across populations and over time More...
 
struct  Sim_Model::F_mu_h_sine_wave
 functor: models parameter as a sine wave through time More...
 
struct  Sim_Model::F_mu_h_population_specific< Functor_p, Functor_p_pop >
 functor: one population, pop, has a different, parameter function, p_pop, all others have function p More...
 
struct  Sim_Model::F_mu_h_piecewise< Functor_p1, Functor_p2 >
 functor: parameter function changes from p1 to p2 at generation inflection_point More...
 
struct  Sim_Model::demography_constant
 functor: single, constant population size (N individuals) across populations and over time More...
 
struct  Sim_Model::demography_sine_wave
 functor: models population size (individuals) as a sine wave through time More...
 
struct  Sim_Model::demography_exponential_growth
 functor: models exponential growth of population size (individuals) over time More...
 
struct  Sim_Model::demography_logistic_growth
 functor: models logistic growth of population size (individuals) over time More...
 
struct  Sim_Model::demography_population_specific< Functor_d, Functor_d_pop >
 functor: one population, pop, has a different, demography function, d_pop, all others have function, d More...
 
struct  Sim_Model::demography_piecewise< Functor_d1, Functor_d2 >
 functor: demography function changes from d1 to d2 at generation inflection_point More...
 
struct  Sim_Model::migration_constant_equal
 functor: migration flows at rate m from pop i to pop j =/= i and 1-(num_pop-1)*m for i == j More...
 
struct  Sim_Model::migration_constant_directional< Functor_m1 >
 functor: migration flows at rate m from pop1 to pop2 and function rest for all other migration rates More...
 
struct  Sim_Model::migration_piecewise< Functor_m1, Functor_m2 >
 functor: migration function changes from m1 to m2 at generation inflection_point More...
 
struct  Sim_Model::bool_off
 functor: turns sampling and preserving off (for every generation except the final one which is always sampled) More...
 
struct  Sim_Model::bool_on
 functor: turns sampling and preserving on (for every generation except the final one which is always sampled) More...
 
struct  Sim_Model::bool_pulse< Functor_default, Functor_action >
 functor: returns the result of function f_default except at generation pulse returns the result of function f_action More...
 
struct  Sim_Model::bool_piecewise< Functor_first, Functor_second >
 functor: returns the result of function f1 until generation inflection_point, then returns the result of function f2 More...
 

Namespaces

 Sim_Model
 Namespace of functions for controlling GO_Fish simulations.
 
 GO_Fish
 Namespace for single-locus, forward, Monte-Carlo Wright-Fisher simulation and output data structures.
 

Functions

template<typename Functor_mutation , typename Functor_demography , typename Functor_migration , typename Functor_selection , typename Functor_inbreeding , typename Functor_dominance , typename Functor_preserve , typename Functor_timesample >
__host__ void GO_Fish::run_sim (allele_trajectories &all_results, const Functor_mutation mu_rate, const Functor_demography demography, const Functor_migration mig_prop, const Functor_selection sel_coeff, const Functor_inbreeding FI, const Functor_dominance dominance, const Functor_preserve preserve_mutations, const Functor_timesample take_sample)
 runs a single-locus Wright-Fisher simulation specified by the given simulation functions and sim_constants, storing the results into all_results More...
 
template<typename Functor_mutation , typename Functor_demography , typename Functor_migration , typename Functor_selection , typename Functor_inbreeding , typename Functor_dominance , typename Functor_preserve , typename Functor_timesample >
__host__ void GO_Fish::run_sim (allele_trajectories &all_results, const Functor_mutation mu_rate, const Functor_demography demography, const Functor_migration mig_prop, const Functor_selection sel_coeff, const Functor_inbreeding FI, const Functor_dominance dominance, const Functor_preserve preserve_mutations, const Functor_timesample take_sample, const allele_trajectories &prev_sim)
 runs a single-locus Wright-Fisher simulation specified by the given simulation functions and sim_constants, storing the results into all_results More...
 

Detailed Description

GO Fish Simulation API (contains namespaces GO_Fish and Sim_Model)

go_fish.cuh contains all structures and functions necessary for running, storing, and outputting a single locus Wright_fisher simulation. When including go_fish.cuh into a source file, go_fish_data_struct.h is automatically included - no need to include it separately. Unlike go_fish_data_struct.h and spectrum.h, go_fish.cuh can only be included in CUDA source files (*.cu). CUDA source files are identical to C, C++ source files (*.c, *.cpp) except that the the CUDA suffix (*.cu) indicates for NVCC (the CUDA compiler) that the file contains CUDA-specific __global__ and __device__ functions/variables meant for the GPU. __global__ and __device__ functions/variables cannot be compiled in normal C/C++ source files.

Definition in file go_fish.cuh.