Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
37 commits
Select commit Hold shift + click to select a range
fdaaea2
update author information
mberz Mar 20, 2024
7da504c
rewrite init based on current files
mberz Dec 23, 2024
27e0800
create parametric submodule
mberz Jan 13, 2025
7a831c7
adapt import to new parametric submodule
mberz Jan 13, 2025
2fc010d
deprecate air attenuation function
mberz Jan 13, 2025
36c2737
add module docstrings
mberz Jan 13, 2025
a59fa12
removed obsolete catching of not imported functions
mberz Jan 13, 2025
17ec934
Merge branch 'develop_1.0.0' into restructure
mberz Feb 13, 2025
3c8cfab
rename rap to parameters
mberz Feb 14, 2025
7d9040a
Merge pull request #43 from pyfar/restructure
mberz Feb 14, 2025
eddb7eb
Merge branch 'develop' into develop_1.0.0
ahms5 Mar 31, 2025
f49eabc
Merge branch 'develop' into develop_1.0.0
ahms5 May 30, 2025
964569f
Merge branch 'develop' into develop_1.0.0
ahms5 Jun 5, 2025
4905dce
fix tests and examples
ahms5 Jul 31, 2025
471a7b7
clean notebook
ahms5 Jul 31, 2025
81276ae
fix ruff
ahms5 Jul 31, 2025
dd2eb1b
Merge pull request #63 from pyfar/v1/fix-tests-examples
mberz Aug 8, 2025
93bf005
API reference adjusted for develop_1.0.0
sbch22 Aug 8, 2025
d5ca6e9
API reference adjusted for develop_1.0.0
sbch22 Aug 8, 2025
f5561a0
API reference adjusted for develop_1.0.0
sbch22 Aug 8, 2025
525a20e
Apply suggestions from code review
sbch22 Aug 12, 2025
23b8235
API reference import-path like reference added for all submodules
sbch22 Aug 12, 2025
81b2c52
dsp.py dcostring modication to new hierarchy
sbch22 Aug 12, 2025
f23096c
edc.py docstring modification to new hierarchy
sbch22 Aug 12, 2025
8fc85a2
added structure for analytic submodule
sbch22 Aug 12, 2025
d1c66a2
Merge branch 'develop' into develop_1.0.0
ahms5 Aug 12, 2025
e18c355
Update docs/modules/analytic.rst
sbch22 Aug 13, 2025
02b3368
pyrato.analytic structure adjusted
sbch22 Aug 13, 2025
6371409
Merge pull request #64 from SimonBuechner/v1-API_docs
mberz Aug 15, 2025
d4b577c
obsolete import test (test_roomacoustics.py) file deleted
sbch22 Sep 11, 2025
0f7b86b
Merge pull request #71 from SimonBuechner/v1.0.0_delete_obsolete_test…
mberz Sep 11, 2025
d34732b
Merge branch 'main' into develop_1.0.0
mberz Sep 11, 2025
6708dac
fix failing tests from merge
ahms5 Sep 12, 2025
9e204df
fix ruff
ahms5 Sep 12, 2025
a203a4f
test_rt renamed to new test file naming structure. Issue #70
sbch22 Sep 18, 2025
746a342
Merge pull request #77 from pyfar/v1-test_file_naming_structure
f-brinkmann Sep 25, 2025
2b38663
v1.0.0 parameter clarity (#66)
sbch22 Sep 30, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 4 additions & 1 deletion docs/api_reference.rst
Original file line number Diff line number Diff line change
Expand Up @@ -12,5 +12,8 @@ Modules
.. toctree::
:maxdepth: 1

modules/pyrato
modules/analytic
modules/dsp
modules/edc
modules/parameters
modules/parametric
5 changes: 3 additions & 2 deletions docs/modules/analytic.rst
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
analytic
========
pyrato.analytic
===============

.. automodule:: pyrato.analytic
:members:
:undoc-members:
:show-inheritance:

6 changes: 3 additions & 3 deletions docs/modules/pyrato.rst → docs/modules/dsp.rst
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
pyrato
======
pyrato.dsp
==========

.. automodule:: pyrato
.. automodule:: pyrato.dsp
:members:
:undoc-members:
:show-inheritance:
7 changes: 7 additions & 0 deletions docs/modules/edc.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
pyrato.edc
==========

.. automodule:: pyrato.edc
:members:
:undoc-members:
:show-inheritance:
7 changes: 7 additions & 0 deletions docs/modules/parameters.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
pyrato.parameters
=================

.. automodule:: pyrato.parameters
:members:
:undoc-members:
:show-inheritance:
7 changes: 7 additions & 0 deletions docs/modules/parametric.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
pyrato.parametric
=================

.. automodule:: pyrato.parametric
:members:
:undoc-members:
:show-inheritance:
30 changes: 15 additions & 15 deletions examples/energy_decay_curves_and_reverberation_time.ipynb
Original file line number Diff line number Diff line change
Expand Up @@ -164,7 +164,7 @@
"plt.axvline(rir_1_noise.signal_length*interval[0], color='red', label='Interval')\n",
"plt.axvline(rir_1_noise.signal_length*interval[1], color='red')\n",
"\n",
"noise_energy = ra.estimate_noise_energy(\n",
"noise_energy = ra.dsp.estimate_noise_energy(\n",
" rir_1_noise, interval=interval, is_energy=False)\n",
"\n",
"noise_energy_db = 10*np.log10(noise_energy)\n",
Expand Down Expand Up @@ -232,12 +232,12 @@
"outputs": [],
"source": [
"start_sample = pf.dsp.find_impulse_response_start(rir_1_noise)\n",
"rir_noise_shifted = ra.time_shift(rir_1_noise, -start_sample, circular_shift=False)\n",
"edc_full_rir = ra.schroeder_integration(rir_noise_shifted, is_energy=False)\n",
"rir_noise_shifted = pf.dsp.time_shift(rir_1_noise, -start_sample, mode='linear')\n",
"edc_full_rir = ra.edc.schroeder_integration(rir_noise_shifted, is_energy=False)\n",
"\n",
"start_sample = pf.dsp.find_impulse_response_start(rir_1)\n",
"rir_shifted = ra.time_shift(rir_1, -start_sample, circular_shift=False)\n",
"edc_full_rir_compare = ra.schroeder_integration(rir_shifted, is_energy=False)\n",
"rir_shifted = pf.dsp.time_shift(rir_1, -start_sample, mode='linear')\n",
"edc_full_rir_compare = ra.edc.schroeder_integration(rir_shifted, is_energy=False)\n",
"edc_full_rir_compare.time /= np.atleast_2d(edc_full_rir_compare.time[..., 0]).T\n",
"edc_full_rir.time /= np.atleast_2d(edc_full_rir.time[..., 0]).T\n",
"\n",
Expand Down Expand Up @@ -275,7 +275,7 @@
"outputs": [],
"source": [
"intersection_time, late_reveberation_time, noise_level_lundeby = \\\n",
" ra.intersection_time_lundeby(\n",
" ra.edc.intersection_time_lundeby(\n",
" rir_1_noise, freq='broadband', is_energy=False,\n",
" time_shift=True, channel_independent=False, plot=True)\n",
"\n",
Expand All @@ -296,7 +296,7 @@
"metadata": {},
"outputs": [],
"source": [
"edc_truncation = ra.energy_decay_curve_truncation(\n",
"edc_truncation = ra.edc.energy_decay_curve_truncation(\n",
" rir_1_noise, freq='broadband', is_energy=False, time_shift=True,\n",
" channel_independent=False, normalize=True, plot=False)\n",
"\n",
Expand Down Expand Up @@ -325,7 +325,7 @@
"metadata": {},
"outputs": [],
"source": [
"edc_chu_auto = ra.energy_decay_curve_chu(\n",
"edc_chu_auto = ra.edc.energy_decay_curve_chu(\n",
" rir_1_noise, noise_level='auto', is_energy=False, time_shift=True,\n",
" channel_independent=False, normalize=True, plot=False)"
]
Expand All @@ -336,8 +336,8 @@
"metadata": {},
"outputs": [],
"source": [
"noise_level_man = ra.estimate_noise_energy(rir_1_noise, interval=[0.6, 1.0], is_energy=False)\n",
"edc_chu_man = ra.energy_decay_curve_chu(\n",
"noise_level_man = ra.dsp.estimate_noise_energy(rir_1_noise, interval=[0.6, 1.0], is_energy=False)\n",
"edc_chu_man = ra.edc.energy_decay_curve_chu(\n",
" rir_1_noise, noise_level=noise_level_man, is_energy=False, time_shift=True,\n",
" channel_independent=False, normalize=True, plot=False)"
]
Expand All @@ -348,7 +348,7 @@
"metadata": {},
"outputs": [],
"source": [
"edc_chu_noise_lundeby = ra.energy_decay_curve_chu(\n",
"edc_chu_noise_lundeby = ra.edc.energy_decay_curve_chu(\n",
" rir_1_noise, noise_level=noise_level_lundeby, is_energy=False, time_shift=True,\n",
" channel_independent=False, normalize=True, plot=False)"
]
Expand Down Expand Up @@ -392,7 +392,7 @@
"metadata": {},
"outputs": [],
"source": [
"edc_lundeby = ra.energy_decay_curve_lundeby(\n",
"edc_lundeby = ra.edc.energy_decay_curve_lundeby(\n",
" rir_1_noise, is_energy=False, time_shift=True,\n",
" channel_independent=False, normalize=True, plot=False)\n",
"\n",
Expand Down Expand Up @@ -421,7 +421,7 @@
"metadata": {},
"outputs": [],
"source": [
"edc_chu_lundeby = ra.energy_decay_curve_chu_lundeby(\n",
"edc_chu_lundeby = ra.edc.energy_decay_curve_chu_lundeby(\n",
" rir_1_noise, freq='broadband', is_energy=False, time_shift=True,\n",
" channel_independent=False, normalize=True, plot=False)\n",
"\n",
Expand Down Expand Up @@ -472,7 +472,7 @@
"reverberation_times = np.zeros(len(edcs))\n",
"for idx, edc in enumerate(edcs):\n",
" reverberation_times[idx] = \\\n",
" ra.reverberation_time_linear_regression(\n",
" ra.parameters.reverberation_time_linear_regression(\n",
" edc, T=Tx)"
]
},
Expand Down Expand Up @@ -528,7 +528,7 @@
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.11.11"
"version": "3.13.4"
}
},
"nbformat": 4,
Expand Down
47 changes: 11 additions & 36 deletions pyrato/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,47 +6,22 @@
__email__ = 'info@pyfar.org'
__version__ = '0.4.1'

from .rap import (
reverberation_time_linear_regression,
)
from .roomacoustics import (
reverberation_time_energy_decay_curve,
energy_decay_curve_analytic,

from .parametric import (
air_attenuation_coefficient,
)
from .dsp import (
find_impulse_response_maximum,
find_impulse_response_start,
time_shift,
preprocess_rir,
estimate_noise_energy,
)
from .edc import (
schroeder_integration,
energy_decay_curve_chu,
energy_decay_curve_chu_lundeby,
energy_decay_curve_lundeby,
energy_decay_curve_truncation,
intersection_time_lundeby,
)

from . import edc
from . import parameters
from . import dsp
from . import analytic
from . import parametric

__all__ = [
'reverberation_time_linear_regression',
'reverberation_time_energy_decay_curve',
'schroeder_integration',
'energy_decay_curve_analytic',
'air_attenuation_coefficient',
'find_impulse_response_maximum',
'find_impulse_response_start',
'time_shift',
'preprocess_rir',
'energy_decay_curve_chu',
'energy_decay_curve_chu_lundeby',
'energy_decay_curve_lundeby',
'energy_decay_curve_truncation',
'estimate_noise_energy',
'intersection_time_lundeby',
'edc',
'parameters',
'dsp',
'analytic',
'parametric',
'air_attenuation_coefficient',
]
4 changes: 2 additions & 2 deletions pyrato/dsp.py
Original file line number Diff line number Diff line change
Expand Up @@ -211,7 +211,7 @@ def time_shift(signal, shift, circular_shift=True, unit='samples'):
>>> import matplotlib.pyplot as plt
>>> impulse = pf.signals.impulse(
... 32, amplitude=(1, 1.5, 1), delay=(14, 15, 16))
>>> shifted = ra.time_shift(impulse, [-2, 0, 2])
>>> shifted = ra.dsp.time_shift(impulse, [-2, 0, 2])
>>> pf.plot.use('light')
>>> _, axs = plt.subplots(2, 1)
>>> pf.plot.time(impulse, ax=axs[0])
Expand All @@ -228,7 +228,7 @@ def time_shift(signal, shift, circular_shift=True, unit='samples'):
>>> import pyrato as ra
>>> import matplotlib.pyplot as plt
>>> impulse = pf.signals.impulse(32, delay=15)
>>> shifted = ra.time_shift(impulse, -10, circular_shift=False)
>>> shifted = ra.dsp.time_shift(impulse, -10, circular_shift=False)
>>> pf.plot.use('light')
>>> _, axs = plt.subplots(2, 1)
>>> pf.plot.time(impulse, ax=axs[0])
Expand Down
16 changes: 8 additions & 8 deletions pyrato/edc.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,8 @@
# -*- coding: utf-8 -*-

"""
The edc_noise_handling module provides various methods for noise
compensation of room impulse responses.
Sub-module implementing different methods for the calculation of energy decay
curves (EDCs) from measured or simulated room impulse responses (RIRs).
"""

import numpy as np
Expand Down Expand Up @@ -117,7 +117,7 @@ def schroeder_integration(room_impulse_response, is_energy=False):
... L, source_pos, receiver_pos,
... reverberation_time=1, max_freq=1e3, n_samples=2**16,
... speed_of_sound=343.9)
>>> edc = ra.schroeder_integration(rir)
>>> edc = ra.edc.schroeder_integration(rir)
>>> pf.plot.time(rir/np.abs(rir.time).max(), dB=True, label='RIR')
>>> ax = pf.plot.time(
... edc/edc.time[..., 0], dB=True, log_prefix=10, label='EDC')
Expand Down Expand Up @@ -255,7 +255,7 @@ def energy_decay_curve_truncation(
... rir.n_samples, rms=rir.time.max()*10**(-50/20),
... sampling_rate=rir.sampling_rate)
>>> rir = rir + awgn
>>> edc = ra.energy_decay_curve_truncation(rir)
>>> edc = ra.edc.energy_decay_curve_truncation(rir)
...
>>> ax = pf.plot.time(rir, dB=True, label='RIR')
>>> pf.plot.time(edc, dB=True, log_prefix=10, label='EDC')
Expand Down Expand Up @@ -393,7 +393,7 @@ def energy_decay_curve_lundeby(
... rir.n_samples, rms=rir.time.max()*10**(-50/20),
... sampling_rate=rir.sampling_rate)
>>> rir = rir + awgn
>>> edc = ra.energy_decay_curve_lundeby(rir)
>>> edc = ra.edc.energy_decay_curve_lundeby(rir)
...
>>> ax = pf.plot.time(rir, dB=True, label='RIR')
>>> pf.plot.time(edc, dB=True, log_prefix=10, label='EDC')
Expand Down Expand Up @@ -539,7 +539,7 @@ def energy_decay_curve_chu(
... rir.n_samples, rms=rir.time.max()*10**(-40/20),
... sampling_rate=rir.sampling_rate)
>>> rir = rir + awgn
>>> edc = ra.energy_decay_curve_chu(rir)
>>> edc = ra.edc.energy_decay_curve_chu(rir)
...
>>> pf.plot.time(rir/np.abs(rir.time).max(), dB=True, label='RIR')
>>> ax = pf.plot.time(
Expand Down Expand Up @@ -679,7 +679,7 @@ def energy_decay_curve_chu_lundeby(
... rir.n_samples, rms=rir.time.max()*10**(-50/20),
... sampling_rate=rir.sampling_rate)
>>> rir = rir + awgn
>>> edc = ra.energy_decay_curve_chu_lundeby(rir)
>>> edc = ra.edc.energy_decay_curve_chu_lundeby(rir)
...
>>> ax = pf.plot.time(rir, dB=True, label='RIR')
>>> pf.plot.time(edc, dB=True, log_prefix=10, label='EDC')
Expand Down Expand Up @@ -832,7 +832,7 @@ def intersection_time_lundeby(
... rir.n_samples, rms=rir.time.max()*10**(-40/20),
... sampling_rate=rir.sampling_rate)
>>> rir = rir + awgn
>>> inter_time, _, noise_power = ra.intersection_time_lundeby(rir)
>>> inter_time, _, noise_power = ra.edc.intersection_time_lundeby(rir)
...
>>> ax = pf.plot.time(rir, dB=True, label='RIR')
>>> ax.axvline(inter_time, c='k', linestyle='--', label='$T_i$')
Expand Down
Loading