# otndata `otndata` is a wrapper around the Ocean Tracking Network’s Plone content management system. The following data portals are nominally supported, though some things might not work depending on the optional add-ons used by the various networks. Because of this, [bug reports are really, really, *really* appreciated](https://github.com/trackyverse/otndata/issues)!! - [Atlantic Cooperative Telemetry Network (ACT)](https://data.theactnetwork.com) - [Integrated Tracking of Aquatic Animals in the Gulf (iTAG)](https://data.itagscience.com) - [Northeast Pacific Acoustic Telemetry Network (N-PAcT)](https://plone.npact.aoos.org) - [Ocean Tracking Network (OTN)](https://members.oceantrack.org), which also includes: - Acoustic Tracking Array Platform (ATAP) - MigraMar - Northeast Pacific (NEP) - [Ocean Tracking Network’s development server](https://members.devel.oceantrack.org) - [Pacific Islands Region Acoustic Telemetry Network (PIRAT)](https://piratnetwork.org) The following networks are not supported for various reasons: - [Pacific Aquatic Telemetry Hub (PATH)](https://fishdb.wfcb.ucdavis.edu): PATH will be supported following an update to their version of Plone in the next few months. - [European Tracking Network (ETN)](https://www.lifewatch.be/etn): ETN does not use a Plone CMS; see the [etn R package](https://inbo.github.io/etn) for programmatic access. - [Great Lakes Acoustic Telemetry Observing System (GLATOS)](https://glatos.org/portal): GLATOS does not use a Plone CMS or have a tool for programmatic access to their data portal; see the [glatos R package](https://github.com/ocean-tracking-network/glatos) for data import, visualization, and analysis tools. - [FACT](https://secoora.org/fact) and the [Riverine Acoustic Fish Telemetry Network (RAFT)](https://umesc-gisdb03.er.usgs.gov/raft) do not use a Plone CMS or have a tool for programmatic access to their data portal. ## Installation You can install the development version of otndata from [GitHub](https://github.com/) with: ``` r # install.packages("pak") pak::pak("trackyverse/otndata") ``` ## Search project metadata There are a few things that can be accessed without logging in. Most nodes come pre-baked with a statistics widget and a project map: ![](reference/figures/README-widget.png) If this widget is enabled, you can access the information shown without needing to log in. ``` r library(otndata) # OTN's server (default) otn_list_species() |> head() #> scientificname commonname #> 1 Abramis brama common bream #> 2 Acanthocybium solandri wahoo #> 3 Acanthurus bahianus cirujano pardo #> 4 Acanthurus blochii ringtail surgeonfish #> 5 Acanthurus chirurgus doctorfish #> 6 Acanthurus coeruleus blue tang # Try a different server otn_list_projects(network = "act") |> head() #> node collectioncode country longitude latitude #> 1 ACT RUSHARK USA -73.8185 38.0705 #> 2 ACT BTW1A USA -73.8150 38.0700 #> 3 ACT REVCOD USA -73.8185 38.0705 #> 4 ACT RAPPTRIBE USA -73.8185 38.0705 #> 5 ACT RIWFCC USA -73.8185 38.0705 #> 6 ACT INVENERGY USA -73.8185 38.0705 #> shortname #> 1 RUCOOL HMS Shark Study #> 2 BTWaves Caribbean Acoustic Tagging #> 3 Orsted Cod #> 4 Rappahannock Tribe Rappahannock River Array #> 5 Narragansett Bay Cable Corridor Monitoring #> 6 Invenergy Monitoring #> longname #> 1 Investigating the movements and distribution of highly migratory shark species in the U.S. Northeast Shelf Large Marine Environment #> 2 Beneath the Waves acoustic tagging in the Caribbean #> 3 Orsted Wind Farm Cod Monitoring #> 4 Rappahannock River Telemetry Array #> 5 Narragansett Bay Wind Farm Cable Corridor Monitoring #> 6 Invenergy Whale Monitoring #> ocean website #> 1 NW ATLANTIC #> 2 NW ATLANTIC https://www.beneaththewaves.org/initiatives/ #> 3 NW ATLANTIC https://rucool.marine.rutgers.edu #> 4 NW ATLANTIC https://www.rappahannocktribe.org/environmentalservices/ #> 5 NW ATLANTIC #> 6 NW ATLANTIC https://rucool.marine.rutgers.edu #> datacenter_infourl #> 1 NA #> 2 NA #> 3 NA #> 4 NA #> 5 NA #> 6 NA #> institutionname #> 1 Rutgers University Department of Marine and Coastal Sciences #> 2 Mid-Atlantic Acoustic Telemetry Observation System #> 3 Rutgers University Department of Marine and Coastal Sciences #> 4 Rappahannock Tribe #> 5 Rhode Island Department of Environmental Management, Division of Marine Fisheries #> 6 Rutgers University Department of Marine and Coastal Sciences otn_list_stats(network = "otn_devel") #> $project_count #> [1] 1662 #> #> $contributor_count #> [1] 2501 #> #> $inst_count #> [1] 479 #> #> $species_count #> [1] 468 #> #> $rcvr_count #> [1] 2814 ``` You can also query projects according to code, country of origin, species, institution, node, or point of contact. ``` r otn_search_node("ACT") |> head() #> node collectioncode country longitude latitude #> 1 ACT ASISEAL USA -73.8185 38.0705 #> 2 ACT SBURAA USA -73.8185 38.0705 #> 3 ACT WRWASTBASS USA -73.8185 38.0705 #> 4 ACT WTGHABASS USA -73.8185 38.0705 #> 5 ACT NCBONITO USA -73.8185 38.0705 #> 6 ACT CT008 USA -73.8185 38.0705 #> shortname #> 1 ASI - Seal Movement in New England Waters #> 2 SBU HRF Sturgeon RAA #> 3 WRWA/ SBI Striped Bass #> 4 WTGHA Menemsha Complex Striped Bass #> 5 NC Atlantic Bonito Tagging - NCSU/TNC #> 6 CT DEEP Array (2022-2026) #> longname #> 1 Understanding the movement ecology of rehabilitated seals in New England waters and potential interaction with white sharks #> 2 Defining the ecological and conservation importance of the Rockaway Atlantic Sturgeon aggregation area (RAA) #> 3 Initial assessment of seasonal fidelity of striped bass in the Westport River. #> 4 Striped Bass Site Attachment and Habitat Use in Menemsha Pond #> 5 Tracking coastwide movements of Atlantic bonito, Sarda sarda #> 6 CT DEEP array of VEMCO receivers in Long Island Sound and lower Connecticut River, 2022-2026. #> ocean website #> 1 NW ATLANTIC http://www.atlanticsharkinstitute.org #> 2 NW ATLANTIC #> 3 NW ATLANTIC #> 4 NW ATLANTIC #> 5 NW ATLANTIC #> 6 NW ATLANTIC #> datacenter_infourl #> 1 https://matos.asascience.com/ #> 2 https://matos.asascience.com/ #> 3 https://matos.asascience.com/ #> 4 https://matos.asascience.com/ #> 5 https://matos.asascience.com/ #> 6 https://matos.asascience.com/ # This accepts partial matches otn_search_code("tail") #> node collectioncode country longitude latitude shortname #> 1 ACT TAILWINDS USA -73.8185 38.0705 UMCES TailWinds #> longname #> 1 TailWinds: Team for Assessing Impacts to Living resources from offshore WIND turbineS #> ocean website datacenter_infourl #> 1 NW ATLANTIC https://tailwinds.umces.edu/ https://matos.asascience.com/ # This does not accept partial matches otn_search_contact("Mike O'Brien") #> node collectioncode country longitude latitude #> 1 ACT NAVYKENN USA -69.7800 43.7750 #> 2 ACT CBBBMB USA -73.8150 38.0700 #> 3 ACT TAILWINDS USA -73.8185 38.0705 #> 4 ACT MAMBON USA -73.8185 38.0705 #> shortname #> 1 Navy Kennebec ME Telemetry Array #> 2 UMCES Chesapeake Backbone, Mid-Bay #> 3 UMCES TailWinds #> 4 Mid-Atlantic MBON #> longname #> 1 Naval Undersea Warfare Center (NUWC) Kennebec River and Offshore Acoustic Telemetry Monitoring #> 2 Building a Mainstem Chesapeake Bay Telemetry Array: Mid-Bay Segment #> 3 TailWinds: Team for Assessing Impacts to Living resources from offshore WIND turbineS #> 4 Mid-Atlantic MBON: Dynamic Biodiversity and Telemetry Data for a Changing Coast #> ocean website #> 1 NW ATLANTIC #> 2 NW ATLANTIC #> 3 NW ATLANTIC https://tailwinds.umces.edu/ #> 4 NW ATLANTIC https://marinebon.org/us-mbon/mid-atlantic-mbon/ #> datacenter_infourl #> 1 https://matos.asascience.com/ #> 2 https://matos.asascience.com/ #> 3 https://matos.asascience.com/ #> 4 https://matos.asascience.com/ ``` ## Logging in You’ll need to log in to access other parts of the CMS using `otn_login`. This package is meant to interface with any node’s Plone instance. You can switch between them using the `network` argument. ``` r otn_login(network = 'act') #> ✔ Login successful! ``` If you don’t wish to enter your username and password every time, you can set the credentials for your system using the `otn_set_credentials` helper function. ``` r otn_set_credentials("act") otn_login("act") ``` ## Listing project files List your project’s files: ``` r otn_project_files(project = 'tailwinds', batch_size = 5) #> name description #> 1 tailwinds_master_metadata_20240812.csv #> 2 tailwinds_metadata_deployment_202411.xlsx #> 3 tailwinds_otn_metadata_deployment.xlsx #> 4 tailwinds_otn_metadata_deployment_202404.xlsx #> 5 VR2AR_546307_20240425_1.vrl #> url #> 1 https://data.theactnetwork.com/data/repository/tailwinds/data-and-metadata/receiver-metadata/tailwinds_master_metadata_20240812.csv #> 2 https://data.theactnetwork.com/data/repository/tailwinds/data-and-metadata/receiver-metadata/tailwinds_metadata_deployment_202411.xlsx #> 3 https://data.theactnetwork.com/data/repository/tailwinds/data-and-metadata/receiver-metadata/tailwinds_otn_metadata_deployment.xlsx #> 4 https://data.theactnetwork.com/data/repository/tailwinds/data-and-metadata/receiver-metadata/tailwinds_otn_metadata_deployment_202404.xlsx #> 5 https://data.theactnetwork.com/data/repository/tailwinds/data-and-metadata/detection-files/vr2ar_546307_20240425_1.vrl #> created modified creator size type #> 1 2026-06-10 03:51:32 2026-06-10 03:51:32 krichie 2.5 KB File #> 2 2026-06-10 03:51:58 2026-06-10 03:51:58 krichie 41.9 KB File #> 3 2026-06-10 03:52:17 2026-06-10 03:52:17 krichie 37.0 KB File #> 4 2026-06-10 03:52:30 2026-06-10 03:52:30 krichie 36.7 KB File #> 5 2026-06-10 03:55:34 2026-06-10 03:55:34 krichie 751.0 KB File otn_extract_files(project = 'tailwinds', batch_size = 5) #> name description #> 1 tailwinds_qualified_detections_2023.parquet #> 2 tailwinds_qualified_detections_2023.zip #> 3 tailwinds_qualified_detections_2024.parquet #> 4 tailwinds_qualified_detections_2024.zip #> 5 tailwinds_unqualified_detections_2023.parquet #> url #> 1 https://data.theactnetwork.com/data/repository/tailwinds/detection-extracts/tailwinds_qualified_detections_2023-parquet #> 2 https://data.theactnetwork.com/data/repository/tailwinds/detection-extracts/tailwinds_qualified_detections_2023.zip #> 3 https://data.theactnetwork.com/data/repository/tailwinds/detection-extracts/tailwinds_qualified_detections_2024-parquet #> 4 https://data.theactnetwork.com/data/repository/tailwinds/detection-extracts/tailwinds_qualified_detections_2024.zip #> 5 https://data.theactnetwork.com/data/repository/tailwinds/detection-extracts/tailwinds_unqualified_detections_2023-parquet #> created modified creator size type #> 1 2026-06-12 13:25:31 2026-06-12 13:25:31 krichie 133.0 KB File #> 2 2026-06-12 13:25:49 2026-06-12 13:25:50 krichie 95.6 KB File #> 3 2026-06-12 13:26:03 2026-06-12 13:26:03 krichie 174.2 KB File #> 4 2026-06-12 13:26:19 2026-06-12 13:26:19 krichie 129.7 KB File #> 5 2026-06-12 13:26:33 2026-06-12 13:26:33 krichie 602.3 KB File ``` Or, just grab the ones modified more recently using the `since` argument: ``` r otn_project_files( project = 'tailwinds', since = "2026-06-01", batch_size = 5 ) #> name description #> 1 tailwinds_master_metadata_20240812.csv #> 2 tailwinds_metadata_deployment_202411.xlsx #> 3 tailwinds_otn_metadata_deployment.xlsx #> 4 tailwinds_otn_metadata_deployment_202404.xlsx #> 5 VR2AR_546307_20240425_1.vrl #> url #> 1 https://data.theactnetwork.com/data/repository/tailwinds/data-and-metadata/receiver-metadata/tailwinds_master_metadata_20240812.csv #> 2 https://data.theactnetwork.com/data/repository/tailwinds/data-and-metadata/receiver-metadata/tailwinds_metadata_deployment_202411.xlsx #> 3 https://data.theactnetwork.com/data/repository/tailwinds/data-and-metadata/receiver-metadata/tailwinds_otn_metadata_deployment.xlsx #> 4 https://data.theactnetwork.com/data/repository/tailwinds/data-and-metadata/receiver-metadata/tailwinds_otn_metadata_deployment_202404.xlsx #> 5 https://data.theactnetwork.com/data/repository/tailwinds/data-and-metadata/detection-files/vr2ar_546307_20240425_1.vrl #> created modified creator size type #> 1 2026-06-10 03:51:32 2026-06-10 03:51:32 krichie 2.5 KB File #> 2 2026-06-10 03:51:58 2026-06-10 03:51:58 krichie 41.9 KB File #> 3 2026-06-10 03:52:17 2026-06-10 03:52:17 krichie 37.0 KB File #> 4 2026-06-10 03:52:30 2026-06-10 03:52:30 krichie 36.7 KB File #> 5 2026-06-10 03:55:34 2026-06-10 03:55:34 krichie 751.0 KB File otn_extract_files( project = 'tailwinds', since = "2026-06-01", batch_size = 5 ) #> name description #> 1 tailwinds_qualified_detections_2023.parquet #> 2 tailwinds_qualified_detections_2023.zip #> 3 tailwinds_qualified_detections_2024.parquet #> 4 tailwinds_qualified_detections_2024.zip #> 5 tailwinds_unqualified_detections_2023.parquet #> url #> 1 https://data.theactnetwork.com/data/repository/tailwinds/detection-extracts/tailwinds_qualified_detections_2023-parquet #> 2 https://data.theactnetwork.com/data/repository/tailwinds/detection-extracts/tailwinds_qualified_detections_2023.zip #> 3 https://data.theactnetwork.com/data/repository/tailwinds/detection-extracts/tailwinds_qualified_detections_2024-parquet #> 4 https://data.theactnetwork.com/data/repository/tailwinds/detection-extracts/tailwinds_qualified_detections_2024.zip #> 5 https://data.theactnetwork.com/data/repository/tailwinds/detection-extracts/tailwinds_unqualified_detections_2023-parquet #> created modified creator size type #> 1 2026-06-12 13:25:31 2026-06-12 13:25:31 krichie 133.0 KB File #> 2 2026-06-12 13:25:49 2026-06-12 13:25:50 krichie 95.6 KB File #> 3 2026-06-12 13:26:03 2026-06-12 13:26:03 krichie 174.2 KB File #> 4 2026-06-12 13:26:19 2026-06-12 13:26:19 krichie 129.7 KB File #> 5 2026-06-12 13:26:33 2026-06-12 13:26:33 krichie 602.3 KB File ``` ## Download files You can pipe this list into `otn_download` to save the files to your computer: ``` r otn_extract_files( project = 'tailwinds', since = "2026-06-01", batch_size = 1 ) |> otn_download() #> ℹ Files saved to ./tailwinds_qualified_detections_2023.parquet. ``` Or download directly via its URL: ``` r otn_download( url = "https://members.devel.oceantrack.org/data/repository/nsbs/detection-extracts/nsbs_matched_detections_2017.zip" ) ``` ## Upload files Upload files to the staging area in preparation for the next data push: ``` r "VR2AR_XYZ_123.vrl" |> otn_upload("my_project") ``` ## Summarize your detection extracts You can create [otndo reports](https://otndo.obrien.page) using the `otn_receiver_summary` and `otn_tag_summary` helper functions. ``` r otn_receiver_summary("tailwinds") otn_tag_summary("mdwea") ``` # Package index ## Authentication - [`otn_login()`](https://otndata.obrien.page/reference/otn_login.md) : Authenticate to an Ocean Tracking Network server. - [`otn_set_credentials()`](https://otndata.obrien.page/reference/otn_set_credentials.md) : Installs your OTN username and password in your `.Renviron` file for repeated use. ## Listing Project and Extract Files - [`otn_project_files()`](https://otndata.obrien.page/reference/otn_project_files.md) : List OTN project files. - [`otn_extract_files()`](https://otndata.obrien.page/reference/otn_extract_files.md) : List OTN extract files. ## Downloading and Uploading files - [`otn_download()`](https://otndata.obrien.page/reference/otn_download.md) : Download file(s) from an OTN-style Plone server. - [`otn_upload()`](https://otndata.obrien.page/reference/otn_upload.md) : Upload a file to the Plone CMS ## Summarize data extracts Functions to download and prepare data for [otndo](https://otndo.obrien.page) reports - [`otn_receiver_summary()`](https://otndata.obrien.page/reference/otn_receiver_summary.md) : Create summary reports of receiver project data from the OTN data push. - [`otn_tag_summary()`](https://otndata.obrien.page/reference/otn_tag_summary.md) : Create summary reports of receiver project data from the OTN data push. ## Data from the summary widget Polls the data from the OTN summary widget. Not all nodes have this add-on installed, so be aware that they may not work. - [`otn_search_code()`](https://otndata.obrien.page/reference/otn_search_code.md) : Search OTN database by project code. - [`otn_search_contact()`](https://otndata.obrien.page/reference/otn_search_contact.md) : Search OTN database by project contact. - [`otn_search_country()`](https://otndata.obrien.page/reference/otn_search_country.md) : Search OTN database by project country. - [`otn_search_institution()`](https://otndata.obrien.page/reference/otn_search_institution.md) : Search OTN database by institution. - [`otn_search_node()`](https://otndata.obrien.page/reference/otn_search_node.md) : Search OTN database by local node. - [`otn_search_species()`](https://otndata.obrien.page/reference/otn_search_species.md) : Search OTN database by project species - [`otn_list_contacts()`](https://otndata.obrien.page/reference/otn_list_contacts.md) : Retrieve OTN contact list. - [`otn_list_countries()`](https://otndata.obrien.page/reference/otn_list_countries.md) : Retrieve OTN country list. - [`otn_list_institutions()`](https://otndata.obrien.page/reference/otn_list_institutions.md) : Retrieve OTN institution list. - [`otn_list_projects()`](https://otndata.obrien.page/reference/otn_list_projects.md) : Retrieve OTN project list. - [`otn_list_species()`](https://otndata.obrien.page/reference/otn_list_species.md) : Retrieve OTN species list. - [`otn_list_stats()`](https://otndata.obrien.page/reference/otn_list_stats.md) : Retrieve OTN network statistics. ## Internals - [`.otn_server_url()`](https://otndata.obrien.page/reference/dot-otn_server_url.md) : Set the OTN Plone instance with which you wish to interact. - [`.otn_api()`](https://otndata.obrien.page/reference/dot-otn_api.md) : Call OTN API endpoints. - [`.otn_files()`](https://otndata.obrien.page/reference/dot-otn_files.md) : Return files associated with an OTN project. - [`.otn_list()`](https://otndata.obrien.page/reference/dot-otn_list.md) : Internal function to list small OTN databases. - [`.otn_search()`](https://otndata.obrien.page/reference/dot-otn_search.md) : Internal function for searching OTN projects. - [`build_namespace()`](https://otndata.obrien.page/reference/build_namespace.md) : Build project namespace # Articles ### All vignettes - [Access for ACT Network members](https://otndata.obrien.page/articles/act_network.md):