summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCoprDistGit <infra@openeuler.org>2023-05-29 11:21:43 +0000
committerCoprDistGit <infra@openeuler.org>2023-05-29 11:21:43 +0000
commitb9c84e1045d103f89016c0507df891ec7e6cecaf (patch)
tree29791c1ec0526c3c3a3f7419cf4698b010ae136d
parentce830477e80ac950c12448ea39e4d75a8576e424 (diff)
automatic import of python-csiread
-rw-r--r--.gitignore1
-rw-r--r--python-csiread.spec429
-rw-r--r--sources1
3 files changed, 431 insertions, 0 deletions
diff --git a/.gitignore b/.gitignore
index e69de29..1020990 100644
--- a/.gitignore
+++ b/.gitignore
@@ -0,0 +1 @@
+/csiread-1.4.0.tar.gz
diff --git a/python-csiread.spec b/python-csiread.spec
new file mode 100644
index 0000000..568a1ed
--- /dev/null
+++ b/python-csiread.spec
@@ -0,0 +1,429 @@
+%global _empty_manifest_terminate_build 0
+Name: python-csiread
+Version: 1.4.0
+Release: 1
+Summary: A **fast** channel state information parser for Intel, Atheros, Nexmon, ESP32 and PicoScenes in Python.
+License: MIT
+URL: https://github.com/citysu/csiread
+Source0: https://mirrors.nju.edu.cn/pypi/web/packages/24/d6/086786333b83ea32f67e4c3b067331ba69e56d6b4e82bfac106d43eac58f/csiread-1.4.0.tar.gz
+
+Requires: python3-numpy
+
+%description
+# csiread [![PyPI](https://img.shields.io/pypi/v/csiread?)](https://pypi.org/project/csiread/)
+
+A **fast** channel state information parser for Intel, Atheros, Nexmon, ESP32 and PicoScenes in Python.
+
+- Full support for [Linux 802.11n CSI Tool](https://dhalperi.github.io/linux-80211n-csitool/), [Atheros CSI Tool](https://wands.sg/research/wifi/AtherosCSI/), [nexmon_csi](https://github.com/seemoo-lab/nexmon_csi) and [ESP32-CSI-Tool](https://github.com/StevenMHernandez/ESP32-CSI-Tool)
+- Support for [PicoScenes](https://ps.zpj.io) is **experimental**.
+- At least 15 times faster than the implementation in Matlab
+- Real-time parsing and visualization.
+
+<center><b>real-time plotting</b></center>
+
+![real-time plotting](https://github.com/citysu/csiread/blob/master/docs/sample2.png)
+
+## Introduction
+
+Various CSI Tools only provide Matlab API parsing CSI data files. Those who want to process CSI with Python have to install Matlab to convert `.dat` to `.mat`. This process is redundant and inefficient. Therefore, **Python API** is recommended. Unfortunately, the API implemented in pure Python is inefficient. With this in mind, I implemented csiread in Cython(Pybind11 may be another great choice). The table below shows the performance of different implementations. They were all tested with **40k** packets on the same computer.
+
+| Function | Matlab | Python3+Numpy | csiread | file size |
+|-------------------------|----------|---------------|------------|-----------|
+| Nexmon.read:bcm4339 | 3.2309s | 0.2739s | 0.0703s | 44.0MB |
+| Nexmon.read:bcm4358 | 3.5987s | 23.0025s | 0.1227s | 44.0MB |
+| Atheros.read | 3.3081s | 14.6021s | 0.0956s | 76.3MB |
+| Intel.read | 1.6102s | 7.6624s | 0.0479s | 21.0MB |
+| Intel.get_total_rss | 0.1786s | 0.0030s | 0.0030s | |
+| Intel.get_scaled_csi | 0.5497s | 0.1225s | 0.0376s/0.0278s | |
+| Intel.get_scaled_csi_sm | 5.0097s | 0.3627s | 0.0778s/0.0465s | |
+
+This tool is not only the translation of the Matlab API, but also a **CSI toolbox**. I added some utilities, real-time visualization and algorithms code in the `examples` folder. These would be useful for Python-based CSI researchers.
+
+## Install
+
+```bash
+pip3 install csiread
+```
+
+## Quickstart
+
+```python
+import csiread
+
+# Linux 802.11n CSI Tool
+csifile = "../material/5300/dataset/sample_0x1_ap.dat"
+csidata = csiread.Intel(csifile, nrxnum=3, ntxnum=2, pl_size=10)
+csidata.read()
+csi = csidata.get_scaled_csi()
+print(csidata.csi.shape)
+
+# Atheros CSI Tool
+csifile = "../material/atheros/dataset/ath_csi_1.dat"
+csidata = csiread.Atheros(csifile, nrxnum=3, ntxnum=2, pl_size=10, tones=56)
+csidata.read(endian='little')
+print(csidata.csi.shape)
+
+# nexmon_csi
+csifile = "../material/nexmon/dataset/example.pcap"
+csidata = csiread.Nexmon(csifile, chip='4358', bw=80)
+csidata.read()
+print(csidata.csi.shape)
+
+# ESP32-CSI-Tool
+csifile = "../material/esp32/dataset/example_csi.csv"
+csidata = csiread.ESP32(csifile, csi_only=True)
+csidata.read()
+print(csidata.csi.shape)
+
+# PicoScenes
+csifile = "../material/picoscenes/dataset/rx_by_iwl5300.csi"
+csidata = csiread.Picoscenes(csifile, {'CSI': [30, 3, 2], 'MPDU': 1522})
+csidata.read()
+csidata.check()
+print(csidata.raw['CSI']['CSI'].shape)
+```
+
+`examples` are the best usage instructions. The API documentation can be found in `docstring` of file `core.py`, so we won't repeat them here.
+
+## Build from source
+
+```bash
+cd csiread
+pip3 install -r requirements.txt
+python3 setup.py sdist bdist_wheel
+pip3 install -U dist/csiread*.whl
+```
+
+`*` is a shell wildcard. After running `python3 setup.py sdist bdist_wheel`,there will be a wheel file like `csiread-1.3.4-cp36-cp36m-win_amd64.whl` in the `dist` folder. Replace `csiread*.whl` with it.
+
+csiread is written in Cython, Cython requires a C compiler to be present on the system. You can refer to [Installing Cython](https://cython.readthedocs.io/en/latest/src/quickstart/install.html) for more details. If you don't want to install a C compiler, just fork the project and push a tag to the latest commit. Then wheel files can be found in `Github-Actions-Python package-Artifacts: csiread_dist`
+
+## Design
+
+csiread provides 7 classes: `Intel, Atheros, Nexmon, AtherosPull10, NexmonPull46, ESP32 and Picoscenes`. Each class has 4 key methods: `read(), seek()`, `pmsg()` and `display()` which are used for reading a file, reading a file from a specific position, real-time parsing and viewing the contents of a packet respectively. `csiread.utils` provides some common functions.
+
+### Nexmon CSI
+
+- `csiread.Nexmon` is based on the commit of nexmon_csi(Aug 29, 2020): `ba99ce12a6a42d7e4ec75e6f8ace8f610ed2eb60`
+- `csiread.NexmonPull256` is the same as `csiread.NexmonPull46`. It works with the latest master branch (Dec 11, 2021): `c037576b7035619e2716229c7622f4e8c511635f`
+- The `Nexmon.group` is experimental, it may be incorrect due to `core` and `spatial`. `core` and `spatial` are ZERO or not recorded correctly in some files. I don't know how to solve it.
+
+### ESP32-CSI-Tool
+
+- `pandas.read_csv` and `csiread.ESP32` have the similar performance, but `pandas.read_csv` is much more flexible.
+
+### PicoScenes
+
+The support for Picoscenes is an **experimental** feature. PicoScenes is still under active development, csiread cannot be updated synchronously.
+
+- `csidata.raw` is a [structured array](https://numpy.org/doc/stable/user/basics.rec.html#structured-arrays) in numpy and stores the parsed result.
+- `Mag` and `Phase` fileds have been removed, use `np.abs` and `np.angle` instead.
+- Call `check()` method after `read()`, Then set `pl_size` according to the report.
+- Edge padding are applied to `raw["xxx"]["SubcarrierIndex"]` for plotting.
+- The method `pmsg` has been implemented, but not yet ready.
+- Accessing CSI like `csidata.CSI.CSI` is only available after calling `read` method.
+- 5-10 times faster than before
+- `parseCSIMVM(...)` in `_picoscenes.pyx` may be incorrect.
+
+`csiread.Picoscenes` is based on the PicoScenes MATLAB Toolbox(PMT)(Last modified at 2022-01-21).
+
+
+
+
+%package -n python3-csiread
+Summary: A **fast** channel state information parser for Intel, Atheros, Nexmon, ESP32 and PicoScenes in Python.
+Provides: python-csiread
+BuildRequires: python3-devel
+BuildRequires: python3-setuptools
+BuildRequires: python3-pip
+BuildRequires: python3-cffi
+BuildRequires: gcc
+BuildRequires: gdb
+%description -n python3-csiread
+# csiread [![PyPI](https://img.shields.io/pypi/v/csiread?)](https://pypi.org/project/csiread/)
+
+A **fast** channel state information parser for Intel, Atheros, Nexmon, ESP32 and PicoScenes in Python.
+
+- Full support for [Linux 802.11n CSI Tool](https://dhalperi.github.io/linux-80211n-csitool/), [Atheros CSI Tool](https://wands.sg/research/wifi/AtherosCSI/), [nexmon_csi](https://github.com/seemoo-lab/nexmon_csi) and [ESP32-CSI-Tool](https://github.com/StevenMHernandez/ESP32-CSI-Tool)
+- Support for [PicoScenes](https://ps.zpj.io) is **experimental**.
+- At least 15 times faster than the implementation in Matlab
+- Real-time parsing and visualization.
+
+<center><b>real-time plotting</b></center>
+
+![real-time plotting](https://github.com/citysu/csiread/blob/master/docs/sample2.png)
+
+## Introduction
+
+Various CSI Tools only provide Matlab API parsing CSI data files. Those who want to process CSI with Python have to install Matlab to convert `.dat` to `.mat`. This process is redundant and inefficient. Therefore, **Python API** is recommended. Unfortunately, the API implemented in pure Python is inefficient. With this in mind, I implemented csiread in Cython(Pybind11 may be another great choice). The table below shows the performance of different implementations. They were all tested with **40k** packets on the same computer.
+
+| Function | Matlab | Python3+Numpy | csiread | file size |
+|-------------------------|----------|---------------|------------|-----------|
+| Nexmon.read:bcm4339 | 3.2309s | 0.2739s | 0.0703s | 44.0MB |
+| Nexmon.read:bcm4358 | 3.5987s | 23.0025s | 0.1227s | 44.0MB |
+| Atheros.read | 3.3081s | 14.6021s | 0.0956s | 76.3MB |
+| Intel.read | 1.6102s | 7.6624s | 0.0479s | 21.0MB |
+| Intel.get_total_rss | 0.1786s | 0.0030s | 0.0030s | |
+| Intel.get_scaled_csi | 0.5497s | 0.1225s | 0.0376s/0.0278s | |
+| Intel.get_scaled_csi_sm | 5.0097s | 0.3627s | 0.0778s/0.0465s | |
+
+This tool is not only the translation of the Matlab API, but also a **CSI toolbox**. I added some utilities, real-time visualization and algorithms code in the `examples` folder. These would be useful for Python-based CSI researchers.
+
+## Install
+
+```bash
+pip3 install csiread
+```
+
+## Quickstart
+
+```python
+import csiread
+
+# Linux 802.11n CSI Tool
+csifile = "../material/5300/dataset/sample_0x1_ap.dat"
+csidata = csiread.Intel(csifile, nrxnum=3, ntxnum=2, pl_size=10)
+csidata.read()
+csi = csidata.get_scaled_csi()
+print(csidata.csi.shape)
+
+# Atheros CSI Tool
+csifile = "../material/atheros/dataset/ath_csi_1.dat"
+csidata = csiread.Atheros(csifile, nrxnum=3, ntxnum=2, pl_size=10, tones=56)
+csidata.read(endian='little')
+print(csidata.csi.shape)
+
+# nexmon_csi
+csifile = "../material/nexmon/dataset/example.pcap"
+csidata = csiread.Nexmon(csifile, chip='4358', bw=80)
+csidata.read()
+print(csidata.csi.shape)
+
+# ESP32-CSI-Tool
+csifile = "../material/esp32/dataset/example_csi.csv"
+csidata = csiread.ESP32(csifile, csi_only=True)
+csidata.read()
+print(csidata.csi.shape)
+
+# PicoScenes
+csifile = "../material/picoscenes/dataset/rx_by_iwl5300.csi"
+csidata = csiread.Picoscenes(csifile, {'CSI': [30, 3, 2], 'MPDU': 1522})
+csidata.read()
+csidata.check()
+print(csidata.raw['CSI']['CSI'].shape)
+```
+
+`examples` are the best usage instructions. The API documentation can be found in `docstring` of file `core.py`, so we won't repeat them here.
+
+## Build from source
+
+```bash
+cd csiread
+pip3 install -r requirements.txt
+python3 setup.py sdist bdist_wheel
+pip3 install -U dist/csiread*.whl
+```
+
+`*` is a shell wildcard. After running `python3 setup.py sdist bdist_wheel`,there will be a wheel file like `csiread-1.3.4-cp36-cp36m-win_amd64.whl` in the `dist` folder. Replace `csiread*.whl` with it.
+
+csiread is written in Cython, Cython requires a C compiler to be present on the system. You can refer to [Installing Cython](https://cython.readthedocs.io/en/latest/src/quickstart/install.html) for more details. If you don't want to install a C compiler, just fork the project and push a tag to the latest commit. Then wheel files can be found in `Github-Actions-Python package-Artifacts: csiread_dist`
+
+## Design
+
+csiread provides 7 classes: `Intel, Atheros, Nexmon, AtherosPull10, NexmonPull46, ESP32 and Picoscenes`. Each class has 4 key methods: `read(), seek()`, `pmsg()` and `display()` which are used for reading a file, reading a file from a specific position, real-time parsing and viewing the contents of a packet respectively. `csiread.utils` provides some common functions.
+
+### Nexmon CSI
+
+- `csiread.Nexmon` is based on the commit of nexmon_csi(Aug 29, 2020): `ba99ce12a6a42d7e4ec75e6f8ace8f610ed2eb60`
+- `csiread.NexmonPull256` is the same as `csiread.NexmonPull46`. It works with the latest master branch (Dec 11, 2021): `c037576b7035619e2716229c7622f4e8c511635f`
+- The `Nexmon.group` is experimental, it may be incorrect due to `core` and `spatial`. `core` and `spatial` are ZERO or not recorded correctly in some files. I don't know how to solve it.
+
+### ESP32-CSI-Tool
+
+- `pandas.read_csv` and `csiread.ESP32` have the similar performance, but `pandas.read_csv` is much more flexible.
+
+### PicoScenes
+
+The support for Picoscenes is an **experimental** feature. PicoScenes is still under active development, csiread cannot be updated synchronously.
+
+- `csidata.raw` is a [structured array](https://numpy.org/doc/stable/user/basics.rec.html#structured-arrays) in numpy and stores the parsed result.
+- `Mag` and `Phase` fileds have been removed, use `np.abs` and `np.angle` instead.
+- Call `check()` method after `read()`, Then set `pl_size` according to the report.
+- Edge padding are applied to `raw["xxx"]["SubcarrierIndex"]` for plotting.
+- The method `pmsg` has been implemented, but not yet ready.
+- Accessing CSI like `csidata.CSI.CSI` is only available after calling `read` method.
+- 5-10 times faster than before
+- `parseCSIMVM(...)` in `_picoscenes.pyx` may be incorrect.
+
+`csiread.Picoscenes` is based on the PicoScenes MATLAB Toolbox(PMT)(Last modified at 2022-01-21).
+
+
+
+
+%package help
+Summary: Development documents and examples for csiread
+Provides: python3-csiread-doc
+%description help
+# csiread [![PyPI](https://img.shields.io/pypi/v/csiread?)](https://pypi.org/project/csiread/)
+
+A **fast** channel state information parser for Intel, Atheros, Nexmon, ESP32 and PicoScenes in Python.
+
+- Full support for [Linux 802.11n CSI Tool](https://dhalperi.github.io/linux-80211n-csitool/), [Atheros CSI Tool](https://wands.sg/research/wifi/AtherosCSI/), [nexmon_csi](https://github.com/seemoo-lab/nexmon_csi) and [ESP32-CSI-Tool](https://github.com/StevenMHernandez/ESP32-CSI-Tool)
+- Support for [PicoScenes](https://ps.zpj.io) is **experimental**.
+- At least 15 times faster than the implementation in Matlab
+- Real-time parsing and visualization.
+
+<center><b>real-time plotting</b></center>
+
+![real-time plotting](https://github.com/citysu/csiread/blob/master/docs/sample2.png)
+
+## Introduction
+
+Various CSI Tools only provide Matlab API parsing CSI data files. Those who want to process CSI with Python have to install Matlab to convert `.dat` to `.mat`. This process is redundant and inefficient. Therefore, **Python API** is recommended. Unfortunately, the API implemented in pure Python is inefficient. With this in mind, I implemented csiread in Cython(Pybind11 may be another great choice). The table below shows the performance of different implementations. They were all tested with **40k** packets on the same computer.
+
+| Function | Matlab | Python3+Numpy | csiread | file size |
+|-------------------------|----------|---------------|------------|-----------|
+| Nexmon.read:bcm4339 | 3.2309s | 0.2739s | 0.0703s | 44.0MB |
+| Nexmon.read:bcm4358 | 3.5987s | 23.0025s | 0.1227s | 44.0MB |
+| Atheros.read | 3.3081s | 14.6021s | 0.0956s | 76.3MB |
+| Intel.read | 1.6102s | 7.6624s | 0.0479s | 21.0MB |
+| Intel.get_total_rss | 0.1786s | 0.0030s | 0.0030s | |
+| Intel.get_scaled_csi | 0.5497s | 0.1225s | 0.0376s/0.0278s | |
+| Intel.get_scaled_csi_sm | 5.0097s | 0.3627s | 0.0778s/0.0465s | |
+
+This tool is not only the translation of the Matlab API, but also a **CSI toolbox**. I added some utilities, real-time visualization and algorithms code in the `examples` folder. These would be useful for Python-based CSI researchers.
+
+## Install
+
+```bash
+pip3 install csiread
+```
+
+## Quickstart
+
+```python
+import csiread
+
+# Linux 802.11n CSI Tool
+csifile = "../material/5300/dataset/sample_0x1_ap.dat"
+csidata = csiread.Intel(csifile, nrxnum=3, ntxnum=2, pl_size=10)
+csidata.read()
+csi = csidata.get_scaled_csi()
+print(csidata.csi.shape)
+
+# Atheros CSI Tool
+csifile = "../material/atheros/dataset/ath_csi_1.dat"
+csidata = csiread.Atheros(csifile, nrxnum=3, ntxnum=2, pl_size=10, tones=56)
+csidata.read(endian='little')
+print(csidata.csi.shape)
+
+# nexmon_csi
+csifile = "../material/nexmon/dataset/example.pcap"
+csidata = csiread.Nexmon(csifile, chip='4358', bw=80)
+csidata.read()
+print(csidata.csi.shape)
+
+# ESP32-CSI-Tool
+csifile = "../material/esp32/dataset/example_csi.csv"
+csidata = csiread.ESP32(csifile, csi_only=True)
+csidata.read()
+print(csidata.csi.shape)
+
+# PicoScenes
+csifile = "../material/picoscenes/dataset/rx_by_iwl5300.csi"
+csidata = csiread.Picoscenes(csifile, {'CSI': [30, 3, 2], 'MPDU': 1522})
+csidata.read()
+csidata.check()
+print(csidata.raw['CSI']['CSI'].shape)
+```
+
+`examples` are the best usage instructions. The API documentation can be found in `docstring` of file `core.py`, so we won't repeat them here.
+
+## Build from source
+
+```bash
+cd csiread
+pip3 install -r requirements.txt
+python3 setup.py sdist bdist_wheel
+pip3 install -U dist/csiread*.whl
+```
+
+`*` is a shell wildcard. After running `python3 setup.py sdist bdist_wheel`,there will be a wheel file like `csiread-1.3.4-cp36-cp36m-win_amd64.whl` in the `dist` folder. Replace `csiread*.whl` with it.
+
+csiread is written in Cython, Cython requires a C compiler to be present on the system. You can refer to [Installing Cython](https://cython.readthedocs.io/en/latest/src/quickstart/install.html) for more details. If you don't want to install a C compiler, just fork the project and push a tag to the latest commit. Then wheel files can be found in `Github-Actions-Python package-Artifacts: csiread_dist`
+
+## Design
+
+csiread provides 7 classes: `Intel, Atheros, Nexmon, AtherosPull10, NexmonPull46, ESP32 and Picoscenes`. Each class has 4 key methods: `read(), seek()`, `pmsg()` and `display()` which are used for reading a file, reading a file from a specific position, real-time parsing and viewing the contents of a packet respectively. `csiread.utils` provides some common functions.
+
+### Nexmon CSI
+
+- `csiread.Nexmon` is based on the commit of nexmon_csi(Aug 29, 2020): `ba99ce12a6a42d7e4ec75e6f8ace8f610ed2eb60`
+- `csiread.NexmonPull256` is the same as `csiread.NexmonPull46`. It works with the latest master branch (Dec 11, 2021): `c037576b7035619e2716229c7622f4e8c511635f`
+- The `Nexmon.group` is experimental, it may be incorrect due to `core` and `spatial`. `core` and `spatial` are ZERO or not recorded correctly in some files. I don't know how to solve it.
+
+### ESP32-CSI-Tool
+
+- `pandas.read_csv` and `csiread.ESP32` have the similar performance, but `pandas.read_csv` is much more flexible.
+
+### PicoScenes
+
+The support for Picoscenes is an **experimental** feature. PicoScenes is still under active development, csiread cannot be updated synchronously.
+
+- `csidata.raw` is a [structured array](https://numpy.org/doc/stable/user/basics.rec.html#structured-arrays) in numpy and stores the parsed result.
+- `Mag` and `Phase` fileds have been removed, use `np.abs` and `np.angle` instead.
+- Call `check()` method after `read()`, Then set `pl_size` according to the report.
+- Edge padding are applied to `raw["xxx"]["SubcarrierIndex"]` for plotting.
+- The method `pmsg` has been implemented, but not yet ready.
+- Accessing CSI like `csidata.CSI.CSI` is only available after calling `read` method.
+- 5-10 times faster than before
+- `parseCSIMVM(...)` in `_picoscenes.pyx` may be incorrect.
+
+`csiread.Picoscenes` is based on the PicoScenes MATLAB Toolbox(PMT)(Last modified at 2022-01-21).
+
+
+
+
+%prep
+%autosetup -n csiread-1.4.0
+
+%build
+%py3_build
+
+%install
+%py3_install
+install -d -m755 %{buildroot}/%{_pkgdocdir}
+if [ -d doc ]; then cp -arf doc %{buildroot}/%{_pkgdocdir}; fi
+if [ -d docs ]; then cp -arf docs %{buildroot}/%{_pkgdocdir}; fi
+if [ -d example ]; then cp -arf example %{buildroot}/%{_pkgdocdir}; fi
+if [ -d examples ]; then cp -arf examples %{buildroot}/%{_pkgdocdir}; fi
+pushd %{buildroot}
+if [ -d usr/lib ]; then
+ find usr/lib -type f -printf "/%h/%f\n" >> filelist.lst
+fi
+if [ -d usr/lib64 ]; then
+ find usr/lib64 -type f -printf "/%h/%f\n" >> filelist.lst
+fi
+if [ -d usr/bin ]; then
+ find usr/bin -type f -printf "/%h/%f\n" >> filelist.lst
+fi
+if [ -d usr/sbin ]; then
+ find usr/sbin -type f -printf "/%h/%f\n" >> filelist.lst
+fi
+touch doclist.lst
+if [ -d usr/share/man ]; then
+ find usr/share/man -type f -printf "/%h/%f.gz\n" >> doclist.lst
+fi
+popd
+mv %{buildroot}/filelist.lst .
+mv %{buildroot}/doclist.lst .
+
+%files -n python3-csiread -f filelist.lst
+%dir %{python3_sitearch}/*
+
+%files help -f doclist.lst
+%{_docdir}/*
+
+%changelog
+* Mon May 29 2023 Python_Bot <Python_Bot@openeuler.org> - 1.4.0-1
+- Package Spec generated
diff --git a/sources b/sources
new file mode 100644
index 0000000..ba4759d
--- /dev/null
+++ b/sources
@@ -0,0 +1 @@
+561ffaea83f302bdc8cb5e65599fc0b5 csiread-1.4.0.tar.gz