diff --git a/MANIFEST.in b/MANIFEST.in index 174db54..7b8dfb9 100644 --- a/MANIFEST.in +++ b/MANIFEST.in @@ -1,2 +1,2 @@ # MANIFEST.in -include src/htcircuits/data/*.txt \ No newline at end of file +include src/htstabilizer/data/*.txt \ No newline at end of file diff --git a/README.md b/README.md index ce1617e..8c8f224 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# Short Quantum Circuits Python library +# Hardware-Tailored Stabilizer Circuits Python library This library provides - *hardware-tailored* quantum Clifford circuits for **stabilizer state preparation** or **measurement** as well as @@ -38,7 +38,7 @@ The following graphics show all available connectivities. ## Usage ``` -from shortcircuits import stabilizer +from htstabilizer import stabilizer ... ``` diff --git a/example.py b/example.py index 79c49c6..80794a2 100644 --- a/example.py +++ b/example.py @@ -1,7 +1,7 @@ from collections import defaultdict -from src.htcircuits import ht_stabilizer -from src.htcircuits.lc_classes import * -from src.htcircuits.circuit_lookup import circuit_lookup +from src.htstabilizer import stabilizer_circuits +from src.htstabilizer.lc_classes import * +from src.htstabilizer.circuit_lookup import circuit_lookup import matplotlib.pyplot as plt diff --git a/pyproject.toml b/pyproject.toml index af2539f..101b159 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -2,11 +2,8 @@ requires = ["setuptools>=61.0"] build-backend = "setuptools.build_meta" -shortcircuits -shortcliffords - [project] -name = "shortcircuits" +name = "htstabilizer" version = "1.0.0" description = "Hardware-tailored quantum Clifford circuits for stabilizer state preparation or readout as well as mutually unbiased bases in order to perform efficient full-state tomography on small qubit systems." readme = "README.md" diff --git a/src/htcircuits/__init__.py b/src/htstabilizer/__init__.py similarity index 100% rename from src/htcircuits/__init__.py rename to src/htstabilizer/__init__.py diff --git a/src/htcircuits/binary.py b/src/htstabilizer/binary.py similarity index 100% rename from src/htcircuits/binary.py rename to src/htstabilizer/binary.py diff --git a/src/htcircuits/circuit_lookup.py b/src/htstabilizer/circuit_lookup.py similarity index 100% rename from src/htcircuits/circuit_lookup.py rename to src/htstabilizer/circuit_lookup.py diff --git a/src/htcircuits/data/__init__.py b/src/htstabilizer/data/__init__.py similarity index 100% rename from src/htcircuits/data/__init__.py rename to src/htstabilizer/data/__init__.py diff --git a/src/htcircuits/data/stabilizer2-all.txt b/src/htstabilizer/data/stabilizer2-all.txt similarity index 100% rename from src/htcircuits/data/stabilizer2-all.txt rename to src/htstabilizer/data/stabilizer2-all.txt diff --git a/src/htcircuits/data/stabilizer3-all.txt b/src/htstabilizer/data/stabilizer3-all.txt similarity index 100% rename from src/htcircuits/data/stabilizer3-all.txt rename to src/htstabilizer/data/stabilizer3-all.txt diff --git a/src/htcircuits/data/stabilizer3-linear.txt b/src/htstabilizer/data/stabilizer3-linear.txt similarity index 100% rename from src/htcircuits/data/stabilizer3-linear.txt rename to src/htstabilizer/data/stabilizer3-linear.txt diff --git a/src/htcircuits/data/stabilizer4-all.txt b/src/htstabilizer/data/stabilizer4-all.txt similarity index 100% rename from src/htcircuits/data/stabilizer4-all.txt rename to src/htstabilizer/data/stabilizer4-all.txt diff --git a/src/htcircuits/data/stabilizer4-cycle.txt b/src/htstabilizer/data/stabilizer4-cycle.txt similarity index 100% rename from src/htcircuits/data/stabilizer4-cycle.txt rename to src/htstabilizer/data/stabilizer4-cycle.txt diff --git a/src/htcircuits/data/stabilizer4-linear.txt b/src/htstabilizer/data/stabilizer4-linear.txt similarity index 100% rename from src/htcircuits/data/stabilizer4-linear.txt rename to src/htstabilizer/data/stabilizer4-linear.txt diff --git a/src/htcircuits/data/stabilizer4-star.txt b/src/htstabilizer/data/stabilizer4-star.txt similarity index 100% rename from src/htcircuits/data/stabilizer4-star.txt rename to src/htstabilizer/data/stabilizer4-star.txt diff --git a/src/htcircuits/data/stabilizer5-Q.txt b/src/htstabilizer/data/stabilizer5-Q.txt similarity index 100% rename from src/htcircuits/data/stabilizer5-Q.txt rename to src/htstabilizer/data/stabilizer5-Q.txt diff --git a/src/htcircuits/data/stabilizer5-T.txt b/src/htstabilizer/data/stabilizer5-T.txt similarity index 100% rename from src/htcircuits/data/stabilizer5-T.txt rename to src/htstabilizer/data/stabilizer5-T.txt diff --git a/src/htcircuits/data/stabilizer5-all.txt b/src/htstabilizer/data/stabilizer5-all.txt similarity index 100% rename from src/htcircuits/data/stabilizer5-all.txt rename to src/htstabilizer/data/stabilizer5-all.txt diff --git a/src/htcircuits/data/stabilizer5-cycle.txt b/src/htstabilizer/data/stabilizer5-cycle.txt similarity index 100% rename from src/htcircuits/data/stabilizer5-cycle.txt rename to src/htstabilizer/data/stabilizer5-cycle.txt diff --git a/src/htcircuits/data/stabilizer5-linear.txt b/src/htstabilizer/data/stabilizer5-linear.txt similarity index 100% rename from src/htcircuits/data/stabilizer5-linear.txt rename to src/htstabilizer/data/stabilizer5-linear.txt diff --git a/src/htcircuits/data/stabilizer5-star.txt b/src/htstabilizer/data/stabilizer5-star.txt similarity index 100% rename from src/htcircuits/data/stabilizer5-star.txt rename to src/htstabilizer/data/stabilizer5-star.txt diff --git a/src/htcircuits/f2_algebra.py b/src/htstabilizer/f2_algebra.py similarity index 99% rename from src/htcircuits/f2_algebra.py rename to src/htstabilizer/f2_algebra.py index cf818e7..fb1f41d 100644 --- a/src/htcircuits/f2_algebra.py +++ b/src/htstabilizer/f2_algebra.py @@ -52,7 +52,7 @@ def rref(A: np.ndarray) -> Tuple[np.ndarray, List[int]]: A[i, :] = (A[i, :] + A[i, k]*A[h, :]) % 2 h += 1 k += 1 - return [A, pivot_cols] + return (A, pivot_cols) def trf_swap_rows(i: int, j: int, m: int, dtype=np.int8) -> np.ndarray: diff --git a/src/htcircuits/find_local_clifford_layer.py b/src/htstabilizer/find_local_clifford_layer.py similarity index 100% rename from src/htcircuits/find_local_clifford_layer.py rename to src/htstabilizer/find_local_clifford_layer.py diff --git a/src/htcircuits/graph.py b/src/htstabilizer/graph.py similarity index 100% rename from src/htcircuits/graph.py rename to src/htstabilizer/graph.py diff --git a/src/htcircuits/graph_draw.py b/src/htstabilizer/graph_draw.py similarity index 100% rename from src/htcircuits/graph_draw.py rename to src/htstabilizer/graph_draw.py diff --git a/src/htcircuits/lc_classes.py b/src/htstabilizer/lc_classes.py similarity index 100% rename from src/htcircuits/lc_classes.py rename to src/htstabilizer/lc_classes.py diff --git a/src/htcircuits/linear_index.py b/src/htstabilizer/linear_index.py similarity index 100% rename from src/htcircuits/linear_index.py rename to src/htstabilizer/linear_index.py diff --git a/src/htcircuits/ht_fullstatetomography.py b/src/htstabilizer/mub_circuits.py similarity index 100% rename from src/htcircuits/ht_fullstatetomography.py rename to src/htstabilizer/mub_circuits.py diff --git a/src/htcircuits/stabilizer.py b/src/htstabilizer/stabilizer.py similarity index 100% rename from src/htcircuits/stabilizer.py rename to src/htstabilizer/stabilizer.py diff --git a/src/htcircuits/ht_stabilizer.py b/src/htstabilizer/stabilizer_circuits.py similarity index 100% rename from src/htcircuits/ht_stabilizer.py rename to src/htstabilizer/stabilizer_circuits.py diff --git a/tests/random_stabilizer.py b/tests/random_stabilizer.py index 1cf31b8..b841207 100644 --- a/tests/random_stabilizer.py +++ b/tests/random_stabilizer.py @@ -1,8 +1,8 @@ import numpy as np -from src.htcircuits import f2_algebra as f2 -from src.htcircuits.find_local_clifford_layer import generate_local_clifford_symplectic_from_id -from src.htcircuits.graph import Graph -from src.htcircuits.stabilizer import Stabilizer +from src.htstabilizer import f2_algebra as f2 +from src.htstabilizer.find_local_clifford_layer import generate_local_clifford_symplectic_from_id +from src.htstabilizer.graph import Graph +from src.htstabilizer.stabilizer import Stabilizer def random_stabilizer(graph: Graph): diff --git a/tests/test_binary.py b/tests/test_binary.py index 6057408..0d927c2 100644 --- a/tests/test_binary.py +++ b/tests/test_binary.py @@ -1,4 +1,4 @@ -from src.htcircuits.binary import Binary +from src.htstabilizer.binary import Binary import unittest diff --git a/tests/test_circuit_lookup.py b/tests/test_circuit_lookup.py index 7c27cfb..287e5d5 100644 --- a/tests/test_circuit_lookup.py +++ b/tests/test_circuit_lookup.py @@ -1,9 +1,9 @@ import unittest -from src.htcircuits.circuit_lookup import * -from src.htcircuits.ht_stabilizer import get_connectivity_graph -from src.htcircuits.lc_classes import * -from src.htcircuits.graph import Graph +from src.htstabilizer.circuit_lookup import * +from src.htstabilizer.ht_stabilizer import get_connectivity_graph +from src.htstabilizer.lc_classes import * +from src.htstabilizer.graph import Graph from qiskit import transpile from qiskit.circuit.library import GraphState from qiskit.quantum_info import Statevector, StabilizerState diff --git a/tests/test_find_local_clifford_layer.py b/tests/test_find_local_clifford_layer.py index b68c1d9..e680bf0 100644 --- a/tests/test_find_local_clifford_layer.py +++ b/tests/test_find_local_clifford_layer.py @@ -1,5 +1,5 @@ -from src.htcircuits.find_local_clifford_layer import * -from src.htcircuits.stabilizer import Stabilizer +from src.htstabilizer.find_local_clifford_layer import * +from src.htstabilizer.stabilizer import Stabilizer from tests.random_stabilizer import random_stabilizer diff --git a/tests/test_graph.py b/tests/test_graph.py index 39156ef..8b6b43e 100644 --- a/tests/test_graph.py +++ b/tests/test_graph.py @@ -1,4 +1,4 @@ -from src.htcircuits.graph import Graph +from src.htstabilizer.graph import Graph import unittest @@ -47,6 +47,7 @@ def test_add_path(self): self.assertTrue(g.has_edge(1, 0)) self.assertEqual(g.edge_count(), 4) + @unittest.skip("Need to be checked manually") def test_draw(self): g = Graph(5) self.assertTrue(g.draw() != None) diff --git a/tests/test_lc_classes.py b/tests/test_lc_classes.py index 15b5b9e..eeca53d 100644 --- a/tests/test_lc_classes.py +++ b/tests/test_lc_classes.py @@ -1,5 +1,5 @@ -from src.htcircuits.lc_classes import * -from src.htcircuits.graph import Graph +from src.htstabilizer.lc_classes import * +from src.htstabilizer.graph import Graph import unittest import numpy as np @@ -36,7 +36,7 @@ def test_determine_lc_class3(self): self.assertEqual(lc_class.type, LCClass3.EntanglementStructure.Separable) self.assertEqual(lc_class.id(), 0) self.assertEqual(lc_class, LCClass3(lc_class.id())) - lc_class.get_graph().draw(show=True) + lc_class.get_graph().draw() lc_class = determine_lc_class3(Stabilizer(["YII", "IYX", "IXY"])) self.assertEqual(lc_class.type, LCClass3.EntanglementStructure.Pair) @@ -48,7 +48,7 @@ def test_determine_lc_class3(self): self.assertEqual(lc_class.type, LCClass3.EntanglementStructure.Triple) self.assertEqual(lc_class.id(), 4) self.assertEqual(lc_class, LCClass3(lc_class.id())) - lc_class.get_graph().draw(show=True) + lc_class.get_graph().draw() def test_determine_lc_class4(self): lc_class = determine_lc_class4(Stabilizer(["XYIY", "XIZY", "IYZI", "IYII"])) @@ -58,7 +58,7 @@ def test_determine_lc_class4(self): lc_class = determine_lc_class4(Stabilizer(["YIIY", "IYXY", "IXYI", "YXYI"])) self.assertEqual(lc_class.type, LCClass4.EntanglementStructure.Pair) - self.assertEqual(lc_class.data, linear_index.Repr([[0],[3], [1,2]])) + self.assertEqual(lc_class.data, linear_index.Repr([[0], [3], [1, 2]])) self.assertEqual(lc_class.id(), 4) self.assertEqual(lc_class.data, LCClass4(lc_class.id()).data) diff --git a/tests/test_linear_index.py b/tests/test_linear_index.py index 84aa1f5..c06facb 100644 --- a/tests/test_linear_index.py +++ b/tests/test_linear_index.py @@ -1,4 +1,4 @@ -from src.htcircuits.linear_index import * +from src.htstabilizer.linear_index import * import unittest diff --git a/tests/test_stabilizer.py b/tests/test_stabilizer.py index dbcb61f..d10aef6 100644 --- a/tests/test_stabilizer.py +++ b/tests/test_stabilizer.py @@ -1,6 +1,6 @@ from qiskit import QuantumCircuit -from src.htcircuits.stabilizer import Stabilizer -from src.htcircuits.graph import Graph +from src.htstabilizer.stabilizer import Stabilizer +from src.htstabilizer.graph import Graph import unittest import numpy as np diff --git a/tests/test_htstabilizer.py b/tests/test_stabilizer_circuits.py similarity index 65% rename from tests/test_htstabilizer.py rename to tests/test_stabilizer_circuits.py index 4e8f9be..8dcaa5d 100644 --- a/tests/test_htstabilizer.py +++ b/tests/test_stabilizer_circuits.py @@ -1,5 +1,5 @@ -from src.htcircuits.lc_classes import * -from src.htcircuits.ht_stabilizer import * +from src.htstabilizer.lc_classes import * +from src.htstabilizer.stabilizer_circuits import * from tests.random_stabilizer import random_stabilizer @@ -49,10 +49,31 @@ def test_random_stabilizers_3_linear(self): self.verify_random_stabilizers(3, "linear", num=500) def test_random_stabilizers_4_all(self): - self.verify_random_stabilizers(4, "all", num=500) + self.verify_random_stabilizers(4, "all", num=100) + + def test_random_stabilizers_4_linear(self): + self.verify_random_stabilizers(4, "linear", num=100) + + def test_random_stabilizers_4_star(self): + self.verify_random_stabilizers(4, "star", num=100) + + def test_random_stabilizers_4_cycle(self): + self.verify_random_stabilizers(4, "cycle", num=100) def test_random_stabilizers_5_all(self): - self.verify_random_stabilizers(5, "all", num=500) + self.verify_random_stabilizers(5, "all", num=20) def test_random_stabilizers_5_linear(self): - self.verify_random_stabilizers(5, "linear", num=500) + self.verify_random_stabilizers(5, "linear", num=20) + + def test_random_stabilizers_5_star(self): + self.verify_random_stabilizers(5, "star", num=20) + + def test_random_stabilizers_5_cycle(self): + self.verify_random_stabilizers(5, "cycle", num=20) + + def test_random_stabilizers_5_T(self): + self.verify_random_stabilizers(5, "T", num=20) + + def test_random_stabilizers_5_Q(self): + self.verify_random_stabilizers(5, "Q", num=20)