Hi all!
For the past 10 years or so I have been developing acousticTS, an R package for modelling the acoustic TS of fish, zooplankton, calibration spheres, and other individual scatterers.
My favorite part about this package: my then-1-year-old son’s scribbles designed (with a bit of Inkscape interpolation magic) the “copefish” in the hex logo
You can define a target’s geometry and material properties, run compatible scattering models through a common interface, and compare predictions across frequency, orientation, size, and shape.
I intend acousticTS to complement other actively developed scattering packages, not compete with or replace them. Having multiple implementations gives us more ways to compare results and investigate discrepancies. The model library includes:
- Modal series solutions for spheres, finite cylinders, prolate spheroids, elastic-shelled spheres, bent cylinders, elastic cylinders, and solid elastic spheres (i.e., calibration spheres)
- DWBA, SDWBA, phase-compensated DWBA
- KRM
- Other simpler approximations (high-pass, two-ray cylindrical)
- Viscous-elastic layered-spheres
- Composite flesh and backbone based on Gorska et al., 2005
- T-matrix methods for monostatic and, for supported shapes and boundary conditions, bistatic modelling
You can use idealized shapes or digitized body profiles and run parameter sweeps within the same R workflow.
I’ve drawn on software from this community for benchmarks and validation checks. Thank you to the developers of:
- echoSMs, e3Dss, EffectiveWaves.jl, the NOAA KRM/SDWBA/calibration sphere web applets, KRMr, liquid_spheroid, Prol_spheroid, SphereTS, ZooScatR, SDWBA_TS, the MathieuandSpheroidalWaveFunctions repositories, bempp-cl, scikit-fem
I’ve also used my Julia packages, AcousticScattering.jl and SpheroidalWaves.jl, in this work.
The checks apply to specific geometries, parameters, and model branches; agreement between implementations does not establish agreement with measurements across species or frequency ranges. Some models remain experimental or lack external validation. The validation documentation describes the evidence and limitations.
Importantly: acousticTS does not process echosounder files, classify echograms, or produce survey biomass estimates. For echosounder data processing, see software like echopype. You supply the target geometry and acoustic properties, and choose a model whose assumptions fit the problem.
Install from CRAN with:
install.packages("acousticTS")
Or install the latest development version from GitHub:
install.packages("pak") # If not already installed
pak::pkg_install("brandynlucca/acousticTS")
I’d welcome feedback from anyone developing or using scattering models, especially reproducible comparison cases and reports of discrepancies.
Documentation and examples - Report issues - CRAN source - Zenodo
