"""Functional API of zea.

This module provides a collection of functions for various operations on tensors
and ultrasound data. These functions can be used standalone, in contrast to the :mod:`zea.ops` module which provides operation classes for building processing pipelines.
"""

from .tensor import (
    L1,
    L2,
    add_salt_and_pepper_noise,
    apply_along_axis,
    batch_cov,
    boolean_mask,
    check_patches_fit,
    compute_required_patch_overlap,
    compute_required_patch_shape,
    correlate,
    extend_n_dims,
    find_contour,
    flatten,
    fori_loop,
    func_with_one_batch_dim,
    gaussian_filter,
    gaussian_filter1d,
    images_to_patches,
    interpolate_data,
    is_jax_prng_key,
    is_monotonic,
    linear_sum_assignment,
    map_indices_for_interpolation,
    matrix_power,
    nonzero,
    normalize,
    pad_array_to_divisible,
    patches_to_images,
    resample,
    reshape_axis,
    simple_map,
    sinc,
    split_seed,
    split_volume_data_from_axis,
    stack_volume_data_along_axis,
    translate,
    vmap,
)
from .ultrasound import (
    channels_to_complex,
    complex_to_channels,
    compute_time_to_peak,
    compute_time_to_peak_stack,
    demodulate,
    demodulate_not_jitable,
    envelope_detect,
    get_band_pass_filter,
    get_low_pass_iq_filter,
    hilbert,
    log_compress,
    make_tgc_curve,
    upmix,
)

__all__ = [
    # Tensor functions
    "L1",
    "L2",
    "add_salt_and_pepper_noise",
    "apply_along_axis",
    "batch_cov",
    "boolean_mask",
    "check_patches_fit",
    "compute_required_patch_overlap",
    "compute_required_patch_shape",
    "correlate",
    "extend_n_dims",
    "find_contour",
    "flatten",
    "fori_loop",
    "func_with_one_batch_dim",
    "gaussian_filter",
    "gaussian_filter1d",
    "images_to_patches",
    "interpolate_data",
    "is_jax_prng_key",
    "is_monotonic",
    "linear_sum_assignment",
    "map_indices_for_interpolation",
    "matrix_power",
    "nonzero",
    "normalize",
    "pad_array_to_divisible",
    "patches_to_images",
    "resample",
    "reshape_axis",
    "simple_map",
    "sinc",
    "split_seed",
    "split_volume_data_from_axis",
    "stack_volume_data_along_axis",
    "translate",
    "vmap",
    # Ultrasound functions
    "channels_to_complex",
    "complex_to_channels",
    "compute_time_to_peak",
    "compute_time_to_peak_stack",
    "demodulate",
    "demodulate_not_jitable",
    "envelope_detect",
    "get_band_pass_filter",
    "get_low_pass_iq_filter",
    "hilbert",
    "upmix",
    "log_compress",
    "make_tgc_curve",
]
