All Projects → artificial-brain → quantumcat

artificial-brain / quantumcat

Licence: Apache-2.0 license
quantumcat is a platform-independent, open-source, high-level quantum computing library, which allows the quantum community to focus on developing platform-independent quantum applications without much effort.

Programming Languages

python
139335 projects - #7 most used programming language

Projects that are alternatives of or similar to quantumcat

public research
Publicly available research done by BOHR.TECHNOLOGY.
Stars: ✭ 16 (-11.11%)
Mutual labels:  quantum-computing, quantum-algorithms
qram
Library for Q# implementing various qRAM proposals
Stars: ✭ 46 (+155.56%)
Mutual labels:  quantum-computing, quantum-library
Openfermion Psi4
OpenFermion plugin to interface with the electronic structure package Psi4.
Stars: ✭ 63 (+250%)
Mutual labels:  quantum-computing, quantum-algorithms
Quantumflow Dev
QuantumFlow: A Quantum Algorithms Development Toolkit
Stars: ✭ 43 (+138.89%)
Mutual labels:  quantum-computing, quantum-algorithms
Monthly Challenges
Repository containing monthly challenges about quantum computing.
Stars: ✭ 126 (+600%)
Mutual labels:  quantum-computing, quantum-algorithms
Openfermion
The electronic structure package for quantum computers.
Stars: ✭ 1,099 (+6005.56%)
Mutual labels:  quantum-computing, quantum-algorithms
Teach Me Quantum
⚛ 10 week Practical Course on Quantum Information Science and Quantum Computing - with Qiskit and IBMQX
Stars: ✭ 118 (+555.56%)
Mutual labels:  quantum-computing, quantum-algorithms
Strawberryfields
Strawberry Fields is a full-stack Python library for designing, simulating, and optimizing continuous variable (CV) quantum optical circuits.
Stars: ✭ 505 (+2705.56%)
Mutual labels:  quantum-computing, quantum-algorithms
Scaffcc
Compilation, analysis and optimization framework for the Scaffold quantum programming language.
Stars: ✭ 133 (+638.89%)
Mutual labels:  quantum-computing, quantum-algorithms
Qpanda 2
QPanda 2 is an open source quantum computing framework developed by OriginQC that can be used to build, run, and optimize quantum algorithms.
Stars: ✭ 128 (+611.11%)
Mutual labels:  quantum-computing, quantum-algorithms
Awesome Ai Books
Some awesome AI related books and pdfs for learning and downloading, also apply some playground models for learning
Stars: ✭ 855 (+4650%)
Mutual labels:  quantum-computing, quantum-algorithms
QCompress-1
Quantum Autoencoder Implementation using Forest and OpenFermion
Stars: ✭ 20 (+11.11%)
Mutual labels:  quantum-computing, quantum-algorithms
Awesome Quantum Software
Curated list of open-source quantum software projects.
Stars: ✭ 647 (+3494.44%)
Mutual labels:  quantum-computing, quantum-algorithms
qcl
Quantum Computation Language port from http://tph.tuwien.ac.at/~oemer/qcl.html
Stars: ✭ 29 (+61.11%)
Mutual labels:  quantum-computing, quantum-algorithms
Yao.jl
Extensible, Efficient Quantum Algorithm Design for Humans.
Stars: ✭ 514 (+2755.56%)
Mutual labels:  quantum-computing, quantum-algorithms
Quantum Algorithms Tutorials
Tutorials for Quantum Algorithms with Qiskit implementations.
Stars: ✭ 115 (+538.89%)
Mutual labels:  quantum-computing, quantum-algorithms
Blueqat
Quantum Computer Library for Everyone
Stars: ✭ 298 (+1555.56%)
Mutual labels:  quantum-computing, quantum-algorithms
Grove
Quantum algorithms built using pyQuil.
Stars: ✭ 332 (+1744.44%)
Mutual labels:  quantum-computing, quantum-algorithms
Recirq
Research using Cirq!
Stars: ✭ 119 (+561.11%)
Mutual labels:  quantum-computing, quantum-algorithms
Pytket
Python module for interfacing with the CQC t|ket> library of quantum software
Stars: ✭ 162 (+800%)
Mutual labels:  quantum-computing, quantum-algorithms

Quantum Cat Logo

Introduction

quantumcat is a platform-independent, open-source, high-level quantum computing library, which allows the quantum community to focus on developing platform-independent quantum applications without much effort.

It is based on two principles:

  1. Write once and execute on any supported quantum provider using one syntax

  2. quantumcat should enable researchers and developers to create quantum applications using high-level programming in the future so that they can focus on developing quantum applications instead of learning low-level concepts such as gates and circuits

Write once

from quantumcat.utils import providers  
num_of_qubits = 2
qc = QCircuit(num_of_qubits)
qc.h_gate(0)
qc.cx_gate(0, 1)

# To execute on Google Cirq
result = qc.execute(provider=providers.GOOGLE_PROVIDER, repetitions=1024) 
# To execute on IBM Qiskit
result = qc.execute(provider=providers.IBM_PROVIDER, repetitions=1024)
# To execute on Amazon Braket
result = qc.execute(provider=providers.AMAZON_PROVIDER, repetitions=1024)

Compare the results of all the supported providers with a single line of code

# Execute on All providers in one go
circuit.compare_results(plot=True)

Compare Results

Execute on real IBM quantum hardware with quantumcat

from quantumcat.utils import providers  
  
result = qc.execute(provider=providers.IBM_PROVIDER,
api='API KEY from IBM Quantum dashboard', 
device='IBM DEVICE NAME such as ibmq_manila or ibmq_quito')  
# Copy API and Device name from https://quantum-computing.ibm.com/  

Installation

pip install quantumcat

Platforms Supported

  • Google Cirq
  • IBM Qiskit
  • Amazon Braket
  • IonQ (Via Braket)
  • Rigetti (Via Braket)

Examples of High-Level Functions

Deutsch Jozsa Algorithm

deutsch_jozsa = DeutschJozsa('balanced', 4)
print(deutsch_jozsa.execute(provider=providers.IBM_PROVIDER))

Superposition

qc.superposition(0) 
# puts qubit 0 in superposition  

Entanglement

qc.entangle(0, 1) 
# entangles qubit 0 with qubit 1  

Phase Kickback

qc.phase_kickback(0) 
# applies |-> to qubit 0  

Example of High-Level Applications

Random Number Generator

from quantumcat.utils import providers, constants  
from quantumcat.applications.generator import RandomNumber  
  
random_number = RandomNumber(length=2, output_type=constants.DECIMAL).execute(provider=providers.GOOGLE_PROVIDER)
print(random_number)  

# To generate random number on actual IBM device  
random_number = RandomNumber(length=2, output_type=constants.DECIMAL)
	.execute(provider=providers.IBM_PROVIDER, repetitions=1024, api='API KEY from IBM Quantum dashboard'
		 device='IBM DEVICE NAME such as ibmq_manila or ibmq_quito')
print(random_number)

Password Generator

from quantumcat.applications.generator import Password  
  
password = Password(8).generate()  
print(password)  
# Length should be between 5 - 20  
# Password is generated in hexadecimal format using QRNG@ANU JSON API

OTP Generator

from quantumcat.applications.generator import OTP  
  
otp = OTP().generate()  
print(otp)  
# 5 digits OTP is generated using QRNG@ANU JSON API  

Examples of Low-Level Functions

Circuit Creation

from quantumcat.circuit import QCircuit  
  
num_of_qubits = 3  
qc = QCircuit(num_of_qubits)  

Single-Qubit Gate

qc.x_gate(0) # applies X gate on qubit 0  

Two-Qubit Gate

qc.cx_gate(0, 1) # control qubit, target qubit  

Multi-Qubit Gate

qc.mct_gate([0, 1], 2) # control qubits array, target qubit  

Draw Circuit

from quantumcat.utils import providers  
  
qc.draw_circuit(provider=providers.GOOGLE_PROVIDER)

Gates Supported

Click here to view gates supported

Visualization

Histogram

circuit = QCircuit(1)
circuit.superposition(0)
counts = circuit.execute(provider=providers.GOOGLE_PROVIDER, repetitions=1024)
circuit.histogram(counts) 

Histogram

Bloch Multivector

circuit = QCircuit(1)
circuit.superposition(0)
state = circuit.execute(provider=providers.GOOGLE_PROVIDER, 
			simulator_name=constants.STATEVECTOR_SIMULATOR)
circuit.bloch_multivector(state) 

Bloch Multivector

QSphere

circuit = QCircuit(1)
circuit.superposition(0)
state = circuit.execute(provider=providers.GOOGLE_PROVIDER, 
			simulator_name=constants.STATEVECTOR_SIMULATOR)
circuit.state_qsphere(state) 

QSphere

License

Apache License 2.0

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].