-
Notifications
You must be signed in to change notification settings - Fork 46
Description
I propose to add a function getTrophicLevel() that returns a matrix (species x size).
The trophic level of an individual is defined as 1 more than the average trophic level of all the prey items they have consumed during their life up to the current moment. The average is taken as a weighted average, weighted by the biomass of the prey. The trophic level of the primary resource is set to 0.
Traditionally one consider the simple case where all individuals of a species have the same diet composition
In vector notation this is just
Thus in this case the trophic level is easy to calculate.
The definition of the trophic level of an individual becomes a bit more complicated if the diet changes as an individual grows up, as it does in mizer. We now need to integrate over the entire life of the predator until it reaches its current size.
We'll discuss this only in the simple case where the system is in a steady state so that the growth rate and the prey density depend on size only and not explicitly on time. We can replace the integral over time since birth by an integral over size since birth, using that
where
Let us denote by
The denominator is the total biomass that the predator has consumed in their lifetime. Note that we need to include the resource as one of the prey "species". The resource will not contribute to the numerator because its trophic level is taken to be
We can again view the above equation as a vector equation
The matrix multiplication now involves both a sum over the prey species and an integral over the prey sizes. If we discretise the weight then
In mizer the consumption rate density is given by
where
One could go on and define the trophic level of a species as the average trophic level of all its individuals. This might be useful in order to compare with the trophic level of a species in a non-size-resolved model. One would probably want this to be a weighted average where the trophic level of each individual is weighted by the consumption rate of that individual:
where the consumption rate of an individual of species
This could be returned by a function getTrophicLevelBySpecies().