<commit_before># SOFiA-py
SOFiA-py is a Python port of the [Sound Field Analysis Toolbox (SOFiA) toolbox](http://audiogroup.web.th-koeln.de/SOFiA_wiki/WELCOME.html), originally by <NAME>[<sup>[1]</sup>](#references). The main goal of the SOFiA toolbox is to analyze, visualize and process soundfield data recorded by spherical microphone arrays. Furthermore, various types of testdata may be generated to evaluate the implemented functions.

The package is pure python and PEP8 compliant (except line-length). As the port is ongoing, no serious attempts at speed optimization have been made, please expect things to be slow for now.

## Requirements
The following external libraries are required to use most of the supplied functions:
- [NumPy](http://www.numpy.org)
- [SciPy](http://www.scipy.org)
- [matplotlib](http://matplotlib.org) (for 2D plotting)
- [vispy](http://vispy.org) (for 3D plotting)

## Overview
- `gen` contains functions to generate data:
    - `wgc`: Wave Generator
    - `mf`: Modal Radial Filter Generator
    - `lebedev`: Lebedev Quadrature
    - `swg`: Sampled Wave Generator
-  `process` contains processing functions:
    - `pdc`: Plane Wave Decomposition
    - `tdt`: Time Domain Reconstruction
    - `stc`: Fast Spatial Fourier Transform
    - `itc`: Fast Inverse Spatial Fourier Transform
- `plot` contains function for visualization:
    -  `makeMTX`: Generate 3D-matrix data
    -  `visualize3D`: Draw matrix data in 3D
-  `sph` contains helper functions for dealing with spherical harmonics:
    - `sph_harm`: More robust spherical harmonic coefficients
    -  `spbessel` / `dspbessel`: Spherical Bessel and derivative
    - `spneumann` / `dspneumann`: Spherical Neumann (Bessel 2nd kind) and derivative
    - `sphankel` / `dsphankel`: Spherical Hankel and derivative
    - `cart2sph` / `sph2cart`: Convert cartesion to spherical coordinates and vice versa


## Working examples
## AE1: Ideal Plane Wave
Ideal unity plane wave simulation and 3D plot.
#### Colorized 3D scatter:
![AE1_IdealPlaneWave colored scatter](img/AE1_cscatter.png?raw=true "AE1_IdealPlaneWave colored scatter")
#### Shape-based visualization:
![AE1_IdealPlaneWave shape](img/AE1_shape.png?raw=true "AE1_IdealPlaneWave shape")

## AE2: Sampled Plane Wave
Sampled unity plane wave simulation for different kr

![AE2_SampledPlaneWave](img/AE2_grid.png?raw=true "AE2_SampledPlaneWave")

### AE6: Impulse response of ideal plane wave
Impulse Response reconstruction on a simulated ideal unity plane wave

![AE6_IdealPlaneWave_ImpResp result](img/AE6_IdealPlaneWave_ImpResp.png?raw=true "AE6_IdealPlaneWave_ImpResp result")

### AE7: Impulse response of sampled plane wave
Impulse response reconstruction on a simulated sampled unity plane wave

![AE7_SampledPlaneWave_ImpResp result](img/AE7_SampledPlaneWave_ImpResp.png?raw=true "AE7_SampledPlaneWave_ImpResp result")

## Contact
SOFiA-py is under development by <NAME> (`firstname.lastname[at]qu.tu-berlin.de`) as part of the [Artificial Reverberation for Sound Field Synthesis](https://www.qu.tu-berlin.de/menue/forschung/laufende_projekte/artificial_reverberation_for_sound_field_synthesis_dfg/) project at the [Quality and Usability Lab](https://www.qu.tu-berlin.de) of the TU Berlin.

## References<commit_msg>Point to new documentation<commit_after># SOFiA-py
SOFiA-py is a Python port of the [Sound Field Analysis Toolbox (SOFiA) toolbox](http://audiogroup.web.th-koeln.de/SOFiA_wiki/WELCOME.html), originally by <NAME>[<sup>[1]</sup>](#references). The main goal of the SOFiA toolbox is to analyze, visualize and process soundfield data recorded by spherical microphone arrays. Furthermore, various types of testdata may be generated to evaluate the implemented functions.

The package is pure python and PEP8 compliant (except line-length). As the port is ongoing, no serious attempts at speed optimization have been made, please expect things to be slow for now.

## Requirements
The following external libraries are required to use most of the supplied functions:
- [NumPy](http://www.numpy.org)
- [SciPy](http://www.scipy.org)
- [matplotlib](http://matplotlib.org) (for 2D plotting)
- [vispy](http://vispy.org) (for 3D plotting)

## Documentation
Please find the full documentation at https://qulab.github.io/sofia-py/!

## Working examples
## AE1: Ideal Plane Wave
Ideal unity plane wave simulation and 3D plot.
#### Colorized 3D scatter:
![AE1_IdealPlaneWave colored scatter](img/AE1_cscatter.png?raw=true "AE1_IdealPlaneWave colored scatter")
#### Shape-based visualization:
![AE1_IdealPlaneWave shape](img/AE1_shape.png?raw=true "AE1_IdealPlaneWave shape")

## AE2: Sampled Plane Wave
Sampled unity plane wave simulation for different kr

![AE2_SampledPlaneWave](img/AE2_grid.png?raw=true "AE2_SampledPlaneWave")

### AE6: Impulse response of ideal plane wave
Impulse Response reconstruction on a simulated ideal unity plane wave

![AE6_IdealPlaneWave_ImpResp result](img/AE6_IdealPlaneWave_ImpResp.png?raw=true "AE6_IdealPlaneWave_ImpResp result")

### AE7: Impulse response of sampled plane wave
Impulse response reconstruction on a simulated sampled unity plane wave

![AE7_SampledPlaneWave_ImpResp result](img/AE7_SampledPlaneWave_ImpResp.png?raw=true "AE7_SampledPlaneWave_ImpResp result")

## Contact
SOFiA-py is under development by <NAME> (`firstname.lastname[at]qu.tu-berlin.de`) as part of the [Artificial Reverberation for Sound Field Synthesis](https://www.qu.tu-berlin.de/menue/forschung/laufende_projekte/artificial_reverberation_for_sound_field_synthesis_dfg/) project at the [Quality and Usability Lab](https://www.qu.tu-berlin.de) of the TU Berlin.

## References
{'fraction_non_alphanumeric': 0.09702549575070822, 'fraction_numerical': 0.009915014164305949, 'mean_word_length': 5.448630136986301, 'pattern_counts': {'":': 0, '<': 11, '<?xml version=': 0, '>': 11, 'https://': 5, 'lorem ipsum': 0, 'www.': 8, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '3559951', 'n_tokens_mistral': 1913, 'n_tokens_neox': 1750, 'n_words': 560}