oxits 0.1.0

Time series classification and transformation library for Rust
Documentation
"""Generate golden test data for image module."""

import numpy as np
from pyts.image import GramianAngularField, MarkovTransitionField, RecurrencePlot


def generate():
    fixtures = []
    rng = np.random.RandomState(42)

    X = rng.randn(3, 10)

    # GASF
    gaf = GramianAngularField(method="summation")
    result = gaf.transform(X)
    fixtures.append({
        "test_name": "gasf_basic",
        "params": {"method": "summation"},
        "input": {"X": X.tolist()},
        "expected": {"output_3d": result.tolist()},
        "tolerance": 1e-10,
    })

    # GADF
    gaf = GramianAngularField(method="difference")
    result = gaf.transform(X)
    fixtures.append({
        "test_name": "gadf_basic",
        "params": {"method": "difference"},
        "input": {"X": X.tolist()},
        "expected": {"output_3d": result.tolist()},
        "tolerance": 1e-10,
    })

    # GASF with reduced image size
    gaf = GramianAngularField(image_size=5, method="summation")
    result = gaf.transform(X)
    fixtures.append({
        "test_name": "gasf_reduced",
        "params": {"image_size": 5, "method": "summation"},
        "input": {"X": X.tolist()},
        "expected": {"output_3d": result.tolist()},
        "tolerance": 1e-10,
    })

    # MTF
    mtf = MarkovTransitionField(n_bins=5)
    result = mtf.transform(X)
    fixtures.append({
        "test_name": "mtf_basic",
        "params": {"n_bins": 5},
        "input": {"X": X.tolist()},
        "expected": {"output_3d": result.tolist()},
        "tolerance": 1e-8,
    })

    # RecurrencePlot
    rp = RecurrencePlot()
    result = rp.transform(X)
    fixtures.append({
        "test_name": "rp_basic",
        "params": {},
        "input": {"X": X.tolist()},
        "expected": {"output_3d": result.tolist()},
        "tolerance": 1e-10,
    })

    # RecurrencePlot with threshold
    rp = RecurrencePlot(threshold=1.0)
    result = rp.transform(X)
    fixtures.append({
        "test_name": "rp_threshold",
        "params": {"threshold": 1.0},
        "input": {"X": X.tolist()},
        "expected": {"output_3d": result.tolist()},
        "tolerance": 1e-10,
    })

    return fixtures