Giter Site home page Giter Site logo

poisotlab / bioenergeticfoodwebs.jl Goto Github PK

View Code? Open in Web Editor NEW
27.0 9.0 14.0 2.63 MB

A unified interface for simulations of the Bio-Energetic model on food webs

Home Page: http://poisotlab.io/BioEnergeticFoodWebs.jl/latest/

License: Other

Makefile 0.43% Julia 99.57%
food-webs ecology ecological-models population-dynamics biomass

bioenergeticfoodwebs.jl's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

bioenergeticfoodwebs.jl's Issues

Thermal dependence: Implement gaussian function

Function to implement

pT=p0exp(-(temp-topt)^2/(2s^2))

with
pT : biological rate
p0 : minimal trait value
topt : temperature at which trait is maximal
s : performance breadth

Implement gaussian and inverted gaussian functions

Where

Branch temperature, script containing all thermal dependence functions

Rewiring

Seems like @TomClegg94 has implemented some rewiring -- do you want to submit this as a pull request here? @evadelmas was thinking about working on this too in the future.

Bug in make_parameters.jl

Expected behavior

  • Creation of Parameters Dictionary with supplied body mass.

Actual behavior

  • Metabolic rates x are set to inf in the Dictionary if body mass is supplied.
  • Results in an error when the simulation is run.

Steps to reproduce

  1. Set up simulation as per the getting started example in the documents
  2. Set body mass in the model_parameters function

System information

  • julia 0.5.1
  • BioEnergeticFoodWebs 0.3.0
  • OSX 10.10.5

ADBM function does not return the correct matrix

Hi @TomClegg94,

I was going through the tests today and it seems that the ADBM function (or more probably the get_feeding_links function) does not return the expected rewired matrix. This is true regardless of the method used (ratio, power or biomass). Would you have some time to check if there is indeed a bug in the code or if it's a problem with the tests?
Thanks

More precise usage of DifferentialEquations.jl

I see you are using DifferentialEquations.jl directly. For your case, you may want to use some of the specific components instead. This will reduce the size of the dependency and the associated installation time. This setup is documented here:

http://docs.juliadiffeq.org/latest/features/low_dep.html

Note that if you do this change, the automatic algorithm selection is disabled. You would have to provide the algorithm choices to the solve command. I would recommend for your purposes Tsit5() for non-stiff equations and CVODE_BDF() for stiff equations, and thus depend directly on DiffEqBase, OrdinaryDiffEq, and Sundials.

Let me know if you need any help.

Temperature scaled ADBM

The consumption rates (attack and handling) in the embedded ADBM model for rewiring are different from the ones used by the BEFWm. This introduces a discrepancy, especially when using temperature scaling.

Temporal matrices are identical and ignore extinctions when there is no rewiring

Elements of output[:p][:tmpA] are all identical when rewire_method = :none in simulate().

Elements of :tmpA should be updated to remove extinct species. e.g. by updating the A matrix as in the below code after each extinction:

extinct = out[:p][:extinctions] 
tokeep = trues(S)
tokeep[extinct] .= false 
A_i = out[:p][:A]
A_eq = A_i[tokeep, tokeep]

Example:

# Load packages
using BioEnergeticFoodWebs
using EcologicalNetworks

import Random.seed!
seed!(123)

siz = 10
con = 0.2
zed = 10.0
A_bool = EcologicalNetworks.nichemodel(siz, con) #use the niche model from Ecological Network to generate food webs
A = Int.(A_bool.A) #convert the UnipartiteNetwork object to Matrix of 1s and 0s
bm = ones(size(A, 1)) # assign biomasses of 1
p = model_parameters(A, Z = zed, rewire_method = :none)
out = simulate(p, bm, start=0, stop=500) 
out[:p][:tmpA][1] == out[:p][:tmpA][4] # true

Can't pass different carrying capacities for different producers

Change the productivity = :species behavior so that K accepts a vector of carrying capacities instead of a single value. If the vector's length is 1, then all species have the same K, otherwise, pass a vector of length S, values for consumers will be ignored (as r_consumers = 0).

DomainError for some values of the hill exponent

When using some values of h different from 1.0 or 2.0, we get a DomainError when executing the function simulate(). It seems to occur with the keywords :species, :system, :competitive but not with :nutrients.

Reproducible example :

A = [0 0 0 0 0; 1 0 1 0 0; 1 0 0 0 0; 0 1 0 0 0; 0 0 0 0 0] ;
p = model_parameters(A, productivity = :system, h = 1.2);
s = simulate(p, rand(p[:S]), stop=1000)

Error obtained :

ERROR: DomainError with -6.825133204115963e-9:
Exponentiation yielding a complex result requires a complex argument.
Replace x^y with (x+0im)^y, Complex(x)^y, or similar.

It seems to come from the matrix structure. When removing one link such that A = [0 0 0 0 0; 1 0 1 0 0; 0 0 0 0 0; 0 1 0 0 0; 0 0 0 0 0], it works.

System information

  • julia --version
  • Pkg.status("BioEnergeticFoodWebs")
  • OS and version

BoundsError in ADBM rewiring model when using with nutrient intake model.

Seems that there is a problem in the ADBM's get_feeding_links function caused by the biomass object containing actual biomass AND nutrients concentration.

Expected behavior

  • rewiring following extinction events

Actual behavior

  • ERROR: BoundsError: attempt to access 4-element Array{Float64,1} at index [Base.LogicalIndex(Bool[false, true, false, false, false, false])] [...] at src/rewiring/ADBM.jl:94

Steps to reproduce

A = [0 1 1 0 ; 0 0 0 1 ; 0 0 0 1 ; 0 0 0 0]
p = model_parameters(A, Z = 10.0, rewire_method = :ADBM, Hmethod = :ratio, Nmethod = :biomass, h = 2.0, productivity = :nutrients)
biomass = [0.2, 0.0, 0.4, 0.7]
s = simulate(p, biomass) 

Compatibility JLD2 and Julia 1.7.2

Expected behavior

  • All package tests should pass in the current stable version of Julia (1.7.2)

Actual behavior

  • Test for measure.jl fails because of the save function that returns the following error ERROR: type DataType has no field mutable

Steps to reproduce

  1. Install (or upgrade to) Julia 1.7.2
  2. Activate the environment of BioEnergeticFoodWebs
  3. Run tests ] test
  4. The test for measures.jl fails and return the following error: ERROR: type DataType has no field mutable caused by the call of the function save

Solve

The issue probably comes from an incompatibility between the old version of JLD2 in the package environment and the new version of Julia. Thus, a way to solve this issue could be:

  1. Upgrade JLD2 to the current version (v0.4.22)
  2. To avoid name conflict when using JLD2 between JLD2: save and BioEnergeticFoodWebs: save, import only the macro @save from JLD2 (that is used by BioEnergeticFoodWebs: save) by doing using JLD2: @save instead of using JLD2.

I implemented this solution in the branch fix-compat-julia1.7-jld2 that I submitted to a pull request.

System information

  • julia --version 1.7.2
  • Pkg.status("BioEnergeticFoodWebs")
      Project BioEnergeticFoodWebs v1.2.0
      Status `~/Documents/Projects/Julia/BioEnergeticFoodWebs.jl/Project.toml`
  [459566f4] DiffEqCallbacks v2.22.0
  [31c24e10] Distributions v0.24.18
  [033835bb] JLD2 v0.3.3
  [682c06a0] JSON v0.21.3
  [1dea7af3] OrdinaryDiffEq v5.71.0
  [295af30f] Revise v3.3.3
  [2913bbd2] StatsBase v0.33.16
  [37e2e46d] LinearAlgebra
  [9a3f8284] Random
  [10745b16] Statistics
  [8dfed614] Test
  • OS and version: Ubuntu 20.04

nichemodel function generates too many links

Expected behavior

  • nichemodel(85, 227) should produce networks with average number of links equal to 227

Actual behavior

  • average number of links is ~ 2 * 227

Steps to reproduce

using EcologicalNetworks

mean_link = []
for iter in range(1,10000)
    sm = sum(nichemodel(85, 227))
    push!(mean_link, sm)
end
println(mean(mean_link))

Thermal dependence: Implement quadratic function

Function to implement

pT=c*exp(b*(-1/k*T)+q*(-1/k*T)^2)

with
pT : biological rate
c, b, q : fitted parameters (Englund et al 2011)
T : temperature
k : boltzmann constant

Where

Branch temperature, script containing all thermal dependence functions

Instability detected when using temperature dependence on consumption rates

When using the ExponentialBA thermal dependence on both attack rate and handling time (consumption rates), with certain parameters values, it causes some biomass values to become NaN, which causes instabilites and makes the simulation abort.

Reproducible exemple (sent by @Azenor):

A = [0 1 1 ; 0 0 0 ; 0 0 0]
tempK = 288.35
is_vertebrate = [true, true, false]
AR_E_ect_vert = -0.4 # activation energy for ectotherm vertebrates
AR_NC_ect_vert = exp(-18.77) # normalisation constant for ectotherm vertebrates
AR_β_prod = 0.25 # allometric exponent for producers
AR_β_vert = -0.8 # allometric exponent for vertebrates
HT_E_ect_vert = 1.15 # activation energy for ectotherm vertebrates
HT_NC_ect_vert = exp(4.54) # normalisation constant for ectotherm vertebrates
HT_β_prod = -0.45 # allometric exponent for producers
HT_β_vert = 0.47  # allometric exponent for vertebrates
p = model_parameters(A, productivity = :species, vertebrates = is_vertebrate, T = tempK,  handlingtime = ExponentialBA(:handlingtime, parameters_tuple = (norm_constant_vertebrate = HT_NC_ect_vert*1e-6, activation_energy_vertebrate = HT_E_ect_vert, β_producer = HT_β_prod, β_vertebrate = HT_β_vert)),attackrate = ExponentialBA(:attackrate, parameters_tuple = (norm_constant_vertebrate = AR_NC_ect_vert*1e10, activation_energy_vertebrate = AR_E_ect_vert, β_producer = AR_β_prod, β_vertebrate = AR_β_vert)))
s = simulate(p, rand(p[:S]), stop=1000)

Error message:

Warning: Instability detected. Aborting
└ @ DiffEqBase ~/.julia/packages/DiffEqBase/s4c9b/src/integrator_interface.jl:162
Dict{Symbol,Any} with 3 entries:
  :p => Dict{Symbol,Any}(:α=>1.0,:e_carnivore=>0.85,:Γh=>[92.3348 92.3348 92.3348; Inf Inf…
  :B => [0.00688778 0.164855 0.406024; 0.0116606 0.167291 0.407942; … ; 0.136619 8.58418e-…
  :t => [0.0, 0.0412915, 0.079139, 0.12853, 0.182064, 0.243794, 0.25, 0.315756, 0.387732, … 

When using the same parameters with thermal dependence only on handling time or attack rate, no instabilities are detected, which siggest that the combination of both is causing the NaN values. It could be linked to some values of max consumption rate and half saturation densities to be Inf.

Can't control the density of the output for the simulate function

When using temperature scaling for the biological rates, the time scale of the system is per second (1 time step = 1 second), so we might want to output less than 4 time steps per second... a potential solution would be to add a keyword argument to simulate to control tkeep

TagBot trigger issue

This issue is used to trigger TagBot; feel free to unsubscribe.

If you haven't already, you should update your TagBot.yml to include issue comment triggers.
Please see this post on Discourse for instructions and more details.

If you'd like for me to do this for you, comment TagBot fix on this issue.
I'll open a PR within a few hours, please be patient!

Problems with Installation

Expected behavior

Installation of the package

Actual behavior

Julia returns an error stating:
unsatisfiable package requirements detected: no feasible version could be found for package: ChunkedArrays

after this package is installed and the BEFW package is installed again it returns the same error as above for the following packages:

Parameters ResettableStacks DataStructures Iterators

After this it finally allows installation.

Steps to reproduce

1.Start with clean install of Julia 0.5.1
2.Run Pkg.add("BioEnergeticFoodWebs")
3.Add the packages that are returned by the error

System information

  • julia 0.5.1
  • Pkg.status("BioEnergeticFoodWebs") - NA
  • OSX 10.10.5

Inability to save output

Expected behavior

I have run the simulations and now want to save the output - ideally in a form where I can read it into R.

Actual behavior

If I run BioEnergeticFoodWebs.save(filename, as = json) I don't get any error, but I also don't get any output.

If I try JSON.print(f,sim) I get the error:
ERROR: Cannot serialize type getfield(BioEnergeticFoodWebs, Symbol("##10#14"))

JSON.print used to work for me fine a year or two ago so I guess there's some issue with an update somewhere along the line?

Steps to reproduce

1.using BioEnergeticFoodWebs, JSON
2.foodweb = nichemodel(10,0.3);
3.bm = rand(size(foodweb,1));
4. params = model_parameters(foodweb)
5. sim = simulate(params, bm, start = 0, stop = 1000);
6.f=open("trial.json","w")
7.JSON.print(f,sim)

System information

  • julia --version
    julia version 1.1.0 (but I have the same problem with 1.0.5)

  • Pkg.status("BioEnergeticFoodWebs")
    BioEnergeticFoodWebs v1.1.2

  • OS and version
    Ubuntu 18.04.4 LTS (Bionic Beaver)

Chose constraints for rewiring (trophic class changes)

Currently, species can change trophic classes after rewiring (carnivores become herbivores ...).
--> Add a rewiring_constraint parameter that could be set to :trophic_class (species cannot change trophic class) or :none (species can change trophic class).

Thermal dependence: Implement extended Boltzmann-Arrhenius function

Function to implement

pT=p0exp(-E/(kT)) * (1/(1+exp(-1/(kT)(Ed-(Ed/topt+k*log(E/(Ed-E)))*T))))

with
pT : biological traits
p0 : scaling constant
E : activation energy
k : Boltzmann constant
T : temperature
topt : optimal temperature
Ed : deactivation energy

Where

Branch temperature, script containing all thermal dependence functions

Warning when running simulate(); canceled iteration

  • When running simulate() I sometimes (but not always) get warnings about cancelled iterations. Simulate still runs and I still get the output.

I get zombies (species that go extinct or nearly extinct and then come back). I'm not sure if this is due to the warning, or if the package doesn't have a control to avoid zombies (but it looks like you do), or if the threshold for extinctions is just lower than I think it is.

Actual behavior

┌ Warning: Could not restrict values to domain. Iteration was canceled since
│ time step dt = = "time step dt = "
│ integrator.dt = 2.220446049250313e-16
│ could not be reduced. = " could not be reduced."
└ @ DiffEqCallbacks C:\Users\kewo0002.julia\packages\DiffEqCallbacks\rV4BA\src\domain.jl:98

Steps to reproduce

  1. foodweb = build_foodweb(50, 0.1);
  2. params = model_parameters(foodweb);
  3. bm = rand(size(foodweb,1));
  4. sim = simulate(params, bm, start = 0, stop = 100);

System information

  • julia --version Version 1.1.0
  • Pkg.status("BioEnergeticFoodWebs") BioEnergeticFoodWebs v1.0.0
  • OS and version Windows 10 (but we're also getting this error with Linux)

Doc page with extinction examples

@evadelmas / @TomClegg94

I'm ready to merge next into master and go forth with a new release (when #40 is done) -- before we do this, the doc needs a page about extinctions.

I added an empty file at docs/src/man/extinctions.md -- please add something short and sweet.

Great work all around.

Template for temperature functions

Some ideas about how to make a general interface for temperature functions.

All function have the form

function fname(params)
    return (p,t) -> something
end

So for example, with a Gaussian:

function gaussian(params)
    return (x,t) -> x * exp(-((params.optimal-t)^2/(2*params.dispersal^2))
end

This means that we can have something like

params = (optimal = 20.0, dispersal = 0.4)
handling_time = gaussian(params)

and for any default value of handling time at any temperature, we can call

handling_time(default_value, temperature)

The cool thing is that if all functions (gaussian, arrhenius, etc) are defined in the same way, we can do something like

function simulation(...., handling::(gaussian, default, params), attack::(arrhenius, default, params), ...)

which defines the behavior of all parameters as functions and parameters. We can also have a function for no response to temperature, defined as

function no_effect(params)
    return (x, t) -> x
end

(this returns the default value).

Let me know if that makes sense, but I think this is the more general approach -- it basically puts the parameterization of temperature functions outside of the model, so we can possibly get this done with minimal modifications to the internal code.

"Classical" functional response

So far the model uses the functional response as presented in Williams, Brose and Martinez 2007 (multi-species version of Yodzis and Innes 1992), using species specific (vector of length S - where S is the number of species) max. consumption rates and half saturation densities.
When using temperature scaling of biological rates, we need to be able to pass interaction specific (matrix of dim. S * S) attack rates and handling times.

Thermal dependence : Implement extended Eppley function

Function to implement

pT=a.*exp.(b.T).(1-((T-z)./(w/2)).^2)

with
pT : biological rate
a, b : parameters from the Eppley curve
z : temperature at which the rate is maximal
w : thermal breadth

Where

Branch temperature, script containing all thermal dependence functions

Store rewiring time steps

The parameters object stores extinctions time steps (in extinctionstime) as well as the state of the interaction matrix before extinctions (and rewiring). When using the interval method for ADBM we should have something similar, e.g. rewiretime would store the time steps where we have rewiring without extinction

ADBM: biomass vs density

In the embedded ADB model, profitability should be calculated based on density but is actually based on biomass here (when Nmethod = :biomass). Simply dividing biomass by body mass would convert it into density.

Chose candidates for rewiring in the ADBM model

When using rewiring with the ADBM model, the whole web is rewired following extinction events, independently of the identity of the extinct species.

We could add a parameter (adbm_directlinks = true / false) to chose whether we want only species that are directly affected by the extinction -- because they have lost a direct resource or consumer (adbm_directlinks = true), or the whole web (adbm_directlinks = false) to be subject to rewiring.

simulate() not working

Expected behavior

I'm trying to follow the steps for "First simulation" outlined in the manual.

Actual behavior

I can get the foodweb (A), I get a warning when I run model_parameters(A), but it works (see warning below). simulate() doesn't work at all. First I think it doesn't like the option for steps, but even when I remove that I still get an error (see below).


Warning when I try and run model_parameters(A):

WARNING: !(B::BitArray) is deprecated, use .!(B) instead.
Stacktrace:
[1] depwarn(::String, ::Symbol) at .\deprecated.jl:70
[2] !(::BitArray{1}) at .\deprecated.jl:57
[3] make_parameters(::Dict{Symbol,Any}) at C:\Users\kewo0002.julia\v0.6\BioEnergeticFoodWebs\src.\make_parameters.jl:190
[4] #model_parameters#17(::Float64, ::Float64, ::Float64, ::Float64, ::Float64, ::Float64, ::Float64, ::Float64, ::Float64, ::Float64, ::Float64, ::Float64, ::Float64, ::Float64, ::Float64, ::Symbol, ::Array{Float64,1}, ::Array{Bool,1}, ::BioEnergeticFoodWebs.#model_parameters, ::Array{Int64,2}) at C:\Users\kewo0002.julia\v0.6\BioEnergeticFoodWebs\src.\make_parameters.jl:92
[5] model_parameters(::Array{Int64,2}) at C:\Users\kewo0002.julia\v0.6\BioEnergeticFoodWebs\src.\make_parameters.jl:61
[6] eval(::Module, ::Any) at .\boot.jl:235
[7] eval_user_input(::Any, ::Base.REPL.REPLBackend) at .\REPL.jl:66
[8] macro expansion at .\REPL.jl:97 [inlined]
[9] (::Base.REPL.##1#2{Base.REPL.REPLBackend})() at .\event.jl:73
while loading no file, in expression starting on line 0

Error when running > s = simulate(p, b, start=0, stop=500):

ERROR: MethodError: no method matching (::BioEnergeticFoodWebs.#f#28{Dict{Symbol,Any}})(::Array{Float64,1}, ::Void, ::Float64)
Closest candidates are:
f(::Any, ::Any) at C:\Users\kewo0002.julia\v0.6\BioEnergeticFoodWebs\src.\simulate.jl:44
Stacktrace:
[1] ode_determine_initdt(::Array{Float64,1}, ::Float64, ::Float64, ::Float64, ::Float64, ::Float64, ::DiffEqBase.#ODE_DEFAULT_NORM, ::DiffEqBase.ODEProblem{Array{Float64,1},Float64,false,Void,BioEnergeticFoodWebs.#f#28{Dict{Symbol,Any}},Void,Void,UniformScaling{Int64},DiffEqBase.StandardODEProblem}, ::OrdinaryDiffEq.ODEIntegrator{OrdinaryDiffEq.Rodas4{0,false,DiffEqBase.LinSolveFactorize{Base.LinAlg.#lufact!},DataType},Array{Float64,1},Float64,Void,Float64,Float64,Float64,Array{Array{Float64,1},1},DiffEqBase.ODESolution{Float64,2,Array{Array{Float64,1},1},Void,Void,Array{Float64,1},Array{Array{Array{Float64,1},1},1},DiffEqBase.ODEProblem{Array{Float64,1},Float64,false,Void,BioEnergeticFoodWebs.#f#28{Dict{Symbol,Any}},Void,Void,UniformScaling{Int64},DiffEqBase.StandardODEProblem},OrdinaryDiffEq.Rodas4{0,false,DiffEqBase.LinSolveFactorize{Base.LinAlg.#lufact!},DataType},OrdinaryDiffEq.InterpolationData{BioEnergeticFoodWebs.#f#28{Dict{Symbol,Any}},Array{Array{Float64,1},1},Array{Float64,1},Array{Array{Array{Float64,1},1},1},OrdinaryDiffEq.Rodas4ConstantCache{DiffEqDiffTools.TimeDerivativeWrapper{BioEnergeticFoodWebs.#f#28{Dict{Symbol,Any}},Array{Float64,1},Void},DiffEqDiffTools.UDerivativeWrapper{BioEnergeticFoodWebs.#f#28{Dict{Symbol,Any}},Float64,Void},OrdinaryDiffEq.RodasConstantCache{Float64,Float64}}}},BioEnergeticFoodWebs.#f#28{Dict{Symbol,Any}},Void,OrdinaryDiffEq.Rodas4ConstantCache{DiffEqDiffTools.TimeDerivativeWrapper{BioEnergeticFoodWebs.#f#28{Dict{Symbol,Any}},Array{Float64,1},Void},DiffEqDiffTools.UDerivativeWrapper{BioEnergeticFoodWebs.#f#28{Dict{Symbol,Any}},Float64,Void},OrdinaryDiffEq.RodasConstantCache{Float64,Float64}},OrdinaryDiffEq.DEOptions{Float64,Float64,Float64,Float64,DiffEqBase.#ODE_DEFAULT_NORM,DiffEqBase.CallbackSet{Tuple{},Tuple{}},DiffEqBase.#ODE_DEFAULT_ISOUTOFDOMAIN,DiffEqBase.#ODE_DEFAULT_PROG_MESSAGE,DiffEqBase.#ODE_DEFAULT_UNSTABLE_CHECK,DataStructures.BinaryHeap{Float64,DataStructures.LessThan},DataStructures.BinaryHeap{Float64,DataStructures.LessThan},Void,Void,Int64,Array{Float64,1},Array{Float64,1},Array{Float64,1}},Array{Float64,1}}) at C:\Users\kewo0002.julia\v0.6\OrdinaryDiffEq\src\initdt.jl:126
[2] auto_dt_reset! at C:\Users\kewo0002.julia\v0.6\OrdinaryDiffEq\src\integrators\integrator_interface.jl:250 [inlined]
[3] #init#1470(::Int64, ::Array{Float64,1}, ::Array{Float64,1}, ::Array{Float64,1}, ::Void, ::Bool, ::Bool, ::Bool, ::Bool, ::Void, ::Bool, ::Bool, ::Float64, ::Bool, ::Rational{Int64}, ::Void, ::Void, ::Int64, ::Rational{Int64}, ::Int64, ::Rational{Int64}, ::Rational{Int64}, ::Bool, ::Int64, ::Void, ::Void, ::Int64, ::Float64, ::Float64, ::DiffEqBase.#ODE_DEFAULT_NORM, ::DiffEqBase.#ODE_DEFAULT_ISOUTOFDOMAIN, ::DiffEqBase.#ODE_DEFAULT_UNSTABLE_CHECK, ::Bool, ::Bool, ::Bool, ::Bool, ::Bool, ::Bool, ::Bool, ::Bool, ::Int64, ::String, ::DiffEqBase.#ODE_DEFAULT_PROG_MESSAGE, ::Void, ::Bool, ::Bool, ::Array{Any,1}, ::DiffEqBase.#init, ::DiffEqBase.ODEProblem{Array{Float64,1},Float64,false,Void,BioEnergeticFoodWebs.#f#28{Dict{Symbol,Any}},Void,Void,UniformScaling{Int64},DiffEqBase.StandardODEProblem}, ::OrdinaryDiffEq.Rodas4{0,false,DiffEqBase.LinSolveFactorize{Base.LinAlg.#lufact!},DataType}, ::Array{Any,1}, ::Array{Any,1}, ::Array{Any,1}, ::Type{Val{true}}) at C:\Users\kewo0002.julia\v0.6\OrdinaryDiffEq\src\solve.jl:320
[4] (::DiffEqBase.#kw##init)(::Array{Any,1}, ::DiffEqBase.#init, ::DiffEqBase.ODEProblem{Array{Float64,1},Float64,false,Void,BioEnergeticFoodWebs.#f#28{Dict{Symbol,Any}},Void,Void,UniformScaling{Int64},DiffEqBase.StandardODEProblem}, ::OrdinaryDiffEq.Rodas4{0,false,DiffEqBase.LinSolveFactorize{Base.LinAlg.#lufact!},DataType}, ::Array{Any,1}, ::Array{Any,1}, ::Array{Any,1}, ::Type{Val{true}}) at .<missing>:0
[5] #solve#1469(::Array{Any,1}, ::Function, ::DiffEqBase.ODEProblem{Array{Float64,1},Float64,false,Void,BioEnergeticFoodWebs.#f#28{Dict{Symbol,Any}},Void,Void,UniformScaling{Int64},DiffEqBase.StandardODEProblem}, ::OrdinaryDiffEq.Rodas4{0,false,DiffEqBase.LinSolveFactorize{Base.LinAlg.#lufact!},DataType}, ::Array{Any,1}, ::Array{Any,1}, ::Array{Any,1}, ::Type{Val{true}}) at C:\Users\kewo0002.julia\v0.6\OrdinaryDiffEq\src\solve.jl:6
[6] (::DiffEqBase.#kw##solve)(::Array{Any,1}, ::DiffEqBase.#solve, ::DiffEqBase.ODEProblem{Array{Float64,1},Float64,false,Void,BioEnergeticFoodWebs.#f#28{Dict{Symbol,Any}},Void,Void,UniformScaling{Int64},DiffEqBase.StandardODEProblem}, ::OrdinaryDiffEq.Rodas4{0,false,DiffEqBase.LinSolveFactorize{Base.LinAlg.#lufact!},DataType}, ::Array{Any,1}, ::Array{Any,1}, ::Array{Any,1}, ::Type{Val{true}}) at .<missing>:0 (repeats 2 times)
[7] #solve#2(::Bool, ::Array{Any,1}, ::Function, ::DiffEqBase.ODEProblem{Array{Float64,1},Float64,false,Void,BioEnergeticFoodWebs.#f#28{Dict{Symbol,Any}},Void,Void,UniformScaling{Int64},DiffEqBase.StandardODEProblem}, ::Void) at C:\Users\kewo0002.julia\v0.6\DifferentialEquations\src\default_solve.jl:14
[8] (::DiffEqBase.#kw##solve)(::Array{Any,1}, ::DiffEqBase.#solve, ::DiffEqBase.ODEProblem{Array{Float64,1},Float64,false,Void,BioEnergeticFoodWebs.#f#28{Dict{Symbol,Any}},Void,Void,UniformScaling{Int64},DiffEqBase.StandardODEProblem}, ::Void) at .<missing>:0
[9] #solve#1(::Bool, ::Array{Any,1}, ::Function, ::DiffEqBase.ODEProblem{Array{Float64,1},Float64,false,Void,BioEnergeticFoodWebs.#f#28{Dict{Symbol,Any}},Void,Void,UniformScaling{Int64},DiffEqBase.StandardODEProblem}) at C:\Users\kewo0002.julia\v0.6\DifferentialEquations\src\default_solve.jl:5
[10] (::DiffEqBase.#kw##solve)(::Array{Any,1}, ::DiffEqBase.#solve, ::DiffEqBase.ODEProblem{Array{Float64,1},Float64,false,Void,BioEnergeticFoodWebs.#f#28{Dict{Symbol,Any}},Void,Void,UniformScaling{Int64},DiffEqBase.StandardODEProblem}) at .<missing>:0
[11] #simulate#27(::Int64, ::Int64, ::Symbol, ::Function, ::Dict{Symbol,Any}, ::Array{Float64,1}) at C:\Users\kewo0002.julia\v0.6\BioEnergeticFoodWebs\src.\simulate.jl:48
[12] simulate(::Dict{Symbol,Any}, ::Array{Float64,1}) at C:\Users\kewo0002.julia\v0.6\BioEnergeticFoodWebs\src.\simulate.jl:35

Steps to reproduce

  1. using BioEnergeticFoodWebs
  2. A = nichemodel(10, 0.3);
  3. p = model_parameters(A);
  4. b = rand(size(A, 1));
  5. s=simulate(p,b,start=0,stop=50)

System information

  • julia --version Version 0.6.4 (2018-07-09 19:09 UTC)
  • Pkg.status("BioEnergeticFoodWebs"): 0.3.1
  • OS and version: Windows 10 Education, version 1703

Documents are not deployed

Documents are built using Documenter but not deployed online.
Setting ENV["DOCUMENTER_DEBUG"] = "true" shows the following:

┌ Info: Deployment criteria:
│ - ✔ ENV["TRAVIS_REPO_SLUG"]="PoisotLab/BioEnergeticFoodWebs.jl" occurs in repo="github.com/PoisotLab/BioEnergeticFoodWebs.jl.git"
│ - ✔ ENV["TRAVIS_PULL_REQUEST"]="false" is "false"
│ - ✔ ENV["TRAVIS_TAG"]="" is (i) empty or (ii) a valid VersionNumber
│ - ✘ ENV["TRAVIS_BRANCH"]="next" matches devbranch="master" (if tag is empty)
│ - ✔ ENV["DOCUMENTER_KEY"] exists
└ Deploying: ✘

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.