From 4799db06ba1c7679157d28e67cadf17ff4add059 Mon Sep 17 00:00:00 2001 From: "Mathew.Biddle" Date: Wed, 3 May 2023 12:19:20 -0400 Subject: [PATCH] starting new sccoos habs notebook --- .binder/environment-python_and_r.yml | 1 + .../2023-05-03-SCCOOS-HABs.ipynb | 1085 +++++++++++++++++ 2 files changed, 1086 insertions(+) create mode 100644 jupyterbook/content/code_gallery/data_access_notebooks/2023-05-03-SCCOOS-HABs.ipynb diff --git a/.binder/environment-python_and_r.yml b/.binder/environment-python_and_r.yml index 7f5f2080..f34727b7 100644 --- a/.binder/environment-python_and_r.yml +++ b/.binder/environment-python_and_r.yml @@ -87,5 +87,6 @@ dependencies: - r-reshape2 - r-robis>=2.3.9 - r-sp + - r-tidyverse - r-xtractomatic - r-xts diff --git a/jupyterbook/content/code_gallery/data_access_notebooks/2023-05-03-SCCOOS-HABs.ipynb b/jupyterbook/content/code_gallery/data_access_notebooks/2023-05-03-SCCOOS-HABs.ipynb new file mode 100644 index 00000000..99767d47 --- /dev/null +++ b/jupyterbook/content/code_gallery/data_access_notebooks/2023-05-03-SCCOOS-HABs.ipynb @@ -0,0 +1,1085 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "how this data contribution expands the OBIS holdings\n", + "\n", + "- picking a species from SCCOOS, then pulling all the data for that species from OBIS\n", + "- plotting it all together with SCCOOS on a timeslider." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Load library's" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "-- \u001b[1mAttaching packages\u001b[22m ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- tidyverse 1.3.2 --\n", + "\u001b[32mv\u001b[39m \u001b[34mggplot2\u001b[39m 3.4.0 \u001b[32mv\u001b[39m \u001b[34mpurrr \u001b[39m 1.0.1\n", + "\u001b[32mv\u001b[39m \u001b[34mtibble \u001b[39m 3.2.1 \u001b[32mv\u001b[39m \u001b[34mdplyr \u001b[39m 1.1.1\n", + "\u001b[32mv\u001b[39m \u001b[34mtidyr \u001b[39m 1.3.0 \u001b[32mv\u001b[39m \u001b[34mstringr\u001b[39m 1.5.0\n", + "\u001b[32mv\u001b[39m \u001b[34mreadr \u001b[39m 2.1.4 \u001b[32mv\u001b[39m \u001b[34mforcats\u001b[39m 1.0.0\n", + "-- \u001b[1mConflicts\u001b[22m -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- tidyverse_conflicts() --\n", + "\u001b[31mx\u001b[39m \u001b[34mdplyr\u001b[39m::\u001b[32mfilter()\u001b[39m masks \u001b[34mstats\u001b[39m::filter()\n", + "\u001b[31mx\u001b[39m \u001b[34mdplyr\u001b[39m::\u001b[32mlag()\u001b[39m masks \u001b[34mstats\u001b[39m::lag()\n" + ] + } + ], + "source": [ + "library(robis)\n", + "library(leaflet)\n", + "library(tidyverse)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Get the SCCOOS data from OBIS" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Retrieved 5000 records of approximately 11724 (42%)\n", + "Retrieved 10000 records of approximately 11724 (85%)\n", + "Retrieved 11724 records of approximately 11724 (100%)\n" + ] + } + ], + "source": [ + "# get SCCOOS occurrence and measurement or fact data\n", + "sccoos_dataset_id = \"c9aaa0e9-8f6c-4553-a014-a857baba0680\"\n", + "\n", + "species = \"Lingulodinium polyedra\"\n", + "\n", + "sccoos_occur <- occurrence(\n", + " datasetid = sccoos_dataset_id, mof=TRUE\n", + ")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Take a look at response data" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + "\n", + "\n", + "\t\n", + "\t\n", + "\n", + "\n", + "\t\n", + "\n", + "
A tibble: 1 × 71
infraphylumdate_yearscientificNameIDscientificNamesuperdomainiddroppedhabaphiaIDdecimalLatitudeinfraphylumidphylumidfamilyidoccurrenceStatusbasisOfRecordsubkingdomorganismNamemaximumDepthInMetersidorderorganismQuantitydataset_iddecimalLongitudedate_endoccurrenceIDinfrakingdomsubkingdomiddate_startorganismQuantityTypegenuseventDateeventIDbrackishinfrakingdomidcoordinateUncertaintyInMetersabsenceeventRemarksgenusidtaxonIDoriginalScientificNamemarineminimumDepthInMeterssubphylumidcountryCodedate_midclassorderidgeodeticDatumkingdomsuperdomainclassiddepthphylumlocationIDsubphylumfamilykingdomidnode_idflagssssshoredistancesstbathymetrymofsubclassidterrestrialspeciesidsuperordersuperorderidwrimsspeciessubclass
<chr><int><chr><chr><int><lgl><lgl><int><dbl><int><int><int><chr><chr><chr><chr><int><chr><chr><chr><chr><dbl><dbl><chr><chr><int><dbl><chr><chr><chr><chr><lgl><int><chr><lgl><chr><int><chr><chr><lgl><int><int><chr><dbl><chr><int><chr><chr><chr><int><dbl><chr><chr><chr><chr><int><chr><chr><dbl><int><dbl><int><list><int><lgl><int><chr><int><lgl><chr><chr>
Dinoflagellata2009(urn:lsid:marinespecies.org:taxname:109462)Dinophysis1FALSETRUE10946234.408146203450030231772presentHumanObservationHarosaDinophysis_spp100056f10-de45-4217-b8f8-92f3d2a906b5Dinophysiales100c9aaa0e9-8f6c-4553-a014-a857baba0680-119.6851.248653e+12HABs-StearnsWharf_2009-07-27T13:53:00Z_Dinophysis_sppAlveolata5824191.248653e+12cells/LDinophysis2009-07-27T13:53:00ZHABs-StearnsWharf_2009-07-27T13:53:00ZTRUE53620912FALSE20090727109462urn:lsid:algaebase.org:taxname:6356DinophysisTRUE1562620US1.248653e+12Dinophyceae109390EPSG:4326 WGS84ChromistaBiota195421MyzozoaHABs-StearnsWharfDinozoaDinophysaceae7b7c47783-a020-4173-b390-7b57c4fa1426NA33.4420215.47NA , NA , NA , NA , NA , NA , NA , NA , NA , NA , NA , NA , NA , NA , NA , NA , NA , NA , NA , NA , NA , NA , NA , NA , 3.234 , 5.64 , 1.221 , 5.64 , 0.892 , 0.245 , 1.136 , 0 , 1.221 , 0.875 , 9.938 , 17 , NA , NA , NA , NA , NA , NA , NA , NA , NA , NA , NA , NA , NA , NA , NA , NA , NA , NA , NA , NA , NA , NA , NA , NA , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , NA , NA , NA , NA , NA , NA , NA , NA , NA , NA , NA , NA , uM , mg/m3 , mg/m3 , mg/m3 , uM , uM , uM , ng/mL , mg/m3 , uM , uM , Celsius , NA , NA , NA , NA , NA , NA , NA , NA , NA , NA , NA , NA , Ammonium , Avg_Chloro , Avg_Phaeo , Chl1 , Nitrate , Nitrite , Nitrite_Nitrate , pDA , Phaeo1 , Phosphate , Silicate , Temp , NA , http://vocab.nerc.ac.uk/collection/P06/current/UMMC/ , http://vocab.nerc.ac.uk/collection/P06/current/UMMC/ , http://vocab.nerc.ac.uk/collection/P06/current/UMMC/ , NA , NA , NA , NA , http://vocab.nerc.ac.uk/collection/P06/current/UMMC/ , NA , NA , http://vocab.nerc.ac.uk/collection/P06/current/UPAA/ , http://vocab.nerc.ac.uk/collection/S27/current/CS026908/ , http://vocab.nerc.ac.uk/collection/P25/current/CHLA/ , http://vocab.nerc.ac.uk/collection/P25/current/PHAEO/; https://www.bco-dmo.org/parameter/925; http://vocab.nerc.ac.uk/collection/P01/current/PHAEFMP1/, http://vocab.nerc.ac.uk/collection/P25/current/CHLA/ , http://vocab.nerc.ac.uk/collection/S27/current/CS002879/; https://www.bco-dmo.org/parameter/1194 , http://vocab.nerc.ac.uk/collection/S27/current/CS002877/; https://www.bco-dmo.org/parameter/1192; http://vocab.nerc.ac.uk/collection/P02/current/NTRI/, http://vocab.nerc.ac.uk/collection/S27/current/CS026905/ , https://pubchem.ncbi.nlm.nih.gov/compound/Domoic-acid , http://vocab.nerc.ac.uk/collection/P25/current/PHAEO/; https://www.bco-dmo.org/parameter/925; http://vocab.nerc.ac.uk/collection/P01/current/PHAEFMP1/, http://vocab.nerc.ac.uk/collection/S27/current/CS026904/ , http://vocab.nerc.ac.uk/collection/P25/current/SLCA/; https://www.bco-dmo.org/parameter/1209 , http://vocab.nerc.ac.uk/collection/P25/current/WTEMP/ , HABs-StearnsWharf_2009-07-27T13:53:00Z_Ammonium , HABs-StearnsWharf_2009-07-27T13:53:00Z_Avg_Chloro , HABs-StearnsWharf_2009-07-27T13:53:00Z_Avg_Phaeo , HABs-StearnsWharf_2009-07-27T13:53:00Z_Chl1 , HABs-StearnsWharf_2009-07-27T13:53:00Z_Nitrate , HABs-StearnsWharf_2009-07-27T13:53:00Z_Nitrite , HABs-StearnsWharf_2009-07-27T13:53:00Z_Nitrite_Nitrate , HABs-StearnsWharf_2009-07-27T13:53:00Z_pDA , HABs-StearnsWharf_2009-07-27T13:53:00Z_Phaeo1 , HABs-StearnsWharf_2009-07-27T13:53:00Z_Phosphate , HABs-StearnsWharf_2009-07-27T13:53:00Z_Silicate , HABs-StearnsWharf_2009-07-27T13:53:00Z_Temp , NA , NA , NA , NA , NA , NA , NA , NA , NA , NA , NA , NA NANANANANANANANA
\n" + ], + "text/latex": [ + "A tibble: 1 × 71\n", + "\\begin{tabular}{lllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllll}\n", + " infraphylum & date\\_year & scientificNameID & scientificName & superdomainid & dropped & hab & aphiaID & decimalLatitude & infraphylumid & phylumid & familyid & occurrenceStatus & basisOfRecord & subkingdom & organismName & maximumDepthInMeters & id & order & organismQuantity & dataset\\_id & decimalLongitude & date\\_end & occurrenceID & infrakingdom & subkingdomid & date\\_start & organismQuantityType & genus & eventDate & eventID & brackish & infrakingdomid & coordinateUncertaintyInMeters & absence & eventRemarks & genusid & taxonID & originalScientificName & marine & minimumDepthInMeters & subphylumid & countryCode & date\\_mid & class & orderid & geodeticDatum & kingdom & superdomain & classid & depth & phylum & locationID & subphylum & family & kingdomid & node\\_id & flags & sss & shoredistance & sst & bathymetry & mof & subclassid & terrestrial & speciesid & superorder & superorderid & wrims & species & subclass\\\\\n", + " & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & \\\\\n", + "\\hline\n", + "\t Dinoflagellata & 2009 & (urn:lsid:marinespecies.org:taxname:109462) & Dinophysis & 1 & FALSE & TRUE & 109462 & 34.408 & 146203 & 450030 & 231772 & present & HumanObservation & Harosa & Dinophysis\\_spp & 1 & 00056f10-de45-4217-b8f8-92f3d2a906b5 & Dinophysiales & 100 & c9aaa0e9-8f6c-4553-a014-a857baba0680 & -119.685 & 1.248653e+12 & HABs-StearnsWharf\\_2009-07-27T13:53:00Z\\_Dinophysis\\_spp & Alveolata & 582419 & 1.248653e+12 & cells/L & Dinophysis & 2009-07-27T13:53:00Z & HABs-StearnsWharf\\_2009-07-27T13:53:00Z & TRUE & 536209 & 12 & FALSE & 20090727 & 109462 & urn:lsid:algaebase.org:taxname:6356 & Dinophysis & TRUE & 1 & 562620 & US & 1.248653e+12 & Dinophyceae & 109390 & EPSG:4326 WGS84 & Chromista & Biota & 19542 & 1 & Myzozoa & HABs-StearnsWharf & Dinozoa & Dinophysaceae & 7 & b7c47783-a020-4173-b390-7b57c4fa1426 & NA & 33.44 & 202 & 15.4 & 7 & NA , NA , NA , NA , NA , NA , NA , NA , NA , NA , NA , NA , NA , NA , NA , NA , NA , NA , NA , NA , NA , NA , NA , NA , 3.234 , 5.64 , 1.221 , 5.64 , 0.892 , 0.245 , 1.136 , 0 , 1.221 , 0.875 , 9.938 , 17 , NA , NA , NA , NA , NA , NA , NA , NA , NA , NA , NA , NA , NA , NA , NA , NA , NA , NA , NA , NA , NA , NA , NA , NA , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , NA , NA , NA , NA , NA , NA , NA , NA , NA , NA , NA , NA , uM , mg/m3 , mg/m3 , mg/m3 , uM , uM , uM , ng/mL , mg/m3 , uM , uM , Celsius , NA , NA , NA , NA , NA , NA , NA , NA , NA , NA , NA , NA , Ammonium , Avg\\_Chloro , Avg\\_Phaeo , Chl1 , Nitrate , Nitrite , Nitrite\\_Nitrate , pDA , Phaeo1 , Phosphate , Silicate , Temp , NA , http://vocab.nerc.ac.uk/collection/P06/current/UMMC/ , http://vocab.nerc.ac.uk/collection/P06/current/UMMC/ , http://vocab.nerc.ac.uk/collection/P06/current/UMMC/ , NA , NA , NA , NA , http://vocab.nerc.ac.uk/collection/P06/current/UMMC/ , NA , NA , http://vocab.nerc.ac.uk/collection/P06/current/UPAA/ , http://vocab.nerc.ac.uk/collection/S27/current/CS026908/ , http://vocab.nerc.ac.uk/collection/P25/current/CHLA/ , http://vocab.nerc.ac.uk/collection/P25/current/PHAEO/; https://www.bco-dmo.org/parameter/925; http://vocab.nerc.ac.uk/collection/P01/current/PHAEFMP1/, http://vocab.nerc.ac.uk/collection/P25/current/CHLA/ , http://vocab.nerc.ac.uk/collection/S27/current/CS002879/; https://www.bco-dmo.org/parameter/1194 , http://vocab.nerc.ac.uk/collection/S27/current/CS002877/; https://www.bco-dmo.org/parameter/1192; http://vocab.nerc.ac.uk/collection/P02/current/NTRI/, http://vocab.nerc.ac.uk/collection/S27/current/CS026905/ , https://pubchem.ncbi.nlm.nih.gov/compound/Domoic-acid , http://vocab.nerc.ac.uk/collection/P25/current/PHAEO/; https://www.bco-dmo.org/parameter/925; http://vocab.nerc.ac.uk/collection/P01/current/PHAEFMP1/, http://vocab.nerc.ac.uk/collection/S27/current/CS026904/ , http://vocab.nerc.ac.uk/collection/P25/current/SLCA/; https://www.bco-dmo.org/parameter/1209 , http://vocab.nerc.ac.uk/collection/P25/current/WTEMP/ , HABs-StearnsWharf\\_2009-07-27T13:53:00Z\\_Ammonium , HABs-StearnsWharf\\_2009-07-27T13:53:00Z\\_Avg\\_Chloro , HABs-StearnsWharf\\_2009-07-27T13:53:00Z\\_Avg\\_Phaeo , HABs-StearnsWharf\\_2009-07-27T13:53:00Z\\_Chl1 , HABs-StearnsWharf\\_2009-07-27T13:53:00Z\\_Nitrate , HABs-StearnsWharf\\_2009-07-27T13:53:00Z\\_Nitrite , HABs-StearnsWharf\\_2009-07-27T13:53:00Z\\_Nitrite\\_Nitrate , HABs-StearnsWharf\\_2009-07-27T13:53:00Z\\_pDA , HABs-StearnsWharf\\_2009-07-27T13:53:00Z\\_Phaeo1 , HABs-StearnsWharf\\_2009-07-27T13:53:00Z\\_Phosphate , HABs-StearnsWharf\\_2009-07-27T13:53:00Z\\_Silicate , HABs-StearnsWharf\\_2009-07-27T13:53:00Z\\_Temp , NA , NA , NA , NA , NA , NA , NA , NA , NA , NA , NA , NA & NA & NA & NA & NA & NA & NA & NA & NA\\\\\n", + "\\end{tabular}\n" + ], + "text/markdown": [ + "\n", + "A tibble: 1 × 71\n", + "\n", + "| infraphylum <chr> | date_year <int> | scientificNameID <chr> | scientificName <chr> | superdomainid <int> | dropped <lgl> | hab <lgl> | aphiaID <int> | decimalLatitude <dbl> | infraphylumid <int> | phylumid <int> | familyid <int> | occurrenceStatus <chr> | basisOfRecord <chr> | subkingdom <chr> | organismName <chr> | maximumDepthInMeters <int> | id <chr> | order <chr> | organismQuantity <chr> | dataset_id <chr> | decimalLongitude <dbl> | date_end <dbl> | occurrenceID <chr> | infrakingdom <chr> | subkingdomid <int> | date_start <dbl> | organismQuantityType <chr> | genus <chr> | eventDate <chr> | eventID <chr> | brackish <lgl> | infrakingdomid <int> | coordinateUncertaintyInMeters <chr> | absence <lgl> | eventRemarks <chr> | genusid <int> | taxonID <chr> | originalScientificName <chr> | marine <lgl> | minimumDepthInMeters <int> | subphylumid <int> | countryCode <chr> | date_mid <dbl> | class <chr> | orderid <int> | geodeticDatum <chr> | kingdom <chr> | superdomain <chr> | classid <int> | depth <dbl> | phylum <chr> | locationID <chr> | subphylum <chr> | family <chr> | kingdomid <int> | node_id <chr> | flags <chr> | sss <dbl> | shoredistance <int> | sst <dbl> | bathymetry <int> | mof <list> | subclassid <int> | terrestrial <lgl> | speciesid <int> | superorder <chr> | superorderid <int> | wrims <lgl> | species <chr> | subclass <chr> |\n", + "|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|\n", + "| Dinoflagellata | 2009 | (urn:lsid:marinespecies.org:taxname:109462) | Dinophysis | 1 | FALSE | TRUE | 109462 | 34.408 | 146203 | 450030 | 231772 | present | HumanObservation | Harosa | Dinophysis_spp | 1 | 00056f10-de45-4217-b8f8-92f3d2a906b5 | Dinophysiales | 100 | c9aaa0e9-8f6c-4553-a014-a857baba0680 | -119.685 | 1.248653e+12 | HABs-StearnsWharf_2009-07-27T13:53:00Z_Dinophysis_spp | Alveolata | 582419 | 1.248653e+12 | cells/L | Dinophysis | 2009-07-27T13:53:00Z | HABs-StearnsWharf_2009-07-27T13:53:00Z | TRUE | 536209 | 12 | FALSE | 20090727 | 109462 | urn:lsid:algaebase.org:taxname:6356 | Dinophysis | TRUE | 1 | 562620 | US | 1.248653e+12 | Dinophyceae | 109390 | EPSG:4326 WGS84 | Chromista | Biota | 19542 | 1 | Myzozoa | HABs-StearnsWharf | Dinozoa | Dinophysaceae | 7 | b7c47783-a020-4173-b390-7b57c4fa1426 | NA | 33.44 | 202 | 15.4 | 7 | NA , NA , NA , NA , NA , NA , NA , NA , NA , NA , NA , NA , NA , NA , NA , NA , NA , NA , NA , NA , NA , NA , NA , NA , 3.234 , 5.64 , 1.221 , 5.64 , 0.892 , 0.245 , 1.136 , 0 , 1.221 , 0.875 , 9.938 , 17 , NA , NA , NA , NA , NA , NA , NA , NA , NA , NA , NA , NA , NA , NA , NA , NA , NA , NA , NA , NA , NA , NA , NA , NA , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , NA , NA , NA , NA , NA , NA , NA , NA , NA , NA , NA , NA , uM , mg/m3 , mg/m3 , mg/m3 , uM , uM , uM , ng/mL , mg/m3 , uM , uM , Celsius , NA , NA , NA , NA , NA , NA , NA , NA , NA , NA , NA , NA , Ammonium , Avg_Chloro , Avg_Phaeo , Chl1 , Nitrate , Nitrite , Nitrite_Nitrate , pDA , Phaeo1 , Phosphate , Silicate , Temp , NA , http://vocab.nerc.ac.uk/collection/P06/current/UMMC/ , http://vocab.nerc.ac.uk/collection/P06/current/UMMC/ , http://vocab.nerc.ac.uk/collection/P06/current/UMMC/ , NA , NA , NA , NA , http://vocab.nerc.ac.uk/collection/P06/current/UMMC/ , NA , NA , http://vocab.nerc.ac.uk/collection/P06/current/UPAA/ , http://vocab.nerc.ac.uk/collection/S27/current/CS026908/ , http://vocab.nerc.ac.uk/collection/P25/current/CHLA/ , http://vocab.nerc.ac.uk/collection/P25/current/PHAEO/; https://www.bco-dmo.org/parameter/925; http://vocab.nerc.ac.uk/collection/P01/current/PHAEFMP1/, http://vocab.nerc.ac.uk/collection/P25/current/CHLA/ , http://vocab.nerc.ac.uk/collection/S27/current/CS002879/; https://www.bco-dmo.org/parameter/1194 , http://vocab.nerc.ac.uk/collection/S27/current/CS002877/; https://www.bco-dmo.org/parameter/1192; http://vocab.nerc.ac.uk/collection/P02/current/NTRI/, http://vocab.nerc.ac.uk/collection/S27/current/CS026905/ , https://pubchem.ncbi.nlm.nih.gov/compound/Domoic-acid , http://vocab.nerc.ac.uk/collection/P25/current/PHAEO/; https://www.bco-dmo.org/parameter/925; http://vocab.nerc.ac.uk/collection/P01/current/PHAEFMP1/, http://vocab.nerc.ac.uk/collection/S27/current/CS026904/ , http://vocab.nerc.ac.uk/collection/P25/current/SLCA/; https://www.bco-dmo.org/parameter/1209 , http://vocab.nerc.ac.uk/collection/P25/current/WTEMP/ , HABs-StearnsWharf_2009-07-27T13:53:00Z_Ammonium , HABs-StearnsWharf_2009-07-27T13:53:00Z_Avg_Chloro , HABs-StearnsWharf_2009-07-27T13:53:00Z_Avg_Phaeo , HABs-StearnsWharf_2009-07-27T13:53:00Z_Chl1 , HABs-StearnsWharf_2009-07-27T13:53:00Z_Nitrate , HABs-StearnsWharf_2009-07-27T13:53:00Z_Nitrite , HABs-StearnsWharf_2009-07-27T13:53:00Z_Nitrite_Nitrate , HABs-StearnsWharf_2009-07-27T13:53:00Z_pDA , HABs-StearnsWharf_2009-07-27T13:53:00Z_Phaeo1 , HABs-StearnsWharf_2009-07-27T13:53:00Z_Phosphate , HABs-StearnsWharf_2009-07-27T13:53:00Z_Silicate , HABs-StearnsWharf_2009-07-27T13:53:00Z_Temp , NA , NA , NA , NA , NA , NA , NA , NA , NA , NA , NA , NA | NA | NA | NA | NA | NA | NA | NA | NA |\n", + "\n" + ], + "text/plain": [ + " infraphylum date_year scientificNameID \n", + "1 Dinoflagellata 2009 (urn:lsid:marinespecies.org:taxname:109462)\n", + " scientificName superdomainid dropped hab aphiaID decimalLatitude\n", + "1 Dinophysis 1 FALSE TRUE 109462 34.408 \n", + " infraphylumid phylumid familyid occurrenceStatus basisOfRecord subkingdom\n", + "1 146203 450030 231772 present HumanObservation Harosa \n", + " organismName maximumDepthInMeters id \n", + "1 Dinophysis_spp 1 00056f10-de45-4217-b8f8-92f3d2a906b5\n", + " order organismQuantity dataset_id \n", + "1 Dinophysiales 100 c9aaa0e9-8f6c-4553-a014-a857baba0680\n", + " decimalLongitude date_end \n", + "1 -119.685 1.248653e+12\n", + " occurrenceID infrakingdom\n", + "1 HABs-StearnsWharf_2009-07-27T13:53:00Z_Dinophysis_spp Alveolata \n", + " subkingdomid date_start organismQuantityType genus \n", + "1 582419 1.248653e+12 cells/L Dinophysis\n", + " eventDate eventID brackish\n", + "1 2009-07-27T13:53:00Z HABs-StearnsWharf_2009-07-27T13:53:00Z TRUE \n", + " infrakingdomid coordinateUncertaintyInMeters absence eventRemarks genusid\n", + "1 536209 12 FALSE 20090727 109462 \n", + " taxonID originalScientificName marine\n", + "1 urn:lsid:algaebase.org:taxname:6356 Dinophysis TRUE \n", + " minimumDepthInMeters subphylumid countryCode date_mid class orderid\n", + "1 1 562620 US 1.248653e+12 Dinophyceae 109390 \n", + " geodeticDatum kingdom superdomain classid depth phylum locationID \n", + "1 EPSG:4326 WGS84 Chromista Biota 19542 1 Myzozoa HABs-StearnsWharf\n", + " subphylum family kingdomid node_id flags\n", + "1 Dinozoa Dinophysaceae 7 b7c47783-a020-4173-b390-7b57c4fa1426 NA \n", + " sss shoredistance sst bathymetry\n", + "1 33.44 202 15.4 7 \n", + " mof \n", + "1 NA , NA , NA , NA , NA , NA , NA , NA , NA , NA , NA , NA , NA , NA , NA , NA , NA , NA , NA , NA , NA , NA , NA , NA , 3.234 , 5.64 , 1.221 , 5.64 , 0.892 , 0.245 , 1.136 , 0 , 1.221 , 0.875 , 9.938 , 17 , NA , NA , NA , NA , NA , NA , NA , NA , NA , NA , NA , NA , NA , NA , NA , NA , NA , NA , NA , NA , NA , NA , NA , NA , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , NA , NA , NA , NA , NA , NA , NA , NA , NA , NA , NA , NA , uM , mg/m3 , mg/m3 , mg/m3 , uM , uM , uM , ng/mL , mg/m3 , uM , uM , Celsius , NA , NA , NA , NA , NA , NA , NA , NA , NA , NA , NA , NA , Ammonium , Avg_Chloro , Avg_Phaeo , Chl1 , Nitrate , Nitrite , Nitrite_Nitrate , pDA , Phaeo1 , Phosphate , Silicate , Temp , NA , http://vocab.nerc.ac.uk/collection/P06/current/UMMC/ , http://vocab.nerc.ac.uk/collection/P06/current/UMMC/ , http://vocab.nerc.ac.uk/collection/P06/current/UMMC/ , NA , NA , NA , NA , http://vocab.nerc.ac.uk/collection/P06/current/UMMC/ , NA , NA , http://vocab.nerc.ac.uk/collection/P06/current/UPAA/ , http://vocab.nerc.ac.uk/collection/S27/current/CS026908/ , http://vocab.nerc.ac.uk/collection/P25/current/CHLA/ , http://vocab.nerc.ac.uk/collection/P25/current/PHAEO/; https://www.bco-dmo.org/parameter/925; http://vocab.nerc.ac.uk/collection/P01/current/PHAEFMP1/, http://vocab.nerc.ac.uk/collection/P25/current/CHLA/ , http://vocab.nerc.ac.uk/collection/S27/current/CS002879/; https://www.bco-dmo.org/parameter/1194 , http://vocab.nerc.ac.uk/collection/S27/current/CS002877/; https://www.bco-dmo.org/parameter/1192; http://vocab.nerc.ac.uk/collection/P02/current/NTRI/, http://vocab.nerc.ac.uk/collection/S27/current/CS026905/ , https://pubchem.ncbi.nlm.nih.gov/compound/Domoic-acid , http://vocab.nerc.ac.uk/collection/P25/current/PHAEO/; https://www.bco-dmo.org/parameter/925; http://vocab.nerc.ac.uk/collection/P01/current/PHAEFMP1/, http://vocab.nerc.ac.uk/collection/S27/current/CS026904/ , http://vocab.nerc.ac.uk/collection/P25/current/SLCA/; https://www.bco-dmo.org/parameter/1209 , http://vocab.nerc.ac.uk/collection/P25/current/WTEMP/ , HABs-StearnsWharf_2009-07-27T13:53:00Z_Ammonium , HABs-StearnsWharf_2009-07-27T13:53:00Z_Avg_Chloro , HABs-StearnsWharf_2009-07-27T13:53:00Z_Avg_Phaeo , HABs-StearnsWharf_2009-07-27T13:53:00Z_Chl1 , HABs-StearnsWharf_2009-07-27T13:53:00Z_Nitrate , HABs-StearnsWharf_2009-07-27T13:53:00Z_Nitrite , HABs-StearnsWharf_2009-07-27T13:53:00Z_Nitrite_Nitrate , HABs-StearnsWharf_2009-07-27T13:53:00Z_pDA , HABs-StearnsWharf_2009-07-27T13:53:00Z_Phaeo1 , HABs-StearnsWharf_2009-07-27T13:53:00Z_Phosphate , HABs-StearnsWharf_2009-07-27T13:53:00Z_Silicate , HABs-StearnsWharf_2009-07-27T13:53:00Z_Temp , NA , NA , NA , NA , NA , NA , NA , NA , NA , NA , NA , NA \n", + " subclassid terrestrial speciesid superorder superorderid wrims species\n", + "1 NA NA NA NA NA NA NA \n", + " subclass\n", + "1 NA " + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# # make table bigger for review\n", + "options(repr.matrix.max.cols=100)\n", + "head(sccoos_occur,n = 1)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Note measurement or fact data are in `mof` column." + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
    \n", + "\t
  1. \n", + "\n", + "\n", + "\t\n", + "\t\n", + "\n", + "\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\n", + "
    A data.frame: 12 × 14
    measurementDeterminedBymeasurementAccuracymeasurementValuemeasurementRemarksmeasurementValueIDleveloccurrenceIDmeasurementUnitmeasurementDeterminedDatemeasurementTypemeasurementUnitIDmeasurementTypeIDmeasurementIDmeasurementMethod
    <lgl><lgl><chr><lgl><lgl><int><lgl><chr><lgl><chr><chr><chr><chr><lgl>
    1NANA3.234NANA1NAuM NAAmmonium NA http://vocab.nerc.ac.uk/collection/S27/current/CS026908/ HABs-StearnsWharf_2009-07-27T13:53:00Z_Ammonium NA
    2NANA5.64 NANA1NAmg/m3 NAAvg_Chloro http://vocab.nerc.ac.uk/collection/P06/current/UMMC/http://vocab.nerc.ac.uk/collection/P25/current/CHLA/ HABs-StearnsWharf_2009-07-27T13:53:00Z_Avg_Chloro NA
    3NANA1.221NANA1NAmg/m3 NAAvg_Phaeo http://vocab.nerc.ac.uk/collection/P06/current/UMMC/http://vocab.nerc.ac.uk/collection/P25/current/PHAEO/; https://www.bco-dmo.org/parameter/925; http://vocab.nerc.ac.uk/collection/P01/current/PHAEFMP1/HABs-StearnsWharf_2009-07-27T13:53:00Z_Avg_Phaeo NA
    4NANA5.64 NANA1NAmg/m3 NAChl1 http://vocab.nerc.ac.uk/collection/P06/current/UMMC/http://vocab.nerc.ac.uk/collection/P25/current/CHLA/ HABs-StearnsWharf_2009-07-27T13:53:00Z_Chl1 NA
    5NANA0.892NANA1NAuM NANitrate NA http://vocab.nerc.ac.uk/collection/S27/current/CS002879/; https://www.bco-dmo.org/parameter/1194 HABs-StearnsWharf_2009-07-27T13:53:00Z_Nitrate NA
    6NANA0.245NANA1NAuM NANitrite NA http://vocab.nerc.ac.uk/collection/S27/current/CS002877/; https://www.bco-dmo.org/parameter/1192; http://vocab.nerc.ac.uk/collection/P02/current/NTRI/HABs-StearnsWharf_2009-07-27T13:53:00Z_Nitrite NA
    7NANA1.136NANA1NAuM NANitrite_NitrateNA http://vocab.nerc.ac.uk/collection/S27/current/CS026905/ HABs-StearnsWharf_2009-07-27T13:53:00Z_Nitrite_NitrateNA
    8NANA0 NANA1NAng/mL NApDA NA https://pubchem.ncbi.nlm.nih.gov/compound/Domoic-acid HABs-StearnsWharf_2009-07-27T13:53:00Z_pDA NA
    9NANA1.221NANA1NAmg/m3 NAPhaeo1 http://vocab.nerc.ac.uk/collection/P06/current/UMMC/http://vocab.nerc.ac.uk/collection/P25/current/PHAEO/; https://www.bco-dmo.org/parameter/925; http://vocab.nerc.ac.uk/collection/P01/current/PHAEFMP1/HABs-StearnsWharf_2009-07-27T13:53:00Z_Phaeo1 NA
    10NANA0.875NANA1NAuM NAPhosphate NA http://vocab.nerc.ac.uk/collection/S27/current/CS026904/ HABs-StearnsWharf_2009-07-27T13:53:00Z_Phosphate NA
    11NANA9.938NANA1NAuM NASilicate NA http://vocab.nerc.ac.uk/collection/P25/current/SLCA/; https://www.bco-dmo.org/parameter/1209 HABs-StearnsWharf_2009-07-27T13:53:00Z_Silicate NA
    12NANA17 NANA1NACelsiusNATemp http://vocab.nerc.ac.uk/collection/P06/current/UPAA/http://vocab.nerc.ac.uk/collection/P25/current/WTEMP/ HABs-StearnsWharf_2009-07-27T13:53:00Z_Temp NA
    \n", + "
  2. \n", + "
\n" + ], + "text/latex": [ + "\\begin{enumerate}\n", + "\\item A data.frame: 12 × 14\n", + "\\begin{tabular}{r|llllllllllllll}\n", + " & measurementDeterminedBy & measurementAccuracy & measurementValue & measurementRemarks & measurementValueID & level & occurrenceID & measurementUnit & measurementDeterminedDate & measurementType & measurementUnitID & measurementTypeID & measurementID & measurementMethod\\\\\n", + " & & & & & & & & & & & & & & \\\\\n", + "\\hline\n", + "\t1 & NA & NA & 3.234 & NA & NA & 1 & NA & uM & NA & Ammonium & NA & http://vocab.nerc.ac.uk/collection/S27/current/CS026908/ & HABs-StearnsWharf\\_2009-07-27T13:53:00Z\\_Ammonium & NA\\\\\n", + "\t2 & NA & NA & 5.64 & NA & NA & 1 & NA & mg/m3 & NA & Avg\\_Chloro & http://vocab.nerc.ac.uk/collection/P06/current/UMMC/ & http://vocab.nerc.ac.uk/collection/P25/current/CHLA/ & HABs-StearnsWharf\\_2009-07-27T13:53:00Z\\_Avg\\_Chloro & NA\\\\\n", + "\t3 & NA & NA & 1.221 & NA & NA & 1 & NA & mg/m3 & NA & Avg\\_Phaeo & http://vocab.nerc.ac.uk/collection/P06/current/UMMC/ & http://vocab.nerc.ac.uk/collection/P25/current/PHAEO/; https://www.bco-dmo.org/parameter/925; http://vocab.nerc.ac.uk/collection/P01/current/PHAEFMP1/ & HABs-StearnsWharf\\_2009-07-27T13:53:00Z\\_Avg\\_Phaeo & NA\\\\\n", + "\t4 & NA & NA & 5.64 & NA & NA & 1 & NA & mg/m3 & NA & Chl1 & http://vocab.nerc.ac.uk/collection/P06/current/UMMC/ & http://vocab.nerc.ac.uk/collection/P25/current/CHLA/ & HABs-StearnsWharf\\_2009-07-27T13:53:00Z\\_Chl1 & NA\\\\\n", + "\t5 & NA & NA & 0.892 & NA & NA & 1 & NA & uM & NA & Nitrate & NA & http://vocab.nerc.ac.uk/collection/S27/current/CS002879/; https://www.bco-dmo.org/parameter/1194 & HABs-StearnsWharf\\_2009-07-27T13:53:00Z\\_Nitrate & NA\\\\\n", + "\t6 & NA & NA & 0.245 & NA & NA & 1 & NA & uM & NA & Nitrite & NA & http://vocab.nerc.ac.uk/collection/S27/current/CS002877/; https://www.bco-dmo.org/parameter/1192; http://vocab.nerc.ac.uk/collection/P02/current/NTRI/ & HABs-StearnsWharf\\_2009-07-27T13:53:00Z\\_Nitrite & NA\\\\\n", + "\t7 & NA & NA & 1.136 & NA & NA & 1 & NA & uM & NA & Nitrite\\_Nitrate & NA & http://vocab.nerc.ac.uk/collection/S27/current/CS026905/ & HABs-StearnsWharf\\_2009-07-27T13:53:00Z\\_Nitrite\\_Nitrate & NA\\\\\n", + "\t8 & NA & NA & 0 & NA & NA & 1 & NA & ng/mL & NA & pDA & NA & https://pubchem.ncbi.nlm.nih.gov/compound/Domoic-acid & HABs-StearnsWharf\\_2009-07-27T13:53:00Z\\_pDA & NA\\\\\n", + "\t9 & NA & NA & 1.221 & NA & NA & 1 & NA & mg/m3 & NA & Phaeo1 & http://vocab.nerc.ac.uk/collection/P06/current/UMMC/ & http://vocab.nerc.ac.uk/collection/P25/current/PHAEO/; https://www.bco-dmo.org/parameter/925; http://vocab.nerc.ac.uk/collection/P01/current/PHAEFMP1/ & HABs-StearnsWharf\\_2009-07-27T13:53:00Z\\_Phaeo1 & NA\\\\\n", + "\t10 & NA & NA & 0.875 & NA & NA & 1 & NA & uM & NA & Phosphate & NA & http://vocab.nerc.ac.uk/collection/S27/current/CS026904/ & HABs-StearnsWharf\\_2009-07-27T13:53:00Z\\_Phosphate & NA\\\\\n", + "\t11 & NA & NA & 9.938 & NA & NA & 1 & NA & uM & NA & Silicate & NA & http://vocab.nerc.ac.uk/collection/P25/current/SLCA/; https://www.bco-dmo.org/parameter/1209 & HABs-StearnsWharf\\_2009-07-27T13:53:00Z\\_Silicate & NA\\\\\n", + "\t12 & NA & NA & 17 & NA & NA & 1 & NA & Celsius & NA & Temp & http://vocab.nerc.ac.uk/collection/P06/current/UPAA/ & http://vocab.nerc.ac.uk/collection/P25/current/WTEMP/ & HABs-StearnsWharf\\_2009-07-27T13:53:00Z\\_Temp & NA\\\\\n", + "\\end{tabular}\n", + "\n", + "\\end{enumerate}\n" + ], + "text/markdown": [ + "1. \n", + "A data.frame: 12 × 14\n", + "\n", + "| | measurementDeterminedBy <lgl> | measurementAccuracy <lgl> | measurementValue <chr> | measurementRemarks <lgl> | measurementValueID <lgl> | level <int> | occurrenceID <lgl> | measurementUnit <chr> | measurementDeterminedDate <lgl> | measurementType <chr> | measurementUnitID <chr> | measurementTypeID <chr> | measurementID <chr> | measurementMethod <lgl> |\n", + "|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|\n", + "| 1 | NA | NA | 3.234 | NA | NA | 1 | NA | uM | NA | Ammonium | NA | http://vocab.nerc.ac.uk/collection/S27/current/CS026908/ | HABs-StearnsWharf_2009-07-27T13:53:00Z_Ammonium | NA |\n", + "| 2 | NA | NA | 5.64 | NA | NA | 1 | NA | mg/m3 | NA | Avg_Chloro | http://vocab.nerc.ac.uk/collection/P06/current/UMMC/ | http://vocab.nerc.ac.uk/collection/P25/current/CHLA/ | HABs-StearnsWharf_2009-07-27T13:53:00Z_Avg_Chloro | NA |\n", + "| 3 | NA | NA | 1.221 | NA | NA | 1 | NA | mg/m3 | NA | Avg_Phaeo | http://vocab.nerc.ac.uk/collection/P06/current/UMMC/ | http://vocab.nerc.ac.uk/collection/P25/current/PHAEO/; https://www.bco-dmo.org/parameter/925; http://vocab.nerc.ac.uk/collection/P01/current/PHAEFMP1/ | HABs-StearnsWharf_2009-07-27T13:53:00Z_Avg_Phaeo | NA |\n", + "| 4 | NA | NA | 5.64 | NA | NA | 1 | NA | mg/m3 | NA | Chl1 | http://vocab.nerc.ac.uk/collection/P06/current/UMMC/ | http://vocab.nerc.ac.uk/collection/P25/current/CHLA/ | HABs-StearnsWharf_2009-07-27T13:53:00Z_Chl1 | NA |\n", + "| 5 | NA | NA | 0.892 | NA | NA | 1 | NA | uM | NA | Nitrate | NA | http://vocab.nerc.ac.uk/collection/S27/current/CS002879/; https://www.bco-dmo.org/parameter/1194 | HABs-StearnsWharf_2009-07-27T13:53:00Z_Nitrate | NA |\n", + "| 6 | NA | NA | 0.245 | NA | NA | 1 | NA | uM | NA | Nitrite | NA | http://vocab.nerc.ac.uk/collection/S27/current/CS002877/; https://www.bco-dmo.org/parameter/1192; http://vocab.nerc.ac.uk/collection/P02/current/NTRI/ | HABs-StearnsWharf_2009-07-27T13:53:00Z_Nitrite | NA |\n", + "| 7 | NA | NA | 1.136 | NA | NA | 1 | NA | uM | NA | Nitrite_Nitrate | NA | http://vocab.nerc.ac.uk/collection/S27/current/CS026905/ | HABs-StearnsWharf_2009-07-27T13:53:00Z_Nitrite_Nitrate | NA |\n", + "| 8 | NA | NA | 0 | NA | NA | 1 | NA | ng/mL | NA | pDA | NA | https://pubchem.ncbi.nlm.nih.gov/compound/Domoic-acid | HABs-StearnsWharf_2009-07-27T13:53:00Z_pDA | NA |\n", + "| 9 | NA | NA | 1.221 | NA | NA | 1 | NA | mg/m3 | NA | Phaeo1 | http://vocab.nerc.ac.uk/collection/P06/current/UMMC/ | http://vocab.nerc.ac.uk/collection/P25/current/PHAEO/; https://www.bco-dmo.org/parameter/925; http://vocab.nerc.ac.uk/collection/P01/current/PHAEFMP1/ | HABs-StearnsWharf_2009-07-27T13:53:00Z_Phaeo1 | NA |\n", + "| 10 | NA | NA | 0.875 | NA | NA | 1 | NA | uM | NA | Phosphate | NA | http://vocab.nerc.ac.uk/collection/S27/current/CS026904/ | HABs-StearnsWharf_2009-07-27T13:53:00Z_Phosphate | NA |\n", + "| 11 | NA | NA | 9.938 | NA | NA | 1 | NA | uM | NA | Silicate | NA | http://vocab.nerc.ac.uk/collection/P25/current/SLCA/; https://www.bco-dmo.org/parameter/1209 | HABs-StearnsWharf_2009-07-27T13:53:00Z_Silicate | NA |\n", + "| 12 | NA | NA | 17 | NA | NA | 1 | NA | Celsius | NA | Temp | http://vocab.nerc.ac.uk/collection/P06/current/UPAA/ | http://vocab.nerc.ac.uk/collection/P25/current/WTEMP/ | HABs-StearnsWharf_2009-07-27T13:53:00Z_Temp | NA |\n", + "\n", + "\n", + "\n", + "\n" + ], + "text/plain": [ + "[[1]]\n", + " measurementDeterminedBy measurementAccuracy measurementValue\n", + "1 NA NA 3.234\n", + "2 NA NA 5.64\n", + "3 NA NA 1.221\n", + "4 NA NA 5.64\n", + "5 NA NA 0.892\n", + "6 NA NA 0.245\n", + "7 NA NA 1.136\n", + "8 NA NA 0\n", + "9 NA NA 1.221\n", + "10 NA NA 0.875\n", + "11 NA NA 9.938\n", + "12 NA NA 17\n", + " measurementRemarks measurementValueID level occurrenceID measurementUnit\n", + "1 NA NA 1 NA uM\n", + "2 NA NA 1 NA mg/m3\n", + "3 NA NA 1 NA mg/m3\n", + "4 NA NA 1 NA mg/m3\n", + "5 NA NA 1 NA uM\n", + "6 NA NA 1 NA uM\n", + "7 NA NA 1 NA uM\n", + "8 NA NA 1 NA ng/mL\n", + "9 NA NA 1 NA mg/m3\n", + "10 NA NA 1 NA uM\n", + "11 NA NA 1 NA uM\n", + "12 NA NA 1 NA Celsius\n", + " measurementDeterminedDate measurementType\n", + "1 NA Ammonium\n", + "2 NA Avg_Chloro\n", + "3 NA Avg_Phaeo\n", + "4 NA Chl1\n", + "5 NA Nitrate\n", + "6 NA Nitrite\n", + "7 NA Nitrite_Nitrate\n", + "8 NA pDA\n", + "9 NA Phaeo1\n", + "10 NA Phosphate\n", + "11 NA Silicate\n", + "12 NA Temp\n", + " measurementUnitID\n", + "1 NA\n", + "2 http://vocab.nerc.ac.uk/collection/P06/current/UMMC/\n", + "3 http://vocab.nerc.ac.uk/collection/P06/current/UMMC/\n", + "4 http://vocab.nerc.ac.uk/collection/P06/current/UMMC/\n", + "5 NA\n", + "6 NA\n", + "7 NA\n", + "8 NA\n", + "9 http://vocab.nerc.ac.uk/collection/P06/current/UMMC/\n", + "10 NA\n", + "11 NA\n", + "12 http://vocab.nerc.ac.uk/collection/P06/current/UPAA/\n", + " measurementTypeID\n", + "1 http://vocab.nerc.ac.uk/collection/S27/current/CS026908/\n", + "2 http://vocab.nerc.ac.uk/collection/P25/current/CHLA/\n", + "3 http://vocab.nerc.ac.uk/collection/P25/current/PHAEO/; https://www.bco-dmo.org/parameter/925; http://vocab.nerc.ac.uk/collection/P01/current/PHAEFMP1/\n", + "4 http://vocab.nerc.ac.uk/collection/P25/current/CHLA/\n", + "5 http://vocab.nerc.ac.uk/collection/S27/current/CS002879/; https://www.bco-dmo.org/parameter/1194\n", + "6 http://vocab.nerc.ac.uk/collection/S27/current/CS002877/; https://www.bco-dmo.org/parameter/1192; http://vocab.nerc.ac.uk/collection/P02/current/NTRI/\n", + "7 http://vocab.nerc.ac.uk/collection/S27/current/CS026905/\n", + "8 https://pubchem.ncbi.nlm.nih.gov/compound/Domoic-acid\n", + "9 http://vocab.nerc.ac.uk/collection/P25/current/PHAEO/; https://www.bco-dmo.org/parameter/925; http://vocab.nerc.ac.uk/collection/P01/current/PHAEFMP1/\n", + "10 http://vocab.nerc.ac.uk/collection/S27/current/CS026904/\n", + "11 http://vocab.nerc.ac.uk/collection/P25/current/SLCA/; https://www.bco-dmo.org/parameter/1209\n", + "12 http://vocab.nerc.ac.uk/collection/P25/current/WTEMP/\n", + " measurementID measurementMethod\n", + "1 HABs-StearnsWharf_2009-07-27T13:53:00Z_Ammonium NA\n", + "2 HABs-StearnsWharf_2009-07-27T13:53:00Z_Avg_Chloro NA\n", + "3 HABs-StearnsWharf_2009-07-27T13:53:00Z_Avg_Phaeo NA\n", + "4 HABs-StearnsWharf_2009-07-27T13:53:00Z_Chl1 NA\n", + "5 HABs-StearnsWharf_2009-07-27T13:53:00Z_Nitrate NA\n", + "6 HABs-StearnsWharf_2009-07-27T13:53:00Z_Nitrite NA\n", + "7 HABs-StearnsWharf_2009-07-27T13:53:00Z_Nitrite_Nitrate NA\n", + "8 HABs-StearnsWharf_2009-07-27T13:53:00Z_pDA NA\n", + "9 HABs-StearnsWharf_2009-07-27T13:53:00Z_Phaeo1 NA\n", + "10 HABs-StearnsWharf_2009-07-27T13:53:00Z_Phosphate NA\n", + "11 HABs-StearnsWharf_2009-07-27T13:53:00Z_Silicate NA\n", + "12 HABs-StearnsWharf_2009-07-27T13:53:00Z_Temp NA\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# here are the mof observations associated with the first occurrence record above.\n", + "head(sccoos_occur$mof,n = 1)\n", + "# note measurementValue, measurementUnit and measurementType columns." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Create a map of all SCCOOS observations for the dataset" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "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", + "\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": [ + "# create a map\n", + "library(htmlwidgets)\n", + "library(IRdisplay)\n", + "\n", + "m = map_leaflet(sccoos_occur)\n", + "m\n", + "# saveWidget(m, \"sccoos_data.html\", selfcontained = FALSE)\n", + "# display_html(\"\")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Query OBIS for _Lingulodinium polyedra_ and map out all observations (excluding SCCOOS' contributions)\n", + "Now that we have all the SCCOOS occurrence and mof observations, we'd like to look at one species and see SCCOOS' contributions to OBIS for that species." + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Retrieved 5000 records of approximately 10219 (48%)\n", + "Retrieved 10000 records of approximately 10219 (97%)\n", + "Retrieved 10219 records of approximately 10219 (100%)\n" + ] + }, + { + "data": { + "text/html": [ + "\n", + "\n", + "\t\n", + "\t\t\n", + "\t\t\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": [ + "# get all Lingulodinium polyedra occurrences from OBIS\n", + "lingpoly_occur <- occurrence(\n", + " scientificname = species\n", + ")\n", + "\n", + "# or by taxon id from AphiaID: urn:lsid:algaebase.org:taxname:233592\n", + "# could use rtaxize 'get_wormsid' here or obistools 'match_taxa' to search on taxonid from species name? \n", + "# lingpoly_occur <- occurrence(\n", + "# taxonid = '233592'\n", + "# )\n", + "\n", + "# remove sccoos entries from full occurrence response\n", + "lingpoly_occur <- lingpoly_occur[!lingpoly_occur$dataset_id==sccoos_dataset_id,]\n", + "\n", + "# create a map of all lingulodinium polyedra, excluding sccoos contributions\n", + "m = map_leaflet(lingpoly_occur)\n", + "m\n", + "# saveWidget(m, \"lingpoly_data.html\", selfcontained = FALSE)\n", + "# display_html(\"\")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Subset SCCOOS response for species and move the mof data into occurrence data table" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Rows: 1,136\n", + "Columns: 86\n", + "$ infraphylum \u001b[3m\u001b[90m\u001b[39m\u001b[23m \"Dinoflagellata\", \"Dinoflagellata\", \"Din~\n", + "$ date_year \u001b[3m\u001b[90m\u001b[39m\u001b[23m 2018, 2016, 2017, 2010, 2019, 2019, 2019~\n", + "$ scientificNameID \u001b[3m\u001b[90m\u001b[39m\u001b[23m \"(urn:lsid:marinespecies.org:taxname:233~\n", + "$ scientificName \u001b[3m\u001b[90m\u001b[39m\u001b[23m \"Lingulodinium polyedra\", \"Lingulodinium~\n", + "$ superdomainid \u001b[3m\u001b[90m\u001b[39m\u001b[23m 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1~\n", + "$ dropped \u001b[3m\u001b[90m\u001b[39m\u001b[23m FALSE, FALSE, FALSE, FALSE, FALSE, FALSE~\n", + "$ hab \u001b[3m\u001b[90m\u001b[39m\u001b[23m TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE~\n", + "$ aphiaID \u001b[3m\u001b[90m\u001b[39m\u001b[23m 233592, 233592, 233592, 233592, 233592, ~\n", + "$ decimalLatitude \u001b[3m\u001b[90m\u001b[39m\u001b[23m 35.17000, 32.86700, 34.00800, 34.40800, ~\n", + "$ infraphylumid \u001b[3m\u001b[90m\u001b[39m\u001b[23m 146203, 146203, 146203, 146203, 146203, ~\n", + "$ phylumid \u001b[3m\u001b[90m\u001b[39m\u001b[23m 450030, 450030, 450030, 450030, 450030, ~\n", + "$ familyid \u001b[3m\u001b[90m\u001b[39m\u001b[23m 109428, 109428, 109428, 109428, 109428, ~\n", + "$ occurrenceStatus \u001b[3m\u001b[90m\u001b[39m\u001b[23m \"present\", \"present\", \"present\", \"presen~\n", + "$ basisOfRecord \u001b[3m\u001b[90m\u001b[39m\u001b[23m \"HumanObservation\", \"HumanObservation\", ~\n", + "$ subkingdom \u001b[3m\u001b[90m\u001b[39m\u001b[23m \"Harosa\", \"Harosa\", \"Harosa\", \"Harosa\", ~\n", + "$ organismName \u001b[3m\u001b[90m\u001b[39m\u001b[23m \"Lingulodinium_polyedra\", \"Lingulodinium~\n", + "$ maximumDepthInMeters \u001b[3m\u001b[90m\u001b[39m\u001b[23m 1, NA, NA, 1, 1, NA, NA, NA, 5, NA, NA, ~\n", + "$ id \u001b[3m\u001b[90m\u001b[39m\u001b[23m \"00289095-a0b2-4fb0-8fbe-b89329e9cf9e\", ~\n", + "$ order \u001b[3m\u001b[90m\u001b[39m\u001b[23m \"Gonyaulacales\", \"Gonyaulacales\", \"Gonya~\n", + "$ organismQuantity \u001b[3m\u001b[90m\u001b[39m\u001b[23m 2132.3070, 272.0000, 5236.0000, 7300.000~\n", + "$ dataset_id \u001b[3m\u001b[90m\u001b[39m\u001b[23m \"c9aaa0e9-8f6c-4553-a014-a857baba0680\", ~\n", + "$ decimalLongitude \u001b[3m\u001b[90m\u001b[39m\u001b[23m -120.7410, -117.2570, -118.4990, -119.68~\n", + "$ date_end \u001b[3m\u001b[90m\u001b[39m\u001b[23m 1.522022e+12, 1.462752e+12, 1.514160e+12~\n", + "$ occurrenceID \u001b[3m\u001b[90m\u001b[39m\u001b[23m \"HABs-CalPoly_2018-03-26T23:45:00Z_Lingu~\n", + "$ infrakingdom \u001b[3m\u001b[90m\u001b[39m\u001b[23m \"Alveolata\", \"Alveolata\", \"Alveolata\", \"~\n", + "$ subkingdomid \u001b[3m\u001b[90m\u001b[39m\u001b[23m 582419, 582419, 582419, 582419, 582419, ~\n", + "$ date_start \u001b[3m\u001b[90m\u001b[39m\u001b[23m 1.522022e+12, 1.462752e+12, 1.514160e+12~\n", + "$ organismQuantityType \u001b[3m\u001b[90m\u001b[39m\u001b[23m \"cells/L\", \"cells/L\", \"cells/L\", \"cells/~\n", + "$ genus \u001b[3m\u001b[90m\u001b[39m\u001b[23m \"Lingulodinium\", \"Lingulodinium\", \"Lingu~\n", + "$ eventDate \u001b[3m\u001b[90m\u001b[39m\u001b[23m \"2018-03-26T23:45:00Z\", \"2016-05-09T16:1~\n", + "$ eventID \u001b[3m\u001b[90m\u001b[39m\u001b[23m \"HABs-CalPoly_2018-03-26T23:45:00Z\", \"HA~\n", + "$ brackish \u001b[3m\u001b[90m\u001b[39m\u001b[23m NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, ~\n", + "$ infrakingdomid \u001b[3m\u001b[90m\u001b[39m\u001b[23m 536209, 536209, 536209, 536209, 536209, ~\n", + "$ coordinateUncertaintyInMeters \u001b[3m\u001b[90m\u001b[39m\u001b[23m \"30\", \"5\", \"5\", \"12\", \"12\", \"5\", \"5\", \"5~\n", + "$ absence \u001b[3m\u001b[90m\u001b[39m\u001b[23m FALSE, FALSE, FALSE, FALSE, FALSE, FALSE~\n", + "$ eventRemarks \u001b[3m\u001b[90m\u001b[39m\u001b[23m \"CP180326\", \"20160509\", \"NA\", \"20100630\"~\n", + "$ genusid \u001b[3m\u001b[90m\u001b[39m\u001b[23m 231799, 231799, 231799, 231799, 231799, ~\n", + "$ taxonID \u001b[3m\u001b[90m\u001b[39m\u001b[23m \"urn:lsid:algaebase.org:taxname:50026\", ~\n", + "$ originalScientificName \u001b[3m\u001b[90m\u001b[39m\u001b[23m \"Lingulodinium polyedra\", \"Lingulodinium~\n", + "$ marine \u001b[3m\u001b[90m\u001b[39m\u001b[23m TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE~\n", + "$ minimumDepthInMeters \u001b[3m\u001b[90m\u001b[39m\u001b[23m 1, NA, NA, 1, 1, NA, NA, NA, 5, NA, NA, ~\n", + "$ subphylumid \u001b[3m\u001b[90m\u001b[39m\u001b[23m 562620, 562620, 562620, 562620, 562620, ~\n", + "$ countryCode \u001b[3m\u001b[90m\u001b[39m\u001b[23m \"US\", \"US\", \"US\", \"US\", \"US\", \"US\", \"US\"~\n", + "$ date_mid \u001b[3m\u001b[90m\u001b[39m\u001b[23m 1.522022e+12, 1.462752e+12, 1.514160e+12~\n", + "$ class \u001b[3m\u001b[90m\u001b[39m\u001b[23m \"Dinophyceae\", \"Dinophyceae\", \"Dinophyce~\n", + "$ orderid \u001b[3m\u001b[90m\u001b[39m\u001b[23m 109391, 109391, 109391, 109391, 109391, ~\n", + "$ geodeticDatum \u001b[3m\u001b[90m\u001b[39m\u001b[23m \"EPSG:4326 WGS84\", \"EPSG:4326 WGS84\", \"E~\n", + "$ kingdom \u001b[3m\u001b[90m\u001b[39m\u001b[23m \"Chromista\", \"Chromista\", \"Chromista\", \"~\n", + "$ superdomain \u001b[3m\u001b[90m\u001b[39m\u001b[23m \"Biota\", \"Biota\", \"Biota\", \"Biota\", \"Bio~\n", + "$ classid \u001b[3m\u001b[90m\u001b[39m\u001b[23m 19542, 19542, 19542, 19542, 19542, 19542~\n", + "$ depth \u001b[3m\u001b[90m\u001b[39m\u001b[23m 1, NA, NA, 1, 1, NA, NA, NA, 5, NA, NA, ~\n", + "$ phylum \u001b[3m\u001b[90m\u001b[39m\u001b[23m \"Myzozoa\", \"Myzozoa\", \"Myzozoa\", \"Myzozo~\n", + "$ locationID \u001b[3m\u001b[90m\u001b[39m\u001b[23m \"HABs-CalPoly\", \"HABs-ScrippsPier\", \"HAB~\n", + "$ subphylum \u001b[3m\u001b[90m\u001b[39m\u001b[23m \"Dinozoa\", \"Dinozoa\", \"Dinozoa\", \"Dinozo~\n", + "$ family \u001b[3m\u001b[90m\u001b[39m\u001b[23m \"Gonyaulacaceae\", \"Gonyaulacaceae\", \"Gon~\n", + "$ kingdomid \u001b[3m\u001b[90m\u001b[39m\u001b[23m 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7~\n", + "$ node_id \u001b[3m\u001b[90m\u001b[39m\u001b[23m \"b7c47783-a020-4173-b390-7b57c4fa1426\", ~\n", + "$ flags \u001b[3m\u001b[90m\u001b[39m\u001b[23m NA, \"NO_DEPTH\", \"NO_DEPTH\", NA, NA, \"NO_~\n", + "$ sss \u001b[3m\u001b[90m\u001b[39m\u001b[23m NA, 33.25, NA, 33.44, 33.44, 33.25, 33.4~\n", + "$ shoredistance \u001b[3m\u001b[90m\u001b[39m\u001b[23m 871, 0, 124, 202, 202, 0, 181, 124, 205,~\n", + "$ sst \u001b[3m\u001b[90m\u001b[39m\u001b[23m NA, 17.70, NA, 15.40, 15.40, 17.70, 17.3~\n", + "$ bathymetry \u001b[3m\u001b[90m\u001b[39m\u001b[23m 8, -19, -1, 7, 7, -19, 7, -1, 6, -1, -1,~\n", + "$ subclassid \u001b[3m\u001b[90m\u001b[39m\u001b[23m NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, ~\n", + "$ terrestrial \u001b[3m\u001b[90m\u001b[39m\u001b[23m FALSE, FALSE, FALSE, FALSE, FALSE, FALSE~\n", + "$ speciesid \u001b[3m\u001b[90m\u001b[39m\u001b[23m 233592, 233592, 233592, 233592, 233592, ~\n", + "$ superorder \u001b[3m\u001b[90m\u001b[39m\u001b[23m NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, ~\n", + "$ superorderid \u001b[3m\u001b[90m\u001b[39m\u001b[23m NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, ~\n", + "$ wrims \u001b[3m\u001b[90m\u001b[39m\u001b[23m NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, ~\n", + "$ species \u001b[3m\u001b[90m\u001b[39m\u001b[23m \"Lingulodinium polyedra\", \"Lingulodinium~\n", + "$ subclass \u001b[3m\u001b[90m\u001b[39m\u001b[23m NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, ~\n", + "$ Ammonium \u001b[3m\u001b[90m\u001b[39m\u001b[23m NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, ~\n", + "$ Avg_Chloro \u001b[3m\u001b[90m\u001b[39m\u001b[23m NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, ~\n", + "$ Avg_Phaeo \u001b[3m\u001b[90m\u001b[39m\u001b[23m NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, ~\n", + "$ Chl1 \u001b[3m\u001b[90m\u001b[39m\u001b[23m NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, ~\n", + "$ Chl2 \u001b[3m\u001b[90m\u001b[39m\u001b[23m NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, ~\n", + "$ Nitrate \u001b[3m\u001b[90m\u001b[39m\u001b[23m NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, ~\n", + "$ Nitrite \u001b[3m\u001b[90m\u001b[39m\u001b[23m NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, ~\n", + "$ Nitrite_Nitrate \u001b[3m\u001b[90m\u001b[39m\u001b[23m NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, ~\n", + "$ pDA \u001b[3m\u001b[90m\u001b[39m\u001b[23m NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, ~\n", + "$ Phaeo1 \u001b[3m\u001b[90m\u001b[39m\u001b[23m NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, ~\n", + "$ Phaeo2 \u001b[3m\u001b[90m\u001b[39m\u001b[23m NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, ~\n", + "$ Phosphate \u001b[3m\u001b[90m\u001b[39m\u001b[23m NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, ~\n", + "$ Silicate \u001b[3m\u001b[90m\u001b[39m\u001b[23m NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, ~\n", + "$ Temp \u001b[3m\u001b[90m\u001b[39m\u001b[23m 12.10, 18.90, 16.10, 16.50, 18.60, 16.90~\n", + "$ Salinity \u001b[3m\u001b[90m\u001b[39m\u001b[23m NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, ~\n", + "$ dateTime \u001b[3m\u001b[90m\u001b[39m\u001b[23m 2018-03-26, 2016-05-09, 2017-12-25, 201~\n" + ] + } + ], + "source": [ + "# build a character list of all the unique measurement or fact types.\n", + "sccoos_lingpoly_occur <- sccoos_occur[ which(sccoos_occur$scientificName == species), ]\n", + "\n", + "for (j in 1:length(sccoos_lingpoly_occur$mof)){\n", + " if (j == 1){\n", + " measurementTypes <- sccoos_lingpoly_occur$mof[[j]]$measurementType\n", + " } else {\n", + " measurementTypes <- unique(c(measurementTypes, sccoos_lingpoly_occur$mof[[j]]$measurementType))\n", + " }\n", + "}\n", + "\n", + "# add columns for all potential mof types\n", + "sccoos_lingpoly_occur[,measurementTypes] <- \"\"\n", + "\n", + "## Populate mof_tbl with mof observations\n", + "for (i in 1:length(sccoos_lingpoly_occur$mof)){\n", + " for (j in 1:length(sccoos_lingpoly_occur$mof[[i]])){\n", + " for (var in measurementTypes){\n", + " if ( length(sccoos_lingpoly_occur$mof[[i]]$measurementType[j]) == 0 || is.na(sccoos_lingpoly_occur$mof[[i]]$measurementType[j])) {\n", + " } else{\n", + " if ( sccoos_lingpoly_occur$mof[[i]]$measurementType[j] == var ){\n", + " #print(paste(\"sccoos_lingpoly_occur$mof[[\",i,\"]]$measurementType[\",j,\"] =\", sccoos_lingpoly_occur$mof[[i]]$measurementType[j],\" = \", sccoos_lingpoly_occur$mof[[i]]$measurementValue[j]))\n", + " sccoos_lingpoly_occur[i,var] <- sccoos_lingpoly_occur$mof[[i]]$measurementValue[j]\n", + " } else {\n", + " sccoos_lingpoly_occur[i,var] <- NA\n", + " } \n", + " }\n", + " }\n", + " }\n", + "}\n", + "\n", + "# convert mofs to doubles\n", + "measurementTypes <- c(\"organismQuantity\", \"sss\", \"sst\", \"bathymetry\", measurementTypes)\n", + "sccoos_lingpoly_occur[ ,measurementTypes] <- apply(sccoos_lingpoly_occur[ ,measurementTypes], 2, function(x) as.double(x))\n", + "sccoos_lingpoly_occur$dateTime <- as.Date(sccoos_lingpoly_occur$eventDate, format = \"%Y-%m-%dT%H:%M:%SZ\", tz=utc)\n", + "\n", + "# collect column names and drop 'mof' column from list (we don't need it anymore):\n", + "cols <- colnames(sccoos_lingpoly_occur)\n", + "cols <- cols[cols!='mof']\n", + "sccoos_lingpoly_occur <- sccoos_lingpoly_occur[cols]\n", + "\n", + "# What data are in our new data table?\n", + "glimpse(sccoos_lingpoly_occur)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Group observations by location and print out some statistics" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + "\n", + "\n", + "\t\n", + "\t\n", + "\n", + "\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\n", + "
A tibble: 6 × 7
locationIDnTempSalinityorganismQuantitystartDateendDate
<chr><int><dbl><dbl><dbl><date><date>
HABs-CalPoly 11915.09161NaN 464842.92008-08-192021-09-07
HABs-MontereyWharf 6214.41680NaN 39570.02012-06-272020-02-26
HABs-NewportPier 17917.78444NaN 852749.02008-07-142021-08-30
HABs-SantaMonicaPier31117.78664NaN16788384.02008-06-302021-08-23
HABs-ScrippsPier 17717.58588NaN 1528597.02011-01-102020-03-02
HABs-StearnsWharf 28816.39645NaN 389358.02008-06-302021-07-12
\n" + ], + "text/latex": [ + "A tibble: 6 × 7\n", + "\\begin{tabular}{lllllll}\n", + " locationID & n & Temp & Salinity & organismQuantity & startDate & endDate\\\\\n", + " & & & & & & \\\\\n", + "\\hline\n", + "\t HABs-CalPoly & 119 & 15.09161 & NaN & 464842.9 & 2008-08-19 & 2021-09-07\\\\\n", + "\t HABs-MontereyWharf & 62 & 14.41680 & NaN & 39570.0 & 2012-06-27 & 2020-02-26\\\\\n", + "\t HABs-NewportPier & 179 & 17.78444 & NaN & 852749.0 & 2008-07-14 & 2021-08-30\\\\\n", + "\t HABs-SantaMonicaPier & 311 & 17.78664 & NaN & 16788384.0 & 2008-06-30 & 2021-08-23\\\\\n", + "\t HABs-ScrippsPier & 177 & 17.58588 & NaN & 1528597.0 & 2011-01-10 & 2020-03-02\\\\\n", + "\t HABs-StearnsWharf & 288 & 16.39645 & NaN & 389358.0 & 2008-06-30 & 2021-07-12\\\\\n", + "\\end{tabular}\n" + ], + "text/markdown": [ + "\n", + "A tibble: 6 × 7\n", + "\n", + "| locationID <chr> | n <int> | Temp <dbl> | Salinity <dbl> | organismQuantity <dbl> | startDate <date> | endDate <date> |\n", + "|---|---|---|---|---|---|---|\n", + "| HABs-CalPoly | 119 | 15.09161 | NaN | 464842.9 | 2008-08-19 | 2021-09-07 |\n", + "| HABs-MontereyWharf | 62 | 14.41680 | NaN | 39570.0 | 2012-06-27 | 2020-02-26 |\n", + "| HABs-NewportPier | 179 | 17.78444 | NaN | 852749.0 | 2008-07-14 | 2021-08-30 |\n", + "| HABs-SantaMonicaPier | 311 | 17.78664 | NaN | 16788384.0 | 2008-06-30 | 2021-08-23 |\n", + "| HABs-ScrippsPier | 177 | 17.58588 | NaN | 1528597.0 | 2011-01-10 | 2020-03-02 |\n", + "| HABs-StearnsWharf | 288 | 16.39645 | NaN | 389358.0 | 2008-06-30 | 2021-07-12 |\n", + "\n" + ], + "text/plain": [ + " locationID n Temp Salinity organismQuantity startDate \n", + "1 HABs-CalPoly 119 15.09161 NaN 464842.9 2008-08-19\n", + "2 HABs-MontereyWharf 62 14.41680 NaN 39570.0 2012-06-27\n", + "3 HABs-NewportPier 179 17.78444 NaN 852749.0 2008-07-14\n", + "4 HABs-SantaMonicaPier 311 17.78664 NaN 16788384.0 2008-06-30\n", + "5 HABs-ScrippsPier 177 17.58588 NaN 1528597.0 2011-01-10\n", + "6 HABs-StearnsWharf 288 16.39645 NaN 389358.0 2008-06-30\n", + " endDate \n", + "1 2021-09-07\n", + "2 2020-02-26\n", + "3 2021-08-30\n", + "4 2021-08-23\n", + "5 2020-03-02\n", + "6 2021-07-12" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# create a grouped data table\n", + "by_location <- sccoos_lingpoly_occur %>% group_by(locationID)\n", + "\n", + "by_location %>%\n", + " summarise(\n", + " n = n(),\n", + " Temp = mean(Temp, na.rm = TRUE),\n", + " Salinity = mean(Salinity, na.rm = TRUE),\n", + " organismQuantity = max(organismQuantity, na.rm = TRUE),\n", + " startDate = min(dateTime, na.rm = TRUE),\n", + " endDate = max(dateTime, na.rm = TRUE)\n", + " )\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Create time-series plots for observations, colored by location" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Warning message:\n", + "\"\u001b[1m\u001b[22mRemoved 44 rows containing missing values (`geom_line()`).\"\n" + ] + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "plot without title" + ] + }, + "metadata": { + "image/png": { + "height": 420, + "width": 420 + } + }, + "output_type": "display_data" + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAA0gAAANICAMAAADKOT/pAAAAS1BMVEUAAAAAujgAv8QzMzNN\nTU1hnP9oaGh8fHyMjIyampqnp6eysrK3nwC9vb3Hx8fQ0NDZ2dnh4eHp6enr6+vw8PDy8vL1\nZOP4dm3///9Uo74CAAAACXBIWXMAABJ0AAASdAHeZh94AAAgAElEQVR4nO2di1ajygIF2xxM\n1DmjTo7X4f+/9AaSDnRDxwQ3Cu6qtca8SMnYlBCMbagB4NOE714BgJ8AIQEIICQAAYQEIICQ\nAAQQEoAAQgIQQEgAAmYN6T8dShfama1zblNLhZDstYSkgJDstYSkgJDstYSkgJDstYSkgLN2\nAALYI9lr2SMpICR7LSEpICR7LSEpICR7LSEpICR7LSEpICR7LSEpICR7LSEpICR7LSEpICR7\nLSEpICR7LSEpICR7LSEpICR7LSEpICR7LSEpICR7LSEpICR7LSEpICR7LSEpICR7LSEpICR7\nLSEpICR7LSEpICR7LSEpICR7LSEpICR7LSEpICR7LSEpICR7LSEpICR7LSEpICR7LSEpICR7\nLSEpICR7LSEpICR7LSEpICR7bd+60RgNISR7LSEpICR7LSEpICR7LSEpICR7LSEpICR7LSEp\nICR7LSEpICR7LSEpICR7LSEpICR7LSEpICR7LSEpICR7LSEpICR7LSEpICR7LSEpICR7LSEp\nICR7LSEpICR7LSEpICR7LSEpICR7LSEpICR7LSEpICR7LSEpICR7LSEpICR7LSEpICR7LSEp\nICR7LSEpICR7LSEpICR7LSEpICR7LSEpICR7LSEpICR7LSEpICR7LSEpICR7LSEpICR7LSEp\nICR7LSEpICR7LSEpICR7LSEpICR7LSEpICR7LSEpICR7LSEpICR7LSEpICR7LSEpICR7LSEp\nICR7LSEpICR7LSEpICR7LSEpICR7LSEpICR7LSEpICR7LSEpICR7LSEpICR7LSEpICR7LSEp\nICR7LSEpICR7LSEpICR7LSEpICR7LSEpICR7LSEpICR7LSEpICR7LSEpICR7LSEpICR7LSEp\nICR7LSEpICR7LSEpICR7LSEpICR7LSEpICR7LSEpICR7LSEpICR7LSEpICR7LSEpICR7LSEp\nICR7LSEpICR7LSEpuCakqrvWMLrI8f4qXUAyKqexEbrQFq2ENJUrQuqVMRpRvL8aLCQZldPY\nCF1oi1ZCmsrHIVX1pZCq7mM1WEYyKqexEbrQFq2ENJWbDu26K+cDOEJavZaQFNwWUnwp1N07\nCOm08D8NsrWEL2Lz3SuwWm7fI1W9y3hyYRhSi+Tb2+mbnNCFtmhljzSV287anW71Ts6V9kgt\nklE5jY3QhbZoJaSpTAspf6xKP0Qko3IaG6ELbdFKSFOZfmjXf4yQVqwlJAU3h5SdbOgtQUjr\n1BKSgutDiu9cqHuX3SLpa6YTklE5jY3QhbZoJaSp8F47ey0hKSAkey0hKSAkey0hKSAkey0h\nKSAkey0hKSAkey0hKSAkey0hKSAkey0hKSAkey0hKSAkey0hKSAkey0hKSAkey0hKSAkey0h\nKSAkey0hKSAkey0hKSAkey0hKSAkey0hKSAkey0hKSAkey0hKSAkey0hKSAkey0hKSAkey0h\nKSAkey0hKSAkey0hKSAkey0hKSAkey0hKSAkey0hKSAkey0hKSAkey0hKSAkey0hKSAkey0h\nKSAkey0hKSAkey0hKSAkey0hKSAkey0hKSAkey0hKSAkey0hKSAkey0hKSAkey0hKSAkey0h\nKSAkey0hKSAkey0hKSAkey0hKSAkey0hKSAkey0hKSAkey0hKSAkey0hKSAkey0hKSAkey0h\nKSAkey0hKSAkey0hKSAkey0hKSAkey0hKSAkey0hKSAkey0hKSAkey0hKSAkey0hKSAkey0h\nKSAkey0hKSAkey0hKSAkey0hKSAkey0hKSAkey0hKSAkey0hKSAkey0hKSAkey0hKSAkey0h\nKSAkey0hKSAkey0hKSAkey0hKSAkey0hKSAkey0hKSAkey0hKSAkey0hKSAkey0hKSAkey0h\nKSAkey0hKSAkey0hKSAkey0hKSAkey0hKSAkey0hKSAkey0hKSAkey0hKSAkey0hKSAkey0h\nKSAkey0hKSAkey0hKSAkey0hKSAkey0hKSAkey0hKSAkey0hKSAkey0hKSAkey0hKSAkey0h\nKSAkey0hKSAkey0hKSAkey0hKSAkey0hKZg1JFgbm+9egdXCHsleyx5JASHZawlJASHZawlJ\nASHZawlJASHZawlJASHZawlJASHZawlJASHZawlJASHZawlJASHZawlJASHZawlJASHZawlJ\nASHZawlJASHZawlJASHZawlJASHZawlJASHZawlJASHZawlJASHZawlJASHZawlJASHZawlJ\nASHZawlJASHZawlJASHZawlJASHZawlJASHZawlJASHZawlJASHZawlJASHZawlJASHZawlJ\nASHZawlJASHZawlJASHZawlJASHZawlJASHZawlJASHZawlJASHZawlJASHZawlJASHZawlJ\nASHZawlJASHZawlJASHZawlJASHZawlJASHZawlJASHZawlJASHZawlJASHZawlJASHZawlJ\nASHZawlJASHZawlJASHZawlJASHZawlJASHZawlJASHZawlJASHZawlJASHZawlJASHZawlJ\nASHZawlJASHZawlJASHZawlJASHZawlJASHZawlJASHZawlJASHZawlJASHZawlJASHZawlJ\nASHZawlJASHZawlJASHZawlJASHZawlJASHZawlJASHZawlJASHZawlJASHZawlJASHZawlJ\nASHZawlJASHZa782pPDRFve7urBUc39oqZ720zbKmSAke+3CQmoX+DikAy/Ttsp5ICR77RJD\nuvTgcYH9Y6jebt0gZ4SQ7LXfENKhgvDYHprtHw4Hac2V14fQXmt2NflSIcTFupDq+jH8mnPj\nvRFCstd+fUhvVfsq5y1ee6jrl+PR2lMvpG6pw8fjg0lIf8Juzo33RgjJXvv1IT01CeyaMJ7C\nY/3a3LUNz00aofcaqVsqhN1b/TtUaUgfHyV+JYRkr/36kLbhcMC2D9vm2vl1zv7l1y4JqVsq\nhH3dRURInxoboQtt0fo1IR0LSKI47HpC7+XR2FKEJBkboQtt0fptIT2G7e+X/U0hvTavrRYD\nIdlrF3Fo19bxVjy0i4v0Q3oIv+fceG+EkOy133uy4SmeYnit39LXSP2TDfGZ6c+R5tx2b4WQ\n7LXfefp7317bNtV0r5Gq4env+MzknQ2vc267t0JI9tpv/YHsn93p2uGeXXsi/Hyau/8D2fjM\nLqTt05Le10BIaHn3twRCstcSkgJCstcSkgJCstcSkgJCstcSkgJCstcSkgJCstcSkgJCstcS\nkgJCstcSkgJCstcSkgJCstd+aUj/u8Sc2+LcXBNS9y7b6sD4IscHqipZQjIqp7ERutAWrYQ0\nlStC6sqozh/yRfoPENK6tElIkpIubEwuIW1/Dd6bXtWXQqoGD/QeVwxKHBuhC23RSkhTyUJq\nfgHkMZ/BchhSdwBHSKvXEpKCLKS354fmlz12z/2JlQch9boZhHRa+J+GOVYY5mSzmfkTuITU\n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\nn6H4FqFPelsUgxLHRuhCW7QuZo+UnhEI3V3Dbbau07uTYIYBTZoi/2MIyV67yJDOFyG9cmpq\n4A0fh3T+a2PJk04buzokLYpBiWMjdKEtWhcYUrapx3Ph2Wnva0LqjvIKT/oMhGSvXXhI6ZXB\nlp8veTGk7ChuzpDenuIPZAUoBiWOjdCFtmhdXEjdhp4V073iibcGAV0+2VC6cyKZoPcWIQGK\nQYljI3ShLVqXHFL32j19DX++NZgd/+Lp77o7h1HrQ3qMb1plFiEb7RJDUiA7arvps8WbIb38\nHIpBiWMjdKEtWgnps58t3iQkOy0hKT/bCQ7t/LQ/NaSvhZMN9lpCUsDpb3stISngB7L2WkJS\nQEj2WkJSQEj2WkJSQEj2WkJSQEj2WkJSQEj2WkJSQEj2WkJSQEj2WkJSQEj2WkJSQEj2WkJS\nQEj2WkJSQEj2WkJSQEj22iWGlE4ZdPx40yT6FwjZxfiTb/2NPEKy1y49pGsn0b92U451ppej\nC90AIdlr1x3ScDquD8mshIRWbl1HSKOT6J+mkcxnDGon1B+ZRqgf0vA5t881TEj22q8O6X2c\nUkj9f+kEdsc7kkn0x+e2G5nYrvdv8PCk6bkIyV67yD3SxEn008b6t0NyfxJS8Tm3QEj22kWG\ndL4I6ZX6vItJCf3a6vp8pHeW9Z8Xkoh6y2TPuQVCstcuPKSbJtFPXjoNQooppWfsQm959kho\nJdYFhpReSY7Phksm946EFJcaC2n4nFsgJHvtokPqtv+sre5kQ7yVRzE4tBuv6sJzboGQ7LVr\nCemjSfTz09/Ddrrp9vufpv8weyS0EutSQlofhGSvJSQFhGSvJSQFhGSvJSQFhGSvJSQFhGSv\nJSQFhGSvJSQFhGSv/dKQfiyEZK8lJAWEZK8lJAWEZK8lJAWEZK8lJAWEZK8lJAWEZK8lJAWE\nZK8lJAWEZK8lJAWEZK8lJAWEZK8lJAWEZK8lJAWEZK8lJAWEZK8lJAWEZK8lJAWEZK8lJAWE\nZK8lJAWEZK8lJAWEZK8lJAWEZK8lJAWEZK8lJAWEZK8lJAWEZK8lJAWEZK8lJAWEZK8lJAWE\nZK8lJAWEZK8lJAWEZK8lJAWEZK8lJAWEZK8lJAWEZK8lJAWEZK8lJAWEZK8lJAWEZK8lJAWE\nZK8lJAWEZK8lJAWEZK8lJAWEZK8lJAUfh1Q19K4XFxouoBiUODZCF9qilZCmckVI2dWxkuID\n2QKKQYljI3ShLVoJaSqfDalKHiCkFWoJScGHIVX59eZDdwQ3ElKHYlDi2AhdaItWQprKxyH1\nXyKdPvR2PHlIceF/GtQrC3Oz2Xz3GqyV6/ZIVXr9fFmdMuvuqDm0W5uWPZKC605/5yF1uyle\nI61eS0gKpoWUP0JIK9YSkoLph3a9uwhpzVpCUnBVSBdONlx8QDEocWyELrRFKyFN5bp3NrSX\n/ev5Oxx4Z8N6tYSkgPfa2WsJSQEh2WsJSQEh2WsJSQEh2WsJSQEh2WsJSQEh2WsJSQEh2WsJ\nSQEh2WsJSQEh2WsJSQEh2WsJSQEh2WsJSQEh2WsJSQEh2WsJSQEh2WsJSQEh2WsJSQEh2WsJ\nSQEh2WsJSQEh2WsJSQEh2WsJSQEh2WsJSQEh2WsJSQEh2WsJSQEh2WsJSQEh2WsJSQEh2WsJ\nSQEh2WsJSQEh2WsJSQEh2WsJSQEh2WsJSQEh2WsJSQEh2WsJSQEh2WsJSQEh2WsJSQEh2WsJ\nSQEh2WsJSQEh2WsJSQEh2WsJSQEh2WsJSQEh2WsJSQEh2WsJSQEh2WsJSQEh2WsJSQEh2WsJ\nSQEh2WsJSQEh2WsJSQEh2WsJSQEh2WsJSQEh2WsJSQEh2WsJSQEh2WsJSQEh2WsJSQEh2WsJ\nSQEh2WsJSQEh2WsJSQEh2WsJSQEh2WsJSQEh2WsJSQEh2WsJSQEh2WsJSQEh2WsJSQEh2WsJ\nSQEh2WsJSQEh2WsJSQEh2WsJSQEh2WsJSQEh2WsJSQEh2WsJSQEh2WsJSQEh2WsJSQEh2WsJ\nSQEh2WsJSQEh2WsJSQEh2WsJSQEh2WsJSQEh2WsJSQEh2WsJSQEh2WsJSQEh2WsJSQEh2WsJ\nSQEh2WsJSQEh2WsJSQEh2WsJSQEh2WsJSQEh2WsJSQEh2WsJSQEh2WsJSQEh2WsJSQEh2WsJ\nSQEh2WsJSQEh2WsJSQEh2WsJSQEh2WsJSQEh2WsJSQEh2WsJSQEh2WsJSQEh2WsJSQEh2WsJ\nSQEh2WsJSQEh2WsJScGsIcHa2Gy+ew3WCnskey17JAWEZK8lJAWEZK8lJAWEZK8lJAWEZK8l\nJAWEZK8lJAWEZK8lJAWEZK8lJAWEZK8lJAWEZK8lJAWEZK8lJAWEZK8lJAWEZK8lJAWEZK8l\nJAWEZK8lJAWEZK8lJAWEZK8lJAWEZK8lJAWEZK8lJAWEZK8lJAWEZK8lJAWEZK8lJAWEZK8l\nJAWEZK8lJAWEZK8lJAWEZK8lJAWEZK8lJAWEZK8lJAWEZK8lJAWEZK8lJAWEZK8lJAWEZK8l\nJAWEZK9NQvpPUdKc29RSISR7LSEpICR7LSEpICR7LSEpICR7LSEpICR7LSEpICR7LSEpsAjp\nfh5tmVVpCUkBIc3BqrSEpICQ5mBVWkJSQEhzsCotISkgpDlYlZaQFHiEVCxpVVs8IS0Yh5Du\ny7ukVW3xhLRgCGkOVqUlJAWENAer0hKSAkKag1VpCUkBIc3BqrSEpICQ5mBVWkJSQEhzsCot\nISkgpDlYlZaQFBDSHKxKS0gKCGkOVqUlJAWENAer0hKSAkKag1VpCUkBIc3BqrSEpICQ5mBV\nWkJSQEhzsCotISkgpDlYlZaQFBDSHKxKS0gKCGkOVqUlJAWENAer0hKSAkKag1VpCUkBIc3B\nqrSEpICQ5mBVWkJSQEhzsCotISlYa0h3NzyXkK62EtJULEK6I6QrrYQ0FUKag1VpCUkBIc3B\nqrSEpICQ5mBVWkJSQEhzsCotISkgpDlYlZaQFBDSHKxKS0gKCGkOFqsd+0IQkgJCmoPFaglp\nLghpDharJaS5IKQ5WKyWkOaCkOZgsVpCmgtCmoPFaglpLghpDharJaS5WHpIcVwJSaLVhlQa\nhDm3qaVCSHMwt/bvVAMhzQUhzcHc2snHX4Q0F6sN6YaSCOnM50LKHyOkjrWGtLklpB/3q+bv\nUw2ENBeENAeEZAchzcFyQxr5ShCSAkKag5m174S0OAhpDgjJDkKag9lDmvqDpPv7YSiEpGDZ\nIW02XxTS5G/xl7ViCGm5EFLLykKavL73I8d2hKRgpSFtCGkSnwpp8CAhdRiEdEdIZ9qQek/e\n/EdIGgiphZDibUKaxqJD2lwM6cqN6e5HhjTxbAMhzcV3hXTVDqUN6bhkdN3FR24LqbR5nLSn\nb/GKX2rra9VcDumar0cT0oaQZuDjkKoDY9dHF0oXuDCiN4TUjvvJdbeJj9xd+1PJ+x8V0t8D\nbUjDkq4NqX9g2OzxJ4a0IaQ+H4ZUnT+k10cXyha4MKLv15R0CqkZ97ob+NMj175QOIS0uS6k\nzaJD+tvSXGlX92/878evwukby8XvL4eO7k9fuOP/9caQ+o8SUsJnQ6qSB64O6f397uMMmo42\n7ZJ3d3X7K0h3hzsOF5t2j3TlPumw6WzuS0v2QtoUtqIpL5+kIf09JxS/mzSr+2+z0u933Reh\nudLc1dwurPNhb7RpQzq/UHovhDT2hbg7fOmbI+2785KE1DEtpO4IbkpIhzhaDuOyOeRwl/Ge\nsHlvYjrswe7ac3htXM3zDo80h3dNZC3N2Qv/S2gAAATASURBVLnjz+3v4lbTXr1rQmpqfC/9\nCkHz2N3h87xvmk3l7uz773jWsFmJ3o9fspUtbEntpr850tzxd+RQbJy+tbU0e5G747/341fu\nb9tL85U53vp7/mLdt3e3/9v2f9Vc/r1rnt0+dr9pl9mcv7SHf/d3//7bvOK837Qr/N/mb/Pf\nPn5Zu3VqvtR3h3vP39uaL1Zx5yXbOlfEpJB695VC+qehoGzjqON4bt4zTtvf8fvwe72p27HL\n+Pv37rilDh4Z5f692ZaKj7VbYGmB+/JTv5h/25W5zz+0X7HD8Wuzv76PvB//Q3HdT7c3/7aO\nTfwvl/5nfwf3NF/p07137c1mdCZvdj+PT4VUHZnyGulW1vnu0lVo9VbxNroKpoVUnY/tJr5G\nun1shC60M1uF2+dqmL5H6t1FSGvWEpICQrLXEpKCz55suPiAcmyELrQzWzWb5rq4/p0N/dPe\ng3c43PzOhpvHRuhCO7NVtnWuiEW/abU/NkIX2pmtc25TS4WQ7LWEpICQ7LWEpICQ7LWEpICQ\n7LWEpICQ7LWEpICQ7LWEpICQ7LWEpICQ7LWEpICQ7LWEpICQ7LWEpICQ7LWEpICQ7LWEpICQ\n7LWEpICQ7LWEpICQ7LWEpICQ7LWEpICQ7LWEpICQ7LWEpICQ7LWEpICQ7LWEpICQ7LWEpICQ\n7LWEpICQ7LWEpICQ7LWEpICQ7LWEpICQ7LWEpICQ7LWEpGDWkISU/ozmMlnV2q5qZRcLIc3B\nqtZ2VSu7WAhpDla1tqta2cVCSHOwqrVd1coulrWEBLBoCAlAACEBCCAkAAGEBCCAkAAELDek\n6kD/8nCtTm8viUtru7jVzVd2uPJwK4sNqTp9qLobVf/+ZVFa2+WtaT1c2eHKw82sJ6SqXlNI\nVU1IViw2pJZ0dBccUktpbRdJHg4hfQ5C0jG2tot92UFIWhYdUlWvKaRVrW22soPbcCOEJGNs\nbbNry4GQxCw5pDycZYc0urbZtcWwri/tGlhwSIPX7Ise7VWt7fgaLnRl18FyQ+odc6xm0xxd\n2+Wv7HDl4VYWG1IVT3it4p0Nq1rbfGVHVh5uZbEhAawJQgIQQEgAAggJQAAhAQggJAABhAQg\ngJAABBASgABCmkpIvnS/q+zBSL4g/EwY5KmkfWS1EJIbDPJULoZUuAt+LAz2BPa78HDs5PUh\nhOrpuAc63Hx7DOHx7bRUDOm0V3o4PGe/DQ9v+XLwEyCk23mrDtk8NH28HA/fnmJIzQNhe1os\nDemwfHjeHj485svBT4CQbucp7Oq3XdPHNjzX9Z/zC6Ffh6QOj/4+LpaG9Fg/N8U9N7fS5eAn\nQEi3sw37w+HdsZP9y6/dOaRte9fhEK4lDWnffHg73kqXg58AId3OsZD24y45NdedqesWO79G\n6n1Il4OfAIN5O11Ij2H7+2VPSEBIE+gO7Y6n6rJDu0g5pC1f9R8HQ3o7v8LurT69Mno9nXZo\nI3lqTiI8h91xsXJI6XLwEyCk2+lOfz/13r5QnR4I4c9xsXJI6XLwEyCkCewf4g9kH0PYvTbX\nfjch1fv29mmpckjpcvATICQAAYQEIICQAAQQEoAAQgIQQEgAAggJQAAhAQggJAABhAQggJAA\nBBASgID/A9X88itz6yVIAAAAAElFTkSuQmCC", + "text/plain": [ + "plot without title" + ] + }, + "metadata": { + "image/png": { + "height": 420, + "width": 420 + } + }, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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\ngAGIBGDA/wM98aDmdQOepAAAAABJRU5ErkJggg==", + "text/plain": [ + "plot without title" + ] + }, + "metadata": { + "image/png": { + "height": 420, + "width": 420 + } + }, + "output_type": "display_data" + } + ], + "source": [ + "library(ggplot2)\n", + "\n", + "p1 <- ggplot(by_location, aes(x=dateTime, y=Temp, col=locationID)) +\n", + "geom_line()\n", + "\n", + "p2 <- ggplot(by_location, aes(x=dateTime, y=organismQuantity, col=locationID)) +\n", + "geom_line()\n", + "\n", + "p1\n", + "p2\n", + "\n", + "# create subset plots\n", + "p2+facet_grid(rows = vars(locationID))\n", + "\n", + "# p3 <- ggplot(filter(sccoos_lingpoly_occur=='HABs-CalPoly'), aes(x=dateTime)) +\n", + "# geom_line()\n", + "# p3\n", + "\n", + "# p3 + facet_grid(rows = vars(c(Temp, organismQuantity)))\n", + "# p3" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Make a map of all occurrences with SCCOOS obs as cluster pins" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "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", + "\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(lingpoly_occur) %>% \n", + " addTiles() %>% \n", + " addMarkers(\n", + " sccoos_lingpoly_occur$decimalLongitude, sccoos_lingpoly_occur$decimalLatitude,\n", + " clusterOptions = markerClusterOptions(),\n", + " )\n", + "m\n", + "# saveWidget(m, \"lingpoly_data_sub.html\", selfcontained = FALSE)\n", + "# display_html(\"\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Make a master map.\n", + "This map has all the _Lingulodinium polyedra_ obeservations from OBIS with clustered points for the SCCOOS observations. Each cluster opens to pins for each mof observed at that location. Each specfic pin opens a time-series plot of the mof observation." + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Warning message:\n", + "\"\u001b[1m\u001b[22m`aes_string()` was deprecated in ggplot2 3.0.0.\n", + "\u001b[36mi\u001b[39m Please use tidy evaluation ideoms with `aes()`\"\n", + "Warning message:\n", + "\"\u001b[1m\u001b[22mRemoved 116 rows containing missing values (`geom_point()`).\"\n", + "Warning message:\n", + "\"\u001b[1m\u001b[22mRemoved 97 rows containing missing values (`geom_point()`).\"\n", + "Warning message:\n", + "\"\u001b[1m\u001b[22mRemoved 26 rows containing missing values (`geom_point()`).\"\n", + "Warning message:\n", + "\"\u001b[1m\u001b[22mRemoved 309 rows containing missing values (`geom_point()`).\"\n", + "Warning message:\n", + "\"\u001b[1m\u001b[22mRemoved 4 rows containing missing values (`geom_point()`).\"\n", + "Warning message:\n", + "\"\u001b[1m\u001b[22mRemoved 282 rows containing missing values (`geom_point()`).\"\n", + "Warning message:\n", + "\"\u001b[1m\u001b[22mRemoved 6 rows containing missing values (`geom_point()`).\"\n", + "Warning message:\n", + "\"\u001b[1m\u001b[22mRemoved 151 rows containing missing values (`geom_point()`).\"\n", + "Warning message:\n", + "\"\u001b[1m\u001b[22mRemoved 178 rows containing missing values (`geom_point()`).\"\n", + "Warning message:\n", + "\"\u001b[1m\u001b[22mRemoved 164 rows containing missing values (`geom_point()`).\"\n", + "Warning message:\n", + "\"\u001b[1m\u001b[22mRemoved 44 rows containing missing values (`geom_point()`).\"\n", + "Warning message:\n", + "\"\u001b[1m\u001b[22mRemoved 1 rows containing missing values (`geom_point()`).\"\n" + ] + }, + { + "data": { + "text/html": [ + "\n", + "\n", + "\t\n", + "\t\t\n", + "\t\t\n", + "\n", + "\n", + "\n", + "\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(lingpoly_occur)\n", + "# iterate through each site\n", + "for (site in unique(sccoos_lingpoly_occur$locationID)) {\n", + " \n", + " # filter for the site\n", + " site_filt <- filter(sccoos_lingpoly_occur, locationID == site)\n", + " \n", + " # create time-series plot for each measurement type\n", + " pop <- character()\n", + " #color <- 'blue'\n", + " for (variable in measurementTypes){\n", + " if ( !all(is.na(site_filt[,variable])) ) {\n", + " ggplot(site_filt, aes_string(x=\"dateTime\", y=variable)) + geom_point() + ggtitle(site)\n", + " image_name <- paste0(site,variable,\"_ts.png\")\n", + " ggsave(image_name, width = 2, height = 2)\n", + " pop1 <- paste0(\"\")\n", + " pop <- c(pop,pop1)\n", + " #c1 <- 'red'\n", + " #color <- c(color,c1)\n", + " }\n", + " }\n", + "\n", + " m <- addTiles(m) %>%\n", + " addMarkers(\n", + " unique(site_filt$decimalLongitude), unique(site_filt$decimalLatitude),\n", + " clusterOptions=markerClusterOptions(),\n", + " popup = pop\n", + " )\n", + "\n", + " }\n", + "\n", + "m\n", + "\n", + "# filename <- paste0(\"map.html\")\n", + "# saveWidget(m, filename, selfcontained = FALSE)\n", + "# html_file = paste0(\"\")\n", + "# display_html(html_file)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "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": 4 +}