Skip to main content

SigTekX

Python 3.11+ CUDA 13.0+ License: MIT

CUDA-accelerated STFT pipeline and research-grade benchmarking suite for real-time signal processing — from sub-millisecond streaming to reproducible experiment workflows.

Overview

SigTekX provides a Python interface to a high-performance CUDA-based STFT engine, optimized for real-time spectral analysis with sub-millisecond latency. The project includes a comprehensive research infrastructure following Research Software Engineering (RSE) best practices: Hydra configuration, Snakemake workflows, MLflow tracking, DVC versioning, and an interactive Streamlit dashboard. It is designed for production streaming workloads and reproducible ionospheric physics research.

Measured Performance

All numbers measured on RTX 3090 Ti (SM 8.6, 24 GB) / AMD Ryzen 9 5950X, Windows 11. GPU clocks locked for stability; see Stability Improvements for methodology.

Metric Value Configuration
Mean latency 160 μs Streaming, NFFT=4096, 2-ch, 100kHz
P99 latency 205 μs Same
Real-time compliance 100% 0 deadline misses, 45,430 frames
Benchmark CV 12.2% After 4-phase stability work
Spectral accuracy 131 dB SNR vs NumPy/SciPy reference

Key Features

  • High-Performance GPU Computing: CUDA-accelerated STFT pipeline with asynchronous multi-stream execution
  • Clean Python API: Type-safe interface with Pydantic configuration and context managers
  • Research Infrastructure: Hydra configuration, Snakemake workflows, MLflow tracking, DVC versioning
  • Professional Benchmarking: Statistical analysis with latency, throughput, accuracy, and real-time metrics
  • Domain-Specific Presets: Ready-to-use configurations for ionospheric scintillation research (VLF/ULF)
  • NVTX Profiling: Built-in support for NVIDIA Nsight Systems and Compute
  • Interactive Dashboard: Streamlit dashboard for real-time experiment exploration (sigx dashboard)
  • Developer-Friendly CLI: Comprehensive tooling with convenient shell aliases

Architecture

┌─────────────────────────────────────────────────────────┐
│  Researcher / User                                       │
│  ↓                                                       │
│  Hydra Configuration (YAML-based experiments)           │
│  ↓                                                       │
│  Python API (sigtekx.Engine)                            │
│  ├── Pydantic Config Models                             │
│  ├── Benchmark Framework (Latency/Throughput/Accuracy)  │
│  └── Utilities (Signals, Device, Profiling)             │
│  ↓                                                       │
│  C++ Backend (BatchExecutor/StreamingExecutor pybind11) │
│  ├── Direct Executor Interface (no facade layer)        │
│  ├── Async Processing Pipeline (multi-stream)           │
│  └── Optimized CUDA Kernels (STFT pipeline)             │
│  ↓                                                       │
│  GPU (cuFFT + Custom Window/Magnitude Kernels)          │
└─────────────────────────────────────────────────────────┘

See Architecture Overview and Executor Architecture for details.

Requirements

Category Requirement
OS Windows 11 (primary), Linux (experimental)
GPU NVIDIA, compute capability 6.0+ (Pascal or newer)
RAM 8 GB+ (16 GB recommended for large experiments)
Python 3.11+
CUDA Toolkit 13.0+
Visual Studio 2022 with C++ build tools (Windows)
CMake 3.26+
PowerShell 7.0+ (Windows)
Conda Miniconda or Anaconda

Quick Start

# 1. Clone repository
git clone --recursive https://github.com/SEAL-Embedded/sigtekx.git
cd sigtekx

# 2. Start development shell (sets up MSVC, conda, aliases)
.\scripts\init_pwsh.ps1 -Interactive

# 3. Setup environment and build
sigx setup          # Creates conda env, installs dependencies
sigx build          # Builds C++ backend

# 4. Verify installation
sigx doctor         # Check environment health
sigx test           # Run test suite

# 5. Run a quick benchmark
python benchmarks/run_latency.py experiment=ionosphere_test +benchmark=latency

For platform-specific instructions and troubleshooting, see Installation Guide.

Python API

Basic Usage

from sigtekx import Engine
import numpy as np

with Engine(preset='iono') as engine:
    signal = np.random.randn(engine.config.nfft * engine.config.channels).astype(np.float32)
    spectrum = engine.process(signal)
    print(f"Output: {spectrum.shape}  Latency: {engine.stats['latency_us']:.1f} μs")

Custom Configuration

from sigtekx import Engine, EngineConfig

config = EngineConfig(
    nfft=4096,
    channels=2,
    overlap=0.75,
    window_type='blackman',   # window function
    scale_policy='1/N',       # normalization
    output_mode='magnitude',  # output format
    mode='streaming'          # execution mode
)
engine = Engine(config=config)

Logging

Imports are silent by default; a NullHandler is attached to the sigtekx logger so user code controls logging.

import logging
from sigtekx.utils.logging import setup_logging

logging.basicConfig(level="INFO")
setup_logging(level="DEBUG")   # optional: rich console formatter for sigtekx*

Environment knobs: IONO_LOG_LEVEL=DEBUG and IONO_LOG_COLOR=0/1 configure logging without code changes.

Configuration Presets

Preset NFFT Overlap Use Case
default 1024 0.5 General-purpose baseline
iono 4096 0.75 Ionospheric scintillation (standard)
ionox 8192 0.9 Ionospheric scintillation (high-resolution)
engine = Engine(preset='iono')                          # Standard ionosphere
engine = Engine(preset='iono', nfft=8192, mode='streaming')  # Override parameters
config = EngineConfig.from_preset('iono', overlap=0.875)

Development Commands

# Environment
sigx setup          # Create conda environment and install package
sigx doctor         # Check environment health

# Build
sigx build          # Release build
sigx build --clean  # Clean rebuild
sigx build --debug  # Debug build

# Test
sigx test           # All tests (Python + C++)
sigx test python    # Python only
sigx test cpp       # C++ only
sigx test --coverage

# Code quality
sigx format         # Format C++ code (clang-format)
sigx lint           # Lint Python code (ruff)
sigx lint --fix     # Auto-fix lint issues

# Utilities
sigx clean          # Remove build artifacts
sigx dashboard      # Launch Streamlit dashboard
sigx help           # Full CLI reference

GPU Profiling

# Nsight Systems (timeline analysis)
sxp nsys latency
sxp nsys throughput

# Nsight Compute (kernel analysis)
sxp ncu latency

# C++ direct benchmarking
sigxc bench                          # Quick validation (~10s)
sigxc bench --preset latency --full  # Production-equivalent run

Running Experiments

# Single experiment
python benchmarks/run_latency.py experiment=ionosphere_streaming +benchmark=latency

# Parameter sweep
python benchmarks/run_latency.py --multirun engine.nfft=1024,2048,4096,8192 +benchmark=latency

# Full pipeline (all experiments + dashboard data)
snakemake --cores 4 --snakefile experiments/Snakefile
sigx dashboard

See Experiment Guide for the full list of 26 experiment configurations.

Documentation

Topic Document
Installation docs/getting-started/install.md
Workflow docs/getting-started/workflow-guide.md
API Reference docs/reference/api-reference.md
Configuration docs/reference/configuration.md
Architecture Overview docs/architecture/overview.md
Executor Architecture docs/architecture/executors.md
Benchmarking docs/benchmarking/README.md
Experiment Guide docs/benchmarking/experiment-guide.md
Performance docs/performance/stability-improvements.md
Thread Safety docs/architecture/thread-safety.md
IEEE 754 Compliance docs/technical-notes/ieee754-compliance.md
Contributing CONTRIBUTING.md

Project Structure

sigtekx/
├── cpp/                   # C++ backend (CUDA kernels, executors)
│   ├── include/           # Public headers
│   ├── src/               # Implementation
│   └── tests/             # Google Test suite
├── src/sigtekx/           # Python package
│   ├── core/              # Engine, builder, native bindings
│   ├── config/            # EngineConfig, presets, enums
│   ├── benchmarks/        # Benchmark framework
│   └── utils/             # Device, signals, archiving
├── benchmarks/            # Experiment runner scripts
├── experiments/           # Hydra configs, Snakemake pipeline, Streamlit dashboard
├── tests/                 # Python test suite (pytest)
├── scripts/               # CLI (cli.ps1), dev shell (init_pwsh.ps1)
├── docs/                  # Documentation
├── baselines/             # Persistent performance baselines
├── artifacts/             # Generated results (gitignored)
└── environments/          # Conda environment specs

Contributing

Contributions are welcome. See CONTRIBUTING.md for development setup, code style guidelines, testing requirements, and the pull request process.

# Fork, clone, then:
.\scripts\init_pwsh.ps1 -Interactive
sigx setup
git checkout -b feat/my-feature
# ... make changes ...
sigx build && sigx test
git commit -m "feat(scope): description"

License & Citation

Released under the MIT License.

If you use SigTekX in your research, please cite:

@software{sigtekx2025,
  title  = {SigTekX: CUDA-Accelerated STFT Engine for Real-Time Signal Processing},
  author = {Rahsaz, Kevin},
  year   = {2025},
  url    = {https://github.com/SEAL-Embedded/sigtekx},
  note   = {Version 0.9.5}
}

Issues and discussions: github.com/SEAL-Embedded/sigtekx

Metadata

Release files for sigtekx 0.9.5

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for sigtekx 0.9.5
File Size Uploaded Provenance Actions
sigtekx-0.9.5.tar.gz 18.5 MB Without provenance Details for sigtekx-0.9.5.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for sigtekx 0.9.5
File Interpreter ABI Platform Actions
sigtekx-0.9.5-cp311-cp311-win_amd64.whl CPython 3.11 CPython 3.11 Windows x86-64 Details for sigtekx-0.9.5-cp311-cp311-win_amd64.whl

Total release size: 19.0 MB

Release files / sigtekx-0.9.5.tar.gz

Download URL sigtekx-0.9.5.tar.gz
Size 18.5 MB
Tags Source
SHA-256 checksum
How to use checksums
eb05d40dea36fe13d3aa780db7e6227f473e44673b912065bc81f6721bd36c21
BLAKE2b-256 checksum
How to use checksums
b672063c7b7e46034e0f90f25820cd19e4a13dd8947263095ba866bf7aca9d9b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.11.15

Release files / sigtekx-0.9.5-cp311-cp311-win_amd64.whl

Download URL sigtekx-0.9.5-cp311-cp311-win_amd64.whl
Size 590.7 kB
Tags CPython 3.11 Windows x86-64
SHA-256 checksum
How to use checksums
fd613615f4f0e49051f4354320ffd0a1f81ac24625e3b29f1dca1146145b3c49
BLAKE2b-256 checksum
How to use checksums
21f20ba0890b904742c8d8495e0fd13e7c3def24c1bc5811ba3a733af2474523
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.11.15

Security for sigtekx 0.9.5

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page