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/aiaa/aiaa.py +8 -10
- acoular/base.py +13 -16
- acoular/calib.py +25 -24
- acoular/configuration.py +2 -2
- acoular/demo/__init__.py +97 -9
- acoular/demo/__main__.py +37 -0
- acoular/environments.py +119 -130
- acoular/fbeamform.py +438 -440
- acoular/fprocess.py +18 -13
- acoular/grids.py +122 -301
- acoular/h5cache.py +5 -1
- acoular/h5files.py +96 -9
- acoular/microphones.py +30 -35
- acoular/process.py +14 -25
- acoular/sdinput.py +9 -14
- acoular/signals.py +36 -34
- acoular/sources.py +263 -380
- acoular/spectra.py +60 -80
- acoular/tbeamform.py +242 -224
- acoular/tools/helpers.py +25 -33
- acoular/tools/metrics.py +5 -10
- acoular/tools/utils.py +168 -0
- acoular/tprocess.py +248 -271
- acoular/trajectory.py +5 -6
- acoular/version.py +2 -2
- {acoular-25.7.dist-info → acoular-26.1.dist-info}/METADATA +54 -105
- acoular-26.1.dist-info/RECORD +56 -0
- {acoular-25.7.dist-info → acoular-26.1.dist-info}/WHEEL +1 -1
- acoular/demo/acoular_demo.py +0 -135
- acoular-25.7.dist-info/RECORD +0 -56
- {acoular-25.7.dist-info → acoular-26.1.dist-info}/licenses/AUTHORS.rst +0 -0
- {acoular-25.7.dist-info → acoular-26.1.dist-info}/licenses/LICENSE +0 -0
acoular/trajectory.py
CHANGED
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
"""
|
|
11
11
|
|
|
12
12
|
# imports from other packages
|
|
13
|
-
|
|
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
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: acoular
|
|
3
|
-
Version:
|
|
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
|
|
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
|

|
|
@@ -113,45 +66,57 @@ Description-Content-Type: text/markdown
|
|
|
113
66
|
[](https://pypi.org/project/acoular)
|
|
114
67
|
[](https://pypi.org/project/acoular)
|
|
115
68
|
[](https://github.com/acoular/acoular/actions)
|
|
116
|
-
[](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
|
|
120
|
-
|
|
121
|
-
It is aimed at applications in acoustic testing. Multichannel data recorded by
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
-
|
|
126
|
-
-
|
|
127
|
-
-
|
|
128
|
-
-
|
|
129
|
-
-
|
|
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
|
-
-
|
|
132
|
-
-
|
|
133
|
-
-
|
|
134
|
-
-
|
|
135
|
-
-
|
|
136
|
-
-
|
|
137
|
-
-
|
|
138
|
-
-
|
|
139
|
-
-
|
|
140
|
-
-
|
|
141
|
-
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
139
|
+
## Documentation and help
|
|
183
140
|
Documentation is available [here](https://acoular.org) with a
|
|
184
|
-
[getting started](https://acoular.org/get_started
|
|
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
|
-
|
|
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
|
-

|
|
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,,
|
acoular/demo/acoular_demo.py
DELETED
|
@@ -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()
|
acoular-25.7.dist-info/RECORD
DELETED
|
@@ -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,,
|
|
File without changes
|
|
File without changes
|