ohi logo
OHI Science | Citation policy

1 Summary

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:

2 Updates from previous assessment

Changes since 2015 SPP subgoal for global OHI:


3 Data Sources

IUCN:

AquaMaps:


4 Methods

4.1 Ingest AquaMaps species data.

AquaMaps data for the 2017 assessment was provided as .csv files requiring no special processing.

4.2 Ingest IUCN species list

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.

  • Starting point: Access Red List API at http://api.iucnredlist.org/index/all.csv. This provides a list of all Red List species, including unique IUCN code, taxonomic nomenclature, and Red List extinction risk.
  • For all identified species, we access species-specific info at http://api.iucnredlist.org/details/X/0 where X is the unique IUCN species ID; this page is saved to a cache directory on git-annex as a .htm file. At the same time, we scrape the “habitats” field from the saved page using XML tags.
  • All species with “marine” habitat are then scraped to find details on population trend and subpopulation ID numbers.
  • After some cleaning of scientific names (accents, spaces, html tags, etc) the file is saved to git-annex for later use.

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.

4.3 Extract IUCN polygons to half-degree cells

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.

4.4 Generate full species lookup table

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.

Combined species list from spp_all_cleaned.csv (first few rows)
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

4.5 Spatialize species information using AquaMaps and IUCN spatial data

4.5.1 Generate cell-by-cell summary of species

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.

  • At this point, the species-cell lists are filtered to species with valid extinction risk categories - i.e. not DD and not NA.
  • Since this averaging is done for each data set separately, we also track the species count per cell used to determine both the risk and the trend (separately, since many species with a risk value have no trend information, i.e. NA). These counts are used to weight the values when the two are combined.
  • Data-set specific idiosyncracies:
    • For AquaMaps, we apply a threshold to set the minimum probability of occurrence that determines species “presence.”
    • For IUCN, no threshold is needed; but the shapefiles include a “presence” attribute in which a value of 5 indicates a region in which a subpopulation has become extinct. We use this to manually reset local extinction risk and trend to EX and NA respectively.
    • Note that for IUCN, we determine the proportional area when extracting polygons; currently we just consider any presence to fill the cell (similar to assuming even a low AquaMaps probability to indicate presence within the entire 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
AquaMaps cell summary (first few rows)
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
IUCN cell summary (first few rows)
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

4.6 Summarize status and trend by region

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'))

4.7 Determine species by region

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.

Species by region - first few rows
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

4.8 Verify against v2016 scores