qiskit_class_converter

qiskit-classroom-converter API Documents

Convert quantum circuits, matrices, and bra-ket strings.

Official USER Guide

https://kmu-quantum-classroom.github.io/documents/overview.html

How to Install

pip install qiskit-classroom-converter

Support convert method

  • quantum circuit to bra-ket notation
  • quantum circuit to matrix
  • matrix to quantum circuit
  • string to bra-ket notation

Options

convert method option
QC_TO_BRA_KET expression{simplify, expand}, print{raw}
QC_TO_MATRIX print{raw}
MATRIX_TO_QC label{str}
STR_TO_BRA_KET print{raw}

ARM Platform

Mac ARM chips users may have issues running this package.

We have provided a Dockerfile, which can be used docker-compose.

docker-compose up --build

or use a Docker Image.

$ docker pull ghcr.io/kmu-quantum-classroom/qiskit-classroom-converter
$ docker run -p 8888:8888 ghcr.io/kmu-quantum-classroom/qiskit-classroom-converter

Acknowledgement

  • 국문 : "본 연구는 2022년 과학기술정보통신부 및 정보통신기획평가원의 SW중심대학사업의 연구결과로 수행되었음"(2022-0-00964)
  • English : "This research was supported by the MIST(Ministry of Science, ICT), Korea, under the National Program for Excellence in SW), supervised by the IITP(Institute of Information & communications Technology Planning & Evaluation) in 2022"(2022-0-00964)
  1"""
  2# qiskit-classroom-converter API Documents
  3
  4Convert quantum circuits, matrices, and bra-ket strings.
  5
  6# Official USER Guide
  7
  8https://kmu-quantum-classroom.github.io/documents/overview.html
  9
 10# How to Install
 11
 12```
 13pip install qiskit-classroom-converter
 14```
 15
 16# Support convert method
 17
 18* quantum circuit to bra-ket notation
 19* quantum circuit to matrix
 20* matrix to quantum circuit
 21* string to bra-ket notation
 22
 23# Options
 24
 25| convert method | option                                   |
 26|----------------|------------------------------------------|
 27| QC_TO_BRA_KET  | expression{simplify, expand}, print{raw} |
 28| QC_TO_MATRIX   | print{raw}                               |
 29| MATRIX_TO_QC   | label{str}                               |
 30| STR_TO_BRA_KET | print{raw}                               |
 31
 32## ARM Platform
 33
 34Mac ARM chips users may have issues running this package.
 35
 36We have provided a Dockerfile, which can be used docker-compose.
 37
 38```shell
 39docker-compose up --build
 40```
 41
 42or use a Docker Image.
 43
 44```shell
 45$ docker pull ghcr.io/kmu-quantum-classroom/qiskit-classroom-converter
 46$ docker run -p 8888:8888 ghcr.io/kmu-quantum-classroom/qiskit-classroom-converter
 47```
 48
 49# Acknowledgement
 50
 51- 국문 : "본 연구는 2022년 과학기술정보통신부 및 정보통신기획평가원의 SW중심대학사업의 연구결과로 수행되었음"(2022-0-00964)
 52- English : "This research was supported by the MIST(Ministry of Science, ICT),
 53Korea, under the National Program for Excellence in SW),
 54supervised by the IITP(Institute of Information & communications Technology Planning & Evaluation)
 55in 2022"(2022-0-00964)
 56
 57"""
 58#  Licensed to the Apache Software Foundation (ASF) under one
 59#  or more contributor license agreements.  See the NOTICE file
 60#  distributed with this work for additional information
 61#  regarding copyright ownership.  The ASF licenses this file
 62#  to you under the Apache License, Version 2.0 (the
 63#  "License"); you may not use this file except in compliance
 64#  with the License.  You may obtain a copy of the License at
 65#
 66#    http://www.apache.org/licenses/LICENSE-2.0
 67#
 68#  Unless required by applicable law or agreed to in writing,
 69#  software distributed under the License is distributed on an
 70#  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
 71#  KIND, either express or implied.  See the License for the
 72#  specific language governing permissions and limitations
 73#  under the License.
 74
 75from importlib.metadata import version
 76
 77from .services.converter_service import ConversionService, ConversionType
 78
 79__all__ = ["ConversionService", "ConversionType",
 80           "__VERSION__", "__QISKIT_VERSION__", "__FULL_VERSION__",
 81           "__LICENSE__", "__acknowledgement_en__", "__acknowledgement_ko__"]
 82
 83# parse library version
 84__VERSION__ = version('qiskit-classroom-converter')
 85# parse qiskit version
 86__QISKIT_VERSION__ = version('qiskit')
 87
 88__FULL_VERSION__ = {"Qiskit": __QISKIT_VERSION__, "Lib": __VERSION__}
 89""".. warning:: This version constant for document is an example. \
 90For the latest version information, see gitHub release or PYPI page. \
 91https://pypi.org/project/qiskit-classroom-converter/"""
 92
 93__LICENSE__ = "Apache License Version 2.0"
 94
 95# pylint: disable=line-too-long
 96__acknowledgement_en__ = '"This research was supported by the MIST(Ministry of Science, ICT), ' \
 97                         'Korea, under the National Program for Excellence in SW), supervised ' \
 98                         'by the IITP(Institute of Information & communications Technology Planning & Evaluation) ' \
 99                         'in 2022"(2022-0-00964)'
100
101__acknowledgement_ko__ = '"본 연구는 2022년 과학기술정보통신부 및 정보통신기획평가원의 SW중심대학사업의 연구결과로 수행되었음"(2022-0-00964)'
class ConversionService:
 90class ConversionService:  # pylint: disable=too-few-public-methods
 91    """
 92    Conversion Service class
 93
 94```python
 95from qiskit_class_converter import ConversionService
 96
 97ConversionService(conversion_type="QC_TO_BRA_KET", option={"expression": "simplify"})
 98```
 99    """
100
101    def __init__(self, conversion_type: typing.Union[str, ConversionType], option=None):
102        """
103        init function
104        :param conversion_type:  QC_TO_BRA_KET, QC_TO_MATRIX, MATRIX_TO_QC, STR_TO_BRA_KET
105        :param option: See the Options table in this article.
106        """
107        if option is None:
108            self.option = {}
109        self.option = option
110        if isinstance(conversion_type, str):
111            self.__conversion_object = ConversionType[conversion_type.upper()].value
112        elif isinstance(conversion_type, ConversionType):
113            self.__conversion_object = conversion_type.value
114
115    def convert(self, input_value: typing.Union[list, np.ndarray, QuantumCircuit, str]):
116        """
117        convert functions
118
119            result = sample_converter.convert(input_value=quantum_circuit)
120            logger.info(result)
121
122        :param input_value: QuantumCircuit or MATRIX or BRA_KET String
123        :return: Converted result
124        """
125        convert = self.__conversion_object(self.option).convert(input_value)
126        return convert

Conversion Service class

from qiskit_class_converter import ConversionService

ConversionService(conversion_type="QC_TO_BRA_KET", option={"expression": "simplify"})
ConversionService( conversion_type: Union[str, ConversionType], option=None)
101    def __init__(self, conversion_type: typing.Union[str, ConversionType], option=None):
102        """
103        init function
104        :param conversion_type:  QC_TO_BRA_KET, QC_TO_MATRIX, MATRIX_TO_QC, STR_TO_BRA_KET
105        :param option: See the Options table in this article.
106        """
107        if option is None:
108            self.option = {}
109        self.option = option
110        if isinstance(conversion_type, str):
111            self.__conversion_object = ConversionType[conversion_type.upper()].value
112        elif isinstance(conversion_type, ConversionType):
113            self.__conversion_object = conversion_type.value

init function

Parameters
  • conversion_type: QC_TO_BRA_KET, QC_TO_MATRIX, MATRIX_TO_QC, STR_TO_BRA_KET
  • option: See the Options table in this article.
option
def convert( self, input_value: Union[list, numpy.ndarray, qiskit.circuit.quantumcircuit.QuantumCircuit, str]):
115    def convert(self, input_value: typing.Union[list, np.ndarray, QuantumCircuit, str]):
116        """
117        convert functions
118
119            result = sample_converter.convert(input_value=quantum_circuit)
120            logger.info(result)
121
122        :param input_value: QuantumCircuit or MATRIX or BRA_KET String
123        :return: Converted result
124        """
125        convert = self.__conversion_object(self.option).convert(input_value)
126        return convert

convert functions

result = sample_converter.convert(input_value=quantum_circuit)
logger.info(result)
Parameters
  • input_value: QuantumCircuit or MATRIX or BRA_KET String
Returns

Converted result

class ConversionType(enum.Enum):
38class ConversionType(Enum):
39    """
40    Conversion Type
41    """
42    QC_TO_BRA_KET = QuantumCircuitToBraketNotationConverter
43    """```python
44from qiskit import QuantumCircuit
45from qiskit_class_converter import ConversionService
46
47quantum_circuit = QuantumCircuit(2, 2)
48quantum_circuit.x(0)
49quantum_circuit.cx(0, 1)
50sample_converter = ConversionService(conversion_type="QC_TO_BRA_KET")
51result = sample_converter.convert(input_value=quantum_circuit)
52```"""
53    QC_TO_MATRIX = QuantumCircuitToMatrixConverter
54    """```python
55from qiskit import QuantumCircuit
56from qiskit_class_converter import ConversionService
57
58quantum_circuit = QuantumCircuit(2, 2)
59quantum_circuit.x(0)
60quantum_circuit.cx(0, 1)
61sample_converter = ConversionService(conversion_type="QC_TO_MATRIX")
62result = sample_converter.convert(input_value=quantum_circuit)
63```"""
64    MATRIX_TO_QC = MatrixToQuantumCircuitConverter
65    """```python
66from qiskit import QuantumCircuit
67from qiskit_class_converter import ConversionService
68
69input_value = [
70    [1, 0, 0, 0],
71    [0, 0, 0, 1],
72    [0, 0, 1, 0],
73    [0, 1, 0, 0]
74]
75sample_converter = ConversionService(conversion_type="MATRIX_TO_QC")
76result = sample_converter.convert(input_value=input_value)
77# using user's QuantumCircuit object
78quantum_circuit = QuantumCircuit(2, 2)
79quantum_circuit.append(result, [0, 1])
80```"""
81    STR_TO_BRA_KET = StringToBraketNotationConverter
82    """```python
83from qiskit import QuantumCircuit
84from qiskit_class_converter import ConversionService
85
86sample_converter = ConversionService(conversion_type="STR_TO_BRA_KET")
87sample_converter.convert(input_value="|01>")
88```"""

Conversion Type

QC_TO_BRA_KET = <ConversionType.QC_TO_BRA_KET: <class 'qiskit_class_converter.converters.quantum_circuit_to_braket_notation.QuantumCircuitToBraketNotationConverter'>>
from qiskit import QuantumCircuit
from qiskit_class_converter import ConversionService

quantum_circuit = QuantumCircuit(2, 2)
quantum_circuit.x(0)
quantum_circuit.cx(0, 1)
sample_converter = ConversionService(conversion_type="QC_TO_BRA_KET")
result = sample_converter.convert(input_value=quantum_circuit)
QC_TO_MATRIX = <ConversionType.QC_TO_MATRIX: <class 'qiskit_class_converter.converters.quantum_circuit_to_matrix.QuantumCircuitToMatrixConverter'>>
from qiskit import QuantumCircuit
from qiskit_class_converter import ConversionService

quantum_circuit = QuantumCircuit(2, 2)
quantum_circuit.x(0)
quantum_circuit.cx(0, 1)
sample_converter = ConversionService(conversion_type="QC_TO_MATRIX")
result = sample_converter.convert(input_value=quantum_circuit)
MATRIX_TO_QC = <ConversionType.MATRIX_TO_QC: <class 'qiskit_class_converter.converters.matrix_to_quantum_circuit.MatrixToQuantumCircuitConverter'>>
from qiskit import QuantumCircuit
from qiskit_class_converter import ConversionService

input_value = [
    [1, 0, 0, 0],
    [0, 0, 0, 1],
    [0, 0, 1, 0],
    [0, 1, 0, 0]
]
sample_converter = ConversionService(conversion_type="MATRIX_TO_QC")
result = sample_converter.convert(input_value=input_value)
# using user's QuantumCircuit object
quantum_circuit = QuantumCircuit(2, 2)
quantum_circuit.append(result, [0, 1])
STR_TO_BRA_KET = <ConversionType.STR_TO_BRA_KET: <class 'qiskit_class_converter.converters.string_to_braket_notation.StringToBraketNotationConverter'>>
from qiskit import QuantumCircuit
from qiskit_class_converter import ConversionService

sample_converter = ConversionService(conversion_type="STR_TO_BRA_KET")
sample_converter.convert(input_value="|01>")
Inherited Members
enum.Enum
name
value
__VERSION__ = '0.5.0'
__QISKIT_VERSION__ = '1.0.1'
__FULL_VERSION__ = {'Qiskit': '1.0.1', 'Lib': '0.5.0'}
This version constant for document is an example. For the latest version information, see gitHub release or PYPI page. https://pypi.org/project/qiskit-classroom-converter/
__LICENSE__ = 'Apache License Version 2.0'
__acknowledgement_en__ = '"This research was supported by the MIST(Ministry of Science, ICT), Korea, under the National Program for Excellence in SW), supervised by the IITP(Institute of Information & communications Technology Planning & Evaluation) in 2022"(2022-0-00964)'
__acknowledgement_ko__ = '"본 연구는 2022년 과학기술정보통신부 및 정보통신기획평가원의 SW중심대학사업의 연구결과로 수행되었음"(2022-0-00964)'