Gi-z / CSIKit

Python CSI processing and visualisation tools for Atheros, Intel, Nexmon, ESP32, FeitCSI, and PicoScenes (USRP, etc) formats.
https://Gi-z.github.io/CSIKit/
MIT License
207 stars 52 forks source link

Remove dependency on scikit-learn. #18

Closed FredeJ closed 3 years ago

FredeJ commented 3 years ago

It appears to not be used and is giving me issues when deploying CSIKit to Raspberry Pi.

I cannot find any reference to this package anywhere in the code. Am I not looking hard enough or is it indeed superfluous?

Gi-z commented 3 years ago

I haven't tested installation on a Pi in quite a while, however I just tried it again, failing at the numba build stage. To get scikit-learn installed, I installed the latest version from piwheels with: pip3 install scikit-learn --index-url https://piwheels.org/simple.

The dependency is not superfluous. scikit-learn is seen as scipy in the codebase. It is used fairly heavily throughout the filtering utilities and for parsing matlab matrices for consistency testing. That said, I can understand why users probably would prefer just the core parsing functionality. I was considering conditional dependencies to enable installation on all platforms with reduced features where necessary. This should probably be expedited, since the installation is quite heavy right now.

The main issue preventing building on a Raspberry Pi will be the numba dependency, which requires llvm-lite to be statically linked for the given wheel. Numba is used for JIT compiling for repetitive functions dealing with binary data which are quite slow in native Python. There are armv7 distributions which go through conda for numba, however I'm not particularly familiar with conda.