Skip to content

Conversation

@xiki-tempula
Copy link

Summary

  • Added a backend parameter to detect_equilibration_window that allows choosing between "numba" (default) and "numpy" backends
  • Made numba an optional dependency - the code now works without numba installed
  • Added numba-accelerated parallel implementation for improved performance when numba is available
  • Both backends produce identical results

Motivation

This change allows users who don't have numba installed (or don't want to use it) to still use detect_equilibration_window. The numpy backend provides a pure Python/numpy implementation that works without any additional dependencies.

Changes

  • red/variance.py:
    • Made numba import optional with fallback
    • Added _optional_njit decorator that applies numba JIT only when available
    • Added _compute_variance_series_window_numpy - pure numpy implementation
    • Added _compute_variance_series_window_indexed - numba parallel implementation
    • Added backend parameter to get_variance_series_window
  • red/sse.py: Added backend parameter to get_sse_series_window
  • red/equilibration.py: Added backend parameter to detect_equilibration_window
  • red/tests/test_equilibration.py: Added test_detect_equilibration_window_backends to verify both backends produce identical results

Usage

# Use numba backend (default, faster when numba is available)
idx, g, ess = red.detect_equilibration_window(data=series, times=times, method="min_sse", backend="numba")

# Use numpy backend (no numba dependency required)
idx, g, ess = red.detect_equilibration_window(data=series, times=times, method="min_sse", backend="numpy")

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant