Skip to main content

quoptuna is a proposed open-source project that combines quantum computing with Optuna's hyperparameter optimization framework.

Project description

QuOptuna

QuOptuna Logo

QuOptuna

Bridging quantum computing and hyperparameter optimization for next-generation machine learning

CodeRabbit Pull Request Reviews License Python 3.11+

DeepWiki


📚 Table of Contents


🌟 About

QuOptuna seamlessly integrates quantum computing capabilities with the powerful Optuna hyperparameter optimization framework. By leveraging quantum algorithms, QuOptuna enables researchers and practitioners to explore optimization landscapes more efficiently, pushing the boundaries of what's possible in machine learning and computational research.

Whether you're working with quantum machine learning models or classical algorithms, QuOptuna provides the tools you need to find optimal hyperparameters faster and more effectively.

✨ Key Features

  • 🔬 Quantum-Enhanced Optimization: Specialized hyperparameter tuning algorithms designed specifically for quantum machine learning workflows
  • 🎯 Hybrid Model Support: Seamlessly optimize both quantum and classical models
    • Quantum Models: Circuit-Centric Classifier, Data Reuploading Classifier, Quantum Kitchen Sinks, and more
    • Classical Models: SVC, MLP Classifier, Perceptron, and other scikit-learn compatible models
  • 📊 Interactive Dashboard: Real-time visualization of optimization progress through an intuitive Streamlit interface
  • 🔍 Explainable AI: Built-in interpretability tools to understand model decisions and optimization trajectories
  • 🔌 Extensible Architecture: Plugin-friendly design for easy integration with custom models and optimization strategies

📦 Installation

QuOptuna requires Python 3.11 or 3.12. Install using your preferred package manager:

Using UV (Recommended)

uv pip install quoptuna

Using pip

pip install quoptuna

Development Installation

For contributors and developers:

git clone https://github.com/Qentora/quoptuna.git
cd quoptuna
uv pip install -e ".[dev]"

🚀 Quick Start

Get up and running in minutes. QuOptuna searches quantum and classical classifiers for you — you provide data, it finds the best model and hyperparameters:

from quoptuna import DataPreparation, Optimizer

# Load and prepare a CSV (binary targets use the {-1, +1} convention)
data_prep = DataPreparation(
    file_path="your_data.csv",
    x_cols=["feature_1", "feature_2", "feature_3"],
    y_col="target",
)
data_dict = data_prep.get_data(output_type="2")

# Run the hyperparameter search across quantum + classical models
optimizer = Optimizer(db_name="experiment", study_name="trial_1", data=data_dict)
study, best_trials = optimizer.optimize(n_trials=100)

# Display results
print(f"Best F1 score: {best_trials[0].value:.4f}")
print(f"Best model:    {best_trials[0].params['model_type']}")

🖥️ Launch the Application

QuOptuna bundles a pre-built web UI inside the Python package, so a single command boots the whole app — no Node.js, no repository checkout, just Python:

# Run straight from PyPI without installing anything permanently
uvx quoptuna

# ...or, in a project/venv that already has quoptuna installed
uv run quoptuna run

This starts one FastAPI/uvicorn process that serves both the JSON API and the bundled UI on a single port (defaulting to :8000, auto-incrementing if busy), greets you with a gradient ASCII banner, and opens your browser automatically.

URL What
http://localhost:8000 Web UI
http://localhost:8000/api/v1/... JSON API
http://localhost:8000/api/docs Interactive API docs

Common options:

# Pick an explicit port and skip auto-opening the browser
uv run quoptuna run --port 8001 --no-browser

# Launch the legacy Streamlit dashboard instead of the full stack
uv run quoptuna run --streamlit

Running uv run quoptuna (or uvx quoptuna) with no subcommand is equivalent to uv run quoptuna run.

Dev vs packaged. The command above is the packaged mode (one process, one port, served from the wheel). For frontend development with hot reload, use the dev mode — two processes — via make run_cli (Next.js dev server on :3000 + FastAPI on :8000). See the docs for details.

📖 Documentation

Comprehensive documentation, tutorials, and API references are available at:

https://Qentora.github.io/quoptuna

Topics covered include:

  • Detailed installation guides
  • Quantum algorithm integration
  • Advanced optimization techniques
  • Custom sampler implementation
  • API reference

🛠️ Development

We welcome contributions from the community! Here's how to set up your development environment:

Prerequisites

  • Python 3.11 or 3.12
  • UV package manager (recommended) or pip
  • Node.js 18+ — only for frontend development; the published package ships a pre-built UI, so running QuOptuna does not require Node
  • Git

Setup Development Environment

# Clone the repository
git clone https://github.com/Qentora/quoptuna.git
cd quoptuna

# Install development dependencies
uv pip install -e ".[dev]"

Running Tests

# Run all tests
uv run pytest

# Run with coverage report
uv run pytest --cov=quoptuna

# Generate HTML coverage report
uv run pytest --cov=quoptuna --cov-report=html

Code Quality

Maintain code quality with our linting and type-checking tools:

# Run linter
uv run ruff check .

# Auto-fix linting issues
uv run ruff check . --fix

# Type checking
uv run mypy .

🤝 Contributing

We're excited to have you contribute to QuOptuna! Here's how you can help:

  1. Fork the repository on GitHub
  2. Create a feature branch: git checkout -b feature/amazing-feature
  3. Make your changes and write tests
  4. Commit your changes: git commit -m 'Add amazing feature'
  5. Push to the branch: git push origin feature/amazing-feature
  6. Open a Pull Request

Please ensure your code:

  • Passes all tests (pytest)
  • Follows our style guide (ruff check)
  • Includes appropriate documentation
  • Has type hints where applicable

For detailed guidelines, see our Contributing Guidelines.

📄 License

This project is licensed under the Apache 2.0 License. See the LICENSE file for full details.

🙏 Acknowledgments

This project builds on the excellent work of:

Special thanks to all our contributors who help make QuOptuna better!


📊 Project Activity

Repography logo / Recent activity

Timeline graph Issue status graph Pull request status graph Top contributors


DocumentationReport BugRequest Feature

Made with ❤️ by the Qentora team

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

quoptuna-0.1.3.tar.gz (2.4 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

quoptuna-0.1.3-py3-none-any.whl (2.5 MB view details)

Uploaded Python 3

File details

Details for the file quoptuna-0.1.3.tar.gz.

File metadata

  • Download URL: quoptuna-0.1.3.tar.gz
  • Upload date:
  • Size: 2.4 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.29 {"installer":{"name":"uv","version":"0.11.29","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for quoptuna-0.1.3.tar.gz
Algorithm Hash digest
SHA256 5471028cb386f493fda1491d601de16a7b5467ecfbb0caf4a343efbb4162470f
MD5 213db1fdb5b7250b10f76eb19ecaf42d
BLAKE2b-256 3141644508c06d03a3fb8e5da6e894b1eb168d8493701d3d9122f5ffca6af077

See more details on using hashes here.

File details

Details for the file quoptuna-0.1.3-py3-none-any.whl.

File metadata

  • Download URL: quoptuna-0.1.3-py3-none-any.whl
  • Upload date:
  • Size: 2.5 MB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.29 {"installer":{"name":"uv","version":"0.11.29","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for quoptuna-0.1.3-py3-none-any.whl
Algorithm Hash digest
SHA256 e570539503d8883c32c82789c45de8c9a435f9192253fcb3ce00fde5a2a49d37
MD5 907be1a6c7e5aa28772500fac75578bd
BLAKE2b-256 4d11a2be661d3bef424e4899cb5eb5f02e951b64b6649d085606946a35f0a646

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page