Class SimulateDispersal¶
- Defined in File SimulateDispersal.h
Class Documentation¶
-
class
SimulateDispersal¶ Contains routines for importing a density map file, running a dispersal kernel n times on a landscape and record the dispersal distances.
Public Functions
-
SimulateDispersal()¶
-
necsim::SimulateDispersal::~ SimulateDispersal()
-
void
setSequential(bool bSequential)¶ Sets the is_sequential flag.
- Parameters
bSequential: if true, dispersal events are selected using the end point of the last dispersal distance for the start of the next move event
Sets the pointer to the simulation parameters object.
- Parameters
sim_parameters: pointer to the simulation parameters to useprint: if true, writes the parameters out using writeInfo()
-
void
importMaps()¶ Import the maps from the simulation parameters.
-
void
setSizes()¶ Creates the map of steps to parameter references and initialises object sizes.
-
void
setDispersalParameters()¶ Sets the dispersal parameters in the DispersalCoordinator.
-
void
setSeed(unsigned long s)¶ Sets the seed for the random number generator.
- Parameters
s: the seed
-
void
setOutputDatabase(string out_database)¶ Sets the output database for writing results to.
- Parameters
out_database: path to the output database
-
void
setNumberRepeats(unsigned long n)¶ Sets the number of repeats to run the dispersal kernel for.
- Parameters
n: the number of repeats
-
void
setNumberSteps(const vector<unsigned long> &s)¶ Sets the number of steps to run each repeat of the dispersal kernel for when recording mean distance travelled.
- Parameters
s: a vector containing each step variable to record the distance at
-
void
setNumberWorkers(unsigned long n)¶ Sets the number of threads launched to parallelise the distance simulation.
- Parameters
n: the number of workers
-
unsigned long
getMaxNumberSteps()¶ Gets the maximum number of steps that is to be applied.
- Return
-
void
storeCellList()¶ Calculates the list of cells to choose randomly from.
-
const Cell &
getRandomCell()¶ Gets a random cell from the list of cells.
- Return
- a Cell object reference containing the x and y positions to choose from
-
void
getEndPoint(Cell &this_cell)¶ Checks the density a given distance from the start point, calling the relevant landscape function.
This also takes into account the rejection sampling of density based on the maximal density value from the map.
- Parameters
this_cell: Cell containing the x and y coordinates of the starting position
-
void
getEndPoint(Cell &this_cell, DispersalCoordinator &dispersal_coordinator)¶ Checks the density a given distance from the start point, calling the relevant landscape function.
This also takes into account the rejection sampling of density based on the maximal density value from the map.
- Parameters
this_cell: Cell containing the x and y coordinates of the starting positiondispersal_coordinator: Reference to the dispersal coordinator to use
-
template<bool
chooseRandomCells= false>
voidrunDistanceLoop(const unsigned long bidx, const unsigned long eidx, const unsigned long num_repeats, std::mutex &mutex, unsigned long &finished, DispersalCoordinator &dispersal_coordinator, double &generation)¶ Runs the distance simulation edix-bidx times and reports the progress.
- Template Parameters
chooseRandomCells: If true random walks will be chosen randomly from the cells vector, otherwise uses cells[bidx:edix]
- Parameters
bidx: First inclusive index into the cells vector of random walk origins to simulate in this workereidx: Last exclusive index into the cells vector of random walk origins to simulate in this workernum_repeats: The number of repeats to average over for each cellmutex: The mutex to synchronise progress feedback to the userfinished: The total number of cells simulated across all workersdispersal_coordinator: Reference to the dispersal corrdinator to usegeneration: Reference to the generation variable used byt the dispersal coordinator
-
template<bool
chooseRandomCells= false>
voidrunDistanceWorker(const unsigned long seed, const unsigned long bidx, const unsigned long eidx, const unsigned long num_repeats, std::mutex &mutex, unsigned long &finished)¶ Runs the distance simulation eidx-bidx times on a separate worker and reports the progress.
- Template Parameters
chooseRandomCells: If true random walks will be chosen randomly from the cells vector, otherwise uses cells[bidx:edix]
- Parameters
seed: Seed to use to initialse the per worker rng and dispersal coordinatorbidx: First inclusive index into the cells vector of random walk origins to simulate in this workereidx: Last exclusive index into the cells vector of random walk origins to simulate in this workernum_repeats: The number of repeats to average over for each cellmutex: The mutex to synchronise progress feedback to the userfinished: The total number of cells simulated across all workers
-
void
runMeanDispersalDistance()¶ Simulates the dispersal kernel for the set parameters, storing the mean dispersal distance.
-
void
runMeanDistanceTravelled()¶ Simulates the dispersal kernel for the set parameters, storing the mean distance travelled.
-
void
runAllDistanceTravelled()¶ Simulates the dispersal kernel for the set parameters on all habitable cells, storing the mean distance travelled.
-
void
runSampleDistanceTravelled(const vector<Cell> &samples)¶ Simulates the dispersal kernel for the set parameters on the given sample cells, storing the mean distance travelled.
- Parameters
samples: Vector of cells to be sampled during the distance simulation
-
void
writeRepeatInfo(unsigned long i)¶ Writes the information about this repeat to the logger.
-
void
writeDatabase(string table_name)¶ Writes out the distances to the SQL database.
- Parameters
table_name: the name of the table to output to, either ‘DISPERSAL_DISTANCE’ or ‘DISTANCES_TRAVELLED’
-
void
writeParameters(string table_name)¶ Writes the simulation parameters to the output SQL database.
- Parameters
table_name: the name of the table to output to, either ‘DISPERSAL_DISTANCE’ or ‘DISTANCES_TRAVELLED’
-
void
clearParameters()¶ Clears the parameters from the internal objects so that another dispersal simulation can be run, if necessary.
-
void
checkMaxParameterReference()¶ Gets the maximum parameter reference from the output SQL database and saves val + 1 to parameter_reference Assumes that the database exists.
-
unsigned long
checkMaxIdNumber(string table_name)¶ Gets the maximum id number from the output SQL database and returns val + 1 Assumes that the database exists.
- Note
- this function does not check for SQL injection attacks and should not be used with variable function names.
- Return
- the maximum id + 1 from the given table
- Parameters
table_name: the name of the table to check for max(id) in
Protected Attributes
-
DispersalCoordinator
dispersal_coordinator= {}¶
-
shared_ptr<SimParameters>
simParameters¶
-
shared_ptr<RNGController>
random¶
-
unsigned long
seed¶
-
SQLiteHandler
database¶
-
map<unsigned long, unsigned long>
parameter_references¶
-
unsigned long
num_repeats¶
-
set<unsigned long>
num_steps¶
-
unsigned long
num_workers¶
-
double
generation¶
-
bool
is_sequential¶
-
unsigned long
max_parameter_reference¶
-