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.
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)'