Why this site?

Biomonitoring and related indices are crucial to preserve the quality status of running waters. There are as many indices as the roads to Rome and their use is confined within the country in which they are developed, making it difficult to share methods among researchers. With the package biomonitoR we aim to cover this gap and to make the calculation of biomonitoring indices more easy.

What is biomonitoR?

biomonitoR is an R package for the calculation of biomonitoring indices. It is still in development and currently available only on github.

Which is the target of biomonitoR

Currently biomonitoR covers the calculation of indices based on macroinvertebrate community, but we hope to develop functions also for other biotic communities in the next future.


This package is based upon work from COST Action CA15113 (SMIRES, Science and Management of Intermittent Rivers and Ephemeral Streams, www.smires.eu), supported by COST (European Cooperation in Science and Technology).

How biomonitoR works



# Install the package devtools if you haven't installed it yet




Load the library and then prepare data for the analysis. biomonitoR package needs a dataset with taxa names in the first column called Taxa and samples on the other columns (see the example data macro_ex). Take a look to this post and this post for tips on data preparation.


# load example dataset

# Prepare data for the analysis
data.bio = asBiomonitor(macro_ex)
data.agR = aggregatoR(data.bio)

Calculate genus and family richness.

richness(data.agR, "Genus")
richness(data.agR, "Family")

Calculate shannon, simpson, margalef and menhinick indices at the family level. You can choose also genus and species level.

shannon(data.agR, taxLev = "Family")
simpson(data.agR, taxLev = "Family")
margalef(data.agR, taxLev = "Family")
menhinick(data.agR, taxLev = "Family")

Calculation of Italian and Iberian BMWP and ASPT

# Italian bmwp and aspt
bmwp(data.agR, method="ita")
aspt(data.agR, method="ita")

# Iberian bmwp and aspt
bmwp(data.agR, method="spa")
aspt(data.agR, method="spa")

Calculation of life index (Lotic-invertebrate Index for Flow Evaluation)


Calculation of absolute or relative abundance of a Taxon of more Taxa

# with this function you can calculate abundance of taxa at different taxonomic level
# absolute abundance of Ephemerellidae and Caenis
abuTax(data.agR, taxa = c("Ephemerellidae", "Caenis"))

# relative abundance Ephemerellidae and Caenis
abuTax(data.agR, taxa = c("Ephemerellidae", "Caenis"), rel = T)


Convert your data to a vegan-like format

convertovegan(data.agR, taxLev = "Family")