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