fdars – Functional Data Analysis for Python
High-performance Functional Data Analysis for Python, powered by a Rust backend (fdars-core).
The Fdata Class
The central object in fdars is Fdata — a functional data container that bundles
observation data, evaluation grid, identifiers, and metadata into a single object
(mirroring the R package's fdata class).
import numpy as np
import pandas as pd
from fdars import Fdata
# Create functional data: 30 sine curves on [0, 1]
t = np.linspace(0, 1, 100)
X = np.array([np.sin(2 * np.pi * t + p) + np.random.normal(0, 0.1, 100)
for p in np.random.uniform(0, np.pi, 30)])
# Attach metadata as a pandas DataFrame
meta = pd.DataFrame({"group": ["A"] * 15 + ["B"] * 15,
"score": np.random.randn(30)})
fd = Fdata(X, argvals=t, metadata=meta)
fd
# Fdata (1D) – 30 obs × 100 points – range [0.0, 1.0] – metadata: group, score
# Subset — metadata DataFrame and IDs are preserved
fd_sub = fd[0:10]
fd_sub.metadata # DataFrame with 10 rows
# Methods delegate to the Rust backend
mu = fd.mean() # pointwise mean
fd_c = fd.center() # centered Fdata
d1 = fd.deriv(nderiv=1) # first derivative (returns Fdata)
norms = fd.norm(p=2.0) # L2 norms per curve
depths = fd.depth("fraiman_muniz") # depth values
D = fd.distance(method="lp") # self-distance matrix
# 2D surfaces work the same way
surfaces = np.random.randn(5, 8, 10) # 5 surfaces on 8×10 grid
fd2d = Fdata(surfaces, argvals=(np.arange(8), np.arange(10)))
You can still call low-level functions directly with raw NumPy arrays:
from fdars.depth import fraiman_muniz_1d
from fdars.metric import lp_self_1d
from fdars.clustering import kmeans_fd
depths = fraiman_muniz_1d(X, X)
D = lp_self_1d(X, t, p=2.0)
result = kmeans_fd(X, t, k=3, seed=42)
Modules
| Module | Description |
|---|---|
fdars.Fdata |
Functional data container (1D curves, 2D surfaces) with metadata |
fdars.fdata |
Low-level functional data operations (mean, derivatives, norms, centering) |
fdars.depth |
Depth functions (Fraiman-Muniz, modal, band, random projection, …) |
fdars.metric |
Distance metrics (Lp, Hausdorff, DTW, soft-DTW, Fourier, h-shift) |
fdars.basis |
Basis representations (B-splines, P-splines, Fourier) |
fdars.smoothing |
Nonparametric smoothing (Nadaraya-Watson, local polynomial, k-NN) |
fdars.clustering |
Clustering (k-means, fuzzy c-means, GMM) |
fdars.regression |
Regression (FPC linear, PLS, nonparametric, robust, FOSR, FANOVA) |
fdars.alignment |
Elastic alignment (SRSF, Karcher mean, elastic FPCA) |
fdars.outliers |
Outlier detection (LRT, outliergram, magnitude-shape) |
fdars.seasonal |
Seasonal analysis (SAZED, autoperiod, STL, peak detection) |
fdars.spm |
Statistical process monitoring (Phase I/II, EWMA, CUSUM) |
fdars.classification |
Classification (LDA, QDA, k-NN, kernel with cross-validation) |
fdars.tolerance |
Tolerance bands (FPCA, conformal, Degras SCB) |
fdars.conformal |
Conformal prediction (split, jackknife+) |
fdars.simulation |
Simulation (Karhunen-Loève, Gaussian processes) |
fdars.explain |
Explainability (SHAP, PDP, permutation importance, significant regions) |
Quick Start
git clone https://github.com/sipemu/pyfda.git
cd pyfda
python -m venv .venv && source .venv/bin/activate
pip install maturin numpy
maturin develop --release
The package exposes 16 submodules wrapping 130+ functions with zero-copy NumPy conversion. Requires Python >= 3.9.
Optional extras
The base package imports with zero optional dependencies. Feature layers install as extras:
pip install "fdars[sklearn]" # scikit-learn estimator layer (fit/transform/predict)
pip install "fdars[advisor]" # grounded parameter advisor (pydantic + Anthropic)
pip install "fdars[plot]" # matplotlib plotting helpers
[sklearn]installs scikit-learn (>=1.3,<1.7on Python 3.9,>=1.3on 3.10+) and enables thefdars.sklearnlayer: 28 estimators that pass the fullcheck_estimatorbattery and plug intoPipeline/GridSearchCV/cross_val_score. The base package still imports with zero scikit-learn installed. See the scikit-learn API docs.[advisor]enables the offline diagnostics + groundedadvise()layer; provider extras ([openai],[gemini],[ollama]) swap the LLM backend.
Development
# Install dev dependencies
pip install maturin numpy pytest matplotlib
# Build in development mode
maturin develop
# Run tests
pytest tests/
# Build documentation
pip install mkdocs-material
mkdocs serve
MSRV
The minimum supported Rust version is 1.83.
License
MIT — see LICENSE.
Release files for fdars 0.10.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| fdars-0.10.0.tar.gz | 4.7 MB | Details |
Built distributions (wheels)
| File | Reset | |||
|---|---|---|---|---|
| fdars-0.10.0-cp39-abi3-win_amd64.whl | CPython 3.9 | abi3 | Windows x86-64 | Details |
| fdars-0.10.0-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl | CPython 3.9 | abi3 | Linux glibc 2.17+ x86-64 | Details |
| fdars-0.10.0-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl | CPython 3.9 | abi3 | Linux glibc 2.17+ ARM64 | Details |
| fdars-0.10.0-cp39-abi3-macosx_11_0_arm64.whl | CPython 3.9 | abi3 | macOS 11.0+ ARM64 | Details |
| fdars-0.10.0-cp39-abi3-macosx_10_12_x86_64.whl | CPython 3.9 | abi3 | macOS 10.12+ x86-64 | Details |
Total release size: 22.4 MB
Release files / fdars-0.10.0.tar.gz
| Download URL | fdars-0.10.0.tar.gz |
|---|---|
| Size | 4.7 MB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
974d7fc49d984b6d910c4e19a17db8668ae9e8ba23eef221dc9530174c440a81
|
|
BLAKE2b-256 checksum How to use checksums |
a5d7247de33745c159bdb16ac970e16f3dee6fd027db27f654eeaee2679d710b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Release files / fdars-0.10.0-cp39-abi3-win_amd64.whl
| Download URL | fdars-0.10.0-cp39-abi3-win_amd64.whl |
|---|---|
| Size | 3.6 MB |
| Tags | CPython 3.9 Windows x86-64 abi3 |
|
SHA-256 checksum How to use checksums |
a3fb6f5eb896f8e0a2c04068343a4a9a59173c0b2a68102c0751e3bb1c214252
|
|
BLAKE2b-256 checksum How to use checksums |
16f36fd5dfc1fe8b92e36bd8308fa23639aa477b01dd787f1f49010172dc54cf
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Release files / fdars-0.10.0-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
| Download URL | fdars-0.10.0-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl |
|---|---|
| Size | 3.7 MB |
| Tags | CPython 3.9 Linux glibc 2.17+ x86-64 abi3 |
|
SHA-256 checksum How to use checksums |
fdefa27fa9f0ea4708b2e29f12c1813875485f54e258490814f442ac4c9906c7
|
|
BLAKE2b-256 checksum How to use checksums |
919254338ec074bbae0c24c9bd800a622bc2b03950be534cb2f51bfe37e5f5b9
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Release files / fdars-0.10.0-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
| Download URL | fdars-0.10.0-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl |
|---|---|
| Size | 3.5 MB |
| Tags | CPython 3.9 Linux glibc 2.17+ ARM64 abi3 |
|
SHA-256 checksum How to use checksums |
abae8dc053c97fbf391e3487c8a2be1abe9d634178f0cb766b1848a7aad1dfee
|
|
BLAKE2b-256 checksum How to use checksums |
2051041fd80d7b99adaefd36215d3e9d3006d3660f678ce5952332f2702dbe92
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Release files / fdars-0.10.0-cp39-abi3-macosx_11_0_arm64.whl
| Download URL | fdars-0.10.0-cp39-abi3-macosx_11_0_arm64.whl |
|---|---|
| Size | 3.3 MB |
| Tags | CPython 3.9 abi3 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
4a7d3f5c95112e1644dba6883bccbc7c04f99a8ebd864d5e804bb77142721c99
|
|
BLAKE2b-256 checksum How to use checksums |
47d06ac65a02ab967c6e81838531030e220ce61da9a481f918251fe36c6b09eb
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Release files / fdars-0.10.0-cp39-abi3-macosx_10_12_x86_64.whl
| Download URL | fdars-0.10.0-cp39-abi3-macosx_10_12_x86_64.whl |
|---|---|
| Size | 3.6 MB |
| Tags | CPython 3.9 abi3 macOS 10.12+ x86-64 |
|
SHA-256 checksum How to use checksums |
0021c52933b05f2de47841a0568dc4b5fefd7f52f0ccab40809b180cfd149dcb
|
|
BLAKE2b-256 checksum How to use checksums |
05d3700499fdb173ce15facc89b510e752bd61f6004d55ccfcf7ee5fd90e7052
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|