Skip to content

Data Analysis

SciChart Engine includes built-in utilities for common data analysis tasks.

Overview

The analysis utilities can be used as standalone functions or integrated into the chart via the Analysis Plugin.

Standalone Usage

typescript
import {
  detectCycles,
  detectPeaks,
  calculateStats,
  movingAverage,
  downsampleLTTB,
  validateData,
} from 'scichart-engine'

const stats = calculateStats(myData);

By loading the PluginAnalysis, you gain access to all analysis tools directly through the chart instance, which handles coordinate conversion and series-aware analysis automatically.

typescript
import { PluginAnalysis } from 'scichart-engine/plugins';

await chart.use(PluginAnalysis());

// Calculate stats for a specific series data
const stats = chart.analysis.calculateStats(mySeries.getData().y);

// High-level series curve fitting
chart.analysis.addFitLine('my-series-id', 'linear');

Functions

detectCycles

Detect cycles in oscillating data. Useful for periodic signals, waveforms, and cyclic measurements.

typescript
function detectCycles(
  signal: Float32Array | Float64Array | number[],
  tolerance?: number
): CycleInfo[]

Full documentation →

detectPeaks

Find local maxima and minima in data.

typescript
function detectPeaks(
  x: Float32Array | Float64Array | number[],
  y: Float32Array | Float64Array | number[],
  options?: { minProminence?: number; type?: 'max' | 'min' | 'both' }
): Peak[]

Full documentation →

calculateStats

Calculate basic statistics for a dataset.

typescript
function calculateStats(
  data: Float32Array | Float64Array | number[]
): DataStats

Full documentation →

movingAverage

Apply moving average smoothing.

typescript
function movingAverage(
  data: Float32Array | Float64Array | number[],
  windowSize: number
): Float32Array

Full documentation →

downsampleLTTB

Reduce point count using LTTB algorithm while preserving visual shape.

typescript
function downsampleLTTB(
  x: Float32Array | Float64Array,
  y: Float32Array | Float64Array,
  targetPoints: number
): { x: Float32Array; y: Float32Array }

Full documentation →

validateData

Check for invalid values (NaN, Infinity).

typescript
function validateData(
  data: Float32Array | Float64Array | number[]
): ValidationResult

Full documentation →

formatWithPrefix

Format numbers with automatic SI prefix.

typescript
function formatWithPrefix(
  value: number,
  unit: string,
  decimals?: number
): string

Full documentation →

generateCycleColors

Generate distinct colors for multiple series.

typescript
function generateCycleColors(count: number): string[]

Advanced Analysis

For more complex signal processing, see the specialized modules:

Spectral & FFT

Fast Fourier Transform, Windowing functions (Hanning, Hamming, Blackman), and Power Spectrum analysis.

Digital Filters

IIR Filters (LowPass, HighPass, BandPass), Moving Averages, Median Filters, and Savitzky-Golay smoothing.

Statistics

Correlation analysis, Anomaly detection, and numerical integration (Trapezoidal/Simpson).

Curve Fitting

Linear and non-linear regression models (Polynomial, Exponential, Logarithmic).

Quick Examples

typescript
import { 
  detectCycles, 
  detectPeaks, 
  calculateStats,
  downsampleLTTB 
} from 'scichart-engine'

// Detect cycles in oscillating data
const cycles = detectCycles(signalData)
console.log(`Found ${cycles.length} cycles`)

// Find peaks
const peaks = detectPeaks(x, y, { minProminence: 0.1 })
peaks.forEach(p => console.log(`Peak at x=${p.x}, y=${p.y}`))

// Get statistics
const stats = calculateStats(y)
console.log(`Mean: ${stats.mean}, StdDev: ${stats.stdDev}`)

// Downsample for display
const { x: sampledX, y: sampledY } = downsampleLTTB(x, y, 1000)

Released under the MIT License.