From 4cb12db50e911194d2fda6ac702e8946e9d42009 Mon Sep 17 00:00:00 2001 From: Laura Brenskelle <160157051+laurabrenskelle@users.noreply.github.com> Date: Fri, 13 Sep 2024 11:38:38 -0400 Subject: [PATCH 01/15] Update environment-python_and_r.yml Adding dplyr and gh R packages --- .binder/environment-python_and_r.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.binder/environment-python_and_r.yml b/.binder/environment-python_and_r.yml index 6442dad6..8db45885 100644 --- a/.binder/environment-python_and_r.yml +++ b/.binder/environment-python_and_r.yml @@ -73,10 +73,12 @@ dependencies: # R packages. - rpy2 - r-base=4 + - r-dplyr - r-dt - r-finch - r-ggfortify - r-ggplot2 + - r-gh - r-gsw - r-httr - r-irkernel From 3e07a6153542bc50625b08517fefdb377ea685cc Mon Sep 17 00:00:00 2001 From: Laura Brenskelle <160157051+laurabrenskelle@users.noreply.github.com> Date: Fri, 13 Sep 2024 12:40:55 -0400 Subject: [PATCH 02/15] Add files via upload --- .../OBIS_EOVs.ipynb | 257 ++++++++++++++++++ 1 file changed, 257 insertions(+) create mode 100644 jupyterbook/content/code_gallery/data_analysis_and_visualization_notebooks/OBIS_EOVs.ipynb diff --git a/jupyterbook/content/code_gallery/data_analysis_and_visualization_notebooks/OBIS_EOVs.ipynb b/jupyterbook/content/code_gallery/data_analysis_and_visualization_notebooks/OBIS_EOVs.ipynb new file mode 100644 index 00000000..57918a19 --- /dev/null +++ b/jupyterbook/content/code_gallery/data_analysis_and_visualization_notebooks/OBIS_EOVs.ipynb @@ -0,0 +1,257 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "ad98f7a1-d7a1-4a51-a9a2-0da9da7fe042", + "metadata": {}, + "source": [ + "# Using aphiaIDs to download OBIS occurrences for Bio/Eco EOVs\n", + "\n", + "Created: 2024-09-13" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "390bf2be-3828-4705-b64b-ed68005ff98b", + "metadata": { + "scrolled": true + }, + "outputs": [], + "source": [ + "library(gh)\n", + "library(readr)\n", + "library(robis)\n", + "library(dplyr)" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "43964864-7fe8-4139-a9d0-2a844161ccd1", + "metadata": {}, + "outputs": [], + "source": [ + "# first we will pull the files where the EOV taxonomy are stored from GitHub\n", + "repo_files <- gh(\"GET /repos/:owner/:repo/contents/:path\",\n", + " owner = \"ioos\",\n", + " repo = \"marine_life_data_network\",\n", + " path = \"eov_taxonomy\")\n", + "\n", + "for (file_info in repo_files) {\n", + " if (file_info$type == \"file\") {\n", + " download.file(file_info$download_url, destfile = file_info$name)\n", + " }\n", + "}" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "0bb6ab17-d239-410c-90d0-dcb50359b095", + "metadata": {}, + "outputs": [], + "source": [ + "# let's try mangroves as our first example\n", + "# we will open the mangroves taxonomy CSV that we downloaded and grab the taxonIDs\n", + "mangroves <- read.csv(\"mangroves.csv\")\n", + "mangroves$ID <- gsub(\"urn:lsid:marinespecies.org:taxname.\", \"\", mangroves$acceptedTaxonId)\n", + "mangroves$ID <- as.numeric(mangroves$ID)\n", + "mangroveIdentifiers <- paste(mangroves$ID, collapse = \", \")" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "d9aa2697-4ca0-4631-8d77-b0407e7a73b5", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Retrieved 5000 records of approximately 132901 (3%)\n", + "Retrieved 10000 records of approximately 132901 (7%)\n", + "Retrieved 15000 records of approximately 132901 (11%)\n", + "Retrieved 20000 records of approximately 132901 (15%)\n", + "Retrieved 25000 records of approximately 132901 (18%)\n", + "Retrieved 30000 records of approximately 132901 (22%)\n", + "Retrieved 35000 records of approximately 132901 (26%)\n", + "Retrieved 40000 records of approximately 132901 (30%)\n", + "Retrieved 45000 records of approximately 132901 (33%)\n", + "Retrieved 50000 records of approximately 132901 (37%)\n", + "Retrieved 55000 records of approximately 132901 (41%)\n", + "Retrieved 60000 records of approximately 132901 (45%)\n", + "Retrieved 65000 records of approximately 132901 (48%)\n", + "Retrieved 70000 records of approximately 132901 (52%)\n", + "Retrieved 75000 records of approximately 132901 (56%)\n", + "Retrieved 80000 records of approximately 132901 (60%)\n", + "Retrieved 85000 records of approximately 132901 (63%)\n", + "Retrieved 90000 records of approximately 132901 (67%)\n", + "Retrieved 95000 records of approximately 132901 (71%)\n", + "Retrieved 1e+05 records of approximately 132901 (75%)\n", + "Retrieved 105000 records of approximately 132901 (79%)\n", + "Retrieved 110000 records of approximately 132901 (82%)\n", + "Retrieved 115000 records of approximately 132901 (86%)\n", + "Retrieved 120000 records of approximately 132901 (90%)\n", + "Retrieved 125000 records of approximately 132901 (94%)\n", + "Retrieved 130000 records of approximately 132901 (97%)\n", + "Retrieved 132901 records of approximately 132901 (100%)\n" + ] + }, + { + "data": { + "text/html": [ + "132901" + ], + "text/latex": [ + "132901" + ], + "text/markdown": [ + "132901" + ], + "text/plain": [ + "[1] 132901" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# using the taxonIDs from the last step, let's search OBIS for occurrence data for this EOV\n", + "# this will take a bit to download because there were over 130k records when this script was written in Sept 2024\n", + "mangrove_occ <- robis::occurrence(taxonid = mangroveIdentifiers)\n", + "# let's check how many occurrences we got from OBIS\n", + "nrow(mangrove_occ)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "1ccc9837-4585-4020-852b-cdc6b33ae62d", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[1] \"235048, 235033, 234450, 234495, 235086, 235089, 235091, 235106, 235056, 235060, 235045, 235116, 235063, 235072, 235075, 235077, 235068, 234488, 235103\"\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Retrieved 5000 records of approximately 132901 (3%)\n", + "Retrieved 10000 records of approximately 132901 (7%)\n", + "Retrieved 15000 records of approximately 132901 (11%)\n", + "Retrieved 20000 records of approximately 132901 (15%)\n", + "Retrieved 25000 records of approximately 132901 (18%)\n", + "Retrieved 30000 records of approximately 132901 (22%)\n", + "Retrieved 35000 records of approximately 132901 (26%)\n", + "Retrieved 40000 records of approximately 132901 (30%)\n", + "Retrieved 45000 records of approximately 132901 (33%)\n", + "Retrieved 50000 records of approximately 132901 (37%)\n", + "Retrieved 55000 records of approximately 132901 (41%)\n", + "Retrieved 60000 records of approximately 132901 (45%)\n", + "Retrieved 65000 records of approximately 132901 (48%)\n", + "Retrieved 70000 records of approximately 132901 (52%)\n", + "Retrieved 75000 records of approximately 132901 (56%)\n", + "Retrieved 80000 records of approximately 132901 (60%)\n", + "Retrieved 85000 records of approximately 132901 (63%)\n", + "Retrieved 90000 records of approximately 132901 (67%)\n", + "Retrieved 95000 records of approximately 132901 (71%)\n", + "Retrieved 1e+05 records of approximately 132901 (75%)\n", + "Retrieved 105000 records of approximately 132901 (79%)\n", + "Retrieved 110000 records of approximately 132901 (82%)\n", + "Retrieved 115000 records of approximately 132901 (86%)\n", + "Retrieved 120000 records of approximately 132901 (90%)\n", + "Retrieved 125000 records of approximately 132901 (94%)\n", + "Retrieved 130000 records of approximately 132901 (97%)\n", + "Retrieved 132901 records of approximately 132901 (100%)\n" + ] + }, + { + "data": { + "text/html": [ + "132901" + ], + "text/latex": [ + "132901" + ], + "text/markdown": [ + "132901" + ], + "text/plain": [ + "[1] 132901" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "\n", + "\n", + "\t
\n", + "\t\t\n", + "\t\t\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\t\n", + "\t\n", + "\t\t\n", + "\n", + "\t\n", + "\n" + ], + "text/plain": [ + "HTML widgets cannot be represented in plain text (need html)" + ] + }, + "metadata": { + "text/html": { + "isolated": true + } + }, + "output_type": "display_data" + } + ], + "source": [ + "# use the built in leaflet capability from robis to map the occurrences\n", + "map_leaflet(mangrove_occ,\n", + " provider_tiles = \"Esri.WorldGrayCanvas\",\n", + " popup = function(x) { x[\"scientificName\"] },\n", + " )" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "R", + "language": "R", + "name": "ir" + }, + "language_info": { + "codemirror_mode": "r", + "file_extension": ".r", + "mimetype": "text/x-r-source", + "name": "R", + "pygments_lexer": "r", + "version": "4.1.3" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} From 109124ec665f18cc9e5003f8cea57ecfeb37bd9e Mon Sep 17 00:00:00 2001 From: Laura Brenskelle <160157051+laurabrenskelle@users.noreply.github.com> Date: Fri, 13 Sep 2024 15:47:07 -0400 Subject: [PATCH 03/15] Adding updated OBIS_EOV file --- .../2024-09-13-OBIS_EOVs.ipynb | 233 ++++++++++++++++++ 1 file changed, 233 insertions(+) create mode 100644 jupyterbook/content/code_gallery/data_analysis_and_visualization_notebooks/2024-09-13-OBIS_EOVs.ipynb diff --git a/jupyterbook/content/code_gallery/data_analysis_and_visualization_notebooks/2024-09-13-OBIS_EOVs.ipynb b/jupyterbook/content/code_gallery/data_analysis_and_visualization_notebooks/2024-09-13-OBIS_EOVs.ipynb new file mode 100644 index 00000000..975f28d4 --- /dev/null +++ b/jupyterbook/content/code_gallery/data_analysis_and_visualization_notebooks/2024-09-13-OBIS_EOVs.ipynb @@ -0,0 +1,233 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "ad98f7a1-d7a1-4a51-a9a2-0da9da7fe042", + "metadata": {}, + "source": [ + "# Using aphiaIDs to download OBIS occurrences for Bio/Eco EOVs\n", + "\n", + "Created: 2024-09-13" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "390bf2be-3828-4705-b64b-ed68005ff98b", + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\n", + "Attaching package: 'dplyr'\n", + "\n", + "\n", + "The following objects are masked from 'package:stats':\n", + "\n", + " filter, lag\n", + "\n", + "\n", + "The following objects are masked from 'package:base':\n", + "\n", + " intersect, setdiff, setequal, union\n", + "\n", + "\n" + ] + } + ], + "source": [ + "library(gh)\n", + "library(readr)\n", + "library(robis)\n", + "library(dplyr)\n", + "library(htmlwidgets)" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "43964864-7fe8-4139-a9d0-2a844161ccd1", + "metadata": {}, + "outputs": [], + "source": [ + "# first we will pull the files where the EOV taxonomy are stored from GitHub\n", + "repo_files <- gh(\"GET /repos/:owner/:repo/contents/:path\",\n", + " owner = \"ioos\",\n", + " repo = \"marine_life_data_network\",\n", + " path = \"eov_taxonomy\")\n", + "\n", + "for (file_info in repo_files) {\n", + " if (file_info$type == \"file\") {\n", + " download.file(file_info$download_url, destfile = file_info$name)\n", + " }\n", + "}" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "0bb6ab17-d239-410c-90d0-dcb50359b095", + "metadata": {}, + "outputs": [], + "source": [ + "# let's try mangroves as our first example\n", + "# we will open the mangroves taxonomy CSV that we downloaded and grab the taxonIDs\n", + "mangroves <- read.csv(\"mangroves.csv\")\n", + "mangroves$ID <- gsub(\"urn:lsid:marinespecies.org:taxname.\", \"\", mangroves$acceptedTaxonId)\n", + "mangroves$ID <- as.numeric(mangroves$ID)\n", + "mangroveIdentifiers <- paste(mangroves$ID, collapse = \", \")" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "d9aa2697-4ca0-4631-8d77-b0407e7a73b5", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Retrieved 5000 records of approximately 132901 (3%)\n", + "Retrieved 10000 records of approximately 132901 (7%)\n", + "Retrieved 15000 records of approximately 132901 (11%)\n", + "Retrieved 20000 records of approximately 132901 (15%)\n", + "Retrieved 25000 records of approximately 132901 (18%)\n", + "Retrieved 30000 records of approximately 132901 (22%)\n", + "Retrieved 35000 records of approximately 132901 (26%)\n", + "Retrieved 40000 records of approximately 132901 (30%)\n", + "Retrieved 45000 records of approximately 132901 (33%)\n", + "Retrieved 50000 records of approximately 132901 (37%)\n", + "Retrieved 55000 records of approximately 132901 (41%)\n", + "Retrieved 60000 records of approximately 132901 (45%)\n", + "Retrieved 65000 records of approximately 132901 (48%)\n", + "Retrieved 70000 records of approximately 132901 (52%)\n", + "Retrieved 75000 records of approximately 132901 (56%)\n", + "Retrieved 80000 records of approximately 132901 (60%)\n", + "Retrieved 85000 records of approximately 132901 (63%)\n", + "Retrieved 90000 records of approximately 132901 (67%)\n", + "Retrieved 95000 records of approximately 132901 (71%)\n", + "Retrieved 1e+05 records of approximately 132901 (75%)\n", + "Retrieved 105000 records of approximately 132901 (79%)\n", + "Retrieved 110000 records of approximately 132901 (82%)\n", + "Retrieved 115000 records of approximately 132901 (86%)\n", + "Retrieved 120000 records of approximately 132901 (90%)\n", + "Retrieved 125000 records of approximately 132901 (94%)\n", + "Retrieved 130000 records of approximately 132901 (97%)\n", + "Retrieved 132901 records of approximately 132901 (100%)\n" + ] + }, + { + "data": { + "text/html": [ + "132901" + ], + "text/latex": [ + "132901" + ], + "text/markdown": [ + "132901" + ], + "text/plain": [ + "[1] 132901" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# using the taxonIDs from the last step, let's search OBIS for occurrence data for this EOV\n", + "# this will take a bit to download because there were over 130k records when this script was written in Sept 2024\n", + "mangrove_occ <- robis::occurrence(taxonid = mangroveIdentifiers)\n", + "# let's check how many occurrences we got from OBIS\n", + "nrow(mangrove_occ)" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "1ccc9837-4585-4020-852b-cdc6b33ae62d", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + "\n", + "\t\n", + "\t\t\n", + "\t\t\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\t\n", + "\t\n", + "\t\t\n", + "\n", + "\t\n", + "\n" + ], + "text/plain": [ + "HTML widgets cannot be represented in plain text (need html)" + ] + }, + "metadata": { + "text/html": { + "isolated": true + } + }, + "output_type": "display_data" + } + ], + "source": [ + "# use the built in leaflet capability from robis to map the occurrences\n", + "m <- map_leaflet(mangrove_occ,\n", + " provider_tiles = \"Esri.WorldGrayCanvas\",\n", + " popup = function(x) { x[\"scientificName\"] },\n", + " )\n", + "m" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "13a8bc6c-5963-4e4e-acab-f0f6de776045", + "metadata": {}, + "outputs": [], + "source": [ + "# if you want to save the leaflet map\n", + "saveWidget(m, \"mangroveMap.html\", selfcontained = TRUE)" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "R", + "language": "R", + "name": "ir" + }, + "language_info": { + "codemirror_mode": "r", + "file_extension": ".r", + "mimetype": "text/x-r-source", + "name": "R", + "pygments_lexer": "r", + "version": "4.1.3" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} From a82fe2fc00f2d802ec442be6131ffff261103227 Mon Sep 17 00:00:00 2001 From: Laura Brenskelle <160157051+laurabrenskelle@users.noreply.github.com> Date: Wed, 18 Sep 2024 14:57:13 -0400 Subject: [PATCH 04/15] Updating OBIS EOV file --- .../2024-09-13-OBIS_EOVs.ipynb | 218 +++++++----------- 1 file changed, 78 insertions(+), 140 deletions(-) diff --git a/jupyterbook/content/code_gallery/data_analysis_and_visualization_notebooks/2024-09-13-OBIS_EOVs.ipynb b/jupyterbook/content/code_gallery/data_analysis_and_visualization_notebooks/2024-09-13-OBIS_EOVs.ipynb index 975f28d4..d42ae8e5 100644 --- a/jupyterbook/content/code_gallery/data_analysis_and_visualization_notebooks/2024-09-13-OBIS_EOVs.ipynb +++ b/jupyterbook/content/code_gallery/data_analysis_and_visualization_notebooks/2024-09-13-OBIS_EOVs.ipynb @@ -7,38 +7,22 @@ "source": [ "# Using aphiaIDs to download OBIS occurrences for Bio/Eco EOVs\n", "\n", - "Created: 2024-09-13" + "Created: 2024-09-13\n", + "\n", + "The [IOOS Marine Life Data Network](https://ioos.github.io/marine_life_data_network/) has developed a list of aphiaIDs for taxa mentioned in the [GOOS Biology and Ecosystems Variables](https://goosocean.org/what-we-do/framework/essential-ocean-variables/). These lists are meant to assist in querying OBIS to evaluate the abundance and distribution of these taxa. Here is an R notebook of how this might work using mangroves as an example." ] }, { "cell_type": "code", - "execution_count": 2, + "execution_count": null, "id": "390bf2be-3828-4705-b64b-ed68005ff98b", "metadata": { - "scrolled": true - }, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\n", - "Attaching package: 'dplyr'\n", - "\n", - "\n", - "The following objects are masked from 'package:stats':\n", - "\n", - " filter, lag\n", - "\n", - "\n", - "The following objects are masked from 'package:base':\n", - "\n", - " intersect, setdiff, setequal, union\n", - "\n", - "\n" - ] + "scrolled": true, + "vscode": { + "languageId": "r" } - ], + }, + "outputs": [], "source": [ "library(gh)\n", "library(readr)\n", @@ -47,153 +31,95 @@ "library(htmlwidgets)" ] }, + { + "cell_type": "markdown", + "id": "3089302a", + "metadata": {}, + "source": [ + "First, we will pull the file with the mangrove aphiaIDs from the Marine Life Data Network GitHub repo. **Note**: the acceptedTaxonIds in these files are based on what was up-to-date in the [WoRMS](https://marinespecies.org/) database as of the date this script was written." + ] + }, { "cell_type": "code", "execution_count": 5, "id": "43964864-7fe8-4139-a9d0-2a844161ccd1", - "metadata": {}, + "metadata": { + "vscode": { + "languageId": "r" + } + }, "outputs": [], "source": [ - "# first we will pull the files where the EOV taxonomy are stored from GitHub\n", - "repo_files <- gh(\"GET /repos/:owner/:repo/contents/:path\",\n", - " owner = \"ioos\",\n", - " repo = \"marine_life_data_network\",\n", - " path = \"eov_taxonomy\")\n", - "\n", - "for (file_info in repo_files) {\n", - " if (file_info$type == \"file\") {\n", - " download.file(file_info$download_url, destfile = file_info$name)\n", - " }\n", - "}" + "mangroves <- read.csv(\"https://raw.githubusercontent.com/ioos/marine_life_data_network/main/eov_taxonomy/mangroves.csv\")" + ] + }, + { + "cell_type": "markdown", + "id": "45fa26db", + "metadata": {}, + "source": [ + "Now we will do a bit of cleanup to get a list of aphiaIDs for mangroves so we can run our `robis` query using these as taxon identifiers." ] }, { "cell_type": "code", "execution_count": 3, "id": "0bb6ab17-d239-410c-90d0-dcb50359b095", - "metadata": {}, + "metadata": { + "vscode": { + "languageId": "r" + } + }, "outputs": [], "source": [ - "# let's try mangroves as our first example\n", - "# we will open the mangroves taxonomy CSV that we downloaded and grab the taxonIDs\n", - "mangroves <- read.csv(\"mangroves.csv\")\n", "mangroves$ID <- gsub(\"urn:lsid:marinespecies.org:taxname.\", \"\", mangroves$acceptedTaxonId)\n", "mangroves$ID <- as.numeric(mangroves$ID)\n", "mangroveIdentifiers <- paste(mangroves$ID, collapse = \", \")" ] }, + { + "cell_type": "markdown", + "id": "8a6cefa9", + "metadata": {}, + "source": [ + "Using the taxonIDs from the last step, let's query OBIS for occurrence data for mangroves. This step may take a bit of time to run. When this script was written, there were over 130,000 records for mangroves in OBIS." + ] + }, { "cell_type": "code", - "execution_count": 5, + "execution_count": null, "id": "d9aa2697-4ca0-4631-8d77-b0407e7a73b5", - "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "Retrieved 5000 records of approximately 132901 (3%)\n", - "Retrieved 10000 records of approximately 132901 (7%)\n", - "Retrieved 15000 records of approximately 132901 (11%)\n", - "Retrieved 20000 records of approximately 132901 (15%)\n", - "Retrieved 25000 records of approximately 132901 (18%)\n", - "Retrieved 30000 records of approximately 132901 (22%)\n", - "Retrieved 35000 records of approximately 132901 (26%)\n", - "Retrieved 40000 records of approximately 132901 (30%)\n", - "Retrieved 45000 records of approximately 132901 (33%)\n", - "Retrieved 50000 records of approximately 132901 (37%)\n", - "Retrieved 55000 records of approximately 132901 (41%)\n", - "Retrieved 60000 records of approximately 132901 (45%)\n", - "Retrieved 65000 records of approximately 132901 (48%)\n", - "Retrieved 70000 records of approximately 132901 (52%)\n", - "Retrieved 75000 records of approximately 132901 (56%)\n", - "Retrieved 80000 records of approximately 132901 (60%)\n", - "Retrieved 85000 records of approximately 132901 (63%)\n", - "Retrieved 90000 records of approximately 132901 (67%)\n", - "Retrieved 95000 records of approximately 132901 (71%)\n", - "Retrieved 1e+05 records of approximately 132901 (75%)\n", - "Retrieved 105000 records of approximately 132901 (79%)\n", - "Retrieved 110000 records of approximately 132901 (82%)\n", - "Retrieved 115000 records of approximately 132901 (86%)\n", - "Retrieved 120000 records of approximately 132901 (90%)\n", - "Retrieved 125000 records of approximately 132901 (94%)\n", - "Retrieved 130000 records of approximately 132901 (97%)\n", - "Retrieved 132901 records of approximately 132901 (100%)\n" - ] - }, - { - "data": { - "text/html": [ - "132901" - ], - "text/latex": [ - "132901" - ], - "text/markdown": [ - "132901" - ], - "text/plain": [ - "[1] 132901" - ] - }, - "metadata": {}, - "output_type": "display_data" + "metadata": { + "vscode": { + "languageId": "r" } - ], + }, + "outputs": [], "source": [ - "# using the taxonIDs from the last step, let's search OBIS for occurrence data for this EOV\n", - "# this will take a bit to download because there were over 130k records when this script was written in Sept 2024\n", "mangrove_occ <- robis::occurrence(taxonid = mangroveIdentifiers)\n", "# let's check how many occurrences we got from OBIS\n", "nrow(mangrove_occ)" ] }, + { + "cell_type": "markdown", + "id": "c837a3ac", + "metadata": {}, + "source": [ + "Now that we have all of our mangrove records from OBIS, we will map the global distribution of records using the `map_leaflet` function found in the `robis` package. With the leaflet functionality, you can zoom into records, click them, and it list the scientific name for that occurrence record." + ] + }, { "cell_type": "code", - "execution_count": 6, + "execution_count": null, "id": "1ccc9837-4585-4020-852b-cdc6b33ae62d", - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "\n", - "\n", - "\t\n", - "\t\t\n", - "\t\t\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\t\n", - "\t\n", - "\t\t\n", - "\n", - "\t\n", - "\n" - ], - "text/plain": [ - "HTML widgets cannot be represented in plain text (need html)" - ] - }, - "metadata": { - "text/html": { - "isolated": true - } - }, - "output_type": "display_data" + "metadata": { + "vscode": { + "languageId": "r" } - ], + }, + "outputs": [], "source": [ - "# use the built in leaflet capability from robis to map the occurrences\n", "m <- map_leaflet(mangrove_occ,\n", " provider_tiles = \"Esri.WorldGrayCanvas\",\n", " popup = function(x) { x[\"scientificName\"] },\n", @@ -201,14 +127,26 @@ "m" ] }, + { + "cell_type": "markdown", + "id": "202e2512", + "metadata": {}, + "source": [ + "This next step is not required, but if you'd like to save this map to view it outside of R, here's how." + ] + }, { "cell_type": "code", "execution_count": null, "id": "13a8bc6c-5963-4e4e-acab-f0f6de776045", - "metadata": {}, + "metadata": { + "vscode": { + "languageId": "r" + } + }, "outputs": [], "source": [ - "# if you want to save the leaflet map\n", + "\n", "saveWidget(m, \"mangroveMap.html\", selfcontained = TRUE)" ] } From 53006a7ad1dc33fe3fe0e8a5d30b6994cecfc061 Mon Sep 17 00:00:00 2001 From: Laura Brenskelle <160157051+laurabrenskelle@users.noreply.github.com> Date: Wed, 18 Sep 2024 15:00:22 -0400 Subject: [PATCH 05/15] Adding NOAA-GIS4Ocean link --- .../2024-09-13-OBIS_EOVs.ipynb | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/jupyterbook/content/code_gallery/data_analysis_and_visualization_notebooks/2024-09-13-OBIS_EOVs.ipynb b/jupyterbook/content/code_gallery/data_analysis_and_visualization_notebooks/2024-09-13-OBIS_EOVs.ipynb index d42ae8e5..44b66097 100644 --- a/jupyterbook/content/code_gallery/data_analysis_and_visualization_notebooks/2024-09-13-OBIS_EOVs.ipynb +++ b/jupyterbook/content/code_gallery/data_analysis_and_visualization_notebooks/2024-09-13-OBIS_EOVs.ipynb @@ -149,6 +149,14 @@ "\n", "saveWidget(m, \"mangroveMap.html\", selfcontained = TRUE)" ] + }, + { + "cell_type": "markdown", + "id": "31bf8a8b", + "metadata": {}, + "source": [ + "For more information and code about how to get EOV data from OBIS, see the [NOAA GIS For The Ocean GitHub project](https://github.com/NOAA-GIS4Ocean/BioEco_EOV)." + ] } ], "metadata": { From 74712a9a9f880d3aa9c690be4a4040e7c2ce32b3 Mon Sep 17 00:00:00 2001 From: Laura Brenskelle <160157051+laurabrenskelle@users.noreply.github.com> Date: Wed, 18 Sep 2024 16:47:26 -0400 Subject: [PATCH 06/15] Update 2024-09-13-OBIS_EOVs.ipynb removing call for gh library --- .../2024-09-13-OBIS_EOVs.ipynb | 1 - 1 file changed, 1 deletion(-) diff --git a/jupyterbook/content/code_gallery/data_analysis_and_visualization_notebooks/2024-09-13-OBIS_EOVs.ipynb b/jupyterbook/content/code_gallery/data_analysis_and_visualization_notebooks/2024-09-13-OBIS_EOVs.ipynb index 44b66097..9d66c95d 100644 --- a/jupyterbook/content/code_gallery/data_analysis_and_visualization_notebooks/2024-09-13-OBIS_EOVs.ipynb +++ b/jupyterbook/content/code_gallery/data_analysis_and_visualization_notebooks/2024-09-13-OBIS_EOVs.ipynb @@ -24,7 +24,6 @@ }, "outputs": [], "source": [ - "library(gh)\n", "library(readr)\n", "library(robis)\n", "library(dplyr)\n", From ecd7c73d8d67f45392ba3e7addc0f5a603355f7a Mon Sep 17 00:00:00 2001 From: Laura Brenskelle <160157051+laurabrenskelle@users.noreply.github.com> Date: Wed, 18 Sep 2024 16:50:08 -0400 Subject: [PATCH 07/15] Update environment-python_and_r.yml Removing gh library, adding htmlwidgets & readr --- .binder/environment-python_and_r.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.binder/environment-python_and_r.yml b/.binder/environment-python_and_r.yml index 931f04b6..a17ed15b 100644 --- a/.binder/environment-python_and_r.yml +++ b/.binder/environment-python_and_r.yml @@ -79,8 +79,8 @@ dependencies: - r-finch - r-ggfortify - r-ggplot2 - - r-gh - r-gsw + - r-htmlwidgets - r-httr - r-irkernel - r-lubridate @@ -89,6 +89,7 @@ dependencies: - r-obistools - r-oce - r-rcolorbrewer + - r-readr - r-rerddap - r-reshape2 - r-robis>=2.3.9 From a42436a647e9aaef3cbef89a9c5d0e835ee62843 Mon Sep 17 00:00:00 2001 From: Laura Brenskelle <160157051+laurabrenskelle@users.noreply.github.com> Date: Thu, 19 Sep 2024 10:42:51 -0400 Subject: [PATCH 08/15] Delete jupyterbook/content/code_gallery/data_analysis_and_visualization_notebooks/OBIS_EOVs.ipynb --- .../OBIS_EOVs.ipynb | 257 ------------------ 1 file changed, 257 deletions(-) delete mode 100644 jupyterbook/content/code_gallery/data_analysis_and_visualization_notebooks/OBIS_EOVs.ipynb diff --git a/jupyterbook/content/code_gallery/data_analysis_and_visualization_notebooks/OBIS_EOVs.ipynb b/jupyterbook/content/code_gallery/data_analysis_and_visualization_notebooks/OBIS_EOVs.ipynb deleted file mode 100644 index 57918a19..00000000 --- a/jupyterbook/content/code_gallery/data_analysis_and_visualization_notebooks/OBIS_EOVs.ipynb +++ /dev/null @@ -1,257 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "id": "ad98f7a1-d7a1-4a51-a9a2-0da9da7fe042", - "metadata": {}, - "source": [ - "# Using aphiaIDs to download OBIS occurrences for Bio/Eco EOVs\n", - "\n", - "Created: 2024-09-13" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "id": "390bf2be-3828-4705-b64b-ed68005ff98b", - "metadata": { - "scrolled": true - }, - "outputs": [], - "source": [ - "library(gh)\n", - "library(readr)\n", - "library(robis)\n", - "library(dplyr)" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "id": "43964864-7fe8-4139-a9d0-2a844161ccd1", - "metadata": {}, - "outputs": [], - "source": [ - "# first we will pull the files where the EOV taxonomy are stored from GitHub\n", - "repo_files <- gh(\"GET /repos/:owner/:repo/contents/:path\",\n", - " owner = \"ioos\",\n", - " repo = \"marine_life_data_network\",\n", - " path = \"eov_taxonomy\")\n", - "\n", - "for (file_info in repo_files) {\n", - " if (file_info$type == \"file\") {\n", - " download.file(file_info$download_url, destfile = file_info$name)\n", - " }\n", - "}" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "id": "0bb6ab17-d239-410c-90d0-dcb50359b095", - "metadata": {}, - "outputs": [], - "source": [ - "# let's try mangroves as our first example\n", - "# we will open the mangroves taxonomy CSV that we downloaded and grab the taxonIDs\n", - "mangroves <- read.csv(\"mangroves.csv\")\n", - "mangroves$ID <- gsub(\"urn:lsid:marinespecies.org:taxname.\", \"\", mangroves$acceptedTaxonId)\n", - "mangroves$ID <- as.numeric(mangroves$ID)\n", - "mangroveIdentifiers <- paste(mangroves$ID, collapse = \", \")" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "id": "d9aa2697-4ca0-4631-8d77-b0407e7a73b5", - "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "Retrieved 5000 records of approximately 132901 (3%)\n", - "Retrieved 10000 records of approximately 132901 (7%)\n", - "Retrieved 15000 records of approximately 132901 (11%)\n", - "Retrieved 20000 records of approximately 132901 (15%)\n", - "Retrieved 25000 records of approximately 132901 (18%)\n", - "Retrieved 30000 records of approximately 132901 (22%)\n", - "Retrieved 35000 records of approximately 132901 (26%)\n", - "Retrieved 40000 records of approximately 132901 (30%)\n", - "Retrieved 45000 records of approximately 132901 (33%)\n", - "Retrieved 50000 records of approximately 132901 (37%)\n", - "Retrieved 55000 records of approximately 132901 (41%)\n", - "Retrieved 60000 records of approximately 132901 (45%)\n", - "Retrieved 65000 records of approximately 132901 (48%)\n", - "Retrieved 70000 records of approximately 132901 (52%)\n", - "Retrieved 75000 records of approximately 132901 (56%)\n", - "Retrieved 80000 records of approximately 132901 (60%)\n", - "Retrieved 85000 records of approximately 132901 (63%)\n", - "Retrieved 90000 records of approximately 132901 (67%)\n", - "Retrieved 95000 records of approximately 132901 (71%)\n", - "Retrieved 1e+05 records of approximately 132901 (75%)\n", - "Retrieved 105000 records of approximately 132901 (79%)\n", - "Retrieved 110000 records of approximately 132901 (82%)\n", - "Retrieved 115000 records of approximately 132901 (86%)\n", - "Retrieved 120000 records of approximately 132901 (90%)\n", - "Retrieved 125000 records of approximately 132901 (94%)\n", - "Retrieved 130000 records of approximately 132901 (97%)\n", - "Retrieved 132901 records of approximately 132901 (100%)\n" - ] - }, - { - "data": { - "text/html": [ - "132901" - ], - "text/latex": [ - "132901" - ], - "text/markdown": [ - "132901" - ], - "text/plain": [ - "[1] 132901" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "# using the taxonIDs from the last step, let's search OBIS for occurrence data for this EOV\n", - "# this will take a bit to download because there were over 130k records when this script was written in Sept 2024\n", - "mangrove_occ <- robis::occurrence(taxonid = mangroveIdentifiers)\n", - "# let's check how many occurrences we got from OBIS\n", - "nrow(mangrove_occ)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "1ccc9837-4585-4020-852b-cdc6b33ae62d", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "[1] \"235048, 235033, 234450, 234495, 235086, 235089, 235091, 235106, 235056, 235060, 235045, 235116, 235063, 235072, 235075, 235077, 235068, 234488, 235103\"\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "Retrieved 5000 records of approximately 132901 (3%)\n", - "Retrieved 10000 records of approximately 132901 (7%)\n", - "Retrieved 15000 records of approximately 132901 (11%)\n", - "Retrieved 20000 records of approximately 132901 (15%)\n", - "Retrieved 25000 records of approximately 132901 (18%)\n", - "Retrieved 30000 records of approximately 132901 (22%)\n", - "Retrieved 35000 records of approximately 132901 (26%)\n", - "Retrieved 40000 records of approximately 132901 (30%)\n", - "Retrieved 45000 records of approximately 132901 (33%)\n", - "Retrieved 50000 records of approximately 132901 (37%)\n", - "Retrieved 55000 records of approximately 132901 (41%)\n", - "Retrieved 60000 records of approximately 132901 (45%)\n", - "Retrieved 65000 records of approximately 132901 (48%)\n", - "Retrieved 70000 records of approximately 132901 (52%)\n", - "Retrieved 75000 records of approximately 132901 (56%)\n", - "Retrieved 80000 records of approximately 132901 (60%)\n", - "Retrieved 85000 records of approximately 132901 (63%)\n", - "Retrieved 90000 records of approximately 132901 (67%)\n", - "Retrieved 95000 records of approximately 132901 (71%)\n", - "Retrieved 1e+05 records of approximately 132901 (75%)\n", - "Retrieved 105000 records of approximately 132901 (79%)\n", - "Retrieved 110000 records of approximately 132901 (82%)\n", - "Retrieved 115000 records of approximately 132901 (86%)\n", - "Retrieved 120000 records of approximately 132901 (90%)\n", - "Retrieved 125000 records of approximately 132901 (94%)\n", - "Retrieved 130000 records of approximately 132901 (97%)\n", - "Retrieved 132901 records of approximately 132901 (100%)\n" - ] - }, - { - "data": { - "text/html": [ - "132901" - ], - "text/latex": [ - "132901" - ], - "text/markdown": [ - "132901" - ], - "text/plain": [ - "[1] 132901" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/html": [ - "\n", - "\n", - "\t\n", - "\t\t\n", - "\t\t\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\t\n", - "\t\n", - "\t\t\n", - "\n", - "\t\n", - "\n" - ], - "text/plain": [ - "HTML widgets cannot be represented in plain text (need html)" - ] - }, - "metadata": { - "text/html": { - "isolated": true - } - }, - "output_type": "display_data" - } - ], - "source": [ - "# use the built in leaflet capability from robis to map the occurrences\n", - "map_leaflet(mangrove_occ,\n", - " provider_tiles = \"Esri.WorldGrayCanvas\",\n", - " popup = function(x) { x[\"scientificName\"] },\n", - " )" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "R", - "language": "R", - "name": "ir" - }, - "language_info": { - "codemirror_mode": "r", - "file_extension": ".r", - "mimetype": "text/x-r-source", - "name": "R", - "pygments_lexer": "r", - "version": "4.1.3" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} From c81884ae76867fd64f3abb609d89508dbe66aa9e Mon Sep 17 00:00:00 2001 From: Laura Brenskelle <160157051+laurabrenskelle@users.noreply.github.com> Date: Thu, 19 Sep 2024 16:09:31 -0400 Subject: [PATCH 09/15] Adding more markdown content --- .../2024-09-13-OBIS_EOVs.ipynb | 27 +++++++++++++++---- 1 file changed, 22 insertions(+), 5 deletions(-) diff --git a/jupyterbook/content/code_gallery/data_analysis_and_visualization_notebooks/2024-09-13-OBIS_EOVs.ipynb b/jupyterbook/content/code_gallery/data_analysis_and_visualization_notebooks/2024-09-13-OBIS_EOVs.ipynb index 9d66c95d..6a9c42bd 100644 --- a/jupyterbook/content/code_gallery/data_analysis_and_visualization_notebooks/2024-09-13-OBIS_EOVs.ipynb +++ b/jupyterbook/content/code_gallery/data_analysis_and_visualization_notebooks/2024-09-13-OBIS_EOVs.ipynb @@ -5,11 +5,17 @@ "id": "ad98f7a1-d7a1-4a51-a9a2-0da9da7fe042", "metadata": {}, "source": [ - "# Using aphiaIDs to download OBIS occurrences for Bio/Eco EOVs\n", + "# Using AphiaIDs to download OBIS occurrences for Bio/Eco EOVs\n", "\n", "Created: 2024-09-13\n", "\n", - "The [IOOS Marine Life Data Network](https://ioos.github.io/marine_life_data_network/) has developed a list of aphiaIDs for taxa mentioned in the [GOOS Biology and Ecosystems Variables](https://goosocean.org/what-we-do/framework/essential-ocean-variables/). These lists are meant to assist in querying OBIS to evaluate the abundance and distribution of these taxa. Here is an R notebook of how this might work using mangroves as an example." + "The Global Ocean Observing System (GOOS) is a global network of ocean observing systems led by the Intergovernmental Oceanographic Commission of UNESCO. NOAA's U.S. Integrated Ocean Observing System (IOOS) is a part of this global network. GOOS has developed Essential Ocean Variables (EOVs) to help harmonize data that is collected across various ocean observing systems around the globe. The [GOOS Biology and Ecosystems Variables](https://goosocean.org/what-we-do/framework/essential-ocean-variables/) are focused on the abundance and distribution of specific groups of aquatic organisms that are important for ecosystems. \n", + "\n", + "The [IOOS Marine Life Data Network](https://ioos.github.io/marine_life_data_network/) has developed [lists of biological taxa](https://https://github.com/ioos/marine_life_data_network/tree/main/eov_taxonomy) and their identifiers (in this case, aphiaIDs) that can be used to query published biological occurrence data in the [Ocean Biodiversity Information System](https://www.obis.org/) (OBIS).\n", + "\n", + "OBIS uses the [World Register of Marine Species](https://marinespecies.org) (WoRMS) to provide a taxonomic backbone for all of the records in the database, and WoRMS only contains marine species. Therefore, the lists developed by the IOOS Marine Life Data Network leverage the taxonomic scope of WoRMS to perform high-level queries without requiring a detailed list of every species of seabird, for example. Once a query is complete, users can begin analyzing OBIS occurrence data to assess the abundance, distribution, and other characteristics of the taxa in these BioEco Variables.\n", + "\n", + "This notebook provides an example in R for how to use the Marine Life Data Network's list of AphiaIDs for the GOOS BioEco Variables to perform an OBIS query. This particular notebook uses mangroves as an example, but the query could be edited for any of the BioEco EOVs." ] }, { @@ -35,7 +41,9 @@ "id": "3089302a", "metadata": {}, "source": [ - "First, we will pull the file with the mangrove aphiaIDs from the Marine Life Data Network GitHub repo. **Note**: the acceptedTaxonIds in these files are based on what was up-to-date in the [WoRMS](https://marinespecies.org/) database as of the date this script was written." + "First, we will pull the file with the mangrove aphiaIDs from the Marine Life Data Network GitHub repo.\n", + "\n", + "**Note**: the acceptedTaxonIds in these files are based on what was up-to-date in the WoRMS database as of the date this script was written." ] }, { @@ -57,7 +65,7 @@ "id": "45fa26db", "metadata": {}, "source": [ - "Now we will do a bit of cleanup to get a list of aphiaIDs for mangroves so we can run our `robis` query using these as taxon identifiers." + "Now we will do a bit of cleanup to get a list of aphiaIDs for mangroves so we can run our [`robis`](https://iobis.github.io/robis/articles/getting-started.html) query using these as taxon identifiers." ] }, { @@ -81,7 +89,12 @@ "id": "8a6cefa9", "metadata": {}, "source": [ - "Using the taxonIDs from the last step, let's query OBIS for occurrence data for mangroves. This step may take a bit of time to run. When this script was written, there were over 130,000 records for mangroves in OBIS." + "Using the taxonIDs from the last step, let's query OBIS for occurrence data for mangroves. This step may take a bit of time to run. When this script was written, there were over 130,000 records for mangroves in OBIS.\n", + "\n", + "\n", + "**Note**: You can edit this query to pull down less data if you are not planning to use every field. Here is how that might look.\n", + "\n", + "`mangrove_occ <- robis::occurrence(taxonid = mangroveIdentifiers, fields = c(\"occurrenceID\", \"species\", \"decimalLongitude\", \"decimalLatitude\", \"date_year\"))`" ] }, { @@ -154,6 +167,10 @@ "id": "31bf8a8b", "metadata": {}, "source": [ + "From here, you could further subset the data by species or year to run more detailed analyses about mangrove biology. You could also use the map of mangrove species to identify geographic gaps where more occurrence data might be needed to better, or to identify errors in the data. Do you see the dot on the mangrove map in the Arctic?\n", + "\n", + "The purpose of this notebook is that, because you used the AphiaIDs to search for all families and genera of known mangrove species, you can be assured that you have all of the mangrove data currently published to OBIS. This could be repeated for any of the other lists of AphiaIDs for BioEco EOVs. This is a beginning step to many possible analyses.\n", + "\n", "For more information and code about how to get EOV data from OBIS, see the [NOAA GIS For The Ocean GitHub project](https://github.com/NOAA-GIS4Ocean/BioEco_EOV)." ] } From e42fa0ba9574f38a85e31daa8274c407ad6088a6 Mon Sep 17 00:00:00 2001 From: Laura Brenskelle <160157051+laurabrenskelle@users.noreply.github.com> Date: Thu, 19 Sep 2024 16:11:07 -0400 Subject: [PATCH 10/15] Update 2024-09-13-OBIS_EOVs.ipynb --- .../2024-09-13-OBIS_EOVs.ipynb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/jupyterbook/content/code_gallery/data_analysis_and_visualization_notebooks/2024-09-13-OBIS_EOVs.ipynb b/jupyterbook/content/code_gallery/data_analysis_and_visualization_notebooks/2024-09-13-OBIS_EOVs.ipynb index 6a9c42bd..6dae9b2e 100644 --- a/jupyterbook/content/code_gallery/data_analysis_and_visualization_notebooks/2024-09-13-OBIS_EOVs.ipynb +++ b/jupyterbook/content/code_gallery/data_analysis_and_visualization_notebooks/2024-09-13-OBIS_EOVs.ipynb @@ -169,7 +169,7 @@ "source": [ "From here, you could further subset the data by species or year to run more detailed analyses about mangrove biology. You could also use the map of mangrove species to identify geographic gaps where more occurrence data might be needed to better, or to identify errors in the data. Do you see the dot on the mangrove map in the Arctic?\n", "\n", - "The purpose of this notebook is that, because you used the AphiaIDs to search for all families and genera of known mangrove species, you can be assured that you have all of the mangrove data currently published to OBIS. This could be repeated for any of the other lists of AphiaIDs for BioEco EOVs. This is a beginning step to many possible analyses.\n", + "The purpose of this notebook is, because you used the AphiaIDs to search for all families and genera of known mangrove species, you can be assured that you have all of the mangrove data currently published to OBIS. This could be repeated for any of the other lists of AphiaIDs for BioEco EOVs. This is a beginning step to many possible analyses.\n", "\n", "For more information and code about how to get EOV data from OBIS, see the [NOAA GIS For The Ocean GitHub project](https://github.com/NOAA-GIS4Ocean/BioEco_EOV)." ] From 504637ad0759aeb236ffa8503c65421689084f7c Mon Sep 17 00:00:00 2001 From: Laura Brenskelle <160157051+laurabrenskelle@users.noreply.github.com> Date: Thu, 19 Sep 2024 16:11:44 -0400 Subject: [PATCH 11/15] Update 2024-09-13-OBIS_EOVs.ipynb --- .../2024-09-13-OBIS_EOVs.ipynb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/jupyterbook/content/code_gallery/data_analysis_and_visualization_notebooks/2024-09-13-OBIS_EOVs.ipynb b/jupyterbook/content/code_gallery/data_analysis_and_visualization_notebooks/2024-09-13-OBIS_EOVs.ipynb index 6dae9b2e..f492773d 100644 --- a/jupyterbook/content/code_gallery/data_analysis_and_visualization_notebooks/2024-09-13-OBIS_EOVs.ipynb +++ b/jupyterbook/content/code_gallery/data_analysis_and_visualization_notebooks/2024-09-13-OBIS_EOVs.ipynb @@ -169,7 +169,7 @@ "source": [ "From here, you could further subset the data by species or year to run more detailed analyses about mangrove biology. You could also use the map of mangrove species to identify geographic gaps where more occurrence data might be needed to better, or to identify errors in the data. Do you see the dot on the mangrove map in the Arctic?\n", "\n", - "The purpose of this notebook is, because you used the AphiaIDs to search for all families and genera of known mangrove species, you can be assured that you have all of the mangrove data currently published to OBIS. This could be repeated for any of the other lists of AphiaIDs for BioEco EOVs. This is a beginning step to many possible analyses.\n", + "Because you used the AphiaIDs to search for all families and genera of known mangrove species, you can be assured that you have all of the mangrove data currently published to OBIS. This could be repeated for any of the other lists of AphiaIDs for BioEco EOVs. This is a beginning step to many possible analyses.\n", "\n", "For more information and code about how to get EOV data from OBIS, see the [NOAA GIS For The Ocean GitHub project](https://github.com/NOAA-GIS4Ocean/BioEco_EOV)." ] From 3f6676a0f8f613eee8c6f1be744d6336a3ef6261 Mon Sep 17 00:00:00 2001 From: Laura Brenskelle <160157051+laurabrenskelle@users.noreply.github.com> Date: Thu, 19 Sep 2024 16:12:40 -0400 Subject: [PATCH 12/15] Update 2024-09-13-OBIS_EOVs.ipynb --- .../2024-09-13-OBIS_EOVs.ipynb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/jupyterbook/content/code_gallery/data_analysis_and_visualization_notebooks/2024-09-13-OBIS_EOVs.ipynb b/jupyterbook/content/code_gallery/data_analysis_and_visualization_notebooks/2024-09-13-OBIS_EOVs.ipynb index f492773d..6941b15e 100644 --- a/jupyterbook/content/code_gallery/data_analysis_and_visualization_notebooks/2024-09-13-OBIS_EOVs.ipynb +++ b/jupyterbook/content/code_gallery/data_analysis_and_visualization_notebooks/2024-09-13-OBIS_EOVs.ipynb @@ -167,7 +167,7 @@ "id": "31bf8a8b", "metadata": {}, "source": [ - "From here, you could further subset the data by species or year to run more detailed analyses about mangrove biology. You could also use the map of mangrove species to identify geographic gaps where more occurrence data might be needed to better, or to identify errors in the data. Do you see the dot on the mangrove map in the Arctic?\n", + "From here, you could further subset the data by species or year to run more detailed analyses about mangrove biology. You could also use the map of mangrove species to identify geographic gaps where more occurrence data might be needed, or to identify errors in the data. Do you see the dot on the mangrove map in the Arctic?\n", "\n", "Because you used the AphiaIDs to search for all families and genera of known mangrove species, you can be assured that you have all of the mangrove data currently published to OBIS. This could be repeated for any of the other lists of AphiaIDs for BioEco EOVs. This is a beginning step to many possible analyses.\n", "\n", From 209728463d42a85690dcfde4dea0cda106347f9f Mon Sep 17 00:00:00 2001 From: Laura Brenskelle <160157051+laurabrenskelle@users.noreply.github.com> Date: Thu, 19 Sep 2024 16:35:56 -0400 Subject: [PATCH 13/15] Delete jupyterbook/content/code_gallery/data_analysis_and_visualization_notebooks/2024-09-13-OBIS_EOVs.ipynb --- .../2024-09-13-OBIS_EOVs.ipynb | 195 ------------------ 1 file changed, 195 deletions(-) delete mode 100644 jupyterbook/content/code_gallery/data_analysis_and_visualization_notebooks/2024-09-13-OBIS_EOVs.ipynb diff --git a/jupyterbook/content/code_gallery/data_analysis_and_visualization_notebooks/2024-09-13-OBIS_EOVs.ipynb b/jupyterbook/content/code_gallery/data_analysis_and_visualization_notebooks/2024-09-13-OBIS_EOVs.ipynb deleted file mode 100644 index 6941b15e..00000000 --- a/jupyterbook/content/code_gallery/data_analysis_and_visualization_notebooks/2024-09-13-OBIS_EOVs.ipynb +++ /dev/null @@ -1,195 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "id": "ad98f7a1-d7a1-4a51-a9a2-0da9da7fe042", - "metadata": {}, - "source": [ - "# Using AphiaIDs to download OBIS occurrences for Bio/Eco EOVs\n", - "\n", - "Created: 2024-09-13\n", - "\n", - "The Global Ocean Observing System (GOOS) is a global network of ocean observing systems led by the Intergovernmental Oceanographic Commission of UNESCO. NOAA's U.S. Integrated Ocean Observing System (IOOS) is a part of this global network. GOOS has developed Essential Ocean Variables (EOVs) to help harmonize data that is collected across various ocean observing systems around the globe. The [GOOS Biology and Ecosystems Variables](https://goosocean.org/what-we-do/framework/essential-ocean-variables/) are focused on the abundance and distribution of specific groups of aquatic organisms that are important for ecosystems. \n", - "\n", - "The [IOOS Marine Life Data Network](https://ioos.github.io/marine_life_data_network/) has developed [lists of biological taxa](https://https://github.com/ioos/marine_life_data_network/tree/main/eov_taxonomy) and their identifiers (in this case, aphiaIDs) that can be used to query published biological occurrence data in the [Ocean Biodiversity Information System](https://www.obis.org/) (OBIS).\n", - "\n", - "OBIS uses the [World Register of Marine Species](https://marinespecies.org) (WoRMS) to provide a taxonomic backbone for all of the records in the database, and WoRMS only contains marine species. Therefore, the lists developed by the IOOS Marine Life Data Network leverage the taxonomic scope of WoRMS to perform high-level queries without requiring a detailed list of every species of seabird, for example. Once a query is complete, users can begin analyzing OBIS occurrence data to assess the abundance, distribution, and other characteristics of the taxa in these BioEco Variables.\n", - "\n", - "This notebook provides an example in R for how to use the Marine Life Data Network's list of AphiaIDs for the GOOS BioEco Variables to perform an OBIS query. This particular notebook uses mangroves as an example, but the query could be edited for any of the BioEco EOVs." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "390bf2be-3828-4705-b64b-ed68005ff98b", - "metadata": { - "scrolled": true, - "vscode": { - "languageId": "r" - } - }, - "outputs": [], - "source": [ - "library(readr)\n", - "library(robis)\n", - "library(dplyr)\n", - "library(htmlwidgets)" - ] - }, - { - "cell_type": "markdown", - "id": "3089302a", - "metadata": {}, - "source": [ - "First, we will pull the file with the mangrove aphiaIDs from the Marine Life Data Network GitHub repo.\n", - "\n", - "**Note**: the acceptedTaxonIds in these files are based on what was up-to-date in the WoRMS database as of the date this script was written." - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "id": "43964864-7fe8-4139-a9d0-2a844161ccd1", - "metadata": { - "vscode": { - "languageId": "r" - } - }, - "outputs": [], - "source": [ - "mangroves <- read.csv(\"https://raw.githubusercontent.com/ioos/marine_life_data_network/main/eov_taxonomy/mangroves.csv\")" - ] - }, - { - "cell_type": "markdown", - "id": "45fa26db", - "metadata": {}, - "source": [ - "Now we will do a bit of cleanup to get a list of aphiaIDs for mangroves so we can run our [`robis`](https://iobis.github.io/robis/articles/getting-started.html) query using these as taxon identifiers." - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "id": "0bb6ab17-d239-410c-90d0-dcb50359b095", - "metadata": { - "vscode": { - "languageId": "r" - } - }, - "outputs": [], - "source": [ - "mangroves$ID <- gsub(\"urn:lsid:marinespecies.org:taxname.\", \"\", mangroves$acceptedTaxonId)\n", - "mangroves$ID <- as.numeric(mangroves$ID)\n", - "mangroveIdentifiers <- paste(mangroves$ID, collapse = \", \")" - ] - }, - { - "cell_type": "markdown", - "id": "8a6cefa9", - "metadata": {}, - "source": [ - "Using the taxonIDs from the last step, let's query OBIS for occurrence data for mangroves. This step may take a bit of time to run. When this script was written, there were over 130,000 records for mangroves in OBIS.\n", - "\n", - "\n", - "**Note**: You can edit this query to pull down less data if you are not planning to use every field. Here is how that might look.\n", - "\n", - "`mangrove_occ <- robis::occurrence(taxonid = mangroveIdentifiers, fields = c(\"occurrenceID\", \"species\", \"decimalLongitude\", \"decimalLatitude\", \"date_year\"))`" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "d9aa2697-4ca0-4631-8d77-b0407e7a73b5", - "metadata": { - "vscode": { - "languageId": "r" - } - }, - "outputs": [], - "source": [ - "mangrove_occ <- robis::occurrence(taxonid = mangroveIdentifiers)\n", - "# let's check how many occurrences we got from OBIS\n", - "nrow(mangrove_occ)" - ] - }, - { - "cell_type": "markdown", - "id": "c837a3ac", - "metadata": {}, - "source": [ - "Now that we have all of our mangrove records from OBIS, we will map the global distribution of records using the `map_leaflet` function found in the `robis` package. With the leaflet functionality, you can zoom into records, click them, and it list the scientific name for that occurrence record." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "1ccc9837-4585-4020-852b-cdc6b33ae62d", - "metadata": { - "vscode": { - "languageId": "r" - } - }, - "outputs": [], - "source": [ - "m <- map_leaflet(mangrove_occ,\n", - " provider_tiles = \"Esri.WorldGrayCanvas\",\n", - " popup = function(x) { x[\"scientificName\"] },\n", - " )\n", - "m" - ] - }, - { - "cell_type": "markdown", - "id": "202e2512", - "metadata": {}, - "source": [ - "This next step is not required, but if you'd like to save this map to view it outside of R, here's how." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "13a8bc6c-5963-4e4e-acab-f0f6de776045", - "metadata": { - "vscode": { - "languageId": "r" - } - }, - "outputs": [], - "source": [ - "\n", - "saveWidget(m, \"mangroveMap.html\", selfcontained = TRUE)" - ] - }, - { - "cell_type": "markdown", - "id": "31bf8a8b", - "metadata": {}, - "source": [ - "From here, you could further subset the data by species or year to run more detailed analyses about mangrove biology. You could also use the map of mangrove species to identify geographic gaps where more occurrence data might be needed, or to identify errors in the data. Do you see the dot on the mangrove map in the Arctic?\n", - "\n", - "Because you used the AphiaIDs to search for all families and genera of known mangrove species, you can be assured that you have all of the mangrove data currently published to OBIS. This could be repeated for any of the other lists of AphiaIDs for BioEco EOVs. This is a beginning step to many possible analyses.\n", - "\n", - "For more information and code about how to get EOV data from OBIS, see the [NOAA GIS For The Ocean GitHub project](https://github.com/NOAA-GIS4Ocean/BioEco_EOV)." - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "R", - "language": "R", - "name": "ir" - }, - "language_info": { - "codemirror_mode": "r", - "file_extension": ".r", - "mimetype": "text/x-r-source", - "name": "R", - "pygments_lexer": "r", - "version": "4.1.3" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} From 62ad68e59fd6f547268c6881cdd1cc4e729297eb Mon Sep 17 00:00:00 2001 From: Laura Brenskelle <160157051+laurabrenskelle@users.noreply.github.com> Date: Thu, 19 Sep 2024 16:36:37 -0400 Subject: [PATCH 14/15] Uploading the final version --- .../2024-09-13-OBIS_EOVs.ipynb | 286 ++++++++++++++++++ 1 file changed, 286 insertions(+) create mode 100644 jupyterbook/content/code_gallery/data_analysis_and_visualization_notebooks/2024-09-13-OBIS_EOVs.ipynb diff --git a/jupyterbook/content/code_gallery/data_analysis_and_visualization_notebooks/2024-09-13-OBIS_EOVs.ipynb b/jupyterbook/content/code_gallery/data_analysis_and_visualization_notebooks/2024-09-13-OBIS_EOVs.ipynb new file mode 100644 index 00000000..6afaeb52 --- /dev/null +++ b/jupyterbook/content/code_gallery/data_analysis_and_visualization_notebooks/2024-09-13-OBIS_EOVs.ipynb @@ -0,0 +1,286 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "ad98f7a1-d7a1-4a51-a9a2-0da9da7fe042", + "metadata": {}, + "source": [ + "# Using AphiaIDs to download OBIS occurrences for Bio/Eco EOVs\n", + "\n", + "Created: 2024-09-13\n", + "\n", + "The Global Ocean Observing System (GOOS) is a global network of ocean observing systems led by the Intergovernmental Oceanographic Commission of UNESCO. NOAA's U.S. Integrated Ocean Observing System (IOOS) is a part of this global network. GOOS has developed Essential Ocean Variables (EOVs) to help harmonize data that is collected across various ocean observing systems around the globe. The [GOOS Biology and Ecosystems Variables](https://goosocean.org/what-we-do/framework/essential-ocean-variables/) are focused on the abundance and distribution of specific groups of aquatic organisms that are important for ecosystems. \n", + "\n", + "The [IOOS Marine Life Data Network](https://ioos.github.io/marine_life_data_network/) has developed [lists of biological taxa](https://https://github.com/ioos/marine_life_data_network/tree/main/eov_taxonomy) and their identifiers (in this case, aphiaIDs) that can be used to query published biological occurrence data in the [Ocean Biodiversity Information System](https://www.obis.org/) (OBIS).\n", + "\n", + "OBIS uses the [World Register of Marine Species](https://marinespecies.org) (WoRMS) to provide a taxonomic backbone for all of the records in the database, and WoRMS only contains marine species. Therefore, the lists developed by the IOOS Marine Life Data Network leverage the taxonomic scope of WoRMS to perform high-level queries without requiring a detailed list of every species of seabird, for example. Once a query is complete, users can begin analyzing OBIS occurrence data to assess the abundance, distribution, and other characteristics of the taxa in these BioEco Variables.\n", + "\n", + "This notebook provides an example in R for how to use the Marine Life Data Network's list of AphiaIDs for the GOOS BioEco Variables to perform an OBIS query. This particular notebook uses mangroves as an example, but the query could be edited for any of the BioEco EOVs." + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "390bf2be-3828-4705-b64b-ed68005ff98b", + "metadata": { + "scrolled": true, + "vscode": { + "languageId": "r" + } + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\n", + "Attaching package: 'dplyr'\n", + "\n", + "\n", + "The following objects are masked from 'package:stats':\n", + "\n", + " filter, lag\n", + "\n", + "\n", + "The following objects are masked from 'package:base':\n", + "\n", + " intersect, setdiff, setequal, union\n", + "\n", + "\n" + ] + } + ], + "source": [ + "library(readr)\n", + "library(robis)\n", + "library(dplyr)\n", + "library(htmlwidgets)" + ] + }, + { + "cell_type": "markdown", + "id": "3089302a", + "metadata": {}, + "source": [ + "First, we will pull the file with the mangrove aphiaIDs from the Marine Life Data Network GitHub repo.\n", + "\n", + "**Note**: the acceptedTaxonIds in these files are based on what was up-to-date in the WoRMS database as of the date this script was written." + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "43964864-7fe8-4139-a9d0-2a844161ccd1", + "metadata": { + "vscode": { + "languageId": "r" + } + }, + "outputs": [], + "source": [ + "mangroves <- read.csv(\"https://raw.githubusercontent.com/ioos/marine_life_data_network/main/eov_taxonomy/mangroves.csv\")" + ] + }, + { + "cell_type": "markdown", + "id": "45fa26db", + "metadata": {}, + "source": [ + "Now we will do a bit of cleanup to get a list of aphiaIDs for mangroves so we can run our [`robis`](https://iobis.github.io/robis/articles/getting-started.html) query using these as taxon identifiers." + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "0bb6ab17-d239-410c-90d0-dcb50359b095", + "metadata": { + "vscode": { + "languageId": "r" + } + }, + "outputs": [], + "source": [ + "mangroves$ID <- gsub(\"urn:lsid:marinespecies.org:taxname.\", \"\", mangroves$acceptedTaxonId)\n", + "mangroves$ID <- as.numeric(mangroves$ID)\n", + "mangroveIdentifiers <- paste(mangroves$ID, collapse = \", \")" + ] + }, + { + "cell_type": "markdown", + "id": "8a6cefa9", + "metadata": {}, + "source": [ + "Using the taxonIDs from the last step, let's query OBIS for occurrence data for mangroves. This step may take a bit of time to run. When this script was written, there were over 130,000 records for mangroves in OBIS.\n", + "\n", + "\n", + "**Note**: You can edit this query to pull down less data if you are not planning to use every field. Here is how that might look.\n", + "\n", + "`mangrove_occ <- robis::occurrence(taxonid = mangroveIdentifiers, fields = c(\"occurrenceID\", \"species\", \"decimalLongitude\", \"decimalLatitude\", \"date_year\"))`" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "d9aa2697-4ca0-4631-8d77-b0407e7a73b5", + "metadata": { + "vscode": { + "languageId": "r" + } + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Retrieved 5000 records of approximately 132901 (3%)\n", + "Retrieved 10000 records of approximately 132901 (7%)\n", + "Retrieved 15000 records of approximately 132901 (11%)\n", + "Retrieved 20000 records of approximately 132901 (15%)\n", + "Retrieved 25000 records of approximately 132901 (18%)\n", + "Retrieved 30000 records of approximately 132901 (22%)\n", + "Retrieved 35000 records of approximately 132901 (26%)\n", + "Retrieved 40000 records of approximately 132901 (30%)\n", + "Retrieved 45000 records of approximately 132901 (33%)\n", + "Retrieved 50000 records of approximately 132901 (37%)\n", + "Retrieved 55000 records of approximately 132901 (41%)\n", + "Retrieved 60000 records of approximately 132901 (45%)\n", + "Retrieved 65000 records of approximately 132901 (48%)\n", + "Retrieved 70000 records of approximately 132901 (52%)\n", + "Retrieved 75000 records of approximately 132901 (56%)\n", + "Retrieved 80000 records of approximately 132901 (60%)\n", + "Retrieved 85000 records of approximately 132901 (63%)\n", + "Retrieved 90000 records of approximately 132901 (67%)\n", + "Retrieved 95000 records of approximately 132901 (71%)\n", + "Retrieved 1e+05 records of approximately 132901 (75%)\n", + "Retrieved 105000 records of approximately 132901 (79%)\n", + "Retrieved 110000 records of approximately 132901 (82%)\n", + "Retrieved 115000 records of approximately 132901 (86%)\n", + "Retrieved 120000 records of approximately 132901 (90%)\n", + "Retrieved 125000 records of approximately 132901 (94%)\n", + "Retrieved 130000 records of approximately 132901 (97%)\n", + "Retrieved 132901 records of approximately 132901 (100%)\n" + ] + } + ], + "source": [ + "mangrove_occ <- robis::occurrence(taxonid = mangroveIdentifiers)" + ] + }, + { + "cell_type": "markdown", + "id": "c837a3ac", + "metadata": {}, + "source": [ + "Now that we have all of our mangrove records from OBIS, we will map the global distribution of records using the `map_leaflet` function found in the `robis` package. With the leaflet functionality, you can zoom into records, click them, and it list the scientific name for that occurrence record." + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "1ccc9837-4585-4020-852b-cdc6b33ae62d", + "metadata": { + "vscode": { + "languageId": "r" + } + }, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + "\n", + "\t\n", + "\t\t\n", + "\t\t\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\t\n", + "\t\n", + "\t\t\n", + "\n", + "\t\n", + "\n" + ], + "text/plain": [ + "HTML widgets cannot be represented in plain text (need html)" + ] + }, + "metadata": { + "text/html": { + "isolated": true + } + }, + "output_type": "display_data" + } + ], + "source": [ + "m <- map_leaflet(mangrove_occ,\n", + " provider_tiles = \"Esri.WorldGrayCanvas\",\n", + " popup = function(x) { x[\"scientificName\"] },\n", + " )\n", + "m" + ] + }, + { + "cell_type": "markdown", + "id": "202e2512", + "metadata": {}, + "source": [ + "This next step is not required, but if you'd like to save this map to view it outside of R, here's how." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "13a8bc6c-5963-4e4e-acab-f0f6de776045", + "metadata": { + "vscode": { + "languageId": "r" + } + }, + "outputs": [], + "source": [ + "\n", + "saveWidget(m, \"mangroveMap.html\", selfcontained = TRUE)" + ] + }, + { + "cell_type": "markdown", + "id": "31bf8a8b", + "metadata": {}, + "source": [ + "From here, you could further subset the data by species or year to run more detailed analyses about mangrove biology. You could also use the map of mangrove species to identify geographic gaps where more occurrence data might be needed, or to identify errors in the data. Do you see the dot on the mangrove map in the Arctic?\n", + "\n", + "Because you used the AphiaIDs to search for all families and genera of known mangrove species, you can be assured that you have all of the mangrove data currently published to OBIS. This could be repeated for any of the other lists of AphiaIDs for BioEco EOVs. This is a beginning step to many possible analyses.\n", + "\n", + "For more information and code about how to get EOV data from OBIS, see the [NOAA GIS For The Ocean GitHub project](https://github.com/NOAA-GIS4Ocean/BioEco_EOV)." + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "R", + "language": "R", + "name": "ir" + }, + "language_info": { + "codemirror_mode": "r", + "file_extension": ".r", + "mimetype": "text/x-r-source", + "name": "R", + "pygments_lexer": "r", + "version": "4.1.3" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} From 78ab0d71ef81120b08d8527719734815d5b95922 Mon Sep 17 00:00:00 2001 From: Laura Brenskelle <160157051+laurabrenskelle@users.noreply.github.com> Date: Fri, 20 Sep 2024 09:33:20 -0400 Subject: [PATCH 15/15] Adding link to Arctic mangrove GH issue --- .../2024-09-13-OBIS_EOVs.ipynb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/jupyterbook/content/code_gallery/data_analysis_and_visualization_notebooks/2024-09-13-OBIS_EOVs.ipynb b/jupyterbook/content/code_gallery/data_analysis_and_visualization_notebooks/2024-09-13-OBIS_EOVs.ipynb index 6afaeb52..3567efe8 100644 --- a/jupyterbook/content/code_gallery/data_analysis_and_visualization_notebooks/2024-09-13-OBIS_EOVs.ipynb +++ b/jupyterbook/content/code_gallery/data_analysis_and_visualization_notebooks/2024-09-13-OBIS_EOVs.ipynb @@ -258,7 +258,7 @@ "id": "31bf8a8b", "metadata": {}, "source": [ - "From here, you could further subset the data by species or year to run more detailed analyses about mangrove biology. You could also use the map of mangrove species to identify geographic gaps where more occurrence data might be needed, or to identify errors in the data. Do you see the dot on the mangrove map in the Arctic?\n", + "From here, you could further subset the data by species or year to run more detailed analyses about mangrove biology. You could also use the map of mangrove species to identify geographic gaps where more occurrence data might be needed, or to identify errors in the data. Do you see the dot on the mangrove map in the Arctic? If you find errors in data like this, you can make a GitHub issue to report them, like [this one](https://github.com/gbif/portal-feedback/issues/5480).\n", "\n", "Because you used the AphiaIDs to search for all families and genera of known mangrove species, you can be assured that you have all of the mangrove data currently published to OBIS. This could be repeated for any of the other lists of AphiaIDs for BioEco EOVs. This is a beginning step to many possible analyses.\n", "\n",