Skip to content

Commit 5bcb50b

Browse files
Sort sensitivity frequencies in __post_init__ #439
Needed so that np.interp in sensitivity_at_frequency produces correct results.
1 parent cd66ace commit 5bcb50b

2 files changed

Lines changed: 3 additions & 2 deletions

File tree

src/openlifu/xdc/element.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111

1212

1313
def sensitivity_at_frequency(sensitivity: float | List[tuple[float, float]], frequency: float) -> float:
14+
"""Return sensitivity at `frequency`; list form assumes frequencies are sorted ascending."""
1415
if isinstance(sensitivity, list):
1516
freqs, values = zip(*sensitivity)
1617
return float(np.interp(frequency, freqs, values))
@@ -85,7 +86,7 @@ def __post_init__(self):
8586
if self.sensitivity is None:
8687
self.sensitivity = 1.0
8788
elif isinstance(self.sensitivity, list):
88-
self.sensitivity = [(float(f), float(v)) for f, v in self.sensitivity]
89+
self.sensitivity = sorted(((float(f), float(v)) for f, v in self.sensitivity), key=lambda t: t[0])
8990

9091
@property
9192
def x(self):

src/openlifu/xdc/transducer.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -105,7 +105,7 @@ def __post_init__(self):
105105
if self.sensitivity is None:
106106
self.sensitivity = 1.0
107107
elif isinstance(self.sensitivity, list):
108-
self.sensitivity = [(float(f), float(v)) for f, v in self.sensitivity]
108+
self.sensitivity = sorted(((float(f), float(v)) for f, v in self.sensitivity), key=lambda t: t[0])
109109

110110
def calc_output(self, cycles: float, frequency: float, dt: float, delays: np.ndarray = None, apod: np.ndarray = None, amplitude: float = 1.0) -> np.ndarray:
111111
if delays is None:

0 commit comments

Comments
 (0)