Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
633 commits
Select commit Hold shift + click to select a range
ff9aaf7
apply review remove unused checks
ahms5 Jul 4, 2025
5fc1c3c
fix ruff comming from develop
ahms5 Jul 3, 2025
d9768df
fix ruff
ahms5 Jul 4, 2025
855228a
Revert "fix ruff comming from develop"
ahms5 Jul 4, 2025
d728db5
Apply suggestions from code review
ahms5 Jul 4, 2025
3c0738a
Merge pull request #148 from pyfar/ruff/B
mberz Jul 4, 2025
5191750
Merge branch 'develop' into ruff/doc
ahms5 Jul 4, 2025
e335e7b
Merge branch 'develop' into plot_revise_tests
ahms5 Jul 4, 2025
c5fe224
remove quadrature setter
tluebeck Jul 7, 2025
f3215ef
bugfixes
tluebeck Jul 7, 2025
a1531c1
edit tests
tluebeck Jul 9, 2025
41864a5
edit tests
tluebeck Jul 9, 2025
69b36f1
update according to review
tluebeck Jul 11, 2025
92b9da5
apply review
ahms5 Jul 16, 2025
5033ff0
Merge branch 'develop' into ruff/fix_develop
ahms5 Jul 25, 2025
0c77c6c
Merge pull request #164 from pyfar/ruff/fix_develop
f-brinkmann Jul 25, 2025
5e1bd12
Merge branch 'develop' into ruff/doc
ahms5 Jul 25, 2025
757a089
fix ruff
ahms5 Jul 25, 2025
afe7dd2
Merge pull request #149 from pyfar/ruff/doc
f-brinkmann Jul 25, 2025
f41681c
Merge branch 'develop' into plot_revise_tests
ahms5 Jul 25, 2025
98683e9
start fixing the tests
ahms5 Jul 25, 2025
9fc80a2
add pyflakes rules
f-brinkmann Jul 26, 2025
4b3baaf
add PEP8 warnings
f-brinkmann Jul 26, 2025
3c7b835
add pytest style rules
f-brinkmann Jul 26, 2025
bbe5767
remove commented out code
f-brinkmann Jul 26, 2025
69117a0
add trailing comma rule
f-brinkmann Jul 26, 2025
b9a754c
add missing docstings
f-brinkmann Jul 26, 2025
ae85a5c
introduce new normalizations nm and snm
tluebeck Jul 28, 2025
e787193
rename "type" parameters to avoid shadowing
hoyer-a Jul 28, 2025
99491c3
implement new normalizations
tluebeck Jul 28, 2025
011ddad
update according to review
tluebeck Jul 29, 2025
a324c97
Merge branch 'develop' into feature/check_sampling_quadrature
tluebeck Jul 29, 2025
4c0e204
Merge branch 'develop' into feature/new_sh_normalizations
tluebeck Jul 29, 2025
ccde7e8
update renormalization
tluebeck Jul 29, 2025
8ce1958
update tests
tluebeck Jul 29, 2025
a0186cf
test renormalization
tluebeck Jul 29, 2025
1bcbe8c
add tests for sh_bases
tluebeck Jul 29, 2025
13bed86
fix tests
ahms5 Jul 29, 2025
98c1c5a
add baseline for test_sampling_scatter
ahms5 Jul 29, 2025
b4570fc
add baseline for test_spherical_default
ahms5 Jul 29, 2025
143709d
add baseline for test_spherical_cmap
ahms5 Jul 29, 2025
5586cf3
add baseline for test_spherical_colorbar
ahms5 Jul 29, 2025
593491b
add baseline for test_spherical_limits
ahms5 Jul 29, 2025
aac4af2
add baseline for test_spherical_phase
ahms5 Jul 29, 2025
0708091
add baseline for test_spherical_projection
ahms5 Jul 29, 2025
c8de085
add baseline for test_spherical_levels
ahms5 Jul 29, 2025
8dfb681
cosmetics
ahms5 Jul 29, 2025
a4a96cb
comment error
ahms5 Jul 29, 2025
13855be
edit docu
tluebeck Jul 29, 2025
2e57b80
add tests for custom ax 3d
ahms5 Jul 29, 2025
3231ea4
test for all ax
ahms5 Jul 29, 2025
538b1e2
cleanup tests plot
ahms5 Jul 29, 2025
18c23f3
Update spharpy/samplings/helpers.py
ahms5 Jul 29, 2025
93f1fb3
Apply suggestions from code review
ahms5 Jul 29, 2025
4af9443
fix tests
ahms5 Jul 29, 2025
13f3f60
Apply suggestions from code review
ahms5 Jul 29, 2025
7e12a7a
update according to review
tluebeck Jul 31, 2025
0c84905
fix typo
tluebeck Aug 5, 2025
1bf6f79
fix ruff errors
tluebeck Aug 5, 2025
e75f57c
update according to review
tluebeck Aug 6, 2025
1825a3c
Merge pull request #171 from pyfar/fix/ruff-shadowing
mberz Aug 8, 2025
09ea489
Merge branch 'develop' into enhance/ruff
f-brinkmann Aug 8, 2025
f9b651a
Merge pull request #170 from pyfar/enhance/ruff
f-brinkmann Aug 8, 2025
75e4fad
edit docstring according to review
tluebeck Aug 26, 2025
90fa45d
edit doc
tluebeck Aug 26, 2025
f8de2df
update according to review
tluebeck Aug 26, 2025
59e511a
Merge branch 'develop' into feature/new_sh_normalizations
tluebeck Aug 26, 2025
59cfd34
edit test
tluebeck Aug 26, 2025
8a5fade
fix ruff errors
tluebeck Aug 31, 2025
0c8d9d3
ruff fix
tluebeck Aug 31, 2025
7bccc67
add **kwargs were possible
ahms5 Sep 12, 2025
6632b42
Merge branch 'develop' into plot_revise_tests
ahms5 Sep 12, 2025
97b6ba3
fix ruff
ahms5 Sep 12, 2025
b7f471d
Update spharpy/plot/spatial.py
ahms5 Sep 15, 2025
fa52e19
Merge branch 'develop' into feature/check_sampling_quadrature
mberz Sep 16, 2025
7ec3818
Merge pull request #156 from pyfar/feature/check_sampling_quadrature
mberz Sep 16, 2025
2e498cc
Merge branch 'main' into develop
mberz Sep 16, 2025
af42dea
remove save axes input test
ahms5 Sep 17, 2025
31d2b7f
fix doc for cmap
ahms5 Sep 17, 2025
dcd1caa
Merge branch 'develop' into feature/new_sh_normalizations
tluebeck Sep 18, 2025
6912751
Update tests/test_plots.py
ahms5 Sep 18, 2025
95ff3c6
apply review by @mberz
ahms5 Sep 18, 2025
b90f928
Apply suggestions from code review
ahms5 Sep 18, 2025
4c2bc3a
deactivate create_baseline
ahms5 Sep 18, 2025
1022e64
add test for refine parameter in pcolor_map
ahms5 Sep 18, 2025
85a8507
set baseline to False
ahms5 Sep 18, 2025
090a150
make doc easier to read
ahms5 Sep 18, 2025
c58bfdb
Update tests/test_plots.py
ahms5 Sep 19, 2025
dadb7c3
Merge pull request #162 from pyfar/plot_revise_tests
ahms5 Sep 19, 2025
b9faa24
apply review
ahms5 Sep 19, 2025
e42d7a3
update according to review
tluebeck Sep 19, 2025
4017a53
capitalize normalization names
tluebeck Sep 20, 2025
fcea6e8
fix ruff on develop
ahms5 Sep 19, 2025
fb2cab9
add test for cmap phase_twilight
ahms5 Sep 18, 2025
27c9ad3
fix comment
ahms5 Sep 18, 2025
db5cb34
fix comments in test
ahms5 Sep 18, 2025
f175674
improve documentation
ahms5 Sep 18, 2025
121af33
Update spharpy/plot/cmap.py
ahms5 Sep 19, 2025
a4f9af3
Change colormap encoding parameter in wireframe balloon
mberz Sep 17, 2025
f15cd9d
update cmap encoding input in balloon
mberz Sep 17, 2025
85f4ffe
update cmap encoding parameter in pcolor_sphere
mberz Sep 17, 2025
b080331
update tests for balloon plots to cmap_encoding input
mberz Sep 18, 2025
43157ef
output file naming
mberz Sep 18, 2025
0043f48
Update baselines
mberz Sep 18, 2025
4aff058
Baseline file renaming suggested by @ahms5
mberz Sep 22, 2025
2327095
revise docstrings
mberz Sep 22, 2025
8912147
Merge pull request #186 from pyfar/add_test_plot_refine
f-brinkmann Sep 24, 2025
25457da
cleanup doc imports
ahms5 Jun 1, 2025
338919e
add fail with warning to ci for build doc
ahms5 Jun 1, 2025
af10f42
remove special module
ahms5 Jun 15, 2025
ada79ac
Revert "remove special module"
ahms5 Jun 15, 2025
93535e7
remove special module from doc
ahms5 Jun 15, 2025
97942b9
add special according to review
ahms5 Jul 4, 2025
6181f5b
fix footnote to remove warnings from docbuild
ahms5 Jul 4, 2025
f8e0c99
Update spharpy/spherical.py
ahms5 Sep 19, 2025
192040f
Update docs/api_reference.rst
ahms5 Sep 19, 2025
32bc606
fix docs warning
ahms5 Sep 19, 2025
99b07b4
apply review
ahms5 Sep 19, 2025
502ec57
Fix references gradient spherical harmonics
mberz Sep 26, 2025
cbcb26a
harmonize contour / contour_map; bugfixes
hoyer-a Sep 18, 2025
d5f888a
adjust docs
hoyer-a Sep 18, 2025
bb74d42
fix ruff
hoyer-a Sep 20, 2025
6cb841a
adjust docs according to review
hoyer-a Sep 23, 2025
8381571
use _combined_contour for contour_map
hoyer-a Sep 26, 2025
7bee9cb
Docstring math formatting
mberz Oct 1, 2025
a140bee
add blank lines in examples
hoyer-a Oct 1, 2025
129c5cb
revert line indents
tluebeck Oct 2, 2025
9c7726a
bugfix files not found
tluebeck Oct 2, 2025
fc2d915
bugfix file not found
tluebeck Oct 2, 2025
1c9f748
fix ruff error
tluebeck Oct 2, 2025
9e8a1f6
Merge pull request #172 from pyfar/feature/new_sh_normalizations
mberz Oct 2, 2025
b541b0a
fix math display in special and rotations
hoyer-a Oct 2, 2025
f34001a
remove 'apply' documentation in calculate_sampling_weights
hoyer-a Oct 9, 2025
95e4c20
improce docs for eigenmikes
ahms5 Oct 6, 2025
650c983
Apply suggestions from code review
ahms5 Oct 10, 2025
e7c367c
review
ahms5 Oct 10, 2025
9100e81
add initial version of the spherical harmonic definition class
mberz Aug 8, 2025
39de21f
let SphericalHarmonics class use base class SphericalHarmonicDefinition
mberz Aug 22, 2025
2be23ae
pre-init properties
mberz Sep 16, 2025
cedf1a5
Move n_max dependent checks out of Definition setter back into the Sp…
mberz Sep 16, 2025
14ea93c
Update tests for SphericalHarmonicDefintion and SphericalHarmonics
mberz Sep 16, 2025
760ac1c
simplify CS check
mberz Sep 16, 2025
942ce62
Change order in which the properties are initialized
mberz Sep 16, 2025
3498557
Add additional tests
mberz Sep 16, 2025
6e2e0cf
Add Definition to init
mberz Sep 17, 2025
df1db32
revise based on review
mberz Sep 18, 2025
9bb1068
revise based on review
mberz Sep 22, 2025
5c3f9ab
Adapt SH Definition class to new normalization conventions
mberz Oct 9, 2025
c7b380a
remove unused import
mberz Oct 9, 2025
79d3aad
move n_max to the SphericalHarmonicDefinition class
mberz Oct 9, 2025
73addf3
adapt test to n_max being property of SphericalHarmonicDefinition
mberz Oct 9, 2025
1fa3538
update docstring for SH definition
mberz Oct 9, 2025
e4b9cbb
more compact formatting
mberz Oct 9, 2025
ae344ed
add caching of old values to avoid unnecessary resets of compute attr…
mberz Oct 10, 2025
4140fcc
Use init of parent class
mberz Oct 10, 2025
1204eda
change order
mberz Oct 10, 2025
601a5db
Add order limitation notes for 'fuma' and 'maxN' conventions
mberz Oct 10, 2025
5cba8d8
Add icosahedron sampling fixture
mberz Oct 17, 2025
4f12549
introduce new on_property_change method to reset computed attributes …
mberz Oct 17, 2025
214b79e
Extend testing for recomputation of dependent properties on property …
mberz Oct 17, 2025
9a746b7
cleanup and use of fixture in spherical harmonics tests
mberz Oct 17, 2025
4349811
Add type to docstring
mberz Oct 17, 2025
6ff2099
update test docstrings
mberz Oct 17, 2025
3fc54c7
simplify logic in spherical harmonics class
mberz Oct 17, 2025
a71ec37
harmonize default value documentation
hoyer-a Oct 9, 2025
3b1e62a
adjusting formulations
hoyer-a Oct 10, 2025
3ca2898
apply review
hoyer-a Oct 14, 2025
50334a1
correct cmap documentation for cmap_encoding parameter
ahms5 Oct 10, 2025
83b1c19
Apply suggestions from code review
ahms5 Oct 10, 2025
297d9fd
Update spharpy/plot/spatial.py
ahms5 Oct 12, 2025
df31155
Apply suggestions from code review
ahms5 Oct 13, 2025
b72c4f8
Apply suggestions from code review
ahms5 Oct 13, 2025
2b36c8b
fix ruff
ahms5 Oct 16, 2025
5151b0c
refactor acn and fuma to ACN and FuMa in SphericalHarmonics and Defin…
mberz Oct 17, 2025
e7eb24a
refactor acn and fuma to ACN and FuMa in SH audio class
mberz Oct 17, 2025
2ebd42d
refactor acn and fuma to ACN and FuMa in spherical module
mberz Oct 17, 2025
6845759
fix doc for cube_equidistant
ahms5 Oct 6, 2025
c54335c
improve method name and remove flatten result
ahms5 Oct 6, 2025
16f222b
Update spharpy/samplings/samplings.py
ahms5 Oct 8, 2025
8cfafeb
fix test
ahms5 Oct 8, 2025
37b0a4c
rename function as suggested by @mberz
ahms5 Oct 8, 2025
8ee135e
remove non usefull comments
ahms5 Oct 8, 2025
053133d
rename tests
ahms5 Oct 8, 2025
abf31cd
add flatten_output parameter including tests
ahms5 Oct 10, 2025
ef0193a
fix tests
ahms5 Oct 10, 2025
4ff3c41
Apply suggestions from code review
ahms5 Oct 10, 2025
f3185b5
fix ruff and doc
ahms5 Oct 10, 2025
24ae39a
Apply suggestions from code review
ahms5 Oct 17, 2025
3c8898f
fix test
ahms5 Oct 17, 2025
3a18898
refactor hyperinterpolation sampling
ahms5 Oct 18, 2025
253d7b3
make diff in tests easier to read
ahms5 Oct 18, 2025
dc552e0
improve error tests
ahms5 Oct 18, 2025
eb66b39
Apply suggestions from code review
ahms5 Oct 20, 2025
c7e94ce
Update spharpy/samplings/samplings.py
ahms5 Oct 22, 2025
e7abe93
cleanup tests
ahms5 Oct 22, 2025
8bc69e3
separate an abstract base class for SH definitions without n_max as p…
mberz Oct 24, 2025
f984e8e
re-use init of the base class in SphericalHarmonicDefinition.__init__
mberz Nov 17, 2025
42e30f8
Extend docstring of _SphericalHarmonicBase and SphericalHarmonicDefin…
mberz Nov 19, 2025
a37de34
fix docstings
f-brinkmann Dec 4, 2025
64c494c
Merge pull request #234 from pyfar/fix/SamplingSphere_docs
f-brinkmann Dec 5, 2025
46c5277
Add SamplingSphere.from_coordinates (#235)
f-brinkmann Dec 5, 2025
5e4983b
add shortcut
tluebeck Dec 10, 2025
bd57396
Update examples to use spharpy SamplingSphere (#238)
f-brinkmann Dec 12, 2025
203ff4c
Consistent spharpy import in docs (#239)
f-brinkmann Dec 12, 2025
79b1e94
Add SphericalHarmonicsAudio classes (#166)
tluebeck Dec 15, 2025
0273296
Update init structure for classes (#248)
mberz Dec 16, 2025
3644a46
Refactoring setting inverse calculation method in SphericalHarmonics …
mberz Dec 17, 2025
f523063
[ENH] Initialize spherical harmonics from definition (#249)
f-brinkmann Dec 17, 2025
62b1624
Enhance docs for beamformer module (#250)
f-brinkmann Dec 19, 2025
566e7fb
squeeze arrays before converting to scalar (fix numpy 2.4.0)
hoyer-a Dec 23, 2025
a7616ae
remove print
hoyer-a Dec 23, 2025
52f6357
Merge pull request #259 from pyfar/fix/numpy-2.4.0
f-brinkmann Jan 5, 2026
7f81f7c
[DOC] Add new SphericalHarmonic* classes to the docs structure (#251)
mberz Jan 9, 2026
b57b63b
Enhance SH documentation (#260)
f-brinkmann Jan 16, 2026
1c01b10
Hot: gaussian sampling fails for certain higher sh orders (#268)
ahms5 Jan 21, 2026
68d54a9
[ENH] Classmethod to create SphericalHarmonicSignal from SphericalHar…
tluebeck Jan 21, 2026
e284bdf
unify documentation of SH parameters and properties (#265)
f-brinkmann Jan 21, 2026
4eb13c6
PR collecting changes in the plot module (#222)
mberz Jan 22, 2026
b7f46b9
Deprecate scipy Legendre function (#143)
f-brinkmann Jan 30, 2026
3766d31
small fixes in plot module for the 'ax' input (#271)
ahms5 Feb 10, 2026
8446bf0
fix SphericalHarmonicBase and Definition parameter order (#275)
f-brinkmann Feb 10, 2026
e1137c0
increase navigation depth for left sidebar to show subsections in the…
mberz Feb 13, 2026
3509923
BUG: Pass the condon_shortley phase property to the basis calculation…
mberz Feb 13, 2026
fc555a3
remove n_points from gaussian sampling
f-brinkmann Feb 14, 2026
9bf4b96
Revert "remove n_points from gaussian sampling"
f-brinkmann Feb 14, 2026
39c3382
Refactor sampling.t_design (#273)
ahms5 Feb 20, 2026
352a9f2
Harmonize equiangular sampling parameter order (#283)
f-brinkmann Feb 20, 2026
6551ae5
Harmonize Gaussian sampling (#284)
f-brinkmann Feb 20, 2026
38c1b22
Improve documentation of `spharpy.special` module (#285)
f-brinkmann Feb 26, 2026
41320d3
Refactor Lebedev (#277)
f-brinkmann Mar 3, 2026
66e701d
[MAINT] add python version 3.14 to ci and pipy metadata as supported …
ahms5 Mar 5, 2026
ab50a92
Automatically add copybutton to code cells in the documentation (#289)
mberz Mar 5, 2026
5319363
DOC: Add documentation on the mathematical definitions (#280)
mberz Mar 6, 2026
5839ce4
fix ruff (#293)
f-brinkmann Mar 6, 2026
50e3cde
enable data as list as input for SHAudio classes (#292)
f-brinkmann Mar 9, 2026
8825198
fix sphinx warnings (#297)
hoyer-a Mar 9, 2026
d9baeac
Enh/update coordinate factory (#296)
mberz Mar 9, 2026
e41c3c6
[DOC] SH Audio classes (#291)
f-brinkmann Mar 10, 2026
f50fa63
link sh definition in docs (#295)
f-brinkmann Mar 10, 2026
eb0e407
update SH class docs (#294)
f-brinkmann Mar 10, 2026
62e6b3a
Adapt Rotation to the SphericalHarmonicDefintion class (#226)
mberz Mar 12, 2026
bd9297a
Maintenance: remove examples (#302)
mberz Mar 12, 2026
4dd0a98
Refactor samplings.fliege (#269)
ahms5 Mar 13, 2026
fa195fb
Bump version: 0.6.2 → 0.6.3
mberz Mar 16, 2026
2aec9a9
Merge branch 'main' into develop
mberz Mar 16, 2026
7484a27
Merge branch 'main' into develop
mberz Mar 16, 2026
e4bc41b
extend SamplingSphere representation from parent (#270)
ahms5 Mar 16, 2026
55c287d
Change the required pyfar version to min 0.8.0 (#301)
mberz Mar 16, 2026
fab2952
Release history for version 1.0.0. (#304)
mberz Mar 16, 2026
8d4ca22
remove pytz from dependencies (#305)
mberz Mar 16, 2026
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
23 changes: 12 additions & 11 deletions .circleci/config.yml
Original file line number Diff line number Diff line change
Expand Up @@ -83,7 +83,7 @@ jobs:
command: |
pip install ".[docs]"
cd docs/
make html
make html SPHINXOPTS="-W"

test_deprecation_warnings:
parameters:
Expand Down Expand Up @@ -165,43 +165,44 @@ workflows:
matrix:
parameters:
version:
- "3.10"
- "3.11"
- "3.12"
- "3.13"
- "3.14"

- ruff:
matrix:
parameters:
version:
- "3.13"
- "3.14"
requires:
- build_and_test

- test_documentation_build:
matrix:
parameters:
version:
- "3.13"
- "3.14"
requires:
- build_and_test

- test_deprecation_warnings:
matrix:
parameters:
version:
- "3.13"
- "3.14"
requires:
- build_and_test

- test_pypi_publish:
matrix:
parameters:
version:
- "3.13"
- "3.14"
requires:
- build_and_test


test_and_publish:
# Test and publish on new git version tags
# This requires its own workflow to successfully trigger the test and build
Expand All @@ -210,10 +211,10 @@ workflows:
matrix:
parameters:
version:
- "3.10"
- "3.11"
- "3.12"
- "3.13"
- "3.14"

filters:
branches:
Expand All @@ -226,7 +227,7 @@ workflows:
matrix:
parameters:
version:
- "3.13"
- "3.14"
requires:
- build_and_test
filters:
Expand All @@ -240,7 +241,7 @@ workflows:
matrix:
parameters:
version:
- "3.13"
- "3.14"
requires:
- build_and_test
filters:
Expand All @@ -254,7 +255,7 @@ workflows:
matrix:
parameters:
version:
- "3.13"
- "3.14"
requires:
- build_and_test
filters:
Expand All @@ -268,7 +269,7 @@ workflows:
matrix:
parameters:
version:
- "3.13"
- "3.14"
requires:
- build_and_test
- ruff
Expand Down
3 changes: 0 additions & 3 deletions .editorconfig
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,3 @@ end_of_line = crlf

[LICENSE]
insert_final_newline = false

[Makefile]
indent_style = tab
8 changes: 8 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -111,6 +111,10 @@ venv.bak/
# macOS
.DS_Store

# external data that is loaded from the web
spharpy/samplings/_eqsp/samplings_extremal*
spharpy/samplings/_eqsp/samplings_t_design*

# workaround for failing test discovery in vscode
tests/*/__init__.py
tests/private/
Expand All @@ -120,4 +124,8 @@ docs/header.rst
docs/_static/favicon.ico
docs/_static/header.rst
docs/_static/css/custom.css
docs/_static/js/custom.js
docs/resources/logos/pyfar_logos_fixed_size_spharpy.png

# ignore plot output
tests/test_plot_data/output/
2 changes: 1 addition & 1 deletion .readthedocs.yml
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ sphinx:
formats:
- pdf

# Optionally set the version of Python and requirements required to build your docs
# use pip to install dependencies
python:
install:
- method: pip
Expand Down
98 changes: 98 additions & 0 deletions HISTORY.rst
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,104 @@
History
=======

1.0.0 (2026-03-16)
------------------

.. warning::

``spharpy`` version 1.0.0 introduces several breaking changes which are not backwards compatible with prior versions.
These changes harmonize the package with the pyfar ecosystem. Basic functionality such as the ``Coordinates`` class are fully moved to the ``pyfar`` package which serves as a common base for all packages of the ecosystem.


Breaking changes
^^^^^^^^^^^^^^^^

- ``RotationSH`` has been re-designed. Changes include

- ``RotationSH`` has been renamed to ``SphericalHarmonicRotation``
- The class no longer inherits from ``scipy.spatial.transform.Rotation``, instead it inherits from ``pyfar.Rotation``, which is based on ``scipy.spatial.transform.Rotation`` using composition. This was necessary due to the re-write of ``scipy.spatial.transform.Rotation`` in scipy v1.17.0.
- The class no longer stores spherical harmonic orders, instead a ``SphericalHarmonicDefinition`` object is required when calling the respective class method to calculate the spherical harmonic rotation matrix.

- Removed the class ``spharpy.samplings.Coordinates``. Instead, refer to ``pyfar.Coordinates`` for storing coordinates. All functions which previously used ``spharpy.samplings.Coordinates`` now use ``pyfar.Coordinates``.
- ``spharpy.SamplingSphere`` has been rewritten and now implements checks if

- all points are placed on the same radius, given a specified tolerance,
- the area weights sum correctly to the integral of the unit sphere, if they are not ``None``.

- The ``indexing`` module has been removed, and the functionality has been moved to the ``spherical`` module.

- In ``spharpy.spherical.sph_identity_matrix`` the argument ``type`` has been renamed to ``matrix_type`` to avoid conflict with the built-in ``type`` function.

- In the ``spherical`` module, the functions

- ``acn2nm`` and ``nm2acn`` have been renamed to ``acn_to_nm`` and ``nm_to_acn``, respectively.

- The ``spharpy.plot`` module has been re-written and now has a more consistent API with the ``pyfar.plot`` module

- Added support for pyfar's plot styles.
- Add support for always passing and returning ``matplotlib.axes.Axes`` objects to all plotting functions, which allows for more flexible plotting and composition of plots.
- Always return matplotlib ``Colorbar`` and mappables for each plot, which is consistent with the ``pyfar.plot`` module.
- Omit the implicit interpolation of data in the map projection plots. Users should now explicitly interpolate the data to a regular grid using ``spharpy.interpolate.griddata`` or similar functions before plotting if necessary.

- The ``spharpy.samplings`` module has been re-written

- ``spharpy.samplings.cube_equidistand`` has been renamed to ``spharpy.samplings.equidistant_cuboid``
- ``spherical_t_design`` has been renamed to ``t_design``
- ``equalarea`` has been renamed to ``equal_area``
- All functions now return a refactored ``spharpy.SamplingSphere`` object.
- In the ``spharpy.samplings.utils`` module, the helper functions ``cart2sph``, ``latlon2cart``, and ``sph2cart`` have been removed, since they were moved to ``pyfar``.
- The function ``spharpy.samplings.utils.cart2latlon`` has been refactored to use a ``pyfar.Coordinates`` (or child class) object as input instead of an array containing cartesian coordinates.

Changed:
^^^^^^^^

- Removed support for Python 3.10 and earlier.
- Require pyfar >= 0.8.0.
- Require scipy >= 1.17.0.
- The ``special`` and ``spatial`` sub-modules are now directly imported as ``spharpy.special`` and ``spharpy.spatial``.
- Extended documentation and added examples for all functions in the following modules

- ``beamforming``
- ``spatial``
- ``interpolate``
- ``special``
- ``spherical``

Added:
^^^^^^

- ``spharpy.SphericalHarmonicDefintion``: A class encapsulating parameters for the definition of spherical harmonics.
- ``spharpy.SphericalHarmonics``: A class to lazily compute the spherical harmonics for a given definition and coordinates. For ``spharpy.SamplingSphere`` the class also calculates inverse basis matrices.
- ``spharpy.SphericalHarmonicSignal``, ``spharpy.SphericalHarmonicFrequencyData``, and ``spharpy.SphericalHarmonicTimeData``: classes to store audio data in the spherical harmonic domain. These classes are derived from ``pyfar.Signal``, ``pyfar.FrequencyData``, and ``pyfar.TimeData`` respectively, and thus support all methods implemented for these classes.
- Added support for the following parametrization of the functions for calculation of spherical harmonics defined in the ``spharpy.spherical`` module:

- normalizations (N3D, SN3D, NM, SNM, and maxN),
- the Condon-Shortley phase convention,
- the ACN and FuMa channel ordering convention.

- Added ``spharpy.spherical.renormalize`` function to convert between different spherical harmonic normalization schemes.
- Added ``spharpy.spherical.change_channel_convention`` to convert between different channel ordering conventions.
- Added functions ``nm_to_fuma`` and ``fuma_to_nm`` to convert to and from FuMa channel ordering
- Shared plot preparation in the ``spharpy.plot`` module, which is used by all plot functions.
- Tests for all plots and baseline images for manual comparison of the plots in the test suite.
- Added the following spherical sampling grids:

- ``spharpy.samplings.lebedev``
- ``spharpy.samplings.equal_angle``
- ``spharpy.samplings.great_circle``
- ``spharpy.samplings.fliege``

- Added a read-only property ``spharpy.SamplingSphere.quadrature`` which can be used to check if the sampling is a valid quadrature grid.

Documentation
^^^^^^^^^^^^^
- Extended documentation and added examples for all functions in the following modules:
- `beamforming`,
- `spatial`,
- `interpolate`,
- `special`,
- `spherical`,

0.6.3 (2026-03-16)
------------------
- Remove support for Python 3.8. (PR #111)
Expand Down
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ Use pip to install spharpy

pip install spharpy

(Requires Python 3.10 or higher)
(Requires Python 3.11 or higher)

Audio file reading/writing is supported through [SoundFile](https://python-soundfile.readthedocs.io), which is based on
[libsndfile](http://www.mega-nerd.com/libsndfile/). On Windows and OS X, it will be installed automatically.
Expand Down
21 changes: 20 additions & 1 deletion docs/api_reference.rst
Original file line number Diff line number Diff line change
Expand Up @@ -10,18 +10,37 @@ For examples on how to use spharpy refer to the notebooks in the
`examples gallery`_ and the documentation on classes and modules below.


Definitions
-----------

.. toctree::
:maxdepth: 1

theory/spherical_harmonic_definition


Classes
-------

.. toctree::
:maxdepth: 1

classes/spharpy.spherical_harmonics
classes/spharpy.audio
classes/spharpy.coordinates

Modules
-------

.. toctree::
:maxdepth: 1

modules/spharpy.beamforming
modules/spharpy.indexing
modules/spharpy.interpolate
modules/spharpy.plot
modules/spharpy.samplings
modules/spharpy.spatial
modules/spharpy.special
modules/spharpy.spherical
modules/spharpy.transforms

Expand Down
26 changes: 26 additions & 0 deletions docs/classes/spharpy.audio.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
Audio (Signal, TimeData, FrequencyData)
---------------------------------------
.. automodule:: spharpy.classes.audio

**Classes:**

.. autosummary::

SphericalHarmonicFrequencyData
SphericalHarmonicTimeData
SphericalHarmonicSignal

.. autoclass:: spharpy.SphericalHarmonicSignal
:members:
:undoc-members:
:inherited-members:

.. autoclass:: spharpy.SphericalHarmonicTimeData
:members:
:undoc-members:
:inherited-members:

.. autoclass:: spharpy.SphericalHarmonicFrequencyData
:members:
:undoc-members:
:inherited-members:
9 changes: 9 additions & 0 deletions docs/classes/spharpy.coordinates.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
SamplingSphere
--------------

.. automodule:: spharpy.classes.coordinates

.. autoclass:: spharpy.SamplingSphere
:members:
:undoc-members:
:inherited-members:
21 changes: 21 additions & 0 deletions docs/classes/spharpy.spherical_harmonics.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
SphericalHarmonics
------------------

.. automodule:: spharpy.classes.sh

**Classes:**

.. autosummary::

SphericalHarmonicDefinition
SphericalHarmonics

.. autoclass:: spharpy.SphericalHarmonicDefinition
:members:
:undoc-members:
:inherited-members:

.. autoclass:: spharpy.SphericalHarmonics
:members:
:undoc-members:
:inherited-members:
Loading
Loading