Identify and get missing diet information

Summary

In this notebook we

  • identify the species for which we have no prior information on their diet
  • check for potential taxonomic issues that we will have to deal with
  • use fishbase to get diet information

0. Setup

We load the environment.

library(renv)
renv::load()
renv::restore() # Install missing librairies.
renv::status() # Check the project state.

library(here)
library(stringr)
library(stringdist)
library(dplyr)
library(riversea)
library(rfishbase)
library(ggplot2)

Previous information on fish diet can be find on the dataframe hosted at the following address.

url <- "https://raw.githubusercontent.com/CamilleLeclerc/FoodWebsLakeStream/refs/tags/v3.0/data/raw-data/fish_diet_shift.csv"

We download it and convert it to a dataframe.

data_folder <- here("data", "coast")
file_name <- "fish_diet.csv"
download.file(url, destfile = here(data_folder, file_name))

We can check that the file has been downloaded.

list.files(data_folder, pattern = file_name)
[1] "fish_diet.csv"

We then read the file as a dataframe.

d.diet <- read.csv(here(data_folder, file_name))
sp_list.diet <- sort(unique(d.diet$species_name))
sp_list.diet <- str_replace(sp_list.diet, "_", " ")
sp_list.diet
 [1] "Abramis brama"               "Acipenser ruthenus"         
 [3] "Alburnoides bipunctatus"     "Alburnus alburnus"          
 [5] "Ameiurus melas"              "Anguilla anguilla"          
 [7] "Aspius aspius"               "Barbatula barbatula"        
 [9] "Barbus barbus"               "Barbus meridionalis"        
[11] "Blicca bjoerkna"             "Carassius auratus"          
[13] "Carassius carassius"         "Carassius gibelio"          
[15] "Chelon auratus"              "Chelon ramada"              
[17] "Chondrostoma nasus"          "Chondrostoma toxostoma"     
[19] "Cobitis taenia"              "Coregonus lavaretus"        
[21] "Cottus gobio"                "Cottus petiti"              
[23] "Cyprinus carpio"             "Esox lucius"                
[25] "Gambusia affinis"            "Gasterosteus aculeatus"     
[27] "Gobio gobio"                 "Gymnocephalus cernua"       
[29] "Hypophthalmichthys molitrix" "Lepomis gibbosus"           
[31] "Leucaspius delineatus"       "Leuciscus burdigalensis"    
[33] "Leuciscus cephalus"          "Leuciscus idus"             
[35] "Leuciscus leuciscus"         "Lota lota"                  
[37] "Micropterus salmoides"       "Misgurnus fossilis"         
[39] "Neogobius melanostomus"      "Oncorhynchus mykiss"        
[41] "Pachychilon pictus"          "Perca fluviatilis"          
[43] "Phoxinus phoxinus"           "Ponticola kessleri"         
[45] "Pseudorasbora parva"         "Pungitius pungitius"        
[47] "Rhodeus amarus"              "Rutilus rutilus"            
[49] "Salaria fluviatilis"         "Salvelinus alpinus"         
[51] "Salvelinus fontinalis"       "Salvelinus namaycush"       
[53] "Scardinius erythrophtalmus"  "Scardinius hesperidicus"    
[55] "Silurus glanis"              "Stizostedion lucioperca"    
[57] "Telestes souffia"            "Thymallus thymallus"        
[59] "Tinca tinca"                 "Trutta fario"               
[61] "Zingel asper"               

1. Pomet

To identify missing species in this dataframe, we have to load dataframes from sea campagne (solper, pomet, nurse).

pomet <- read.csv(here(data_folder, "poisson_pomet.csv"), sep = ";")
solper <- read.csv(here(data_folder, "captures_SOLPER_2005_2011.csv"), sep = ";")
nurse <- read.csv(here(data_folder, "Captures_Nurse_1980_2023.csv"), sep = ";")

sp_pomet <- unique(pomet$NomScient)
head(sp_pomet)
[1] "Abramis"                         "Abramis brama"                  
[3] "Abramis brama + Blicca bjoerkna" "Acipenser sturio"               
[5] "Agonus cataphractus"             "Alburnoides bipunctatus"        
sp_solper <- unique(solper$Espece)
head(sp_solper)
[1] "CALMLYR" "ENGRENC" "GOBINIG" "POMOMIN" "SOLESOL" "SPRASPR"
sp_nurse <- unique(nurse$Espece)
head(sp_nurse)
[1] "Anguilla anguilla"  "Crangon crangon"    "Platichthys flesus"
[4] "Solea solea"        "Trisopterus luscus" "Ciliata mustela"   
reftax_file <- "POMET_RefTax_Sp.csv"
reftax <- read.csv(here(data_folder, reftax_file), sep = ";")

1.1. Handle taxonomic resolutions: keep only species

is_species <- function(name) grepl(" ", name)
species_only <- sp_pomet[is_species(sp_pomet)]

1.2. Handle different genres: keep only fish

remove_non_fish <- function(species_list, reftax) {
    sp_df <- data.frame(nom = species_list)
    sp_df <- left_join(sp_df, reftax, by = "nom")
    sp_df <- sp_df |> filter(phylum == "Chordata" | is.na(phylum))
    sp_df$nom
}

fish_only <- remove_non_fish(species_only, reftax)
species_missing <- setdiff(fish_only, sp_list.diet)
species_missing
  [1] "Abramis brama + Blicca bjoerkna"    
  [2] "Acipenser sturio"                   
  [3] "Agonus cataphractus"                
  [4] "Alosa alosa"                        
  [5] "Alosa fallax"                       
  [6] "Ammodytes marinus"                  
  [7] "Ammodytes tobianus"                 
  [8] "Aphia minuta"                       
  [9] "Apletodon dentatus"                 
 [10] "Argyrosomus regius"                 
 [11] "Arnoglossus imperialis"             
 [12] "Arnoglossus laterna"                
 [13] "Arnoglossus thori"                  
 [14] "Atherina boyeri"                    
 [15] "Atherina presbyter"                 
 [16] "Balistes capriscus"                 
 [17] "Barbatula barbatulus"               
 [18] "Belone belone"                      
 [19] "Blennius ocellaris"                 
 [20] "Buglossidium luteum"                
 [21] "Callionymus lyra"                   
 [22] "Callionymus reticulatus"            
 [23] "Centrolabrus exoletus"              
 [24] "Chelidonichthys lucerna"            
 [25] "Chelon labrosus"                    
 [26] "Ciliata mustela"                    
 [27] "Clupea harengus"                    
 [28] "Conger conger"                      
 [29] "Crystallogobius linearis"           
 [30] "Ctenolabrus rupestris"              
 [31] "Cyclopterus lumpus"                 
 [32] "Dicentrarchus labrax"               
 [33] "Dicentrarchus punctatus"            
 [34] "Dicologlossa cuneata"               
 [35] "Diplecogaster bimaculata bimaculata"
 [36] "Diplodus annularis"                 
 [37] "Diplodus sargus sargus"             
 [38] "Diplodus vulgaris"                  
 [39] "Echiichthys vipera"                 
 [40] "Engraulis encrasicolus"             
 [41] "Entelurus aequoreus"                
 [42] "Eutrigla gurnardus"                 
 [43] "Gadus morhua"                       
 [44] "Gaidropsarus mediterraneus"         
 [45] "Gaidropsarus vulgaris"              
 [46] "Gasterosteus aculeatus aculeatus"   
 [47] "Gobius cobitis"                     
 [48] "Gobius niger"                       
 [49] "Gobius paganellus"                  
 [50] "Gobiusculus flavescens"             
 [51] "Gymnocephalus cernuus"              
 [52] "Hippocampus guttulatus"             
 [53] "Hippocampus hippocampus"            
 [54] "Hyperoplus immaculatus"             
 [55] "Hyperoplus lanceolatus"             
 [56] "Labrus bergylta"                    
 [57] "Labrus mixtus"                      
 [58] "Labrus viridis"                     
 [59] "Lepadogaster candolii"              
 [60] "Lepadogaster lepadogaster"          
 [61] "Limanda limanda"                    
 [62] "Liparis liparis liparis"            
 [63] "Liparis montagui"                   
 [64] "Lipophrys pholis"                   
 [65] "Liza aurata"                        
 [66] "Liza ramada"                        
 [67] "Merlangius merlangus"               
 [68] "Merluccius merluccius"              
 [69] "Microchirus variegatus"             
 [70] "Mullus barbatus barbatus"           
 [71] "Mullus surmuletus"                  
 [72] "Mustelus asterias"                  
 [73] "Myoxocephalus scorpius"             
 [74] "Nerophis lumbriciformis"            
 [75] "Nerophis maculatus"                 
 [76] "Nerophis ophidion"                  
 [77] "Osmerus eperlanus"                  
 [78] "Pagellus bogaraveo"                 
 [79] "Pagellus erythrinus"                
 [80] "Parablennius gattorugine"           
 [81] "Pegusa lascaris"                    
 [82] "Pholis gunnellus"                   
 [83] "Phrynorhombus norvegicus"           
 [84] "Platichthys flesus"                 
 [85] "Pleuronectes platessa"              
 [86] "Pollachius pollachius"              
 [87] "Pomatoschistus lozanoi"             
 [88] "Pomatoschistus marmoratus"          
 [89] "Pomatoschistus microps"             
 [90] "Pomatoschistus minutus"             
 [91] "Pomatoschistus pictus"              
 [92] "Raja clavata"                       
 [93] "Raja montagui"                      
 [94] "Raja undulata"                      
 [95] "Rajella fyllae"                     
 [96] "Salaria pavo"                       
 [97] "Salmo salar"                        
 [98] "Salmo trutta fario"                 
 [99] "Salmo trutta trutta"                
[100] "Sander lucioperca"                  
[101] "Sardina pilchardus"                 
[102] "Scardinius erythrophthalmus"        
[103] "Scomber scombrus"                   
[104] "Scophthalmus maximus"               
[105] "Scophthalmus rhombus"               
[106] "Scyliorhinus canicula"              
[107] "Solea senegalensis"                 
[108] "Solea solea"                        
[109] "Sparus aurata"                      
[110] "Spinachia spinachia"                
[111] "Spondyliosoma cantharus"            
[112] "Sprattus sprattus"                  
[113] "Squalius cephalus"                  
[114] "Symphodus bailloni"                 
[115] "Symphodus melops"                   
[116] "Symphodus ocellatus"                
[117] "Symphodus roissali"                 
[118] "Syngnathus abaster"                 
[119] "Syngnathus acus"                    
[120] "Syngnathus rostellatus"             
[121] "Syngnathus typhle"                  
[122] "Taurulus bubalis"                   
[123] "Torpedo marmorata"                  
[124] "Torpedo torpedo"                    
[125] "Trachurus trachurus"                
[126] "Trigla lyra"                        
[127] "Trigloporus lastoviza"              
[128] "Tripterygion delaisi"               
[129] "Trisopterus luscus"                 
[130] "Trisopterus minutus"                
[131] "Umbrina canariensis"                
[132] "Umbrina cirrosa"                    
[133] "Zeugopterus punctatus"              
[134] "Zeus faber"                         
[135] "Zoarces viviparus"                  

1.3. Handle taxonomic typos

Next, we want to check for mismatch because of typos or alternative taxonomic names. To do so, we compute a string distance to find species with most similar names between our two lists. By doing so, we will be able to quickly identify erroneous mismatch.

similar_name <- lapply(species_missing, function(name) {
    distances <- stringdist(name, sp_list.diet, method = "jw")
    closest <- sp_list.diet[which.min(distances)]
    data.frame(name = name, closest = closest, distance = min(distances))
})

df_strdist <- do.call(rbind, similar_name) |>
    arrange(distance)
df_strdist
                                   name                    closest   distance
1           Scardinius erythrophthalmus Scardinius erythrophtalmus 0.01234568
2                 Gymnocephalus cernuus       Gymnocephalus cernua 0.04841270
3                  Barbatula barbatulus        Barbatula barbatula 0.05087719
4      Gasterosteus aculeatus aculeatus     Gasterosteus aculeatus 0.10416667
5                      Acipenser sturio         Acipenser ruthenus 0.16335979
6       Abramis brama + Blicca bjoerkna              Abramis brama 0.19354839
7                       Chelon labrosus             Chelon auratus 0.20577201
8                       Clupea harengus             Chelon auratus 0.21150794
9                Myoxocephalus scorpius       Gymnocephalus cernua 0.22121212
10                     Taurulus bubalis          Alburnus alburnus 0.23067496
11                    Sander lucioperca    Stizostedion lucioperca 0.24404660
12                Merluccius merluccius        Leuciscus leuciscus 0.24657999
13                         Salaria pavo        Salaria fluviatilis 0.24678363
14                       Labrus viridis        Barbus meridionalis 0.25375940
15                   Blennius ocellaris      Salvelinus fontinalis 0.25661376
16                Pollachius pollachius          Phoxinus phoxinus 0.25669755
17                    Diplodus vulgaris             Silurus glanis 0.26483321
18              Callionymus reticulatus    Alburnoides bipunctatus 0.27195226
19                  Arnoglossus laterna        Coregonus lavaretus 0.27368421
20                       Gobius cobitis                Gobio gobio 0.27543290
21                  Entelurus aequoreus          Alburnus alburnus 0.27640179
22                Centrolabrus exoletus        Coregonus lavaretus 0.27652464
23           Gaidropsarus mediterraneus      Micropterus salmoides 0.27691589
24                    Mullus surmuletus            Rutilus rutilus 0.28229352
25                     Pholis gunnellus          Phoxinus phoxinus 0.28241979
26                    Squalius cephalus Scardinius erythrophtalmus 0.28409825
27                    Mustelus asterias     Gasterosteus aculeatus 0.28717851
28                Ctenolabrus rupestris             Chelon auratus 0.28769841
29                      Umbrina cirrosa            Cyprinus carpio 0.28888889
30                  Trisopterus minutus    Alburnoides bipunctatus 0.28958265
31                      Ciliata mustela             Cobitis taenia 0.28968254
32                        Sparus aurata          Carassius auratus 0.29014123
33                   Diplodus annularis             Silurus glanis 0.29196729
34                   Nerophis maculatus             Rhodeus amarus 0.29196729
35               Arnoglossus imperialis              Aspius aspius 0.29207459
36               Hyperoplus lanceolatus        Coregonus lavaretus 0.29226475
37                Trigloporus lastoviza      Micropterus salmoides 0.29365079
38                   Salmo trutta fario               Trutta fario 0.29377104
39                  Agonus cataphractus             Rhodeus amarus 0.29448622
40                        Labrus mixtus              Barbus barbus 0.29807692
41                         Gadus morhua       Gymnocephalus cernua 0.29898990
42                 Merlangius merlangus         Salvelinus alpinus 0.29900285
43                    Gobius paganellus         Salvelinus alpinus 0.29922909
44              Spondyliosoma cantharus         Chondrostoma nasus 0.29974695
45                  Pagellus erythrinus         Salvelinus alpinus 0.30028354
46                Pomatoschistus pictus              Aspius aspius 0.30092130
47                          Solea solea         Ponticola kessleri 0.30134680
48                  Symphodus ocellatus             Rhodeus amarus 0.30268854
49                    Zoarces viviparus              Barbus barbus 0.30467572
50                     Callionymus lyra         Salvelinus alpinus 0.30648148
51              Dicentrarchus punctatus    Alburnoides bipunctatus 0.30706522
52                         Gobius niger                Gobio gobio 0.30772006
53                     Symphodus melops             Ameiurus melas 0.30952381
54                      Labrus bergylta              Barbus barbus 0.30997151
55                           Zeus faber               Zingel asper 0.31031746
56               Diplodus sargus sargus             Rhodeus amarus 0.31038961
57                 Tripterygion delaisi        Barbus meridionalis 0.31167341
58                   Argyrosomus regius              Aspius aspius 0.31339031
59               Microchirus variegatus      Micropterus salmoides 0.31462981
60                      Syngnathus acus       Salvelinus namaycush 0.31464646
61                 Scophthalmus maximus         Salvelinus alpinus 0.31481481
62                    Sprattus sprattus              Aspius aspius 0.31498240
63               Syngnathus rostellatus        Coregonus lavaretus 0.31607428
64                Pleuronectes platessa     Gasterosteus aculeatus 0.31610750
65             Mullus barbatus barbatus            Rutilus rutilus 0.31666667
66                   Pagellus bogaraveo        Coregonus lavaretus 0.31725146
67                Gaidropsarus vulgaris      Micropterus salmoides 0.31807082
68                      Pegusa lascaris        Coregonus lavaretus 0.31900585
69                   Atherina presbyter         Acipenser ruthenus 0.31944444
70                     Liparis montagui                  Lota lota 0.31944444
71             Crystallogobius linearis          Carassius gibelio 0.31977124
72                    Osmerus eperlanus         Acipenser ruthenus 0.32026144
73                   Trisopterus luscus          Carassius auratus 0.32026144
74                   Sardina pilchardus Scardinius erythrophtalmus 0.32149217
75                   Symphodus roissali Scardinius erythrophtalmus 0.32315832
76                   Balistes capriscus              Aspius aspius 0.32507123
77                      Atherina boyeri         Ponticola kessleri 0.32592593
78                   Cyclopterus lumpus            Rutilus rutilus 0.32592593
79             Parablennius gattorugine    Alburnoides bipunctatus 0.32714372
80                 Scophthalmus rhombus              Barbus barbus 0.32820513
81                  Buglossidium luteum            Rutilus rutilus 0.32836257
82                Scyliorhinus canicula       Gymnocephalus cernua 0.33015873
83                         Aphia minuta                Tinca tinca 0.33152958
84                    Syngnathus typhle Scardinius erythrophtalmus 0.33171730
85               Hyperoplus immaculatus    Alburnoides bipunctatus 0.33311375
86                Zeugopterus punctatus        Pungitius pungitius 0.33510860
87                 Dicologlossa cuneata        Coregonus lavaretus 0.33731444
88              Chelidonichthys lucerna       Gymnocephalus cernua 0.33757764
89                   Apletodon dentatus    Alburnoides bipunctatus 0.34008423
90            Pomatoschistus marmoratus          Carassius auratus 0.34099548
91                   Ammodytes tobianus             Cobitis taenia 0.34126984
92                  Trachurus trachurus        Thymallus thymallus 0.34130781
93                    Nerophis ophidion      Micropterus salmoides 0.34519141
94               Engraulis encrasicolus         Leuciscus cephalus 0.34595960
95                        Conger conger               Zingel asper 0.34615385
96             Phrynorhombus norvegicus          Phoxinus phoxinus 0.34659377
97                          Liza aurata          Carassius auratus 0.34709844
98                    Ammodytes marinus             Rhodeus amarus 0.34915966
99               Gobiusculus flavescens     Gasterosteus aculeatus 0.34956710
100              Pomatoschistus minutus     Gasterosteus aculeatus 0.34956710
101                  Solea senegalensis         Ponticola kessleri 0.35016835
102             Hippocampus hippocampus                Tinca tinca 0.35309618
103                    Lipophrys pholis            Cyprinus carpio 0.35324074
104                         Salmo salar       Salvelinus namaycush 0.35340909
105                 Spinachia spinachia        Salaria fluviatilis 0.35645933
106              Pomatoschistus lozanoi     Neogobius melanostomus 0.35656566
107                  Syngnathus abaster Scardinius erythrophtalmus 0.35887261
108                   Arnoglossus thori        Coregonus lavaretus 0.35973512
109             Nerophis lumbriciformis      Micropterus salmoides 0.36059351
110                  Platichthys flesus         Pachychilon pictus 0.36111111
111              Pomatoschistus microps      Micropterus salmoides 0.36327561
112                         Trigla lyra                Tinca tinca 0.36363636
113                         Alosa alosa          Alburnus alburnus 0.36490960
114                  Echiichthys vipera         Pachychilon pictus 0.36531987
115                 Umbrina canariensis           Gambusia affinis 0.36572967
116                        Raja clavata        Barbatula barbatula 0.36659357
117               Lepadogaster candolii          Carassius gibelio 0.36728631
118                  Eutrigla gurnardus          Carassius auratus 0.36873638
119                   Torpedo marmorata        Coregonus lavaretus 0.36933838
120                        Alosa fallax          Anguilla anguilla 0.37091503
121              Hippocampus guttulatus             Silurus glanis 0.37157287
122                      Rajella fyllae        Salaria fluviatilis 0.37750627
123                    Scomber scombrus              Barbus barbus 0.37820513
124 Diplecogaster bimaculata bimaculata        Barbatula barbatula 0.37941729
125                 Salmo trutta trutta                  Lota lota 0.37983849
126                Dicentrarchus labrax Scardinius erythrophtalmus 0.37991453
127                  Symphodus bailloni          Phoxinus phoxinus 0.38540305
128                       Raja undulata      Leucaspius delineatus 0.38563289
129             Liparis liparis liparis              Barbus barbus 0.38573021
130                     Limanda limanda              Chelon ramada 0.38792735
131                         Liza ramada              Abramis brama 0.39410589
132           Lepadogaster lepadogaster     Gasterosteus aculeatus 0.39883117
133                       Belone belone         Acipenser ruthenus 0.40170940
134                     Torpedo torpedo                Gobio gobio 0.40404040
135                       Raja montagui          Anguilla anguilla 0.42967572

We see that there are few issues

  • Typo for the Scardinius erythro. in the diet species list.
  • Outdated taxonomic name for Gymnocephalus cernua.
  • Subspecies resolution for Gasterosteus aculeatus.
  • Two species in one for Abramis brama + Blicca bjoerkna.
  • Outdated taxonomic name for Trutta fario.
species_to_remove <- c(
    "Abramis brama + Blicca bjoerkna"
)
species_missing <- species_missing[!(species_missing %in% species_to_remove)]

Actually, we can use fishbase for taxonomic issues. Instead of working with raw names, we can ensure that we have validated names, using fishbase functions.

name_diet <- data.frame(original = sp_list.diet)
name_diet$validated <- validate_names(sp_list.diet)

name_diet |> filter(original != validated)
                    original                   validated
1              Aspius aspius            Leuciscus aspius
2     Chondrostoma toxostoma  Parachondrostoma toxostoma
3         Leuciscus cephalus           Squalius cephalus
4         Pachychilon pictus          Pachychilon pictum
5        Salaria fluviatilis     Salariopsis fluviatilis
6 Scardinius erythrophtalmus Scardinius erythrophthalmus
7    Stizostedion lucioperca           Sander lucioperca
8               Trutta fario                Salmo trutta
name_missing <- data.frame(original = species_missing)
name_missing$validated <- validate_names(name_missing$original)

name_missing |> filter(original != validated)
                              original                 validated
1                 Barbatula barbatulus       Barbatula barbatula
2  Diplecogaster bimaculata bimaculata  Diplecogaster bimaculata
3               Diplodus sargus sargus           Diplodus sargus
4     Gasterosteus aculeatus aculeatus    Gasterosteus aculeatus
5               Gobiusculus flavescens Pomatoschistus flavescens
6                Gymnocephalus cernuus      Gymnocephalus cernua
7              Liparis liparis liparis           Liparis liparis
8                          Liza aurata            Chelon auratus
9                          Liza ramada             Chelon ramada
10            Mullus barbatus barbatus           Mullus barbatus
11            Phrynorhombus norvegicus    Zeugopterus norvegicus
12                  Salmo trutta fario              Salmo trutta
13                 Salmo trutta trutta              Salmo trutta
14               Trigloporus lastoviza Chelidonichthys lastoviza
missing_pomet <- setdiff(name_missing$validated, name_diet$validated)
length(missing_pomet)
[1] 124

1.4. Rare species

Next, we want to compute average abundance for these species to identify potential rare species that wouldn’t be interesting to include.

abundance_pomet <- pomet |>
    filter(NomScient %in% missing_pomet) |>
    group_by(NomScient) |>
    summarise(n = sum(Nind_esp)) |>
    arrange(n)
head(abundance_pomet)
# A tibble: 6 × 2
  NomScient                     n
  <chr>                     <int>
1 Belone belone                 1
2 Crystallogobius linearis      1
3 Diplodus vulgaris             1
4 Gobius cobitis                1
5 Lepadogaster lepadogaster     1
6 Mustelus asterias             1
abundance_rank <- abundance_pomet |>
    group_by(n) |>
    summarise(count = n())
head(abundance_rank)
# A tibble: 6 × 2
      n count
  <int> <int>
1     1    13
2     2     4
3     3     5
4     4     2
5     5     1
6     6     5
n_min <- 20 # Minimal abundance to be included.
rare_pomet <- abundance_pomet |>
    filter(n <= n_min) |>
    pull(NomScient)
length(rare_pomet)
[1] 43
missing_pomet <- name_missing |>
    filter(validated %in% missing_pomet) |>
    filter(!original %in% rare_pomet) |>
    pull(validated)
set_theme(theme_minimal())
ggplot(abundance_rank, aes(x = log(1 + n), y = count)) +
    geom_line() +
    geom_point() +
    labs(x = "Log(1 + total abundance)", y = "Number of species")

2. Nurse

length(sp_nurse)
[1] 625

We see that we have many species. This probably means that we have many non-fish species that we will have to remove. First, we remove genus to only keep species names.

species_only <- sp_nurse[is_species(sp_nurse)]
length(species_only)
[1] 441

Next, we want to remove non-fish species. We load the corresponding reftax table.

list.files(data_folder)
 [1] "Captures_Nurse_1980_2023.csv"                         
 [2] "captures_SOLPER_2005_2011.csv"                        
 [3] "fish_diet.csv"                                        
 [4] "poisson_pomet.csv"                                    
 [5] "poisson_tailles_pomet.csv"                            
 [6] "POMET_RefTax_Sp.csv"                                  
 [7] "Reftax_Captures_NURSE_DCE_SUIVINOUR_SOLPER_2024.RData"
 [8] "Strates_Nurse_1980_2023.csv"                          
 [9] "strates_SOLPER_2005_2011.csv"                         
[10] "Tailles_Nurse_1980_2023.csv"                          
[11] "tailles_SOLPER_2005_2011.csv"                         
[12] "Traits_Nurse_1980_2023.csv"                           
[13] "traits_SOLPER_2005_2011.csv"                          
reftax_file <- list.files(data_folder, pattern = "RData")[1]
load(here(data_folder, reftax_file))
reftax <- ESPECE_MAJ
sp_df <- data.frame(scientificname = species_only)
sp_df <- sp_df |>
    left_join(reftax, by = "scientificname") |>
    filter(phylum == "Chordata" | is.na(phylum)) |>
    filter(class == "Teleostei" | class == "Elasmobranchii" | is.na(class))
fish_only <- sp_df$scientificname

name_nurse <- data.frame(original = fish_only)
name_nurse$validated <- validate_names(name_nurse$original)
name_nurse |> filter(original != validated)
                  original              validated
1              Liza ramada          Chelon ramada
2 Phrynorhombus norvegicus Zeugopterus norvegicus
3              Liza aurata         Chelon auratus
missing_nurse <- setdiff(name_nurse$validated, name_diet$validated)
length(missing_nurse)
[1] 101
abundance_nurse <- nurse |>
    filter(Espece %in% missing_nurse) |>
    group_by(Espece) |>
    summarise(n = sum(Nombre, na.rm = TRUE)) |>
    arrange(n)
head(abundance_nurse)
# A tibble: 6 × 2
  Espece                       n
  <chr>                    <int>
1 Parablennius gattorugine     0
2 Dasyatis pastinaca           1
3 Diplodus sargus              1
4 Lithognathus mormyrus        1
5 Lophius budegassa            1
6 Microstomus kitt             1
rare_nurse <- abundance_nurse |>
    filter(n <= n_min) |>
    pull(Espece)
length(rare_nurse)
[1] 39
missing_nurse <- name_nurse |>
    filter(original %in% missing_nurse) |>
    filter(!validated %in% rare_nurse) |>
    pull(validated)
length(missing_nurse)
[1] 60
missing_all <- sort(unique(c(missing_nurse, missing_pomet)))
missing_all
 [1] "Agonus cataphractus"        "Alosa alosa"               
 [3] "Alosa fallax"               "Ammodytes tobianus"        
 [5] "Aphia minuta"               "Argyrosomus regius"        
 [7] "Arnoglossus laterna"        "Arnoglossus thori"         
 [9] "Atherina boyeri"            "Atherina presbyter"        
[11] "Buglossidium luteum"        "Callionymus lyra"          
[13] "Centrolabrus exoletus"      "Chelidonichthys cuculus"   
[15] "Chelidonichthys lastoviza"  "Chelidonichthys lucerna"   
[17] "Chelon labrosus"            "Ciliata mustela"           
[19] "Clupea harengus"            "Conger conger"             
[21] "Ctenolabrus rupestris"      "Dicentrarchus labrax"      
[23] "Dicentrarchus punctatus"    "Dicologlossa cuneata"      
[25] "Diplecogaster bimaculata"   "Diplodus annularis"        
[27] "Diplodus sargus"            "Echiichthys vipera"        
[29] "Engraulis encrasicolus"     "Engraulis maeoticus"       
[31] "Entelurus aequoreus"        "Eutrigla gurnardus"        
[33] "Gobius niger"               "Gobius paganellus"         
[35] "Hippocampus guttulatus"     "Hippocampus hippocampus"   
[37] "Hyperoplus immaculatus"     "Hyperoplus lanceolatus"    
[39] "Labrus bergylta"            "Labrus mixtus"             
[41] "Lepadogaster candolii"      "Lepidorhombus whiffiagonis"
[43] "Limanda limanda"            "Liparis liparis"           
[45] "Merlangius merlangus"       "Merluccius merluccius"     
[47] "Microchirus variegatus"     "Mullus barbatus"           
[49] "Mullus surmuletus"          "Nerophis lumbriciformis"   
[51] "Nerophis maculatus"         "Nerophis ophidion"         
[53] "Osmerus eperlanus"          "Parablennius gattorugine"  
[55] "Pegusa lascaris"            "Platichthys flesus"        
[57] "Pleuronectes platessa"      "Pollachius pollachius"     
[59] "Pomatoschistus flavescens"  "Pomatoschistus lozanoi"    
[61] "Pomatoschistus marmoratus"  "Pomatoschistus microps"    
[63] "Pomatoschistus minutus"     "Pomatoschistus pictus"     
[65] "Raja clavata"               "Raja undulata"             
[67] "Sardina pilchardus"         "Scophthalmus maximus"      
[69] "Scophthalmus rhombus"       "Scyliorhinus canicula"     
[71] "Solea senegalensis"         "Solea solea"               
[73] "Sparus aurata"              "Spinachia spinachia"       
[75] "Spondyliosoma cantharus"    "Sprattus sprattus"         
[77] "Symphodus bailloni"         "Symphodus melops"          
[79] "Syngnathus acus"            "Syngnathus rostellatus"    
[81] "Syngnathus typhle"          "Taurulus bubalis"          
[83] "Torpedo marmorata"          "Trachinus draco"           
[85] "Trachurus mediterraneus"    "Trachurus trachurus"       
[87] "Trisopterus luscus"         "Trisopterus minutus"       
[89] "Umbrina canariensis"        "Zeugopterus norvegicus"    
[91] "Zeus faber"                

3. Solper

length(sp_solper)
[1] 59

For Solper, we have code instead of species names.

head(sp_solper)
[1] "CALMLYR" "ENGRENC" "GOBINIG" "POMOMIN" "SOLESOL" "SPRASPR"
Warning

I cannot find the relation between species code and their scientific name.

4. Get diet data from fishbase

4.1. Missing species from sea campagnes

Now that we have a species list for which we want to get their diet we can scrap fishbase.

Because this step is crucial and is expected to be repeated we implement it directly in our package riversea.

So we can directly obtain diet for all species with a single function call.

diet_category <- get_diet_category(missing_all)
head(diet_category)
# A tibble: 6 × 3
  species             stage       prey_category
  <chr>               <chr>       <chr>        
1 Agonus cataphractus juv./adults zoobenthos   
2 Alosa alosa         juv./adults fish         
3 Alosa alosa         juv./adults plants       
4 Alosa alosa         juv./adults zooplankton  
5 Alosa alosa         juv./adults biofilm      
6 Alosa alosa         juv./adults others       

Next, to obtain something similar as the table for riverine fish, we can also extract a wide table.

diet_category_wide <- get_diet_category_wide(missing_all)
head(diet_category_wide)
# A tibble: 6 × 10
  species             stage zoobenthos  fish plants zooplankton biofilm detritus
  <chr>               <chr>      <dbl> <dbl>  <dbl>       <dbl>   <dbl>    <dbl>
1 Agonus cataphractus juv.…          1     0      0           0       0        0
2 Alosa alosa         juv.…          0     1      1           1       1        0
3 Alosa fallax        recr…          0     0      0           1       0        0
4 Alosa fallax        juv.…          0     1      0           1       0        0
5 Ammodytes tobianus  recr…          0     0      0           1       0        0
6 Ammodytes tobianus  juv.…          1     0      0           1       0        0
# ℹ 2 more variables: phytoplankton <dbl>, macrophyte <dbl>

4.2. Fishbase diet for riverine fish

diet_category <- get_diet_category(name_diet$validated)
head(diet_category)
# A tibble: 6 × 3
  species       stage         prey_category
  <chr>         <chr>         <chr>        
1 Abramis brama recruits/juv. zooplankton  
2 Abramis brama recruits/juv. zoobenthos   
3 Abramis brama recruits/juv. detritus     
4 Abramis brama juv./adults   zoobenthos   
5 Abramis brama juv./adults   detritus     
6 Abramis brama adults        zoobenthos   
diet_category_wide <- widen_diet_category(diet_category)
head(diet_category_wide)
# A tibble: 6 × 9
  species         stage zooplankton zoobenthos detritus  fish macrophyte biofilm
  <chr>           <chr>       <dbl>      <dbl>    <dbl> <dbl>      <dbl>   <dbl>
1 Abramis brama   recr…           1          1        1     0          0       0
2 Abramis brama   juv.…           0          1        1     0          0       0
3 Abramis brama   adul…           0          1        1     0          0       0
4 Acipenser ruth… recr…           1          1        0     0          0       0
5 Acipenser ruth… larv…           0          1        0     0          0       0
6 Acipenser ruth… juv.…           1          1        0     0          0       0
# ℹ 1 more variable: phytoplankton <dbl>
write.csv(diet_category_wide, here("data", "fishbase_diet_river.csv"))

Let’s focus on a single species Abramis brama

diet_category_wide |> filter(species == "Abramis brama")
# A tibble: 3 × 9
  species       stage   zooplankton zoobenthos detritus  fish macrophyte biofilm
  <chr>         <chr>         <dbl>      <dbl>    <dbl> <dbl>      <dbl>   <dbl>
1 Abramis brama recrui…           1          1        1     0          0       0
2 Abramis brama juv./a…           0          1        1     0          0       0
3 Abramis brama adults            0          1        1     0          0       0
# ℹ 1 more variable: phytoplankton <dbl>

and compare with the original table that we have downloaded.

d.diet |> filter(species_name == "Abramis_brama")
  species  species_name size_min size_max stage light det biof phytob macroph
1     BRE Abramis_brama      0.0      9.7     1     0   0    0      0       0
2     BRE Abramis_brama      9.8     17.0     2     0   0    0      0       0
3     BRE Abramis_brama     17.1    120.0     3     0   0    1      1       0
4     BRE Abramis_brama    120.1      Inf     4     0   0    1      1       0
  phytopl zoopl zoob fish                 ref_diet                  ref_ods
1       1     1    0    0                 Nunn2012               Garner1996
2       0     1    0    0                 Nunn2012               Garner1996
3       0     1    0    0               Garner1996 Persson1998/Specziar2009
4       0     0    1    0 Persson1998/Specziar2009                     <NA>
           hypoth_ods                           remark
1 maximum size hypoth ! Bream eats chironomids = zoob_
2 minimum size hypoth ! Bream eats chironomids = zoob_
3         litterature ! Bream eats chironomids = zoob_
4         litterature             eats benthic daphnia

4.3. All species

name_diet$validated
 [1] "Abramis brama"               "Acipenser ruthenus"         
 [3] "Alburnoides bipunctatus"     "Alburnus alburnus"          
 [5] "Ameiurus melas"              "Anguilla anguilla"          
 [7] "Leuciscus aspius"            "Barbatula barbatula"        
 [9] "Barbus barbus"               "Barbus meridionalis"        
[11] "Blicca bjoerkna"             "Carassius auratus"          
[13] "Carassius carassius"         "Carassius gibelio"          
[15] "Chelon auratus"              "Chelon ramada"              
[17] "Chondrostoma nasus"          "Parachondrostoma toxostoma" 
[19] "Cobitis taenia"              "Coregonus lavaretus"        
[21] "Cottus gobio"                "Cottus petiti"              
[23] "Cyprinus carpio"             "Esox lucius"                
[25] "Gambusia affinis"            "Gasterosteus aculeatus"     
[27] "Gobio gobio"                 "Gymnocephalus cernua"       
[29] "Hypophthalmichthys molitrix" "Lepomis gibbosus"           
[31] "Leucaspius delineatus"       "Leuciscus burdigalensis"    
[33] "Squalius cephalus"           "Leuciscus idus"             
[35] "Leuciscus leuciscus"         "Lota lota"                  
[37] "Micropterus salmoides"       "Misgurnus fossilis"         
[39] "Neogobius melanostomus"      "Oncorhynchus mykiss"        
[41] "Pachychilon pictum"          "Perca fluviatilis"          
[43] "Phoxinus phoxinus"           "Ponticola kessleri"         
[45] "Pseudorasbora parva"         "Pungitius pungitius"        
[47] "Rhodeus amarus"              "Rutilus rutilus"            
[49] "Salariopsis fluviatilis"     "Salvelinus alpinus"         
[51] "Salvelinus fontinalis"       "Salvelinus namaycush"       
[53] "Scardinius erythrophthalmus" "Scardinius hesperidicus"    
[55] "Silurus glanis"              "Sander lucioperca"          
[57] "Telestes souffia"            "Thymallus thymallus"        
[59] "Tinca tinca"                 "Salmo trutta"               
[61] "Zingel asper"               
validate_names("Abramis brama")
[1] "Abramis brama"
name_all <- data.frame(original = name_diet$original, validated = name_diet$validated, campagne = "river")

n_nurse <- unique(nurse$Espece)
name_nurse <- data.frame(original = n_nurse, validate_names(n_nurse), campagne = "nurse")

n_pomet <- unique(pomet$NomScient)
name_pomet <- data.frame(original = n_pomet, validate_names(n_pomet), campagne = "pomet")

unique(nurse$Espece)
  [1] "Anguilla anguilla"                        
  [2] "Crangon crangon"                          
  [3] "Platichthys flesus"                       
  [4] "Solea solea"                              
  [5] "Trisopterus luscus"                       
  [6] "Ciliata mustela"                          
  [7] "Liza ramada"                              
  [8] "Osmerus eperlanus"                        
  [9] "Merlangius merlangus"                     
 [10] "Dicentrarchus labrax"                     
 [11] "Sprattus sprattus"                        
 [12] "Clupea harengus"                          
 [13] "Pleuronectes platessa"                    
 [14] "Trachurus trachurus"                      
 [15] "Atherina presbyter"                       
 [16] "Buglossidium luteum"                      
 [17] "Engraulis encrasicolus"                   
 [18] "Echiichthys vipera"                       
 [19] "Alloteuthis"                              
 [20] "Callionymus lyra"                         
 [21] "Chelidonichthys lucerna"                  
 [22] "Pollachius pollachius"                    
 [23] "Raja clavata"                             
 [24] "Scophthalmus maximus"                     
 [25] "Palaemon serratus"                        
 [26] "Raja microocellata"                       
 [27] "Eutrigla gurnardus"                       
 [28] "Merluccius merluccius"                    
 [29] "Dicologlossa cuneata"                     
 [30] "Raja undulata"                            
 [31] "Mullus surmuletus"                        
 [32] "Pagellus bogaraveo"                       
 [33] "Spondyliosoma cantharus"                  
 [34] "Hyperoplus lanceolatus"                   
 [35] "Necora puber"                             
 [36] "Limanda limanda"                          
 [37] "Pegusa lascaris"                          
 [38] "Scophthalmus rhombus"                     
 [39] "Pomatoschistus minutus"                   
 [40] "Sepia officinalis"                        
 [41] "Trisopterus minutus"                      
 [42] "Arnoglossus thori"                        
 [43] "Loligo vulgaris"                          
 [44] "Lophius piscatorius"                      
 [45] "Conger conger"                            
 [46] "Phrynorhombus norvegicus"                 
 [47] "Taurulus bubalis"                         
 [48] "Argyrosomus regius"                       
 [49] "Labrus"                                   
 [50] "Umbrina canariensis"                      
 [51] "Solea senegalensis"                       
 [52] "Cancer pagurus"                           
 [53] "Ostrea edulis"                            
 [54] "Liza aurata"                              
 [55] "Alosa alosa"                              
 [56] "Alosa fallax"                             
 [57] "Chelidonichthys cuculus"                  
 [58] "Pecten maximus"                           
 [59] "Trigla lyra"                              
 [60] "Diplodus puntazzo"                        
 [61] "Lophius budegassa"                        
 [62] "Dicentrarchus punctatus"                  
 [63] "Pagellus erythrinus"                      
 [64] "Pagellus acarne"                          
 [65] "Diplodus sargus"                          
 [66] "Raja"                                     
 [67] "Arnoglossus laterna"                      
 [68] "Buccinum undatum"                         
 [69] "Gobius niger"                             
 [70] "Sparus aurata"                            
 [71] "Syngnathus acus"                          
 [72] "Symphodus melops"                         
 [73] "Sardina pilchardus"                       
 [74] "Palaemon longirostris"                    
 [75] "Syngnathus rostellatus"                   
 [76] "Aequipecten opercularis"                  
 [77] "Hippocampus hippocampus"                  
 [78] "Torpedo marmorata"                        
 [79] "Magallana gigas"                          
 [80] "Mimachlamys varia"                        
 [81] "Amphiura filiformis"                      
 [82] "Aphrodita aculeata"                       
 [83] "Asterias rubens"                          
 [84] "Liocarcinus"                              
 [85] "Macropodia"                               
 [86] "Ophiura"                                  
 [87] "Paguroidea"                               
 [88] "Astropecten irregularis irregularis"      
 [89] "Philine aperta"                           
 [90] "Sternaspis scutata"                       
 [91] "Owenia fusiformis"                        
 [92] "Turritella communis"                      
 [93] "Aporrhais pespelecani"                    
 [94] "Armina loveni"                            
 [95] "Sipunculus (Sipunculus) nudus"            
 [96] "Zeus faber"                               
 [97] "Marthasterias glacialis"                  
 [98] "Polybius henslowii"                       
 [99] "Spisula subtruncata"                      
[100] "Acanthocardia echinata"                   
[101] "Tritia reticulata"                        
[102] "Carcinus maenas"                          
[103] "Cerastoderma edule"                       
[104] "Mactra stultorum"                         
[105] "Pharus legumen"                           
[106] "Abra"                                     
[107] "Spisula"                                  
[108] "Psammechinus miliaris"                    
[109] "Atelecyclus undecimdentatus"              
[110] "Liocarcinus pusillus"                     
[111] "Liocarcinus navigator"                    
[112] "Gibbula cineraria"                        
[113] "Lucinidae"                                
[114] "Echinocardium cordatum"                   
[115] "Leptopentacta elongata"                   
[116] "Sepiola atlantica"                        
[117] "Acrocnida brachiata"                      
[118] "Lagis koreni"                             
[119] "Maldanidae"                               
[120] "Ebalia tuberosa"                          
[121] "Chamelea striatula"                       
[122] "Euspira nitida"                           
[123] "Mytilus edulis"                           
[124] "Portumnus latipes"                        
[125] "Abra tenuis"                              
[126] "Ammodytes tobianus"                       
[127] "Veneridae"                                
[128] "Calliostoma zizyphinum"                   
[129] "Ocenebra erinaceus"                       
[130] "Crepidula fornicata"                      
[131] "Nucula"                                   
[132] "Eurynome aspera"                          
[133] "Inachus"                                  
[134] "Pandora inaequivalvis"                    
[135] "Antalis"                                  
[136] "Ebalia"                                   
[137] "Corbula gibba"                            
[138] "Euspira catena"                           
[139] "Abra alba"                                
[140] "Idotea balthica"                          
[141] "Liocarcinus vernalis"                     
[142] "Dasyatis pastinaca"                       
[143] "Phaxas pellucidus"                        
[144] "Ciona intestinalis"                       
[145] "Porcellana platycheles"                   
[146] "Maja brachydactyla"                       
[147] "Microchirus variegatus"                   
[148] "Glycymeris glycymeris"                    
[149] "Raja brachyura"                           
[150] "Spisula solida"                           
[151] "Nerophis lumbriciformis"                  
[152] "Scomber scombrus"                         
[153] "Donax vittatus"                           
[154] "Liocarcinus holsatus"                     
[155] "Ensis siliqua"                            
[156] "Ascidia"                                  
[157] "Pholas dactylus"                          
[158] "Goneplax rhomboides"                      
[159] "Scyliorhinus canicula"                    
[160] "Limecola balthica"                        
[161] "Asthenognathus atlanticus"                
[162] "Antalis novemcostata"                     
[163] "Pagurus bernhardus"                       
[164] "Pagurus cuanensis"                        
[165] "Ophiura ophiura"                          
[166] "Diogenes pugilator"                       
[167] "Crystallogobius"                          
[168] "Corystes cassivelaunus"                   
[169] "Fabulina fabula"                          
[170] "Spiropagurus elegans"                     
[171] "Liocarcinus marmoreus"                    
[172] "Ophiura albida"                           
[173] "Gaidropsarus vulgaris"                    
[174] "Anapagurus hyndmanni"                     
[175] "Inachus dorsettensis"                     
[176] "Annelida"                                 
[177] "Lutraria angustior"                       
[178] "Rissoides desmaresti"                     
[179] "Lutraria lutraria"                        
[180] "Ophiothrix fragilis"                      
[181] "Inachus phalangium"                       
[182] "Pagurus prideaux"                         
[183] "Pisidia longicornis"                      
[184] "Liocarcinus depurator"                    
[185] "Pisa tetraodon"                           
[186] "Myrtea spinifera"                         
[187] "Nucella lapillus"                         
[188] "Pilumnus hirtellus"                       
[189] "Paguridae"                                
[190] "Haploops"                                 
[191] "Laevicardium crassum"                     
[192] "Macropodia rostrata"                      
[193] "Xantho pilipes"                           
[194] "Melinna palmata"                          
[195] "Aplysia"                                  
[196] "Diopatra neapolitana"                     
[197] "Leptosynapta inhaerens"                   
[198] "Styela clava"                             
[199] "Euspira fusca"                            
[200] "Acteon tornatilis"                        
[201] "Mysia undata"                             
[202] "Philocheras trispinosus"                  
[203] "Abra prismatica"                          
[204] "Alcyonium digitatum"                      
[205] "Macropodia deflexa"                       
[206] "Liparis liparis"                          
[207] "Donax"                                    
[208] "Syngnathus"                               
[209] "Trachinus draco"                          
[210] "Myliobatis aquila"                        
[211] "Oestergrenia digitata"                    
[212] "Platynereis dumerilii"                    
[213] "Trivia monacha"                           
[214] "Gibbula magus"                            
[215] "Stylarioides moniliferus"                 
[216] "Glycera unicornis"                        
[217] "Nephtys hombergii"                        
[218] "Antalis vulgaris"                         
[219] "Labioleanira yhleni"                      
[220] "Nemertea"                                 
[221] "Lanice conchilega"                        
[222] "Processa"                                 
[223] "Calyptraea chinensis"                     
[224] "Belone belone"                            
[225] "Venerupis corrugata"                      
[226] "Clausinella fasciata"                     
[227] "Munida rugosa"                            
[228] "Gobius"                                   
[229] "Crangon allmanni"                         
[230] "Pandalina brevirostris"                   
[231] "Ophiocomina nigra"                        
[232] "Pontophilus spinosus"                     
[233] "Zeugopterus punctatus"                    
[234] "Scyliorhinus stellaris"                   
[235] "Aslia lefevrei"                           
[236] "Platyhelminthes"                          
[237] "Callista chione"                          
[238] "Arcopagia crassa"                         
[239] "Henricia oculata"                         
[240] "Nephtys"                                  
[241] "Aphia minuta"                             
[242] "Doridoidea"                               
[243] "Actiniaria"                               
[244] "Arenicola marina"                         
[245] "Processa edulis crassipes"                
[246] "Spisula elliptica"                        
[247] "Calliactis parasitica"                    
[248] "Luidia ciliaris"                          
[249] "Luidia sarsii"                            
[250] "Alcyonidium"                              
[251] "Isopoda"                                  
[252] "Athanas nitescens"                        
[253] "Polititapes rhomboides"                   
[254] "Ceriantharia"                             
[255] "Ctenophora"                               
[256] "Barnea candida"                           
[257] "Hemigrapsus takanoi"                      
[258] "Amphipoda"                                
[259] "Holothuroidea"                            
[260] "Labrus bergylta"                          
[261] "Virgularia mirabilis"                     
[262] "Ascidiacea"                               
[263] "Venus verrucosa"                          
[264] "Pollachius virens"                        
[265] "Abra nitida"                              
[266] "Chaetopterus variopedatus"                
[267] "Echinus esculentus"                       
[268] "Atelecyclus rotundatus"                   
[269] "Alcyonium"                                
[270] "Maja squinado"                            
[271] "Molgula"                                  
[272] "Sepiolidae"                               
[273] "Symphodus bailloni"                       
[274] "Polybius"                                 
[275] "Gari fervensis"                           
[276] "Virgularia"                               
[277] "Scaphander lignarius"                     
[278] "Musculus"                                 
[279] "Anomia ephippium"                         
[280] "Gibbomodiola adriatica"                   
[281] "Symphodus roissali"                       
[282] "Alpheus"                                  
[283] "Timoclea ovata"                           
[284] "Anapagurus laevis"                        
[285] "Calliactis palliata"                      
[286] "Phascolion"                               
[287] "Rhizostoma pulmo"                         
[288] "Diopatra"                                 
[289] "Modiolus barbatus"                        
[290] "Hippocampus guttulatus"                   
[291] "Ocenebrinae"                              
[292] "Acanthocardia"                            
[293] "Sepiola"                                  
[294] "Hemigrapsus"                              
[295] "Solen marginatus"                         
[296] "Antedon bifida"                           
[297] "Porifera"                                 
[298] "Fissurellidae"                            
[299] "Sparidae"                                 
[300] "Aplysia punctata"                         
[301] "Sabella pavonina"                         
[302] "Ruditapes"                                
[303] "Calliactis"                               
[304] "Lepadogaster candolii"                    
[305] "Thyone"                                   
[306] "Ampelisca spinipes"                       
[307] "Ctenolabrus rupestris"                    
[308] "Eledone moschata"                         
[309] "Scalpellum scalpellum"                    
[310] "Homarus gammarus"                         
[311] "Macropodia linaresi"                      
[312] "Nassarius"                                
[313] "Lutraria"                                 
[314] "Loripes orbiculatus"                      
[315] "Pherusa"                                  
[316] "Glyceridae"                               
[317] "Mysidae"                                  
[318] "Flabelligeridae"                          
[319] "Nephtyidae"                               
[320] "Flustra foliacea"                         
[321] "Animalia"                                 
[322] "Idotea"                                   
[323] "Palaemon"                                 
[324] "Cephalopoda"                              
[325] "Pharus"                                   
[326] "Tritia"                                   
[327] "Cumacea"                                  
[328] "Nereididae"                               
[329] "Ampelisca"                                
[330] "Apherusa"                                 
[331] "Maldane glebifex"                         
[332] "Metridium dianthus"                       
[333] "Sabellidae"                               
[334] "Sigalionidae"                             
[335] "Suberites"                                
[336] "Eledone cirrhosa"                         
[337] "Microstomus kitt"                         
[338] "Polynoidae"                               
[339] "Spiochaetopterus costarum"                
[340] "Phyllodocidae"                            
[341] "Phallusia mammillata"                     
[342] "Thyasira flexuosa"                        
[343] "Sipuncula"                                
[344] "Eunicidae"                                
[345] "Solenogastres"                            
[346] "Cereus pedunculatus"                      
[347] "Phascolion (Phascolion) strombus strombus"
[348] "Echiura"                                  
[349] "Aphroditiformia"                          
[350] "Golfingia"                                
[351] "Astropecten irregularis"                  
[352] "Pectinaria"                               
[353] "Rhizostoma octopus"                       
[354] "Tritia incrassata"                        
[355] "Muricidae"                                
[356] "Perforatus perforatus"                    
[357] "Hydrozoa"                                 
[358] "Molgulidae"                               
[359] "Terebellidae"                             
[360] "Nucula nitidosa"                          
[361] "Grapsidae"                                
[362] "Mactridae"                                
[363] "Alcyonidium parasiticum"                  
[364] "Glycera"                                  
[365] "Urticina felina"                          
[366] "Hiatella arctica"                         
[367] "Flustra"                                  
[368] "Ascidiella aspersa"                       
[369] "Pagurus alatus"                           
[370] "Galathea squamifera"                      
[371] "Golfingia (Golfingia) elongata"           
[372] "Labrus merula"                            
[373] "Mimachlamys"                              
[374] "Epitonium clathrus"                       
[375] "Alcyonidiidae"                            
[376] "Loligo"                                   
[377] "Polychaeta"                               
[378] "Actiniaria incertae sedis"                
[379] "Urticina"                                 
[380] "Tunicata"                                 
[381] "Eunicella verrucosa"                      
[382] "Gammaridae"                               
[383] "Sertulariidae"                            
[384] "Tethya aurantium"                         
[385] "Cliona celata"                            
[386] "Acanthochitona fascicularis"              
[387] "Dendrodoa grossularia"                    
[388] "Syngnathus typhle"                        
[389] "Diogenidae"                               
[390] "Sepia elegans"                            
[391] "Pagurus"                                  
[392] "Alcyonidium diaphanum"                    
[393] "Sigalion"                                 
[394] "Munnidae"                                 
[395] "Pontophilus"                              
[396] "Golfingia (Golfingia) vulgaris vulgaris"  
[397] "Terebellides"                             
[398] "Doris verrucosa"                          
[399] "Cerianthus"                               
[400] "Acanthodoris pilosa"                      
[401] "Cerianthus lloydii"                       
[402] "Cirripedia"                               
[403] "Cylichna cylindracea"                     
[404] "Cerianthidae"                             
[405] "Amphipholis squamata"                     
[406] "Caridea"                                  
[407] "Munida"                                   
[408] "Arnoglossus imperialis"                   
[409] "Macropodia tenuirostris"                  
[410] "Parvicardium"                             
[411] "Serpulidae"                               
[412] "Bryozoa"                                  
[413] "Nucula nucleus"                           
[414] "Pachymatisma johnstonia"                  
[415] "Phaeophyceae"                             
[416] "Ascidia mentula"                          
[417] "Musculus subpictus"                       
[418] "Ocinebrellus inornatus"                   
[419] "Epizoanthidae"                            
[420] "Harmothoe clavigera"                      
[421] "Campanulariidae"                          
[422] "Ascidiella scabra"                        
[423] "Ensis"                                    
[424] "Nephtys cirrosa"                          
[425] "Ensis ensis"                              
[426] "Anomia"                                   
[427] "Fimbriosthenelais minor"                  
[428] "Molgula manhattensis"                     
[429] "Serpula vermicularis"                     
[430] "Styelidae"                                
[431] "Suberites pagurorum"                      
[432] "Tritia varicosa"                          
[433] "Acanthocardia aculeata"                   
[434] "Eteone picta"                             
[435] "Nephtys incisa"                           
[436] "Scyphozoa"                                
[437] "Mangelia costulata"                       
[438] "Nudibranchia"                             
[439] "Trophoniella enigmatica"                  
[440] "Lutraria oblonga"                         
[441] "Thyone fusus"                             
[442] "Alitta succinea"                          
[443] "Diopatra biscayensis"                     
[444] "Botrylloides"                             
[445] "Hediste diversicolor"                     
[446] "Leptosynapta"                             
[447] "Donax trunculus"                          
[448] "Sagartia"                                 
[449] "Cnidaria"                                 
[450] "Salpida"                                  
[451] "Chartella papyracea"                      
[452] "Haliclona (Haliclona)"                    
[453] "Scorpaena porcus"                         
[454] "Scyllarus arctus"                         
[455] "Diadumene lineata"                        
[456] "Botrylloides leachii"                     
[457] "Synaptidae"                               
[458] "Sabellaria spinulosa"                     
[459] "Anilocra"                                 
[460] "Cylista elegans"                          
[461] "Doris pseudoargus"                        
[462] "Lamellaria perspicua"                     
[463] "Alpheus glaber"                           
[464] "Dromia personata"                         
[465] "Ocnus planci"                             
[466] "Anguinella palmata"                       
[467] "Hydrallmania falcata"                     
[468] "Anguinella"                               
[469] "Cliona"                                   
[470] "Didemnidae"                               
[471] "Dysidea fragilis"                         
[472] "Trivia arctica"                           
[473] "Actinothoe sphyrodeta"                    
[474] "Rhodophyta"                               
[475] "Limaria hians"                            
[476] "Parablennius gattorugine"                 
[477] "Funiculina quadrangularis"                
[478] "Neoamphitrite affinis"                    
[479] "Sthenelais limicola"                      
[480] "Thyone inermis"                           
[481] "Gammarus insensibilis"                    
[482] "Ascidia conchilega"                       
[483] "Nemertesia ramosa"                        
[484] "Capnea sanguinea"                         
[485] "Hormathia coronata"                       
[486] "Suberites ficus"                          
[487] "Gaidropsarus mediterraneus"               
[488] "Idotea emarginata"                        
[489] "Palaemon macrodactylus"                   
[490] "Idotea linearis"                          
[491] "Dosinia exoleta"                          
[492] "Pirimela denticulata"                     
[493] "Cylista troglodytes"                      
[494] "Austrominius modestus"                    
[495] "Cylista"                                  
[496] "Terebratulidae"                           
[497] "Orbinia sertulata"                        
[498] "Lumbrineridae"                            
[499] "Liocarcinus zariquieyi"                   
[500] "Cerastoderma glaucum"                     
[501] "Spirobranchus lamarcki"                   
[502] "Pleurobranchus membranaceus"              
[503] "Scolanthus callimorphus"                  
[504] "Inachus leptochirus"                      
[505] "Sepia"                                    
[506] "Pawsonia saxicola"                        
[507] "Trachurus mediterraneus"                  
[508] "Boops boops"                              
[509] "Sertularia cupressina"                    
[510] "Vesicularia spinosa"                      
[511] "Hemigrapsus sanguineus"                   
[512] "Pleurobrachia pileus"                     
[513] "Scrupocellaria scruposa"                  
[514] "Tritia neritea"                           
[515] "Sthenelais boa"                           
[516] "Gaidropsarus"                             
[517] "Aequorea"                                 
[518] "Abyssoninoe hibernica"                    
[519] "Lepidonotus squamatus"                    
[520] "Armina maculata"                          
[521] "Antalis entalis"                          
[522] "Amphisbetia operculata"                   
[523] "Ascidiidae"                               
[524] "Echinodermata"                            
[525] "Haminoea"                                 
[526] "Lepidorhombus whiffiagonis"               
[527] "Hippolyte varians"                        
[528] "Brachyura"                                
[529] "Plantae"                                  
[530] "Pinnotheres pisum"                        
[531] "Atherina boyeri"                          
[532] "Neoamphitrite"                            
[533] "Heterobranchia"                           
[534] "Neoamphitrite edwardsi"                   
[535] "Diodora graeca"                           
[536] "Leucothoe"                                
[537] "Philocheras sculptus"                     
[538] "Epizoanthus"                              
[539] "Pyura"                                    
[540] "Actiniidae"                               
[541] "Eualus cranchii"                          
[542] "Sabellaria alveolata"                     
[543] "Eunice woodwardi"                         
[544] "Clibanarius erythropus"                   
[545] "Gammarus locusta"                         
[546] "Gammarus oceanicus"                       
[547] "Engraulis maeoticus"                      
[548] "Mullus barbatus"                          
[549] "Fimbriosthenelais"                        
[550] "Octopus vulgaris"                         
[551] "Idoteidae"                                
[552] "Synidotea laticauda"                      
[553] "Scrobicularia plana"                      
[554] "Mullus"                                   
[555] "Nereis lamellosa"                         
[556] "Pectinariidae"                            
[557] "Anthozoa"                                 
[558] "Haliclona"                                
[559] "Gammarus crinicornis"                     
[560] "Rhombosepion orbignyanum"                 
[561] "Mysida"                                   
[562] "Balanus crenatus"                         
[563] "Xanthidae"                                
[564] "Glycera tridactyla"                       
[565] "Parvicardium scabrum"                     
[566] "Marphysa sanguinea"                       
[567] "Nereis pelagica"                          
[568] "Pachygrapsus marmoratus"                  
[569] "Harmothoe"                                
[570] "Haminoea navicula"                        
[571] "Mytilus galloprovincialis"                
[572] "Spirobranchus triqueter"                  
[573] "Pyuridae"                                 
[574] "Gibbula umbilicalis"                      
[575] "Hippolyte leptocerus"                     
[576] "Amphiuridae"                              
[577] "Alentia gelatinosa"                       
[578] "Marphysa"                                 
[579] "Ascidia virginea"                         
[580] "Felimare cantabrica"                      
[581] "Hypereteone foliosa"                      
[582] "Harmothoe antilopes"                      
[583] "Musculus discors"                         
[584] "Neanthes"                                 
[585] "Leptochiton"                              
[586] "Lysidice ninetta"                         
[587] "Lysidice unicornis"                       
[588] "Lepidonotus"                              
[589] "Nicolea venustula"                        
[590] "Pomatoschistus"                           
[591] "Alcyonacea"                               
[592] "Blennius"                                 
[593] "Ruditapes philippinarum"                  
[594] "Tritia nitida"                            
[595] "Heteronemertea"                           
[596] "Membranipora membranacea"                 
[597] "Phyllodoce"                               
[598] "Euspira"                                  
[599] "Abludomelita obtusata"                    
[600] "Aoridae"                                  
[601] "Aeolidiidae"                              
[602] "Ampharete"                                
[603] "Maldaninae"                               
[604] "Mya arenaria"                             
[605] "Clionaidae"                               
[606] "Semibalanus balanoides"                   
[607] "Anemonia sulcata"                         
[608] "Spongiidae"                               
[609] "Spongia"                                  
[610] "Xantho"                                   
[611] "Nereis"                                   
[612] "Hyalinoecia tubicola"                     
[613] "Tritonia"                                 
[614] "Corophium"                                
[615] "Anemonia viridis"                         
[616] "Salaria pavo"                             
[617] "Xantho hydrophilus"                       
[618] "Idotea metallica"                         
[619] "Lithognathus mormyrus"                    
[620] "Trophonopsis muricata"                    
[621] "Paraleptopentacta elongata"               
[622] "Gobius paganellus"                        
[623] "Eurydice pulchra"                         
[624] "Glycera fallax"                           
[625] "Venus casina"                             

5. AquaticWeb

Let’s load the combined dataset.

tidy_data <- load_raw_sea_data(here("data", "coast")) |>
    clean_sea_data() |>
    combine_sea_data()

species_names <- tidy_data$catch |>
    pull(species) |>
    unique()
species <- data.frame(name = species_names)

species$name_validated <- validate_names(species$name)

head(species)
                             name          name_validated
1                         Abramis                    <NA>
2                   Abramis brama           Abramis brama
3 Abramis brama + Blicca bjoerkna                    <NA>
4                Acipenser sturio        Acipenser sturio
5             Agonus cataphractus     Agonus cataphractus
6         Alburnoides bipunctatus Alburnoides bipunctatus
aquatic_web <- read.csv(here("data", "aquatic-web-extraction-eric.csv"))
head(aquatic_web)
           predateur         proie mange selectivity nom origine stade_pred
1 Salvelinus alpinus       Daphnia    -1           3                       
2         Polyarthra Cryptophyceae    -1           3                       
3         Polyarthra Chrysophyceae    -1           3                       
4         Cyclopoida  Chironomidae    -1          -1                       
5         Cyclopoida     Cladocera    -1          -1                       
6         Cyclopoida      Rotifera    -1          -1                       
  stade_proie                                                         titre
1             Zooplankton and its relation to available food in Lake Myvatn
2             Zooplankton and its relation to available food in Lake Myvatn
3             Zooplankton and its relation to available food in Lake Myvatn
4       Larve Zooplankton and its relation to available food in Lake Myvatn
5             Zooplankton and its relation to available food in Lake Myvatn
6             Zooplankton and its relation to available food in Lake Myvatn
  num_vol numero_article DOI annee nom.1          journal
1      32                     1979 Oikos Adelsteinsson H.
2      32                     1979 Oikos Adelsteinsson H.
3      32                     1979 Oikos Adelsteinsson H.
4      32                     1979 Oikos Adelsteinsson H.
5      32                     1979 Oikos Adelsteinsson H.
6      32                     1979 Oikos Adelsteinsson H.
names_aquatic_web <- aquatic_web |>
    pull(predateur) |>
    unique() |>
    validate_names() |>
    na.omit()

species <- species |>
    mutate(in_aquatic_web = name_validated %in% names_aquatic_web)

species |> summarise(
    unique_entry = n(),
    valid_entry = sum(!is.na(name_validated)),
    aquatic_web_entry = sum(in_aquatic_web)
)
  unique_entry valid_entry aquatic_web_entry
1          790         184                62

TODO

  • Do the diet table for fish already documented and compare diet.