Skip to main content

sawatabi-logo

sawatabi

PyPI PyPI - Python Version GitHub repo size GitHub Workflow Status Codecov branch GitHub Code style: black

Sawatabi is an application framework to develop and run stream-data-oriented Ising applications with quantum annealing.

Visualization of a Sample Sawatabi Application

The animation shows visualization of Outlier Detection Problem and its solutions obtained by a Sawatabi application. The Ising fomulation for the Outlier Detection Problem proposed in [1] is used. The left figure represents continuous input event data (stream-data) where blue points mean normal values and red points mean abnormal values (outliers). The right figure represents solutions for Outlier Detection for each window of the input stream-data. The boxes try to cover only normal points as much as possible.

Outlier_Detection_JMA_Tokyo_202010_WINDOW

[1] V. N. Smelyanskiy, E. G. Rieffel, S. I. Knysh, C. P. Williams, M. W. Johnson, M. C. Thom, W. G. Macready, and K. L. Pudenz, "A near-term quantum computing approach for hard computational problems in space exploration," arXiv:1204.2821 [quant-ph], 2012. Available: https://arxiv.org/abs/1204.2821

Usage

Installation

pip install sawatabi

Sample Applications

This section only describes a sample application of NPP (Number Partition Problem), for other sample applications please see:
https://github.com/kotarot/sawatabi/tree/main/sample/algorithm

To run a sample NPP (Number Partition Problem) Sawatabi application on local environment

The following application reads numbers from a local file, run continuous annealing computations to solve NPP on local environment, and writes solutions to the stdout:

python sample/algorithm/npp_window.py --input="tests/algorithm/numbers_100.txt"

To run a sample NPP (Number Partition Problem) Sawatabi application on Google Cloud Dataflow using Google Cloud Pub/Sub

Please prepare your GCP service account credentials as ./gcp-key.json and open three terminals.

[1st terminal] The Pub/Sub publisher continuously publishes numbers to the specified Pub/Sub topic:

GOOGLE_APPLICATION_CREDENTIALS="./gcp-key.json" \
    python sample/pubsub/publish_pubsub.py \
        --project=<PROJECT> \
        --topic=<TOPIC> \
        --interval=1.0 \
        --random-number

where

  • <PROJECT> is your GCP project name, and
  • <TOPIC> is your Google Cloud Pub/Sub topic name to publish messages (numbers) to.

[2nd terminal] The Pub/Sub subscriber continuously subscribes solutions from the specified Pub/Sub subscription:

GOOGLE_APPLICATION_CREDENTIALS="./gcp-key.json" \
    python sample/pubsub/subscribe_pubsub.py \
        --project=<PROJECT> \
        --subscription=<SUBSCRIPTION>

where

  • <PROJECT> is your GCP project name, and
  • <SUBSCRIPTION> is your Google Cloud Pub/Sub subscription name to subscribe messages (solutions) from.

[3rd terminal] The following application reads numbers from the given Pub/Sub topic, run continuous annealing computations to solve NPP on Google Cloud Dataflow, and writes solutions to the given Pub/Sub topic:

GOOGLE_APPLICATION_CREDENTIALS="./gcp-key.json" \
    python sample/algorithm/npp_window.py \
        --project=<PROJECT> \
        --input-topic=<INPUT_TOPIC> \
        --output-topic=<OUTPUT_TOPIC> \
        --dataflow \
        --dataflow-bucket=<DATAFLOW_BUCKET>

where

  • <PROJECT> is your GCP project name,
  • <INPUT_TOPIC> is your Google Cloud Pub/Sub topic name of input,
  • <OUTPUT_TOPIC> is your Google Cloud Pub/Sub topic name of output, and
  • <DATAFLOW_BUCKET> is your GCS bucket name for Dataflow temporary files.

Solvers

If you would like to use the D-Wave solver

Please give credentials directly to the sawatabi.solver.DWaveSolver() constructor arguments, or set up a config using dwave-cloud-client:

$ dwave config create
Configuration file not found; the default location is: /path/to/your/location/dwave.conf
Configuration file path [/path/to/your/location/dwave.conf]:
Configuration file path does not exist. Create it? [y/N]: y
Profile (create new) [prod]: dev
API endpoint URL [skip]: xxxxxxxxxxxxxxxx
Authentication token [skip]: xxxxxxxxxxxxxxxx
Default client class [skip]:
Default solver [skip]: Advantage_system1.1
Configuration saved.

If you would like to use the Fixstars GPU solver (Optigan)

Please give credentials directly to the sawatabi.solver.OptiganSolver() constructor arguments, or set up a API Token in ~/.optigan.yml:

api:
    endpoint: http://optigan.example.com/method
    token: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

For Contributions to the Sawatabi Framework

Please set up a development environment as follows:

python -m venv venv
source venv/bin/activate
pip install --upgrade pip
pip install --editable ".[dev]"

Acknowledgement

This work is supported by the MITOU Target program from Information-technology Promotion Agency, Japan (IPA).

Metadata

Release files for sawatabi 0.0.3

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

Source distribution (sdist)

Source distribution for sawatabi 0.0.3
File Size Uploaded
sawatabi-0.0.3.tar.gz 29.2 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for sawatabi 0.0.3
File Interpreter ABI Platform
sawatabi-0.0.3-py3-none-any.whl Python 3 none any Details

Total release size: 80.3 kB

Release files / sawatabi-0.0.3.tar.gz

Download URL sawatabi-0.0.3.tar.gz
Size 29.2 kB
Tags Source
SHA-256 checksum
How to use checksums
cba56ffd6767bef55b032c1cb27febacb4e48c792c901f321335efa8af82f199
BLAKE2b-256 checksum
How to use checksums
dd61b6b68630d9e1fbb26fa63f6da678f7d2841783b7833730fca32da1b6d2dc
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.3.0 pkginfo/1.7.0 requests/2.25.1 setuptools/49.2.1 requests-toolbelt/0.9.1 tqdm/4.58.0 CPython/3.8.6

Release files / sawatabi-0.0.3-py3-none-any.whl

Download URL sawatabi-0.0.3-py3-none-any.whl
Size 51.1 kB
Tags Python 3
SHA-256 checksum
How to use checksums
15bee2313ff18f46132a032eaacd74bc20ec64ad884a1de0677ed32528533f4a
BLAKE2b-256 checksum
How to use checksums
1fb94ae72447daab2f26b5de01b4897827a760a1aa2e308c38c7baab77e30a7d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.3.0 pkginfo/1.7.0 requests/2.25.1 setuptools/49.2.1 requests-toolbelt/0.9.1 tqdm/4.58.0 CPython/3.8.6

Release history Release notifications | RSS feed

This release

0.0.3 This release

2 release files

0.0.2

2 release files

0.0.1

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