Skip to content

Introduce a noise model for the Qulacs backend (gate noise + readout error handling) #75

@shgokita

Description

@shgokita

Background

The current Qulacs backend is effectively noise-free (ideal simulation).
We want to introduce a practical noise model so simulation can reflect device calibration/topology data.

Current state (before implementation)

  • Execution uses ideal state simulation only
  • No gate noise is applied
  • No readout error is applied
  • Device topology calibration fields are not used for noise behavior

Proposal

Add a configurable noise model for the Qulacs backend with the following scope:

  1. Gate noise
  • Single-qubit depolarizing noise
  • Two-qubit depolarizing noise
  • Option to derive probabilities from topology fidelity:
    • 1Q: p = 1 - qubits[].fidelity
    • 2Q: p = 1 - couplings[].fidelity
  • Optional fixed-probability override via config
  1. Readout error
  • Support asymmetric readout error using topology fields:
    • prob_meas1_prep0
    • prob_meas0_prep1
  • Apply readout error to measurement outcomes in a clear, testable way
  1. Config interface (proposed)
    Under plugin.noise_model:
  • enabled
  • use_topology_fidelity
  • single_qubit_depolarizing (optional override)
  • two_qubit_depolarizing (optional override)
  • readout_error

Review points

  • Is asymmetric readout error required for expected use cases?
  • Should readout be modeled exactly (custom post-processing) or approximated with standard-only behavior?
  • Should topology-derived noise be default, with fixed values as optional override?
  • Do we need directional handling policy for coupling lookup (control->target only vs bidirectional)?

Suggested acceptance criteria

  • Team agrees on model scope and default behavior
  • Config schema and docs are explicit about supported behavior
  • Tests cover:
    • backward compatibility when noise is disabled
    • topology-derived gate noise
    • readout error behavior
    • probability bounds validation ([0, 1])

Affected areas (expected)

  • src/device_gateway/plugins/qulacs/backend.py
  • src/device_gateway/plugins/qulacs/circuit.py
  • tests/device_gateway/plugins/qulacs/test_backend.py
  • config/config.yaml
  • config/config.yaml.qulacs
  • config/example/config.yaml

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions