acoular 23.11__tar.gz → 24.3__tar.gz
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-24.3/.github/workflows/build_docs.yml +43 -0
- acoular-24.3/.zenodo.json +47 -0
- {acoular-23.11 → acoular-24.3}/LICENSE +1 -1
- {acoular-23.11 → acoular-24.3}/PKG-INFO +11 -3
- {acoular-23.11 → acoular-24.3}/acoular/fbeamform.py +42 -27
- acoular-24.3/acoular/tests/reference_data/BeamformerCMFNNLS.npy +0 -0
- acoular-24.3/acoular/tests/reference_data/BeamformerSODIX.npy +0 -0
- {acoular-23.11 → acoular-24.3}/acoular/tests/test_beamformer_results.py +12 -3
- {acoular-23.11 → acoular-24.3}/acoular/tools.py +9 -5
- {acoular-23.11 → acoular-24.3}/acoular/tprocess.py +4 -4
- {acoular-23.11 → acoular-24.3}/acoular/version.py +2 -2
- {acoular-23.11 → acoular-24.3}/docs/source/get_started/index.rst +4 -3
- {acoular-23.11 → acoular-24.3}/docs/source/news/index.rst +19 -0
- {acoular-23.11 → acoular-24.3}/pyproject.toml +11 -3
- {acoular-23.11 → acoular-24.3}/.github/workflows/python-package.yml +0 -0
- {acoular-23.11 → acoular-24.3}/.gitignore +0 -0
- {acoular-23.11 → acoular-24.3}/.gitlab-ci.yml +0 -0
- {acoular-23.11 → acoular-24.3}/.travis.yml +0 -0
- {acoular-23.11 → acoular-24.3}/AUTHORS.rst +0 -0
- {acoular-23.11 → acoular-24.3}/MANIFEST.in +0 -0
- {acoular-23.11 → acoular-24.3}/README.md +0 -0
- {acoular-23.11 → acoular-24.3}/acoular/__init__.py +0 -0
- {acoular-23.11 → acoular-24.3}/acoular/calib.py +0 -0
- {acoular-23.11 → acoular-24.3}/acoular/configuration.py +0 -0
- {acoular-23.11 → acoular-24.3}/acoular/demo/__init__.py +0 -0
- {acoular-23.11 → acoular-24.3}/acoular/demo/acoular_demo.py +0 -0
- {acoular-23.11 → acoular-24.3}/acoular/environments.py +0 -0
- {acoular-23.11 → acoular-24.3}/acoular/fastFuncs.py +0 -0
- {acoular-23.11 → acoular-24.3}/acoular/fileimport.py +0 -0
- {acoular-23.11 → acoular-24.3}/acoular/grids.py +0 -0
- {acoular-23.11 → acoular-24.3}/acoular/h5cache.py +0 -0
- {acoular-23.11 → acoular-24.3}/acoular/h5files.py +0 -0
- {acoular-23.11 → acoular-24.3}/acoular/internal.py +0 -0
- {acoular-23.11 → acoular-24.3}/acoular/microphones.py +0 -0
- {acoular-23.11 → acoular-24.3}/acoular/nidaqimport.py +0 -0
- {acoular-23.11 → acoular-24.3}/acoular/sdinput.py +0 -0
- {acoular-23.11 → acoular-24.3}/acoular/signals.py +0 -0
- {acoular-23.11 → acoular-24.3}/acoular/sources.py +0 -0
- {acoular-23.11 → acoular-24.3}/acoular/spectra.py +0 -0
- {acoular-23.11 → acoular-24.3}/acoular/tbeamform.py +0 -0
- {acoular-23.11 → acoular-24.3}/acoular/tests/reference_data/BeamformerBase.npy +0 -0
- {acoular-23.11 → acoular-24.3}/acoular/tests/reference_data/BeamformerBaseFalse1.npy +0 -0
- {acoular-23.11 → acoular-24.3}/acoular/tests/reference_data/BeamformerBaseFalse2.npy +0 -0
- {acoular-23.11 → acoular-24.3}/acoular/tests/reference_data/BeamformerBaseFalse3.npy +0 -0
- {acoular-23.11 → acoular-24.3}/acoular/tests/reference_data/BeamformerBaseFalse4.npy +0 -0
- {acoular-23.11 → acoular-24.3}/acoular/tests/reference_data/BeamformerBaseTrue1.npy +0 -0
- {acoular-23.11 → acoular-24.3}/acoular/tests/reference_data/BeamformerBaseTrue2.npy +0 -0
- {acoular-23.11 → acoular-24.3}/acoular/tests/reference_data/BeamformerBaseTrue3.npy +0 -0
- {acoular-23.11 → acoular-24.3}/acoular/tests/reference_data/BeamformerBaseTrue4.npy +0 -0
- /acoular-23.11/acoular/tests/reference_data/BeamformerCMF.npy → /acoular-24.3/acoular/tests/reference_data/BeamformerCMFLassoLarsBIC.npy +0 -0
- {acoular-23.11 → acoular-24.3}/acoular/tests/reference_data/BeamformerCapon.npy +0 -0
- {acoular-23.11 → acoular-24.3}/acoular/tests/reference_data/BeamformerClean.npy +0 -0
- {acoular-23.11 → acoular-24.3}/acoular/tests/reference_data/BeamformerCleansc.npy +0 -0
- {acoular-23.11 → acoular-24.3}/acoular/tests/reference_data/BeamformerCleant.npy +0 -0
- {acoular-23.11 → acoular-24.3}/acoular/tests/reference_data/BeamformerCleantSq.npy +0 -0
- {acoular-23.11 → acoular-24.3}/acoular/tests/reference_data/BeamformerCleantSqTraj.npy +0 -0
- {acoular-23.11 → acoular-24.3}/acoular/tests/reference_data/BeamformerCleantTraj.npy +0 -0
- {acoular-23.11 → acoular-24.3}/acoular/tests/reference_data/BeamformerDamas.npy +0 -0
- {acoular-23.11 → acoular-24.3}/acoular/tests/reference_data/BeamformerDamasPlus.npy +0 -0
- {acoular-23.11 → acoular-24.3}/acoular/tests/reference_data/BeamformerEig.npy +0 -0
- {acoular-23.11 → acoular-24.3}/acoular/tests/reference_data/BeamformerEigFalse1.npy +0 -0
- {acoular-23.11 → acoular-24.3}/acoular/tests/reference_data/BeamformerEigFalse2.npy +0 -0
- {acoular-23.11 → acoular-24.3}/acoular/tests/reference_data/BeamformerEigFalse3.npy +0 -0
- {acoular-23.11 → acoular-24.3}/acoular/tests/reference_data/BeamformerEigFalse4.npy +0 -0
- {acoular-23.11 → acoular-24.3}/acoular/tests/reference_data/BeamformerEigTrue1.npy +0 -0
- {acoular-23.11 → acoular-24.3}/acoular/tests/reference_data/BeamformerEigTrue2.npy +0 -0
- {acoular-23.11 → acoular-24.3}/acoular/tests/reference_data/BeamformerEigTrue3.npy +0 -0
- {acoular-23.11 → acoular-24.3}/acoular/tests/reference_data/BeamformerEigTrue4.npy +0 -0
- {acoular-23.11 → acoular-24.3}/acoular/tests/reference_data/BeamformerFunctional.npy +0 -0
- {acoular-23.11 → acoular-24.3}/acoular/tests/reference_data/BeamformerGIB.npy +0 -0
- {acoular-23.11 → acoular-24.3}/acoular/tests/reference_data/BeamformerGridlessOrth.npy +0 -0
- {acoular-23.11 → acoular-24.3}/acoular/tests/reference_data/BeamformerMusic.npy +0 -0
- {acoular-23.11 → acoular-24.3}/acoular/tests/reference_data/BeamformerOrth.npy +0 -0
- {acoular-23.11 → acoular-24.3}/acoular/tests/reference_data/BeamformerTime.npy +0 -0
- {acoular-23.11 → acoular-24.3}/acoular/tests/reference_data/BeamformerTimeSq.npy +0 -0
- {acoular-23.11 → acoular-24.3}/acoular/tests/reference_data/BeamformerTimeSqTraj.npy +0 -0
- {acoular-23.11 → acoular-24.3}/acoular/tests/reference_data/BeamformerTimeTraj.npy +0 -0
- {acoular-23.11 → acoular-24.3}/acoular/tests/reference_data/Environment.npy +0 -0
- {acoular-23.11 → acoular-24.3}/acoular/tests/reference_data/Example1_numerical_values_testsum.h5 +0 -0
- {acoular-23.11 → acoular-24.3}/acoular/tests/reference_data/FiltFiltOctave__.npy +0 -0
- {acoular-23.11 → acoular-24.3}/acoular/tests/reference_data/FiltFiltOctave_band_100_0_fraction_Thirdoctave_.npy +0 -0
- {acoular-23.11 → acoular-24.3}/acoular/tests/reference_data/FiltFreqWeight_weight_A_.npy +0 -0
- {acoular-23.11 → acoular-24.3}/acoular/tests/reference_data/FiltFreqWeight_weight_C_.npy +0 -0
- {acoular-23.11 → acoular-24.3}/acoular/tests/reference_data/FiltFreqWeight_weight_Z_.npy +0 -0
- {acoular-23.11 → acoular-24.3}/acoular/tests/reference_data/FiltOctave__.npy +0 -0
- {acoular-23.11 → acoular-24.3}/acoular/tests/reference_data/FiltOctave_band_100_0_fraction_Thirdoctave_.npy +0 -0
- {acoular-23.11 → acoular-24.3}/acoular/tests/reference_data/Filter__.npy +0 -0
- {acoular-23.11 → acoular-24.3}/acoular/tests/reference_data/GeneralFlowEnvironment.npy +0 -0
- {acoular-23.11 → acoular-24.3}/acoular/tests/reference_data/OctaveFilterBank__.npy +0 -0
- {acoular-23.11 → acoular-24.3}/acoular/tests/reference_data/OpenJet.npy +0 -0
- {acoular-23.11 → acoular-24.3}/acoular/tests/reference_data/PointSource.npy +0 -0
- {acoular-23.11 → acoular-24.3}/acoular/tests/reference_data/PowerSpectra_csm.npy +0 -0
- {acoular-23.11 → acoular-24.3}/acoular/tests/reference_data/PowerSpectra_ev.npy +0 -0
- {acoular-23.11 → acoular-24.3}/acoular/tests/reference_data/RotatingFlow.npy +0 -0
- {acoular-23.11 → acoular-24.3}/acoular/tests/reference_data/SlotJet.npy +0 -0
- {acoular-23.11 → acoular-24.3}/acoular/tests/reference_data/TimeAverage__.npy +0 -0
- {acoular-23.11 → acoular-24.3}/acoular/tests/reference_data/TimeCumAverage__.npy +0 -0
- {acoular-23.11 → acoular-24.3}/acoular/tests/reference_data/TimeExpAverage_weight_F_.npy +0 -0
- {acoular-23.11 → acoular-24.3}/acoular/tests/reference_data/TimeExpAverage_weight_I_.npy +0 -0
- {acoular-23.11 → acoular-24.3}/acoular/tests/reference_data/TimeExpAverage_weight_S_.npy +0 -0
- {acoular-23.11 → acoular-24.3}/acoular/tests/reference_data/TimeInOut__.npy +0 -0
- {acoular-23.11 → acoular-24.3}/acoular/tests/reference_data/TimePower__.npy +0 -0
- {acoular-23.11 → acoular-24.3}/acoular/tests/reference_data/TimeReverse__.npy +0 -0
- {acoular-23.11 → acoular-24.3}/acoular/tests/reference_data/UniformFlowEnvironment.npy +0 -0
- {acoular-23.11 → acoular-24.3}/acoular/tests/reference_data/beamformer_traj_time_data.h5 +0 -0
- {acoular-23.11 → acoular-24.3}/acoular/tests/run_tests.sh +0 -0
- {acoular-23.11 → acoular-24.3}/acoular/tests/run_tests_osx.sh +0 -0
- {acoular-23.11 → acoular-24.3}/acoular/tests/test.npy +0 -0
- {acoular-23.11 → acoular-24.3}/acoular/tests/test_classes.py +0 -0
- {acoular-23.11 → acoular-24.3}/acoular/tests/test_digest.py +0 -0
- {acoular-23.11 → acoular-24.3}/acoular/tests/test_environments.py +0 -0
- {acoular-23.11 → acoular-24.3}/acoular/tests/test_example1.py +0 -0
- {acoular-23.11 → acoular-24.3}/acoular/tests/test_grid.py +0 -0
- {acoular-23.11 → acoular-24.3}/acoular/tests/test_integrate.py +0 -0
- {acoular-23.11 → acoular-24.3}/acoular/tests/test_signals.py +0 -0
- {acoular-23.11 → acoular-24.3}/acoular/tests/test_sources.py +0 -0
- {acoular-23.11 → acoular-24.3}/acoular/tests/test_spectra.py +0 -0
- {acoular-23.11 → acoular-24.3}/acoular/tests/test_timecache.py +0 -0
- {acoular-23.11 → acoular-24.3}/acoular/tests/test_tprocess.py +0 -0
- {acoular-23.11 → acoular-24.3}/acoular/tests/test_traj_beamformer_results.py +0 -0
- {acoular-23.11 → acoular-24.3}/acoular/tests/unsupported/SpeedComparison/OvernightTestcasesBeamformer_nMics32_nGridPoints100_nFreqs4_nTrials10.png +0 -0
- {acoular-23.11 → acoular-24.3}/acoular/tests/unsupported/SpeedComparison/cythonBeamformer.pyx +0 -0
- {acoular-23.11 → acoular-24.3}/acoular/tests/unsupported/SpeedComparison/mainForCython.py +0 -0
- {acoular-23.11 → acoular-24.3}/acoular/tests/unsupported/SpeedComparison/mainForParallelJit.py +0 -0
- {acoular-23.11 → acoular-24.3}/acoular/tests/unsupported/SpeedComparison/setupCythonOpenMP.py +0 -0
- {acoular-23.11 → acoular-24.3}/acoular/tests/unsupported/SpeedComparison/sharedFunctions.py +0 -0
- {acoular-23.11 → acoular-24.3}/acoular/tests/unsupported/SpeedComparison/timeOverNMics_AllImportantMethods.png +0 -0
- {acoular-23.11 → acoular-24.3}/acoular/tests/unsupported/SpeedComparison/timeOverNMics_faverage.png +0 -0
- {acoular-23.11 → acoular-24.3}/acoular/tests/unsupported/SpeedComparison/vglOptimierungFAverage.py +0 -0
- {acoular-23.11 → acoular-24.3}/acoular/tests/unsupported/SpeedComparison/vglOptimierungGaussSeidel.py +0 -0
- {acoular-23.11 → acoular-24.3}/acoular/tests/unsupported/SpeedComparison/vglOptimierungR_BEAMFULL_INVERSE.py +0 -0
- {acoular-23.11 → acoular-24.3}/acoular/tests/unsupported/SpeedComparison/vglOptimierungR_BEAM_OS.py +0 -0
- {acoular-23.11 → acoular-24.3}/acoular/tests/unsupported/SpeedComparison/whatsFastestWayFor_absASquared.py +0 -0
- {acoular-23.11 → acoular-24.3}/acoular/tests/unsupported/functionalBeamformer.py +0 -0
- {acoular-23.11 → acoular-24.3}/acoular/tests/unsupported/precisionTest.py +0 -0
- {acoular-23.11 → acoular-24.3}/acoular/tests/unsupported/validationOfBeamformerFuncsPOSTAcoularIntegration.py +0 -0
- {acoular-23.11 → acoular-24.3}/acoular/tests/unsupported/validationOfBeamformerFuncsPREeAcoularIntegration.py +0 -0
- {acoular-23.11 → acoular-24.3}/acoular/tfastfuncs.py +0 -0
- {acoular-23.11 → acoular-24.3}/acoular/traitsviews.py +0 -0
- {acoular-23.11 → acoular-24.3}/acoular/trajectory.py +0 -0
- {acoular-23.11 → acoular-24.3}/acoular/xml/HW90D240_f10.xml +0 -0
- {acoular-23.11 → acoular-24.3}/acoular/xml/W90_D105_f10.xml +0 -0
- {acoular-23.11 → acoular-24.3}/acoular/xml/acousticam_2c.xml +0 -0
- {acoular-23.11 → acoular-24.3}/acoular/xml/acousticam_4c.xml +0 -0
- {acoular-23.11 → acoular-24.3}/acoular/xml/array38.xml +0 -0
- {acoular-23.11 → acoular-24.3}/acoular/xml/array92x.xml +0 -0
- {acoular-23.11 → acoular-24.3}/acoular/xml/array_56.xml +0 -0
- {acoular-23.11 → acoular-24.3}/acoular/xml/array_56_10_9.xml +0 -0
- {acoular-23.11 → acoular-24.3}/acoular/xml/array_56_bomb.xml +0 -0
- {acoular-23.11 → acoular-24.3}/acoular/xml/array_56_v2.xml +0 -0
- {acoular-23.11 → acoular-24.3}/acoular/xml/array_64.xml +0 -0
- {acoular-23.11 → acoular-24.3}/acoular/xml/array_84_10_9.xml +0 -0
- {acoular-23.11 → acoular-24.3}/acoular/xml/array_84_bomb_v3.xml +0 -0
- {acoular-23.11 → acoular-24.3}/acoular/xml/calib_vw_ring32.xml +0 -0
- {acoular-23.11 → acoular-24.3}/acoular/xml/gfai_ring32.xml +0 -0
- {acoular-23.11 → acoular-24.3}/acoular/xml/minidsp_uma16.xml +0 -0
- {acoular-23.11 → acoular-24.3}/acoular/xml/tub_vogel64.xml +0 -0
- {acoular-23.11 → acoular-24.3}/build_conda.sh +0 -0
- {acoular-23.11 → acoular-24.3}/docs/Makefile +0 -0
- {acoular-23.11 → acoular-24.3}/docs/source/_static/Acoular_logo.png +0 -0
- {acoular-23.11 → acoular-24.3}/docs/source/_static/Airfoil_selfnoise_3d.png +0 -0
- {acoular-23.11 → acoular-24.3}/docs/source/_static/acoular_logo.ico +0 -0
- {acoular-23.11 → acoular-24.3}/docs/source/_static/airfoil_leading_edge_noise.png +0 -0
- {acoular-23.11 → acoular-24.3}/docs/source/_static/no_image.png +0 -0
- {acoular-23.11 → acoular-24.3}/docs/source/_static/pantograph_noise_3d.png +0 -0
- {acoular-23.11 → acoular-24.3}/docs/source/_templates/autosummary/class.rst +0 -0
- {acoular-23.11 → acoular-24.3}/docs/source/_templates/autosummary/module.rst +0 -0
- {acoular-23.11 → acoular-24.3}/docs/source/_themes/haikuac/layout.html +0 -0
- {acoular-23.11 → acoular-24.3}/docs/source/_themes/haikuac/static/alert_info_32.png +0 -0
- {acoular-23.11 → acoular-24.3}/docs/source/_themes/haikuac/static/alert_warning_32.png +0 -0
- {acoular-23.11 → acoular-24.3}/docs/source/_themes/haikuac/static/bg-page.png +0 -0
- {acoular-23.11 → acoular-24.3}/docs/source/_themes/haikuac/static/bullet_orange.png +0 -0
- {acoular-23.11 → acoular-24.3}/docs/source/_themes/haikuac/static/haikuac.css_t +0 -0
- {acoular-23.11 → acoular-24.3}/docs/source/_themes/haikuac/theme.conf +0 -0
- {acoular-23.11 → acoular-24.3}/docs/source/api_ref/index.rst +0 -0
- {acoular-23.11 → acoular-24.3}/docs/source/conf.py +0 -0
- {acoular-23.11 → acoular-24.3}/docs/source/examples/example_3D_beamforming.rst +0 -0
- {acoular-23.11 → acoular-24.3}/docs/source/examples/example_3D_beamforming_1.png +0 -0
- {acoular-23.11 → acoular-24.3}/docs/source/examples/example_airfoil_in_open_jet_beamforming.rst +0 -0
- {acoular-23.11 → acoular-24.3}/docs/source/examples/example_airfoil_in_open_jet_beamforming_1.png +0 -0
- {acoular-23.11 → acoular-24.3}/docs/source/examples/example_airfoil_in_open_jet_beamforming_2.png +0 -0
- {acoular-23.11 → acoular-24.3}/docs/source/examples/example_airfoil_in_open_jet_beamforming_3.png +0 -0
- {acoular-23.11 → acoular-24.3}/docs/source/examples/example_airfoil_in_open_jet_cmf.rst +0 -0
- {acoular-23.11 → acoular-24.3}/docs/source/examples/example_airfoil_in_open_jet_cmf_1.png +0 -0
- {acoular-23.11 → acoular-24.3}/docs/source/examples/example_airfoil_in_open_jet_steering_vectors.rst +0 -0
- {acoular-23.11 → acoular-24.3}/docs/source/examples/example_airfoil_in_open_jet_steering_vectors_1.png +0 -0
- {acoular-23.11 → acoular-24.3}/docs/source/examples/example_airfoil_in_open_jet_steering_vectors_2.png +0 -0
- {acoular-23.11 → acoular-24.3}/docs/source/examples/example_rotating_point_source.rst +0 -0
- {acoular-23.11 → acoular-24.3}/docs/source/examples/example_rotating_point_source_1.png +0 -0
- {acoular-23.11 → acoular-24.3}/docs/source/examples/example_rotating_point_source_2.png +0 -0
- {acoular-23.11 → acoular-24.3}/docs/source/examples/example_rotating_point_source_3.png +0 -0
- {acoular-23.11 → acoular-24.3}/docs/source/examples/index.rst +0 -0
- {acoular-23.11 → acoular-24.3}/docs/source/gen_rst.py +0 -0
- {acoular-23.11 → acoular-24.3}/docs/source/get_started/array64.png +0 -0
- {acoular-23.11 → acoular-24.3}/docs/source/get_started/array64_py3colormap.png +0 -0
- {acoular-23.11 → acoular-24.3}/docs/source/get_started/map_three_sources.png +0 -0
- {acoular-23.11 → acoular-24.3}/docs/source/get_started/three_source_py3_colormap.png +0 -0
- {acoular-23.11 → acoular-24.3}/docs/source/index.rst +0 -0
- {acoular-23.11 → acoular-24.3}/docs/source/install/index.rst +0 -0
- {acoular-23.11 → acoular-24.3}/docs/source/literature/index.rst +0 -0
- {acoular-23.11 → acoular-24.3}/docs/source/requirements.txt +0 -0
- {acoular-23.11 → acoular-24.3}/examples/README.txt +0 -0
- {acoular-23.11 → acoular-24.3}/examples/acoular_demo.py +0 -0
- {acoular-23.11 → acoular-24.3}/examples/basic_beamformer_example.py +0 -0
- {acoular-23.11 → acoular-24.3}/examples/benchmark/run_benchmarks.py +0 -0
- {acoular-23.11 → acoular-24.3}/examples/benchmark/test_beamformerfreq.py +0 -0
- {acoular-23.11 → acoular-24.3}/examples/benchmark/test_delayandsum.py +0 -0
- {acoular-23.11 → acoular-24.3}/examples/benchmark/test_dist_mat.py +0 -0
- {acoular-23.11 → acoular-24.3}/examples/example_3D_beamforming.py +0 -0
- {acoular-23.11 → acoular-24.3}/examples/example_GenericSignal.py +0 -0
- {acoular-23.11 → acoular-24.3}/examples/example_SampleSplitter_bufferhandling.py +0 -0
- {acoular-23.11 → acoular-24.3}/examples/example_SampleSplitter_multithreading.py +0 -0
- {acoular-23.11 → acoular-24.3}/examples/example_airfoil_in_open_jet_beamforming.py +0 -0
- {acoular-23.11 → acoular-24.3}/examples/example_airfoil_in_open_jet_cmf.py +0 -0
- {acoular-23.11 → acoular-24.3}/examples/example_airfoil_in_open_jet_steering_vectors.py +0 -0
- {acoular-23.11 → acoular-24.3}/examples/example_airfoil_in_open_jet_time_beamforming.py +0 -0
- {acoular-23.11 → acoular-24.3}/examples/example_calib.xml +0 -0
- {acoular-23.11 → acoular-24.3}/examples/example_data.h5 +0 -0
- {acoular-23.11 → acoular-24.3}/examples/example_evaluate.py +0 -0
- {acoular-23.11 → acoular-24.3}/examples/example_filter.py +0 -0
- {acoular-23.11 → acoular-24.3}/examples/example_power_spectra_import.py +0 -0
- {acoular-23.11 → acoular-24.3}/examples/example_rotating_point_source.py +0 -0
- {acoular-23.11 → acoular-24.3}/examples/example_sectors_and_intergration.py +0 -0
- {acoular-23.11 → acoular-24.3}/examples/example_tools.py +0 -0
- {acoular-23.11 → acoular-24.3}/examples/three_sources.py +0 -0
- {acoular-23.11 → acoular-24.3}/noxfile.py +0 -0
- {acoular-23.11 → acoular-24.3}/recipe.local/meta.yaml +0 -0
- {acoular-23.11 → acoular-24.3}/recipe.local/run_test.sh +0 -0
- {acoular-23.11 → acoular-24.3}/scripts/plot_examples.py +0 -0
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
name: Build docs and deploy
|
|
2
|
+
|
|
3
|
+
#DEPLOY NOTE: This workflow will only deploy the docs when a workflow is manually triggered from the main branch via github!
|
|
4
|
+
|
|
5
|
+
on:
|
|
6
|
+
pull_request:
|
|
7
|
+
branches: [ master ] # build docs as additional test on PRs to main
|
|
8
|
+
workflow_dispatch:
|
|
9
|
+
branches: [ '*' ] # allow manual trigger for all branches
|
|
10
|
+
|
|
11
|
+
permissions:
|
|
12
|
+
contents: write
|
|
13
|
+
|
|
14
|
+
jobs:
|
|
15
|
+
sphinx:
|
|
16
|
+
runs-on: ubuntu-latest
|
|
17
|
+
steps:
|
|
18
|
+
- uses: actions/checkout@v4
|
|
19
|
+
- name: Setup Python 3.11
|
|
20
|
+
uses: actions/setup-python@v4
|
|
21
|
+
with:
|
|
22
|
+
python-version: '3.11'
|
|
23
|
+
- name: Install dependencies
|
|
24
|
+
run: |
|
|
25
|
+
sudo apt-get install graphviz
|
|
26
|
+
sudo apt-get install libportaudio2
|
|
27
|
+
python -m pip install --upgrade pip
|
|
28
|
+
pip install ".[dev]"
|
|
29
|
+
- name: Build docs
|
|
30
|
+
run: |
|
|
31
|
+
cd docs
|
|
32
|
+
make html
|
|
33
|
+
- name: Deploy docs
|
|
34
|
+
uses: peaceiris/actions-gh-pages@v3
|
|
35
|
+
if: ${{ github.event_name =='workflow_dispatch' && github.ref == 'refs/heads/master' }}
|
|
36
|
+
with:
|
|
37
|
+
publish_branch: gh-pages
|
|
38
|
+
github_token: ${{ secrets.GITHUB_TOKEN }}
|
|
39
|
+
publish_dir: ./docs/build/html/
|
|
40
|
+
cname: www.acoular.org
|
|
41
|
+
force_orphan: true # This allows you to make your publish branch with only the latest commit.
|
|
42
|
+
enable_jekyll: false
|
|
43
|
+
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
{
|
|
2
|
+
"metadata": {
|
|
3
|
+
"title": "Acoular – Acoustic testing and source mapping software",
|
|
4
|
+
"license": "BSD",
|
|
5
|
+
"keywords": [
|
|
6
|
+
"acoustics",
|
|
7
|
+
"beamforming",
|
|
8
|
+
"microphone array"
|
|
9
|
+
],
|
|
10
|
+
"upload_type": "software",
|
|
11
|
+
"creators": [
|
|
12
|
+
{
|
|
13
|
+
"affiliation": "Department of Engineering Acoustics, TU Berlin",
|
|
14
|
+
"name": "Sarradj, Ennes",
|
|
15
|
+
"orcid": "0000-0002-0274-8456"
|
|
16
|
+
},
|
|
17
|
+
{
|
|
18
|
+
"affiliation": "Department of Engineering Acoustics, TU Berlin",
|
|
19
|
+
"name": "Herold, Gert",
|
|
20
|
+
"orcid": "0000-0001-5284-051X"
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
"affiliation": "Department of Engineering Acoustics, TU Berlin",
|
|
24
|
+
"name": "Kujawski, Adam",
|
|
25
|
+
"orcid": "0000-0003-4579-8813"
|
|
26
|
+
},
|
|
27
|
+
{
|
|
28
|
+
"affiliation": "Department of Engineering Acoustics, TU Berlin",
|
|
29
|
+
"name": "Jekosch, Simon"
|
|
30
|
+
},
|
|
31
|
+
{
|
|
32
|
+
"affiliation": "Department of Engineering Acoustics, TU Berlin",
|
|
33
|
+
"name": "Pelling, Art J. R.",
|
|
34
|
+
"orcid": "0000-0003-3228-6069"
|
|
35
|
+
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
"affiliation": "Department of Engineering Acoustics, TU Berlin",
|
|
39
|
+
"name": "Czuchaj, Mikolaj"
|
|
40
|
+
},
|
|
41
|
+
{
|
|
42
|
+
"affiliation": "Department of Engineering Acoustics, TU Berlin",
|
|
43
|
+
"name": "Gensch, Tom"
|
|
44
|
+
}
|
|
45
|
+
]
|
|
46
|
+
}
|
|
47
|
+
}
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: acoular
|
|
3
|
-
Version:
|
|
3
|
+
Version: 24.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
|
|
7
7
|
Project-URL: repository, https://github.com/acoular/acoular
|
|
8
8
|
Author-email: Acoular Development Team <info@acoular.org>
|
|
9
|
-
Maintainer-email: Adam Kujawski <adam.kujawski@tu-berlin.de>, Art Pelling <a.pelling@tu-berlin.de>, Ennes Sarradj <ennes.sarradj@tu-berlin.de>, Gert
|
|
10
|
-
License: Copyright (c)
|
|
9
|
+
Maintainer-email: Adam Kujawski <adam.kujawski@tu-berlin.de>, Art Pelling <a.pelling@tu-berlin.de>, Ennes Sarradj <ennes.sarradj@tu-berlin.de>, Gert Herold <gert.herold@tu-berlin.de>, Mikolaj Czuchaj <mikolaj.czuchaj@tu-berlin.de>, Simon Jekosch <s.jekosch@tu-berlin.de>
|
|
10
|
+
License: Copyright (c) Acoular Development Team.
|
|
11
11
|
All rights reserved.
|
|
12
12
|
|
|
13
13
|
|
|
@@ -57,10 +57,18 @@ Requires-Dist: scipy>=1.1.0
|
|
|
57
57
|
Requires-Dist: tables>=3.4.4
|
|
58
58
|
Requires-Dist: traits>=6.0
|
|
59
59
|
Provides-Extra: dev
|
|
60
|
+
Requires-Dist: graphviz; extra == 'dev'
|
|
61
|
+
Requires-Dist: ipython; extra == 'dev'
|
|
62
|
+
Requires-Dist: matplotlib; extra == 'dev'
|
|
60
63
|
Requires-Dist: nox; extra == 'dev'
|
|
64
|
+
Requires-Dist: numpydoc; extra == 'dev'
|
|
65
|
+
Requires-Dist: pickleshare; extra == 'dev'
|
|
66
|
+
Requires-Dist: sounddevice; extra == 'dev'
|
|
67
|
+
Requires-Dist: sphinx; extra == 'dev'
|
|
61
68
|
Provides-Extra: full
|
|
62
69
|
Requires-Dist: matplotlib; extra == 'full'
|
|
63
70
|
Requires-Dist: pylops; extra == 'full'
|
|
71
|
+
Requires-Dist: sounddevice; extra == 'full'
|
|
64
72
|
Description-Content-Type: text/markdown
|
|
65
73
|
|
|
66
74
|

|
|
@@ -43,13 +43,20 @@ invert, dot, newaxis, zeros, linalg, \
|
|
|
43
43
|
searchsorted, pi, sign, diag, arange, sqrt, log10, \
|
|
44
44
|
reshape, hstack, vstack, eye, tril, size, clip, tile, round, delete, \
|
|
45
45
|
absolute, argsort, sum, hsplit, fill_diagonal, zeros_like, \
|
|
46
|
-
einsum, ndarray, isscalar, inf, real, unique
|
|
46
|
+
einsum, ndarray, isscalar, inf, real, unique, atleast_2d, einsum_path,trace
|
|
47
47
|
|
|
48
48
|
from numpy.linalg import norm
|
|
49
49
|
|
|
50
50
|
from sklearn.linear_model import LassoLars, LassoLarsCV, LassoLarsIC,\
|
|
51
51
|
OrthogonalMatchingPursuitCV, LinearRegression
|
|
52
52
|
|
|
53
|
+
#check for sklearn version to account for incompatible behavior
|
|
54
|
+
import sklearn
|
|
55
|
+
from packaging.version import parse
|
|
56
|
+
sklearn_ndict = {}
|
|
57
|
+
if parse(sklearn.__version__)<parse('1.4'):
|
|
58
|
+
sklearn_ndict['normalize'] = False
|
|
59
|
+
|
|
53
60
|
from scipy.optimize import nnls, linprog, fmin_l_bfgs_b, shgo
|
|
54
61
|
from scipy.linalg import inv, eigh, eigvals, fractional_matrix_power
|
|
55
62
|
from warnings import warn
|
|
@@ -170,7 +177,7 @@ class SteeringVector( HasPrivateTraits ):
|
|
|
170
177
|
|
|
171
178
|
@property_depends_on('grid.digest, mics.digest, env.digest')
|
|
172
179
|
def _get_rm ( self ):
|
|
173
|
-
return self.env._r(self.grid.pos(), self.mics.mpos)
|
|
180
|
+
return atleast_2d(self.env._r(self.grid.pos(), self.mics.mpos))
|
|
174
181
|
|
|
175
182
|
@cached_property
|
|
176
183
|
def _get_digest( self ):
|
|
@@ -1547,7 +1554,7 @@ class BeamformerOrth( BeamformerBase ):
|
|
|
1547
1554
|
self.r_diag,
|
|
1548
1555
|
normFactor,
|
|
1549
1556
|
steer_vector(f[i]),
|
|
1550
|
-
(ones(1), eve[:, n
|
|
1557
|
+
(ones(1), eve[:, n].reshape((-1,1))))[0]
|
|
1551
1558
|
ac[i, beamformerOutput.argmax()]+=eva[n]/numchannels
|
|
1552
1559
|
fr[i] = 1
|
|
1553
1560
|
|
|
@@ -1890,16 +1897,16 @@ class BeamformerCMF ( BeamformerBase ):
|
|
|
1890
1897
|
# choose method
|
|
1891
1898
|
if self.method == 'LassoLars':
|
|
1892
1899
|
model = LassoLars(alpha = self.alpha * unit,
|
|
1893
|
-
max_iter = self.max_iter,
|
|
1894
|
-
|
|
1900
|
+
max_iter = self.max_iter,
|
|
1901
|
+
**sklearn_ndict)
|
|
1895
1902
|
elif self.method == 'LassoLarsBIC':
|
|
1896
1903
|
model = LassoLarsIC(criterion = 'bic',
|
|
1897
|
-
max_iter = self.max_iter,
|
|
1898
|
-
|
|
1904
|
+
max_iter = self.max_iter,
|
|
1905
|
+
**sklearn_ndict)
|
|
1899
1906
|
elif self.method == 'OMPCV':
|
|
1900
|
-
model = OrthogonalMatchingPursuitCV(
|
|
1907
|
+
model = OrthogonalMatchingPursuitCV(**sklearn_ndict)
|
|
1901
1908
|
elif self.method == 'NNLS':
|
|
1902
|
-
model = LinearRegression(
|
|
1909
|
+
model = LinearRegression(positive=True)
|
|
1903
1910
|
|
|
1904
1911
|
if self.method == 'Split_Bregman' and PYLOPS_TRUE:
|
|
1905
1912
|
Oop = MatrixMult(A) #tranfer operator
|
|
@@ -2041,7 +2048,8 @@ class BeamformerSODIX( BeamformerBase ):
|
|
|
2041
2048
|
group)
|
|
2042
2049
|
ac = self.h5f.get_data_by_reference('result','/'+nodename)
|
|
2043
2050
|
fr = self.h5f.get_data_by_reference('freqs','/'+nodename)
|
|
2044
|
-
|
|
2051
|
+
gpos = None
|
|
2052
|
+
return (ac,fr,gpos)
|
|
2045
2053
|
|
|
2046
2054
|
@property_depends_on('ext_digest')
|
|
2047
2055
|
def _get_sodix_result ( self ):
|
|
@@ -2059,7 +2067,7 @@ class BeamformerSODIX( BeamformerBase ):
|
|
|
2059
2067
|
config.global_caching == 'none' or
|
|
2060
2068
|
(config.global_caching == 'individual' and self.cached == False)
|
|
2061
2069
|
):
|
|
2062
|
-
(ac,fr) = self._get_filecache()
|
|
2070
|
+
(ac,fr,gpos) = self._get_filecache()
|
|
2063
2071
|
if ac and fr:
|
|
2064
2072
|
if not fr[f.ind_low:f.ind_high].all():
|
|
2065
2073
|
if config.global_caching == 'readonly':
|
|
@@ -2216,21 +2224,28 @@ class BeamformerSODIX( BeamformerBase ):
|
|
|
2216
2224
|
|
|
2217
2225
|
'''
|
|
2218
2226
|
#### the sodix function ####
|
|
2219
|
-
Djm = D.reshape([numpoints,num_mics])
|
|
2220
|
-
|
|
2221
|
-
|
|
2222
|
-
|
|
2223
|
-
|
|
2224
|
-
|
|
2225
|
-
|
|
2226
|
-
|
|
2227
|
-
|
|
2228
|
-
|
|
2227
|
+
Djm = D.reshape([numpoints,num_mics])
|
|
2228
|
+
p = h.T * Djm
|
|
2229
|
+
csm_mod = dot(p.T, p.conj())
|
|
2230
|
+
Q = csm - csm_mod
|
|
2231
|
+
func = sum((absolute(Q))**2)
|
|
2232
|
+
|
|
2233
|
+
# subscripts and operands for numpy einsum and einsum_path
|
|
2234
|
+
subscripts = 'rl,rm,ml->rl'
|
|
2235
|
+
operands = (h.T,h.T.conj()*Djm,Q)
|
|
2236
|
+
es_path = einsum_path(subscripts, *operands, optimize='greedy')[0]
|
|
2237
|
+
|
|
2238
|
+
#### the sodix derivative ####
|
|
2239
|
+
derdrl = einsum(subscripts, *operands, optimize=es_path)
|
|
2240
|
+
derdrl = -4 * real(derdrl)
|
|
2241
|
+
return func, derdrl.ravel()
|
|
2242
|
+
|
|
2229
2243
|
##### initial guess ####
|
|
2230
2244
|
if all(ac[(i-1)]==0):
|
|
2231
2245
|
D0 = ones([numpoints,num_mics])
|
|
2232
2246
|
else:
|
|
2233
|
-
D0 = ac[(i-1)]
|
|
2247
|
+
D0 = sqrt(ac[(i-1)]*
|
|
2248
|
+
real((trace(csm)/trace(array(self.freq_data.csm[i-1], dtype='complex128',copy=1)))))
|
|
2234
2249
|
|
|
2235
2250
|
#boundarys - set to non negative [2*(numpoints*num_mics)]
|
|
2236
2251
|
boundarys = tile((0, +inf), (numpoints*num_mics,1))
|
|
@@ -2239,11 +2254,11 @@ class BeamformerSODIX( BeamformerBase ):
|
|
|
2239
2254
|
# see https://docs.scipy.org/doc/scipy/reference/generated/scipy.optimize.fmin_l_bfgs_b.html
|
|
2240
2255
|
|
|
2241
2256
|
qi = ones([numpoints,num_mics])
|
|
2242
|
-
qi, yval, dicts = fmin_l_bfgs_b(function, D0, fprime=None, args=(),
|
|
2243
|
-
approx_grad=0, bounds=boundarys,
|
|
2244
|
-
factr=100.0, pgtol=1e-
|
|
2245
|
-
iprint
|
|
2246
|
-
disp
|
|
2257
|
+
qi, yval, dicts = fmin_l_bfgs_b(function, D0, fprime=None, args=(),
|
|
2258
|
+
approx_grad=0, bounds=boundarys,
|
|
2259
|
+
factr=100.0, pgtol=1e-12, epsilon=1e-08,
|
|
2260
|
+
iprint=-1, maxfun=1500000, maxiter=self.max_iter,
|
|
2261
|
+
disp=-1, callback=None, maxls=20)
|
|
2247
2262
|
#squared pressure
|
|
2248
2263
|
ac[i]=qi**2
|
|
2249
2264
|
else:
|
|
Binary file
|
|
Binary file
|
|
@@ -21,7 +21,14 @@ RectGrid, BeamformerBase, BeamformerEig, BeamformerOrth, BeamformerCleansc, \
|
|
|
21
21
|
MaskedTimeSamples, BeamformerCMF, \
|
|
22
22
|
BeamformerCapon, BeamformerMusic, BeamformerDamas, BeamformerClean, \
|
|
23
23
|
BeamformerFunctional, BeamformerDamasPlus, BeamformerGIB, BeamformerGridlessOrth,\
|
|
24
|
-
SteeringVector, Environment
|
|
24
|
+
SteeringVector, Environment, BeamformerSODIX
|
|
25
|
+
|
|
26
|
+
# copy CMF classes as workaround so that reference data name is unique later
|
|
27
|
+
class BeamformerCMFLassoLarsBIC (BeamformerCMF):
|
|
28
|
+
pass
|
|
29
|
+
|
|
30
|
+
class BeamformerCMFNNLS (BeamformerCMF):
|
|
31
|
+
pass
|
|
25
32
|
|
|
26
33
|
# if this flag is set to True
|
|
27
34
|
WRITE_NEW_REFERENCE_DATA = False
|
|
@@ -70,12 +77,14 @@ def fbeamformers():
|
|
|
70
77
|
bdp = BeamformerDamasPlus(beamformer=bb, n_iter=100, cached = False)
|
|
71
78
|
bo = BeamformerOrth(freq_data=f, steer=st, r_diag=True, eva_list=list(range(38,54)), cached = False)
|
|
72
79
|
bs = BeamformerCleansc(freq_data=f, steer=st, r_diag=True, cached = False)
|
|
73
|
-
|
|
80
|
+
bcmflassobic = BeamformerCMFLassoLarsBIC(freq_data=f, steer=st, method='LassoLarsBIC', cached = False)
|
|
81
|
+
bcmfnnls = BeamformerCMFNNLS(freq_data=f, steer=st, method='NNLS', cached = False)
|
|
74
82
|
bl = BeamformerClean(beamformer=bb, n_iter=10, cached = False)
|
|
75
83
|
bf = BeamformerFunctional(freq_data=f, steer=st, r_diag=False, gamma=3, cached = False)
|
|
76
84
|
bgib = BeamformerGIB(freq_data=f, steer=st, method= 'LassoLars', n=2, cached = False)
|
|
77
85
|
bgo = BeamformerGridlessOrth(freq_data=f, steer=st, r_diag=False, n=1, shgo={'n':16}, cached = False)
|
|
78
|
-
|
|
86
|
+
bsodix = BeamformerSODIX(freq_data=f, steer=st,max_iter=10, cached = False)
|
|
87
|
+
return (bbase, bc, beig, bm, bl, bo, bs, bd, bcmflassobic, bcmfnnls, bf, bdp, bgib, bgo,bsodix)
|
|
79
88
|
|
|
80
89
|
class acoular_beamformer_test(unittest.TestCase):
|
|
81
90
|
|
|
@@ -24,11 +24,11 @@ from numpy import array, concatenate, newaxis, where,arctan2,sqrt,pi,mod,zeros,\
|
|
|
24
24
|
from numpy.linalg import norm
|
|
25
25
|
from numpy.ma import masked_where
|
|
26
26
|
from .spectra import synthetic
|
|
27
|
-
from traits.api import Bool, CArray,
|
|
27
|
+
from traits.api import Bool, CArray, HasPrivateTraits, Instance, Property, Any
|
|
28
28
|
|
|
29
29
|
from scipy.special import spherical_yn, spherical_jn, sph_harm
|
|
30
30
|
from scipy.spatial.distance import cdist
|
|
31
|
-
|
|
31
|
+
from copy import copy
|
|
32
32
|
|
|
33
33
|
class MetricEvaluator(HasPrivateTraits):
|
|
34
34
|
"""Evaluate the reconstruction performance of source mapping methods.
|
|
@@ -104,8 +104,11 @@ class MetricEvaluator(HasPrivateTraits):
|
|
|
104
104
|
sectors = []
|
|
105
105
|
for i in range(ns):
|
|
106
106
|
loc = self.target_grid.gpos[:,i]
|
|
107
|
-
|
|
108
|
-
|
|
107
|
+
sector = copy(self.sector)
|
|
108
|
+
sector.r = r[i]
|
|
109
|
+
sector.x = loc[0]
|
|
110
|
+
sector.y = loc[1]
|
|
111
|
+
sectors.append(sector)
|
|
109
112
|
return sectors
|
|
110
113
|
|
|
111
114
|
def _integrate_sectors(self):
|
|
@@ -116,11 +119,12 @@ class MetricEvaluator(HasPrivateTraits):
|
|
|
116
119
|
array (num_freqs,num_sources)
|
|
117
120
|
returns the integrated Pa**2 values for each sector
|
|
118
121
|
"""
|
|
122
|
+
sectors = self.sectors
|
|
119
123
|
results = empty(shape=self.target_data.shape)
|
|
120
124
|
for f in range(self.target_data.shape[0]):
|
|
121
125
|
data = self.data[f]
|
|
122
126
|
for i in range(self.target_data.shape[1]):
|
|
123
|
-
sector =
|
|
127
|
+
sector = sectors[i]
|
|
124
128
|
results[f,i] = ac.integrate(data,self.grid,sector)
|
|
125
129
|
if not self.multi_assignment:
|
|
126
130
|
indices = self.grid.subdomain(sector)
|
|
@@ -40,7 +40,7 @@
|
|
|
40
40
|
from numpy import array, empty, empty_like, pi, sin, sqrt, zeros, newaxis, unique, \
|
|
41
41
|
int16, nan, concatenate, sum, float64, identity, argsort, interp, arange, append, \
|
|
42
42
|
linspace, flatnonzero, argmin, argmax, delete, mean, inf, asarray, stack, sinc, exp, \
|
|
43
|
-
polymul, arange, cumsum, ceil, split
|
|
43
|
+
polymul, arange, cumsum, ceil, split, array_equal
|
|
44
44
|
|
|
45
45
|
from numpy.linalg import norm
|
|
46
46
|
from numpy.matlib import repmat
|
|
@@ -957,7 +957,7 @@ class SpatialInterpolator(TimeInOut):
|
|
|
957
957
|
# Interpolation for 1D Arrays
|
|
958
958
|
if self.array_dimension =='1D' or self.array_dimension =='ring':
|
|
959
959
|
#for rotation add phidelay
|
|
960
|
-
if not phiDelay
|
|
960
|
+
if not array_equal(phiDelay,[]):
|
|
961
961
|
xInterpHelp = repmat(virtNewCoord[0, :], nTime, 1) + repmat(phiDelay, virtNewCoord.shape[1], 1).T
|
|
962
962
|
xInterp = ((xInterpHelp + pi ) % (2 * pi)) - pi # shifting phi cootrdinate into feasible area [-pi, pi]
|
|
963
963
|
#if no rotation given
|
|
@@ -1001,7 +1001,7 @@ class SpatialInterpolator(TimeInOut):
|
|
|
1001
1001
|
# Interpolation for arbitrary 2D Arrays
|
|
1002
1002
|
elif self.array_dimension =='2D':
|
|
1003
1003
|
#check rotation
|
|
1004
|
-
if not phiDelay
|
|
1004
|
+
if not array_equal(phiDelay,[]):
|
|
1005
1005
|
xInterpHelp = repmat(virtNewCoord[0, :], nTime, 1) + repmat(phiDelay, virtNewCoord.shape[1], 1).T
|
|
1006
1006
|
xInterp = ((xInterpHelp + pi ) % (2 * pi)) - pi #shifting phi cootrdinate into feasible area [-pi, pi]
|
|
1007
1007
|
else:
|
|
@@ -1081,7 +1081,7 @@ class SpatialInterpolator(TimeInOut):
|
|
|
1081
1081
|
# Interpolation for arbitrary 3D Arrays
|
|
1082
1082
|
elif self.array_dimension =='3D':
|
|
1083
1083
|
#check rotation
|
|
1084
|
-
if not phiDelay
|
|
1084
|
+
if not array_equal(phiDelay,[]):
|
|
1085
1085
|
xInterpHelp = repmat(virtNewCoord[0, :], nTime, 1) + repmat(phiDelay, virtNewCoord.shape[1], 1).T
|
|
1086
1086
|
xInterp = ((xInterpHelp + pi ) % (2 * pi)) - pi #shifting phi cootrdinate into feasible area [-pi, pi]
|
|
1087
1087
|
else:
|
|
@@ -7,10 +7,11 @@ Prerequisites
|
|
|
7
7
|
-------------
|
|
8
8
|
This "Getting started" tutorial assumes that the Acoular library is :doc:`installed<../install/index>` together with its dependencies and matplotlib, and that the demo finished successfully. If you did not run the demo yet, you should do so by typing into your python console
|
|
9
9
|
|
|
10
|
-
..
|
|
10
|
+
.. ipython::
|
|
11
11
|
|
|
12
|
-
|
|
13
|
-
|
|
12
|
+
In [1]: import acoular
|
|
13
|
+
|
|
14
|
+
In [1]: acoular.demo.acoular_demo.run()
|
|
14
15
|
|
|
15
16
|
This should, after some seconds, produce two pictures (a 64 microphone arrangement and a beamforming map with three sources). You may close the pictures in order to continue.
|
|
16
17
|
|
|
@@ -1,5 +1,24 @@
|
|
|
1
1
|
What's new
|
|
2
2
|
============
|
|
3
|
+
24.03
|
|
4
|
+
------------
|
|
5
|
+
* Improve test coverage for :class:`~acoular.fbeamform.BeamformerCMF`
|
|
6
|
+
* Changes to :class:`~acoular.fbeamform.BeamformerSODIX`:
|
|
7
|
+
* correction of wrong cost-function
|
|
8
|
+
* speedups through the use of `numpy.einsum_path` together with `numpy.einsum`
|
|
9
|
+
* changed start value `pgtol` for the optimization with `scipy.optimize.fmin_l_bfgs_b` solver
|
|
10
|
+
* Bugfixes:
|
|
11
|
+
* fixes unrecognized sector arguments in :class:`~acoular.tools.MetricEvaluator`
|
|
12
|
+
* handles version-dependent default values for `normalize` attribute in sklearn solvers (relevant for :class:`~acoular.fbeamform.BeamformerCMF` )
|
|
13
|
+
* fixes bug in :class:`~acoular.fbeamform.BeamformerOrth`: assigned strongest source at grid index 0 when instead of `eva_list` the trait `n` was given
|
|
14
|
+
* fixes broken :class:`~acoular.tprocess.SpatialInterpolator`
|
|
15
|
+
* minor bugfix for single microphone transfer functions calculated with :class:`~acoular.fbeamform.SteeringVector`
|
|
16
|
+
* fixes broken `NNLS` method in :class:`~acoular.fbeamform.BeamformerCMF` (wrong keyword argument `normalize`)
|
|
17
|
+
* Internal:
|
|
18
|
+
* new GitHub workflow for CI of the documentation
|
|
19
|
+
* added Zenodo metadata file
|
|
20
|
+
* changes to author name in `pyproject.toml`
|
|
21
|
+
|
|
3
22
|
|
|
4
23
|
23.11
|
|
5
24
|
------------
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "acoular"
|
|
7
|
-
version = "
|
|
7
|
+
version = "24.03"
|
|
8
8
|
description = "Python library for acoustic beamforming"
|
|
9
9
|
requires-python = ">=3.7,<=11"
|
|
10
10
|
authors = [
|
|
@@ -41,7 +41,7 @@ maintainers = [
|
|
|
41
41
|
{name = "Adam Kujawski", email = "adam.kujawski@tu-berlin.de"},
|
|
42
42
|
{name = "Art Pelling", email = "a.pelling@tu-berlin.de"},
|
|
43
43
|
{name = "Ennes Sarradj", email = "ennes.sarradj@tu-berlin.de"},
|
|
44
|
-
{name = "Gert
|
|
44
|
+
{name = "Gert Herold", email = "gert.herold@tu-berlin.de"},
|
|
45
45
|
{name = "Mikolaj Czuchaj", email = "mikolaj.czuchaj@tu-berlin.de"},
|
|
46
46
|
{name = "Simon Jekosch", email = "s.jekosch@tu-berlin.de"},
|
|
47
47
|
]
|
|
@@ -49,10 +49,18 @@ maintainers = [
|
|
|
49
49
|
[project.optional-dependencies]
|
|
50
50
|
dev = [
|
|
51
51
|
"nox",
|
|
52
|
+
"sphinx", # docs
|
|
53
|
+
"matplotlib", # docs
|
|
54
|
+
"ipython", # docs
|
|
55
|
+
"numpydoc", # docs
|
|
56
|
+
"sounddevice", # docs
|
|
57
|
+
"graphviz", #docs
|
|
58
|
+
"pickleshare", #docs
|
|
52
59
|
]
|
|
53
60
|
full = [
|
|
54
61
|
"matplotlib",
|
|
55
|
-
"pylops"
|
|
62
|
+
"pylops",
|
|
63
|
+
"sounddevice"
|
|
56
64
|
]
|
|
57
65
|
|
|
58
66
|
[project.urls]
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|