From 7daf449efa2a437a34311b077555f24610f3200c Mon Sep 17 00:00:00 2001 From: Gavin Macaulay Date: Thu, 22 Aug 2024 10:15:02 +1200 Subject: [PATCH] Misc updates (#23) * Add a new page about other modelling software * add more modelling software * add more software * Revert "add more software" This reverts commit 0b9bf6c83da4ee7e85eec15a21ae039dfd2517b4. * Resources dir for docs, better coordinate system figure * Simplify API for BenchmarkData and ReferenceModels * Update to work with API changes * API polishing Move model_type into the dataframe/dataset function parameter Make reference model API more pythonic Update example code to match these changes * Up the version number * Change model_type to boundary_type - is more descriptive * Up the version * Remove unnecessary comments, add calibration sphere targets * Check for duplicate target names in toml file * Tweak referencemodel code * Fix error in description of other software * remove explicit loop * Fix indent bug and use match instead of if/thens * Add benchmark_model parameter to target definitions file * Add files and code structure for elastic sphere model * Use benchmark_model parameter to choose model instead of hardcoding in here * Draft tutorial jupyter notebook --- .gitignore | 1 + docs/other_software.md | 2 +- docs/tutorial.ipynb | 240 ++++++++++++++++++ src/echosms/__init__.py | 3 +- src/echosms/dcmmodel.py | 3 +- src/echosms/esmodel.py | 74 ++++++ src/echosms/mssmodel.py | 1 - src/echosms/referencemodels.py | 36 ++- src/echosms/resources/target definitions.toml | 48 +++- src/echosms/scattermodelbase.py | 2 - src/echosms/utils.py | 4 +- src/example_code.py | 190 +++++++------- 12 files changed, 491 insertions(+), 113 deletions(-) create mode 100644 docs/tutorial.ipynb create mode 100644 src/echosms/esmodel.py diff --git a/.gitignore b/.gitignore index b684493..2880470 100644 --- a/.gitignore +++ b/.gitignore @@ -2,3 +2,4 @@ __pycache__/ /dist /site +/.ipynb_checkpoints \ No newline at end of file diff --git a/docs/other_software.md b/docs/other_software.md index 315177b..470f61b 100644 --- a/docs/other_software.md +++ b/docs/other_software.md @@ -4,7 +4,7 @@ Other software that provides source code for acoustic scattering models of relev - [acousticTS](https://github.com/brandynlucca/acousticTS): R code for calculating scattering using the DCM, DWBA, SDWBA, SDWBA_curved, KRM, MSS model, as well as that of calibration spheres. - [Coupled BEM acoustic](https://github.com/elavia/coupled_bem_acoustic): Julia code that calculates the TS of three-dimensional shapes with an included object (e.g., a swimbladder). -- [scatmod](https://github.com/SvenGastauer/scatmod): Open source acoustic scattering models for fisheries acoustics. Python and R code for fluid spheres and calibration spheres. +- [scatmod](https://github.com/SvenGastauer/scatmod): Open source acoustic scattering models for fisheries acoustics. Python and R code for fluid spheres. - [FishAcoustics](https://github.com/gavinmacaulay/FishAcoustics): Contains a Python module that implements the phase-tracking DWBA model. - [KRM Model](https://www.fisheries.noaa.gov/data-tools/krm-model): A web page that uses the KRM model to estimate the TS of predefined or user-supplied shapes over a range of input parameters. - [KRMr](https://github.com/SvenGastauer/KRMr): KRM model for fish in R. diff --git a/docs/tutorial.ipynb b/docs/tutorial.ipynb new file mode 100644 index 0000000..e6c8a6d --- /dev/null +++ b/docs/tutorial.ipynb @@ -0,0 +1,240 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "2d7ffdfb-77cf-4059-b545-5a8aa6fec4b3", + "metadata": {}, + "source": [ + "## Setup and imports" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "4c44c92f-bf2a-4933-b03f-889a468ae0d6", + "metadata": {}, + "outputs": [], + "source": [ + "import matplotlib.pyplot as plt\n", + "import numpy as np\n", + "import echosms" + ] + }, + { + "cell_type": "markdown", + "id": "b3e8f2d9-2500-41e7-adb2-f833bdee5f15", + "metadata": {}, + "source": [ + "## What reference models are available?" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "581abbb1-b682-4db6-a39b-0d1cf1048c6a", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "['fixed rigid sphere',\n", + " 'pressure release sphere',\n", + " 'gas filled sphere',\n", + " 'weakly scattering sphere',\n", + " 'spherical fluid shell with pressure release interior',\n", + " 'spherical fluid shell with gas interior',\n", + " 'spherical fluid shell with weakly scattering interior',\n", + " 'fixed rigid prolate spheroid',\n", + " 'pressure release prolate spheroid',\n", + " 'gas filled prolate spheroid',\n", + " 'weakly scattering prolate spheroid',\n", + " 'fixed rigid finite cylinder',\n", + " 'pressure release finite cylinder',\n", + " 'gas filled finite cylinder',\n", + " 'weakly scattering finite cylinder']" + ] + }, + "execution_count": 2, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "rm = echosms.ReferenceModels()\n", + "rm.names()" + ] + }, + { + "cell_type": "markdown", + "id": "f2e4182d-8818-41bb-86e1-8b3e5d6fc06a", + "metadata": {}, + "source": [ + "## Get a pre-defined model" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "05b33291-41f7-4f22-b993-8b5a8e0136f6", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{'boundary_type': 'fluid filled',\n", + " 'a': 0.01,\n", + " 'medium_rho': 1026.8,\n", + " 'medium_c': 1477.4,\n", + " 'target_rho': 1028.9,\n", + " 'target_c': 1480.3}" + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "p=rm.parameters('weakly scattering sphere')\n", + "p" + ] + }, + { + "cell_type": "markdown", + "id": "163c05bf-e940-420d-90d7-6435c39a1ad1", + "metadata": {}, + "source": [ + "## Add run-specific parameters\n", + "The parameters from the reference models don't include the angle or the frequency, so add those in. Any item in p can be a single value or a 1-dimensional iterable." + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "491abb07-ffc0-480b-887a-2760123e474a", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{'boundary_type': 'fluid filled',\n", + " 'a': 0.01,\n", + " 'medium_rho': 1026.8,\n", + " 'medium_c': 1477.4,\n", + " 'target_rho': 1028.9,\n", + " 'target_c': 1480.3,\n", + " 'theta': 90,\n", + " 'f': array([ 10000., 11000., 12000., 13000., 14000., 15000., 16000.,\n", + " 17000., 18000., 19000., 20000., 21000., 22000., 23000.,\n", + " 24000., 25000., 26000., 27000., 28000., 29000., 30000.,\n", + " 31000., 32000., 33000., 34000., 35000., 36000., 37000.,\n", + " 38000., 39000., 40000., 41000., 42000., 43000., 44000.,\n", + " 45000., 46000., 47000., 48000., 49000., 50000., 51000.,\n", + " 52000., 53000., 54000., 55000., 56000., 57000., 58000.,\n", + " 59000., 60000., 61000., 62000., 63000., 64000., 65000.,\n", + " 66000., 67000., 68000., 69000., 70000., 71000., 72000.,\n", + " 73000., 74000., 75000., 76000., 77000., 78000., 79000.,\n", + " 80000., 81000., 82000., 83000., 84000., 85000., 86000.,\n", + " 87000., 88000., 89000., 90000., 91000., 92000., 93000.,\n", + " 94000., 95000., 96000., 97000., 98000., 99000., 100000.,\n", + " 101000., 102000., 103000., 104000., 105000., 106000., 107000.,\n", + " 108000., 109000., 110000., 111000., 112000., 113000., 114000.,\n", + " 115000., 116000., 117000., 118000., 119000., 120000., 121000.,\n", + " 122000., 123000., 124000., 125000., 126000., 127000., 128000.,\n", + " 129000., 130000., 131000., 132000., 133000., 134000., 135000.,\n", + " 136000., 137000., 138000., 139000., 140000., 141000., 142000.,\n", + " 143000., 144000., 145000., 146000., 147000., 148000., 149000.,\n", + " 150000., 151000., 152000., 153000., 154000., 155000., 156000.,\n", + " 157000., 158000., 159000., 160000., 161000., 162000., 163000.,\n", + " 164000., 165000., 166000., 167000., 168000., 169000., 170000.,\n", + " 171000., 172000., 173000., 174000., 175000., 176000., 177000.,\n", + " 178000., 179000., 180000., 181000., 182000., 183000., 184000.,\n", + " 185000., 186000., 187000., 188000., 189000., 190000., 191000.,\n", + " 192000., 193000., 194000., 195000., 196000., 197000., 198000.,\n", + " 199000.])}" + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "p['theta']=90\n", + "p['f']=np.arange(10,200,1)*1e3\n", + "p" + ] + }, + { + "cell_type": "markdown", + "id": "00bfc9bd-7096-4c96-8931-f3d524941e77", + "metadata": {}, + "source": [ + "## Choose and run the model\n", + "We'll now run the modal series solution model using these parameters. The model takes care of getting all the possible combinations of the parameters in p. " + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "a4bd1426-735c-4bd1-902e-bdf10ee333e9", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[]" + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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1/m7v/u7eOCBB1Zvb9myJR73uMd1/XgAqqvbTc1xm59QK11nfOj2AgAASsxuRQV997vfbbl95plnpvd9yUte0nL7mmuu6fp11t73xS9+cYzZ4ALYFMZ1fMCm1P2oK58JAQCA8vKNpWKWl5fjL//yL1t+VpS78cpXvrLl9sc//vE4fPhwV6/1oQ99qPC5AKivSRkfsCl1P+rK2gcAAMpL4aNi3ve+98U999yzentiYiJe+tKXpvc/77zz4vnPf/7q7bm5ubj88ss7vs7nP//5uPbaa1dv79q1K17+8pev810DUDXdFjSc+oZ66brjQ9ETAAAoMbsVI/DpT386Pve5z/X8uD/7sz+Lf/Ev/kXLz17zmtfEnj17Ch/3nve855Tb119/fXr/Q4cOxZvf/OaWn73jHe+InTt39viOAagq4eawOU12mfHRbYEEAABgFBQ+2rjjjjva/u/+++9vud/JkyfT+xaNk7rpppviJ37iJ+I5z3lO/J//5/8Zd9xxR+H7+eu//ut4/etfHy9/+ctbgsxPP/30+A//4T90/O+56KKL4ud//udXby8sLMRP/uRPxoc//OFYWVlpue+1114bz33uc+PAgQOrP9u/f3+87W1v6/g6ANRHt6HlTn1DvXRb0Oi2QAIAADAKE6N+A2X0uMc9rqv7XXvttel93/Wud8W73/3uwsd/5Stfia985SvxT//pP409e/bEk5/85NizZ09s37495ubm4v77749vfOMb8eCDD57y2NNPPz0+85nPxN69e7t6rx/60IfiwIEDccMNN0RExJEjR+KSSy6Jt7/97fH0pz89pqam4tZbb40bb7yx5XG7d++OT3ziE7Fly5auXgeAeuh+zr/NT6iTbte+jg8AAKDMFD5K4tChQ/HFL36xq/u+9KUvjSuuuCLOO++8rp9/69at8clPfjJe97rXtYSj33XXXXHXXXe1fcz+/fvjqquuiic84Qldvw4A9WDcDWxO3Xd8WPsAAEB5OaY5Aq95zWvi//q//q+4+OKLu+7Y2LVrV1x66aVxzTXXxCc+8Ymeih6POOuss+LTn/50vO9974unPvWp6f3OPvvseMc73hFf//rX49nPfnbPrwNA9XUfbm7zE+qk+6KnrxEAAEB56fhoo9lsDvT59+7dG//kn/yT+Cf/5J9ERMR3vvOduPXWW+M73/lOPPjggzE3NxfT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JZes+wP6z/zMzzS///3v9/R6o/pSQHUNewPik5/8ZHPv3r1dP/9rX/va5rFjxwbzH0+pXXrppRu+pnW72eLayec+97nmT/3UTxV+Eez231M3hnUtPHr0aPMXf/EXu36dM888s/mpT31qw/999M+g/21+5Stfae7evXtd175du3Y1/+iP/qin11P4qJdhXTuH/XfatbN+BlGYu/322zf8b/PR//vgBz9Y+Hqun/Uw7D2iR/jsOXxGXQG1d+utt7b9+Q/90A/F4x//+DjzzDNjaWkpvv3tb8fXv/71WFlZWb3Pn/3Zn8U//If/MD7/+c/HWWedNay3DANzzTXXxMUXXxwLCwurP2s0GvHMZz4zzj///Dh8+HDccMMNcf/996/+/r/9t/8WR44ciY9//OMxNiYejPWZnZ0d9Vug5P7mb/4m/uIv/mIorzWsa+Hy8nL8wi/8Qnzyk59s+fkZZ5wRz3jGM2Lnzp1x4MCBuOGGG6LZbEZExD333BOveMUr4jOf+UxcdNFFffivZaMG/W/zvvvuiwcffPCUn09NTcVTn/rUOOuss2Lnzp3xwAMPxPXXXx8PPPDA6n0OHz4cv/RLvxT33ntv/PN//s8H9h4pr2FeO4fFtbM+rrnmmvj3//7fx/XXXx+HDh0a9dvpyOfVzWEUe0Q+e46GwgewqTzjGc+IN73pTfHTP/3TbWcj33333fFv/s2/if/7//6/V3926623xqte9ar4whe+EI1Go6fXu/DCC+PDH/5wT48555xzero/9XPVVVfFj//4j3d9/23btnV1v+9+97vxsz/7sy0ftp73vOfF+9///njSk560+rP5+fm48sor41/+y38Zi4uLERHxP/7H/4jf+q3five85z1dvy94tJ/7uZ8b9Vugoqanp+Occ86JAwcO9OX5hnkt/I3f+I2WL56Tk5Pxe7/3e/GWt7wlpqamVn9+8803xy//8i/Hl7/85dXXvvjii+Ob3/xmnH322Rv672Vw+v1vM+Lhv+mvfvWr4zWveU0897nPPWUTrtlsxsc//vH49V//9fjOd76z+vN/8S/+RTz1qU+NF73oRT2/5qA+dzBag/j3+YhBf8dx7ayPKhXmtmzZEj/90z896rfBkA1jj8hnzxEabcMJwOA961nPar7sZS9rXnfddV0/5oorrjil/e+qq67q6rGPfswLXvCCdb5rNpO1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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "mss = echosms.MSSModel()\n", + "ts = mss.calculate_ts(p)\n", + "plt.plot(p['f']/1000, ts)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "175f57d0-cfeb-4654-b7c5-691ff24e45c7", + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (Spyder)", + "language": "python3", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.11.9" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/src/echosms/__init__.py b/src/echosms/__init__.py index c7f2e9f..4ea1a22 100644 --- a/src/echosms/__init__.py +++ b/src/echosms/__init__.py @@ -3,9 +3,10 @@ from .scattermodelbase import ScatterModelBase from .benchmarkdata import BenchmarkData from .referencemodels import ReferenceModels +from .esmodel import ESModel from .mssmodel import MSSModel from .psmsmodel import PSMSModel from .dcmmodel import DCMModel __all__ = ['ScatterModelBase', 'BenchmarkData', 'ReferenceModels', 'MSSModel', 'PSMSModel', - 'DCMModel', 'k', 'eta', 'h1', 'as_dataframe', 'as_dataarray'] + 'DCMModel', 'ESModel', 'k', 'eta', 'h1', 'as_dataframe', 'as_dataarray'] diff --git a/src/echosms/dcmmodel.py b/src/echosms/dcmmodel.py index 676fb7a..4420b17 100644 --- a/src/echosms/dcmmodel.py +++ b/src/echosms/dcmmodel.py @@ -78,9 +78,8 @@ def calculate_ts_single(self, medium_c, medium_rho, a, b, theta, f, boundary_typ K = k(medium_c, f) * sin(theta_rad) Ka = K*a - m = range(30) # this needs to vary with f + m = range(30) # TODO this needs to vary with f - # Some code varies with model type. match boundary_type: case 'fixed rigid': series = list(map(lambda m: (-1)**m * eta(m)*(jvp(m, Ka) / h1vp(m, Ka)), m)) diff --git a/src/echosms/esmodel.py b/src/echosms/esmodel.py new file mode 100644 index 0000000..383f87e --- /dev/null +++ b/src/echosms/esmodel.py @@ -0,0 +1,74 @@ +"""A class that provides the modal series solution scattering model.""" + +import numpy as np +from math import log10 +# from mapply.mapply import mapply +# import swifter +from scipy.special import spherical_jn, spherical_yn +from .utils import h1, k +from .scattermodelbase import ScatterModelBase + + +class ESModel(ScatterModelBase): + """Elastic sphere (ES) scattering model. + + This class calculates acoustic scatter from spheres and shells with various + boundary conditions, as listed in the ``boundary_types`` class attribute. + """ + + def __init__(self): + super().__init__() + self.long_name = 'elastic sphere' + self.short_name = 'es' + self.analytical_type = 'exact' + self.boundary_types = ['elastic sphere'] + self.shapes = ['sphere'] + self.max_ka = 20 # [1] + + def calculate_ts_single(self, medium_c, medium_rho, diameter, theta, f, boundary_type, + target_longitudal_c, target_transverse_c, target_rho, + **kwargs) -> float: + """ + Calculate the scatter from an elastic sphere for one set of parameters. + + Parameters + ---------- + medium_c : float + Sound speed in the fluid medium surrounding the target [m/s]. + medium_rho : float + Density of the fluid medium surrounding the target [kg/m³]. + diameter : float + Diameter of the sphere [m]. + theta : float + Pitch angle(s) to calculate the scattering at [°]. An angle of 0 is head on, + 90 is dorsal, and 180 is tail on. + f : float + Frequencies to calculate the scattering at [Hz]. + boundary_type : str, optional + The boundary type. Supported types are given in the boundary_types class variable. + target_longitudal_c : float + Longitudal sound speed in the material inside the sphere [m/s]. + target_transverse_c : float + Transverse sound speed in the material inside the sphere [m/s]. + target_rho : float + Density of the material inside the sphere [kg/m³]. + + Returns + ------- + : float + The target strength (re 1 m²) of the sphere [dB]. + + Notes + ----- + The class implements the code in [1]. + + References + ---------- + MacLennan, D. N. (1981). The Theory of Solid Spheres as Sonar Calibration Targets + Scottish Fisheries Research Report Number 22. Department of Agriculture and Fisheries + for Scotland. + """ + k0 = k(medium_c, f) + ka = k0*diameter + + return -1.0 diff --git a/src/echosms/mssmodel.py b/src/echosms/mssmodel.py index c7dc2f4..91d1489 100644 --- a/src/echosms/mssmodel.py +++ b/src/echosms/mssmodel.py @@ -87,7 +87,6 @@ def calculate_ts_single(self, medium_c, medium_rho, a, theta, f, boundary_type, ka = k0*a n = np.arange(0, round(ka+20)) - # Some code varies with model type. match boundary_type: case 'fixed rigid': A = list(map(lambda x: -spherical_jn(x, ka, True) / h1(x, ka, True), n)) diff --git a/src/echosms/referencemodels.py b/src/echosms/referencemodels.py index 4d61ca4..f9db306 100644 --- a/src/echosms/referencemodels.py +++ b/src/echosms/referencemodels.py @@ -13,6 +13,11 @@ class ReferenceModels: ---------- definitions : dict A dict representation of the ``target definitions.toml`` file. + + Raises + ------ + KeyError + If the ``target definitions.toml`` file has multiple target entries with the same name. """ def __init__(self): @@ -23,7 +28,12 @@ def __init__(self): with open(self.defs_filename, 'rb') as f: self.definitions = tomllib.load(f) - # check that the names parameter is unique across all models + # Flag duplicate target names + pda = pd.Series(self.names()) + duplicates = list(pda[pda.duplicated()]) + if duplicates: + raise KeyError(f'The "{self.defs_filename.name}" file has multiple targets ' + f'with the same name: '+', '.join(duplicates)) # Substitute parameters names in the target section by the values of those # parameters. @@ -40,7 +50,7 @@ def names(self): Returns ------- : iterable of str - All model names in the ``target definitions/toml`` file. + All model names in the ``target definitions.toml`` file. """ return [n['name'] for n in self.definitions['target']] @@ -55,15 +65,14 @@ def specification(self, name): Returns ------- : dict - The model definitions for the requested model or ``None`` if no model with that name. + The model definitions for the requested model or an empty set if no model + with that name. """ - models = pd.DataFrame(self.definitions['target']) - m = models.loc[models['name'] == name] - if len(m) == 1: - m.dropna(axis=1, how='all', inplace=True) - return m.iloc[0].to_dict() + s = [t for t in self.definitions['target'] if t['name'] == name] + if not s: + return s - return None + return s[0] def parameters(self, name): """Model parameters for a particular model. @@ -79,18 +88,19 @@ def parameters(self, name): Returns ------- : dict - The model parameters for the requested model or ``None`` if no model with that name. + The model parameters for the requested model or an empty set if no model with that name. """ s = self.specification(name) - if s is None: - return None + if not s: + return [] # Remove the entries that are not parameters - p = s + p = s.copy() del p['name'] del p['shape'] del p['description'] del p['source'] + del p['benchmark_model'] return p diff --git a/src/echosms/resources/target definitions.toml b/src/echosms/resources/target definitions.toml index 7717ae3..f328998 100644 --- a/src/echosms/resources/target definitions.toml +++ b/src/echosms/resources/target definitions.toml @@ -14,6 +14,7 @@ sound_speed = "m/s" radius = "m" length = "m" thickness = "m" +diameter = "m" # Model parameters (add more as needed). # @@ -52,8 +53,8 @@ example3_medium_sound_speed_dist = {type="arange", start=1490, stop=1500, step=1 # For each reference target, include a [[target]] section below. # # Where sensible, use names from the parameter section above for specifying -# target parameters (e.g., the sound speed, density, size, etc). Substitution of the -# parameter names with their values from the parameters section should be done in the +# target parameters (e.g., the sound speed, density, size, etc). # The 'name' entry should be unique. +# Substitution of the parameter names with their values from the parameters section should be done in the # code that reads this file. # # The source item in each section should be used to identify the source of the model configuration. @@ -69,6 +70,7 @@ a = "sphere_radius" medium_rho = "medium_density" medium_c = "medium_sound_speed" source = "https://doi.org/10.1121/1.4937607" +benchmark_model = "mss" [[target]] name = "pressure release sphere" @@ -79,6 +81,7 @@ a = "sphere_radius" medium_rho = "medium_density" medium_c = "medium_sound_speed" source = "https://doi.org/10.1121/1.4937607" +benchmark_model = "mss" [[target]] name = "gas filled sphere" @@ -91,6 +94,7 @@ medium_c = "medium_sound_speed" target_rho = "target_gas_density" target_c = "target_gas_sound_speed" source = "https://doi.org/10.1121/1.4937607" +benchmark_model = "mss" [[target]] name = "weakly scattering sphere" @@ -103,6 +107,7 @@ medium_c = "medium_sound_speed" target_rho = "target_weakly_density" target_c = "target_weakly_sound_speed" source = "https://doi.org/10.1121/1.4937607" +benchmark_model = "mss" [[target]] name = "spherical fluid shell with pressure release interior" @@ -116,6 +121,7 @@ medium_c = "medium_sound_speed" shell_rho = "target_shell_pressure_release_density" shell_c = "target_shell_pressure_release_sound_speed" source = "https://doi.org/10.1121/1.4937607" +benchmark_model = "mss" [[target]] name = "spherical fluid shell with gas interior" @@ -131,6 +137,7 @@ shell_c = "target_shell_gas_filled_sound_speed" target_rho = "target_gas_density" target_c = "target_gas_sound_speed" source = "https://doi.org/10.1121/1.4937607" +benchmark_model = "mss" [[target]] name = "spherical fluid shell with weakly scattering interior" @@ -146,6 +153,7 @@ shell_c = "target_shell_weakly_sound_speed" target_rho = "target_interior_weakly_density" target_c = "target_interior_weakly_sound_speed" source = "https://doi.org/10.1121/1.4937607" +benchmark_model = "mss" [[target]] name = "fixed rigid prolate spheroid" @@ -157,6 +165,7 @@ b = "prolate_spheroid_minor_axis_radius" medium_rho = "medium_density" medium_c = "medium_sound_speed" source = "https://doi.org/10.1121/1.4937607" +benchmark_model = "psms" [[target]] name = "pressure release prolate spheroid" @@ -168,6 +177,7 @@ b = "prolate_spheroid_minor_axis_radius" medium_rho = "medium_density" medium_c = "medium_sound_speed" source = "https://doi.org/10.1121/1.4937607" +benchmark_model = "psms" [[target]] name = "gas filled prolate spheroid" @@ -181,6 +191,7 @@ medium_c = "medium_sound_speed" target_rho = "target_gas_density" target_c = "target_gas_sound_speed" source = "https://doi.org/10.1121/1.4937607" +benchmark_model = "psms" [[target]] name = "weakly scattering prolate spheroid" @@ -194,6 +205,7 @@ medium_c = "medium_sound_speed" target_rho = "target_weakly_density" target_c = "target_weakly_sound_speed" source = "https://doi.org/10.1121/1.4937607" +benchmark_model = "psms" [[target]] name = "fixed rigid finite cylinder" @@ -205,6 +217,7 @@ b = "finite_cylinder_length" medium_rho = "medium_density" medium_c = "medium_sound_speed" source = "https://doi.org/10.1121/1.4937607" +benchmark_model = "dcm" [[target]] name = "pressure release finite cylinder" @@ -216,6 +229,7 @@ b = "finite_cylinder_length" medium_rho = "medium_density" medium_c = "medium_sound_speed" source = "https://doi.org/10.1121/1.4937607" +benchmark_model = "dcm" [[target]] name = "gas filled finite cylinder" @@ -229,6 +243,7 @@ medium_c = "medium_sound_speed" target_rho = "target_gas_density" target_c = "target_gas_sound_speed" source = "https://doi.org/10.1121/1.4937607" +benchmark_model = "dcm" [[target]] name = "weakly scattering finite cylinder" @@ -242,3 +257,32 @@ medium_c = "medium_sound_speed" target_rho = "target_weakly_density" target_c = "target_weakly_sound_speed" source = "https://doi.org/10.1121/1.4937607" +benchmark_model = "dcm" + +[[target]] +name = "WC38.1 calibration sphere" +shape = "sphere" +boundary_type = "elastic sphere" +description = "A 38.1 mm diameter tungsten carbide sphere with 6% cobalt binder" +diameter = 0.0381 # diameter +medium_rho = "medium_density" +medium_c = "medium_c" +target_rho = 14900 +target_longitudal_c = 6853 +target_transverse_c = 4171 +source = " " +benchmark_model = "es" + +[[target]] +name = "Cu60 calibration sphere" +shape = "sphere" +boundary_type = "elastic sphere" +description = "A 60 mm diameter copper sphere" +diameter = 0.060 # diameter +medium_rho = "medium_density" +medium_c = "medium_sound_speed" +target_rho = 8947 +target_longitudal_c = 4760 +target_transverse_c = 2288.5 +source = " " +benchmark_model = "es" \ No newline at end of file diff --git a/src/echosms/scattermodelbase.py b/src/echosms/scattermodelbase.py index f6a05b0..3f78503 100644 --- a/src/echosms/scattermodelbase.py +++ b/src/echosms/scattermodelbase.py @@ -68,7 +68,6 @@ def calculate_ts(self, data, multiprocess=False): elif isinstance(data, pd.DataFrame): pass elif isinstance(data, xr.DataArray): - # For the moment just convert DataArrays into DataFrames data = data.to_dataframe().reset_index() else: raise ValueError(f'Data type of {type(data)} is not supported' @@ -81,7 +80,6 @@ def calculate_ts(self, data, multiprocess=False): # ts = df.swifter.apply(self.__ts_helper, axis=1) ts = data.apply(self.__ts_helper, axis=1) else: # this uses just one CPU - # ts = data.apply(self.__ts_helper, axis=1) ts = data.apply(self.__ts_helper, axis=1) return ts.to_numpy() # TODO - return data type that matches the input data type diff --git a/src/echosms/utils.py b/src/echosms/utils.py index 31c6b93..2ac2367 100644 --- a/src/echosms/utils.py +++ b/src/echosms/utils.py @@ -44,14 +44,12 @@ def as_dataarray(params: dict) -> xr.DataArray: in the input dict. """ - # Convert scalars to iterables so xarray is happier later on + # Convert scalars to iterables so xarray is happy for k, v in params.items(): if not isinstance(v, Iterable) or isinstance(v, str): params[k] = [v] - # Lengths of each parameter array sz = [len(v) for k, v in params.items()] - # Create the DataArray return xr.DataArray(data=np.full(sz, np.nan), coords=params, name='ts') diff --git a/src/example_code.py b/src/example_code.py index bc3e461..c90dfcf 100644 --- a/src/example_code.py +++ b/src/example_code.py @@ -4,16 +4,15 @@ import matplotlib.pyplot as plt import numpy as np -from echosms import MSSModel, PSMSModel, DCMModel +from echosms import MSSModel, PSMSModel, DCMModel, ESModel from echosms import BenchmarkData from echosms import ReferenceModels from echosms import as_dataframe, as_dataarray # Load the reference model defintiions rm = ReferenceModels() -print('Available reference models are:') -for n in rm.names(): - print('\t' + n) +print('Available reference models are:\n') +print('\n'.join(rm.names())) # Load the benchmark data (from Jech et al., 2015) bm = BenchmarkData() @@ -25,90 +24,90 @@ # This is the mapping between model name from ReferenceModels and the appropriate column of data in # BenchMarkData and which model to use. -models = {'mss': [('weakly scattering sphere', 'Sphere_WeaklyScattering'), - ('fixed rigid sphere', 'Sphere_Rigid'), - ('pressure release sphere', 'Sphere_PressureRelease'), - ('gas filled sphere', 'Sphere_Gas'), - ('spherical fluid shell with pressure release interior', - 'ShellSphere_PressureRelease'), - ('spherical fluid shell with gas interior', 'ShellSphere_Gas'), - ('spherical fluid shell with weakly scattering interior', - 'ShellSphere_WeaklyScattering')], - 'dcm': [('fixed rigid finite cylinder', 'Cylinder_Rigid'), - ('pressure release finite cylinder', 'Cylinder_PressureRelease'), - ('gas filled finite cylinder', 'Cylinder_Gas'), - ('weakly scattering finite cylinder', 'Cylinder_WeaklyScattering')], - # 'psms': [('fixed rigid prolate spheroid', 'ProlateSpheroid_Rigid'), - # ('pressure release prolate spheroid', 'ProlateSpheroid_PressureRelease'), - # ('gas filled prolate spheroid', 'ProlateSpheroid_Gas'), - # ('weakly scattering prolate spheroid', 'ProlateSpheroid_WeaklyScattering')] - } - -for model, names in models.items(): - if model == 'mss': - mod = MSSModel() - elif model == 'psms': - mod = PSMSModel() - elif model == 'dcm': - mod = DCMModel() - else: - pass - - print(f'The {mod.short_name.upper()} ({mod.long_name}) model supports boundary ' - f'types of {mod.boundary_types}.') - - for name in names: - # Get the model parameters used in Jech et al. (2015) for a particular model. - s = rm.specification(name[0]) - m = rm.parameters(name[0]) - - # Add frequencies and angle to the model parameters - m['f'] = bm.freq_dataset['Frequency_kHz']*1e3 # [Hz] - m['theta'] = 90.0 - - # and run these - ts = mod.calculate_ts(m) - - jech_index = np.mean(np.abs(ts - bmf[name[1]])) - - # Plot the mss model and benchmark results - fig, axs = plt.subplots(2, 1, sharex=True) - axs[0].plot(m['f']/1e3, ts, label='echoSMs') - axs[0].plot(bmf['Frequency_kHz'], bmf[name[1]], label='Benchmark') - axs[0].set_ylabel('TS re 1 m$^2$ [dB]') - axs[0].legend(frameon=False, fontsize=6) - - # Plot difference between benchmark values and newly calculated mss model values - axs[1].plot(m['f']*1e-3, ts-bmf[name[1]], color='black') - axs[1].set_xlabel('Frequency [kHz]') - axs[1].set_ylabel(r'$\Delta$ TS [dB]') - axs[1].annotate(f'{jech_index:.2f} dB', (0.05, 0.80), xycoords='axes fraction', - backgroundcolor=[.8, .8, .8]) - plt.suptitle(name[0]) - plt.show() +models = [('weakly scattering sphere', 'Sphere_WeaklyScattering'), + ('fixed rigid sphere', 'Sphere_Rigid'), + ('pressure release sphere', 'Sphere_PressureRelease'), + ('gas filled sphere', 'Sphere_Gas'), + ('spherical fluid shell with pressure release interior', 'ShellSphere_PressureRelease'), + ('spherical fluid shell with gas interior', 'ShellSphere_Gas'), + ('spherical fluid shell with weakly scattering interior', + 'ShellSphere_WeaklyScattering'), + ('fixed rigid finite cylinder', 'Cylinder_Rigid'), + ('pressure release finite cylinder', 'Cylinder_PressureRelease'), + ('gas filled finite cylinder', 'Cylinder_Gas'), + ('weakly scattering finite cylinder', 'Cylinder_WeaklyScattering')] +# Remove PSMS ones until the PSMS model works +# ('fixed rigid prolate spheroid', 'ProlateSpheroid_Rigid'), +# ('pressure release prolate spheroid', 'ProlateSpheroid_PressureRelease'), +# ('gas filled prolate spheroid', 'ProlateSpheroid_Gas'), +# ('weakly scattering prolate spheroid', 'ProlateSpheroid_WeaklyScattering')] + +for name, bm_name in models: + # Get the model parameters used in Jech et al. (2015) for a particular model. + s = rm.specification(name) + m = rm.parameters(name) + + # create the appropriate model instance + match s['benchmark_model']: + case 'mss': + mod = MSSModel() + case 'psms': + mod = PSMSModel() + case 'dcm': + mod = DCMModel() + case _: + pass -# %% ############################################################################################### + # Add frequencies and angle to the model parameters + m['f'] = bm.freq_dataset['Frequency_kHz']*1e3 # [Hz] + m['theta'] = 90.0 + + # and run these + ts = mod.calculate_ts(m) + + jech_index = np.mean(np.abs(ts - bmf[bm_name])) + + # Plot the mss model and benchmark results + fig, axs = plt.subplots(2, 1, sharex=True) + axs[0].plot(m['f']/1e3, ts, label='echoSMs') + axs[0].plot(bmf['Frequency_kHz'], bmf[bm_name], label='Benchmark') + axs[0].set_ylabel('TS re 1 m$^2$ [dB]') + axs[0].legend(frameon=False, fontsize=6) + + # Plot difference between benchmark values and newly calculated mss model values + axs[1].plot(m['f']*1e-3, ts-bmf[bm_name], color='black') + axs[1].set_xlabel('Frequency [kHz]') + axs[1].set_ylabel(r'$\Delta$ TS [dB]') + axs[1].annotate(f'{jech_index:.2f} dB', (0.05, 0.80), xycoords='axes fraction', + backgroundcolor=[.8, .8, .8]) + plt.suptitle(name[0]) + plt.show() + + # %% ############################################################################################### # Run the benchmark models and compare to the angle-varying benchmark results. -models = {'dcm': [('fixed rigid finite cylinder', 'Cylinder_Rigid'), - ('pressure release finite cylinder', 'Cylinder_PressureRelease'), - ('gas filled finite cylinder', 'Cylinder_Gas'), - ('weakly scattering finite cylinder', 'Cylinder_WeaklyScattering')] - } - -for model, names in models.items(): - if model == 'mss': - mod = MSSModel() - elif model == 'psms': - mod = PSMSModel() - elif model == 'dcm': - mod = DCMModel() - else: - pass - -for name in names: +models = [('fixed rigid finite cylinder', 'Cylinder_Rigid'), + ('pressure release finite cylinder', 'Cylinder_PressureRelease'), + ('gas filled finite cylinder', 'Cylinder_Gas'), + ('weakly scattering finite cylinder', 'Cylinder_WeaklyScattering')] + +for name, bm_name in models: # Get the model parameters used in Jech et al. (2015) for a particular model. - s = rm.specification(name[0]) - m = rm.parameters(name[0]) + s = rm.specification(name) + m = rm.parameters(name) + + # create the appropriate model instance + match s['benchmark_model']: + case 'mss': + mod = MSSModel() + case 'psms': + mod = PSMSModel() + case 'dcm': + mod = DCMModel() + case _: + pass + # Get the model parameters used in Jech et al. (2015) for a particular model. + s = rm.specification(name) + m = rm.parameters(name) # Add frequencies and angle to the model parameters m['f'] = 38000 # [Hz] @@ -117,17 +116,17 @@ # and run these ts = mod.calculate_ts(m) - jech_index = np.mean(np.abs(ts - bmt[name[1]])) + jech_index = np.mean(np.abs(ts - bmt[bm_name])) # Plot the mss model and benchmark results fig, axs = plt.subplots(2, 1, sharex=True) axs[0].plot(m['theta'], ts, label='echoSMs') - axs[0].plot(bmt['Angle_deg'], bmt[name[1]], label='Benchmark') + axs[0].plot(bmt['Angle_deg'], bmt[bm_name], label='Benchmark') axs[0].set_ylabel('TS re 1 m$^2$ [dB]') axs[0].legend(frameon=False, fontsize=6) # Plot difference between benchmark values and newly calculated mss model values - axs[1].plot(m['theta'], ts-bmt[name[1]], color='black') + axs[1].plot(m['theta'], ts-bmt[bm_name], color='black') axs[1].set_xlabel('Angle (°)') axs[1].set_ylabel(r'$\Delta$ TS [dB]') axs[1].annotate(f'{jech_index:.2f} dB', (0.05, 0.80), xycoords='axes fraction', @@ -190,3 +189,18 @@ # and it can be inserted into params_xa # TODO once the data is returned in an appropriate form + +# %% ############################################################################################### +# Use the ES model on a calibration sphere +p = rm.parameters('Cu60 calibration sphere') +p['theta'] = 90 +p['f'] = np.arange(10, 400, 0.5) * 1e3 # [kHz] + +es = ESModel() +ts = es.calculate_ts(p) + +plt.plot(p['f']*1e-3, ts) + +# Can readily modify the parameters for a different sphere +p['a'] = 0.063 +ts = es.calculate_ts(p)