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:
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-stackto specific packages - Package pages for detailed API context