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

Download files

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

Source Distribution

sigtekx-0.9.5.tar.gz (18.5 MB view details)

Uploaded Source

Built Distribution

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

sigtekx-0.9.5-cp311-cp311-win_amd64.whl (590.7 kB view details)

Uploaded CPython 3.11Windows x86-64

File details

Details for the file sigtekx-0.9.5.tar.gz.

File metadata

  • Download URL: sigtekx-0.9.5.tar.gz
  • Upload date:
  • Size: 18.5 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/7.0.0 CPython/3.11.15

File hashes

Hashes for sigtekx-0.9.5.tar.gz
Algorithm Hash digest
SHA256 eb05d40dea36fe13d3aa780db7e6227f473e44673b912065bc81f6721bd36c21
MD5 0b8935917bbabde5c371114f9a63ef27
BLAKE2b-256 b672063c7b7e46034e0f90f25820cd19e4a13dd8947263095ba866bf7aca9d9b

See more details on using hashes here.

File details

Details for the file sigtekx-0.9.5-cp311-cp311-win_amd64.whl.

File metadata

  • Download URL: sigtekx-0.9.5-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 590.7 kB
  • Tags: CPython 3.11, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/7.0.0 CPython/3.11.15

File hashes

Hashes for sigtekx-0.9.5-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 fd613615f4f0e49051f4354320ffd0a1f81ac24625e3b29f1dca1146145b3c49
MD5 5a7591db9e4b5868a8e2b5be3d2d1998
BLAKE2b-256 21f20ba0890b904742c8d8495e0fd13e7c3def24c1bc5811ba3a733af2474523

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

0.9.5 This release

2 files

0.0.2

2 files

0.0.0

2 files

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