{ "cells": [ { "cell_type": "code", "execution_count": null, "metadata": { "tags": [ "remove-cell" ] }, "outputs": [], "source": [ "import subprocess\n", "import sys\n", "\n", "COLAB = \"google.colab\" in sys.modules\n", "\n", "\n", "def _install(package):\n", " if COLAB:\n", " ans = input(f\"Install { package }? [y/n]:\")\n", " if ans.lower() in [\"y\", \"yes\"]:\n", " subprocess.check_call(\n", " [sys.executable, \"-m\", \"pip\", \"install\", \"--quiet\", package]\n", " )\n", " print(f\"{ package } installed!\")\n", "\n", "\n", "def _colab_install_missing_deps(deps):\n", " import importlib\n", "\n", " for dep in deps:\n", " if importlib.util.find_spec(dep) is None:\n", " if dep == \"iris\":\n", " dep = \"scitools-iris\"\n", " _install(dep)\n", "\n", "\n", "deps = [\"palettable\"]\n", "_colab_install_missing_deps(deps)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Using r-obistools and r-obis to explore the OBIS database\n", "\n", "Created: 2018-02-20\n", "\n", "The [Ocean Biogeographic Information System (OBIS)](https://www.obis.org/) is an open-access data and information system for marine biodiversity for science, conservation and sustainable development.\n", "\n", "In this example we will use R libraries [`obistools`](https://iobis.github.io/obistools) and [`robis`](https://iobis.github.io/robis) to search data regarding marine turtles occurrence in the South Atlantic Ocean.\n", "\n", "Let's start by loading the R-to-Python extension and check the database for the 7 known species of marine turtles found in the world's oceans." ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "%load_ext rpy2.ipython" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "R[write to console]: 7 names, 0 without matches, 0 with multiple matches\n", "\n" ] } ], "source": [ "%%R -o matches\n", "\n", "library(obistools)\n", "\n", "\n", "species <- c(\n", " 'Caretta caretta',\n", " 'Chelonia mydas',\n", " 'Dermochelys coriacea',\n", " 'Eretmochelys imbricata',\n", " 'Lepidochelys kempii',\n", " 'Lepidochelys olivacea',\n", " 'Natator depressa'\n", ")\n", "\n", "matches = match_taxa(species, ask=FALSE)" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
scientificNamescientificNameIDmatch_type
1Caretta carettaurn:lsid:marinespecies.org:taxname:137205exact
2Chelonia mydasurn:lsid:marinespecies.org:taxname:137206exact
3Dermochelys coriaceaurn:lsid:marinespecies.org:taxname:137209exact
4Eretmochelys imbricataurn:lsid:marinespecies.org:taxname:137207exact
5Lepidochelys kempiiurn:lsid:marinespecies.org:taxname:137208exact
6Lepidochelys olivaceaurn:lsid:marinespecies.org:taxname:220293exact
7Natator depressaurn:lsid:marinespecies.org:taxname:344093exact
\n", "
" ], "text/plain": [ " scientificName scientificNameID \\\n", "1 Caretta caretta urn:lsid:marinespecies.org:taxname:137205 \n", "2 Chelonia mydas urn:lsid:marinespecies.org:taxname:137206 \n", "3 Dermochelys coriacea urn:lsid:marinespecies.org:taxname:137209 \n", "4 Eretmochelys imbricata urn:lsid:marinespecies.org:taxname:137207 \n", "5 Lepidochelys kempii urn:lsid:marinespecies.org:taxname:137208 \n", "6 Lepidochelys olivacea urn:lsid:marinespecies.org:taxname:220293 \n", "7 Natator depressa urn:lsid:marinespecies.org:taxname:344093 \n", "\n", " match_type \n", "1 exact \n", "2 exact \n", "3 exact \n", "4 exact \n", "5 exact \n", "6 exact \n", "7 exact " ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "matches" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We got a nice DataFrame back with records for all 7 species of turtles and their corresponding `ID` in the database.\n", "\n", "Now let us try to obtain the occurrence data for the South Atlantic. We will need a vector geometry for the ocean basin in the [well-known test (WKT)](https://en.wikipedia.org/wiki/Well-known_text) format to feed into the `robis` `occurrence` function.\n", "\n", "In this example we converted a South Atlantic shapefile to WKT with geopandas, but one can also obtain geometries by simply drawing them on a map with [iobis maptool](https://obis.org/maptool)." ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [], "source": [ "from pathlib import Path\n", "\n", "import geopandas\n", "\n", "fname = Path(\"..\", \"data\", \"oceans.shp\")\n", "\n", "gdf = geopandas.read_file(fname)\n", "\n", "sa = gdf.loc[gdf[\"Oceans\"] == \"South Atlantic Ocean\"][\"geometry\"].loc[0]\n", "\n", "atlantic = sa.wkt" ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "scrolled": false }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "Retrieved 5000 records of approximately 5620 (88%)\n", "Retrieved 5620 records of approximately 5620 (100%)\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ " [1] \"date_year\" \"scientificNameID\" \n", " [3] \"scientificName\" \"dynamicProperties\" \n", " [5] \"superfamilyid\" \"individualCount\" \n", " [7] \"associatedReferences\" \"dropped\" \n", " [9] \"aphiaID\" \"decimalLatitude\" \n", " [11] \"type\" \"taxonRemarks\" \n", " [13] \"phylumid\" \"familyid\" \n", " [15] \"catalogNumber\" \"occurrenceStatus\" \n", " [17] \"basisOfRecord\" \"superclass\" \n", " [19] \"modified\" \"id\" \n", " [21] \"order\" \"recordNumber\" \n", " [23] \"georeferencedDate\" \"superclassid\" \n", " [25] \"verbatimEventDate\" \"dataset_id\" \n", " [27] \"decimalLongitude\" \"collectionCode\" \n", " [29] \"date_end\" \"speciesid\" \n", " [31] \"occurrenceID\" \"superfamily\" \n", " [33] \"suborderid\" \"license\" \n", " [35] \"date_start\" \"organismID\" \n", " [37] \"genus\" \"dateIdentified\" \n", " [39] \"ownerInstitutionCode\" \"bibliographicCitation\" \n", " [41] \"eventDate\" \"scientificNameAuthorship\" \n", " [43] \"absence\" \"taxonRank\" \n", " [45] \"genusid\" \"originalScientificName\" \n", " [47] \"marine\" \"subphylumid\" \n", " [49] \"vernacularName\" \"institutionCode\" \n", " [51] \"date_mid\" \"identificationRemarks\" \n", " [53] \"class\" \"suborder\" \n", " [55] \"nomenclaturalCode\" \"orderid\" \n", " [57] \"datasetName\" \"geodeticDatum\" \n", " [59] \"taxonomicStatus\" \"kingdom\" \n", " [61] \"waterBody\" \"specificEpithet\" \n", " [63] \"classid\" \"phylum\" \n", " [65] \"species\" \"coordinatePrecision\" \n", " [67] \"organismRemarks\" \"subphylum\" \n", " [69] \"datasetID\" \"occurrenceRemarks\" \n", " [71] \"family\" \"category\" \n", " [73] \"kingdomid\" \"node_id\" \n", " [75] \"flags\" \"sss\" \n", " [77] \"shoredistance\" \"sst\" \n", " [79] \"bathymetry\" \"coordinateUncertaintyInMeters\"\n", " [81] \"eventTime\" \"sex\" \n", " [83] \"footprintWKT\" \"lifeStage\" \n", " [85] \"wrims\" \"references\" \n", " [87] \"year\" \"language\" \n", " [89] \"day\" \"locality\" \n", " [91] \"month\" \"samplingProtocol\" \n", " [93] \"eventID\" \"startDayOfYear\" \n", " [95] \"accessRights\" \"country\" \n", " [97] \"habitat\" \"municipality\" \n", " [99] \"stateProvince\" \"behavior\" \n", "[101] \"recordedBy\" \"maximumDepthInMeters\" \n", "[103] \"georeferenceRemarks\" \"minimumElevationInMeters\" \n", "[105] \"maximumElevationInMeters\" \"minimumDepthInMeters\" \n", "[107] \"depth\" \"continent\" \n", "[109] \"fieldNotes\" \"rightsHolder\" \n", "[111] \"associatedMedia\" \"taxonConceptID\" \n", "[113] \"organismQuantity\" \"organismQuantityType\" \n", "[115] \"fieldNumber\" \"eventRemarks\" \n", "[117] \"preparations\" \"identifiedBy\" \n", "[119] \"typeStatus\" \"otherCatalogNumbers\" \n", "[121] \"locationID\" \n" ] } ], "source": [ "%%R -o turtles -i atlantic\n", "library(robis)\n", "\n", "\n", "turtles = occurrence(\n", " species,\n", " geometry=atlantic,\n", ")\n", "\n", "names(turtles)" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "{'Caretta caretta',\n", " 'Chelonia mydas',\n", " 'Dermochelys coriacea',\n", " 'Eretmochelys imbricata',\n", " 'Lepidochelys kempii',\n", " 'Lepidochelys olivacea'}" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "set(turtles[\"scientificName\"])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Note that there are no occurrences for *Natator depressa* (Flatback sea turtle) in the South Atlantic.\n", "The Flatback sea turtle can only be found in the waters around the Australian continental shelf.\n", "\n", "With `ggplot2` we can quickly put together a of occurrences over time." ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n" }, "metadata": {}, "output_type": "display_data" } ], "source": [ "%%R\n", "\n", "turtles$year <- as.numeric(format(as.Date(turtles$eventDate), \"%Y\"))\n", "table(turtles$year)\n", "\n", "library(ggplot2)\n", "\n", "ggplot() +\n", " geom_histogram(\n", " data=turtles,\n", " aes(x=year, fill=scientificName),\n", " binwidth=5) +\n", " scale_fill_brewer(palette='Paired')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "One would guess that the 2010 count increase would be due to an increase in the sampling effort, but the drop around 2010 seems troublesome. It can be a real threat to these species, or the observation efforts were defunded.\n", "\n", "To explore this dataset further we can make use of the `obistools`' R package. `obistools` has many visualization and quality control routines built-in. Here is an example on how to use `plot_map` to quickly visualize the data on a geographic context." ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "R[write to console]: \n", "Attaching package: ‘dplyr’\n", "\n", "\n", "R[write to console]: The following objects are masked from ‘package:stats’:\n", "\n", " filter, lag\n", "\n", "\n", "R[write to console]: The following objects are masked from ‘package:base’:\n", "\n", " intersect, setdiff, setequal, union\n", "\n", "\n" ] }, { "data": { "image/png": "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/QcffBAAfN9///vfDwBPP/30888//9hjjwFAv9+fmZm5hc+KMQ5otg9cvhuWiPLRcZ7X40+OPw8A1+yhfHnjIa31FTdrjMm/5hd+4Rc++clP7vATYOwN8BQH2/Pe9773ffOb38wz9Gtf+1o+7L3C3Xff/V//9V8AsLm5+W//9m/jzwshkiQBgGazuba2BgDGmO985zsAcO+99+bfMhgM/v3f/x0AHn744S9/+ctxHAPAJz/5yeeee24Xnh2bZDyCZnveI4888sEPfvCxxx5TSp04ceJXfuVXnnnmmSu+5oknnvibv/mbBx988NixY4888sh4fH3w4EFEfOyxx772ta9NTU196EMfWlhYuOeee6y1P//zP/93f/d3DzzwwIEDBx5++GFr7fvf//6PfOQjjzzyiOd5Bw8e/J3f+Z1df65ssnCzJDYRNjY2vvKVr/zyL/8yEX3gAx/44z/+4/e+9723+0Ex9hZ4ioNNhHq9/qUvfek973nPQw899FM/9VOczmxP4BE0Y4wVFI+gGWOsoDigGWOsoDigGWOsoDigGWOsoDigGWOsoDigGWOsoDigGWOsoDigGWOsoDigGWOsoDigGWOsoDigGWOsoDigGWOsoDigGWOsoDigGWOsoDigGWOsoDigGWOsoDigGWOsoDigGWOsoDigGWOsoDigGWOsoDigGWOsoDigGWOsoDigGWOsoDigGWOsoDigGWOsoDigGWOsccPEfQAAAclJREFUoDigGWOsoDigGWOsoDigGWOsoDigGWOsoDigGWOsoDigGWOsoDigGWOsoDigGWOsoDigGWOsoDigGWOsoDigGWOsoDigGWOsoDigGWOsoDigGWOsoDigGWOsoDigGWOsoDigGWOsoDigGWOsoDigGWOsoDigGWOsoDigGWOsoDigGWOsoDigGWOsoDigGWOsoDigGWOsoDigGWOsoDigGWOsoDigGWOsoDigGWOsoDigGWOsoDigGWOsoDigGWOsoDigGWOsoDigGWOsoDigGWOsoDigGWOsoDigGWOsoDigGWOsoDigGWOsoDigGWOsoDigGWOsoDigGWOsoDigGWOsoDigGWOsoDigGWOsoDigGWOsoDigGWOsoDigGWOsoDigGWOsoDigGWOsoDigGWOsoDigGWOsoDigGWOsoDigGWOsoDigGWOsoDigGWOsoDigGWOsoDigGWOsoDigGWOsoDigGWOsoDigGWOsoDigGWOsoDigGWOsoDigGWOsoDigGWOsoDigGWOsoDigGWOsoDigGWOsoDigGWOsoDigGWOsoDigGWOsoDigGWOsoDigGWOsoDigGWOsoDigGWOsoP5/hliVOjzTNF0AAAAASUVORK5CYII=\n" }, "metadata": {}, "output_type": "display_data" } ], "source": [ "%%R\n", "\n", "library(dplyr)\n", "\n", "coriacea <- turtles %>% filter(species=='Dermochelys coriacea')\n", "plot_map(coriacea, zoom=TRUE)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "However, if we want to create a slightly more elaborate map with clusters and informative pop-ups, can use the python library `folium`.instead." ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [], "source": [ "import folium\n", "from pandas import DataFrame\n", "\n", "\n", "def filter_df(df):\n", " return df[[\"institutionCode\", \"individualCount\", \"sex\", \"eventDate\"]]\n", "\n", "\n", "def make_popup(row):\n", " classes = \"table table-striped table-hover table-condensed table-responsive\"\n", " html = DataFrame(row).to_html(classes=classes)\n", " return folium.Popup(html)\n", "\n", "\n", "def make_marker(row, popup=None):\n", " location = row[\"decimalLatitude\"], row[\"decimalLongitude\"]\n", " return folium.Marker(location=location, popup=popup)" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [], "source": [ "from folium.plugins import MarkerCluster\n", "\n", "species_found = sorted(set(turtles[\"scientificName\"]))\n", "\n", "clusters = {s: MarkerCluster() for s in species_found}\n", "groups = {s: folium.FeatureGroup(name=s) for s in species_found}" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
date_yearscientificNameIDscientificNamedynamicPropertiessuperfamilyidindividualCountassociatedReferencesdroppedaphiaIDdecimalLatitude...taxonConceptIDorganismQuantityorganismQuantityTypefieldNumbereventRemarkspreparationsidentifiedBytypeStatusotherCatalogNumberslocationID
12012urn:lsid:marinespecies.org:taxname:137209Dermochelys coriaceaMachineObservation9870941[{\"crossref\":{\"citeinfo\":{\"origin\":\"Robinson, ...0137209-33.500000...NoneNoneNoneNoneNoneNoneNoneNoneNoneNone
21998urn:lsid:marinespecies.org:taxname:137206Chelonia mydasNone9870941[{\"crossref\":{\"citeinfo\":{\"origin\":\"Luschi, P....0137206-7.226000...NoneNoneNoneNoneNoneNoneNoneNoneNoneNone
32014urn:lsid:marinespecies.org:taxname:137205Caretta carettaMachineObservation9870941[{\"crossref\":{\"citeinfo\":{\"origin\":\"Coyne, M. ...0137205-29.500000...NoneNoneNoneNoneNoneNoneNoneNoneNoneNone
42015urn:lsid:marinespecies.org:taxname:220293Lepidochelys olivaceaMachineObservation9870941[{\"crossref\":{\"citeinfo\":{\"origin\":\"Coyne, M. ...0220293-14.500000...NoneNoneNoneNoneNoneNoneNoneNoneNoneNone
5-2147483648urn:lsid:marinespecies.org:taxname:137206Chelonia mydasNone987094NoneNone0137206-3.883472...NoneNoneNoneNoneNoneNoneNoneNoneNoneNone
..................................................................
56162003urn:lsid:marinespecies.org:taxname:137209Dermochelys coriaceaNone9870941[{\"crossref\":{\"citeinfo\":{\"origin\":\"Luschi, P....0137209-32.194000...NoneNoneNoneNoneNoneNoneNoneNoneNoneNone
56171998urn:lsid:marinespecies.org:taxname:137206Chelonia mydasNone9870941[{\"crossref\":{\"citeinfo\":{\"origin\":\"Luschi, P....0137206-8.895000...NoneNoneNoneNoneNoneNoneNoneNoneNoneNone
56182003urn:lsid:marinespecies.org:taxname:137209Dermochelys coriaceaNone9870941[{\"crossref\":{\"citeinfo\":{\"origin\":\"Luschi, P....0137209-35.069000...NoneNoneNoneNoneNoneNoneNoneNoneNoneNone
56192006urn:lsid:marinespecies.org:taxname:137209Dermochelys coriaceaMachineObservation9870941[{\"crossref\":{\"citeinfo\":{\"origin\":\"Coyne, M. ...0137209-30.500000...NoneNoneNoneNoneNoneNoneNoneNoneNoneNone
56201996urn:lsid:marinespecies.org:taxname:137209Dermochelys coriaceaNone9870941[{\"crossref\":{\"citeinfo\":{\"origin\":\"Luschi, P....0137209-39.724000...NoneNoneNoneNoneNoneNoneNoneNoneNoneNone
\n", "

5620 rows × 121 columns

\n", "
" ], "text/plain": [ " date_year scientificNameID \\\n", "1 2012 urn:lsid:marinespecies.org:taxname:137209 \n", "2 1998 urn:lsid:marinespecies.org:taxname:137206 \n", "3 2014 urn:lsid:marinespecies.org:taxname:137205 \n", "4 2015 urn:lsid:marinespecies.org:taxname:220293 \n", "5 -2147483648 urn:lsid:marinespecies.org:taxname:137206 \n", "... ... ... \n", "5616 2003 urn:lsid:marinespecies.org:taxname:137209 \n", "5617 1998 urn:lsid:marinespecies.org:taxname:137206 \n", "5618 2003 urn:lsid:marinespecies.org:taxname:137209 \n", "5619 2006 urn:lsid:marinespecies.org:taxname:137209 \n", "5620 1996 urn:lsid:marinespecies.org:taxname:137209 \n", "\n", " scientificName dynamicProperties superfamilyid \\\n", "1 Dermochelys coriacea MachineObservation 987094 \n", "2 Chelonia mydas None 987094 \n", "3 Caretta caretta MachineObservation 987094 \n", "4 Lepidochelys olivacea MachineObservation 987094 \n", "5 Chelonia mydas None 987094 \n", "... ... ... ... \n", "5616 Dermochelys coriacea None 987094 \n", "5617 Chelonia mydas None 987094 \n", "5618 Dermochelys coriacea None 987094 \n", "5619 Dermochelys coriacea MachineObservation 987094 \n", "5620 Dermochelys coriacea None 987094 \n", "\n", " individualCount associatedReferences \\\n", "1 1 [{\"crossref\":{\"citeinfo\":{\"origin\":\"Robinson, ... \n", "2 1 [{\"crossref\":{\"citeinfo\":{\"origin\":\"Luschi, P.... \n", "3 1 [{\"crossref\":{\"citeinfo\":{\"origin\":\"Coyne, M. ... \n", "4 1 [{\"crossref\":{\"citeinfo\":{\"origin\":\"Coyne, M. ... \n", "5 None None \n", "... ... ... \n", "5616 1 [{\"crossref\":{\"citeinfo\":{\"origin\":\"Luschi, P.... \n", "5617 1 [{\"crossref\":{\"citeinfo\":{\"origin\":\"Luschi, P.... \n", "5618 1 [{\"crossref\":{\"citeinfo\":{\"origin\":\"Luschi, P.... \n", "5619 1 [{\"crossref\":{\"citeinfo\":{\"origin\":\"Coyne, M. ... \n", "5620 1 [{\"crossref\":{\"citeinfo\":{\"origin\":\"Luschi, P.... \n", "\n", " dropped aphiaID decimalLatitude ... taxonConceptID organismQuantity \\\n", "1 0 137209 -33.500000 ... None None \n", "2 0 137206 -7.226000 ... None None \n", "3 0 137205 -29.500000 ... None None \n", "4 0 220293 -14.500000 ... None None \n", "5 0 137206 -3.883472 ... None None \n", "... ... ... ... ... ... ... \n", "5616 0 137209 -32.194000 ... None None \n", "5617 0 137206 -8.895000 ... None None \n", "5618 0 137209 -35.069000 ... None None \n", "5619 0 137209 -30.500000 ... None None \n", "5620 0 137209 -39.724000 ... None None \n", "\n", " organismQuantityType fieldNumber eventRemarks preparations \\\n", "1 None None None None \n", "2 None None None None \n", "3 None None None None \n", "4 None None None None \n", "5 None None None None \n", "... ... ... ... ... \n", "5616 None None None None \n", "5617 None None None None \n", "5618 None None None None \n", "5619 None None None None \n", "5620 None None None None \n", "\n", " identifiedBy typeStatus otherCatalogNumbers locationID \n", "1 None None None None \n", "2 None None None None \n", "3 None None None None \n", "4 None None None None \n", "5 None None None None \n", "... ... ... ... ... \n", "5616 None None None None \n", "5617 None None None None \n", "5618 None None None None \n", "5619 None None None None \n", "5620 None None None None \n", "\n", "[5620 rows x 121 columns]" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "turtles" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
Make this Notebook Trusted to load map: File -> Trust Notebook
" ], "text/plain": [ "" ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" } ], "source": [ "m = folium.Map()\n", "\n", "for turtle in species_found:\n", " df = turtles.loc[turtles[\"scientificName\"] == turtle]\n", " for k, row in df.iterrows():\n", " popup = make_popup(filter_df(row))\n", " make_marker(row, popup=popup).add_to(clusters[turtle])\n", " clusters[turtle].add_to(groups[turtle])\n", " groups[turtle].add_to(m)\n", "\n", "\n", "m.fit_bounds(m.get_bounds())\n", "folium.LayerControl().add_to(m)\n", "\n", "m" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We can get fancy and use shapely to \"merge\" the points that are on the ocean and get an idea of migrations routes." ] }, { "cell_type": "code", "execution_count": 13, "metadata": { "scrolled": false }, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAeAAAAHgCAIAAADytinCAAAgAElEQVR4nOzdWYxk+V0v+N9/OfuJPfdas6q6yo1tFtvgda7N2MOdAdt4RmMJLA0IRmiaB1uWxgIhkJ/m1Q/YI4ElC4wsuNwri5kxYGkECAtfetwNbWzTdrtd3V1Z1blHZsZy4uz/ZR5OVXY6KzMrcj8R+fs8VWVGnjiReeIb//Nffn+itQaEEELlQ8/7BBBCCO0NAxohhEoKAxohhEoKAxohhEoKAxohhEoKAxohhEoKAxohhEoKAxohhEoKAxohhEoKAxohhEoKAxohhEoKAxohhEoKAxohhEoKAxohhEoKAxohhEoKAxohhEoKAxohhEoKAxohhEoKAxohhEoKAxohhEoKAxohhEoKAxohhEoKAxohhEoKAxohhEoKAxohhEoKAxohhEoKAxohhEoKAxohhEoKAxohhEoKAxohhEoKAxohhEoKAxohhEoKAxohhEoKAxohhEoKAxohhEoKAxohhEoKAxohhEoKAxohhEoKAxohhEoKAxohhEoKAxohhEoKAxohhEoKAxohhEoKAxohhEoKAxohhEoKAxohhEoKAxohhEoKAxohhEoKAxohhEoKAxohhEoKAxohhEoKAxohhEoKAxohhEoKAxohhEoKAxohhEoKAxohhEoKAxohhEoKAxohhEoKAxohhEoKAxohhEoKAxohhEoKAxohhEoKAxohhEoKAxohhEoKAxohhEoKAxohhEoKAxohhEoKAxohhEoKAxohhEoKAxohhEoKAxohhEoKAxohhEoKAxohhEoKAxohhEoKAxohhEoKAxohhEoKAxohhEoKAxohhEoKAxohhEoKAxohhEoKAxohhEoKAxohhEoKAxohhEoKAxohhEoKAxohhEoKAxohhEoKAxohhEoKAxohhEoKAxohhEoKAxohhEoKAxohhEoKAxohhEoKAxohhEoKAxohhEoKAxohhEoKAxohhEoKAxohhEoKAxohhEoKAxohhEoKAxohhEoKAxohhEoKAxohhEoKAxohhEoKAxohhEoKAxohhEoKAxohhEoKAxohhEoKAxohhEoKAxohhEoKAxohhEoKAxohhEoKAxohhEoKAxohhEoKAxohhEoKAxohhEoKAxohhEoKAxohhEoKAxohhEoKAxohhEoKAxohhEqKn+WT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SiuVSpbRy112y7+t1+vLNeiVM4XiOD516lR3d8waOL7ve57n+z4+qwDOhTbo7sjlcpzzWq0WhqEQYrnF4+LL+UspZ2ZmLMsqFotXZlNyvV5f/ojinBeLxWyv9P6WCkATne4GAmdJkkQIsbi4uLS0JKX0fX/dunUrp6UwxjzPK5fLy52HWULZtq3PMIxvfetbX/nKV6699tpVOFcQBCvb6C3LGspV9Hptz549n/jEJ+64445+FwQu1dNPP80Y+/znP3+R56AG3WXZClXlcvkic/nOWmBQw7rzu+++m01KXAUYtd0VJ0+e3LRpU79LAZfhzJkzH1knQ0DDebiui2rsYHEcZ1jXgx5Wtm1/ZGsemjgAADSlS6MnAACcBU0c8KHXX3/9Zz/72cTEBCHka1/7muu6TzzxRLb91UMPPYRGDz15nofbNCgu9y2GJg740CuvvJKm6V133ZX98ze/+U2pVNq1a9ezzz47NTW1ffv2/hYPzgu3aYBc7lsMTRzwoVardejQoUcffXTv3r1xHB8/fnzz5s2EkC1bthw7dqzfpYPzw20aIJf7FkMTB5DnnnvuyJEjO3bs2L59+7Zt29asWfOrX/3qwIEDy0+QUmLyiP5wm/R3uW8x1KCB3HPPPd/73vfuuuuu6enpMAwJIY7jSCk3btx49OhRQsjRo0c3btzY72LC+eE2DZDLfYuhDRo+dOzYsR/96EfZZOuHH36YEPL4449LKV3X/eY3v6nPREdYyfd93KZBcblvMQQ0AICm8GELAKApBDQAgKYQ0AAAmkJAAwBoCgENA+zAgQOf/vSn2/vbgwcPfuELXyCE/PznP//IJ3/961//yU9+0t6JANqGgIYr1M6dO59++mnP837wgx/0uywA54eZhDAMvvvd7x44cEAIsWXLlieffPLw4cOPPPLI5s2bZ2ZmZmZm9u3b5zjOl7/85b/97W9r164tFAq33377+vXr9+zZU6lUjh49+qUvfem+++7bu3fvr3/9a0LIV7/61V27dt13330PPvjgO++8s379+larlZ3o+9///osvvkgp3bhx4969e7EEM/QUatAw8F555ZUXXnjh4MGDBw8ebLVaTz31FOf8T3/60yOPPPLLX/5ycnJy//79+/btO3HixOHDh5988snnn39+eUbAt7/97U2bNj311FPnHnb//v3T09N/+MMffvzjH7/99tuEkEOHDh06dOjll19++eWXTdM8718BdBFq0DDwXnvttTvvvDPbbGz37t1vvPHGDTfccPPNN+fzeULI5OTkwsLC3Nzcjh07KKXVanXnzp2Xcti33npr27ZthBDbtm+77TZCyKFDh95+++3du3cTQprNZrVa7eFVASCgYQisnA2rlMpqx1leLz+4/Dgh5LwrJq9cqibblH3lYdM0zZ7z2c9+9rHHHuvyBQBcAJo4YODdeuutr776apahL730UlbtPcv111//xz/+kRAyPz//u9/9bvlxxli2eE2lUjlz5gwhJE3TN954gxBy0003ZX/SarV+//vfE0J27Nixf//+bBf2xx577MiRI6twdXAlQw0aBt7OnTvvvvvu3bt3CyFuuOGGL37xi4cPHz7rOffcc88vfvGLbdu2bd68eefOncv16/Xr11NKd+/e/dJLL42Ojt57772Tk5M33nijlPIzn/nMM888s3Xr1rVr1+7YsUNKedtttz3wwAM7d+60LGv9+vXf+MY3Vv1a4cqCxZLgijA3N/fiiy/ef//9Sqnbb7/9hz/84S233NLvQgF8BDRxwBWhVCrt27fvU5/61Pbt2++44w6kMwwE1KABADSFGjQAgKYQ0AAAmkJAAwBoCgENAKApBDQAgKYQ0AAAmkJAAwBoCgENAKApBDQAgKYQ0AAAmkJAAwBoCgENAKApBDQAgKYQ0AAAmkJAAwBoCgENAKApBDQAgKYQ0AAAmkJAAwBoCgENAKApBDQAgKYQ0AAAmkJAAwBoCgENAKApBDQAgKYQ0AAAmkJAAwBoCgENAKApBDQAgKYQ0AAAmkJAAwBoCgENAKApBDQAgKYQ0AAAmkJAAwBoCgENAKApBDQAgKYQ0AAAmkJAAwBoCgENAKApBDQAgKYQ0AAAmkJAAwBoCgENAKApBDQAgKYQ0AAAmkJAAwBoCgENAKApBDQAgKYQ0AAAmkJAAwBoCgENAKApBDQAgKYQ0AAAmkJAAwBoCgENAKApBDQAgKYQ0AAAmkJAAwBoCgENAKApBDQAgKYQ0AAAmkJAAwBoCgENAKApBDQAgKYQ0AAAmkJAAwBoCgENAKApBDQAgKYQ0AAAmkJAAwBoCgENAKApBDQAgKYQ0AAAmkJAAwBoCgENAKApBDQAgKYQ0AAAmkJAAwBoCgENAKApBDQAgKYQ0AAAmkJAAwBoCgENAKApBDQAgKYQ0AAAmkJAAwBoCgENAKApBDQAgKYQ0AAAmkJAAwBoCgENAKApBDQAgKYQ0AAAmkJAAwBoCgENAKApBDQAgKYQ0AAAmkJAAwBoCgENAKApBDQAgKYQ0AAAmkJAAwBoCgENAKApBDQAgKYQ0AAAmkJAAwBoCgENAKApBDQAgKYQ0AAAmkJAAwBoCgENAKApBDQAgKYQ0AAAmkJAAwBoCgENAKApBDQAgKYQ0AAAmkJAAwBoCgENAKCp/weldUEevn1DAwAAAABJRU5ErkJggg==\n" }, "metadata": {}, "output_type": "display_data" } ], "source": [ "%%R -o land\n", "\n", "land <- check_onland(turtles)\n", "\n", "plot_map(land, zoom=TRUE)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "First let's remove the entries that are on land." ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [], "source": [ "turtles.set_index(\"id\", inplace=True)\n", "land.set_index(\"id\", inplace=True)\n", "mask = turtles.index.isin(land.index)\n", "ocean = turtles[~mask]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now we can use shapely's buffer to \"connect\" the points that are close to each other to visualize a possible migration path." ] }, { "cell_type": "code", "execution_count": 15, "metadata": { "scrolled": false }, "outputs": [ { "data": { "text/html": [ "
Make this Notebook Trusted to load map: File -> Trust Notebook
" ], "text/plain": [ "" ] }, "execution_count": 15, "metadata": {}, "output_type": "execute_result" } ], "source": [ "from palettable.cartocolors.qualitative import Bold_6\n", "from shapely.geometry import MultiPoint\n", "\n", "colors = {s: c for s, c in zip(species_found, Bold_6.hex_colors)}\n", "style_function = lambda color: (\n", " lambda feature: dict(color=color, weight=2, opacity=0.6)\n", ")\n", "\n", "m = folium.Map()\n", "\n", "for turtle in species_found:\n", " df = ocean.loc[ocean[\"scientificName\"] == turtle]\n", " positions = MultiPoint(\n", " list(zip(df[\"decimalLongitude\"].values, df[\"decimalLatitude\"].values))\n", " ).buffer(distance=2)\n", " folium.GeoJson(\n", " positions.__geo_interface__,\n", " name=turtle,\n", " tooltip=turtle,\n", " style_function=style_function(color=colors[turtle]),\n", " ).add_to(m)\n", "\n", "m.fit_bounds(m.get_bounds())\n", "folium.LayerControl().add_to(m)\n", "\n", "m" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "One interesting feature of this map is *Dermochelys coriacea*'s migration between Brazilian and African shores.\n", "\n", "More information on [*Dermochelys coriacea*](https://www.iucnredlist.org/species/6494/43526147) and the other Sea Turtles can be found in the species [IUCN red list](https://www.iucnredlist.org/)." ] } ], "metadata": { "kernelspec": { "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.11.5" } }, "nbformat": 4, "nbformat_minor": 2 }