A quantum universe simulator with a C-engine
Project description
qbitUni — Quantum Universe Simulator
s/o Gemini....
About
qbitUni (qu) is a quantum simulator that allows you to simulate a quantum environment locally -- with operations. We use a C engine to perform the quantum operations and a Python wrapper to interface.
We have a test suite in tests/. Try the OpenQASM parser too!
🚀 Features
- Core Engine: Written in C with multithreading.
- Universality: Supports all standard gates (H, X, Y, Z, S, T, CNOT, CZ, Toffoli, RX, Phase).
- Scientific Tools: Expectation Value
<Z>calculation and Noise Simulation for VQE. Benchmarks, too. - Compatibility: Includes an OpenQASM 2.0 parser.
- Visualization: Built-in ASCII Bloch Spheres and Histograms.
Installation
git clone https://github.com/imesh97/qbit-universe.git
Setup
Note: This project uses Python 3.13.
Create and run a virtual environment.
python3 -m venv venv
source venv/bin/activate
Test Suite
python3 tests/gates.py
python3 tests/melinda.py
python3 tests/xy.py
python3 tests/parallel.py
python3 tests/universality.py
python3 tests/teleport.py
python3 tests/grover.py
python3 tests/science.py
python3 tests/visuals.py
python3 tests/energy.py
python3 tests/qasm/run.py
python3 tests/benchmark.py
Running your first simulation
1. Code
Create script.py file for this test.
# 📚 Import the Quantum Universe from Qbit
import qbitUni as qu
# ⚡ Initialize a 2-qubit Universe
# This allocates the state vector in C memory
univ = qu.QuantumUniverse(2)
univ.print_state() # Print initial state
# (Notice the |00> state only -- as the other |01>, |10>, |11> are all 0 -- we only print probabilities > 0.01%)
# ⊹ Apply a Hadamard gate to Qubit 0
# This puts Qubit 0 into a 50/50 superposition of |0> and |1>
univ.h(0)
univ.print_state() # Print state after Hadamard
# 🎛️ Apply a CNOT (Controlled-NOT) gate
# Control: Qubit 0, Target: Qubit 1
# This 'links' the two qubits together (Entanglement)
univ.cnot(0, 1)
univ.print_state() # Print state after CNOT
# 🧮 Peek at the Math
# Check the probability of the universe being in state |00> or |11>
print(f"Prob of |00>: {univ.get_prob(0):.2f}")
print(f"Prob of |11>: {univ.get_prob(3):.2f}")
# 🌊 Collapse the Wavefunction
# Measuring will force the universe into a single classical state
result = univ.measure_all()
print(f"Final Measurement: {result:02b}")
univ.print_state() # Print state after collapse
2. Execute
python3 script.py
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file qbituni-0.0.12.tar.gz.
File metadata
- Download URL: qbituni-0.0.12.tar.gz
- Upload date:
- Size: 15.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
240db7c498642ab74827d442a8dca475ed182428c766e16cd8eaff62b71e6af4
|
|
| MD5 |
0e0238677a1ac78483d1a9ca3ffa6068
|
|
| BLAKE2b-256 |
a392dee486ac9699fd6a2129815c1de82af75a949a79ece47675efab4cb0cc73
|
File details
Details for the file qbituni-0.0.12-cp313-cp313-macosx_10_13_universal2.whl.
File metadata
- Download URL: qbituni-0.0.12-cp313-cp313-macosx_10_13_universal2.whl
- Upload date:
- Size: 33.5 kB
- Tags: CPython 3.13, macOS 10.13+ universal2 (ARM64, x86-64)
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a0e58df5b53f3b19a333b88d0989d09719d98d9ff2899f72484ed7c6b35b0003
|
|
| MD5 |
dba2000b41a8cd4a3c79614bcbf4cdfc
|
|
| BLAKE2b-256 |
cf13a857c25945cb714b3012b2b243472370debcbac8b2a04ae44286ef1eb659
|