A Shiny app to explore Biotic data within the Institute of Marine Research Norway (IMR) database. Version 0.8.0, 2026-05-19.
Biotic Explorer is a Shiny app for examining and manipulating Norwegian Maritime Data Center (NMD) standard Biotic XML files and the IMR Biotic database. It operates in two modes:
- File mode — open local NMD Biotic v3 XML files directly from your computer, no database required.
- Database mode — connect to a DuckDB database compiled by
BioticExplorerServer
to query the full IMR Biotic dataset. The database must be installed
to the default location
(
~/IMR_biotic_BES_database) for BioticExplorer to detect it automatically at startup.
There is currently no server version of Biotic Explorer running. Run it locally on your computer by following the instructions below.
The app requires R and RStudio / Posit. Install these following the instructions on their respective websites. Then install the Shiny package in R:
install.packages("shiny")Running the app for the first time automatically installs and loads all required packages. If you encounter installation problems, read the error messages carefully or contact the app maintainer.
Click the green Code button on GitHub → Download ZIP. Extract
the ZIP to a desired location, open app.R in RStudio, and click Run
App.
You may also run the app directly from GitHub without downloading it first:
library(shiny)
shiny::runGitHub("BioticExplorer", "DeepWaterIMR")The Biotic Explorer interface consists of the sidebar, main panel, process symbol, and help button (Figure 1). The sidebar consists of tabs. The main panel consists of different elements depending on the active tab. The data interface consists of data selection fields, a data overview, and subset buttons.
Figure 1. The Biotic Explorer interface consists of the sidebar (1), main panel (2), process symbol (3), and help button (4). The sidebar consists of tabs (1a). The main panel consists of different elements depending on tab selection. The data interface consists of data selection fields (2a), data overview (2b), and subset buttons (2c).
The process symbol has two states: the IMR logo and a BUSY icon (Figure 2). The BUSY icon means the app is processing data — avoid clicking tabs, boxes, or buttons while this is active. Note that internal R processing and GUI rendering are separate steps, so it may take a moment for the app to become responsive after the BUSY symbol disappears.
Figure 2. Process symbol states. The app is ready when the IMR logo is shown (left). The app is busy when the BUSY icon is shown (right). Avoid clicking anything while the app is busy.
Click Load data & filter → From the database. Use the filter controls to narrow down the dataset, then click Send inquiry. The BUSY symbol disappears when the operation is done — this may take time for large selections. An overview of the selected data and station positions is shown on the right. You can further narrow the selection with the Subset button, or return to the full database selection with Reset.
Click Load data & filter → From files → Browse.. and select one or
more .xml files from your computer. An overview and station map appear
below. Use the Filter data by fields to select the data you want to
keep and click Subset. The Reset button restores the full loaded
dataset.
Click Load data & filter → From files → Browse.. and open an .rds
file previously saved from BioticExplorer (see Export
data). The session resumes with all data and filter
selections intact.
The Cruise overview tab shows all cruises (the mission element of
NMD Biotic files) in a searchable table.
The Stations & catches section contains three tabs:
- Overview — summary plots of catch composition, catch weights, gear
types, and station depths derived from the
fishstationandcatchsampleelements. - Map of catches — interactive leaflet map of catch weight per station, with a species selector and a catch composition map.
- Examine data — the full merged station and catch dataset in a searchable table.
The Individuals & ages section contains three tabs:
- Overview — length and weight distribution plots across all species with sufficient data, plus a summary table of measurement counts per species.
- Species plots — life-history plots for a selected species: length–weight relationship, age–length growth model, L50 maturity, sex ratio map, geographic size distribution, sex-specific length distribution, and stage-specific length distribution. Plots appear only when enough data are available.
- Examine data — the full merged individual and age dataset in a searchable table.
The Hierarchical data tables section exposes the raw NMD Biotic
elements (fishstation, catchsample, individual,
agedetermination) in their original tabular form without the
cross-table merging applied in the other views.
Use the Download → Data tab to export the current session. To reopen
the data in BioticExplorer or in R, choose R format — this saves an
.rds file readable with
readRDS().
Data can also be exported as ZIP-compressed CSV files or as a
multi-sheet Excel workbook.
Use the Download → Figures tab to export any combination of figures as PNG, JPEG, or PDF. The following figure groups are available:
- Station overview figures — species composition, summed/mean/range catch weights, mean specimen weight, catch counts, gear-type catch totals, station depth, and fishing depth by species.
- Station maps — total catch map (by species or all species combined) and catch composition pie-chart map.
- Individual overview — length and weight distributions across all species with sufficient measurements.
- Species-specific figures — select a species from the dropdown to export any of: length–weight relationship, age–length growth curve (von Bertalanffy, Gompertz, or Logistic), 50% maturity at length (L50), sex ratio map, geographic size distribution map, sex-specific length distribution, and stage-specific length distribution. Figures for which the selected species lacks sufficient data are silently skipped.
Leaflet map figures are rendered as static images via mapview. To
modify figures beyond the options offered in the app, download
BioticExplorer and edit
R/figure_functions.R.
Contributions are welcome. Please contact the app maintainer Mikko Vihtakari (mikko.vihtakari@hi.no) to discuss ideas or report issues, or open an issue on the GitHub repository.
The app automatically installs the following packages on first run:
- shiny: The Shiny web application framework.
- shinydashboard: Dashboard layout for Shiny.
- bsplus: Bootstrap extensions for tooltips and collapsible panels.
- shinyFiles: File up- and download utilities for Shiny.
- DT: Interactive data tables.
- data.table: Fast in-memory data manipulation.
- dtplyr: dplyr syntax for data.table objects.
- tidyverse: Data manipulation and plotting (dplyr, ggplot2, tidyr, etc.).
- RstoxData: Reads NMD Biotic XML files.
- leaflet: Interactive maps.
- leaflet.minicharts: Pie-chart and bar-chart markers for leaflet maps.
- mapview: Renders leaflet maps to static image files for download.
- plotly: Interactive plots.
- openxlsx: Writes Excel files.
- scales: Axis scaling helpers for ggplot2.
- fishmethods: Fits growth models (von Bertalanffy, Gompertz, Logistic).
- viridis: Viridis colour scales for size distribution maps.
- DBI: Database interface.
- duckdb: DuckDB driver for the BioticExplorer database.
- devtools: Used to install packages not available on CRAN.
2026-05-19 Bumped to version 0.8.0. Introduced all.x = TRUE merge for
stations without catch (empty-catch stations now retained with
commonname = NA). Bug fixes and completed figure download. Fixed
download format detection, file-mode mission type filter, database-mode
column existence guards, cruise series label lookup, and several smaller
issues. All figure types in Download → Figures are now fully functional.
Git repository moved to
DeepWaterIMR.
2025-01-21 Migrated BioticExplorer to DuckDB. The app now works on all commonly used operating systems.
2020-05-13 Added complete database support. All planned features incorporated; bug-fixing and polish remain.
2020-01-22 Update preparing for beta-release. Many new features. Unstable and undocumented.
2019-07-11 Fixed Windows-related problems. The app should work on most institutional machines.
2019-07-08 First alpha version uploaded. Works but incomplete; intended for internal testing.

