Solutions
Synthetic Data Simulator
42 min
synthetic data simulator user guide what is this tool? the synthetic data simulator is a web based application that helps you generate realistic time series data for testing, research, or development purposes you can create clean mathematical signals and add various types of noise to simulate real world data conditions getting started accessing the application run on any litmusedge device docker run d p 8501 8501 litmusedge azurecr io/litmus/synthetic sims\ latest navigate to the {edgeurl} 8501 the interface will load automatically how to generate signals step 1 choose your base signal select from 20 different signal types stochastic signals random walk models cumulative random processes (financial data, sensor drift) white noise signal uncorrelated random values with normal distribution periodic signals sine cosine equation combined sinusoidal functions for complex periodic behavior square wave binary state transitions with defined duty cycles triangle wave linear rise and fall patterns sawtooth wave asymmetric periodic ramps communication & signal processing chirp signal frequency swept signals for radar and communications testing amplitude modulated sine wave carrier wave with amplitude modulation square pulse train periodic pulses with adjustable duty cycle mathematical functions gaussian function bell curve distribution lorentzian function resonance curve modeling sinc function cardinal sine function for digital signal processing step function discontinuous transitions impulse function single point response testing system response patterns damped oscillation exponentially decaying oscillations exponential decay pure exponential decline hyperbolic tangent s curve transitions logarithmic signal logarithmic growth patterns unit ramp linear increase over time rectified sine wave full wave rectified sinusoid step 2 set time parameters start time when your signal begins (in milliseconds) end time when your signal ends (in milliseconds) number of points how many data points to generate time interval calculation the interval between points equals (end time start time) ÷ (number of points 1) for 1 second intervals, set number of points to (end time start time) + 1 step 3 add realistic noise (optional) choose from 12 different noise types statistical noise models gaussian normal distribution additive noise (most common) pink noise 1/f frequency characteristic noise (natural looking variations) uniform noise evenly distributed random variations random walk noise cumulative drift simulation physical interference models burst noise intermittent high amplitude interference harmonic noise sinusoidal interference at specified frequencies exponentially decaying noise time variant noise with exponential decay data quality issues random outliers probabilistic anomalous readings horrible outliers extreme outlier simulation for stress testing gaps in data missing data point simulation systematic patterns seasonality periodic variations based on signal duration damped sine wave noise decaying oscillatory interference step 4 generate your signal click "generate signal" view the interactive plot showing both original and noisy signals download your data as csv files advanced features creating multiple signals click "add new entry" to create additional signal generators each entry operates independently configure different signals with different noise combinations real time data streaming via nats enter a topic name for each signal you want to stream configure your signal and noise parameters click "start publishing to nats" data publishes at 1 second intervals to the configured nats server message format { "timestamp" 1234567890, "value" 42 5 } noise application process noise functions are applied sequentially each noise type modifies the result from the previous application, creating cumulative effects the system automatically calculates noise strength as 10% of the original signal's amplitude range use cases algorithm development & testing baseline testing start with clean signals to verify basic functionality robustness testing gradually add noise types to test algorithm resilience stress testing use "horrible outliers" for extreme condition simulation missing data handling apply "gaps in data" to test interpolation algorithms iot & sensor simulation realistic sensor data combine random walk with gaussian noise network issues add "gaps in data" for connectivity problems interference modeling use burst or harmonic noise for electromagnetic interference drift simulation apply random walk noise for sensor calibration drift financial & time series analysis price movement simulation random walk with burst noise for volatility market closure simulation gaps in data for non trading periods seasonal effects apply seasonality noise for cyclical patterns algorithm backtesting generate consistent test datasets system validation & demonstrations consistent demonstrations reproducible datasets for stakeholder presentations performance benchmarking compare algorithm performance across known datasets training data generation labeled datasets with known ground truth troubleshooting common issues "start time must be less than end time" verify end time > start time plot not displaying click "generate signal" after parameter changes no download available generate signal before attempting csv export nats publishing fails ensure topic name is entered and signal is generated getting support use "reset inputs" to clear session and restart contact system administrator for nats connectivity issues verify docker container is running with proper port mapping data export options original signal csv clean mathematical function output noisy signal csv signal after noise application real time nats stream live data publishing for integration testing generated data is compatible with standard analysis tools, databases, and any system accepting csv format or nats messaging mathematical function definitions original signal functions random walk f(n) = cumsum(ε i) where ε i n(0, 1) sine cosine equation f(n) = 5 sin(2πn) + 3 6 cos(25πn) square wave f(n) = square(2π · 5 · n) sawtooth wave f(n) = sawtooth(2π · 5 · n) chirp signal f(n) = chirp(n, f₀=1, f₁=10, t₁=n max, method="linear") damped oscillation f(n) = e^( n/10) sin(2πn) exponential decay f(n) = e^( n) triangle wave f(n) = sawtooth(2π · 5 · n, width=0 5) step function f(n) = {1 if n ≥ (n₀ + n max)/2, 0 otherwise} impulse function f(n) = {1 if i = len(n)//2, 0 otherwise} white noise signal f(n) = ε i where ε i n(0, 1) sinc function f(n) = sinc(n (n₀ + n max)/2) rectified sine wave f(n) = |sin(2πn)| amplitude modulated sine wave f c = 5, f m = 0 5, m = 0 7 f(n) = (1 + m sin(2πf m n)) sin(2πf c n) square pulse train f(n) = square(2πn, duty=0 1) lorentzian function γ = 1 f(n) = γ / (π(n² + γ²)) gaussian function σ = 1 f(n) = (1/(σ√(2π))) e^( (n²)/(2σ²)) logarithmic signal f(n) = ln(n + 1) hyperbolic tangent f(n) = tanh(n) unit ramp f(n) = n noise functions gaussian noise f noisy(n) = f orig(n) + α · ε where ε n(0, 1) pink noise ε n(0, 1) \[b, a] = butter(1, 0 1) pink = lfilter(b, a, ε) f noisy(n) = f orig(n) + α · pink exponentially decaying noise β = 0 5 (default decay rate) f noisy(n) = f orig(n) + α · e^( βn) · ε where ε n(0, 1) burst noise p = 0 01 (default burst probability) a = 5 (default burst amplitude) burst bernoulli(p) × a f noisy(n) = f orig(n) + α · burst random walk noise f noisy(n) = f orig(n) + α · cumsum(ε i) where ε i n(0, 1) uniform noise low = 1, high = 1 (default bounds) ε u(low, high) f noisy(n) = f orig(n) + α · ε harmonic noise f h = 2 0 (default harmonic frequency) f noisy(n) = f orig(n) + α · sin(2πf h n) random outliers p = 0 01 (default outlier probability) a = 5 (default outlier amplitude) outliers bernoulli(p) × a f noisy(n) = f orig(n) + α · outliers horrible outliers p = 0 01 (default outlier probability) a = 50 (default large outlier amplitude) outliers bernoulli(p) × a f noisy(n) = f orig(n) + α · outliers seasonality noise t = n max n min (period) a = 2 (default amplitude) f noisy(n) = f orig(n) + α · a · sin(2πn/t) damped sine wave noise δ = 0 05 (default damping factor) f = 1 0 (default frequency) f noisy(n) = f orig(n) + e^( δn) sin(2πfn) gaps in data p = 0 05 (default gap probability) gaps bernoulli(p) f noisy(n) = {nan if gaps = 1, f orig(n) otherwise} noise strength calculation α = 0 1 × (max(f orig) min(f orig)) where α is the noise strength parameter applied to all noise functions that accept it