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.1.tar.gz (223.6 kB 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.1-py3-none-any.whl (173.1 kB view details)

Uploaded Python 3

File details

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

File metadata

File hashes

Hashes for calibration_statistics_tool-1.0.1.tar.gz
Algorithm Hash digest
SHA256 506540d67688c7a152525a49357fb372b63025754c36634c84ccda55ee0b78c9
MD5 4256b5ee04cf2bc2173d1c6b4d2fd085
BLAKE2b-256 aa46b5571782df33ccdd38de6091bfeba89cc567f44c429afb13d64fb7f1b90a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for calibration_statistics_tool-1.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 fa759959c95af901231c25968e85e7d7211b789d9df4f2cee12e3c220e836ca7
MD5 b25570312c0ed9ad047bd8741c10ace5
BLAKE2b-256 ec0b27953cf121284167c36ae46a59d5fb0527b4cb681548a5fd3eff1db3f94a

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