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.11.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.11.0.tar.gz | 5.1 MB | Details |
Built distributions (wheels)
| File | Reset | |||
|---|---|---|---|---|
| fdars-0.11.0-cp39-abi3-win_amd64.whl | CPython 3.9 | abi3 | Windows x86-64 | Details |
| fdars-0.11.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.11.0-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl | CPython 3.9 | abi3 | Linux glibc 2.17+ ARM64 | Details |
| fdars-0.11.0-cp39-abi3-macosx_11_0_arm64.whl | CPython 3.9 | abi3 | macOS 11.0+ ARM64 | Details |
| fdars-0.11.0-cp39-abi3-macosx_10_12_x86_64.whl | CPython 3.9 | abi3 | macOS 10.12+ x86-64 | Details |
Total release size: 22.9 MB
Release files / fdars-0.11.0.tar.gz
| Download URL | fdars-0.11.0.tar.gz |
|---|---|
| Size | 5.1 MB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
169c201c181df391bdb45944d0fd0ce42b250a0ac3c47bf7318b86504c773916
|
|
BLAKE2b-256 checksum How to use checksums |
587d5024a8aa545a189540c59958b297150c2bd7ec9a2ea0f5b9509e2aa44a91
|
| 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.11.0-cp39-abi3-win_amd64.whl
| Download URL | fdars-0.11.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 |
31feed19f02c64436379d908c10e89b5d7e126c78899ac3a95ff9d754ce3e740
|
|
BLAKE2b-256 checksum How to use checksums |
1479ef4d9a8162fad41e46c9371dc69690d7fd3c830da3c124c56cc532315670
|
| 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.11.0-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
| Download URL | fdars-0.11.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 |
5f0885857d38d8e7ab9a5fd5557ff57950f70393162255eca6c40cbce5afcd22
|
|
BLAKE2b-256 checksum How to use checksums |
be876fad55104a541049205ef555697bd096684cd67d752f7da48d026e2cc3c6
|
| 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.11.0-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
| Download URL | fdars-0.11.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 |
7467847f92bd78e13ba75b4cf619961d6f5282865f64c38e93e2e6d55cddb9e3
|
|
BLAKE2b-256 checksum How to use checksums |
aa51f5f0f25e0b151fd1cf9d90005b8b894f9b2824d2e5c5271a812284aa4617
|
| 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.11.0-cp39-abi3-macosx_11_0_arm64.whl
| Download URL | fdars-0.11.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 |
90928977e28bbab33c2c352039b9601c800ad8aa5094eda0663e73d4bb5c68c4
|
|
BLAKE2b-256 checksum How to use checksums |
92e459e1b62858f487ef71f180e997fdf000a4fd2d16a15ca757b4206b2551e5
|
| 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.11.0-cp39-abi3-macosx_10_12_x86_64.whl
| Download URL | fdars-0.11.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 |
08ffefa853e03dc16ddd06be8892ec39e7592594686a43fdbba9a350d8ee4b94
|
|
BLAKE2b-256 checksum How to use checksums |
c35c40d6a014d2f1064977d1e0fe18a355e01def6fc5c814b7faf004a07c9c31
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|