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.5.tar.gz (1.9 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.5-py3-none-any.whl (1.8 MB view details)

Uploaded Python 3

File details

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

File metadata

File hashes

Hashes for calibration_statistics_tool-1.0.5.tar.gz
Algorithm Hash digest
SHA256 102b647c4a63c4a46df0f1bba6896e680ab0046a3aab2900a23d6eec93ff1371
MD5 34d00adb9c00447f8e1bb02e6066b078
BLAKE2b-256 374be2b22097a629283c66e66623509e41c15029967d9d1040aec437321a3ea9

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for calibration_statistics_tool-1.0.5-py3-none-any.whl
Algorithm Hash digest
SHA256 0927ac26b21d987101a879721ac06950202d70165cf767a9e77aa2a14961b37a
MD5 95b12ce63e07828083cf5028a61a17fc
BLAKE2b-256 4fcf4afc526652b992cb25d7388be289b8f4f73fe4b9a0dc047d4058842157bb

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