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.
RotationSHhas been re-designed. Changes includeRotationSHhas been renamed toSphericalHarmonicRotation- The class no longer inherits from
scipy.spatial.transform.Rotation, instead it inherits frompyfar.Rotation, which is based onscipy.spatial.transform.Rotationusing composition. This was necessary due to the re-write ofscipy.spatial.transform.Rotationin scipy v1.17.0. - The class no longer stores spherical harmonic orders, instead a
SphericalHarmonicDefinitionobject is required when calling the respective class method to calculate the spherical harmonic rotation matrix.
- Removed the class
spharpy.samplings.Coordinates. Instead, refer topyfar.Coordinatesfor storing coordinates. All functions which previously usedspharpy.samplings.Coordinatesnow usepyfar.Coordinates. spharpy.SamplingSpherehas 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
indexingmodule has been removed, and the functionality has been moved to thesphericalmodule.- In
spharpy.spherical.sph_identity_matrixthe argumenttypehas been renamed tomatrix_typeto avoid conflict with the built-intypefunction.
- In
- In the
sphericalmodule, the functionsacn2nmandnm2acnhave been renamed toacn_to_nmandnm_to_acn, respectively.
- The
spharpy.plotmodule has been re-written and now has a more consistent API with thepyfar.plotmodule- Added support for pyfar's plot styles.
- Add support for always passing and returning
matplotlib.axes.Axesobjects to all plotting functions, which allows for more flexible plotting and composition of plots. - Always return matplotlib
Colorbarand mappables for each plot, which is consistent with thepyfar.plotmodule. - 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.griddataor similar functions before plotting if necessary.
- The
spharpy.samplingsmodule has been re-writtenspharpy.samplings.cube_equidistandhas been renamed tospharpy.samplings.equidistant_cuboidspherical_t_designhas been renamed tot_designequalareahas been renamed toequal_area- All functions now return a refactored
spharpy.SamplingSphereobject. - In the
spharpy.samplings.utilsmodule, the helper functionscart2sph,latlon2cart, andsph2carthave been removed, since they were moved topyfar. - The function
spharpy.samplings.utils.cart2latlonhas been refactored to use apyfar.Coordinates(or child class) object as input instead of an array containing cartesian coordinates.
- Removed support for Python 3.10 and earlier.
- Require pyfar >= 0.8.0.
- Require scipy >= 1.17.0.
- The
specialandspatialsub-modules are now directly imported asspharpy.specialandspharpy.spatial. - Extended documentation and added examples for all functions in the following modules
beamformingspatialinterpolatespecialspherical
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. Forspharpy.SamplingSpherethe class also calculates inverse basis matrices.spharpy.SphericalHarmonicSignal,spharpy.SphericalHarmonicFrequencyData, andspharpy.SphericalHarmonicTimeData: classes to store audio data in the spherical harmonic domain. These classes are derived frompyfar.Signal,pyfar.FrequencyData, andpyfar.TimeDatarespectively, 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.sphericalmodule:- normalizations (N3D, SN3D, NM, SNM, and maxN),
- the Condon-Shortley phase convention,
- the ACN and FuMa channel ordering convention.
- Added
spharpy.spherical.renormalizefunction to convert between different spherical harmonic normalization schemes. - Added
spharpy.spherical.change_channel_conventionto convert between different channel ordering conventions. - Added functions
nm_to_fumaandfuma_to_nmto convert to and from FuMa channel ordering - Shared plot preparation in the
spharpy.plotmodule, 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.lebedevspharpy.samplings.equal_anglespharpy.samplings.great_circlespharpy.samplings.fliege
- Added a read-only property
spharpy.SamplingSphere.quadraturewhich can be used to check if the sampling is a valid quadrature grid.
- Extended documentation and added examples for all functions in the following modules: - beamforming, - spatial, - interpolate, - special, - spherical,
- Remove support for Python 3.8. (PR #111)
- Require matplotlib >= v3.10.3 for properly working contour map plots. (PR #117)
- Require scipy < v1.17.0 due to the deprecations of scipy.special.sph_harm and related functions. (PR #180)
- Minor updates to documentation and package info. (PRs #112, #130, #144)
- Added sampling for the eigenmike em64 (PR #84)
- Updated requirements to pyfar <v0.8.0
- Minor numpy deprecation updates (PR #88,107)
- Updated to toml based definition, as well as updates to docs (PR #105)
- Update of the documentation theme and adaption of the new example gallery, no changes to the code base.
This is the last minor release of spharpy before full integration into the pyfar ecosystem. The next release will be version 1.0.0 which will depend on pyfar >= 0.6.0 and rely on pyfar's pyfar.Coordinates class as a replacement for spharpy's spharpy.samplings.Coordinates class.
Changes:
- Add normalization for distortionless response beamforming weights (PR #30)
- Minor refactoring in beamforming weight calculations (PR #30)
- Change dependency to pyfar versions < 0.6.0 (PR #35)
- Adaptations to the repository move to pyfar/spharpy (PR #32)
- Introduce support for pyfar.Coordinates alongside spharpy's implementation (PR #24). This is the initial step of a full transition in future versions.
- Minor refactorings of tests (PR #25)
- Updates to the documentation (PR #26)
- Bugfix: Round values smaller than eps in sph2cart (PR #27)
- Bugfix: Replace deprecated numpy wrappers for built-in python types (PR #20)
- Refactor axes handling in plots, required as getting the current axis while specifying a specific projection is deprecated (PR #21)
- Drop support for Python 3.7 (PR #23)
- Bugfix for the aperture function of vibrating spherical caps
- SH Rotation class derived from scipy rotations
- Implement Wigner-D Rotations
- SmoothBivariateSpline Interpolation on the sphere
- New phase colormap for balloon plots
- Switch to CircleCI for unit-testing
- Updated readthedocs.org
- Minor documentation fixes and flake8 consistency changes
- Replace broken link in hyperinterpolation sampling download.
- Bugfix in modal strength calculation for rigid spheres
- Update equal area partitioning documentation
- Removed C extensions for spherical harmonics and special functions
- Spherical harmonic basis gradient
- Interior point sampling for eigenvalue stabilization
- Weight calculation for beamforming algorithms
- Added more map projection plots and map data interpolation
- Several bugfixes for plot functions
- Last release version with C extension
- Refactored C extensions with OpenMP support
- Sampling class
- Spherical Voronoi diagrams
- Added Geocentric to Cartesian coordinate transform
- Added Coordinate class object
- New plot functions
- Bugfixes
- First release