Skip to main content

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

  1. Clone the repository:
git clone <repository-url>
cd statistictoolpython
  1. Create virtual environment:
python -m venv .venv
.venv\Scripts\activate  # Windows
# or
source .venv/bin/activate  # Linux/Mac
  1. 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

  1. Fork the repository
  2. Create a feature branch
  3. Make your changes
  4. Add tests if applicable
  5. Submit a pull request

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

calibration_statistics_tool-1.0.3.tar.gz (1.8 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

calibration_statistics_tool-1.0.3-py3-none-any.whl (1.8 MB view details)

Uploaded Python 3

File details

Details for the file calibration_statistics_tool-1.0.3.tar.gz.

File metadata

File hashes

Hashes for calibration_statistics_tool-1.0.3.tar.gz
Algorithm Hash digest
SHA256 d63b4e39d6b9925c4bbbb145879904e4ac76436419da23b77aae43fda2b28645
MD5 2b7050ac8b57130ea9f0e0926963c0bc
BLAKE2b-256 b33fca2d2ad3cfc715675b1f9891726221ae75310f59db8d8886320840e6402f

See more details on using hashes here.

File details

Details for the file calibration_statistics_tool-1.0.3-py3-none-any.whl.

File metadata

File hashes

Hashes for calibration_statistics_tool-1.0.3-py3-none-any.whl
Algorithm Hash digest
SHA256 797b04e8dc824144bf96d061db71e4c6bb2114e045bb980dab20a6a3c8257fdd
MD5 2005829936e90bb6ed340b3794882c37
BLAKE2b-256 6858b90a4604e1c3b045b2c11adda16fae9b22002e458c0349111f16dec1fc27

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page