qlro 0.2.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- qlro-0.2.0/PKG-INFO +159 -0
- qlro-0.2.0/README.md +126 -0
- qlro-0.2.0/pyproject.toml +59 -0
- qlro-0.2.0/setup.cfg +4 -0
- qlro-0.2.0/src/qlro/__init__.py +37 -0
- qlro-0.2.0/src/qlro/api.py +892 -0
- qlro-0.2.0/src/qlro/comparison/__init__.py +25 -0
- qlro-0.2.0/src/qlro/comparison/normalizer.py +240 -0
- qlro-0.2.0/src/qlro/comparison/serialize.py +175 -0
- qlro-0.2.0/src/qlro/comparison/suitability.py +156 -0
- qlro-0.2.0/src/qlro/data/metriq_snapshot.json +6543 -0
- qlro-0.2.0/src/qlro/environments.py +191 -0
- qlro-0.2.0/src/qlro/export/__init__.py +5 -0
- qlro-0.2.0/src/qlro/export/report.py +453 -0
- qlro-0.2.0/src/qlro/jupyter.py +123 -0
- qlro-0.2.0/src/qlro/public_api.py +480 -0
- qlro-0.2.0/src/qlro/recommendation/__init__.py +5 -0
- qlro-0.2.0/src/qlro/recommendation/engine.py +421 -0
- qlro-0.2.0/src/qlro/result_parser.py +245 -0
- qlro-0.2.0/src/qlro/runner/__init__.py +5 -0
- qlro-0.2.0/src/qlro/runner/circuits.py +113 -0
- qlro-0.2.0/src/qlro/runner/qiskit_runner.py +221 -0
- qlro-0.2.0/src/qlro/schemas/__init__.py +45 -0
- qlro-0.2.0/src/qlro/schemas/comparison.py +25 -0
- qlro-0.2.0/src/qlro/schemas/comparison_run.py +48 -0
- qlro-0.2.0/src/qlro/schemas/environment.py +101 -0
- qlro-0.2.0/src/qlro/schemas/evaluation.py +117 -0
- qlro-0.2.0/src/qlro/schemas/experiment.py +56 -0
- qlro-0.2.0/src/qlro/schemas/fingerprint.py +164 -0
- qlro-0.2.0/src/qlro/schemas/recommendation.py +51 -0
- qlro-0.2.0/src/qlro/schemas/workload.py +45 -0
- qlro-0.2.0/src/qlro/scoring/__init__.py +5 -0
- qlro-0.2.0/src/qlro/scoring/axes.py +159 -0
- qlro-0.2.0/src/qlro/scoring/composition.py +105 -0
- qlro-0.2.0/src/qlro/scoring/data_loader.py +178 -0
- qlro-0.2.0/src/qlro/scoring/physics.py +188 -0
- qlro-0.2.0/src/qlro/scoring/priors.py +80 -0
- qlro-0.2.0/src/qlro/scoring/wcpp.py +374 -0
- qlro-0.2.0/src/qlro/storage/__init__.py +5 -0
- qlro-0.2.0/src/qlro/storage/database.py +129 -0
- qlro-0.2.0/src/qlro.egg-info/PKG-INFO +159 -0
- qlro-0.2.0/src/qlro.egg-info/SOURCES.txt +53 -0
- qlro-0.2.0/src/qlro.egg-info/dependency_links.txt +1 -0
- qlro-0.2.0/src/qlro.egg-info/requires.txt +13 -0
- qlro-0.2.0/src/qlro.egg-info/top_level.txt +1 -0
- qlro-0.2.0/tests/test_api.py +188 -0
- qlro-0.2.0/tests/test_environment_differentiation.py +171 -0
- qlro-0.2.0/tests/test_fingerprint.py +71 -0
- qlro-0.2.0/tests/test_normalizer.py +219 -0
- qlro-0.2.0/tests/test_pipeline.py +155 -0
- qlro-0.2.0/tests/test_recommendation.py +365 -0
- qlro-0.2.0/tests/test_report.py +214 -0
- qlro-0.2.0/tests/test_result_parser.py +120 -0
- qlro-0.2.0/tests/test_suitability.py +162 -0
- qlro-0.2.0/tests/test_validation.py +322 -0
qlro-0.2.0/PKG-INFO
ADDED
|
@@ -0,0 +1,159 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: qlro
|
|
3
|
+
Version: 0.2.0
|
|
4
|
+
Summary: Show us your quantum circuit. We tell you where to run it.
|
|
5
|
+
Author-email: Yeonwoo Oh <linslet77@gmail.com>
|
|
6
|
+
Maintainer-email: Yeonwoo Oh <linslet77@gmail.com>
|
|
7
|
+
License: Apache-2.0
|
|
8
|
+
Project-URL: Homepage, https://github.com/linsletoh/qlro
|
|
9
|
+
Project-URL: Documentation, https://github.com/linsletoh/qlro/blob/main/WCPP_SPEC.md
|
|
10
|
+
Project-URL: Paper, https://doi.org/10.5281/zenodo.19601532
|
|
11
|
+
Project-URL: Simulator, https://qlro-three.vercel.app/simulator
|
|
12
|
+
Project-URL: Issues, https://github.com/linsletoh/qlro/issues
|
|
13
|
+
Keywords: quantum,benchmarking,recommendation,qiskit,metriq,wcpp
|
|
14
|
+
Classifier: Development Status :: 3 - Alpha
|
|
15
|
+
Classifier: Intended Audience :: Science/Research
|
|
16
|
+
Classifier: Topic :: Scientific/Engineering :: Physics
|
|
17
|
+
Classifier: License :: OSI Approved :: Apache Software License
|
|
18
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
19
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
20
|
+
Requires-Python: >=3.11
|
|
21
|
+
Description-Content-Type: text/markdown
|
|
22
|
+
Requires-Dist: pydantic>=2.5.0
|
|
23
|
+
Requires-Dist: qiskit>=1.0.0
|
|
24
|
+
Requires-Dist: qiskit-aer>=0.13.0
|
|
25
|
+
Provides-Extra: server
|
|
26
|
+
Requires-Dist: fastapi>=0.104.0; extra == "server"
|
|
27
|
+
Requires-Dist: uvicorn>=0.24.0; extra == "server"
|
|
28
|
+
Requires-Dist: sqlalchemy>=2.0.0; extra == "server"
|
|
29
|
+
Provides-Extra: dev
|
|
30
|
+
Requires-Dist: pytest>=7.4.0; extra == "dev"
|
|
31
|
+
Requires-Dist: pytest-asyncio>=0.23.0; extra == "dev"
|
|
32
|
+
Requires-Dist: httpx>=0.25.0; extra == "dev"
|
|
33
|
+
|
|
34
|
+
# Qlro
|
|
35
|
+
|
|
36
|
+
**Show us your quantum circuit. We'll tell you where to run it.**
|
|
37
|
+
|
|
38
|
+
```python
|
|
39
|
+
from qiskit import QuantumCircuit
|
|
40
|
+
import qlro
|
|
41
|
+
|
|
42
|
+
qc = QuantumCircuit(4)
|
|
43
|
+
qc.h(0); qc.cx(0, 1); qc.cx(1, 2); qc.cx(2, 3)
|
|
44
|
+
qc.measure_all()
|
|
45
|
+
|
|
46
|
+
result = qlro.recommend(qc, category="chemistry")
|
|
47
|
+
result.primary # → 'H2-2'
|
|
48
|
+
result.primary_fit # → 0.8140
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
Qlro is a quantum device recommendation engine. Give it a circuit and a workload type, and it ranks every available quantum device by how well that device fits *your specific workload* — based on real benchmark data from [Metriq](https://metriq.info) (Unitary Foundation), not vendor marketing.
|
|
52
|
+
|
|
53
|
+
## Install
|
|
54
|
+
|
|
55
|
+
```bash
|
|
56
|
+
pip install qlro
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
Ships with a snapshot of the Metriq benchmark dataset. No API keys, no accounts, no internet required.
|
|
60
|
+
|
|
61
|
+
## How it works
|
|
62
|
+
|
|
63
|
+
1. **You have a quantum circuit** (Qiskit `QuantumCircuit` or OpenQASM string).
|
|
64
|
+
2. **You tell Qlro what kind of workload it is**: `chemistry`, `simulation`, `optimization`, or `ml`.
|
|
65
|
+
3. **Qlro scores every quantum device** across four capability axes:
|
|
66
|
+
- **Γ (Connectivity)** — verified entanglement coverage across the chip
|
|
67
|
+
- **Φ (Coherence)** — information survival over circuit depth
|
|
68
|
+
- **F (Fidelity)** — per-operation accuracy
|
|
69
|
+
- **T (Throughput)** — effective operations per second
|
|
70
|
+
4. **You get a ranked list** with scores, uncertainty bands, and the Metriq commit hash so everything is auditable.
|
|
71
|
+
|
|
72
|
+
The scoring framework is called [WCPP (Workload-Conditioned Physical Projection)](WCPP_SPEC.md). Every number comes from physics, not heuristics. See the [full specification](WCPP_SPEC.md) for the math, axioms, and proofs.
|
|
73
|
+
|
|
74
|
+
## What Qlro does NOT do
|
|
75
|
+
|
|
76
|
+
- **Does not run your circuit.** You run it yourself on IBM Quantum, AWS Braket, Quantinuum, etc.
|
|
77
|
+
- **Does not build or optimize circuits.** That's Classiq, Qiskit transpiler, etc.
|
|
78
|
+
- **Does not measure hardware.** That's [Metriq](https://metriq.info) / Unitary Foundation. We consume their data.
|
|
79
|
+
- **Does not hide uncertainty.** Every score shows what's measured vs. estimated vs. assumed.
|
|
80
|
+
|
|
81
|
+
## Jupyter integration
|
|
82
|
+
|
|
83
|
+
Qlro auto-renders as an inline HTML table in Jupyter notebooks. For quick interactive use:
|
|
84
|
+
|
|
85
|
+
```python
|
|
86
|
+
%load_ext qlro.jupyter
|
|
87
|
+
%qlro my_circuit chemistry
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
See [`examples/vqe_h2_with_qlro.ipynb`](examples/vqe_h2_with_qlro.ipynb) for a complete walkthrough.
|
|
91
|
+
|
|
92
|
+
## Try the interactive simulator
|
|
93
|
+
|
|
94
|
+
Don't understand the problem Qlro solves? [Play the simulator](https://qlro-three.vercel.app/simulator) — a 5-minute browser game where you play as a quantum engineer under a paper deadline, with and without Qlro.
|
|
95
|
+
|
|
96
|
+
## Update benchmark data
|
|
97
|
+
|
|
98
|
+
```bash
|
|
99
|
+
python scripts/sync_metriq.py
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
Pulls the latest from the [metriq-data](https://github.com/unitaryfoundation/metriq-data) repository. Every recommendation is anchored to a specific Metriq commit for reproducibility.
|
|
103
|
+
|
|
104
|
+
## Development
|
|
105
|
+
|
|
106
|
+
```bash
|
|
107
|
+
git clone https://github.com/linsletoh/qlro.git
|
|
108
|
+
cd qlro
|
|
109
|
+
pip install -e ".[dev,server]"
|
|
110
|
+
pytest # 107 tests
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
## Architecture
|
|
114
|
+
|
|
115
|
+
```
|
|
116
|
+
src/qlro/
|
|
117
|
+
├── scoring/ ← WCPP reference implementation
|
|
118
|
+
│ ├── physics.py ← benchmark → physical value transforms
|
|
119
|
+
│ ├── axes.py ← capability axis aggregation
|
|
120
|
+
│ ├── composition.py← workload-conditioned geometric mean
|
|
121
|
+
│ └── wcpp.py ← qlro_fit() entry point
|
|
122
|
+
├── public_api.py ← recommend(), log_outcome()
|
|
123
|
+
├── jupyter.py ← %qlro magic for notebooks
|
|
124
|
+
├── runner/ ← Qiskit Aer experiment runner
|
|
125
|
+
├── comparison/ ← normalization pipeline
|
|
126
|
+
├── recommendation/ ← scoring + explanation engine
|
|
127
|
+
└── api.py ← FastAPI web application
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
## Key documents
|
|
131
|
+
|
|
132
|
+
- [**WCPP_SPEC.md**](WCPP_SPEC.md) — Full technical specification of the scoring framework
|
|
133
|
+
- [**ROADMAP.md**](ROADMAP.md) — Product roadmap + positioning copy
|
|
134
|
+
- [**papers/wcpp-draft.md**](papers/wcpp-draft.md) — WCPP preprint (published on Zenodo, [DOI: 10.5281/zenodo.19601379](https://doi.org/10.5281/zenodo.19601379))
|
|
135
|
+
- [**test_results/**](test_results/) — Validation records with external vendor cross-references
|
|
136
|
+
|
|
137
|
+
## Citation
|
|
138
|
+
|
|
139
|
+
If you use Qlro or WCPP in research, please cite the Zenodo preprint:
|
|
140
|
+
|
|
141
|
+
```bibtex
|
|
142
|
+
@misc{oh2026wcpp,
|
|
143
|
+
author = {Oh, Yeonwoo},
|
|
144
|
+
title = {{Workload-Conditioned Physical Projection: A Vendor-Neutral Framework for Quantum Device Selection}},
|
|
145
|
+
year = {2026},
|
|
146
|
+
publisher = {Zenodo},
|
|
147
|
+
version = {0.3},
|
|
148
|
+
doi = {10.5281/zenodo.19601532},
|
|
149
|
+
url = {https://doi.org/10.5281/zenodo.19601532}
|
|
150
|
+
}
|
|
151
|
+
```
|
|
152
|
+
|
|
153
|
+
Latest version DOI: [**10.5281/zenodo.19601532**](https://doi.org/10.5281/zenodo.19601532) (v0.3, includes full technical specification `WCPP_SPEC.md`)
|
|
154
|
+
|
|
155
|
+
Previous version: v0.2 at [10.5281/zenodo.19601379](https://doi.org/10.5281/zenodo.19601379) (archived).
|
|
156
|
+
|
|
157
|
+
## License
|
|
158
|
+
|
|
159
|
+
Apache 2.0
|
qlro-0.2.0/README.md
ADDED
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
# Qlro
|
|
2
|
+
|
|
3
|
+
**Show us your quantum circuit. We'll tell you where to run it.**
|
|
4
|
+
|
|
5
|
+
```python
|
|
6
|
+
from qiskit import QuantumCircuit
|
|
7
|
+
import qlro
|
|
8
|
+
|
|
9
|
+
qc = QuantumCircuit(4)
|
|
10
|
+
qc.h(0); qc.cx(0, 1); qc.cx(1, 2); qc.cx(2, 3)
|
|
11
|
+
qc.measure_all()
|
|
12
|
+
|
|
13
|
+
result = qlro.recommend(qc, category="chemistry")
|
|
14
|
+
result.primary # → 'H2-2'
|
|
15
|
+
result.primary_fit # → 0.8140
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
Qlro is a quantum device recommendation engine. Give it a circuit and a workload type, and it ranks every available quantum device by how well that device fits *your specific workload* — based on real benchmark data from [Metriq](https://metriq.info) (Unitary Foundation), not vendor marketing.
|
|
19
|
+
|
|
20
|
+
## Install
|
|
21
|
+
|
|
22
|
+
```bash
|
|
23
|
+
pip install qlro
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
Ships with a snapshot of the Metriq benchmark dataset. No API keys, no accounts, no internet required.
|
|
27
|
+
|
|
28
|
+
## How it works
|
|
29
|
+
|
|
30
|
+
1. **You have a quantum circuit** (Qiskit `QuantumCircuit` or OpenQASM string).
|
|
31
|
+
2. **You tell Qlro what kind of workload it is**: `chemistry`, `simulation`, `optimization`, or `ml`.
|
|
32
|
+
3. **Qlro scores every quantum device** across four capability axes:
|
|
33
|
+
- **Γ (Connectivity)** — verified entanglement coverage across the chip
|
|
34
|
+
- **Φ (Coherence)** — information survival over circuit depth
|
|
35
|
+
- **F (Fidelity)** — per-operation accuracy
|
|
36
|
+
- **T (Throughput)** — effective operations per second
|
|
37
|
+
4. **You get a ranked list** with scores, uncertainty bands, and the Metriq commit hash so everything is auditable.
|
|
38
|
+
|
|
39
|
+
The scoring framework is called [WCPP (Workload-Conditioned Physical Projection)](WCPP_SPEC.md). Every number comes from physics, not heuristics. See the [full specification](WCPP_SPEC.md) for the math, axioms, and proofs.
|
|
40
|
+
|
|
41
|
+
## What Qlro does NOT do
|
|
42
|
+
|
|
43
|
+
- **Does not run your circuit.** You run it yourself on IBM Quantum, AWS Braket, Quantinuum, etc.
|
|
44
|
+
- **Does not build or optimize circuits.** That's Classiq, Qiskit transpiler, etc.
|
|
45
|
+
- **Does not measure hardware.** That's [Metriq](https://metriq.info) / Unitary Foundation. We consume their data.
|
|
46
|
+
- **Does not hide uncertainty.** Every score shows what's measured vs. estimated vs. assumed.
|
|
47
|
+
|
|
48
|
+
## Jupyter integration
|
|
49
|
+
|
|
50
|
+
Qlro auto-renders as an inline HTML table in Jupyter notebooks. For quick interactive use:
|
|
51
|
+
|
|
52
|
+
```python
|
|
53
|
+
%load_ext qlro.jupyter
|
|
54
|
+
%qlro my_circuit chemistry
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
See [`examples/vqe_h2_with_qlro.ipynb`](examples/vqe_h2_with_qlro.ipynb) for a complete walkthrough.
|
|
58
|
+
|
|
59
|
+
## Try the interactive simulator
|
|
60
|
+
|
|
61
|
+
Don't understand the problem Qlro solves? [Play the simulator](https://qlro-three.vercel.app/simulator) — a 5-minute browser game where you play as a quantum engineer under a paper deadline, with and without Qlro.
|
|
62
|
+
|
|
63
|
+
## Update benchmark data
|
|
64
|
+
|
|
65
|
+
```bash
|
|
66
|
+
python scripts/sync_metriq.py
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
Pulls the latest from the [metriq-data](https://github.com/unitaryfoundation/metriq-data) repository. Every recommendation is anchored to a specific Metriq commit for reproducibility.
|
|
70
|
+
|
|
71
|
+
## Development
|
|
72
|
+
|
|
73
|
+
```bash
|
|
74
|
+
git clone https://github.com/linsletoh/qlro.git
|
|
75
|
+
cd qlro
|
|
76
|
+
pip install -e ".[dev,server]"
|
|
77
|
+
pytest # 107 tests
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
## Architecture
|
|
81
|
+
|
|
82
|
+
```
|
|
83
|
+
src/qlro/
|
|
84
|
+
├── scoring/ ← WCPP reference implementation
|
|
85
|
+
│ ├── physics.py ← benchmark → physical value transforms
|
|
86
|
+
│ ├── axes.py ← capability axis aggregation
|
|
87
|
+
│ ├── composition.py← workload-conditioned geometric mean
|
|
88
|
+
│ └── wcpp.py ← qlro_fit() entry point
|
|
89
|
+
├── public_api.py ← recommend(), log_outcome()
|
|
90
|
+
├── jupyter.py ← %qlro magic for notebooks
|
|
91
|
+
├── runner/ ← Qiskit Aer experiment runner
|
|
92
|
+
├── comparison/ ← normalization pipeline
|
|
93
|
+
├── recommendation/ ← scoring + explanation engine
|
|
94
|
+
└── api.py ← FastAPI web application
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
## Key documents
|
|
98
|
+
|
|
99
|
+
- [**WCPP_SPEC.md**](WCPP_SPEC.md) — Full technical specification of the scoring framework
|
|
100
|
+
- [**ROADMAP.md**](ROADMAP.md) — Product roadmap + positioning copy
|
|
101
|
+
- [**papers/wcpp-draft.md**](papers/wcpp-draft.md) — WCPP preprint (published on Zenodo, [DOI: 10.5281/zenodo.19601379](https://doi.org/10.5281/zenodo.19601379))
|
|
102
|
+
- [**test_results/**](test_results/) — Validation records with external vendor cross-references
|
|
103
|
+
|
|
104
|
+
## Citation
|
|
105
|
+
|
|
106
|
+
If you use Qlro or WCPP in research, please cite the Zenodo preprint:
|
|
107
|
+
|
|
108
|
+
```bibtex
|
|
109
|
+
@misc{oh2026wcpp,
|
|
110
|
+
author = {Oh, Yeonwoo},
|
|
111
|
+
title = {{Workload-Conditioned Physical Projection: A Vendor-Neutral Framework for Quantum Device Selection}},
|
|
112
|
+
year = {2026},
|
|
113
|
+
publisher = {Zenodo},
|
|
114
|
+
version = {0.3},
|
|
115
|
+
doi = {10.5281/zenodo.19601532},
|
|
116
|
+
url = {https://doi.org/10.5281/zenodo.19601532}
|
|
117
|
+
}
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
Latest version DOI: [**10.5281/zenodo.19601532**](https://doi.org/10.5281/zenodo.19601532) (v0.3, includes full technical specification `WCPP_SPEC.md`)
|
|
121
|
+
|
|
122
|
+
Previous version: v0.2 at [10.5281/zenodo.19601379](https://doi.org/10.5281/zenodo.19601379) (archived).
|
|
123
|
+
|
|
124
|
+
## License
|
|
125
|
+
|
|
126
|
+
Apache 2.0
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
[build-system]
|
|
2
|
+
requires = ["setuptools>=68.0", "wheel"]
|
|
3
|
+
build-backend = "setuptools.build_meta"
|
|
4
|
+
|
|
5
|
+
[project]
|
|
6
|
+
name = "qlro"
|
|
7
|
+
version = "0.2.0"
|
|
8
|
+
description = "Show us your quantum circuit. We tell you where to run it."
|
|
9
|
+
requires-python = ">=3.11"
|
|
10
|
+
license = {text = "Apache-2.0"}
|
|
11
|
+
readme = "README.md"
|
|
12
|
+
authors = [
|
|
13
|
+
{name = "Yeonwoo Oh", email = "linslet77@gmail.com"},
|
|
14
|
+
]
|
|
15
|
+
maintainers = [
|
|
16
|
+
{name = "Yeonwoo Oh", email = "linslet77@gmail.com"},
|
|
17
|
+
]
|
|
18
|
+
keywords = ["quantum", "benchmarking", "recommendation", "qiskit", "metriq", "wcpp"]
|
|
19
|
+
classifiers = [
|
|
20
|
+
"Development Status :: 3 - Alpha",
|
|
21
|
+
"Intended Audience :: Science/Research",
|
|
22
|
+
"Topic :: Scientific/Engineering :: Physics",
|
|
23
|
+
"License :: OSI Approved :: Apache Software License",
|
|
24
|
+
"Programming Language :: Python :: 3.11",
|
|
25
|
+
"Programming Language :: Python :: 3.12",
|
|
26
|
+
]
|
|
27
|
+
dependencies = [
|
|
28
|
+
"pydantic>=2.5.0",
|
|
29
|
+
"qiskit>=1.0.0",
|
|
30
|
+
"qiskit-aer>=0.13.0",
|
|
31
|
+
]
|
|
32
|
+
|
|
33
|
+
[project.optional-dependencies]
|
|
34
|
+
server = [
|
|
35
|
+
"fastapi>=0.104.0",
|
|
36
|
+
"uvicorn>=0.24.0",
|
|
37
|
+
"sqlalchemy>=2.0.0",
|
|
38
|
+
]
|
|
39
|
+
dev = [
|
|
40
|
+
"pytest>=7.4.0",
|
|
41
|
+
"pytest-asyncio>=0.23.0",
|
|
42
|
+
"httpx>=0.25.0",
|
|
43
|
+
]
|
|
44
|
+
|
|
45
|
+
[project.urls]
|
|
46
|
+
Homepage = "https://github.com/linsletoh/qlro"
|
|
47
|
+
Documentation = "https://github.com/linsletoh/qlro/blob/main/WCPP_SPEC.md"
|
|
48
|
+
Paper = "https://doi.org/10.5281/zenodo.19601532"
|
|
49
|
+
Simulator = "https://qlro-three.vercel.app/simulator"
|
|
50
|
+
Issues = "https://github.com/linsletoh/qlro/issues"
|
|
51
|
+
|
|
52
|
+
[tool.setuptools.packages.find]
|
|
53
|
+
where = ["src"]
|
|
54
|
+
|
|
55
|
+
[tool.setuptools.package-data]
|
|
56
|
+
qlro = ["data/*.json"]
|
|
57
|
+
|
|
58
|
+
[tool.pytest.ini_options]
|
|
59
|
+
testpaths = ["tests"]
|
qlro-0.2.0/setup.cfg
ADDED
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
"""Qlro: the evaluation layer for quantum pilot decisions.
|
|
2
|
+
|
|
3
|
+
Primary use is as an importable library:
|
|
4
|
+
|
|
5
|
+
>>> from qiskit import QuantumCircuit
|
|
6
|
+
>>> import qlro
|
|
7
|
+
>>>
|
|
8
|
+
>>> qc = QuantumCircuit(4)
|
|
9
|
+
>>> qc.h(0); qc.cx(0, 1); qc.cx(1, 2); qc.cx(2, 3)
|
|
10
|
+
>>> qc.measure_all()
|
|
11
|
+
>>>
|
|
12
|
+
>>> result = qlro.recommend(qc, category="chemistry")
|
|
13
|
+
>>> result.primary
|
|
14
|
+
'H2-2'
|
|
15
|
+
>>> result # auto-renders in Jupyter
|
|
16
|
+
|
|
17
|
+
See WCPP_SPEC.md and ROADMAP.md at the repo root for the full framework
|
|
18
|
+
and product context.
|
|
19
|
+
"""
|
|
20
|
+
|
|
21
|
+
from qlro.public_api import (
|
|
22
|
+
CircuitInfo,
|
|
23
|
+
DeviceRanking,
|
|
24
|
+
Recommendation,
|
|
25
|
+
log_outcome,
|
|
26
|
+
recommend,
|
|
27
|
+
)
|
|
28
|
+
from qlro.scoring.priors import WorkloadCategory
|
|
29
|
+
|
|
30
|
+
__all__ = [
|
|
31
|
+
"recommend",
|
|
32
|
+
"log_outcome",
|
|
33
|
+
"Recommendation",
|
|
34
|
+
"DeviceRanking",
|
|
35
|
+
"CircuitInfo",
|
|
36
|
+
"WorkloadCategory",
|
|
37
|
+
]
|