Your Name 958fde9050 Refactor DataSource classes and enhance testing framework
- Removed outdated comments and documentation from CsvSessionSource and DemoSource classes.
- Introduced new unit tests for CsvSource and DataSource functionalities, ensuring robust validation of CSV loading and session handling.
- Added UI smoke tests to verify window instantiation and menu actions without hardware dependencies.
- Implemented VisionEngine tests to validate demo snapshots and alignment state logic.
2026-05-28 11:09:53 -07:00

Wafer Position Monitor (demo)

PySide6 desktop demo: load NanoBerry edge CSVs from MASTER_SD/, fit a wafer circle, show X / Y / theta offset and sigma vs a calibration baseline. No live camera required.

Stack: Python 3.11+, PySide6, NumPy.

Quick start

python3 -m venv .venv && source .venv/bin/activate
pip install -e .
wafer-user          # or: python src/wafer_edge/App.py

Click Read Wafer to load the demo CSVs. Tests: python -m pytest tests/ (UI smoke needs a display).

Demo data

CSV files in [MASTER_SD/](MASTER_SD/). Names: {S|R}{1|2}{seq}P0.CSV — local/remote board, SPI camera, 4-digit sequence (e.g. S10540P0.CSV).

Default cameras: CsvSource.DEMO_CAMERA_PATHS. Change that dict or use parse_csv_filename() for other captures.

Calibration

First run creates baseline.json (gitignored). Key fields: center_mm, radius_mm (75), center_px, radius_px (pixel scale).

Layout

Path Role
src/wafer_edge/App.py Main window
VisionEngine.py Circle fit + offsets (no Qt)
CsvSource.py CSV loader
ui/widgets.py Plot + metric cards
ui/Theme.qml Styles (loaded via ui/theme.py)

Pipeline: DEMO_CAMERA_PATHSload_camera_records_from_csv()snapshot_from_records() → UI.

APP screenshot

S
Description
No description provided
Readme 1.3 MiB
Languages
Python 90.7%
QML 9.3%