Skip to main content

Simulation and analysis of multifractal fields

Project description

scaleinvariance

FIF 2D Example

Simulation and analysis tools for scale-invariant processes and multifractal fields.

Documentation

Current Features

Analysis

Hurst exponent estimation

  • Haar fluctuation method: haar_fluctuation_hurst()
  • Structure function method: structure_function_hurst()
  • Spectral method: spectral_hurst()

All methods support multi-dimensional arrays, averaging over dimensions that are orthogonal to the specified dimension along which spectra are calculated (specified by axis. Data and fit line for plotting may be returned with return_fit=True.

Simulation

  • 1D fractionally integrated flux (FIF): FIF_1D() - Multifractal cascade simulation; causal/acausal
  • N-D fractionally integrated flux (FIF): FIF_ND() - Isotropic N-D multifractals for arbitrary dimensions (Example shown above)
  • 1D fractional Brownian motion: fBm_1D_circulant(), fBm_2D_circulant(), fBm_1D() - Spectral synthesis and fractional integration methods
  • 2D fractional Brownian motion: Isotropic 2D fBm fields

View example simulation outputs here

Installation

pip install scaleinvariance

Performance

By default, scaleinvariance uses NumPy for all computations. However, if PyTorch is installed, the package automatically detects it and uses PyTorch for simulation functions, providing potentially huge performance gains (depending on your machine):

# NumPy-only installation (minimal dependencies)
pip install scaleinvariance

# With PyTorch for faster simulations
pip install scaleinvariance[torch]

Control backend explicitly:

import scaleinvariance

# Check current backend
print(scaleinvariance.get_backend())  # 'torch' if available, else 'numpy'

# Force specific backend
scaleinvariance.set_backend('numpy')  # Always use NumPy
scaleinvariance.set_backend('torch')  # Use torch (raises error if not installed)

# Configure threading (defaults to 90% CPU count)
scaleinvariance.set_num_threads(8)

Basic Usage

from scaleinvariance import fBm_1D_circulant, fBm_2D_circulant, FIF_1D, haar_fluctuation_hurst

# Generate 1D fractional Brownian motion
fBm_1d = fBm_1D_circulant(1024, H=0.7)

# Generate 2D fractional Brownian motion
fBm_2d = fBm_2D_circulant((512, 1024), H=0.7)

# Generate multifractal FIF timeseries
fif = FIF_1D(2**16, alpha=1.8, C1=0.1, H=0.3)

# Estimate Hurst exponent
H_est, H_err = haar_fluctuation_hurst(fBm_1d)
print(f"Estimated H = {H_est:.3f} ± {H_err:.3f}")

Testing

# Test 1D fBm generation and Hurst estimation
python tests/test_acausal_fBm_hurst_estimation.py 0.7

# Test 2D fBm with isotropy validation
python tests/test_2d_fbm.py 0.7

FIF validation scripts, which test scaling over multiple ranges of scale, live in tests/automated/ (see test_1D_FIF_hurst.py and test_2D_FIF_hurst.py). They are designed to be run as standalone Python programs, not via pytest, and they generate many large FIF realizations to reach statistical convergence. These scripts are also known to produce some failures, especially near grid scales, because finite-size effects are not fully mitigated by the LS2010 corrections.

Examples

See the examples/ directory for comprehensive demonstrations:

  • fif_comparison_demo.py: Compare Hurst estimation methods on multifractal FIF simulations with different intermittency parameters
  • multi_dataset_haar_analysis.py: Real-world data analysis using Haar fluctuation method

Run examples:

python examples/fif_comparison_demo.py

Data source for LGMR: https://www.ncei.noaa.gov/access/paleo-search/study/33112

Requirements

  • Python ≥ 3.8
  • NumPy, SciPy
  • PyTorch (optional, for simulation speedup)

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

scaleinvariance-0.6.0.tar.gz (24.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

scaleinvariance-0.6.0-py3-none-any.whl (28.9 kB view details)

Uploaded Python 3

File details

Details for the file scaleinvariance-0.6.0.tar.gz.

File metadata

  • Download URL: scaleinvariance-0.6.0.tar.gz
  • Upload date:
  • Size: 24.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.10.13

File hashes

Hashes for scaleinvariance-0.6.0.tar.gz
Algorithm Hash digest
SHA256 59141a8755dfc476568e23a589923b740da023aedc82323dcc16dbd1bb25372f
MD5 b26cd33ecda2613b4ed567825e294bf2
BLAKE2b-256 10a6396c5821395d74e0e06877b59aa0396891c5f38f4e349efa46c226c0c868

See more details on using hashes here.

File details

Details for the file scaleinvariance-0.6.0-py3-none-any.whl.

File metadata

File hashes

Hashes for scaleinvariance-0.6.0-py3-none-any.whl
Algorithm Hash digest
SHA256 f5a348159a7e3e98f98fdfd4da2089d11b910d643ab73626d21346fa31e2b06f
MD5 e36f18e771f2f6b0283d48dcf9071cb9
BLAKE2b-256 96c1212ea8afabcdcde2f22f4980ce6892a22961ae4e2e039c0db04f9ffa7908

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page