Skip to contents

acousticTS implementation

Benchmarked Validated

SDWBA applies stochastic phase variability to the segment contributions of a DWBA target (Demer and Stephane G. Conti 2003; Demer and Stéphane G. Conti 2003, 2005; Conti and Demer 2006).

The acousticTS package uses object-based scatterers so the same implementation pattern carries across models: create a scatterer, run target_strength(), inspect the stored model output, and then compare a small set of physically important inputs. For SDWBA, the required object class is still FLS, but target_strength() also receives stochastic controls for phase variability and resampling.

The important implementation point is that the SDWBA does not replace the underlying DWBA geometry. It uses the same fluid-like target description and then layers a stochastic phase model onto the segment contributions. In practice, that means the object-building step remains deterministic, while the model call is where unresolved variability is introduced.

Fluid-like scatterer object generation

library(acousticTS)

cylinder_shape <- cylinder(
  length_body = 15e-3,
  radius_body = 2e-3,
  n_segments = 50
)

stochastic_scatterer <- fls_generate(
  shape = cylinder_shape,
  g_body = 1.058,
  h_body = 1.058,
  theta_body = pi / 2
)

stochastic_scatterer
## FLS-object
##  Fluid-like scatterer 
##  ID:UID
## Body dimensions:
##  Length:0.015 m(n = 50 cylinders)
##  Mean radius:0.002 m
##  Max radius:0.002 m
## Shape parameters:
##  Defined shape:Cylinder
##  L/a ratio:7.5
##  Taper order:N/A
## Material properties:
##  g: 1.058
##  h: 1.058
## Body orientation (relative to transducer face/axis):1.571 radians

Calculating deterministic and stochastic TS

The example below runs both dwba and sdwba so the stochastic averaging can be compared directly with the baseline deterministic response.

frequency <- seq(50e3, 200e3, by = 10e3)
set.seed(2025)

stochastic_scatterer <- target_strength(
  object = stochastic_scatterer,
  frequency = frequency,
  model = c("dwba", "sdwba"),
  n_iterations = 30,
  n_segments_init = 14,
  phase_sd_init = sqrt(2) / 2,
  length_init = 15e-3,
  frequency_init = 120e3
)

This paired run is useful because it keeps the target fixed while changing only the coherence assumption. The DWBA result shows what the segmented body would predict if every segment phase were known exactly. The SDWBA result shows what happens when unresolved phase variability is allowed to soften that deterministic interference pattern through repeated stochastic realizations.

The stochastic controls should be read together rather than independently. n_iterations controls how well the ensemble average is approximated numerically. n_segments_init, phase_sd_init, length_init, and frequency_init define the reference scale from which the segmentation and phase variability are propagated over the actual run conditions. Those arguments therefore encode the stochastic interpretation of the target, not just the cost of the calculation.

Extracting model results

Model results can be extracted either visually or directly through extract().

Plotting results

Pre-rendered SDWBA example plot showing the stored stochastic target-strength spectrum.

Accessing results

dwba_results <- extract(stochastic_scatterer, "model")$DWBA
sdwba_results <- extract(stochastic_scatterer, "model")$SDWBA

head(dwba_results)
##   frequency        ka                        f_bs     sigma_bs        TS
## 1     5e+04 0.4188790 -0.0001208752-2.197771e-20i 1.461082e-08 -78.35325
## 2     6e+04 0.5026548 -0.0001679661-3.664780e-20i 2.821260e-08 -75.49557
## 3     7e+04 0.5864306 -0.0002190648-5.576294e-20i 4.798939e-08 -73.18855
## 4     8e+04 0.6702064 -0.0002721506-7.917249e-20i 7.406594e-08 -71.30381
## 5     9e+04 0.7539822 -0.0003250775-1.063909e-19i 1.056754e-07 -69.76026
## 6     1e+05 0.8377580 -0.0003756433-1.366000e-19i 1.411079e-07 -68.50449
head(sdwba_results)
##   frequency                        f_bs     sigma_bs        TS     TS_sd
## 1     5e+04 -9.477726e-05+1.382516e-07i 9.310958e-09 -80.31006 0.7220758
## 2     6e+04 -1.298692e-04+1.812514e-07i 1.775192e-08 -77.50755 1.0205344
## 3     7e+04 -1.705616e-04-3.598457e-08i 3.042126e-08 -75.16823 0.9357178
## 4     8e+04 -2.064676e-04+9.556914e-06i 4.451770e-08 -73.51467 0.7428731
## 5     9e+04 -2.542170e-04+5.321133e-06i 6.714795e-08 -71.72967 0.8568428
## 6     1e+05 -2.915993e-04+1.296041e-05i 8.842701e-08 -70.53415 0.6857166

The SDWBA results include the same main fields as DWBA plus TS_sd, the sample standard deviation of realization TS values in dB. The reported TS remains 10\log_{10}(\operatorname{mean}(\sigma_{bs})), rather than the mean of realization TS values. TS_sd is zero for identical finite realizations and NA for fewer than two realizations or any non-finite realization TS, including zero cross sections.

TS_sd describes realization variability; it is not a standard error or confidence interval for the power-averaged TS. Earlier versions computed 10\log_{10}(\operatorname{sd}(\sigma_{bs})) in this column, which did not measure TS dispersion.

Comparison workflows

Phase-disorder sensitivity

One practical way to tune the SDWBA is to compare a smaller and larger phase standard deviation while keeping the geometry fixed.

Pre-rendered SDWBA comparison showing how the spectrum changes when the phase-disorder standard deviation is increased.

In practical krill-style applications, phase_sd_init, length_init, and frequency_init should be treated as a linked parameterization rather than as independent tuning knobs.

This comparison is best interpreted as a change in phase disorder rather than a change in gross target-strength mechanism. The geometry and material contrasts are the same in both runs. What changes is how strongly unresolved variability suppresses the coherent cross terms. A larger phase_sd_init therefore does not mean the target has become physically larger or more reflective. It means the model is allowing more stochastic phase scrambling across segment contributions.

For practical SDWBA work, the first controls to revisit are usually:

  1. phase_sd_init, because it sets the reference strength of phase disorder,
  2. n_iterations, because too few realizations can leave the ensemble average noisy,
  3. n_segments_init, length_init, and frequency_init, because together they define the scale-invariant reference for segmentation and phase variability, and
  4. the underlying FLS geometry itself, because the stochastic phase model does not compensate for a poorly chosen deterministic target description.

Published reference comparisons

The following comparison uses the exact modal-series Benchmark column in the Jech weakly scattering sphere, prolate-spheroid, and cylinder files (Jech et al. 2015).

Geometry Max abs. \Delta vs benchmark (dB) Mean abs. \Delta vs benchmark (dB)
Weakly scattering sphere 10.08475 0.35609
Weakly scattering prolate spheroid 2.05918 0.07638
Weakly scattering cylinder 2.07406 0.15895

These runs use the same stochastic reference values throughout the benchmark set: N0 = 50, phase_sd_init = sqrt(2) / 32, L0 = 38.35 mm, f0 = 120 kHz, and n_iterations = 100.

For SDWBA, the most important additional implementation control is n_iterations, because it determines how well the stochastic ensemble average is actually resolved numerically. The table below keeps the same Jech targets and changes only n_iterations.

Geometry n_iterations Max abs. \Delta vs benchmark (dB) Mean abs. \Delta vs benchmark (dB)
Weakly scattering sphere 25 9.30458 0.34871
Weakly scattering sphere 100 10.08475 0.35609
Weakly scattering sphere 500 9.97080 0.35343
Weakly scattering prolate spheroid 25 1.26004 0.06948
Weakly scattering prolate spheroid 100 2.05918 0.07638
Weakly scattering prolate spheroid 500 1.28403 0.07107
Weakly scattering cylinder 25 2.07406 0.15899
Weakly scattering cylinder 100 2.07406 0.15895
Weakly scattering cylinder 500 2.07403 0.15895

Increasing n_iterations stabilizes the ensemble estimate. It does not force the stochastic approximation onto the exact benchmark family. Use a fixed seed when comparing stochastic settings or reproducing a documented result.

Bundled krill implementation comparison

The bundled krill object serves a different role from the canonical weakly scattering targets above. Here the goal is not to compare against an exact modal-series solution, but to compare the same stored krill geometry across four SDWBA implementations using a common frequency grid, a common broadside incidence, and the same stochastic reference values used for the benchmark calculations (N0 = 50, phase_sd_init = sqrt(2) / 32, L0 = 38.35 mm, f0 = 120 kHz, n_iterations = 100). These include a MATLAB implementation from CCAMLR (Commission for the Conservation of Antarctic Marine Living Resources 2019), NOAA applet (Southwest Fisheries Science Center 2022), and the Python package echoSMs (Macaulay and contributors 2024).

Comparison Mean abs. \Delta TS (dB) Max abs. \Delta TS (dB)
acousticTS vs echoSMs 1.70257 30.63630
acousticTS vs CCAMLR MATLAB 0.06978 0.18270
acousticTS vs NOAA 0.06158 0.52846
echoSMs vs CCAMLR MATLAB 1.74808 30.72119
echoSMs vs NOAA 1.69189 30.27117
CCAMLR MATLAB vs NOAA 0.13036 0.65798

Those values should be read as implementation differences rather than benchmark errors. All four calculations use the same bundled krill dimensions and the same initial stochastic reference values, but they do not use the same stochastic convention. In the current external implementations, both the CCAMLR MATLAB code and the NOAA HTML code square the phase term in the stochastic multiplier, while acousticTS keeps the paper-style linear phase standard deviation and echoSMs follows its own direct stochastic-phase application. So the bundled krill comparison is complementary to the canonical tables above: one set checks the stochastic model against published weakly scattering reference cases, and the other checks how the same biological krill geometry separates across existing SDWBA implementations.

References

Commission for the Conservation of Antarctic Marine Living Resources. 2019. SDWBA_TS: Stochastic Distorted-Wave Born Approximation (SDWBA) Target Strength (TS) Model. V. 1.3. Https://github.com/ccamlr/SDWBA_TS; GitHub, released.
Conti, Stéphane G., and David A. Demer. 2006. “Improved Parameterization of the SDWBA for Estimating Krill Target Strength.” ICES Journal of Marine Science 63 (5): 928–35. https://doi.org/10.1016/j.icesjms.2006.02.007.
Demer, David A., and Stephane G. Conti. 2003. “Reconciling Theoretical Versus Empirical Target Strengths of Krill: Effects of Phase Variability on the Distorted-Wave Born Approximation.” ICES Journal of Marine Science 60 (2): 429–34. https://doi.org/10.1016/S1054-3139(03)00002-X.
Demer, David A., and Stéphane G. Conti. 2003. “Validation of the Stochastic Distorted-Wave Born Approximation Model with Broad Bandwidth Total Target Strength Measurements of Antarctic Krill.” ICES Journal of Marine Science 60 (3): 625–35. https://doi.org/10.1016/S1054-3139(03)00063-8.
Demer, David A., and Stéphane G. Conti. 2005. “New Target-Strength Model Indicates More Krill in the Southern Ocean.” ICES Journal of Marine Science 62 (1): 25–32. https://doi.org/10.1016/j.icesjms.2004.07.027.
Jech, J. Michael, John K. Horne, Dezhang Chu, et al. 2015. “Comparisons Among Ten Models of Acoustic Backscattering Used in Aquatic Ecosystem Research.” The Journal of the Acoustical Society of America 138 (6): 3742–64. https://doi.org/10.1121/1.4937607.
Macaulay, Gavin, and contributors. 2024. “echoSMs: Making Acoustic Scattering Models Available to Fisheries and Plankton Scientists.” In GitHub Repository. Https://github.com/ices-tools-dev/echoSMs; GitHub.
Southwest Fisheries Science Center. 2022. SDWBA Model. National Marine Fisheries Service, National Oceanic; Atmospheric Administration. https://www.fisheries.noaa.gov/data-tools/sdwba-model.