{"id":37695269,"url":"https://github.com/zapatacomputing/benchq","last_synced_at":"2026-01-16T12:47:55.896Z","repository":{"id":75182286,"uuid":"602681794","full_name":"zapatacomputing/benchq","owner":"zapatacomputing","description":"Resource estimation for fault-tolerant quantum computation.","archived":false,"fork":false,"pushed_at":"2025-03-06T04:03:29.000Z","size":52869,"stargazers_count":57,"open_issues_count":6,"forks_count":14,"subscribers_count":10,"default_branch":"main","last_synced_at":"2026-01-03T06:47:45.928Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/zapatacomputing.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":"CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-02-16T18:12:11.000Z","updated_at":"2025-12-04T05:25:19.000Z","dependencies_parsed_at":"2024-01-31T02:35:01.879Z","dependency_job_id":"af695448-6b68-4781-bede-44acb08fa0f7","html_url":"https://github.com/zapatacomputing/benchq","commit_stats":null,"previous_names":[],"tags_count":6,"template":false,"template_full_name":null,"purl":"pkg:github/zapatacomputing/benchq","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zapatacomputing%2Fbenchq","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zapatacomputing%2Fbenchq/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zapatacomputing%2Fbenchq/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zapatacomputing%2Fbenchq/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/zapatacomputing","download_url":"https://codeload.github.com/zapatacomputing/benchq/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zapatacomputing%2Fbenchq/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28478743,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-16T11:59:17.896Z","status":"ssl_error","status_checked_at":"2026-01-16T11:55:55.838Z","response_time":107,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2026-01-16T12:47:55.059Z","updated_at":"2026-01-16T12:47:55.888Z","avatar_url":"https://github.com/zapatacomputing.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Bench-Q\nBench-Q provides tools for estimating the hardware resources required for fault-tolerant quantum computation. It includes a graph-state compiler, distillation factory models, decoder performance models, an ion-trap architecture model, implementations of selected quantum algorithms, and more.\n\nBench-Q was developed as a part of [DARPA Quantum Benchmarking program](https://www.darpa.mil/program/quantum-benchmarking).\n\n## Installation\n\nTo install the latest released version of Bench-Q run `pip install benchq`.\nIt is tested with Python 3.9-3.11 on Linux and may or may not work with other Python versions or operating systems.\n\nTo use the development version of Bench-Q, clone this repository and run `pip install .` from the top-level directory.\n\n### Extra dependencies\n\n#### Julia\nAlthough the Graph State Compilation pipeline requires Julia, you do not need to manually install it: benchq will install Julia automatically whenever it is needed if you do not already have a version of Julia that is compatible with Bench-Q installed.\n\nNote that running `julia` from the terminal may not give you access to the version of Julia installed by Bench-Q. This is because JuliaPkg will install Julia in an isolated environment in order to avoid any potential conflicts with other versions of Julia that are already installed. See the [JuliaPkg documentation](https://github.com/JuliaPy/pyjuliapkg/blob/main/README.md) for more information about how Bench-Q installs Julia.\n\n#### PySCF\nIf you plan to use PySCF to generate Hamiltonians, use the `pyscf` install extra:\n```bash\npip install '.[pyscf]'\n```\n\nOn some systems, the installation of PySCF can be problematic. If you're a Windows user, consider using [WSL](https://learn.microsoft.com/en-us/windows/wsl/install). You might also consider installing PySCF directly from its git repo: `pip install git+https://github.com/pyscf/pyscf@v2.2.1`.\n\n\n#### Azure Quantum Resource Estimation\nTo run resource estimation using Azure Quantum Resource Estimation (QRE) tool, one needs to have Azure QRE package configure. See [this tutorial](https://learn.microsoft.com/en-us/azure/quantum/intro-to-resource-estimation) for more information.\n\n#### Jabalizer\nJabalizer is an alternate graph state compilation toolchain to ruby slippers. To install Jabalizer, you will need to have the Rust programming language installed on your machine and run `pip install '.[jabalizer]'` from the top-level directory of this repository.\n\nJabalizer can provide drastically reduced resource counts for some circuits, but it is considerably slower than ruby slippers. It is recommended to use Jabalizer only for smaller circuits.\n\n## Usage\nSee the [`examples`](examples) directory to learn more about how to use Bench-Q.\n\n### Terminology Disambiguation\n\nAs fault-tolerant quantum computing is a relatively new field, there is no for several concepts which are crucial for resource estimation. We will try to clarify them here.\n\n#### Problem Ingestion vs Problem Embedding vs Algorithm Implementation\n\n`benchq` splits up the process of specifying a problem into three steps. The purpose of this is to split up the more complex parts of the process into more digestable, modular parts. The three steps are:\n\n##### Problem ingestion\n\nTake an input representing a problem instance and outputs data that needs to be loaded into the quantum computer. (e.g. the Hamiltonian we are simulating)\n\n##### Problem embedding\nTake the data from the problem ingestion step and embed it into a quantum circuit. (e.g. the block encoding circuit.) This can be a complicated process involving arithmetic and specialized compilation.\n\n##### Algorithm implementation\nTake the circuit from the problem embedding step and implement the algorithm. Also requires information from the problem instance to determine how to budget errors throughout the computation. (e.g. the required accuracy of the algorithm.)\n\n\n## Running benchmarks\n\nBecause quantum compilation and resource estimation can be compute intensive, Bench-Q includes tools for benchmarking components that are potential bottlenecks. To run the benchmarks, execute the command\n\n``` bash\npytest benchmarks/\n```\n\nfrom the top-level directory of this repo.\n\nBy default, this will skip some benchmarks that are extremely slow. If you want to run\nthose too, set environmental variable `SLOW_BENCHMARKS` to any value, e.g.:\n\n``` bash\nSLOW_BENCHMARKS=1 pytest benchmarks/\n```\n\nThese benchmarks are run automatically on each release. You can see the performance of benchq over time on [benchq's benchmark page](https://zapatacomputing.github.io/benchq/dev/bench/).\n\n## Development and Contribution\n\nTo install the development version, run `pip install -e '.[dev]'` from the main directory.\n\nWe use [Google-style](https://sphinxcontrib-napoleon.readthedocs.io/en/latest/example_google.html) docstring format. If you'd like to specify types, please use [PEP 484](https://www.python.org/dev/peps/pep-0484/) type hints instead adding them to docstrings.\n[Style checks](.github/workflows/style.yml) will automatically be run on pull requests.\n\n- If you'd like to report a bug/issue please create a new issue in this repository.\n- If you'd like to contribute, please create a pull request to `main`.\n\n### Running tests\n\nUnit tests for this project can be run using `make coverage` command from the main directory.\nAlternatively you can also run `pytest .`.\n\nSince tests of integration with Azure QRE require additional setup, they are disabled by default. You can enable them by setting environmental variable `BENCHQ_TEST_AZURE` to any value.\n\n### Style\n\nWe are using automatic tools for style and type checking. In order to make sure the code is compliant with them please run: `make style` from the main directory (this requires `dev` dependencies).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzapatacomputing%2Fbenchq","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fzapatacomputing%2Fbenchq","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzapatacomputing%2Fbenchq/lists"}