The basics of EcoSISTEM.jl

Install

using Pkg
Pkg.add("EcoSISTEM")

Setting up an ecosystem

The package runs on an Ecosystem containing information about species, the SpeciesList, their environment, AbioticEnvironment and the relationship between the two, TraitRelationship.

A simple example

Load required packages

using EcoSISTEM
using EcoSISTEM.Units
using Unitful, Unitful.DefaultSymbols
using Distributions
using Diversity

Set up initial parameters for ecosystem

numSpecies = 10; grid = (5, 5); req= 10.0kJ; individuals=1000; area = 1000.0*km^2; totalK = 1.0kJ/km^2

Set up how much energy each species consumes

energy_vec = SolarRequirement(fill(req, numSpecies))

Set rates for birth and death

birth = 0.6/year
death = 0.6/year
longevity = 1.0
survival = 0.2
boost = 1.0
# Collect model parameters together
param = EqualPop(birth, death, longevity, survival, boost)

Create kernel for movement

kernel = fill(GaussianKernel(10.0km, 10e-10), numSpecies)
movement = BirthOnlyMovement(kernel, Torus())

Create species list, including their temperature preferences, seed abundance and native status

opts = fill(274.0K, numSpecies)
vars = fill(0.5K, numSpecies)
traits = GaussTrait(opts, vars)
native = fill(true, numSpecies)
# abun = rand(Multinomial(individuals, numSpecies))
abun = fill(div(individuals, numSpecies), numSpecies)
sppl = SpeciesList(numSpecies, traits, abun, energy_vec,
    movement, param, native)

Create abiotic environment - even grid of one temperature

abenv = simplehabitatAE(274.0K, grid, totalK, area)

Set relationship between species and environment (gaussian)

rel = Gauss{typeof(1.0K)}()

Create ecosystem

eco = Ecosystem(sppl, abenv, rel)

Run simulation

# EcoSISTEM Parameters
burnin = 5years; times = 50years; timestep = 1month; record_interval = 3months; repeats = 1
lensim = length(0years:record_interval:times)
# Burnin
@time simulate!(eco, burnin, timestep)

Plot using SpatialEcology

using SpatialEcology
plot(eco)