The hardware and bandwidth for this mirror is donated by dogado GmbH, the Webhosting and Full Service-Cloud Provider. Check out our Wordpress Tutorial.
If you wish to report a bug, or if you are interested in having us mirror your free-software or open-source project, please feel free to contact us at mirror[@]dogado.de.
Predict and map oyster growth suitability from environmental survey data
oystermapR takes tabular sensor data — from ADCPs, CTDs,
bathymetric sonar, or standard CSV files — applies species-specific
AHP-weighted scoring rules, and returns per-location suitability scores
alongside a GeoTIFF heatmap ready to load in QGIS.
| Key | Species | Common name |
|---|---|---|
ostrea_edulis |
Ostrea edulis | European Flat Oyster |
magallana_gigas |
Magallana gigas | Pacific Oyster |
crassostrea_angulata |
Crassostrea angulata | Portuguese Oyster |
ostrea_stentina |
Ostrea stentina | Denticulate Flat Oyster |
ostrea_lurida |
Ostrea lurida | Olympia Oyster |
# From CRAN (once accepted)
install.packages("oystermapR")
# Development version from GitHub
devtools::install_github("trissyboats/oystermapR")Requires R >= 4.1.0. Core dependencies: dplyr,
terra, sf, cli,
rlang.
library(oystermapR)
# Load your survey data
df <- read.csv("my_survey.csv")
# Run the prediction
result <- predict_oyster(
data = df,
species = "ostrea_edulis",
output_geotiff = "oyster_suitability.tif",
verbose = TRUE
)
# Inspect high-suitability sites
subset(result, suitability_class == "High")
# Export matching QGIS colour ramp style
export_qml_style("oyster_suitability.tif")The output dataframe contains suitability (0–1),
suitability_class (High / Moderate / Low / Very Low /
Excluded), per-variable component scores, and the original columns.
Your CSV needs at minimum lat, lon, and
date. Any environmental columns present are scored
automatically — missing variables are skipped and their weights
redistributed.
| Variable | Recognised column names |
|---|---|
| Temperature (°C) | temperature, temp,
temp_c |
| Salinity (PSU) | salinity, sal,
salinity_psu |
| Dissolved oxygen (mg/L) | dissolved_oxygen, do,
oxygen |
| Depth (m) | depth, depth_m |
| Current velocity (m/s) | current_velocity, velocity,
current |
| Shear stress (N/m²) | shear_stress, tau,
bed_shear |
| Chlorophyll-a (µg/L) | chlorophyll_a, chla,
chlorophyll |
| Turbidity (NTU) | turbidity, ntu, turb |
| Slope (degrees) | slope, slope_deg |
| Substrate hardness | substrate_hardness, hardness |
A sample dataset is included at
inst/extdata/sample_survey.csv.
# Nortek Signature 500 ADCP
adcp <- read_nortek_adcp("adcp_export.csv")
# Ping 3DSS / BioBase bathymetric raster
bathy <- read_sonar_tif("bathymetry.tif")
# Merge multiple sensor sources onto a common spatial grid
survey <- merge_sensor_data(adcp = adcp, bathy = bathy)# Validate against known presence/absence records
val <- validate_against_records(result, records)
val$auc # ROC-AUC
val$tss # True Skill Statistic
# Spatial block cross-validation (avoids inflated AUC from spatial autocorrelation)
cv <- spatial_block_cv(result, records, n_blocks = 5)
cv$mean_auc
# Variable importance
imp <- permutation_importance(result, records)
# Partial dependence curve for a single variable
sensitivity_analysis(result, records, variable = "temperature")Update species tolerance parameters from your own field observations:
fit <- update_species_tolerances(
records = field_data,
species = "ostrea_edulis",
update_vars = c("temperature", "salinity", "depth")
)
# Subsequent predict_oyster() calls use the updated parameters automatically
result2 <- predict_oyster(df, "ostrea_edulis")
# Persist across sessions
save_tolerance_update("ostrea_edulis")| Function | Purpose |
|---|---|
score_wave_exposure() |
JONSWAP wave height from fetch and wind speed |
score_sediment_stability() |
Shields parameter mobility analysis |
score_larval_connectivity() |
Hybrid Gaussian kernel + OpenDrift connectivity matrix |
score_predation_risk() |
Starfish, crab, and snail predation pressure |
score_hab_risk() |
Harmful algal bloom risk (PSP/ASP/DSP/AZP) |
score_anthropogenic_disturbance() |
Bottom trawling, anchor damage, dredging |
add_shellfish_classification() |
UK/EU harvesting area classification (A/B/C) |
compare_species() |
Side-by-side suitability across multiple species |
composite_seasonal() |
Merge summer/winter surveys into a composite score |
generate_report() |
Export a formatted PDF or HTML report |
# Export GeoTIFF + contour lines
predict_oyster(df, "ostrea_edulis", output_geotiff = "suitability.tif")
# Export matching colour ramp style file
export_qml_style("suitability.tif")Load suitability.tif in QGIS, then drag the
.qml file onto the layer to apply the yellow → orange → red
suitability colour ramp instantly.
If you use oystermapR in published work, please
cite:
Tucker T. (2026). oystermapR: Predict and Map Oyster Growth Suitability from Environmental Data. R package version 1.0.0. https://github.com/trissyboats/oystermapR
GPL-3 © T Tucker
Free for research, education, and non-commercial use. Commercial entities wishing to embed oystermapR in a proprietary product should contact tristantucker48@gmail.com to discuss a commercial licence.
These binaries (installable software) and packages are in development.
They may not be fully stable and should be used with caution. We make no claims about them.
Health stats visible at Monitor.