echopose-sdk 0.1.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- echopose_sdk-0.1.0/PKG-INFO +35 -0
- echopose_sdk-0.1.0/README.md +20 -0
- echopose_sdk-0.1.0/pyproject.toml +35 -0
- echopose_sdk-0.1.0/setup.cfg +4 -0
- echopose_sdk-0.1.0/src/echopose_sdk/__init__.py +6 -0
- echopose_sdk-0.1.0/src/echopose_sdk/cli.py +25 -0
- echopose_sdk-0.1.0/src/echopose_sdk/quality.py +16 -0
- echopose_sdk-0.1.0/src/echopose_sdk/validation.py +22 -0
- echopose_sdk-0.1.0/src/echopose_sdk.egg-info/PKG-INFO +35 -0
- echopose_sdk-0.1.0/src/echopose_sdk.egg-info/SOURCES.txt +12 -0
- echopose_sdk-0.1.0/src/echopose_sdk.egg-info/dependency_links.txt +1 -0
- echopose_sdk-0.1.0/src/echopose_sdk.egg-info/entry_points.txt +2 -0
- echopose_sdk-0.1.0/src/echopose_sdk.egg-info/requires.txt +1 -0
- echopose_sdk-0.1.0/src/echopose_sdk.egg-info/top_level.txt +1 -0
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: echopose-sdk
|
|
3
|
+
Version: 0.1.0
|
|
4
|
+
Summary: EchoPose utilities for WiFi CSI pose ingestion, quality scoring, and replay tooling
|
|
5
|
+
Author: EchoPose Contributors
|
|
6
|
+
License: MIT
|
|
7
|
+
Project-URL: Homepage, https://github.com/shaz-in-dev/EchoPose
|
|
8
|
+
Project-URL: Issues, https://github.com/shaz-in-dev/EchoPose/issues
|
|
9
|
+
Classifier: Programming Language :: Python :: 3
|
|
10
|
+
Classifier: License :: OSI Approved :: MIT License
|
|
11
|
+
Classifier: Operating System :: OS Independent
|
|
12
|
+
Requires-Python: >=3.10
|
|
13
|
+
Description-Content-Type: text/markdown
|
|
14
|
+
Requires-Dist: numpy>=1.26.4
|
|
15
|
+
|
|
16
|
+
# echopose-sdk
|
|
17
|
+
|
|
18
|
+
Installable Python package for EchoPose helper tools.
|
|
19
|
+
|
|
20
|
+
Initial features:
|
|
21
|
+
- Validate CSI bundle shape.
|
|
22
|
+
- Compute simple confidence summary statistics.
|
|
23
|
+
- CLI entrypoint for quick checks.
|
|
24
|
+
|
|
25
|
+
## Development Install
|
|
26
|
+
|
|
27
|
+
```bash
|
|
28
|
+
pip install -e .
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
## CLI
|
|
32
|
+
|
|
33
|
+
```bash
|
|
34
|
+
echopose-sdk --help
|
|
35
|
+
```
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
# echopose-sdk
|
|
2
|
+
|
|
3
|
+
Installable Python package for EchoPose helper tools.
|
|
4
|
+
|
|
5
|
+
Initial features:
|
|
6
|
+
- Validate CSI bundle shape.
|
|
7
|
+
- Compute simple confidence summary statistics.
|
|
8
|
+
- CLI entrypoint for quick checks.
|
|
9
|
+
|
|
10
|
+
## Development Install
|
|
11
|
+
|
|
12
|
+
```bash
|
|
13
|
+
pip install -e .
|
|
14
|
+
```
|
|
15
|
+
|
|
16
|
+
## CLI
|
|
17
|
+
|
|
18
|
+
```bash
|
|
19
|
+
echopose-sdk --help
|
|
20
|
+
```
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
[build-system]
|
|
2
|
+
requires = ["setuptools>=68", "wheel"]
|
|
3
|
+
build-backend = "setuptools.build_meta"
|
|
4
|
+
|
|
5
|
+
[project]
|
|
6
|
+
name = "echopose-sdk"
|
|
7
|
+
version = "0.1.0"
|
|
8
|
+
description = "EchoPose utilities for WiFi CSI pose ingestion, quality scoring, and replay tooling"
|
|
9
|
+
readme = "README.md"
|
|
10
|
+
requires-python = ">=3.10"
|
|
11
|
+
authors = [
|
|
12
|
+
{name = "EchoPose Contributors"}
|
|
13
|
+
]
|
|
14
|
+
license = {text = "MIT"}
|
|
15
|
+
classifiers = [
|
|
16
|
+
"Programming Language :: Python :: 3",
|
|
17
|
+
"License :: OSI Approved :: MIT License",
|
|
18
|
+
"Operating System :: OS Independent"
|
|
19
|
+
]
|
|
20
|
+
dependencies = [
|
|
21
|
+
"numpy>=1.26.4"
|
|
22
|
+
]
|
|
23
|
+
|
|
24
|
+
[project.urls]
|
|
25
|
+
Homepage = "https://github.com/shaz-in-dev/EchoPose"
|
|
26
|
+
Issues = "https://github.com/shaz-in-dev/EchoPose/issues"
|
|
27
|
+
|
|
28
|
+
[project.scripts]
|
|
29
|
+
echopose-sdk = "echopose_sdk.cli:main"
|
|
30
|
+
|
|
31
|
+
[tool.setuptools]
|
|
32
|
+
package-dir = {"" = "src"}
|
|
33
|
+
|
|
34
|
+
[tool.setuptools.packages.find]
|
|
35
|
+
where = ["src"]
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
import argparse
|
|
4
|
+
import json
|
|
5
|
+
from pathlib import Path
|
|
6
|
+
|
|
7
|
+
from .validation import validate_bundle
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
def main() -> None:
|
|
11
|
+
parser = argparse.ArgumentParser(description="echopose-sdk utilities")
|
|
12
|
+
parser.add_argument("--bundle", type=Path, help="Path to CSI bundle JSON")
|
|
13
|
+
args = parser.parse_args()
|
|
14
|
+
|
|
15
|
+
if not args.bundle:
|
|
16
|
+
parser.print_help()
|
|
17
|
+
return
|
|
18
|
+
|
|
19
|
+
payload = json.loads(args.bundle.read_text(encoding="utf-8"))
|
|
20
|
+
ok, msg = validate_bundle(payload)
|
|
21
|
+
print(json.dumps({"valid": ok, "reason": msg}))
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
if __name__ == "__main__":
|
|
25
|
+
main()
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
from typing import Dict, Iterable
|
|
4
|
+
|
|
5
|
+
import numpy as np
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
def summarize_confidence(confidences: Iterable[float]) -> Dict[str, float]:
|
|
9
|
+
arr = np.asarray(list(confidences), dtype=np.float32)
|
|
10
|
+
if arr.size == 0:
|
|
11
|
+
return {"mean": 0.0, "min": 0.0, "max": 0.0}
|
|
12
|
+
return {
|
|
13
|
+
"mean": float(np.mean(arr)),
|
|
14
|
+
"min": float(np.min(arr)),
|
|
15
|
+
"max": float(np.max(arr)),
|
|
16
|
+
}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
from typing import Any, Dict, List, Tuple
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
def validate_bundle(bundle: Dict[str, Any], expected_nodes: int = 3, expected_subcarriers: int = 64) -> Tuple[bool, str]:
|
|
7
|
+
frames: List[Dict[str, Any]] = bundle.get("frames", [])
|
|
8
|
+
if not frames:
|
|
9
|
+
return False, "bundle has no frames"
|
|
10
|
+
|
|
11
|
+
nodes = set()
|
|
12
|
+
for frame in frames:
|
|
13
|
+
if "node_id" not in frame or "amplitudes" not in frame:
|
|
14
|
+
return False, "frame missing node_id or amplitudes"
|
|
15
|
+
amps = frame["amplitudes"]
|
|
16
|
+
if not isinstance(amps, list) or len(amps) != expected_subcarriers:
|
|
17
|
+
return False, "invalid amplitudes length"
|
|
18
|
+
nodes.add(frame["node_id"])
|
|
19
|
+
|
|
20
|
+
if len(nodes) > expected_nodes:
|
|
21
|
+
return False, "too many nodes for configured topology"
|
|
22
|
+
return True, "ok"
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: echopose-sdk
|
|
3
|
+
Version: 0.1.0
|
|
4
|
+
Summary: EchoPose utilities for WiFi CSI pose ingestion, quality scoring, and replay tooling
|
|
5
|
+
Author: EchoPose Contributors
|
|
6
|
+
License: MIT
|
|
7
|
+
Project-URL: Homepage, https://github.com/shaz-in-dev/EchoPose
|
|
8
|
+
Project-URL: Issues, https://github.com/shaz-in-dev/EchoPose/issues
|
|
9
|
+
Classifier: Programming Language :: Python :: 3
|
|
10
|
+
Classifier: License :: OSI Approved :: MIT License
|
|
11
|
+
Classifier: Operating System :: OS Independent
|
|
12
|
+
Requires-Python: >=3.10
|
|
13
|
+
Description-Content-Type: text/markdown
|
|
14
|
+
Requires-Dist: numpy>=1.26.4
|
|
15
|
+
|
|
16
|
+
# echopose-sdk
|
|
17
|
+
|
|
18
|
+
Installable Python package for EchoPose helper tools.
|
|
19
|
+
|
|
20
|
+
Initial features:
|
|
21
|
+
- Validate CSI bundle shape.
|
|
22
|
+
- Compute simple confidence summary statistics.
|
|
23
|
+
- CLI entrypoint for quick checks.
|
|
24
|
+
|
|
25
|
+
## Development Install
|
|
26
|
+
|
|
27
|
+
```bash
|
|
28
|
+
pip install -e .
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
## CLI
|
|
32
|
+
|
|
33
|
+
```bash
|
|
34
|
+
echopose-sdk --help
|
|
35
|
+
```
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
README.md
|
|
2
|
+
pyproject.toml
|
|
3
|
+
src/echopose_sdk/__init__.py
|
|
4
|
+
src/echopose_sdk/cli.py
|
|
5
|
+
src/echopose_sdk/quality.py
|
|
6
|
+
src/echopose_sdk/validation.py
|
|
7
|
+
src/echopose_sdk.egg-info/PKG-INFO
|
|
8
|
+
src/echopose_sdk.egg-info/SOURCES.txt
|
|
9
|
+
src/echopose_sdk.egg-info/dependency_links.txt
|
|
10
|
+
src/echopose_sdk.egg-info/entry_points.txt
|
|
11
|
+
src/echopose_sdk.egg-info/requires.txt
|
|
12
|
+
src/echopose_sdk.egg-info/top_level.txt
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
numpy>=1.26.4
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
echopose_sdk
|