acoular 25.7__py3-none-any.whl → 26.1__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/trajectory.py CHANGED
@@ -10,7 +10,7 @@
10
10
  """
11
11
 
12
12
  # imports from other packages
13
- from numpy import arange, array, r_, sort
13
+ import numpy as np
14
14
  from scipy.interpolate import splev, splprep
15
15
  from traits.api import Dict, Float, HasStrictTraits, Property, Tuple, cached_property, property_depends_on
16
16
 
@@ -81,7 +81,6 @@ class Trajectory(HasStrictTraits):
81
81
  points = Dict(
82
82
  key_trait=Float,
83
83
  value_trait=Tuple(Float, Float, Float),
84
- desc='sampled positions along the trajectory',
85
84
  )
86
85
 
87
86
  #: Automatically determined tuple ``(t_min, t_max)`` representing the start and end times of the
@@ -101,12 +100,12 @@ class Trajectory(HasStrictTraits):
101
100
 
102
101
  @property_depends_on(['points[]'])
103
102
  def _get_interval(self):
104
- return sort(list(self.points.keys()))[r_[0, -1]]
103
+ return np.sort(list(self.points.keys()))[np.r_[0, -1]]
105
104
 
106
105
  @property_depends_on(['points[]'])
107
106
  def _get_tck(self):
108
- t = sort(list(self.points.keys()))
109
- xp = array([self.points[i] for i in t]).T
107
+ t = np.sort(list(self.points.keys()))
108
+ xp = np.array([self.points[i] for i in t]).T
110
109
  k = min(3, len(self.points) - 1)
111
110
  tcku = splprep(xp, u=t, s=0, k=k)
112
111
  return tcku[0]
@@ -194,4 +193,4 @@ class Trajectory(HasStrictTraits):
194
193
  t_end = self.interval[1]
195
194
  # all locations are fetched in one go because that is much faster further improvement could
196
195
  # be possible if interpolated locations are fetched in blocks
197
- yield from zip(*self.location(arange(t_start, t_end, delta_t), der))
196
+ yield from zip(*self.location(np.arange(t_start, t_end, delta_t), der), strict=True)
acoular/version.py CHANGED
@@ -5,5 +5,5 @@
5
5
  """Dedicated file to determine the package version without importing acoular."""
6
6
 
7
7
  __author__ = 'Acoular Development Team'
8
- __date__ = '24 July 2025'
9
- __version__ = '25.07'
8
+ __date__ = '28 January 2026'
9
+ __version__ = '26.01'
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: acoular
3
- Version: 25.7
3
+ Version: 26.1
4
4
  Summary: Python library for acoustic beamforming
5
5
  Project-URL: homepage, https://acoular.org
6
6
  Project-URL: documentation, https://acoular.org
@@ -51,61 +51,14 @@ Requires-Python: <3.14,>=3.10
51
51
  Requires-Dist: numba
52
52
  Requires-Dist: numpy
53
53
  Requires-Dist: scikit-learn
54
- Requires-Dist: scipy!=1.16.*,>=1.1.0
54
+ Requires-Dist: scipy!=1.16.0,>=1.15; python_version == '3.10'
55
+ Requires-Dist: scipy>=1.16.1; python_version > '3.10'
55
56
  Requires-Dist: tables
56
57
  Requires-Dist: traits>=6.0
57
- Provides-Extra: dev
58
- Requires-Dist: graphviz; extra == 'dev'
59
- Requires-Dist: h5py; extra == 'dev'
60
- Requires-Dist: hatch; extra == 'dev'
61
- Requires-Dist: ipython; extra == 'dev'
62
- Requires-Dist: matplotlib; extra == 'dev'
63
- Requires-Dist: numpydoc; extra == 'dev'
64
- Requires-Dist: pickleshare; extra == 'dev'
65
- Requires-Dist: pylops; extra == 'dev'
66
- Requires-Dist: pytest; extra == 'dev'
67
- Requires-Dist: pytest-cases; extra == 'dev'
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'
73
- Requires-Dist: pyyaml; extra == 'dev'
74
- Requires-Dist: ruff==0.8.1; extra == 'dev'
75
- Requires-Dist: setuptools; extra == 'dev'
76
- Requires-Dist: sounddevice; extra == 'dev'
77
- Requires-Dist: sphinx; extra == 'dev'
78
- Requires-Dist: sphinx-gallery; extra == 'dev'
79
- Requires-Dist: sphinxcontrib-bibtex; extra == 'dev'
80
- Requires-Dist: traitsui; extra == 'dev'
81
- Provides-Extra: docs
82
- Requires-Dist: graphviz; extra == 'docs'
83
- Requires-Dist: ipython; extra == 'docs'
84
- Requires-Dist: matplotlib; extra == 'docs'
85
- Requires-Dist: numpydoc; extra == 'docs'
86
- Requires-Dist: pickleshare; extra == 'docs'
87
- Requires-Dist: setuptools; extra == 'docs'
88
- Requires-Dist: sounddevice; extra == 'docs'
89
- Requires-Dist: sphinx; extra == 'docs'
90
- Requires-Dist: sphinx-gallery; extra == 'docs'
91
- Requires-Dist: sphinxcontrib-bibtex; extra == 'docs'
92
58
  Provides-Extra: full
93
59
  Requires-Dist: matplotlib; extra == 'full'
94
60
  Requires-Dist: pylops; extra == 'full'
95
61
  Requires-Dist: sounddevice; extra == 'full'
96
- Provides-Extra: tests
97
- Requires-Dist: h5py; extra == 'tests'
98
- Requires-Dist: pylops; extra == 'tests'
99
- Requires-Dist: pytest; extra == 'tests'
100
- Requires-Dist: pytest-cases; extra == 'tests'
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'
106
- Requires-Dist: pyyaml; extra == 'tests'
107
- Requires-Dist: sounddevice; extra == 'tests'
108
- Requires-Dist: traitsui; extra == 'tests'
109
62
  Description-Content-Type: text/markdown
110
63
 
111
64
  ![Acoular Logo](https://github.com/acoular/acoular/blob/master/docs/source/_static/Acoular_logo.png?raw=true)
@@ -113,45 +66,57 @@ Description-Content-Type: text/markdown
113
66
  [![PyPI](https://img.shields.io/pypi/pyversions/acoular.svg)](https://pypi.org/project/acoular)
114
67
  [![PyPI](https://img.shields.io/pypi/v/acoular.svg)](https://pypi.org/project/acoular)
115
68
  [![Actions status](https://github.com/acoular/acoular/actions/workflows/tests.yml/badge.svg)](https://github.com/acoular/acoular/actions)
116
- [![DOI](https://zenodo.org/badge/29729101.svg)](https://zenodo.org/doi/10.5281/zenodo.3690794)
69
+ [![DOI](https://zenodo.org/badge/DOI/10.5281/3690794.svg)](https://zenodo.org/doi/10.5281/zenodo.3690794)
117
70
 
118
71
  # Acoular
119
- Acoular is a Python module for acoustic beamforming that is distributed under the new BSD license.
120
-
121
- It is aimed at applications in acoustic testing. Multichannel data recorded by a microphone array can be processed and analyzed in order to generate mappings of sound source distributions. The maps (acoustic photographs) can then be used to locate sources of interest and to characterize them using their spectra.
122
-
123
- # Features
124
- - frequency domain beamforming algorithms: delay & sum, Capon (adaptive), MUSIC, functional beamforming, eigenvalue beamforming
125
- - frequency domain deconvolution algorithms: DAMAS, DAMAS+, Clean, CleanSC, orthogonal deconvolution
126
- - frequency domain inverse methods: CMF (covariance matrix fitting), general inverse beamforming, SODIX
127
- - time domain methods: delay & sum beamforming, CleanT deconvolution
128
- - time domain methods applicable for moving sources with arbitrary trajectory (linear, circular, arbitrarily 3D curved),
129
- - frequency domain methods for rotating sources via virtual array rotation for arbitrary arrays and with different interpolation techniques
72
+ Acoular is a Python module for acoustic beamforming that is distributed under the [BSD 3-clause license](LICENSE).
73
+
74
+ It is aimed at (but not limited to) applications in acoustic testing. Multichannel data recorded by microphone arrays can be processed and analyzed to generate mappings of sound source distributions. The maps (acoustic photographs) can then be used to locate sources of interest and to characterize them using their spectra.
75
+
76
+ 👁️📢 Please consider taking the [**Acoular User Survey**](https://www.soscisurvey.de/acoularsurvey). It only takes 2 minutes.
77
+
78
+ - **Website:** https://acoular.org
79
+ - **Blog:** https://blog.acoular.org
80
+ - **Installation:** https://acoular.org/install
81
+ - **Getting Started** https://acoular.org/user_guide/get_started.html
82
+ - **User Guide:** https://acoular.org/user_guide
83
+ - **API Reference:** https://acoular.org/api_ref
84
+ - **Examples:** https://acoular.org/auto_examples
85
+ - **Contributing:** https://acoular.org/contributing
86
+ - **Questions?:** https://github.com/orgs/acoular/discussions
87
+ - **Bug Reports:** https://github.com/acoular/acoular/issues
88
+ - **Report a Security Vulnerability:** https://github.com/acoular/acoular/security/advisories/new
89
+
90
+ ## Highlights
91
+ - frequency domain methods:
92
+ - **beamforming:** delay & sum, Capon (adaptive), MUSIC, functional and eigenvalue beamforming
93
+ - **deconvolution:** DAMAS, DAMAS+, Clean, CleanSC, (gridless) orthogonal deconvolution
94
+ - **inverse methods:** CMF (covariance matrix fitting), general inverse beamforming, SODIX
95
+ - time domain methods:
96
+ - **beamforming:** delay & sum
97
+ - **deconvolution:** CleanT
130
98
  - 1D, 2D and 3D mapping grids for all methods
131
- - gridless option for orthogonal deconvolution
132
- - four different built-in steering vector formulations
133
- - arbitrary stationary background flow can be considered for all methods
134
- - efficient cross spectral matrix computation
135
- - flexible modular time domain processing: n-th octave band filters, fast, slow, and impulse weighting, A-, C-, and Z-weighting, filter bank, zero delay filters
136
- - time domain simulation of array microphone signals from fixed and arbitrarily moving sources in arbitrary flow
137
- - fully object-oriented interface
138
- - lazy evaluation: while processing blocks are set up at any time, (expensive) computations are only performed when needed
139
- - intelligent and transparent caching: computed results are automatically saved and loaded on the next run to avoid unnecessary re-computation
140
- - parallel (multithreaded) implementation with Numba for most algorithms
141
- - easily extendable with new algorithms
142
-
143
- # License
144
- Acoular is licensed under the BSD 3-clause. See [LICENSE](LICENSE)
145
-
146
- # Citing
147
-
99
+ - arbitrary stationary background 🌬️ **flow** can be considered for all methods
100
+ - frequency domain methods for 🌀 **rotating sources** via virtual array rotation for arbitrary arrays
101
+ - all time domain methods can identify 🚂🛩️ **moving sources** with arbitrary trajectory
102
+ - flexible & modular 🧮 **signal processing**:
103
+ - n-th octave band filters
104
+ - fast, slow, and impulse weighting
105
+ - A-, C-, and Z-weighting
106
+ - filter bank
107
+ - linear phase filters
108
+ - intelligent and transparent :floppy_disk: **caching**: computed results are automatically saved and loaded on the next run to avoid unnecessary re-computation.
109
+ - 🦥 **lazy** evaluation: while processing blocks are set up at any time, (expensive) computations are only performed when needed.
110
+ - 🏎️ **efficient & parallel** (multithreaded) computation with [Numba](https://numba.pydata.org) for most algorithms.
111
+
112
+ ## Citing
148
113
  If you use Acoular for academic work, please consider citing both our
149
114
  [publication](https://doi.org/10.1016/j.apacoust.2016.09.015):
150
115
 
151
116
  Sarradj, E., & Herold, G. (2017).
152
117
  A Python framework for microphone array data processing.
153
118
  Applied Acoustics, 116, 50–58.
154
- https://doi.org/10.1016/j.apacoust.2016.09
119
+ https://doi.org/10.1016/j.apacoust.2016.09.015
155
120
 
156
121
  and our [software](https://zenodo.org/doi/10.5281/zenodo.3690794):
157
122
 
@@ -159,41 +124,26 @@ and our [software](https://zenodo.org/doi/10.5281/zenodo.3690794):
159
124
  Acoular – Acoustic testing and source mapping software.
160
125
  Zenodo. https://zenodo.org/doi/10.5281/zenodo.3690794
161
126
 
162
- # Dependencies
163
- Acoular runs under Linux, Windows and MacOS and needs Numpy, Scipy, Traits, scikit-learn, pytables, Numba packages available.
164
- Matplotlib is needed for some of the examples.
165
-
166
- If you want to use input from a soundcard, you will also need to install the [sounddevice](https://python-sounddevice.readthedocs.io/en/0.3.12/installation.html) package. Some solvers for the CMF method need [Pylops](https://pylops.readthedocs.io/en/stable/installation.html).
127
+ ## Installation
167
128
 
168
- # Installation
129
+ Acoular can be installed from [PyPI](https://pypi.org/project/acoular). It is recommended to use a [virtual environment](https://docs.python.org/3/library/venv.html). Inside the environment, run
169
130
 
170
- Acoular can be installed via [conda](https://docs.conda.io/en/latest/), which is also part of the [Anaconda Python distribution](https://www.anaconda.com/). It is recommended to install into a dedicated [conda environment](https://docs.conda.io/projects/conda/en/latest/user-guide/tasks/manage-environments.html). After activating this environment, run
131
+ pip install acoular
132
+
133
+ A second option is to install Acoular with [conda](https://docs.conda.io/en/latest/). It is recommended to install into a dedicated [conda environment](https://docs.conda.io/projects/conda/en/latest/user-guide/tasks/manage-environments.html). After activating the environment, run
171
134
 
172
135
  conda install -c acoular acoular
173
136
 
174
- This will install Acoular in your Anaconda Python environment and make the Acoular library available from Python. In addition, this will install all dependencies (those other packages mentioned above) if they are not already present on your system.
175
-
176
- A second option is to install Acoular via [pip](https://pip.pypa.io/en/stable/). It is recommended to use a dedicated [virtual environment](https://virtualenv.pypa.io/en/latest/) and then run
177
-
178
- pip install acoular
179
-
180
137
  For more detailed installation instructions, see the [documentation](https://acoular.org/install/index.html).
181
138
 
182
- # Documentation and help
139
+ ## Documentation and help
183
140
  Documentation is available [here](https://acoular.org) with a
184
- [getting started](https://acoular.org/get_started/index.html) section and
141
+ [getting started](https://www.acoular.org/user_guide/get_started.html) section and
185
142
  [examples](https://acoular.org/auto_examples/index.html).
186
143
 
187
- The Acoular [blog](https://acoular.github.io/blog/) contains some tutorials.
188
-
189
144
  If you discover problems with the Acoular software, please report them using the [issue tracker](https://github.com/acoular/acoular/issues) on GitHub. Please use the [Acoular discussions forum](https://github.com/acoular/acoular/discussions) for practical questions, discussions, and demos.
190
145
 
191
- # Contributing
192
-
193
- We are always happy to welcome new contributors to the project.
194
- If you are interested in contributing, have a look at the [CONTRIBUTING.md](CONTRIBUTING.md) file.
195
-
196
- # Example
146
+ ## Example
197
147
  This reads data from 64 microphone channels and computes a beamforming map for the 8kHz third octave band:
198
148
 
199
149
  ```python
@@ -238,6 +188,5 @@ plt.savefig('three_sources.png', dpi=300, bbox_inches='tight')
238
188
  plt.show()
239
189
  ```
240
190
 
241
- ![result](https://github.com/acoular/acoular/blob/master/docs/source/get_started/three_source_py3_colormap.png?raw=true)
242
-
191
+ ![result](https://github.com/acoular/acoular/blob/master/docs/source/user_guide/three_source_py3_colormap.png?raw=true)
243
192
 
@@ -0,0 +1,56 @@
1
+ acoular/__init__.py,sha256=FzwGAAHTrQbqo_UxXSwydKK8RundiTxMFZgda3hg-RU,3210
2
+ acoular/base.py,sha256=yhQB7aTBfn81gY-PlG9_8JmHXpPsxcZHE9pzCeiUhpQ,9876
3
+ acoular/calib.py,sha256=xQ-H1bLQ79v3RjXMd500wkD4R4j_tfb_TNTz7FebxRM,7139
4
+ acoular/configuration.py,sha256=kVo0FSaycuUF7eM7wKVZy20ec_SyWc0IQ7EJ2dE92pk,8633
5
+ acoular/deprecation.py,sha256=9KgdNddd5NjmPibPWCQ-VCgCUccpZgo5c6z4nfMEHp8,4005
6
+ acoular/environments.py,sha256=leha-snsZWv2fQCmXC71dHfZxJvM10HmX6eqmk9Fgus,35908
7
+ acoular/fastFuncs.py,sha256=COq3IYq2PIOJOsQr5JhU-EcE5qmnpXj1MAhaDWznFNI,37333
8
+ acoular/fbeamform.py,sha256=Q3oTJloKmoPwV0PEw8ohsCEFqjx8J8y1e3Vq-NWPGkI,96282
9
+ acoular/fprocess.py,sha256=Pd2MaXm3wr1VK5tArclvklJLY_5Nddv8q-BvzXiftgA,19431
10
+ acoular/grids.py,sha256=C56zY-CkSYYTw-Rt4wVAzOSf2wCWutx61MbBkioKUq4,55298
11
+ acoular/h5cache.py,sha256=nmfnLhfKL6PSMk_Z7GzJrbmSRtXVqzhQ7yTLjih_6OY,4499
12
+ acoular/h5files.py,sha256=K30ylkKtna-h7GmGh2P-DHLZaKQnvrFQnrMpk_N_Grw,11513
13
+ acoular/internal.py,sha256=XBXWTc5SbUXdPEoc120O8-xGlGAN6-c2giLU1KdpGb4,1078
14
+ acoular/microphones.py,sha256=WPVR9ge2Fo6neUe3kOpxSh4v9bf9nRbZM417o8lG6lI,11127
15
+ acoular/process.py,sha256=BSzW7H848hgwScNfwTNzTCMdqRwlvY129es1J0E0ocw,38850
16
+ acoular/sdinput.py,sha256=QXRCLMd6fKTOSuMeEAdyNjnb5FIX8RO1C9a1Cibbm6A,4754
17
+ acoular/signals.py,sha256=htdvRGvBEaSvvkwmcOV7KMdCZU2adEazzOpQyCDJFR0,24203
18
+ acoular/sources.py,sha256=AxxeQb5eLsxQaQDC8aw-5GZEv8hCqsZwB_3uasf4yco,91405
19
+ acoular/spectra.py,sha256=nKV9iHuXcIt_NRWMURh9haRkRtsS-ge57mTxOB08gcU,27226
20
+ acoular/tbeamform.py,sha256=FNa3ZSm_v-m2hlvPTDvtPYKpV829a0Ix_blGl7mTnss,31935
21
+ acoular/tfastfuncs.py,sha256=q2ZbDoWmFbGMZw1TT_h-21hn24qGi2of_ZqJVoLMYhc,7901
22
+ acoular/tprocess.py,sha256=2J71MZZhjWhBL7rqcNMBh01TuRYTDMVfqarstkyD5ks,116764
23
+ acoular/traitsviews.py,sha256=D2__nVUNELFbb7X9BrLw-mzRMpCDYdYEseKcX-meQNM,13727
24
+ acoular/trajectory.py,sha256=628xuQOspmdmVGCKL1MVk-tkp3qtYB0m5XtvGOhYwtc,7860
25
+ acoular/version.py,sha256=1X1HNzjhyBb3Xr89rZytQSt46CA-w5OJERgS0Hsm7xQ,387
26
+ acoular/aiaa/__init__.py,sha256=5RhoERGQmLBf6uosr9hYHWy_MruKiyR5x-8cMRX4hT4,420
27
+ acoular/aiaa/aiaa.py,sha256=-9V8HMOz18pngRGsP2CHQg7Pt2qRGF39O6Z0KgjVWZs,6366
28
+ acoular/demo/__init__.py,sha256=4u9RQcbH_Gus7FwlWpAs-LCaUesV_RxZGukAMVQ7IXM,3878
29
+ acoular/demo/__main__.py,sha256=M1tKrZp5GDT6YBBHetA_uktbItCI20jmK38gJf49Hlg,1007
30
+ acoular/tools/__init__.py,sha256=z8RHRQhcmqkUKwD8v3pInpAMN8csPcN5J4Z9QXu_GjQ,511
31
+ acoular/tools/helpers.py,sha256=DTRNj3XbFEH-K-aqcL_E_PDCyBmE_skg_6pL8NbETrQ,14178
32
+ acoular/tools/metrics.py,sha256=uD11YT54GcY6WyIy8LnOEiC-rjmGmOOErDLtwjF4eO0,6102
33
+ acoular/tools/utils.py,sha256=e6Xxlr-HI34hetmW1kfuOOD0FY7N88tqKekNzDJlNAY,9890
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-26.1.dist-info/METADATA,sha256=u4ECZczGOergt7k_2yzcqBPk8z2Ng1XI_dGb29JsVe4,10267
53
+ acoular-26.1.dist-info/WHEEL,sha256=WLgqFyCfm_KASv4WHyYy0P3pM_m7J5L9k2skdKLirC8,87
54
+ acoular-26.1.dist-info/licenses/AUTHORS.rst,sha256=445q_Us_TnQx8s_GP2yringU2DMTk3-ycrk2REtSsx0,382
55
+ acoular-26.1.dist-info/licenses/LICENSE,sha256=tbw7-nx204gXCo8p-NwwR7w8oKvNMWB4H07FTT6V9p8,1505
56
+ acoular-26.1.dist-info/RECORD,,
@@ -1,4 +1,4 @@
1
1
  Wheel-Version: 1.0
2
- Generator: hatchling 1.27.0
2
+ Generator: hatchling 1.28.0
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
@@ -1,135 +0,0 @@
1
- # ------------------------------------------------------------------------------
2
- # Copyright (c) Acoular Development Team.
3
- # ------------------------------------------------------------------------------
4
- """Demo for Acoular.
5
-
6
- To run the demo, execute the following commands:
7
-
8
- .. code-block:: python
9
-
10
- import acoular
11
-
12
- acoular.demo.acoular_demo.run()
13
-
14
-
15
- Generates a test data set for three sources, analyzes them and generates a
16
- map of the three sources.
17
-
18
- The simulation generates the sound pressure at 64 microphones that are
19
- arrangend in the 'array64' geometry, which is part of the package. The sound
20
- pressure signals are sampled at 51200 Hz for a duration of 1 second.
21
-
22
- Source location (relative to array center) and RMS in 1 m distance:
23
-
24
- ====== =============== ======
25
- Source Location RMS
26
- ====== =============== ======
27
- 1 (-0.1,-0.1,0.3) 1.0 Pa
28
- 2 (0.15,0,0.3) 0.7 Pa
29
- 3 (0,0.1,0.3) 0.5 Pa
30
- ====== =============== ======
31
-
32
- """
33
-
34
-
35
- def create_three_sources(mg, h5savefile='three_sources.h5'):
36
- """
37
- Create three noise sources and return them as Mixer.
38
-
39
- Alias for :func:`create_three_sources_2d`.
40
- """
41
- return create_three_sources_2d(mg, h5savefile=h5savefile)
42
-
43
-
44
- def _create_three_sources(mg, locs, h5savefile='', sfreq=51200, duration=1):
45
- """Create three noise sources with custom locations and return them as Mixer."""
46
- import acoular as ac
47
-
48
- nsamples = duration * sfreq
49
-
50
- n1 = ac.WNoiseGenerator(sample_freq=sfreq, num_samples=nsamples, seed=1)
51
- n2 = ac.WNoiseGenerator(sample_freq=sfreq, num_samples=nsamples, seed=2, rms=0.7)
52
- n3 = ac.WNoiseGenerator(sample_freq=sfreq, num_samples=nsamples, seed=3, rms=0.5)
53
-
54
- noises = [n1, n2, n3]
55
- ps = [ac.PointSource(signal=n, mics=mg, loc=loc) for n, loc in list(zip(noises, locs))]
56
- pa = ac.Mixer(source=ps[0], sources=ps[1:])
57
-
58
- if h5savefile:
59
- wh5 = ac.WriteH5(source=pa, file=h5savefile)
60
- wh5.save()
61
- return pa
62
-
63
-
64
- def create_three_sources_1d(mg, h5savefile='three_sources_1d.h5'):
65
- """Create three noise sources on a 1D line and return them as Mixer."""
66
- locs = [(-0.1, 0, -0.3), (0.15, 0, -0.3), (0, 0, -0.3)]
67
- return _create_three_sources(mg, locs, h5savefile=h5savefile)
68
-
69
-
70
- def create_three_sources_2d(mg, h5savefile='three_sources_2d.h5'):
71
- """Create three noise sources in a 2D plane and return them as Mixer."""
72
- locs = [(-0.1, -0.1, -0.3), (0.15, 0, -0.3), (0, 0.1, -0.3)]
73
- return _create_three_sources(mg, locs, h5savefile=h5savefile)
74
-
75
-
76
- def create_three_sources_3d(mg, h5savefile='three_sources_3d.h5'):
77
- """Create three noise sources in 3D space and return them as Mixer."""
78
- locs = [(-0.1, -0.1, -0.3), (0.15, 0, -0.17), (0, 0.1, -0.25)]
79
- return _create_three_sources(mg, locs, h5savefile=h5savefile)
80
-
81
-
82
- def run():
83
- """Run the Acoular demo."""
84
- from pathlib import Path
85
-
86
- import acoular as ac
87
-
88
- ac.config.global_caching = 'none'
89
-
90
- # set up microphone geometry
91
-
92
- micgeofile = Path(ac.__file__).parent / 'xml' / 'array_64.xml'
93
- mg = ac.MicGeom(file=micgeofile)
94
-
95
- # generate test data, in real life this would come from an array measurement
96
-
97
- pa = create_three_sources(mg)
98
-
99
- # analyze the data and generate map
100
-
101
- ps = ac.PowerSpectra(source=pa, block_size=128, window='Hanning')
102
-
103
- rg = ac.RectGrid(x_min=-0.2, x_max=0.2, y_min=-0.2, y_max=0.2, z=-0.3, increment=0.01)
104
- st = ac.SteeringVector(grid=rg, mics=mg)
105
-
106
- bb = ac.BeamformerBase(freq_data=ps, steer=st)
107
- pm = bb.synthetic(8000, 3)
108
- spl = ac.L_p(pm)
109
-
110
- if ac.config.have_matplotlib:
111
- from matplotlib.pyplot import axis, colorbar, figure, imshow, plot, show
112
-
113
- # show map
114
- imshow(spl.T, origin='lower', vmin=spl.max() - 10, extent=rg.extent, interpolation='bicubic')
115
- colorbar()
116
-
117
- # plot microphone geometry
118
- figure(2)
119
- plot(mg.pos[0], mg.pos[1], 'o')
120
- axis('equal')
121
-
122
- show()
123
-
124
- else:
125
- print('Matplotlib not found! Please install matplotlib if you want to plot the results.')
126
- print('For consolation we do an ASCII map plot of the results here.')
127
- grayscale = '@%#*+=-:. '[::-1]
128
- ind = ((spl.T - spl.max() + 9).clip(0, 9)).astype(int)[::-1]
129
- print(78 * '-')
130
- print('|\n'.join([' '.join(['|'] + [grayscale[i] for i in row[2:-1]]) for row in ind]) + '|')
131
- print(7 * '-', ''.join([f'{grayscale[i]}={int(spl.max())-9+i}dB ' for i in range(1, 10)]), 6 * '-')
132
-
133
-
134
- if __name__ == '__main__':
135
- run()
@@ -1,56 +0,0 @@
1
- acoular/__init__.py,sha256=FzwGAAHTrQbqo_UxXSwydKK8RundiTxMFZgda3hg-RU,3210
2
- acoular/base.py,sha256=6CMGx6vuB3aEFLrQB73eBxA_2UYZAseQ4gzfj2WeaJU,9985
3
- acoular/calib.py,sha256=8WD70K3VW95Ul0zaHbw4049idFGo2vvkm2lSJV9sYqA,7208
4
- acoular/configuration.py,sha256=IP2Z1E4W_DkstNTVQilHXRNnHbL2s47iwFyQyp2iYcE,8630
5
- acoular/deprecation.py,sha256=9KgdNddd5NjmPibPWCQ-VCgCUccpZgo5c6z4nfMEHp8,4005
6
- acoular/environments.py,sha256=LF4YQ89AMKXo9mvOHrvBu_zzb-DCLern0JHkCTEMcp0,36097
7
- acoular/fastFuncs.py,sha256=COq3IYq2PIOJOsQr5JhU-EcE5qmnpXj1MAhaDWznFNI,37333
8
- acoular/fbeamform.py,sha256=CBZiirqk1hqE7S5hNBh6EGXH-7w-c2oiqncaHr3NUR4,95818
9
- acoular/fprocess.py,sha256=Ly_FSpKnan8TMLOgbAbrYU-K7PEXe0vSIykQAfW3VBU,19831
10
- acoular/grids.py,sha256=6bPviNKV9Ie5MC0jTMUZBdFfkWhuMsx8QhYDAJjU_eg,63475
11
- acoular/h5cache.py,sha256=8hXF6ddsRqTH_dTr-Tb82omK3AyFlIynKsiBp6zbiVI,4224
12
- acoular/h5files.py,sha256=5mlHjIUTjsS7_4Fr3VjWclnGBWxenX91zzB1p4vOwXM,7789
13
- acoular/internal.py,sha256=XBXWTc5SbUXdPEoc120O8-xGlGAN6-c2giLU1KdpGb4,1078
14
- acoular/microphones.py,sha256=15kwJ-XDP6KUn8jN3i_h21YQOXdlUT4qb4yrsOAh5k8,11523
15
- acoular/process.py,sha256=0u9Upp4LtGgKAO2gS9xOjJSq_SOH484K0onkrxKHBxU,39747
16
- acoular/sdinput.py,sha256=7tW3HGM1AaPpKpZlbI6uc9kNUfV1FyfzTbl4C49W7bg,5229
17
- acoular/signals.py,sha256=QUORFv7bsbe16_UEtUN1FgLUhX09_nYQ1Hygd1wxCPg,24466
18
- acoular/sources.py,sha256=-rZl98Cx2woV089Uo9-D4NVGTdMC21SPBFvRXnqEYGk,97718
19
- acoular/spectra.py,sha256=eu2GeYip7X44b_8v6yCgr5x96-xMNzvm53KwtjETeD4,28833
20
- acoular/tbeamform.py,sha256=w9s2GRDQJ9dTWn4WcELiD9Ry7XjsF5nPovZ0yDCzSDg,30989
21
- acoular/tfastfuncs.py,sha256=q2ZbDoWmFbGMZw1TT_h-21hn24qGi2of_ZqJVoLMYhc,7901
22
- acoular/tprocess.py,sha256=PTKJ0FcKVEYbPya91LW5bw2uDNhT5JvgJ04F7N-1AD8,117448
23
- acoular/traitsviews.py,sha256=D2__nVUNELFbb7X9BrLw-mzRMpCDYdYEseKcX-meQNM,13727
24
- acoular/trajectory.py,sha256=cOawITHARdcsBwpHfBleosltDwU-31xtOlZ7clrcbvA,7910
25
- acoular/version.py,sha256=w474s1DDdGF-U4y1v_0zZlScZxIQyqlOAzVkHosG7h8,384
26
- acoular/aiaa/__init__.py,sha256=5RhoERGQmLBf6uosr9hYHWy_MruKiyR5x-8cMRX4hT4,420
27
- acoular/aiaa/aiaa.py,sha256=v21tLk3Gl0hptWrYV4PU0dJm6NCK8z8J0kJkqbiLSgA,6397
28
- acoular/demo/__init__.py,sha256=nCi3nEqJP8fmE8kfTIGhNicC5kq_k0ZRgzuRgWbBCwc,481
29
- acoular/demo/acoular_demo.py,sha256=RPwXQmORB1GasREpQpa-qqmFjGNBpEPMJukQTB0Lk9I,4480
30
- acoular/tools/__init__.py,sha256=z8RHRQhcmqkUKwD8v3pInpAMN8csPcN5J4Z9QXu_GjQ,511
31
- acoular/tools/helpers.py,sha256=u-W3XSiTlKtA7FZWEvP9Jb1AKYIVUkEtBNf8wphKNZo,14207
32
- acoular/tools/metrics.py,sha256=y6TsavywfnuMScBcFxIrcKcDuC55WfIGkNFnCuuuj3Y,6136
33
- acoular/tools/utils.py,sha256=GXWM7zU0pRbZV93vdV5eRs_kvhQWp8OiNVmrg5Kx064,3164
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.7.dist-info/METADATA,sha256=e3h8l4GSz3ZuDf9RuL6YJb7hJD96IfhuAL21wQpScv0,12776
53
- acoular-25.7.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
54
- acoular-25.7.dist-info/licenses/AUTHORS.rst,sha256=445q_Us_TnQx8s_GP2yringU2DMTk3-ycrk2REtSsx0,382
55
- acoular-25.7.dist-info/licenses/LICENSE,sha256=tbw7-nx204gXCo8p-NwwR7w8oKvNMWB4H07FTT6V9p8,1505
56
- acoular-25.7.dist-info/RECORD,,