Recent advances in aquatic ecosystem modelling have particularly focused on trophic network analysis through trophodynamic models. We present here a R package devoted to a recently developed model, EcoTroph. This model enables the analysis of aquatic ecological networks and the related impacts of fisheries. It was available through a plug-in in the well-known Ecopath with Ecosim software or through implementations in Excel sheets. The R package we developed simplifies the access to the EcoTroph model and offers a new interfacing between two widely used software, Ecopath and R.
In the face of the global overexploitation of marine resources and the
fast degradation of ecosystems integrity, scientists developed new
modelling approaches at the scale of the ecosystem. In fact, the main
tool used for fisheries regulation is a stock approach which does not
account for the trophic network linking marine ecological components. An
important challenge is to analyze the aquatic ecological networks and
the related impacts of fishery. There are several ways to define and
represent an ecosystem. One widely used approach is based on the trophic
level concept. (Elton 1927) and (Lindeman 1942)
introduced this concept for describing aquatic ecosystems by assigning
integer trophic levels (TLs) to the individual numbers, to the biomass
or to the biological production by its component species. This approach
differentiated between primary producers and detritus (
EcoTroph (ET) is an approach and software for modelling marine and
freshwater ecosystems, entirely articulated around the TL concept
(Gascuel 2005; Gascuel and Pauly 2009). It has been
developed at the same time as the Ecopath worldwide expansion happened
and incorporated into the Ecopath plug-in family
(Gascuel et al. 2009). The first key idea of ET is that it deals with
the continuous distribution of the biomass in an ecosystem as a function
of continuous TL. The biomass enters the foodweb at
|
|
|
|
|
|
|
|
This package is the first attempt to offer interfacing between R and Ecopath through its plug-in EcoTroph. The plug-in will use R and the EcoTroph (Guitton et al. 2013) package within the free Ecopath with Ecosim software. This enables the use of ET for a large panel through the plug-in for inexperienced R users, or directly the R package for the more expert ones. On the developer side, this way to link a rich user interface (developed in Microsoft VB) and a well known software in the fishery scientists group such as R is a way to set up a community. These researchers can so focus on the model improvements without taking into account the rich user interface which is time consuming. Along with several functions, we include an example dataset on the Guinean marine ecosystem (Gascuel et al. 2011) within the package. This article introduces, using the example dataset, the three main components of EcoTroph:
The data import and validation
The ET-Transpose tool
The ET-Diagnosis tool
A great deal of documentation, both introductory and advanced, is
available on the ET website
(http://sirs.agrocampus-ouest.fr/EcoTroph). The EcoTroph package
requires the XML package
(Lang 2012) in order to load the model input parameters coming from
the Ecopath software. The read.ecopath.model
function will parse the
data.
The EcoTroph package requires an input data table to run. The user has
to load this dataset under the different possible formats (.xls
,
.csv
, .txt
) with the functions read.table
, read.csv
…The
ecopath_guinee
dataset (Table 1) is an example of a suitable
input table constructed for use with the EcoTroph package.
The variable names have to be specified and strictly the same as above:
group_name
(name of the group representing one or several species
gathered together), TL
(the trophic level of the group), biomass
(the biomass of the group), prod
(the production on biomass ratio or
P/B) and accessibility
(the ratio of the group biomass that would be
caught assuming an infinite fishing pressure). These parameters
generally come from Ecopath inputs or outputs, but can also be
independent. The entry catch.1
, catch.2
, catch.whatyouwant
is
necessary if several fisheries do exist. The OI
column (the omnivory
index, an Ecopath output parameter) is optional, it is used in the
create.smooth
function for an alternative smooth form
(
The check.table
function was developed to check the compatibility of
the input data table with the EcoTroph package:
check.table(ecopath_guinee)
In the example, no warning message appears as no error is made. If a
message appears, the user has to correct the dataset in view of the
comments. No missing values (NA
s) are accepted as input, a yield
column has to be entered with 0-values if no catches are registered. As
well as the yield, the P/B of detritus groups (not entered in Ecopath)
has to be set to 0. The check.table
function converts the input
dataset into a "data.frame"
object if it is not already one.
A read.ecopath.model
function was also implemented. It allows users to
import data in .xml
format exported from the Ecopath/EcoTroph plug-in
or distributed by a web service (a database of Ecopath models has been
set up to allow a meta-analysis at a world scale,
http://sirs.agrocampus-ouest.fr/EcoTroph). This function formats the
inputs so they meet the EcoTroph package requirements. Nevertheless,
it is advisable to check the data consistency using the check.table
function.
The Smooth function returns a table allowing the conversion of data
referring to specific taxons or functional groups (Ecopath trophic
groups for example) into data referring to trophic classes. The major
assumption of this function is that distributions of the trophic groups’
biomass, yield, etc., around their mean trophic level follow a lognormal
curve using the equation:
sigmaLN
in the R code) which is a measure of
the trophic level variability within the group, and a shift parameter
defining the theoretical trophic level characterised by a null
variability in TL within group.
group_name | TL | biomass | prod | catch.1 | catch.2 | accessibility | OI | |
---|---|---|---|---|---|---|---|---|
1 | Whales | 4.01 | 0.0309 | 0.020 | 0.000 | 0.000 | 0.0 | 0.059 |
2 | Dolphins | 4.48 | 0.0433 | 0.070 | 0.000 | 0.000 | 0.0 | 0.331 |
3 | Turtles | 2.19 | 0.0296 | 0.150 | 0.000 | 0.000 | 0.0 | 0.338 |
4 | Sea birds | 3.81 | 0.0013 | 0.300 | 0.000 | 0.000 | 0.0 | 0.353 |
5 | Rays+ | 3.97 | 0.3860 | 0.363 | 0.012 | 0.024 | 0.9 | 0.329 |
6 | Sharks+ | 4.31 | 0.1050 | 0.410 | 0.007 | 0.003 | 0.8 | 0.633 |
7 | Large pelagics | 4.21 | 0.3840 | 0.850 | 0.025 | 0.069 | 0.8 | 0.263 |
8 | Barracudas+ | 4.12 | 0.0583 | 0.920 | 0.009 | 0.022 | 0.9 | 0.259 |
9 | Carangids | 4.16 | 0.0627 | 1.000 | 0.010 | 0.024 | 0.8 | 0.139 |
10 | Horse Makerels+ | 3.13 | 2.3330 | 0.700 | 0.000 | 0.115 | 0.8 | 0.366 |
… | … | … | … | … | … | … | … | |
34 | Primary producers | 1.00 | 69.0000 | 84.000 | 0.000 | 0.000 | 0.0 | 0.000 |
35 | Detritus | 1.00 | 290.0000 | 0.000 | 0.000 | 0.000 | 0.0 | 0.193 |
The create.smooth
function enables the creation of this Smooth
function using several input parameters. The parameter ecopath
corresponds to the input data table (ecopath_guinee
in the example).
The parameter pas
defining the splitting of trophic classes has by
default a value of 0.1. The parameter smooth_type
defines the form of
the standard deviation (sigmaLN
) wanted for the lognormal
distribution. Three options are implemented:
If smooth_type=1
(choice by default), sigmaLN
is constant. This
constant sigmaLN
is equal to the parameter sigmaLN_cst
specified
in the function, and has by default a value of 0.12. The shift
parameter is set equal to 1.8 by default.
If smooth_type=2
, this is equivalent to
sigmaLN=smooth_param*ln(TL-0.05)
. The parameter smooth_param
of
this formula (also a parameter of the create.smooth
function)
defines the slope of the log-linear trophic level variability
increase around the mean trophic level of the group. Based on our
experience gained partially through observations, default parameters
have been defined as follows: smooth_param=0.07
and shift=0.95
.
(No need to change the shift
value in the function, let
shift=NULL
, it will be automatically set to 0.95 for
smooth_type=2
. Same thing for the parameter smooth_param
.)
If smooth_type=3
, sigmaLN
for each group is equal to the
omnivory index calculated by Ecopath divided by the mean trophic
level of the group. A warning message will appear if OIs are equal
to 0, they will be automatically changed to a value of 0.01. The
parameter shift
is by default equal to 0. (No need to change the
shift
value in the function, let shift=NULL
, it will be
automatically set to 0 for smooth_type=3
.)
The create.smooth
function returns a table of the distribution of each
mean trophic level within trophic classes (i.e. how a given species or
ecological group, characterized by a given and known mean trophic level,
is distributed around this trophic level). This table will be used in
the next step of the analysis for the construction of trophic spectra.
# default choice, constant sigmaLN
create.smooth(ecopath_guinee)
# sigmaLN = smooth_param*ln(TL-0.05)
create.smooth(ecopath_guinee, smooth_type = 2)
plot(smooth)
graphic function, applied to the Guinean ecosystem example. Each curve
represents the distribution across trophic levels for all groups whose
mean trophic level is equal to the mean value of the distribution. Only
curves related to existing groups are displayed.
A graphic function, plot(smooth)
, was developed in order to display
this Smooth function. The input parameter is the table returned by the
create.smooth
function. It returns a plot with the lognormal curve for
each present trophic class (see Figure 2).
plot(create.smooth(ecopath_guinee))
The Transpose
function enables the conversion of data referring to
specific taxons or functional groups (Ecopath trophic groups for
example) into data referring to trophic classes. This function uses the
table returned by the create.smooth
function. The concerned variables
are the biomasses, or the catches or others …Using the Transpose
function, these variables are distributed continuously along the trophic
classes for each group. This function will be reused in the
create.ETmain
function to build a summary table with all the variables
calculated by trophic class.
Transpose
takes as input parameters the table returned by the
create.smooth
function (tab_smooth
), the input data table
(ecopath
), and the name of the column the user wants to distribute by
trophic class (column
):
A <- create.smooth(ecopath_guinee)
# Transpose of the biomass column
T_biomass <- Transpose(A, ecopath_guinee, "biomass")
# Transpose of the catch.1 column
Transpose(A, ecopath_guinee, "catch.1")
Results can be displayed graphically using the plot(Transpose)
function. It takes as input parameter the table returned by the
Transpose
function (tab_Trans
). The user has the possibility to use
a log scale for the y-axis (scale=log
, the minimum value considered on
the graph is conventionally set up at 1/10000 of the total biomass), and
to enter a title (title
):
plot(tab_Trans, title = NULL, scale = NULL)
returns the principal
plots according to the selected column, in particular a plot by group
and the associated trophic spectra (see Figure 3).
# title and log scale for the biomass
plot(T_biomass, title = "biomass", log)
plot(Transpose)
graphical function applied to the biomass data per
ecological group in the Guinean ecosystem (ecopath_guinee
dataset).
The top panel displays the distributions for each group, while the
bottom panel displays the biomass trophic spectrum (BTS, i.e. the sum of
all groups).The create.ETmain
function enables the creation of a summary table,
ET_Main
, containing the principal variables by trophic class. This
function can be used directly, there is no need of the previous steps
Smooth and Transpose (however these steps are necessary to a good
understanding of the EcoTroph model). It takes as input parameters the
input data table (ecopath
) and the parameters of the create.smooth
function:
# constant sigmaLN
create.ETmain(ecopath_guinee)
# sigmaLN = smooth_param*ln(TL-0.05)
create.ETmain(ecopath_guinee, smooth_type = 2)
In the ET_Main
output table (Table 2), some parameters
directly come from the input table (biomass B
, catch Y_tot
), while
some are calculated based on the definitions of EcoTroph parameters
(e.g. Fishing mortality
TL | B | B_acc | P | P_acc | Kin | Kin_acc | Y_tot | F_loss |
---|---|---|---|---|---|---|---|---|
1 | 359.00 | 0.00 | 5796.00 | 0.00 | 16.14 | 1.00 | 0.00 | 0.00 |
2 | 25.73 | 0.00 | 1029.20 | 0.00 | 40.00 | 0.68 | 0.00 | 0.00 |
2.1 | 6.26 | 0.00 | 13.40 | 0.00 | 2.14 | 0.68 | 0.00 | 0.00 |
2.2 | 82.06 | 0.06 | 147.64 | 0.04 | 1.80 | 0.68 | 0.01 | 0.00 |
2.3 | 11.94 | 0.27 | 21.17 | 0.20 | 1.77 | 0.74 | 0.05 | 0.00 |
2.4 | 0.62 | 0.44 | 0.90 | 0.57 | 1.44 | 1.31 | 0.24 | 0.00 |
… | … | … | … | … | … | … | … |
TL | F_loss_acc | N_loss | Fish_mort | Fish_mort_acc | Selec | Time | N_loss_acc |
---|---|---|---|---|---|---|---|
1 | 0.00 | 1.73 | 0.00 | 0.00 | 0.00 | 0.00 | NaN |
2 | 0.22 | 43.41 | 0.00 | 0.15 | 0.00 | 0.06 | |
2.1 | 0.22 | 0.00 | 0.15 | 0.00 | 0.06 | ||
2.2 | 0.22 | 19.42 | 0.00 | 0.15 | 0.00 | 0.11 | |
2.3 | 0.25 | 31.57 | 0.00 | 0.18 | 0.02 | 0.17 | |
2.4 | 0.42 | 0.38 | 0.55 | 0.70 | 0.22 | ||
… | … | … | … | … | … | … |
# constant sigmaLN
ET_Main <- create.ETmain(ecopath_guinee)\$ET_Main
ET_Main
The create.ETmain
function also returns intermediate tables, i.e. the
following tables are also contained in the returned list object:
biomass
, the table returned by the Transpose
function for the
column biomass.
biomass_acc
, the table biomass
multiplied by the accessibility
parameter.
prod
, the table corresponding to the production by trophic class.
prod_acc
, the table prod
multiplied by the accessibility
parameter.
tab_smooth
, the table returned by the create.smooth
function.
Y
, the table(s) returned by the Transpose
function for the
column catch.(x)
.
> names(create.ETmain(ecopath_guinee))
[1] "ET_Main" "biomass" "biomass_acc" "prod" "prod_acc" "tab_smooth" "Y"
As previously, we developed a graphic function to display the main
results: plot(ETmain)
. Different plots are created, e.g. the biomass
trophic spectrum (BTS), the accessible biomass trophic spectrum (ABTS),
the catch trophic spectrum (CTS). It takes as input parameter the list
object returned by the create.ETmain
function.
plot(create.ETmain(ecopath_guinee),log)
Naturally all the returned graphics are not exhaustive. The user can
construct other ones using the returned list object. Moreover the
plot(ETmain)
function is implemented with a log scale parameter for
the different trophic spectra. However, this does not always provide a
good representation. We really encourage users to test different scales
for the y-axis. Some plots could be falsely interpreted with no
awareness of the y-axis form importance.
ET-Diagnosis is used to simulate the effect of different fishery
mortality scenarios on trophic spectra coming from ET-Transpose (see
above). Thus different effort multipliers (Mul_eff
variable), ranging
conventionally from 0 to 5, are applied to the initial fishing
mortalities Mul_eff=0
corresponds to a fishery closure
(Mul_eff
.
The other variables contained in the ET_Main
table are also treated.
We so obtain all the trophic spectra representing the situation at
equilibrium for each Mul_eff
. Effects of fishery mortality changes at
an ecosystem scale include biomass, accessible biomass, and kinetic
changes but also impacts on the mean trophic level of the catch and the
total biomass. The model provides an overview of the current fishing
impact on the ecosystem (compared to the unexploited state), and some
long term forecasts on the consequences of increasing or decreasing
fishing pressures. This model also enables to see how different
ecosystem functioning hypotheses (values of the extent recycling,
top-down effect) could affect the ecosystem and trophic scale
properties.
ET-Diagnosis is implemented through the create.ETdiagnosis
function.
It takes as input parameters the list object returned by the
create.ETmain
function, Mul_eff
a vector of the different effort
multipliers, and the specific parameters of the ET-diagnosis
simulations:
Beta
, a parameter taking values between 0 and 1, which defines the
intensity of the biomass recycling by the microbial loop (default
value set to 0.1)
TopD
, a parameter taking values between 0 and 1, which defines the
intensity of the top-down control of predators on their preys
(default value set to 0.2)
FormD
, a parameter taking values between 0 and 1, which defines
the functional relationship between preys and predators (default
value set to 0.5)
(cf. package help for more details).
This function returns two types of results for each simulated effort multiplier: indices calculated at the ecosystem scale for each effort multiplier, and the catches, biomasses, accessible biomasses, productions …for each trophic class.
ETmain <- create.ETmain(ecopath_guinee)
create.ETdiagnosis(ETmain)
# change of the top-down parameter
create.ETdiagnosis(ETmain, TopD = 0.6)
A graphic function, plot(m, scale=null, maxrange=null)
, displays the
principal plots coming from the function create.ETdiagnosis
: the
biomass, predator biomass, catches ratio plots for the different effort
multipliers, and the principle trophic spectra. This function takes as
input parameters the list object returned by the create.ETdiagnosis
function (m
), one scale parameter for the y-axis of the BTS (scale
,
log or not), and the maximum wanted for the x-axis (maxrange
).
Naturally all the returned graphics are not exhaustive as users can
construct other ones using the returned list object. As previously
mentioned, we really encourage users to test different scales for the
y-axis. Figure 4 is one major graphic of the eight
displayed by the function.
# log scale for the BTS
diag <- create.ETdiagnosis(ETmain)
plot(diag, log)
This article describes the principle functions of the EcoTroph package. The package enables the analysis of fishing impacts on aquatic trophic networks in a simple way, and also the simulation of various fisheries in terms of catch (see Figure 1). New simulation tools are currently being developed to improve the model and enable the implementation of more options regarding the fisheries scenarios. The package is available on the Comprehensive R Archive Network (CRAN, http://CRAN.R-project.org/) and users are encouraged to provide feedback in order to enhance the tool. All the information contained in this article is not exhaustive. More details are available in the package help, and on the website (http://sirs.agrocampus-ouest.fr/EcoTroph). Feel free to contact the authors for any problem encountered while using the package.
We would like to thank all the persons involved in the development of EcoTroph. There are now numerous applications of this model available in the scientific literature and we hope the R package will help to continue to forge ahead.
This article is converted from a Legacy LaTeX article using the texor package. The pdf version is the official version. To report a problem with the html, refer to CONTRIBUTE on the R Journal homepage.
Text and figures are licensed under Creative Commons Attribution CC BY 4.0. The figures that have been reused from other sources don't fall under this license and can be recognized by a note in their caption: "Figure from ...".
For attribution, please cite this work as
Colléter, et al., "An Introduction to the EcoTroph R Package: Analyzing Aquatic Ecosystem Trophic Networks", The R Journal, 2013
BibTeX citation
@article{RJ-2013-010, author = {Colléter, Mathieu and Guitton, Jérôme and Gascuel, Didier}, title = {An Introduction to the EcoTroph R Package: Analyzing Aquatic Ecosystem Trophic Networks}, journal = {The R Journal}, year = {2013}, note = {https://rjournal.github.io/}, volume = {5}, issue = {1}, issn = {2073-4859}, pages = {98-107} }