AUB-HTP
⚠️ ATTENTION ⚠️ You are currently viewing the unreleased development version of the AUB-HTP codebase. Please find the latest released version of the AUB-HTP codebase v1.1.X here.
American University of Beirut's Heavy Tails Package (AUB-HTP) is a modern python toolkit for analyzing Alpha Stable Distributions (also called Levy-Stable distributions)
AUB-HTP includes:
- SciPy compatible Alpha Stable Distribution:
- Scikit-learn compatible
AlphaStableLinearRegressorLinear regressor for Alpha Stable distributed data - Scikit-learn compatible
AlphaStableKMeansKmeans clustering for Alpha Stable distributed data - Robust Alpha Stable statistics:1
alpha_poweralpha_location
Installation
pip install aub-htp
For alternative installation methods (uv, conda, poetry), see the installation guide.
Usage
Univariate Alpha Stable Distributions
Univariate Probability Density Function (PDF) Generation
import aub_htp as ht
import numpy as np
x = np.linspace(-10, 10, 100)
y = ht.alpha_stable.pdf(x, alpha = 0.4, beta = 0.8, loc = 2, scale = 3)
You can also switch between parametrizations S0 and S1 (default).
import aub_htp as ht
import numpy as np
x = np.linspace(-10, 10, 100)
ht.alpha_stable.with_parametrization("S0")
y = ht.alpha_stable.pdf(x, alpha = 0.4, beta = 0.8, loc = 2, scale = 3)
Univariate Random Variable Sampling (RVS)
import aub_htp as ht
sample = ht.alpha_stable.rvs(alpha = 0.4, beta = 0.8, loc = 2, scale = 3)
print(sample)
# --------------------------------------------------------------------
# 32712.16830783209
import aub_htp as ht
ht.alpha_stable.with_parametrization("S0")
samples = ht.alpha_stable.rvs(alpha = 0.4, beta = 0.8, loc = 2, scale = 3, size = (2,5), random_state = 38)
print(samples)
# --------------------------------------------------------------------
# [[ 3.23516232 2.69285354 6.42379299 2.47262474 0.9449036 ]
# [259.96755723 0.6227459 118.69956139 3.63961872 3.45083368]]
Multivariate Alpha Stable Distributions
Multivariate Random Variable Sampling (RVS)
Sampling from a multivariate alpha stable distribution requires knowledge of the underlying mathematical spectral measure you wish to sample against. AUB-HTP's standard library of spectral measure samplers includes:
- Isotropic Spectral Measure Sampler
- Elliptic Spectral Measure Sampler
- Discrete Spectral Measure Sampler
- Mixed Spectral Measure Sampler
- Univariate Spectral Measure Sampler
Example 0: Sampling from the standard 2d isotropic spectral measure.
import aub_htp as ht
samples = ht.multivariate_alpha_stable.rvs(alpha = 1.2, spectral_measure_sampler = "standard_isotropic_2d")
print(samples)
Example 1: Sampling from an isotropic spectral measure.
import aub_htp as ht
from aub_htp.random import IsotropicSampler
alpha = 1.2
sampler = IsotropicSampler(number_of_dimensions= 2, alpha = alpha, gamma = 2)
samples = ht.multivariate_alpha_stable.rvs(alpha = alpha, spectral_measure_sampler = sampler, size = 10)
print(samples)
Example 2: Sampling from a mixed spectral measure.
import aub_htp as ht
from aub_htp.random import IsotropicSampler, EllipticSampler, DiscreteSampler, MixedSampler
alpha = 0.6
isotropic = IsotropicSampler(number_of_dimensions = 2 , alpha = alpha, gamma = 2)
elliptic = EllipticSampler(number_of_dimensions = 2, alpha = alpha, sigma = [[10, 2],
[2, 50]])
discrete = DiscreteSampler(alpha = alpha, positions = [[0, 1], [-1, 0]], weights = [0.2, 0.8])
mixed = MixedSampler(spectral_measures = [isotropic, elliptic, discrete], weights = [0.4, 0.4, 0.2])
samples = ht.multivariate_alpha_stable.rvs(alpha = alpha, spectral_measure_sampler = mixed, shift = [4, 2], size = 10)
print(samples)
Custom Spectral Measures
You can also extend the standard library collection by extending the base class BaseSpectralMeasureSampler.
Important Note: When sampling an alpha stable vector against your custom defined spectral measure with $alpha \ge 1$, your custom spectral measure $\Lambda$ has to uphold the following property: $$\int_{\mathbb{S}^{d-1}}s\Lambda(ds)=0$$
Example: Butterfly Spectral Measure Sampler
import aub_htp as ht
from aub_htp.random import BaseSpectralMeasureSampler
import numpy as np
class ButterflySampler(BaseSpectralMeasureSampler):
def sample(self, number_of_samples: int, random_state = None):
p = np.random.rand(number_of_samples)
theta = np.empty(number_of_samples)
mask = p <= 0.5
theta[mask] = np.random.uniform(-np.pi / 4, np.pi / 4, size=mask.sum())
theta[~mask] = np.random.uniform(
3 * np.pi / 4,
5 * np.pi / 4,
size=(~mask).sum()
)
x = np.cos(theta)
y = np.sin(theta)
return np.column_stack((x, y))
def dimensions(self) -> int:
return 2
def mass(self) -> float:
return 1.0
samples = ht.multivariate_alpha_stable.rvs(alpha = 0.8, spectral_measure_sampler=ButterflySampler(), size = 10000)
Linear Regressor For Alpha Stable Distributed Data
// TODO: ADD TUTORIAL
Kmeans Clustering For Alpha Stable Distributed Data
// TODO: ADD TUTORIAL
Papers and Further Readings
Preprints
Density Functions and Random Number Generators of α-Stable Distributions (2026)
Heavy-Tailed Principal Component Analysis (2026)
Other References
Univariate Stable Distributions Models for Heavy Tailed Data By John P. Nolan (2020)
Multivariate elliptically contoured stable distributions: Theory and estimation (2013)
Integral representations of one-dimensional projections for multivariate stable densities (2009)
Multivariate Stable Densities as Functions of One Dimensional Projections (1998)
Metadata
Release files for aub-htp 1.1.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| aub_htp-1.1.1.tar.gz | 63.2 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| aub_htp-1.1.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 130.0 kB
Release files / aub_htp-1.1.1.tar.gz
| Download URL | aub_htp-1.1.1.tar.gz |
|---|---|
| Size | 63.2 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
d0078108e25bbd943b57e73a54e0eb1065b74bedd9321fe1417a81b129c0039b
|
|
BLAKE2b-256 checksum How to use checksums |
b1788d0c59d8155dbbf2739322e1c92a069e7870fd2f53676f7d421cb9db3bc1
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 10, 2026.
Transparency logRelease files / aub_htp-1.1.1-py3-none-any.whl
| Download URL | aub_htp-1.1.1-py3-none-any.whl |
|---|---|
| Size | 66.8 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
4176603b3a4633b5bed81024f4747eed9a4632901f94c61a34a404cdc6ff6f96
|
|
BLAKE2b-256 checksum How to use checksums |
ae979ad0fb169e00bb575a928f2b58c22baa3064c6b2e2292627cb84977e40ec
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 10, 2026.
Transparency log