QREF
Quantum Resource Estimation Format (QREF) is an open format for representing quantum algorithms, optimized for usage in quantum resource estimation (QRE).
QREF comprises:
- Definition of data format, formalized as a JSON schema.
- A Python library for validation of quantum programs written in QREF format using Pydantic.
- Rudimentary visualization tool
qref-render.
Installation
Using QREF data format does not require installation - you can easily write quantum programs in YAML or JSON.
To install QREF Python package, run pip install qref.
Alternatively, you can clone this repository and build it from source:
# Clone QREF repo (you can use HTTP link as well)
git clone git@github.com:PsiQ/qref.git
cd qref
pip install .
QREF format
QREF format represents quantum programs as a hierarchical directed acyclic graphs (DAGs). That's a mouthful, so let us unpack what it means:
- hierarchical: each node can contain subgraphs, i.e. routines can be nested inside larger routines.
- directed: information flow is unidirectional, and the direction is unambiguous.
- acyclic: meaning there are no loops.
Consider the following hierarchical DAG of a hypothetical quantum program:
It can be succinctly written in QREF format as:
version: v1
program:
name: my_algorithm
ports:
- direction: input
name: in_0
size: 2
- direction: input
name: in_1
size: 2
- direction: output
name: out_0
size: 4
children:
- name: subroutine_1
ports:
- direction: input
name: in_0
size: 2
- direction: output
name: out_0
size: 3
- name: subroutine_2
ports:
- direction: input
name: in_0
size: 2
- direction: output
name: out_0
size: 1
- direction: output
name: out_1
size: 1
- name: merge
ports:
- direction: input
name: in_0
size: 1
- direction: input
name: in_1
size: 1
- direction: input
name: in_2
size: 2
- direction: output
name: out_0
size: 4
connections:
- source: in_0
target: subroutine_1.in_0
- source: in_1
target: subroutine_2.in_0
- source: subroutine_1.out_0
target: merge.in_2
- source: subroutine_2.out_0
target: merge.in_0
- source: subroutine_2.out_1
target: merge.in_1
- source: merge.out_0
target: out_0
For full description of QREF format, check our docs.
Using QREF package
Using JSON schema for validating data in QREF format
JSON schema for QREF format can be obtained by calling generate_program_schema function.
Such schema can be then used for validating user's input, e.g. using jsonschema package:
from jsonschema import validate
from qref import generate_program_schema
# Hypothetical function loading your data as native Python dictionary.
data = load_some_program()
schema = generate_program_schema()
# This will raise if there are some validation errors.
validate(schema, data)
Validation using Pydantic models
If you are familiar with Pydantic, you might find it easier to work with QREF Pydantic
models instead of interacting with JSON schema directly. In the example below, we create
an instance of SchemaV1 model from validated data stored in QREF format:
from qref import SchemaV1
data = load_some_program()
# This will raise if data is not valid
program = SchemaV1.model_validate(data)
Development
In order to install development environment or build documentation locally, please refer to Development Guide.
Documentation
Documentation for qref can be found here.
To run docs locally install it with docs option: pip install ".[docs]" (or poetry install --with docs) and then run mkdocs serve.
Metadata
Release files for qref 0.11.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| qref-0.11.0.tar.gz | 15.8 kB | With provenance | Details for qref-0.11.0.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| qref-0.11.0-py3-none-any.whl | Python 3 | none | any | Details for qref-0.11.0-py3-none-any.whl |
Total release size: 34.4 kB
Release files / qref-0.11.0.tar.gz
| Download URL | qref-0.11.0.tar.gz |
|---|---|
| Size | 15.8 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
eb0752ec7801a94228aa978377f012207a258351662557a8d43218a7a90df4b6
|
|
BLAKE2b-256 checksum How to use checksums |
6a55dbab6fcd20cf5635c170d1ecc86e77f27348b87dd27e327e089ae7c37c36
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.12.9
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Apr 8, 2025.
Transparency logRelease files / qref-0.11.0-py3-none-any.whl
| Download URL | qref-0.11.0-py3-none-any.whl |
|---|---|
| Size | 18.6 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
fc3ef2984d1d2fa1d8cf7322f2749521c2052e1143b531cfe5b8edf79b8b1044
|
|
BLAKE2b-256 checksum How to use checksums |
6d08ad5afb5b17c33e57f34189cebbc9b5435914b5cf7cb9fe17a6b65469d8c6
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.12.9
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Apr 8, 2025.
Transparency logSecurity for qref 0.11.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
Full provenance
All 2 files in this release have been uploaded with provenance metadata.
Attestation for qref-0.11.0.tar.gz
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Apr 8, 2025.
Transparency logA note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.