# acousticTS: physics-based acoustic TS modelling in R

**URL:** <https://discourse.ocean-acoustics.org/t/acousticts-physics-based-acoustic-ts-modelling-in-r/233>\
**Category:** Software\
**Tags:** open-source\
**Created:** [October 2, 2026, 5:59pm UTC](https://discourse.ocean-acoustics.org/t/acousticts-physics-based-acoustic-ts-modelling-in-r/233 "2026-10-02T17:59:10Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![brandynlucca](https://yyz1.discourse-cdn.com/flex011/user_avatar/discourse.ocean-acoustics.org/brandynlucca/32/12_2.png) [@brandynlucca](https://discourse.ocean-acoustics.org/u/brandynlucca)\
**Post date:** [October 2, 2026, 5:59pm UTC](https://discourse.ocean-acoustics.org/t/acousticts-physics-based-acoustic-ts-modelling-in-r/233/1 "2026-10-02T17:59:10Z")

</div>

Hi all!

For the past 10 years or so I have been developing **[acousticTS](https://brandynlucca.github.io/acousticTS/)**, an R package for modelling the acoustic TS of fish, zooplankton, calibration spheres, and other individual scatterers.

 ![web-app-manifest-192x192](https://canada1.discourse-cdn.com/flex011/uploads/soundsphere/original/1X/b02b09f24db9cce42f6fbb1dbc5f7a4791b66090.png)  
_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_ 🙂

[![CRAN Version](https://canada1.discourse-cdn.com/flex011/uploads/soundsphere/original/1X/b2a778e7035985190326a687d117431d84fb24f6.svg)](https://doi.org/10.32614/CRAN.package.acousticTS) [![GitHub Version](https://canada1.discourse-cdn.com/flex011/uploads/soundsphere/original/1X/de1c8c63cfd7765ec7aec6fe6ac87ef95ef5e7a7.svg)](https://github.com/brandynlucca/acousticTS) [![DOI](https://canada1.discourse-cdn.com/flex011/uploads/soundsphere/original/1X/8c5f1e7d6a972634409dbeffbab5d0b3c351ac9f.svg)](https://doi.org/10.5281/zenodo.7600659)

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](https://brandynlucca.github.io/acousticTS/articles/model-library/model-library.html)** 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](https://doi.org/10.1016/j.icesjms.2005.03.010)**
- 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](https://github.com/ices-tools-dev/echosms)**, **[e3Dss](https://github.com/Zetison/e3Dss)**, **[EffectiveWaves.jl](https://github.com/JuliaWaveScattering/EffectiveWaves.jl)**, the NOAA **[KRM](https://www.fisheries.noaa.gov/data-tools/krm-model)**/**[SDWBA](https://www.fisheries.noaa.gov/data-tools/sdwba-model)**/**[calibration sphere](https://www.fisheries.noaa.gov/data-tools/standard-sphere-target-strength-calculator)** web applets, **[KRMr](https://github.com/SvenGastauer/KRMr)**, **[liquid\_spheroid](https://github.com/elavia/liquid_spheroid)**, **[Prol\_spheroid](https://github.com/CRIMAC-WP4-Machine-learning/Prol_Spheroid)**, **[SphereTS](https://github.com/gavinmacaulay/SphereTS)**, **[ZooScatR](https://github.com/AustralianAntarcticDivision/ZooScatR)**, **[SDWBA\_TS](https://github.com/ccamlr/SDWBA_TS)**, the **[MathieuandSpheroidalWaveFunctions](https://github.com/MathieuandSpheroidalWaveFunctions)** repositories, **[bempp-cl](https://github.com/bempp/bempp-cl)**, **[scikit-fem](https://github.com/kinnala/scikit-fem)**

I’ve also used my Julia packages, **[AcousticScattering.jl](https://github.com/brandynlucca/AcousticScattering.jl)** and **[SpheroidalWaves.jl](https://github.com/brandynlucca/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](https://brandynlucca.github.io/acousticTS/articles/validation-benchmarks/validation-benchmarks.html)** 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](https://github.com/echostack-org/echopype)**. You supply the target geometry and acoustic properties, and choose a model whose assumptions fit the problem.

Install from CRAN with:

```R
install.packages("acousticTS")

```

Or install the latest development version from GitHub:

```r
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](https://brandynlucca.github.io/acousticTS/)** - **[Report issues](https://github.com/brandynlucca/acousticTS/issues)** - **[CRAN source](https://cran.r-project.org/web/packages/acousticTS/index.html)** - **[Zenodo](https://zenodo.org/records/22990493)**
