Python interface for DualPerspective.jl - A Julia package for obtaining maximum-entropy solutions to underdetermined linear systems.
Project description
DualPerspective Python Package
Python interface for DualPerspective.jl, a Julia package for solving large-scale KL divergence problems.
Installation
pip install DualPerspective
The package will automatically:
- Install Julia if not already installed (via juliacall)
- Install the DualPerspective.jl Julia package from the official Julia registry
- Perform precompilation to ensure fast performance from the first run
Usage
import numpy as np
from DualPerspective import DPModel, solve, regularize
# Generate sample data
np.random.seed(42)
n = 200 # dimension of solution
m = 100 # number of measurements
x0 = np.pi * (tmp := np.random.rand(n)) / np.sum(tmp)
A = np.random.rand(m, n)
b = A @ x0 # measurements
# Create and solve the problem
model = DPModel(A, b)
regularize(model, 1e-4) # Optional: set regularization parameter
solution = solve(model)
print(f"Sum of solution: {np.sum(solution):.6f} (should be ≈ {np.pi:.6f})")
print(f"Optimal solution shape: {solution.shape}")
Reinstalling the DualPerspective.jl package
To reinstall or update the DualPerspective.jl package, you can use the following command:
pip install --force-reinstall DualPerspective
Performance Considerations
This Python interface uses Julia's precompilation features to ensure good performance from the first run. The first import of the package may take slightly longer as it sets up the Julia environment, but subsequent operations should be fast.
Features
- Easy-to-use Python interface for DualPerspective.jl
- Automatic installation of Julia dependencies
- Support for large-scale KL divergence problems
- Integration with NumPy arrays
- Precompilation for consistent performance
Requirements
- Python 3.7+
- NumPy
- juliacall
License
This project is licensed under the MIT License.
Advanced Usage
Reinstalling the Julia Package
If you need to reinstall the Julia package, you can simply reinstall the Python package:
pip install --force-reinstall DualPerspective
This will ensure you have the latest version from the Julia registry.
Development
Building and Publishing the Package
Follow these steps to build and publish new versions of the package to PyPI:
Prerequisites
Make sure you have the necessary tools:
pip install --upgrade build twine
Building the Package
Build both wheel and source distributions:
python -m build
This creates distribution files in the dist/ directory.
Testing Locally
Before publishing, test the package locally:
# Install in development mode
pip install -e .
# Or install the built wheel
pip install dist/DualPerspective-0.1.1-py3-none-any.whl
Publishing to TestPyPI (Optional)
To test the publishing process:
twine upload --repository-url https://test.pypi.org/legacy/ dist/*
# Install from TestPyPI
pip install --index-url https://test.pypi.org/simple/ DualPerspective
Publishing to PyPI
Once tested and ready:
twine upload dist/*
Updating for New Releases
- Update the version number in
pyproject.toml - Make code changes
- Rebuild:
python -m build - Upload:
twine upload dist/*
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file dualperspective-0.1.3a0.tar.gz.
File metadata
- Download URL: dualperspective-0.1.3a0.tar.gz
- Upload date:
- Size: 5.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
73b57b11fec1ec1aba71e0b128f8cbb7508f7461398a207440d236395eb9459f
|
|
| MD5 |
a1af380fbcac503c28c70fe716d21948
|
|
| BLAKE2b-256 |
c49b2ea272c69e758ba2c36d99d181285f990ee65bd7d669454471bf1477ea2e
|
File details
Details for the file dualperspective-0.1.3a0-py3-none-any.whl.
File metadata
- Download URL: dualperspective-0.1.3a0-py3-none-any.whl
- Upload date:
- Size: 4.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1194cca30ad3b4c2209e7b352452f24ccbc5486c37d2778e92c3e85ae8b72b0e
|
|
| MD5 |
5d7d2dd79585636e0e5a389bfb3b01ef
|
|
| BLAKE2b-256 |
c71c7ff05b58610b673b5cfd25a30068b85c22f82b110804a58ab9d4c6e6150b
|