Statistics and antenna pattern analysis tool for radar systems
Project description
StatisticToolPython
A comprehensive statistics and antenna pattern analysis tool for radar systems, built with Python and PySide6.
Features
- Statistics Analysis: Process and analyze measurement data with statistical limits
- Antenna Pattern Processing: Handle antenna diagrams and patterns for various radar types
- GUI Interface: User-friendly Qt-based interface for data visualization
- Report Generation: Automated PowerPoint and PDF report creation
- Data Processing: Support for multiple data formats (JSON, YAML, protocol files)
Requirements
- Python 3.8+
- PySide6 for GUI
- matplotlib for plotting
- numpy for numerical operations
- PyYAML for configuration
- python-pptx for PowerPoint generation
Installation
- Clone the repository:
git clone <repository-url>
cd statistictoolpython
- Create virtual environment:
python -m venv .venv
.venv\Scripts\activate # Windows
# or
source .venv/bin/activate # Linux/Mac
- Install dependencies:
pip install -e .
Usage
Run the main application:
python main.py
Or use the command-line entry point:
statistictool
Project Structure
The application follows an MVC architecture split across several sub-packages:
main.py # Thin wiring file -- startup, DI, handler wiring
shared/ # Domain logic (controllers, parsers, models)
models.py # Data model classes
parse_controller.py # ParseController -- protocol/PTU2 business logic
plot_controller.py # PlotController -- diagram/plot state management
calcdiagram_functions.py # Vectorised diagram calculations (NumPy)
parsePTU2data.py # PTU2 file parser and data structures
parse_helpers.py # Protocol parsing helpers
loaddata.py # Data loading utilities
ui/
main_view.py # MainView -- owns QApplication and all widgets
pyside_qtgui.py # Backward-compat shim (delegates to MainView)
ui_constants.py # Pure-Python layout/size/style constants
widgets.py # Reusable Qt widget classes (PlotFrame, etc.)
handlers/ # Signal handler modules (one per tab)
app_context.py # AppContext -- dependency-injection container
parse_handlers.py # Parse Protocols tab handlers
sys_diag_handlers.py # System Diagrams tab handlers
tx_ant_diag_handlers.py # Tx-Antenna Diagrams tab handlers
ant_pat_handlers.py # Antenna Patterns tab handlers
tabs/ # Tab widget declarations (one file per tab)
parse_prot_tab.py
sys_diag_tab.py
tx_ant_diag_tab.py
ant_pat_tab.py
system_diagrams/ # AntennaSystemDiagrams computation module
antenna_patterns/ # Antenna pattern analysis (antpat_v5)
tx_diagrams/ # Tx-Antenna Diagrams computation module
config/ # YAML configuration files
tests/ # Pytest test suite (613 tests)
conftest.py # Shared fixtures and Qt session setup
integration/ # Real-Qt integration tests
docs/ # Architecture documentation
Development
Install development dependencies:
pip install -e ".[dev]"
Run tests:
pytest
Run benchmarks (local only, informational):
pytest --benchmark-only
Lint code:
ruff check .
Architecture
Detailed architecture documentation is in docs/:
docs/mvc_architecture.md— MVC design, dependency injection, layer boundaries
Test Writer Agent (Jira Zephyr)
The agents/zephyr package analyses the Python source tree and generates
manual test cases as a CSV file that can be imported directly into
Jira Zephyr Scale (Test Cases → Import → CSV).
Quick start
# Generate Unit + Integration test cases for the shared/ module
python -m agents.zephyr.mcp_server \
--source shared/ \
--level Unit \
--level Integration \
--output zephyr_tests.csv
Or from Python:
from test_writer import TestWriterAgent
agent = TestWriterAgent(
source_paths=["shared/", "ui/handlers/"],
levels=["Unit", "Integration", "System"],
output_csv="zephyr_tests.csv",
)
path = agent.run()
print(f"Generated: {path}")
CLI reference
| Option | Default | Description |
|---|---|---|
--source PATH |
. |
Directory or .py file to scan. Repeatable. |
--level LEVEL |
Unit, Integration |
Testing level: Unit, Integration, System, Smoke, Regression, Acceptance. Repeatable. |
--output FILE |
zephyr_tests.csv |
Output CSV path. |
--root DIR |
cwd |
Repo root for module-name resolution. |
--prefix PREFIX |
Calibration-Statistics-Tool |
Jira component prefix. |
--skip-dir NAME |
— | Directory name to skip. Repeatable. |
CSV format
The generated file follows the Zephyr Scale CSV import schema:
| Column | Description |
|---|---|
| Name | Test case name (e.g. [Unit] shared.models — MyClass) |
| Status | Draft / Approved / Deprecated |
| Priority | High / Medium / Low |
| Component | Jira component (<prefix>/<top-level-package>) |
| Labels | Comma-separated: level, symbol kind, package |
| Precondition | Environment prerequisites |
| Objective | One-sentence description of what is verified |
| Folder | Zephyr folder path (/<Level>/<module/path>) |
| Test Script (Step) | Step action text |
| Test Script (Step Data) | Input data for the step |
| Test Script (Expected Result) | Expected outcome |
License
MIT License - see LICENSE file for details.
Contributing
- Fork the repository
- Create a feature branch
- Make your changes
- Add tests if applicable
- Submit a pull request
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file calibration_statistics_tool-1.0.5.tar.gz.
File metadata
- Download URL: calibration_statistics_tool-1.0.5.tar.gz
- Upload date:
- Size: 1.9 MB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
102b647c4a63c4a46df0f1bba6896e680ab0046a3aab2900a23d6eec93ff1371
|
|
| MD5 |
34d00adb9c00447f8e1bb02e6066b078
|
|
| BLAKE2b-256 |
374be2b22097a629283c66e66623509e41c15029967d9d1040aec437321a3ea9
|
File details
Details for the file calibration_statistics_tool-1.0.5-py3-none-any.whl.
File metadata
- Download URL: calibration_statistics_tool-1.0.5-py3-none-any.whl
- Upload date:
- Size: 1.8 MB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0927ac26b21d987101a879721ac06950202d70165cf767a9e77aa2a14961b37a
|
|
| MD5 |
95b12ce63e07828083cf5028a61a17fc
|
|
| BLAKE2b-256 |
4fcf4afc526652b992cb25d7388be289b8f4f73fe4b9a0dc047d4058842157bb
|