Skip to main content

dmx-learn

Tests Code Quality Documentation License Python

Distributed Mixture Learning - A package for distributed heterogeneous density estimation. With only a few lines of code you can specify and fit complex models on variable-length heterogeneous data.


📚 Documentation

View the full documentation on Read the Docs:

👉 https://dmx-learn.readthedocs.io/en/latest/


🚀 Installation

Using Poetry (Recommended)

dmx-learn uses Poetry for dependency management. Install Poetry first if you haven't already:

curl -sSL https://install.python-poetry.org | python3 -

Then install dmx-learn:

# Clone or navigate to the package directory
cd /path/to/dmx-learn

# Install core dependencies only
poetry install

# Or install with optional features using extras
poetry install -E torch            # Include PyTorch support
poetry install -E optional         # Include MPI and UMAP support
poetry install -E all              # Include all optional features

# Or using dependency groups (for dev/docs)
poetry install --with dev          # Include dev tools (pytest)
poetry install --with docs         # Include documentation tools

Using pip

You can also install with pip using extras:

# Basic installation
pip install /path/to/dmx-learn

# With PyTorch support
pip install /path/to/dmx-learn[torch]

# With MPI and UMAP support
pip install /path/to/dmx-learn[optional]

# With all optional features
pip install /path/to/dmx-learn[all]

📦 Optional Dependencies

dmx-learn supports several optional dependency extras and groups:

Extras (for pip and Poetry)

Extra Install Command Includes Use Case
torch pip install .[torch] or poetry install -E torch PyTorch GPU-accelerated distributions
optional pip install .[optional] or poetry install -E optional mpi4py, umap-learn Distributed computing
all pip install .[all] or poetry install -E all All above Everything

Groups (Poetry only - for development)

Group Install Command Includes Use Case
dev poetry install --with dev pytest, pytest-dependency Testing
docs poetry install --with docs sphinx, sphinx-rtd-theme Documentation building

Install multiple extras and groups:

# Poetry: extras with -E, groups with --with
poetry install -E all --with dev,docs

# pip: multiple extras with comma
pip install .[torch,optional]

Check what's installed:

poetry show

📖 Usage Examples

Stats Examples (scipy-based)

Examples using stats distributions (always available) are located in ./examples/:

# Using Poetry
poetry run python ./examples/stats_examples/mixture_example.py

# Or set PYTHONPATH
export PYTHONPATH=/path/to/dmx-learn:$PYTHONPATH
python ./examples/stats_examples/mixture_example.py

Torch Examples (PyTorch-based)

Examples using torch_stats (requires PyTorch) are located in ./examples_torch/:

poetry run python ./examples_torch/stats_examples/mixture_example.py

🌐 Running with Spark

Examples that run with Apache Spark are located in ./examples_spark/.

First, build a wheel:

cd /path/to/dmx-learn
pip install setuptools wheel
python setup.py bdist_wheel

Then run with Spark:

/path/to/spark/bin/spark-submit \
  --master local[*] \
  --py-files /path/to/dmx-learn/dist/dmx-learn-1.0.0-py3-none-any.whl \
  ./examples_spark/mixture_example.py

🚄 Running with MPI4PY

Examples using mpi4py are located in ./examples_mpi4py/.

Install MPI support:

# Using Poetry
poetry install -E optional

# Using pip
pip install /path/to/dmx-learn[optional]

Run with MPI:

# Run with 4 processes
mpiexec -n 4 poetry run python ./examples_mpi4py/estimation_example.py

🔥 PyTorch Support (Optional)

dmx-learn includes torch_stats, a PyTorch-based implementation of statistical distributions for GPU-accelerated computation.

Installing with PyTorch

# Using Poetry (recommended)
poetry install -E torch

# Using pip
pip install /path/to/dmx-learn[torch]

Using torch_stats

from dmx.torch_stats import GaussianDistribution, MixtureDistribution

# Create distributions (runs on GPU if available)
dist = GaussianDistribution(mu=0.0, sigma2=1.0)

# Automatic device detection
from dmx.torch_utils import detect_device
device = detect_device()  # Returns 'cuda', 'mps', or 'cpu'

Running Torch Examples

Examples using torch_stats are located in ./examples_torch/:

poetry run python ./examples_torch/stats_examples/mixture_example.py

Testing with PyTorch

Run torch_stats tests on different devices:

# Default (CPU)
poetry run pytest tests/torch_stats

# On Apple Silicon MPS
export NUMBA_DISABLE_JIT=1
TEST_TORCH_DEVICE=mps poetry run pytest tests/torch_stats

# On CUDA
export NUMBA_DISABLE_JIT=1
TEST_TORCH_DEVICE=cuda poetry run pytest tests/torch_stats

See tests/torch_stats/README.md for detailed testing information.


🧪 Testing

Run All Tests

# Using Poetry
poetry run pytest tests/

# Using the test runner script
./test_runner.sh all

Run Specific Test Suites

# Stats tests (always available)
poetry run pytest tests/stats

# Torch tests (requires PyTorch)
export NUMBA_DISABLE_JIT=1
poetry run pytest tests/torch_stats

# Quick sanity check
./test_runner.sh quick

Test Runner Script

The test_runner.sh helper script makes testing easier:

./test_runner.sh stats        # Run stats tests
./test_runner.sh torch        # Run torch tests (CPU)
./test_runner.sh torch-mps    # Run torch tests (MPS)
./test_runner.sh all          # Run all tests
./test_runner.sh quick        # Quick sanity check

🔧 Development Setup

For development with all features:

# Clone the repository
git clone https://github.com/llnl/dmx-learn.git
cd dmx-learn

# Install Poetry
curl -sSL https://install.python-poetry.org | python3 -

# Install all dependencies including dev tools
poetry install -E all --with dev,docs

# Run tests
poetry run pytest tests/

# Build documentation
cd docs
poetry run make html

📋 Requirements

  • Python: >= 3.10
  • Core Dependencies: numpy, scipy, numba, pandas, pyspark, mpmath
  • Optional: torch (for GPU acceleration), mpi4py (for distributed computing)

🆘 Troubleshooting

PyTorch Not Found

If you see errors about PyTorch not being installed:

# Install torch extra with Poetry
poetry install -E torch

# Or with pip
pip install /path/to/dmx-learn[torch]

Tests Failing

Make sure you have the test dependencies:

poetry install --with dev

For torch tests, set the environment variable:

export NUMBA_DISABLE_JIT=1

Import Errors

Make sure the package is installed:

poetry install

Or add to PYTHONPATH:

export PYTHONPATH=/path/to/dmx-learn:$PYTHONPATH

License

dmx-learn is distributed under the terms of the BSD 3-Clause license. See LICENSE and NOTICE for details.

SPDX-License-Identifier: BSD-3-Clause

LLNL-CODE-844837

Metadata

Release files for dmx-learn 1.1.0

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

Source distribution (sdist)

Source distribution for dmx-learn 1.1.0
File Size Uploaded
dmx_learn-1.1.0.tar.gz 350.1 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for dmx-learn 1.1.0
File Interpreter ABI Platform
dmx_learn-1.1.0-py3-none-any.whl Python 3 none any Details

Total release size: 820.2 kB

Release files / dmx_learn-1.1.0.tar.gz

Download URL dmx_learn-1.1.0.tar.gz
Size 350.1 kB
Tags Source
SHA-256 checksum
How to use checksums
d891e25e62b7860f4b927cfb01bd66112bf08d480fdd3a16c685e00e0ebbec3e
BLAKE2b-256 checksum
How to use checksums
0efab4f1a8191bcb2ab4f7613b2b7c2fdd5610952caec9aab3ab2353dd2edd26
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/2.3.3 CPython/3.13.2 Darwin/25.5.0

Release files / dmx_learn-1.1.0-py3-none-any.whl

Download URL dmx_learn-1.1.0-py3-none-any.whl
Size 470.1 kB
Tags Python 3
SHA-256 checksum
How to use checksums
83697d7a0a6da1ccbbeb491a886dbb1ac56a0a7293c8050812e29f6f49ae9d3e
BLAKE2b-256 checksum
How to use checksums
7f04fdcdd0bacc754ec0961e560cf3ed51f389c8035035298733c8d0fd11a576
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/2.3.3 CPython/3.13.2 Darwin/25.5.0

Release history Release notifications | RSS feed

1.1.1

2 release files

This release

1.1.0 This release

2 release files

1.0.0

2 release files

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