Basic Usage: Single-Channel Time Series Generation

This guide provides a comprehensive walkthrough of generating single-channel time series data in Phoenix, covering all core features and configuration options.

Prerequisites

  • Access to a Kronts instance with Phoenix enabled
  • Basic understanding of time series concepts (timestamped data)
  • Familiarity with common units (Hz for frequency, seconds for time)

Overview

Single-channel generation creates a time series with one data column (value) and timestamps. This is perfect for: - Simple sensor data simulation (single temperature sensor, pressure gauge) - Testing basic algorithms - Learning Phoenix before moving to multi-channel data - Generating training examples

The Phoenix Interface

Phoenix uses a two-panel layout:

Left Sidebar (Configuration Panel) - Collapsible panel containing all parameter controls - Toggle with sidebar button (top right of sidebar) - Sections: Time Config, Base Signal, Oscillations, Data Degradation - Action buttons at top and bottom

Right Main Area (Visualization Panel) - Empty state when no data generated - Interactive Plotly chart after preview - Statistics panel showing min, max, mean, point count

[Screenshot Required: Interface Overview] 1. Navigate to /phoenix/generate/ 2. Capture: Full interface showing both panels 3. Annotate: Label sidebar sections and chart area 4. Purpose: Familiarize users with the layout

Step-by-Step: Generating Your First Time Series

Step 1: Configure Time Parameters

Time configuration determines how many points to generate and at what intervals.

Duration Method

Set how long the time series should span:

  • Days: Number of days (0-365+)
  • Hours: Number of hours (0-23)
  • Minutes: Number of minutes (0-59)
  • Seconds: Number of seconds (0-59)

These fields are additive. For example: - Days=1, Hours=2, Minutes=30 → Total duration = 26.5 hours - Hours=0, Minutes=45, Seconds=30 → Total duration = 45 minutes 30 seconds

Common Durations:

Quick test: 10 minutes (Minutes=10)
Hourly data: 1 hour (Hours=1)
Daily cycle: 1 day (Days=1)
Weekly trend: 7 days (Days=7)

Sampling Frequency

How often to take samples, specified in Hz (samples per second):

  • 1 Hz = 1 sample per second (3,600 points/hour)
  • 0.1 Hz = 1 sample every 10 seconds (360 points/hour)
  • 0.01667 Hz = 1 sample per minute (60 points/hour)
  • 10 Hz = 10 samples per second (36,000 points/hour)

Choosing Sampling Frequency: - Start with 1 Hz for most testing - Use 0.01667 Hz (1/60) for hourly-style data - Use higher rates (10+ Hz) only for fast oscillations - Must be at least 2× your highest oscillation frequency (Nyquist theorem)

Point Count Calculation:

Total Points = Duration (seconds) × Sampling Frequency (Hz)

Example:
Duration: 1 hour = 3,600 seconds
Sampling Frequency: 1 Hz
Total Points = 3,600 × 1 = 3,600 points ✓

Example (exceeds limit):
Duration: 10 hours = 36,000 seconds
Sampling Frequency: 1 Hz
Total Points = 36,000 × 1 = 36,000 points ✗ (exceeds 10,000 limit)

End Time (Optional)

By default, time series ends at "now" (current timestamp). You can specify a custom end datetime if needed for specific testing scenarios.

[Screenshot Required: Time Configuration] 1. Configure: - Hours: 2 - Minutes: 30 - Sampling Frequency: 0.5 2. Capture: Time Configuration section 3. Purpose: Show example time settings

Step 2: Set Base Signal Properties

The base signal defines the average level and noise characteristics.

Mean Value

The center point around which the signal varies.

Examples: - Temperature sensor: Mean=20 (°C) - Pressure sensor: Mean=101.3 (kPa, atmospheric pressure) - Vibration sensor: Mean=0 (acceleration, zero mean) - Flow rate: Mean=150 (liters/min)

Can be any floating-point number (positive, negative, or zero).

Noise Amplitude

Random variation added to the signal, specified as standard deviation.

Understanding Noise Amplitude: - Noise Amplitude = 0 → Perfectly smooth signal (no randomness) - Noise Amplitude = 1 → Typical variation of ±1 to ±3 units (99.7% within ±3σ) - Noise Amplitude = 10 → Typical variation of ±10 to ±30 units

Rule of Thumb: - Low noise: 1-5% of mean value - Medium noise: 5-10% of mean value - High noise: 10-20% of mean value

Examples:

Clean sensor (Mean=100, Noise=2):
Typical range: 94 to 106

Noisy sensor (Mean=100, Noise=10):
Typical range: 70 to 130

Very noisy sensor (Mean=100, Noise=20):
Typical range: 40 to 160

[Screenshot Required: Base Signal Configuration] 1. Configure: - Mean Value: 75 - Noise Amplitude: 5 2. Click "Preview" 3. Capture: Chart showing noisy signal around mean=75 4. Purpose: Demonstrate base signal with noise

Step 3: Add a Linear Trend (Optional)

A trend adds gradual increase or decrease over time.

Trend Slope

Rate of change per data point.

Understanding Slope:

Final Value = Mean + (Slope × Number of Points)

Example (Increasing):
Mean = 100
Slope = 0.01
Points = 1,000
Final Value = 100 + (0.01 × 1,000) = 110

Example (Decreasing):
Mean = 100
Slope = -0.02
Points = 1,000
Final Value = 100 + (-0.02 × 1,000) = 80

Use Cases: - Battery discharge: Negative slope - Equipment warm-up: Positive slope - Sensor drift: Small positive or negative slope - Wear/aging effects: Gradual decline

Choosing Slope Values:

Subtle drift: ±0.001 to ±0.01
Moderate trend: ±0.01 to ±0.1
Strong trend: ±0.1 to ±1.0

[Screenshot Required: Signal with Trend] 1. Configure: - Mean Value: 100 - Noise Amplitude: 3 - Trend Slope: 0.01 - Duration: 1 hour - Sampling Frequency: 1 Hz 2. Click "Preview" 3. Capture: Chart showing upward-trending noisy signal 4. Purpose: Demonstrate linear trend effect

Step 4: Add Oscillations (Optional)

Oscillations add periodic (repeating) patterns to your signal. See Oscillations Guide for comprehensive coverage.

Quick Oscillation Setup

For each oscillation, specify:

  1. Period (seconds) OR Frequency (Hz) - How fast it repeats
  2. Period = 10 seconds → Completes 1 cycle every 10 seconds
  3. Frequency = 0.1 Hz → Completes 0.1 cycles per second (same as period=10)

  4. Amplitude - Height of the oscillation

  5. Amplitude = 5 → Signal varies ±5 units from baseline

  6. Phase (radians) - Starting position in the cycle (optional, default=0)

Common Examples:

Rotating machinery at 1800 RPM:
- Frequency: 30 Hz (1800 RPM ÷ 60 seconds)
- Amplitude: 2

Daily temperature cycle:
- Period: 86400 seconds (24 hours)
- Amplitude: 5 (°C variation)

Heartbeat at 60 BPM:
- Frequency: 1 Hz (60 beats ÷ 60 seconds)
- Amplitude: 10

Adding Multiple Oscillations

Click "Add Oscillation" to add another frequency component. Signals can have unlimited oscillations (though 1-3 is typical).

[Screenshot Required: Signal with Oscillation] 1. Configure: - Mean Value: 50 - Noise Amplitude: 2 - Oscillation 1: Frequency=0.1 Hz, Amplitude=10 - Duration: 2 minutes - Sampling Frequency: 1 Hz 2. Click "Preview" 3. Capture: Chart showing clear sine wave pattern with noise 4. Purpose: Show basic oscillatory behavior

Step 5: Preview Your Data

Click the "Preview" button (top or bottom of sidebar, or floating button when scrolled).

What Happens During Preview

  1. Validation - Phoenix checks all parameters are valid
  2. Aliasing Check - Warns if sampling rate is too low for oscillations
  3. Generation - Creates the time series in memory
  4. Visualization - Renders interactive Plotly chart
  5. Statistics - Calculates min, max, mean, point count

Interpreting the Chart

Interactive Features: - Zoom: Click and drag to zoom into a region - Pan: Hold shift + drag to pan - Reset: Double-click to reset view - Hover: See exact timestamp and value

Statistics Panel: - Min: Lowest value in the series - Max: Highest value in the series - Mean: Average value (should be close to configured mean) - Points: Total data points generated

Aliasing Warnings

If you see red or yellow warning badges:

Error (Red): Oscillation frequency > Nyquist frequency - Your oscillation will be incorrectly represented (aliased) - Fix: Increase sampling frequency to at least 2× oscillation frequency

Warning (Yellow): Oscillation frequency > Nyquist/2 - Getting close to aliasing territory - Fix: Consider increasing sampling frequency to 2.5× oscillation frequency

See Sampling and Aliasing Guide for details.

[Screenshot Required: Preview with Statistics] 1. Generate any signal from previous examples 2. Capture: Full chart area showing both chart and statistics panel 3. Purpose: Show what successful preview looks like

Step 6: Refine and Iterate

If the preview doesn't look right:

  1. Adjust parameters in the sidebar
  2. Click "Preview" again
  3. Compare with previous version
  4. Iterate until satisfied

Phoenix remembers your last preview, so you can quickly try variations.

Step 7: Save or Export

Once satisfied with your time series:

Option A: Save to Database

Click "Save Time Series" button:

  1. Name (required): Descriptive name for this series
  2. Description (optional): Notes about parameters or purpose
  3. Open in Sentinel (checkbox): Immediately send to SENTINEL for analysis

Benefits: - Series is permanently stored - Can regenerate with same parameters later - Available in SENTINEL/FORGE/CEREBRO - Tracked under your user account

Limits: - Regular users: 3 saved series maximum - Must be under 10,000 total points

Option B: Download File

Click the "Download" dropdown and select format:

  • CSV: Simple text format, works everywhere
  • Excel (XLSX): For analysis in Excel/Google Sheets
  • JSON: Includes metadata and statistics

Benefits: - No save limits - Use in external tools (Python, R, MATLAB) - Share with colleagues - Offline analysis

See Export and Save Guide for details on file formats.

[Screenshot Required: Save Modal] 1. Click "Save Time Series" 2. Capture: Modal dialog with name/description fields 3. Purpose: Show the save interface

Complete Example Walkthrough

Let's create a realistic temperature sensor dataset with daily variation.

Scenario

Simulate an outdoor temperature sensor for one week with: - Average temperature: 15°C - Daily high/low variation: ±5°C - Sensor noise: ±0.5°C - Slow warming trend: +0.3°C per day - Sample once per minute

Configuration

Time Settings: - Days: 7 - Hours: 0 - Minutes: 0 - Seconds: 0 - Sampling Frequency: 0.01667 Hz (1 sample per minute)

Calculation:

Duration: 7 days = 604,800 seconds
Sampling: 0.01667 Hz = 1 sample/60 seconds
Points: 604,800 / 60 = 10,080 points ✗ EXCEEDS LIMIT!

Revised: Sample every 2 minutes instead
Sampling: 0.00833 Hz (1 sample/120 seconds)
Points: 604,800 / 120 = 5,040 points ✓

Base Signal: - Mean Value: 15 - Noise Amplitude: 0.5

Trend: - Slope: 0.0000595 (calculated: 2.1°C change / 5,040 points)

Oscillation (Daily cycle): - Period: 86400 seconds (24 hours) - Amplitude: 5 - Phase: 0

Expected Result

A time series showing: - Smooth daily temperature cycles (sine wave pattern) - Random noise of about ±0.5°C - Gradual warming from ~15°C to ~17°C over the week - Realistic temperature sensor data

[Screenshot Required: Complete Example] 1. Configure with above parameters 2. Click "Preview" 3. Capture: Full chart showing one week of temperature data 4. Purpose: Demonstrate a complete realistic scenario

Tips and Best Practices

Start Simple, Add Complexity

  1. Begin with just mean + noise
  2. Preview and verify it works
  3. Add trend if needed
  4. Add oscillations one at a time
  5. Preview after each addition

Use Realistic Values

  • Base signals on actual sensor ranges
  • Match noise levels to real sensor specifications
  • Use physically plausible oscillation frequencies

Watch Your Point Count

Calculate expected points before generating:

Points = Duration (seconds) × Sampling Frequency (Hz)

Must be ≤ 10,000 for single-channel.

Name Saved Series Descriptively

Good names: - "Temperature_Weekly_0.5C_Noise_Daily_Cycle" - "Vibration_1800RPM_30Hz_Clean" - "Pressure_Drifting_Noisy_Test"

Bad names: - "Test1" - "Data" - "My Time Series"

Preview Before Saving

Always preview first! This catches: - Parameter entry errors - Aliasing issues - Unexpected signal characteristics - Point count problems

Troubleshooting

"Data point limit exceeded"

Cause: Trying to generate more than 10,000 points

Solutions: 1. Reduce duration (fewer days/hours) 2. Decrease sampling frequency 3. Calculate: Duration × Frequency must be ≤ 10,000

Example Fix:

Problem: 10 hours at 1 Hz = 36,000 points ✗
Solution: 10 hours at 0.25 Hz = 9,000 points ✓

"Maximum series limit reached"

Cause: You have 3 saved series (regular user limit)

Solutions: 1. Delete an old saved series 2. Use download instead of save 3. Contact admin for increased limit

Signal looks wrong after preview

Choppy/jagged oscillations: - Increase sampling frequency - Check for aliasing warnings - See Sampling and Aliasing Guide

Can't see oscillations: - Oscillation amplitude too small compared to noise - Increase oscillation amplitude - Decrease noise amplitude

Trend too strong/weak: - Calculate expected change: Slope × Points - Adjust slope value accordingly

Unexpected values: - Check mean value is correct - Verify noise amplitude isn't too large - Look for unintended negative values in slope

Can't find saved time series

Check: - Saved series appear in your user dashboard - Only your own series are visible (unless shared) - Series may be opened in SENTINEL if checkbox was selected

Preview button doesn't work

Solutions: 1. Check all required fields are filled 2. Look for red validation errors in sidebar 3. Verify duration fields have at least one non-zero value 4. Check browser console for JavaScript errors

Common Patterns and Recipes

Clean Baseline Signal

Mean: 100
Noise: 0
Trend: 0
Oscillations: None
→ Flat line at 100

Noisy Sensor Data

Mean: 50
Noise: 5 (10% of mean)
Trend: 0
Oscillations: None
→ Random walk around 50

Drifting Sensor

Mean: 100
Noise: 2
Trend: 0.01
Duration: 1 hour, 1 Hz (3600 points)
→ Starts at ~100, ends at ~136

Rotating Machinery

Mean: 0
Noise: 0.1
Oscillations: Frequency=30 Hz, Amplitude=2
→ Clean 30 Hz vibration signal

Daily Temperature Cycle

Mean: 20
Noise: 0.5
Oscillations: Period=86400, Amplitude=5
Duration: 3 days, Sampling=0.01667 Hz
→ Realistic temperature variation

Next Steps

Explore Advanced Features

Understand the Theory

Integration


You now have a solid foundation in Phoenix's basic single-channel generation. Practice with different parameter combinations to build intuition for how each setting affects the resulting time series.