Skip to main content

QiskitFlow. Reproducible quantum experiments.

Project description

QiskitFlow. Reproducible quantum experiments.

logo

Platform for tracking, sharing and running quantum experiments in a clean and understandable for developers, researchers and students manner.

Alpha release is in the works. Files from hackathon project are located in hackathon folder

General overview

flow

Hot to run

Flow

Flow of actions while using QiskitFlow is following:

  • Install QiskitFlow if not installed yet
  • Annotate your code with Experiment abstraction QiskitFlow library provides
  • Run your code as usual: QiskitFlow will write metadata of your experiment execution in local folder
  • You can review experiments using CLI interface

We are tracking metrics, parameters, state vectors and counts of experiments. Artifacts, circuits, sourcecode and other useful things are on their way.

Note: qiskitflow creates _experiments folder in place of execution of code, where all serialized information is stored in json format, so it's easy to track it even in git

Installation

pip install qiskitflow

Code annotation

Library for quantum programs annotation

Sample example of annotation:

from qiskitflow import Experiment

with Experiment("awesome_experiment") as experiment:

    # your quantum program here!
    
    experiment.write_metric("test metric", 0.1)
    experiment.write_metric("test metric 2", 2)

    experiment.write_parameter("test parameter", "test parameter value")
    experiment.write_parameter("test parameter 2", "test paraeter value 2")

    experiment.write_counts("measurement", {"00": 1024, "11": 0})
Full example with quantum teleportation

import numpy as np
import time
from qiskit import QuantumCircuit, QuantumRegister, ClassicalRegister, execute, BasicAer, IBMQ
from qiskit.visualization import plot_histogram, plot_bloch_multivector
from qiskit.extensions import Initialize
from qiskit_textbook.tools import random_state, array_to_latex

from qiskitflow import Experiment

with Experiment("quantum teleportation") as experiment:
    start_time = time.time()
    
    # conduct experiment as usual
    psi = random_state(1)
    init_gate = Initialize(psi)
    init_gate.label = "init"
    inverse_init_gate = init_gate.gates_to_uncompute()

    qr = QuantumRegister(3, name="q")
    crz = ClassicalRegister(1, name="crz")
    crx = ClassicalRegister(1, name="crx")
    qc = QuantumCircuit(qr, crz, crx)
    qc.append(init_gate, [0])
    qc.barrier()
    create_bell_pair(qc, 1, 2)
    qc.barrier()
    alice_gates(qc, 0, 1)
    measure_and_send(qc, 0, 1)
    bob_gates(qc, 2, crz, crx)
    qc.append(inverse_init_gate, [2])
    cr_result = ClassicalRegister(1)
    qc.add_register(cr_result)
    qc.measure(2,2)
    backend_name = "qasm_simulator"
    backend = BasicAer.get_backend(backend_name)
    counts = execute(qc, backend, shots=1024).result().get_counts()
    
    end_time = time.time()
    
    runtime = end_time - start_time
    
    # qiskitflow =========

    # log parameters used
    experiment.write_parameter("backend name", backend_name)
    # log metrics of experiment
    experiment.write_metric("runtime", runtime)
    # log counts of experiment
    experiment.write_counts("experiment counts", counts)


CLI

List of experiment runs

qiskitflow runs [--search=<SEARCH_BY_RUN_ID>] [--experiment=<EXPERIMENT_NAME>] [--order_by=<METRIC_TO_ORDER_BY>] [--order_type=<asc or desc>]
experiments list screenshot

list

Experiment run information

qiskitflow run <RUN_ID>
experiment information screenshots

Experiment information info

Share experiment run

qiskitflow share <RUN_ID> --user=<USER> --password=<password> --host=<HOST> --port=<PORT>

Example for local backend server

qiskitflow share 86b6e7ba32f04d34b842a91079482454 --user=<USER> --password=<password> --host=http://localhost --port=8000
experiment share screenshots

Experiment information share


Examples

Jupyter notebook with quantum teleportation example

Run local

  1. Install docker compose
  2. Run
docker-compose up

UI

Screenshots

Experiment information ui

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

qiskitflow-0.0.11a0.tar.gz (12.5 kB view details)

Uploaded Source

Built Distribution

qiskitflow-0.0.11a0-py3-none-any.whl (17.3 kB view details)

Uploaded Python 3

File details

Details for the file qiskitflow-0.0.11a0.tar.gz.

File metadata

  • Download URL: qiskitflow-0.0.11a0.tar.gz
  • Upload date:
  • Size: 12.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.1 importlib_metadata/4.6.0 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.61.1 CPython/3.9.6

File hashes

Hashes for qiskitflow-0.0.11a0.tar.gz
Algorithm Hash digest
SHA256 e0009796ee48351b27c63498566c60f3300bd7a31c9c31cbe8453580dc88a2f2
MD5 783340e4e1cbfd65a52dc2399b3b879f
BLAKE2b-256 79877321ea7e8191107a67abb5c953c9ed53ed175411469a6845d504b9bf5137

See more details on using hashes here.

File details

Details for the file qiskitflow-0.0.11a0-py3-none-any.whl.

File metadata

  • Download URL: qiskitflow-0.0.11a0-py3-none-any.whl
  • Upload date:
  • Size: 17.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.1 importlib_metadata/4.6.0 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.61.1 CPython/3.9.6

File hashes

Hashes for qiskitflow-0.0.11a0-py3-none-any.whl
Algorithm Hash digest
SHA256 222da840f953bee130027de4f7fca4eb83615a9cfc77ef61882f4d9df4a16ad6
MD5 6d26a304519c32ce485a1dd438964b3f
BLAKE2b-256 5e9b5a78110f577cc4a525f9d47fd4a00d97010dac7c3e38b4276b14a19325d1

See more details on using hashes here.

Supported by

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