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:
- Period (seconds) OR Frequency (Hz) - How fast it repeats
- Period = 10 seconds → Completes 1 cycle every 10 seconds
-
Frequency = 0.1 Hz → Completes 0.1 cycles per second (same as period=10)
-
Amplitude - Height of the oscillation
-
Amplitude = 5 → Signal varies ±5 units from baseline
-
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
- Validation - Phoenix checks all parameters are valid
- Aliasing Check - Warns if sampling rate is too low for oscillations
- Generation - Creates the time series in memory
- Visualization - Renders interactive Plotly chart
- 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:
- Adjust parameters in the sidebar
- Click "Preview" again
- Compare with previous version
- 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:
- Name (required): Descriptive name for this series
- Description (optional): Notes about parameters or purpose
- 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
- Begin with just mean + noise
- Preview and verify it works
- Add trend if needed
- Add oscillations one at a time
- 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
- Multi-Channel Generation - Create multiple correlated signals
- Oscillations Deep Dive - Master periodic signal components
- Data Degradation - Add missing data and outliers
Understand the Theory
- Sampling and Aliasing - Learn proper sampling rates
- Technical Reference - Mathematical formulas and validation rules
Integration
- Export and Save - Use generated data in external tools
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.