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 - On desktop (≥1024 px), drag the vertical handle between the panels to resize the sidebar width

Right Main Area (Visualization Panel) - Empty state when no data generated - Chart title input — enter a custom title before previewing; the title appears in the Plotly chart header - Interactive Plotly chart after preview - Statistics panel showing min, max, mean, point count - Chart controls toolbar (see Chart Controls below)

[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:

\[ \text{Total Points} = \text{Duration (seconds)} \times \text{Sampling Frequency (Hz)} \]

Example (within limit): 1 hour × 1 Hz = 3,600 points ✓

Example (exceeds limit): 10 hours × 1 Hz = 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 (Gaussian / white noise by default).

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

Advanced Noise: Click the "Configure" button next to "Advanced Noise" to access additional noise options — noise colour (white/pink/brown), temporal autocorrelation (AR coefficient), and amplitude-dependent variance (heteroscedasticity). See Advanced Noise for details.

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:

\[ \text{Final Value} = \text{Mean} + (\text{Slope} \times \text{Number of Points}) \]

Example (increasing): \(100 + (0.01 \times 1{,}000) = 110\)

Example (decreasing): \(100 + (-0.02 \times 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:

\[ \text{Points} = \text{Duration (seconds)} \times \text{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. Try refreshing the page; if the problem persists, contact your administrator

Chart Controls

After generating a preview, a toolbar appears above the chart with three groups of controls:

Time Axis

Toggle between Date and Elapsed display modes:

  • Date (default) — x-axis shows absolute timestamps (e.g., 2024-01-15 10:00:00)
  • Elapsed — x-axis shows time elapsed from the first data point (e.g., 1h 30m)

Elapsed mode is useful when the absolute start time is irrelevant and you want to inspect the shape of a signal in relation to its own timeline.

Display Mode

Select how data points are rendered:

Option Icon Description
Markers Individual data points only — useful for sparse or irregular data
Lines Continuous line connecting points — best for dense, regular data
Lines + Markers ●— Both — useful when you want to see both continuity and individual samples

Line Style

When lines are active, choose the line dash pattern:

Style Appearance When to use
Solid ——— Default; clear and readable
Dash - - - Distinguish channels in multi-channel plots
Dot · · · Indicate estimated or uncertain data

The line style selector only appears when Lines or Lines + Markers is selected.

Chart Title

Enter a custom title in the text field above the chart (placeholder: "Generated Time Series"). The title is applied when you click Preview, and is included when the series is saved to the database.

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.