acoular 24.10__py3-none-any.whl → 25.3__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
acoular/traitsviews.py CHANGED
@@ -39,7 +39,7 @@ MicGeom.class_trait_view(
39
39
  'traits_view',
40
40
  View(
41
41
  [
42
- 'from_file',
42
+ 'file',
43
43
  'num_mics~',
44
44
  '|[Microphone geometry]',
45
45
  ],
@@ -70,7 +70,7 @@ Calib.class_trait_view(
70
70
  'traits_view',
71
71
  View(
72
72
  [
73
- 'from_file{File name}',
73
+ 'file{File name}',
74
74
  [
75
75
  'num_mics~{Number of microphones}',
76
76
  '|[Properties]',
@@ -307,8 +307,8 @@ TimeSamples.class_trait_view(
307
307
  'name{File name}',
308
308
  [
309
309
  'sample_freq~{Sampling frequency}',
310
- 'numchannels~{Number of channels}',
311
- 'numsamples~{Number of samples}',
310
+ 'num_channels~{Number of channels}',
311
+ 'num_samples~{Number of samples}',
312
312
  '|[Properties]',
313
313
  ],
314
314
  '|',
@@ -327,8 +327,8 @@ MaskedTimeSamples.class_trait_view(
327
327
  'invalid_channels{Invalid channels}',
328
328
  [
329
329
  'sample_freq~{Sampling frequency}',
330
- 'numchannels~{Number of channels}',
331
- 'numsamples~{Number of samples}',
330
+ 'num_channels~{Number of channels}',
331
+ 'num_samples~{Number of samples}',
332
332
  '|[Properties]',
333
333
  ],
334
334
  '|',
@@ -441,7 +441,7 @@ BeamformerDamasPlus.class_trait_view(
441
441
  [
442
442
  [Item('beamformer{}', style='custom')],
443
443
  [Item('method{Solver}')],
444
- [Item('max_iter{Max. number of iterations}')],
444
+ [Item('n_iter{Max. number of iterations}')],
445
445
  [Item('alpha', label='Lasso weight factor')],
446
446
  [Item('calcmode{How to calculate PSF}')],
447
447
  '|',
@@ -473,7 +473,7 @@ BeamformerCleansc.class_trait_view(
473
473
  [
474
474
  # [Item('mpos{}', style='custom')],
475
475
  # [Item('grid', style='custom'), '-<>'],
476
- [Item('n', label='No. of iterations', style='simple')],
476
+ [Item('n_iter', label='No. of iterations', style='simple')],
477
477
  [Item('r_diag', label='Diagonal removed')],
478
478
  # [Item('env{}', style='custom')],
479
479
  '|',
@@ -505,7 +505,7 @@ BeamformerCMF.class_trait_view(
505
505
  # [Item('mpos{}', style='custom')],
506
506
  # [Item('grid', style='custom'), '-<>'],
507
507
  [Item('method', label='Fit method')],
508
- [Item('max_iter', label='No. of iterations')],
508
+ [Item('n_iter', label='(Max.) no. of iterations')],
509
509
  [Item('alpha', label='Lasso weight factor')],
510
510
  [Item('c', label='Speed of sound')],
511
511
  # [Item('env{}', style='custom')],
@@ -523,7 +523,7 @@ BeamformerGIB.class_trait_view(
523
523
  # [Item('mpos{}', style='custom')],
524
524
  # [Item('grid', style='custom'), '-<>'],
525
525
  [Item('method', label='Fit method')],
526
- [Item('max_iter', label='No. of iterations')],
526
+ [Item('n_iter', label='(Max.) no. of iterations')],
527
527
  [Item('alpha', label='Lasso weight factor')],
528
528
  [Item('c', label='Speed of sound')],
529
529
  # [Item('env{}', style='custom')],
acoular/trajectory.py CHANGED
@@ -12,50 +12,98 @@
12
12
  # imports from other packages
13
13
  from numpy import arange, array, r_, sort
14
14
  from scipy.interpolate import splev, splprep
15
- from traits.api import Dict, Float, HasPrivateTraits, Property, Tuple, cached_property, property_depends_on
15
+ from traits.api import Dict, Float, HasStrictTraits, Property, Tuple, cached_property, property_depends_on
16
16
 
17
17
  # acoular imports
18
18
  from .internal import digest
19
19
 
20
20
 
21
- class Trajectory(HasPrivateTraits):
22
- """Describes a trajectory from sampled points.
23
-
24
- Based on a discrete number of points in space and time, a
25
- continuous trajectory is calculated using spline interpolation
26
- of positions between samples.
21
+ class Trajectory(HasStrictTraits):
27
22
  """
28
-
29
- #: Dictionary that assigns discrete time instants (keys) to
30
- #: sampled `(x, y, z)` positions along the trajectory (values).
23
+ Represents a trajectory as a continuous curve derived from sampled points.
24
+
25
+ The :class:`Trajectory` class computes a smooth, continuous path through a set of discrete
26
+ points in space and time using spline interpolation. It also supports evaluating the trajectory
27
+ and its derivatives at arbitrary time instants.
28
+
29
+ It can be used to:
30
+ - define the traveling path of a moving sound source, e.g. for microphone array data
31
+ simulation (see :class:`~acoular.sources.MovingPointSource`)
32
+ - move a source grid along a certain path to create a fixed focus
33
+ (see :class:`~acoular.tbeamform.BeamformerTimeTraj`
34
+ and :class:`~acoular.tbeamform.BeamformerCleantTraj`)
35
+
36
+ Exemplary use can also be seen in the
37
+ :ref:`rotating point source example<rotating_point_source>`.
38
+
39
+ See Also
40
+ --------
41
+ :class:`~acoular.sources.MovingPointSource` : Model a point source moving along a trajectory.
42
+ :class:`~acoular.sources.MovingPointSourceDipole` :
43
+ Model a point source dipole moving along a trajectory.
44
+ :class:`~acoular.sources.MovingLineSource` : Model a line source moving along a trajectory.
45
+ :class:`~acoular.tbeamform.BeamformerCleantTraj` :
46
+ Beamformer implementing the CLEAN method :cite:`Kujawski2020` in time domain
47
+ for moving sources with known trajectory.
48
+ :class:`~acoular.tbeamform.BeamformerTimeTraj` :
49
+ Basic time domain beamformer with time signal output for a grid moving along a trajectory.
50
+ :func:`scipy.interpolate.splprep` : Underlying spline generation function.
51
+ :func:`scipy.interpolate.splev` : Used for evaluating the spline.
52
+
53
+ Notes
54
+ -----
55
+ - Spline interpolation provides a smooth trajectory that passes through all sampled points.
56
+ The interpolation order is adjusted automatically based on the number of points.
57
+ - The trajectory can be used in simulations where a source's motion must be modeled
58
+ continuously.
59
+
60
+ Examples
61
+ --------
62
+ Create a trajectory and evaluate positions and velocities:
63
+
64
+ >>> from acoular import Trajectory
65
+ >>> points = {0.0: (0.0, 0.0, 0.0), 1.0: (1.0, 0.0, 0.0), 2.0: (2.0, 1.0, 0.0)}
66
+ >>> tr = Trajectory(points=points)
67
+ >>>
68
+ >>> tr.location(1.5) # Position at t=1.5
69
+ [array(1.5), array(0.375), array(0.)]
70
+ >>>
71
+ >>> for pos in tr.traj(0.0, 2.0, 0.5): # Positions every 0.5 seconds
72
+ ... print(pos)
73
+ (np.float64(0.0), np.float64(0.0), np.float64(0.0))
74
+ (np.float64(0.5), np.float64(-0.125), np.float64(0.0))
75
+ (np.float64(1.0), np.float64(0.0), np.float64(0.0))
76
+ (np.float64(1.5), np.float64(0.375), np.float64(0.0))
77
+ """ # noqa W505
78
+
79
+ #: Dictionary mapping time instants (keys, as floats) to sampled ``(x, y, z)`` positions
80
+ #: (values, as tuples of floats) along the trajectory.
31
81
  points = Dict(
32
82
  key_trait=Float,
33
83
  value_trait=Tuple(Float, Float, Float),
34
84
  desc='sampled positions along the trajectory',
35
85
  )
36
86
 
37
- #: Tuple of the start and end time, is set automatically
38
- #: (depending on :attr:`points`).
87
+ #: Automatically determined tuple ``(t_min, t_max)`` representing the start and end times of the
88
+ #: trajectory, based on the keys in :attr:`points`.
39
89
  interval = Property()
40
90
  # t_min, t_max tuple
41
91
 
42
- #: Spline data, internal use.
92
+ #: Internal representation of the spline, generated using :func:`scipy.interpolate.splprep`.
43
93
  tck = Property()
44
94
 
45
- # internal identifier
46
- digest = Property(
47
- depends_on=['points[]'],
48
- )
95
+ #: A unique identifier for the trajectory, based on its points. (read-only)
96
+ digest = Property(depends_on=['points[]'])
49
97
 
50
98
  @cached_property
51
99
  def _get_digest(self):
52
100
  return digest(self)
53
101
 
54
- @property_depends_on('points[]')
102
+ @property_depends_on(['points[]'])
55
103
  def _get_interval(self):
56
104
  return sort(list(self.points.keys()))[r_[0, -1]]
57
105
 
58
- @property_depends_on('points[]')
106
+ @property_depends_on(['points[]'])
59
107
  def _get_tck(self):
60
108
  t = sort(list(self.points.keys()))
61
109
  xp = array([self.points[i] for i in t]).T
@@ -64,61 +112,86 @@ class Trajectory(HasPrivateTraits):
64
112
  return tcku[0]
65
113
 
66
114
  def location(self, t, der=0):
67
- """Returns the positions for one or more instants in time.
115
+ """
116
+ Compute the trajectory's position or derivatives at specified times.
68
117
 
69
118
  Parameters
70
119
  ----------
71
- t : array of floats
72
- Instances in time to calculate the positions at.
73
- der : integer
74
- The order of derivative of the spline to compute, defaults to 0.
120
+ t : :class:`float` or array of :class:`floats<float>`
121
+ Time instant(s) at which to compute the position(s) or derivative(s).
122
+ der : :class:`int`, optional
123
+ Order of the derivative to compute:
124
+ - ``0`` for positions (default),
125
+ - ``1`` for velocities,
126
+ - ``2`` for accelerations, etc.
75
127
 
76
128
  Returns
77
129
  -------
78
- (x, y, z) : tuple with arrays of floats
79
- Positions at the given times; `x`, `y` and `z` have the same shape as `t`.
130
+ :class:`numpy.ndarray`
131
+ ``(x, y, z)`` arrays representing the trajectory's position (or derivative) at the given
132
+ time(s). The shape matches that of ``t``.
80
133
 
134
+ Examples
135
+ --------
136
+ >>> import acoular as ac
137
+ >>>
138
+ >>> points = {0.0: (0.0, 0.0, 0.0), 1.0: (1.0, 2.0, 0.0), 2.0: (2.0, 4.0, 0.0)}
139
+ >>> tr = ac.Trajectory(points=points)
140
+ >>> tr.location(1.0) # Position at t=1.0
141
+ [array(1.), array(2.), array(0.)]
142
+ >>> tr.location([0.5, 1.5], der=1) # Velocity at t=0.5 and t=1.5
143
+ [array([1., 1.]), array([2., 2.]), array([0., 0.])]
81
144
  """
82
145
  return splev(t, self.tck, der)
83
146
 
84
147
  def traj(self, t_start, t_end=None, delta_t=None, der=0):
85
- """Python generator that yields locations along the trajectory.
148
+ """
149
+ Interate through trajectory positions or derivatives at specified intervals.
86
150
 
87
151
  Parameters
88
152
  ----------
89
- t_start : float
90
- Starting time of the trajectory, defaults to the earliest
91
- time in :attr:`points`.
92
- t_end : float
93
- Ending time of the trajectory, defaults to the latest
94
- time in :attr:`points`.
95
- delta_t : float
96
- Time interval between yielded trajectory points, defaults to earliest
97
- time in :attr:`points`.
98
-
99
- Returns
100
- -------
101
- (x, y, z) : tuples of floats
102
- Positions at the desired times are yielded.
153
+ t_start : :class:`float`
154
+ Start time for the trajectory. Default is earliest key in :attr:`points`.
155
+ t_end : :class:`float`, optional
156
+ End time of the trajectory. Default is the latest key in :attr:`points`.
157
+ delta_t : :class:`float`, optional
158
+ Time interval between consecutive points to yield. Default is the value of ``t_start``.
159
+ der : int, optional
160
+ Order of the derivative to compute:
161
+ - ``0`` for positions (default),
162
+ - ``1`` for velocities,
163
+ - ``2`` for accelerations, etc.
164
+
165
+ Yields
166
+ ------
167
+ :class:`tuple` of :class:`floats<float>`
168
+ ``(x, y, z)`` positions or derivatives at the specified time intervals.
169
+
170
+ Notes
171
+ -----
172
+ The function precomputes all interpolated locations for efficiency and yields them
173
+ sequentially.
103
174
 
104
175
  Examples
105
176
  --------
106
- x.traj(0.1)
107
- Yields the position every 0.1 s within the
108
- given :attr:`interval`.
109
- x.traj(2.5, 4.5, 0.1)
110
- Yields the position every 0.1 s between 2.5 s and 4.5 s.
111
- x.traj(0.1, der=1)
112
- Yields the 1st derivative of the spline (= velocity vector) every 0.1 s
113
- within the given :attr:`interval`.
114
-
177
+ Create a trajectory and iterate through the positions in the :attr:`interval`:
178
+
179
+ >>> import acoular as ac
180
+ >>>
181
+ >>> points = {0.0: (0.0, 0.0, 0.0), 1.0: (1.0, 0.0, 0.0), 2.0: (2.0, 1.0, 0.0)}
182
+ >>> tr = ac.Trajectory(points=points)
183
+ >>> for pos in tr.traj(0.0, 2.0, 0.5):
184
+ ... print(pos)
185
+ (np.float64(0.0), np.float64(0.0), np.float64(0.0))
186
+ (np.float64(0.5), np.float64(-0.125), np.float64(0.0))
187
+ (np.float64(1.0), np.float64(0.0), np.float64(0.0))
188
+ (np.float64(1.5), np.float64(0.375), np.float64(0.0))
115
189
  """
116
190
  if not delta_t:
117
191
  delta_t = t_start
118
192
  t_start, t_end = self.interval
119
193
  if not t_end:
120
194
  t_end = self.interval[1]
121
- # all locations are fetched in one go because thats much faster
122
- # further improvement could be possible if interpolated locations are fetched
123
- # in blocks
195
+ # all locations are fetched in one go because that is much faster further improvement could
196
+ # be possible if interpolated locations are fetched in blocks
124
197
  yield from zip(*self.location(arange(t_start, t_end, delta_t), der))
acoular/version.py CHANGED
@@ -4,5 +4,5 @@
4
4
 
5
5
  # separate file to find out about version without importing the acoular lib
6
6
  __author__ = 'Acoular Development Team'
7
- __date__ = '22 October 2024'
8
- __version__ = '24.10'
7
+ __date__ = '12 March 2025'
8
+ __version__ = '25.03'
@@ -1,6 +1,6 @@
1
- Metadata-Version: 2.3
1
+ Metadata-Version: 2.4
2
2
  Name: acoular
3
- Version: 24.10
3
+ Version: 25.3
4
4
  Summary: Python library for acoustic beamforming
5
5
  Project-URL: homepage, https://acoular.org
6
6
  Project-URL: documentation, https://acoular.org
@@ -45,8 +45,9 @@ Classifier: License :: OSI Approved :: BSD License
45
45
  Classifier: Programming Language :: Python :: 3.10
46
46
  Classifier: Programming Language :: Python :: 3.11
47
47
  Classifier: Programming Language :: Python :: 3.12
48
+ Classifier: Programming Language :: Python :: 3.13
48
49
  Classifier: Topic :: Scientific/Engineering :: Physics
49
- Requires-Python: <=12,>=3.10
50
+ Requires-Python: <3.14,>=3.10
50
51
  Requires-Dist: numba
51
52
  Requires-Dist: numpy
52
53
  Requires-Dist: scikit-learn
@@ -63,9 +64,14 @@ Requires-Dist: numpydoc; extra == 'dev'
63
64
  Requires-Dist: pickleshare; extra == 'dev'
64
65
  Requires-Dist: pylops; extra == 'dev'
65
66
  Requires-Dist: pytest; extra == 'dev'
67
+ Requires-Dist: pytest-cases; extra == 'dev'
66
68
  Requires-Dist: pytest-cov; extra == 'dev'
69
+ Requires-Dist: pytest-env; extra == 'dev'
70
+ Requires-Dist: pytest-mock; extra == 'dev'
71
+ Requires-Dist: pytest-profiling; extra == 'dev'
72
+ Requires-Dist: pytest-regtest; extra == 'dev'
67
73
  Requires-Dist: pyyaml; extra == 'dev'
68
- Requires-Dist: ruff==0.4.1; extra == 'dev'
74
+ Requires-Dist: ruff==0.8.1; extra == 'dev'
69
75
  Requires-Dist: setuptools; extra == 'dev'
70
76
  Requires-Dist: sounddevice; extra == 'dev'
71
77
  Requires-Dist: sphinx; extra == 'dev'
@@ -89,8 +95,14 @@ Requires-Dist: pylops; extra == 'full'
89
95
  Requires-Dist: sounddevice; extra == 'full'
90
96
  Provides-Extra: tests
91
97
  Requires-Dist: h5py; extra == 'tests'
98
+ Requires-Dist: pylops; extra == 'tests'
92
99
  Requires-Dist: pytest; extra == 'tests'
100
+ Requires-Dist: pytest-cases; extra == 'tests'
93
101
  Requires-Dist: pytest-cov; extra == 'tests'
102
+ Requires-Dist: pytest-env; extra == 'tests'
103
+ Requires-Dist: pytest-mock; extra == 'tests'
104
+ Requires-Dist: pytest-profiling; extra == 'tests'
105
+ Requires-Dist: pytest-regtest; extra == 'tests'
94
106
  Requires-Dist: pyyaml; extra == 'tests'
95
107
  Requires-Dist: sounddevice; extra == 'tests'
96
108
  Requires-Dist: traitsui; extra == 'tests'
@@ -185,35 +197,45 @@ If you are interested in contributing, have a look at the [CONTRIBUTING.md](CONT
185
197
  This reads data from 64 microphone channels and computes a beamforming map for the 8kHz third octave band:
186
198
 
187
199
  ```python
188
- from os import path
189
- import acoular
190
- from matplotlib.pylab import figure, plot, axis, imshow, colorbar, show
200
+ from pathlib import Path
201
+
202
+ import acoular as ac
203
+ import matplotlib.pylab as plt
191
204
 
192
205
  # this file contains the microphone coordinates
193
- micgeofile = path.join(path.split(acoular.__file__)[0],'xml','array_64.xml')
206
+ micgeofile = Path(ac.__file__).parent / 'xml' / 'array_64.xml'
194
207
  # set up object managing the microphone coordinates
195
- mg = acoular.MicGeom( from_file=micgeofile )
208
+ mg = ac.MicGeom( file=micgeofile )
209
+ # generate test data, in real life this would come from an array measurement
210
+ p = ac.demo.create_three_sources(mg, h5savefile='three_sources.h5')
196
211
  # set up object managing the microphone array data (usually from measurement)
197
- ts = acoular.TimeSamples( name='three_sources.h5' )
212
+ ts = ac.TimeSamples( file='three_sources.h5')
198
213
  # set up object managing the cross spectral matrix computation
199
- ps = acoular.PowerSpectra( source=ts, block_size=128, window='Hanning' )
214
+ ps = ac.PowerSpectra( source=ts, block_size=128, window='Hanning' )
215
+ # alternatively, you can use the in-memory Mixer object directly:
216
+ # ps = ac.PowerSpectra( source=p, block_size=128, window='Hanning' )
200
217
  # set up object managing the mapping grid
201
- rg = acoular.RectGrid( x_min=-0.2, x_max=0.2, y_min=-0.2, y_max=0.2, z=0.3, \
218
+ rg = ac.RectGrid( x_min=-0.2, x_max=0.2, y_min=-0.2, y_max=0.2, z=-0.3, \
202
219
  increment=0.01 )
203
220
  # set up steering vector, implicitely contains also the standard quiescent
204
221
  # environment with standard speed of sound
205
- st = acoular.SteeringVector( grid = rg, mics=mg )
222
+ st = ac.SteeringVector( grid = rg, mics=mg )
206
223
  # set up the object managing the delay & sum beamformer
207
- bb = acoular.BeamformerBase( freq_data=ps, steer=st )
224
+ bb = ac.BeamformerBase( freq_data=ps, steer=st )
208
225
  # request the result in the 8kHz third octave band from approriate FFT-Lines
209
226
  # this starts the actual computation (data intake, FFT, Welch CSM, beamforming)
210
227
  pm = bb.synthetic( 8000, 3 )
211
228
  # compute the sound pressure level
212
- Lm = acoular.L_p( pm )
229
+ Lm = ac.L_p( pm )
213
230
  # plot the map
214
- imshow( Lm.T, origin='lower', vmin=Lm.max()-10, extent=rg.extend(), \
231
+ plt.imshow( Lm.T, origin='lower', vmin=Lm.max()-10, extent=rg.extend(), \
215
232
  interpolation='bicubic')
216
- colorbar()
233
+ plt.title('Beamformer (base) for 3 sources measured for 8000 Hz')
234
+ plt.xlabel('x in m')
235
+ plt.ylabel('y in m')
236
+ plt.colorbar(label=r'$L_p$')
237
+ plt.savefig('three_sources.png', dpi=300, bbox_inches='tight')
238
+ plt.show()
217
239
  ```
218
240
 
219
241
  ![result](https://github.com/acoular/acoular/blob/master/docs/source/get_started/three_source_py3_colormap.png?raw=true)
@@ -0,0 +1,56 @@
1
+ acoular/__init__.py,sha256=mbNHGVcWp6aSs9dZ22rEJGX11Kw4S8Mr_CELLsfOBNU,3284
2
+ acoular/base.py,sha256=gqFsfgSG1YrS-BAmV44ao6ckXo7v5B2VMX86QH3QowE,10717
3
+ acoular/calib.py,sha256=P46L1U8Lk0_BSY3AQz0KO4g8rsZmi47j3YaQOlHK64A,7133
4
+ acoular/configuration.py,sha256=QQU5HWjXEDMuMU3LEoaDnDszhqeJzCGhZ5oGbsW2qFY,8630
5
+ acoular/deprecation.py,sha256=lfmCRvwYu_tXSEk5HfYDmagPCVBL7082m3oq5kvxOZ8,3810
6
+ acoular/environments.py,sha256=tWRJSCzIa0eSBX2AGjrWciz12mq2nPzs0AAQc9yFGqk,35998
7
+ acoular/fastFuncs.py,sha256=6Iqm-xy2T7qBaYpdpgUquup6JkAwdURhSXfAEkgqVOs,37362
8
+ acoular/fbeamform.py,sha256=IY7RlM_7Yl8UjCgnDPVmAEmBASS83yGsefg6OAcWFCk,99057
9
+ acoular/fprocess.py,sha256=NK3Nt2jD0Dvq5kPLWvodFRGKd9oIpk6Rgy_U48R49Yg,20706
10
+ acoular/grids.py,sha256=Mcc9lmh5qXLfAxu5mpImPNkUuEcd2wEas74ovlarmuY,58981
11
+ acoular/h5cache.py,sha256=tHCJjHs26ZnRtPO6uj9PqJ2xMEEJup-A8FoiiojkkLw,4166
12
+ acoular/h5files.py,sha256=RKMBfbFX8d_d4JEnyMyHQQjN74EhW6W4CE-drmDZakY,7553
13
+ acoular/internal.py,sha256=qgluN_4Br7U74keTiavbmxRMkcNkoHcL1TihKTcMEBs,829
14
+ acoular/microphones.py,sha256=IrPDPB4v4mM2ONLkwODjgOVPTMZSSPoMAFXjAMp4QEw,10591
15
+ acoular/process.py,sha256=86wfR87RsSpYqa7ZmC4FtmEmp4zPDL0ICq8QdiTYLeI,41043
16
+ acoular/sdinput.py,sha256=93uQaO5Zt2DV83iyeoFMaPXww1rp0PP4HB6M-C2FDak,5109
17
+ acoular/signals.py,sha256=ue_KtTbrcMUzX_aUM8pqhm3jviNGeh32Nk-wXrCVw_g,24416
18
+ acoular/sources.py,sha256=7-XHQMeiE2D4NSxgbGpFDwZL08Xb92New6lsTxDwbfs,97225
19
+ acoular/spectra.py,sha256=oU5m124tlvlIaN3MbqZarHw9hO6hMowpg3WY6FFqRXo,28837
20
+ acoular/tbeamform.py,sha256=-CAvutAY4VK4cILq1GOu7oTjwNh_R0gjVCLjLmM-5U0,30857
21
+ acoular/tfastfuncs.py,sha256=q2ZbDoWmFbGMZw1TT_h-21hn24qGi2of_ZqJVoLMYhc,7901
22
+ acoular/tprocess.py,sha256=gm6lvIJogR0_S17StsXe4e_y2dssTLyaPH0mb-6ykN0,77502
23
+ acoular/traitsviews.py,sha256=VO-i509WAMQG7KuJatlCWeexZeTAFEjmjbNDkGSfzX4,13773
24
+ acoular/trajectory.py,sha256=cOawITHARdcsBwpHfBleosltDwU-31xtOlZ7clrcbvA,7910
25
+ acoular/version.py,sha256=G10HLGx_t9fD3x7HMmmPoYx8REcItCTTVwu8YXjN1MA,378
26
+ acoular/aiaa/__init__.py,sha256=5RhoERGQmLBf6uosr9hYHWy_MruKiyR5x-8cMRX4hT4,420
27
+ acoular/aiaa/aiaa.py,sha256=WvQFr7D37QhdUVgrBOifE76zX9FFe1eexumQd1_3_2M,6310
28
+ acoular/demo/__init__.py,sha256=fxf0-D7Pxepi0bmxPwCj3Yo-vgCC37faTLlPaotMkB0,380
29
+ acoular/demo/acoular_demo.py,sha256=HDANP1vA5OXBkuolpCeWRt8hr_jFKnu_sQRbCtbApPo,3513
30
+ acoular/tools/__init__.py,sha256=z8RHRQhcmqkUKwD8v3pInpAMN8csPcN5J4Z9QXu_GjQ,511
31
+ acoular/tools/helpers.py,sha256=L9Bi6WmGBiyF_Xz5L5wtIgk0tobd4FX8gG6mfGA8z2k,13468
32
+ acoular/tools/metrics.py,sha256=y6TsavywfnuMScBcFxIrcKcDuC55WfIGkNFnCuuuj3Y,6136
33
+ acoular/tools/utils.py,sha256=5KNj-hJNOLlU3oIGamqOK6bfSaPxNvjUMAh4fkyE1Nk,3192
34
+ acoular/xml/HW90D240_f10.xml,sha256=WvowIe8aYJaeHSExjwaY9fjpYukLxX6A-H7fD1PW2g8,5127
35
+ acoular/xml/W90_D105_f10.xml,sha256=f8NHPoOYjEnRsstYDa_4E65EBR5m5BVzlg87jpCgckA,5283
36
+ acoular/xml/acousticam_2c.xml,sha256=xcVlKQhGbRqMQHLKuTAyXTt3SM3aLZEAfGqbuFaWx4k,1993
37
+ acoular/xml/acousticam_4c.xml,sha256=P8wAP5_GT0HS40VV3f7_88xQXwTLN1YRxI7MudnwIqw,1949
38
+ acoular/xml/array38.xml,sha256=FrbC-1yVHNfWTamEJPiJhhdPtVYVfGbPXJ3TLljBKx0,2363
39
+ acoular/xml/array92x.xml,sha256=65Wf2xbA6Dt_k98C3q4MfTtwPzceT8B2vKvK77hO9Yc,5874
40
+ acoular/xml/array_56.xml,sha256=qe8CAcRP7-3MLpPn919XKHB8hMb9G5JUPFzP1qOA4IM,3428
41
+ acoular/xml/array_56_10_9.xml,sha256=2G-KZSwvAtIuxyC6JKW2Hv2IWXVFd4Sux1tLxizJ5Z4,4432
42
+ acoular/xml/array_56_bomb.xml,sha256=tAdhLzvUrhMh7DMrbXU7skAEAlCvQ6GLbJXAU7Z2JxE,4193
43
+ acoular/xml/array_56_v2.xml,sha256=x4OTI77Fttfaqu-Kl7uWmslg8rZAuw2Y-RUa21MqzXk,3458
44
+ acoular/xml/array_64.xml,sha256=1ZHuQEHhFhz9EhBcNbXkVT-9tnAr6T9cHH5Xb1gHL7Y,4039
45
+ acoular/xml/array_84_10_9.xml,sha256=jzvMYZlQqo8y6jt3yllGOL7vk8bxMVpISexkZL0uquA,6558
46
+ acoular/xml/array_84_bomb_v3.xml,sha256=Mv8nvqSOUezrdIjrCHZt4gZpJ-Z3BzF2wIYPawHZjlA,6248
47
+ acoular/xml/calib_vw_ring32.xml,sha256=9chpz0O3e__oIs4ZuJTvUJNIuawjDqEnkdRbfyUBBxU,1341
48
+ acoular/xml/gfai_ring32.xml,sha256=liKaGpfgUn8R1psDmiw6qqpZi5SwtPWBRhwhqy7YuOc,1831
49
+ acoular/xml/minidsp_uma-16.xml,sha256=oBj7J96RTDZufsQ7S4rw0jAvLOoykJaIGgl6_2gMON4,1140
50
+ acoular/xml/minidsp_uma-16_mirrored.xml,sha256=l6LUPIsEVg7HPMbs9NbnqZyFhpCSYS70glsbyH3IUOE,1418
51
+ acoular/xml/tub_vogel64.xml,sha256=PixVMx5hMJjgBOekH46uu6D3ODqYVOLlk82zkYl4EBM,4424
52
+ acoular-25.3.dist-info/METADATA,sha256=M_4x0wwsiPt3Pi93mMs1ryK-v3MrqiVT5R50bgo7PMM,12769
53
+ acoular-25.3.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
54
+ acoular-25.3.dist-info/licenses/AUTHORS.rst,sha256=445q_Us_TnQx8s_GP2yringU2DMTk3-ycrk2REtSsx0,382
55
+ acoular-25.3.dist-info/licenses/LICENSE,sha256=tbw7-nx204gXCo8p-NwwR7w8oKvNMWB4H07FTT6V9p8,1505
56
+ acoular-25.3.dist-info/RECORD,,
@@ -1,4 +1,4 @@
1
1
  Wheel-Version: 1.0
2
- Generator: hatchling 1.25.0
2
+ Generator: hatchling 1.27.0
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
@@ -1,54 +0,0 @@
1
- acoular/__init__.py,sha256=Y-bkeQCE1Jo9he1Ps61a7lH43uXXleOz-RJLVQOQPaU,3200
2
- acoular/base.py,sha256=qIY6oOyuwX41vXZlxZjR4TlM2huwxxtTEI1SxFuXLxE,10078
3
- acoular/calib.py,sha256=7hyas42kn33qvvO4Is2nxkyQEnL8MTo6mIq1VZ56vOQ,2509
4
- acoular/configuration.py,sha256=vRjyibxKjhm3n8jjY3Cl3WF2vV0GpyYp8F5SxtV9ngQ,8516
5
- acoular/environments.py,sha256=Ps8EAP1Fveb6r40XCnILeWVSX6Z572VUoc4xW509KOk,22441
6
- acoular/fastFuncs.py,sha256=UHIVLsog5U4urV5h8_0Sh5xT8no7guE4Q6amRRZiib0,38863
7
- acoular/fbeamform.py,sha256=lw1vPW-pAjF-SS0628SYif75uyuudooF1QLpS3b-AYA,106870
8
- acoular/fprocess.py,sha256=D_vDLNZXeCvJULry2ixeqa_SzsHCkTKOlhD5_SSzIWo,14394
9
- acoular/grids.py,sha256=DFY4bSwgmB0tduwzeLPccVC2RXrhlflV19kHr1JswD8,41113
10
- acoular/h5cache.py,sha256=87OU9sVw96j5Hvj5Xtk21_k2PoqG5e3yl8FruqJqPPQ,4214
11
- acoular/h5files.py,sha256=YlnHOAr3ePOs6-AJcN_eNun0XBws-cSNGCj3U2jhJP0,7653
12
- acoular/internal.py,sha256=qgluN_4Br7U74keTiavbmxRMkcNkoHcL1TihKTcMEBs,829
13
- acoular/microphones.py,sha256=Pn4pKZtr82LRE3TkBfLyWQZnnLyppIVhoqJjhiHhdOk,5113
14
- acoular/process.py,sha256=QDAtuNbg_tSnKCb3LqRBsG8pI5aQI17KPKlces_NR-w,17598
15
- acoular/sdinput.py,sha256=23Gek414D0Oyd4YpMyPU-AEn9kuTnL7koSAdVO-WeqI,4919
16
- acoular/signals.py,sha256=VQHH02cI0wWOEM2SuHdMuGnymcuTKD7RX5aP0vdj9m4,11942
17
- acoular/sources.py,sha256=_gEwlZEihK_k0jM8JikG_PuUPPnxOxCta6gpdfDELAM,56369
18
- acoular/spectra.py,sha256=8feistmN0w0R1Lyy2i7cxdTWebCrYGiFDBVixH7Czf4,27669
19
- acoular/tbeamform.py,sha256=248tlFOJ81ycT-ree-c9ls4FfRJKs_TUtg33cyXo3gE,35559
20
- acoular/tfastfuncs.py,sha256=YtLvz-WAW9SY9zNLYBzkLTj8da9ibCsjPOGWe9ZLFEg,7880
21
- acoular/tprocess.py,sha256=pwosxIYq-rdnP7Y03cu_f9BifUXlY60O32jCGujB-Ck,76011
22
- acoular/traitsviews.py,sha256=g0dLZII3WThAitI1cNMz_gtPorC6e3qwjzvAEhER-m4,13766
23
- acoular/trajectory.py,sha256=I3Ve08IlritHcG7iOBt-jjjRY7bCGWwOjTwD4rorTi8,3964
24
- acoular/version.py,sha256=fgoZRTXp0NwB1POzd5Nj4EiKbhE1X-5sYLK_3l12SBs,380
25
- acoular/demo/__init__.py,sha256=ejn5L3j0M3BwsaxQNSAAFdBNU1kr0LpVFxtONtj9dP8,332
26
- acoular/demo/acoular_demo.py,sha256=BWNZdwIEUFs9VdXe4eTOL4doNqgx7FPuPs0qlJwVkOA,3273
27
- acoular/tools/__init__.py,sha256=-SQy1ZhFVZ36tn4rkCARwS71Ko2D5Pp4EBElgEXckZg,618
28
- acoular/tools/aiaa.py,sha256=3pSZkjkkPpGEKUfuU6IUA3-bb4jFy83mR6bJDSONVmw,6447
29
- acoular/tools/helpers.py,sha256=ySgeIiIOA-TTmcjtbqe6zjI-ZJjC8E9N_uiBddIEXRo,6284
30
- acoular/tools/metrics.py,sha256=gyceQywoL7fNo-XdZwGSz3z0x_Pze5720egP2QYkn3s,6140
31
- acoular/tools/utils.py,sha256=hWNWdUYfS_YC0hkXm2v6g9sUWQYT5devdMBmI9iEiRs,7677
32
- acoular/xml/HW90D240_f10.xml,sha256=WvowIe8aYJaeHSExjwaY9fjpYukLxX6A-H7fD1PW2g8,5127
33
- acoular/xml/W90_D105_f10.xml,sha256=f8NHPoOYjEnRsstYDa_4E65EBR5m5BVzlg87jpCgckA,5283
34
- acoular/xml/acousticam_2c.xml,sha256=xcVlKQhGbRqMQHLKuTAyXTt3SM3aLZEAfGqbuFaWx4k,1993
35
- acoular/xml/acousticam_4c.xml,sha256=P8wAP5_GT0HS40VV3f7_88xQXwTLN1YRxI7MudnwIqw,1949
36
- acoular/xml/array38.xml,sha256=FrbC-1yVHNfWTamEJPiJhhdPtVYVfGbPXJ3TLljBKx0,2363
37
- acoular/xml/array92x.xml,sha256=65Wf2xbA6Dt_k98C3q4MfTtwPzceT8B2vKvK77hO9Yc,5874
38
- acoular/xml/array_56.xml,sha256=qe8CAcRP7-3MLpPn919XKHB8hMb9G5JUPFzP1qOA4IM,3428
39
- acoular/xml/array_56_10_9.xml,sha256=2G-KZSwvAtIuxyC6JKW2Hv2IWXVFd4Sux1tLxizJ5Z4,4432
40
- acoular/xml/array_56_bomb.xml,sha256=tAdhLzvUrhMh7DMrbXU7skAEAlCvQ6GLbJXAU7Z2JxE,4193
41
- acoular/xml/array_56_v2.xml,sha256=x4OTI77Fttfaqu-Kl7uWmslg8rZAuw2Y-RUa21MqzXk,3458
42
- acoular/xml/array_64.xml,sha256=1ZHuQEHhFhz9EhBcNbXkVT-9tnAr6T9cHH5Xb1gHL7Y,4039
43
- acoular/xml/array_84_10_9.xml,sha256=jzvMYZlQqo8y6jt3yllGOL7vk8bxMVpISexkZL0uquA,6558
44
- acoular/xml/array_84_bomb_v3.xml,sha256=Mv8nvqSOUezrdIjrCHZt4gZpJ-Z3BzF2wIYPawHZjlA,6248
45
- acoular/xml/calib_vw_ring32.xml,sha256=9chpz0O3e__oIs4ZuJTvUJNIuawjDqEnkdRbfyUBBxU,1341
46
- acoular/xml/gfai_ring32.xml,sha256=liKaGpfgUn8R1psDmiw6qqpZi5SwtPWBRhwhqy7YuOc,1831
47
- acoular/xml/minidsp_uma-16.xml,sha256=oBj7J96RTDZufsQ7S4rw0jAvLOoykJaIGgl6_2gMON4,1140
48
- acoular/xml/minidsp_uma-16_mirrored.xml,sha256=l6LUPIsEVg7HPMbs9NbnqZyFhpCSYS70glsbyH3IUOE,1418
49
- acoular/xml/tub_vogel64.xml,sha256=PixVMx5hMJjgBOekH46uu6D3ODqYVOLlk82zkYl4EBM,4424
50
- acoular-24.10.dist-info/METADATA,sha256=-jhuw-l14NoGYtmYEuv6s7mHNsUAIpPCCFjOb0C56OM,11821
51
- acoular-24.10.dist-info/WHEEL,sha256=1yFddiXMmvYK7QYTqtRNtX66WJ0Mz8PYEiEUoOUUxRY,87
52
- acoular-24.10.dist-info/licenses/AUTHORS.rst,sha256=445q_Us_TnQx8s_GP2yringU2DMTk3-ycrk2REtSsx0,382
53
- acoular-24.10.dist-info/licenses/LICENSE,sha256=tbw7-nx204gXCo8p-NwwR7w8oKvNMWB4H07FTT6V9p8,1505
54
- acoular-24.10.dist-info/RECORD,,