Skip to content

First Workflow

This guide walks through how to approach your first QSP workflow — from understanding what you need to running a basic pipeline.


Step 1: Identify your problem

Before installing anything, consider what your signal processing task actually requires:

Question Answer → Package
Do you need to work directly with quaternion math? qsp-core
Are you analyzing frequency content of a signal? qsp-fft
Do you need to filter or condition a signal? qsp-filter
Are you building a modulation or communication workflow? qsp-modulation
Are you estimating orientation or attitude from sensors? qsp-orientation
Not sure yet, or need everything? qsp-stack

If you are not sure, start with qsp-stack. You can refine later.


Step 2: Install

For a first workflow, install qsp-stack:

pip install qsp-stack

This gives you access to the full ecosystem.


Step 3: Understand your data

QSP is designed for signals that have geometric structure — quaternion-valued arrays, multi-axis sensor streams, or signals with orientation and phase content. Before writing code, clarify:

  • What is the format of your input data?
  • Is it already in quaternion form, or does it need to be constructed from scalar or IQ data?
  • What is the expected output — a filtered signal, a spectrum, an orientation estimate, or a modulated symbol stream?

Step 4: Build a minimal pipeline

A typical first pipeline looks like:

# Conceptual example — verify against the actual package API
import qsp_core
import qsp_filter
import qsp_orientation

# Load your sensor data
raw_data = ...  # e.g., a (N, 4) array of quaternion components

# Construct quaternion signal
signal = qsp_core.QuaternionSignal(raw_data)

# Apply a low-pass filter to condition the signal
conditioned = qsp_filter.lowpass(signal, cutoff_hz=10.0, sample_rate_hz=200.0)

# Estimate orientation
orientation = qsp_orientation.estimate(conditioned)

Note

The above is a conceptual sketch. Always refer to the individual package documentation for the current API.


Step 5: Verify and iterate

Check that:

  • Your signal is the right shape and dtype going into each stage
  • The output of each stage is what you expect (visualize if possible)
  • Edge cases are handled (e.g., missing data, boundary effects in filtering)

Next steps

  • Choosing a Package — decide which packages your production code should depend on
  • Migration Paths — move from qsp-stack to specific packages
  • Package pages for detailed API context