OTN and DFO Activity Summary in Eastern Canada: DRAFT
About this Document
This summary has been created using reproducible code (https://github.com/dfo-mar-odis/OTN-DFO-Summary), which gathers and filters data from the Ocean Tracking Network (OTN) to highlight activities in which Fisheries and Oceans Canada (DFO) has actively participated in eastern Canada since 2019 (data prior to this year is available upon request).
This summary is being prepared with the support of the OTN International Data Management Committee and DFO staff to provide an overview of current OTN DFO activities.
Please note that while we strive to include all relevant DFO-OTN information in this summary, there may be instances where some projects are not listed. If you are a DFO investigator with an OTN project that you do not see here, we encourage you to contact OTN directly.
The report is currently in draft form and is a work in progress. It has not yet been validated by all relevant OTN or DFO staff.
DFO & OTN
The OTN is a global aquatic research, data management and partnership platform. Since 2008, OTN has been deploying state-of-the-art ocean monitoring equipment and marine autonomous vehicles (gliders) in key ocean locations and inland waters around the world. OTN’s technical capabilities expanded in 2020 with the addition of remotely operated vehicles (ROVs) and side scan sonar systems. Researchers around the world are using OTN’s global infrastructure and analytical tools to document the movements and survival of aquatic animals in the context of changing ocean and freshwater environments. For more information, please visit the OTN site.
DFO is a partner in the OTN effort. DFO researchers initiate projects, while the OTN provides support. OTN assumes a leading role in managing infrastructure and its maintenance, as well as providing equipment to support research projects. Some DFO scientists upload data to OTN’s database to manage and ensure data quality.
Both OTN and DFO are committed to the principles of open data, actively working to ensure transparency and accessibility in sharing data related to marine research and monitoring.
OTN Data Wrangling
In this section, we gather data from OTN and leverage it to create informative maps and plots for this summary document. Our process involves data acquisition, filtering, and visualization. Below, we provide a brief overview of these steps, and you can expand the code sections to see the full data wrangling process.
<- ymd("20190101")
proj_start <- ymd("20230909")
proj_end <- -40.00
proj_long_upp <- -70.00
proj_long_low <- 60.00
proj_lat_upp <- 40.00 proj_lat_low
<- "https://gisp.dfo-mpo.gc.ca/arcgis/rest/services/FGP/Oceans_Act_Marine_Protected_Areas/MapServer/0"
url <- get_spatial_layer(url) %>%
MPAs st_make_valid() %>%
st_crop(xmin=proj_long_low,
ymin=proj_lat_low,
xmax=proj_long_upp,
ymax=proj_lat_upp)
<- readr::read_csv('https://members.oceantrack.org/geoserver/otn/ows?service=WFS&version=1.0.0&request=GetFeature&typeName=otn:stations_receivers&outputFormat=csv', guess_max = 13579) geoserver_receivers
<- readr::read_csv('https://members.oceantrack.org/geoserver/otn/ows?service=WFS&version=1.0.0&request=GetFeature&typeName=otn:animals&outputFormat=csv', guess_max = 13579)
geoserver_tag_releases
<- geoserver_tag_releases %>%
geoserver_tag_releases filter(yearcollected > 2018)
<- readr::read_csv('https://members.oceantrack.org/geoserver/otn/ows?service=WFS&version=1.0.0&request=GetFeature&typeName=otn:otn_resources_metadata_points&outputFormat=csv', guess_max = 13579) geoserver_projects
# Filter the geoserver_receivers dataset to select relevant stations
<- geoserver_receivers %>%
otn_stations # Remove rows with missing deploy_date values
filter(!is.na(deploy_date)) %>%
# Select stations that fall within the project timeframe defined above
filter((deploy_date > proj_start & deploy_date < proj_end) |
< proj_end & recovery_date > proj_start) |
(recovery_date < proj_end & is.na(recovery_date) & deploy_date > proj_start - duration(18, 'months')) |
(deploy_date
# Select specific models within certain date ranges
grepl('VR3', model) & deploy_date < proj_end & is.na(recovery_date) & deploy_date > proj_start - duration(4, 'years')) |
(grepl('VR4', model) & deploy_date < proj_end & is.na(recovery_date) & deploy_date > proj_start - duration(6, 'years'))) %>%
(
# Filter stations based on latitude and longitude bounds
filter(stn_lat >= proj_lat_low & stn_lat <= proj_lat_upp &
>= proj_long_low & stn_long <= proj_long_upp) stn_long
# Define the columns to keep
<- c("FID", "institutioncode", "datacenter_reference", "scientificname", "vernacularname","longitude", "latitude", "basisofrecord", "yearcollected", "collector", "classname")
columns_to_keep
# Filter and select the desired columns
<- geoserver_tag_releases %>%
otn_animals filter(longitude >= proj_long_low & longitude <= proj_long_upp &
>= proj_lat_low & latitude <= proj_lat_upp) %>%
latitude select(all_of(columns_to_keep))
# Define the columns to keep
<- c("FID", "resource_full_name", "ocean", "seriescode", "status", "collaborationtype")
columns_to_keep_projects
# Filter and select the desired columns
<- geoserver_projects %>%
otn_projects filter(seriescode == "DFOCanada") %>%
select(all_of(columns_to_keep_projects))
OTN Summary of Receivers in Eastern Canada
# Create a Leaflet map for receiver stations
<- leaflet(otn_stations) %>%
map # Add default basemap
addTiles() %>%
# Add MPA polygons
addPolygons(data = MPAs,
color = "yellow",
weight = 0,
fillOpacity = 1,
label = ~NAME_E) %>%
# Add circle markers for each station
addCircleMarkers(
lng = ~stn_long,
lat = ~stn_lat,
label = ~paste(seriescode, instrumenttype, sep = " - "),
radius = 0.5, # Adjust the circle marker size
color = ~ifelse(seriescode == "DFOCanada", "red", "blue"), # Marker color
fillOpacity = 0.8 # Adjust fill opacity
%>%
)
# Add bounding box based on filter
addRectangles(
lng1 = proj_long_low, # Left longitude
lat1 = proj_lat_low, # Lower latitude
lng2 = proj_long_upp, # Right longitude
lat2 = proj_lat_upp, # Upper latitude
weight = 2.5, # Border width
color = "darkorange", # Border color
fill = FALSE # Don't fill the rectangle
%>%
)
# Add legend for all elements of the plot
addLegend(
position = "bottomleft",
colors = c("blue", "red", "darkorange", "yellow"),
labels = c("All OTN", "OTN-DFO", "Data filter", "Marine Protected Areas"),
title = "Legend"
%>%
)
# Add filter control displaying the range date
addControl(
html = sprintf("<strong>Filter:</strong> %s - %s", proj_start, proj_end)
)
# Calculate the total number of receivers for each seriescode (OTN vs OTN-DFO).
<- otn_stations %>%
summary_table group_by(seriescode) %>%
summarize(
Total_Receivers = n()
%>%
) # Calculate the percentage relative to the total and round it.
mutate(
Percentage_Relative_To_Total = paste(round((Total_Receivers / sum(Total_Receivers)) * 100, 0), "%"))
# Rename columns
colnames(summary_table)[colnames(summary_table) == "Total_Receivers"] <- "Total # of Receivers"
colnames(summary_table)[colnames(summary_table) == "Percentage_Relative_To_Total"] <- "% Receivers relative to total"
# Print the summary table as a Markdown table.
<- knitr::kable(
table_receivers
summary_table, format = "markdown",
align = "l",
width = "100%"
)
Disclaimer: Information includes data that has been filtered for specific criteria relevant for eastern Canada and does not encompass all available OTN data. For a comprehensive dataset, please visit the OTN website.
# Display the map and table
map
table_receivers
seriescode | Total # of Receivers | % Receivers relative to total |
---|---|---|
DFOCanada | 1348 | 19 % |
OTNCanada | 431 | 6 % |
OTNGlobal | 4425 | 63 % |
UNAFFILIATED | 819 | 12 % |
OTN Summary of Species Tagged in Eastern Canada as part of DFO projects
This section is a summary of the OTN-DFO data, focusing on # of animals tagged by species in Eastern Canada. It includes the following elements:
- Number of animals tagged (i.e. number of tags deployed) displayed on the y-axis.
- Species displayed on the x-axis.
- A summary statistic comparing the number of animals tagged with involvement from DFO
# Create a summary table with counts of animals tagged by species.
<- otn_animals %>%
summary_otn_animals group_by(vernacularname) %>%
summarise(
Count = n(),
Count_DFO = sum(grepl("DFO", institutioncode))
)
# Reorder the levels of vernacularname based on Count
<- summary_otn_animals %>%
summary_otn_animals arrange(desc(Count)) %>%
mutate(vernacularname = factor(vernacularname, levels = vernacularname))
# Create a bar plot using ggplot2.
<- ggplot(summary_otn_animals, aes(x = vernacularname)) +
plot_animals geom_bar(aes(y = Count, fill = "OTN"), stat = "identity", position = "dodge") +
geom_bar(aes(y = Count_DFO, fill = "OTN-DFO"), stat = "identity", position = "dodge") +
labs(
title = "Number of Animals Tagged by Species in Eastern Canada",
x = "Species",
y = "Number of Animals Tagged"
+
) theme_minimal() +
theme(axis.text.x = element_text(angle = 45, hjust = 1)) +
coord_flip() +
scale_fill_manual(values = c("OTN" = "blue", "OTN-DFO" = "red"))
# Convert the ggplot plot to an interactive plot using plotly.
<- ggplotly(plot_animals) %>%
interactive_plot layout(legend = list(x = 0.5, y = 1))
# Create a Leaflet map to visualize were animals were originally tagged
<- leaflet(otn_animals) %>%
map_animals addTiles() %>%
# Add MPA polygons
addPolygons(data = MPAs,
color = "yellow",
weight = 0,
fillOpacity = 1,
label = ~NAME_E) %>%
# Add circle in the map for each animal tagged.
addCircleMarkers(
lng = ~longitude,
lat = ~latitude,
label = ~paste(institutioncode, scientificname, vernacularname, yearcollected, collector, sep = " - "),
radius = 0.5,
color = ~ifelse(grepl("DFO", institutioncode), "red", "blue"),
fillOpacity = 0.8
%>%
)
# Add bounding box based on filter defined at the beginning of code.
addRectangles(
lng1 = proj_long_low,
lat1 = proj_lat_low,
lng2 = proj_long_upp,
lat2 = proj_lat_upp,
weight = 2.5,
color = "darkorange",
fill = FALSE
%>%
)
# Add legend for different elements of the map.
addLegend(
position = "bottomleft",
colors = c("blue", "red", "darkorange", "yellow"),
labels = c("All OTN", "OTN-DFO", "Data filter", "Marine Protected Areas"),
title = "Legend"
)
# Calculate the minimum and maximum years in the dataset.
<- min(otn_animals$yearcollected)
min_year <- max(otn_animals$yearcollected)
max_year
# Add a text box to display the year collected range.
<- map_animals %>%
map_animals addControl(
html = sprintf("<strong>Year Collected Range:</strong> %d - %d", min_year, max_year),
position = "topleft"
)
interactive_plot
map_animals
# Filter the data frame to include only rows with "DFO" in the institutioncode
# Group the data by collector and institutioncode, and select the first row of each group
<- otn_animals %>%
filtered_data filter(grepl("DFO", institutioncode)) %>%
group_by(collector, institutioncode) %>%
slice(1) %>%
ungroup()
# Create a table of contributors and tagged species
::kable(filtered_data[, c("collector", "institutioncode", "vernacularname")], caption = "DFO Researchers and Tagged Species (also plotted in the map above in blue)") knitr
collector | institutioncode | vernacularname |
---|---|---|
AMY GLASS | DFO-BIO | snow crab |
BEN_ZISSERSON | DFO-BIO | Atlantic halibut |
BRUCE CHAPMAN, WARREN JOYCE | DFO-BIO | Atlantic halibut |
GLENN CROSSIN | DFO-SABS | Atlantic salmon |
MARC TRUDEL | DFO-SABS | Atlantic salmon |
# Calculate the percentage of OTN-DFO tagging for each species.
$Percentage = ifelse(summary_otn_animals$Count_DFO == 0, "0%", paste0(round(summary_otn_animals$Count / summary_otn_animals$Count_DFO * 100), "%"))
summary_otn_animals
# Create a table with species, OTN total count, and % OTN-DFO tagging.
::kable(
knitrc("vernacularname", "Count", "Percentage")],
summary_otn_animals[, format = "markdown",
col.names = c("Species", "OTN Total", "% OTN-DFO Tagging"),
caption = "Summary of Animals Tagged by Species in Eastern Canada"
)
Species | OTN Total | % OTN-DFO Tagging |
---|---|---|
Atlantic salmon | 409 | 100% |
Atlantic cod | 59 | 100% |
blue shark | 50 | 0% |
American lobster | 38 | 0% |
Atlantic halibut | 37 | 100% |
American eel | 33 | 0% |
alewife | 32 | 100% |
snow crab | 20 | 100% |
Atlantic tomcod | 1 | 100% |
shorthorn sculpin | 1 | 100% |
OTN and DFO Project Summaries
This section provides an overview of the 24 DFO-OTN projects available in the OTN database.
We have applied a basic filter in this section, considering projects affiliated with DFO, without specific filters related to years or geographic locations.
Please note that while we strive to include all relevant DFO-OTN projects in this summary, there may be instances where some projects are not listed. If you are a DFO researcher with an OTN project that you do not see here, we encourage you to contact OTN directly.
For the most up-to-date and comprehensive information on OTN projects and their participants, please visit the official OTN website: OTN Website
# Create a stacked bar plot of collaboration types by status using ggplot2.
<- ggplot(otn_projects, aes(x = collaborationtype, fill = status)) +
stacked_bar_plot geom_bar() + # Create a bar plot.
labs(title = "Collaboration Type Distribution") + # Set the plot title.
theme_minimal() + # Use a minimal theme.
scale_fill_manual(values = c("ongoing" = "green", "completed" = "blue", "proposed" = "orange")) + # Define fill colors.
coord_flip() # Flip the coordinates for horizontal bars.
# Convert the ggplot plot to a plotly object.
<- ggplotly(stacked_bar_plot)
interactive_stacked_bar_plot
# Customize the layout of the interactive plot.
%>%
interactive_stacked_bar_plot layout(legend = list(x = 0.5, y = 1)) # Adjust the position of the legend.
# Create an HTML table using knitr::kable to display a summary of DFO-OTN projects.
::kable(
knitrc("resource_full_name", "ocean", "status", "collaborationtype")],
otn_projects[, caption = "Summary of DFO-OTN Projects",
format = "html",
col.names = c("Project Title", "Ocean", "Status", "Collaboration Type")
)
Project Title | Ocean | Status | Collaboration Type |
---|---|---|---|
Migration of spiny dogfish | NW ATLANTIC | completed | Tracker |
Using a combination of 180kHz acoustic telemetry and satellite telemetry to quantify the early survival of harbour seal pups and connectivity between colonies of the St Lawrence Estuary | NW ATLANTIC | ongoing | Data |
Southern Gulf of St. Lawrence - DFO Cod Tagging | NW ATLANTIC | completed | Tracker |
Homing behaviour of short horn sculpin (Myoxocephalus scorpius) as measured by telemetry tracking in Newman Sound, Terra Nova National Park | NW ATLANTIC | completed | Data |
Dispersal in juvenile cod | NW ATLANTIC | completed | Data |
Maritimes Conservation Network: Gully Marine Protected Area (MPA) Acoustic Tracking Study | NW ATLANTIC | ongoing | Data |
Mixing of northern Gulf of St Lawrence cod into 3Ps: The Counting Fence project | NW ATLANTIC | completed | Data |
LaHave River, NS, Canada: DFO Salmon tagging | NW ATLANTIC | completed | Tracker |
Movement and habitat use of wolffish species in Newfoundland waters | NW ATLANTIC | completed | Data |
Inner Bay of Fundy Striped Bass Acoustic Telemetry | NW ATLANTIC | ongoing | Data |
St. Mary’s River adult Atlantic salmon tracking project | NW ATLANTIC | completed | Data |
Movements of Greenland sharks near the seal colony at Sable Island, Canada | NW ATLANTIC | ongoing | Tracker |
Smith Sound, Newfoundland - DFO Acoustic Array and Atlantic Cod Tagging | NW ATLANTIC | ongoing | Data |
Long-term telemetry study of Gilbert Bay Marine Protected Area, Southern Labrador | NW ATLANTIC | ongoing | Data |
Kennebecasis Basin Salmon Tracking | NW ATLANTIC | completed | Tracker |
Maritimes Region Atlantic salmon marine survival and migration. | NW ATLANTIC | ongoing | Data |
Maritimes Conservation Network: St. Anns Bank Marine Protected Area (MPA) Acoustic Tracking Study | NW ATLANTIC | ongoing | Data |
Shark Spatial Ecology and life history in NL waters | NW ATLANTIC | ongoing | Data |
Assessing the effects of aquaculture operations on the distribution and abundance of pelagic fishes and large predators in the Bay of Fundy. ##### Évaluation des effets des opérations aquaculture sur la distribution et l’abondance des poissons pélagiques et des grands prédateurs dans la baie de Fundy. | NW ATLANTIC | ongoing | Data |
DFO-NL Atlantic Cod Telemetry | NW ATLANTIC | ongoing | Tracker |
Investigating the spatial habitat interactions of a recent invader, green crab, to native species within Placentia Bay, Newfoundland | NW ATLANTIC | completed | Data |
Residency time, migration route, and survival of Atlantic salmon (Salmo salar) smolts and kelts in a Canadian fjord. | NW ATLANTIC | completed | Data |
Migration of porbeagle and blue sharks | NW ATLANTIC | completed | Tracker |
Scotian Shelf Snow Crab Tagging | NW ATLANTIC | ongoing | Data |
Future work includes creating the following additional information for projects:
- Project Title:
- Citation:
- Points of contact:
- Species tagged:
- Abstract:
Questions and Suggestions
If you have any questions or suggestions regarding this reproducible report, please don’t hesitate to reach out to Catalina.Gomez@dfo-mpo.gc.ca and/or Jonathan.Pye@dal.ca. We welcome any inquiries or ideas to enhance the content or clarity of this report.