Skip to content

Implement a Flexible Noise Model Class #12

@adelshb

Description

@adelshb

Issue: Implement a Flexible Noise Model Class

Description:
Currently, the circuit-level threshold calculator uses a fixed and limited noise model. To improve flexibility and clarity and allow users to assign different noise models dynamically, we propose implementing a NoiseModel class. This class would allow users to easily assign and customize their desired noise model for threshold calculations, including support for various types of noise (e.g., depolarizing, bit-flip, phase-flip, amplitude damping, etc.).

This new class would decouple the noise model from the existing circuit construction logic, enabling a more modular approach to handling noise and allowing users to experiment with different noise models.

Motivation:

  • Flexibility: Users should be able to easily switch between different noise models depending on their use case or experiment.
  • Modularity: A separate NoiseModel class will make the codebase more maintainable and easier to extend with new noise models.
  • Customization: Researchers can fine-tune noise models specific to their quantum hardware or experimental setup, allowing for more realistic simulations.

Expected Changes:

  • Introduce NoiseModel class: Implement a class that allows users to assign a desired noise model (e.g., depolarizing, bit-flip, phase-flip, amplitude damping) and specify noise parameters.
  • Interface for assigning noise models: Allow users to pass an instance of the NoiseModel class to the ThresholdLAB or/and BaseCode for customized noise handling.
  • Support for multiple noise types: Provide a flexible interface that can be extended to support new noise models in the future.
  • Update threshold calculation logic: Refactor the threshold calculation to interface with the NoiseModel class instead of relying on a fixed noise model.
  • Testing and Validation: Ensure existing tests pass with the new class and add new tests to cover various noise models.

Design Proposal:

  1. NoiseModel Class:
  • The class should have a base interface for common operations (e.g., apply_noise()).
  • Each subclass should implement the noise model-specific behaviour.
  1. Threshold Calculation Integration:
  • Modify the ThresholdLAB or/and BaseCode to accept an instance of the NoiseModel class.
  • Update the threshold calculation logic to interface with the noise model dynamically, applying the model during the simulation process.
  1. Future Extensions:
  • Design the NoiseModel class to be easily extendable with additional noise models (e.g., correlated noise, time-dependent noise, qubit-dependent noise).

Metadata

Metadata

Assignees

Labels

codingGeneral coding work, such as implementing a new algorithm or writing testsenhancementNew feature or requestgood first issueGood for newcomersnoise-modellingImplementation of noise models

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions