Spatial data from IUCN and Aquamaps is combined with extinction risk information from IUCN to generate regional scores for the Species subgoal. A region’s status is based upon an area-weighted average of species health across each global reporting region.
From Halpern et al (2012):
The target for the Species sub-goal is to have all species at a risk status of Least Concern. We scaled the lower end of the biodiversity goal to be 0 when 75% species are extinct, a level comparable to the five documented mass extinctions and would constitute a catastrophic loss of biodiversity. The Status of assessed species was calculated as the area- and threat status-weighted average of the number of threatened species within each 0.5 degree grid cell.
Mean risk status per cell:
\[\bar{R}_{cell} = \frac{\displaystyle\sum_{species}(Risk)}{n_{spp}}\]
Mean risk status per region:
\[\bar{R}_{SPP} = \frac{\displaystyle\sum_{cells}(\bar{R}_{cell} * A_{cell} * pA_{cell-rgn})}{A_{rgn}}\]
Species goal model
\[X_{SPP} = \frac{((1 - \bar{R}_{SPP}) - 0.25)}{(1 - 0.25)} * 100%\]
where:
Changes since 2015 SPP subgoal for global OHI:
taxize
package to identify and match synonyms for better confidence in matching species.IUCN:
AquaMaps:
AquaMaps data for the 2017 assessment was provided as .csv files requiring no special processing.
To identify appropriate IUCN species for the analysis, we identified all IUCN Red List species whose habitat included “marine” designation. The ingest_iucn.R
script scrapes this data directly from the IUCN Red List website.
Processed files, saved to git-annex/globalprep/spp_ico/v201x/int
: * spp_iucn_all.csv
- full list of IUCN species pulled from web, some cleaning. * spp_iucn_habitats.csv
- list of IUCN species (by iucn_sid) and corresponding habitat. * spp_iucn_marine.csv
- prepped list: cleaned marine list with subpops and trends.
The spp_ico/v2017/1_ingest_iucn_info.Rmd
script performs these operations. This can be a time consuming process, so typically this code chunk is run once and then set to eval = FALSE
once the outputs have been generated.
We extract IUCN polygon presence to the same half-degree cells as AquaMaps to simplify the analysis. * The spp_all
species list includes a field spp_group
that identifies which shapefile contains the spatial information for a given species. * for each species group, specific species are identified by comparing iucn_sid
from dataframe to id_no
within the shapefile. * Extract loiczid cell IDs for each species within each species group. Save a .csv file for that group, with fields: * sciname | iucn_sid | presence | subpop | LOICZID | prop_area * presence codes: 1 extant; 2 prob extant (discontinued); 3 Possibly Extant; 4 Possibly Extinct; 5 Extinct (post 1500); 6 Presence Uncertain * NOTE: this takes a long time - multiple hours for some of the shape files.
* by passing a filtered data frame to the function, you can focus the process only on new or updated shapefiles * reload = FALSE allows the function to skip extraction on groups with files already present. Set to TRUE if you need to extract an updated shapefile (or change the shapefile name, or delete the previous extraction…).
The spp_ico/v2017/2_ingest_iucn_shps.Rmd
script performs these operations.
Having processed AquaMaps and IUCN species raw data, we can now prepare a full combined list of all species to be included in the OHI SPP goal. The script spp_ico/v2017/3_assemble_spp_list.Rmd
creates the full lookup table.
am_sid | iucn_sid | map_iucn_sid | map_subpop | sciname | spp_group | spatial_source | cat_code | cat_score | pop_trend | trend_score |
---|---|---|---|---|---|---|---|---|---|---|
NA | 43 | NA | NA | Acanthaeschna victoria | NA | NA | VU | 0.4 | NA | NA |
Fis-29585 | 222 | NA | NA | Acipenser brevirostrum | NA | am | VU | 0.4 | decreasing | -0.5 |
Fis-29589 | 224 | NA | NA | Acipenser naccarii | NA | am | CR | 0.8 | decreasing | -0.5 |
Fis-29590 | 225 | NA | NA | Acipenser nudiventris | NA | am | CR | 0.8 | decreasing | -0.5 |
NA | 228 | NA | NA | Acipenser schrenckii | NA | NA | CR | 0.8 | NA | NA |
For each half-degree cell, tally up the number of species present and determine a mean species risk value and population trend value for the cell.
The following code chunk executes the functions that perform these tasks. Note the optional arguments fn_tag
and prob_filter
that can be changed to facilitate custom runs (including different spp_all
species info lists, different AquaMaps thresholds, and different filename tags to uniquely identify the custom run).
Finally we take the two cell-by-cell summaries and combine, using a species-count weighting to determine the mean category and trend per cell.
spp_all <- read_csv(file.path(dir_goal, 'int/spp_list_cleaned.csv'),
col_types = 'cddcccccdcd')
am_cells_spp <- get_am_cells_spp(prob_filter = 0, reload = FALSE)
am_cells_spp_sum_file <- process_am_summary_per_cell(spp_all, am_cells_spp, fn_tag = '', reload = FALSE)
### returns file location for the saved file, not the actual data frame.
### NOTE: keyed data.table works way faster than the old inner_join or merge.
### loiczid | mean_cat_score | mean_trend_score | n_cat_species | n_trend_species
### AM does not include subspecies or subpops: every am_sid corresponds to exactly one sciname.
rm('am_cells_spp') ### free up some memory
iucn_cells_spp <- get_iucn_cells_spp(reload = FALSE)
iucn_cells_spp_sum_file <- process_iucn_summary_per_cell(spp_all, iucn_cells_spp, fn_tag = '', reload = FALSE)
### loiczid | mean_cat_score | mean_trend_score | n_cat_species | n_trend_species
### IUCN includes subpops - one sciname corresponds to multiple iucn_sid values.
rm('iucn_cells_spp') ### free up some memory
am_cells_spp_sum <- read_csv(am_cells_spp_sum_file,
col_types = 'dddiic')
iucn_cells_spp_sum <- read_csv(iucn_cells_spp_sum_file,
col_types = 'dddiic')
sum_by_loiczid_file <- process_means_per_cell(am_cells_spp_sum, iucn_cells_spp_sum, fn_tag = '')
### This returns location of dataframe with variables:
### loiczid | weighted_mean_cat | weighted_mean_trend | n_cat_spp | n_tr_spp
loiczid | mean_cat_score | mean_pop_trend_score | n_cat_species | n_trend_species | source |
---|---|---|---|---|---|
8205 | 0 | NaN | 1 | 0 | aquamaps |
8206 | 0 | NaN | 1 | 0 | aquamaps |
8207 | 0 | NaN | 1 | 0 | aquamaps |
8209 | 0 | NaN | 1 | 0 | aquamaps |
8210 | 0 | NaN | 1 | 0 | aquamaps |
8211 | 0 | NaN | 1 | 0 | aquamaps |
loiczid | mean_cat_score | mean_pop_trend_score | n_cat_species | n_trend_species | source |
---|---|---|---|---|---|
1 | 0.2 | NaN | 2 | 0 | iucn |
2 | 0.2 | NaN | 2 | 0 | iucn |
3 | 0.2 | NaN | 2 | 0 | iucn |
4 | 0.2 | NaN | 2 | 0 | iucn |
5 | 0.2 | NaN | 2 | 0 | iucn |
6 | 0.2 | NaN | 2 | 0 | iucn |
Cells are aggregated to regions, to calculate an area-weighted regional mean category, trend, and status.
These are then saved to status and trend layer outputs for global (shown in table) as well as 3 nautical mile, Antarctic, and High Seas regions.
The script spp_ico/v2016/spp_layer_prep_global.R
performs these tasks.
source(file.path(dir_goal, 'spp_layer_prep_global.R'))
These analyses are repeated for additional scenarios: 3 nautical mile coastal buffer (for resilience calculations), High Seas, and Antarctic.
source(file.path(dir_goal, 'spp_layer_prep_3nm.R'))
source(file.path(dir_goal, 'spp_layer_prep_hs_aq.R'))
The calc_rgn_spp()
function takes in lookup tables of species by cell (for both IUCN and AM), a cell-to-region lookup, and a species info lookup. From this it generates a list of which species occur in which regions, including basic species information.
iucn_sid | am_sid | sciname | cat_code | pop_trend | spatial_source | rgn_id | rgn_name | n_cells | presence | n_spp_rgn |
---|---|---|---|---|---|---|---|---|---|---|
222 | Fis-29585 | Acipenser brevirostrum | VU | decreasing | am | 163 | United States | 179 | NA | 13543 |
222 | Fis-29585 | Acipenser brevirostrum | VU | decreasing | am | 218 | Canada | 31 | NA | 3914 |
224 | Fis-29589 | Acipenser naccarii | CR | decreasing | am | 61 | Tunisia | 3 | NA | 1669 |
224 | Fis-29589 | Acipenser naccarii | CR | decreasing | am | 80 | Greece | 6 | NA | 1674 |
224 | Fis-29589 | Acipenser naccarii | CR | decreasing | am | 82 | Albania | 8 | NA | 1393 |
224 | Fis-29589 | Acipenser naccarii | CR | decreasing | am | 184 | Italy | 89 | NA | 1742 |
224 | Fis-29589 | Acipenser naccarii | CR | decreasing | am | 186 | Montenegro | 4 | NA | 1359 |
224 | Fis-29589 | Acipenser naccarii | CR | decreasing | am | 187 | Croatia | 33 | NA | 1604 |
224 | Fis-29589 | Acipenser naccarii | CR | decreasing | am | 188 | Slovenia | 1 | NA | 1116 |
224 | Fis-29589 | Acipenser naccarii | CR | decreasing | am | 232 | Bosnia and Herzegovina | 1 | NA | 1324 |