Skip to main content

FOSCAT

FOSCAT (Field cOmpression via Scattering CovariAnce Transform) is a Python library for wavelet/scattering-based statistical analysis, synthesis, denoising, and deep learning on 2D fields and on the sphere with HEALPix pixelisation.

The central idea: any spatial field can be summarised by a compact vector of scattering-covariance statistics Φ(d) — encoding multi-scale, cross-orientation correlations beyond what a power spectrum captures. FOSCAT can then synthesise a new field matching those statistics, use them as a loss for denoising or component separation, or feed them into neural-network architectures that operate directly on spherical geometry.

Docs PyPI CI License


Install

pip install foscat

Full environment for running the example notebooks:

micromamba create -n foscat python=3.10
micromamba activate foscat
pip install foscat torch healpy xarray gcsfs zarr jupyterlab matplotlib scipy

Backend note: FOSCAT uses PyTorch as its only active backend (TensorFlow and NumPy backends are no longer maintained).


Minimal HEALPix synthesis

import numpy as np
import foscat.scat_cov as sc
from foscat.Synthesis import Loss, Synthesis

nside = 64
target_map = np.random.randn(12 * nside**2)

# build the scattering operator and compute target statistics
scat_op     = sc.funct(KERNELSZ=5, NORIENT=4, nstep_max=4, all_type='float64')
target_stat = scat_op.eval(target_map)

# define a differentiable loss
def synth_loss(x, scat_op, args):
    ref  = args[0]
    stat = scat_op.eval(x)
    return stat.reduce_mean_batch((stat - ref) ** 2)

loss   = Loss(synth_loss, scat_op, target_stat)
solver = Synthesis([loss], eta=0.03)

x0     = np.random.randn(12 * nside**2)
result = solver.run(x0, NUM_EPOCHS=300, EVAL_FREQUENCY=10)

What FOSCAT can do

Capability Entry point Example notebook
HEALPix synthesis foscat.scat_cov.funct + Synthesis Demo_Synthesis.ipynb
2D image synthesis foscat.scat_cov2D.funct + Synthesis Synthesis2D.ipynb
Denoising two-loss synthesis (statistics + fidelity) Denoising-2D.ipynb
Component separation multi-loss synthesis Remove_CMB.ipynb
Local spherical analysis cell_ids in FoCUS / HealpixUNet local_foscat.ipynb
Spherical U-Net (regression/segmentation) HealpixUNet CNN_local.ipynb, CNN_ecmwf.ipynb

Example notebooks are maintained in demo-foscat-pangeo-eosc.


Documentation

Full documentation (installation, mathematical background, API reference, user guide) is published at:

https://jmdelouis.github.io/FOSCAT/

To build the docs locally:

cd docs_sphinx
make install   # pip install requirements.txt
make html      # → _build/html/index.html
make livehtml  # live-reload on save (requires sphinx-autobuild)

Citation

If you use FOSCAT in a publication, please cite:

@software{foscat,
  author  = {Delouis, Jean-Marc and Foulquier, Theo},
  title   = {{FOSCAT}: Field cOmpression via Scattering CovariAnce Transform},
  year    = {2026},
  url     = {https://github.com/jmdelouis/FOSCAT},
  version = {2026.04.1},
}

The underlying statistical framework is described in:

  • Allys et al. (2019), Rwst, a comprehensive statistical description of the non-Gaussian structures in the ISM, A&A 629, A115.
  • Allys et al. (2020), New interpretable statistics for large-scale structure analysis and generation, Phys. Rev. D 102, 103506.

License

BSD 3-Clause. See LICENSE.

Metadata

Release files for foscat 2026.6.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for foscat 2026.6.1
File Size Uploaded
foscat-2026.6.1.tar.gz 224.5 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for foscat 2026.6.1
File Interpreter ABI Platform
foscat-2026.6.1-py3-none-any.whl Python 3 none any Details

Total release size: 468.7 kB

Release files / foscat-2026.6.1.tar.gz

Download URL foscat-2026.6.1.tar.gz
Size 224.5 kB
Tags Source
SHA-256 checksum
How to use checksums
3d2518fca343143085a51acfd5176433ca07713ea0e9d5b80307cd696737131e
BLAKE2b-256 checksum
How to use checksums
336626a30f0c1327dc9419013a34c1af411040b1126b725556d78e14ea2f9a43
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.11.13

Release files / foscat-2026.6.1-py3-none-any.whl

Download URL foscat-2026.6.1-py3-none-any.whl
Size 244.1 kB
Tags Python 3
SHA-256 checksum
How to use checksums
f3f32f4b7f4a481345f493e57d38acbc0a827df9fc510af95a7d03d5ea6093c3
BLAKE2b-256 checksum
How to use checksums
65cbaf68f5797e8bed885b5436bc1aa25236700930786ff5881298d7dcc1dbbc
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.11.13

Release history Release notifications | RSS feed

This release

2026.6.1 This release

2 release files

3.9.0

2 release files

3.8.2

2 release files

3.8.0

2 release files

3.7.3

2 release files

3.7.2

2 release files

3.7.1

2 release files

3.7.0

2 release files

3.6.1

2 release files

3.6.0

2 release files

3.4.0

2 release files

3.3.6

2 release files

3.3.5

2 release files

3.3.4

2 release files

3.3.3

2 release files

3.3.1

2 release files

3.3.0

2 release files

3.2.0

2 release files

3.1.6

2 release files

3.1.5

2 release files

3.1.4

2 release files

3.1.3

2 release files

3.1.2

2 release files

3.1.1

2 release files

3.1.0

2 release files

3.0.47

2 release files

3.0.46

2 release files

3.0.45

2 release files

3.0.44

2 release files

3.0.43

2 release files

3.0.42

2 release files

3.0.41

2 release files

3.0.40

2 release files

3.0.36

2 release files

3.0.35

2 release files

3.0.34

2 release files

3.0.33

2 release files

3.0.32

2 release files

3.0.31

2 release files

3.0.30

2 release files

3.0.29

2 release files

3.0.24

2 release files

3.0.23

2 release files

3.0.22

2 release files

3.0.21

2 release files

3.0.20

2 release files

3.0.19

2 release files

3.0.18

2 release files

3.0.17

2 release files

3.0.16

2 release files

3.0.11

2 release files

3.0.10

2 release files

3.0.9

2 release files

3.0.8

2 release files

3.0.7

2 release files

3.0.6

2 release files

3.0.5

2 release files

3.0.4

2 release files

3.0.3

2 release files

3.0.2

2 release files

3.0.1

2 release files

3.0.0

2 release files

2.3.8

2 release files

2.3.7

2 release files

2.3.6

2 release files

2.3.5

2 release files

2.3.4

2 release files

2.3.2

2 release files

2.3.1

2 release files

2.3.0

2 release files

2.2.1

2 release files

2.2.0

2 release files

2.1.4

2 release files

2.1.3

2 release files

2.1.2

2 release files

2.1.1

2 release files

2.1.0

2 release files

2.0.7

2 release files

2.0.6

2 release files

2.0.5

2 release files

2.0.4

2 release files

2.0.3

2 release files

2.0.2

2 release files

2.0.1

2 release files

2.0.0

2 release files

1.9.6

2 release files

1.9.5

2 release files

1.9.4

2 release files

1.9.3

2 release files

1.9.2

2 release files

1.9.1

2 release files

1.9.0

2 release files

1.1.14

2 release files

1.1.10

2 release files

1.1.2

2 release files

1.1.0

2 release files

1.0.91

2 release files

1.0.9

2 release files

1.0.4

2 release files

1.0.3

2 release files

1.0.2

2 release files

1.0.1

2 release files

1.0.0

2 release files

0.1.7

2 release files

0.1.6

2 release files

0.1.5

2 release files

0.1.4

2 release files

0.1.3

2 release files

0.1.2

2 release files

0.1

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page