rigetti / rigetti/pyquil

Noise models could use some TLC

Open
#886 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

discussion :thinking:
Dominant language
Python
Stars
1.5k
Forks
358
Avg merge
1d 58m
Merged PRs (30d)
4

Description

We introduced the noise model functionality to pyQuil back in February 2018, along with our release of Forest 1.3. Since then, we have made a good number of changes to the structure of pyQuil, and it seems that the noise model functionality has been neglected. We are looking to reinvigorate this component of our SDK, as there have been many external feature requests related to noise models, and we additionally have made strides internally on noise-related projects.

Tasks:

  • Supply code for easily generating noise models from benchmarking data @sophiaponte
  • Regularly update the noise models for our currently available Aspen QPUs
  • Hook up the QVM's new density matrix simulation functionality to pyquil @stylewarning
  • Rethink the way in which we generate and apply noise models @sophiaponte @kilimanjaro
  • Consider promoting the definition of noisy gates to a first-class instruction in Quil
  • Standardize the way in which noise models are applied to Programs

Currently, the QuantumComputer object can be "noisy", meaning that it has a noise model lodged inside of it as a class attribute. However, all this means is that it handles the application of the noise model to the user-supplied Program object at runtime. This has caused some user confusion, and we may want to consider bringing noise models back "into the open" as they were in the past. But, it would be great to better understand use cases that might prefer the stateful QC approach.

Additionally, I know that @sophiaponte and @kilimanjaro have been doing some exciting innovation w.r.t. the way in which we define, compose, and apply noise models, so it would be great to get their input on this issue.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start with the QuantumComputer object and its noise-model handling, then review the existing pyQuil noise-model and QVM density-matrix integration points. The task list spans several possible redesigns and has no single completion criterion, so use the proposed work items and stakeholder input to define a narrower scope before coding.

Written by the indexing model from the issue text.

Assessment

Tech stack
python
Domain
backend-api-design, developer-experience
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
20/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.