From d9f14b770580c557363d97e376616f7b50e307a4 Mon Sep 17 00:00:00 2001 From: Mc-Zen Date: Sun, 28 Jan 2024 23:07:42 +0100 Subject: [PATCH] [update] readme --- README.md | 19 +++--- docs/images/6-qubit connectivities.png | Bin 0 -> 59293 bytes show_circuit_statistics.py | 77 ------------------------- 3 files changed, 12 insertions(+), 84 deletions(-) create mode 100644 docs/images/6-qubit connectivities.png delete mode 100644 show_circuit_statistics.py diff --git a/README.md b/README.md index b5dae41..7d782d4 100644 --- a/README.md +++ b/README.md @@ -9,15 +9,16 @@ Hereby, two-qubit gate count is minimized. All delivered circuits are designed t ## Installation -The library can be easily installed from [PyPi][pypi-page]: + +You can clone the [repository][repository] and include it in your project. Soon, it will be available on [PyPi][pypi-page] and via `pip install`. ## Tailored to your hardware connectivity -A total of 13 connectivities are currently supported, ranging from 2 to 5 qubits. For each supported number of qubits, circuits for full connectivity and line connectivity are available. Additionally, other connectivities that occur in current quantum chips or which are subgraphs of existing hardware are supported. +A total of 19 connectivities are currently supported, ranging from 2 to 6 qubits. For each supported number of qubits, circuits for full connectivity and line connectivity are available. Additionally, other connectivities that occur in current quantum chips or which are subgraphs of existing hardware are supported. The following graphics show all currently available connectivities. @@ -33,6 +34,9 @@ The following graphics show all currently available connectivities. ### 5 qubits ![][5-qubit-con] +### 6 qubits +![][6-qubit-con] + ## Usage ``` @@ -64,10 +68,11 @@ View examples for exploring the functionality: [repository]: https://github.com/Mc-Zen/htstabilizer [license]: https://github.com/Mc-Zen/htstabilizer/blob/master/LICENSE.txt -[2-qubit-con]: https://github.com/Mc-Zen/htstabilizer/blob/master/docs/images/2-qubit%20connectivities.png -[3-qubit-con]: https://github.com/Mc-Zen/htstabilizer/blob/master/docs/images/3-qubit%20connectivities.png -[4-qubit-con]: https://github.com/Mc-Zen/htstabilizer/blob/master/docs/images/4-qubit%20connectivities.png -[5-qubit-con]: https://github.com/Mc-Zen/htstabilizer/blob/master/docs/images/5-qubit%20connectivities.png +[2-qubit-con]: docs/images/2-qubit%20connectivities.png +[3-qubit-con]: docs/images/3-qubit%20connectivities.png +[4-qubit-con]: docs/images/4-qubit%20connectivities.png +[5-qubit-con]: docs/images/5-qubit%20connectivities.png +[6-qubit-con]: docs/images/6-qubit%20connectivities.png [example-compress]: https://github.com/Mc-Zen/htstabilizer/blob/master/examples/compress_preparation_circuit.py [example-readout]: https://github.com/Mc-Zen/htstabilizer/blob/master/examples/readout_circuit.py diff --git a/docs/images/6-qubit connectivities.png b/docs/images/6-qubit connectivities.png new file mode 100644 index 0000000000000000000000000000000000000000..5819dbfc252f5639cdec0a6c8994f8c1041fd472 GIT binary patch literal 59293 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 literal 0 HcmV?d00001 diff --git a/show_circuit_statistics.py b/show_circuit_statistics.py deleted file mode 100644 index 06716fd..0000000 --- a/show_circuit_statistics.py +++ /dev/null @@ -1,77 +0,0 @@ -""" -This script computes and visualizes some statistics for the -optimized stabilizer circuits. - -""" - - -from collections import defaultdict -from src.htstabilizer import stabilizer_circuits -from src.htstabilizer.lc_classes import * -from src.htstabilizer.circuit_lookup import stabilizer_circuit_lookup -import matplotlib.pyplot as plt - - -def stabilizer_circuit_statistics(num_qubits, connectivity): - - cost = defaultdict(int) - depth = defaultdict(int) - - LCClasses = [LCClass2, LCClass3, LCClass4, LCClass5] - cls = LCClasses[num_qubits - 2] - - for id in range(cls.count()): - circuit_info = stabilizer_circuit_lookup(num_qubits, connectivity, id) - cost[circuit_info.cost] += 1 - depth[circuit_info.depth] += 1 - - average_cost = 0 - for the_cost, count in cost.items(): - average_cost += the_cost*count - average_cost /= cls.count() - - average_depth = 0 - for the_depth, count in depth.items(): - average_depth += the_depth*count - average_depth /= cls.count() - - max_cost = max(cost.keys()) - max_depth = max(depth.keys()) - - print(f"Circuit statistics {connectivity}: \n avg 2-qubit count: {average_cost}\n" - f" avg 2-qubit depth: {average_depth}\n max 2-qubit count: {max_cost}\n max 2-qubit depth: {max_depth}") - - plt.figure(figsize=(3, 4)) - plt.title(f"{num_qubits} qubits {connectivity}") - - # plt.plot(cost.keys(), cost.values(), label="cx count") - plt.bar(list(cost.keys()), list(cost.values()), color=(1, 0, 0, .5), label="cx count") - plt.bar(list(depth.keys()), list(depth.values()), color=(0, 1, 0, .5), label="cx depth") - - plt.legend() - plt.tight_layout() - - -print("3 qubits") -stabilizer_circuit_statistics(3, "all") -stabilizer_circuit_statistics(3, "linear") - -print("4 qubits") -stabilizer_circuit_statistics(4, "all") -stabilizer_circuit_statistics(4, "linear") -stabilizer_circuit_statistics(4, "star") -stabilizer_circuit_statistics(4, "cycle") - -print("5 qubits") -stabilizer_circuit_statistics(5, "all") -stabilizer_circuit_statistics(5, "linear") -stabilizer_circuit_statistics(5, "star") -stabilizer_circuit_statistics(5, "cycle") -stabilizer_circuit_statistics(5, "T") -stabilizer_circuit_statistics(5, "Q") - -plt.show() - - -# 4 Qubits: all > cycle, star > linear -# 5 Qubits: all > star > cycle > Q > T > linear