# unitaryfoundation/mitiq architecture

> Architecture diagram of the GitHub repository unitaryfoundation/mitiq, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-29). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/unitaryfoundation/mitiq
- Repository: https://github.com/unitaryfoundation/mitiq

## Overview

Mitiq is a Python quantum-error-mitigation toolkit. A user supplies a quantum circuit and an executor; supported circuit formats are converted to Mitiq’s internal representation, a mitigation method generates or transforms circuits, and the executor runs them on a simulator or quantum backend. The method then combines or extrapolates results into an estimate. The graph includes documented stable techniques, calibration, experimental methods, and format adapters. Edges reflect the README and sampled source; wiring for unsampled methods is intentionally not inferred.

Main entry points: [`mitiq/__init__.py`](https://github.com/unitaryfoundation/mitiq/blob/main/mitiq/__init__.py) (Mitiq API), [`mitiq/executor/executor.py`](https://github.com/unitaryfoundation/mitiq/blob/main/mitiq/executor/executor.py) (Executor), [`mitiq/zne/zne.py`](https://github.com/unitaryfoundation/mitiq/blob/main/mitiq/zne/zne.py) (Zero-Noise Extrapolation), [`mitiq/pec/pec.py`](https://github.com/unitaryfoundation/mitiq/blob/main/mitiq/pec/pec.py) (Probabilistic Error Cancellation)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_entry["User Interface"]
  node_api["Mitiq API<br/>[__init__.py]"]
  node_calibration["Calibration<br/>[calibrator.py]"]
end

subgraph group_formats["Circuit Formats"]
  node_conversions["Circuit Conversion<br/>[conversions.py]"]
  node_adapters["Framework Adapters"]
end

subgraph group_runtime["Execution Runtime"]
  node_types["Program and Results Types<br/>[typing.py]"]
  node_executor["Executor<br/>[executor.py]"]
  node_observable["Observables<br/>[observable.py]"]
end

subgraph group_stable["Stable Mitigation"]
  node_zne["Zero-Noise Extrapolation<br/>[zne.py]"]
  node_zne_scaling["Noise Scaling"]
  node_zne_inference["Extrapolation Inference<br/>[inference.py]"]
  node_pec["Probabilistic Error Cancellation<br/>[pec.py]"]
  node_pec_representations["Noise Representations"]
  node_cdr["Clifford Data Regression<br/>[cdr.py]"]
  node_ddd["Dynamical Decoupling<br/>[ddd.py]"]
  node_rem["Readout Mitigation<br/>[rem.py]"]
  node_qse["Quantum Subspace Expansion<br/>[qse.py]"]
  node_lre["Layerwise Richardson Extrapolation<br/>[lre.py]"]
end

subgraph group_experimental["Experimental Methods"]
  node_experimental["Experimental Techniques"]
end

node_user(("Quantum User"))
node_backend(("Simulator or Backend"))

node_user -->|"supplies circuit"| node_api
node_api -->|"accepts formats"| node_conversions
node_conversions -->|"dispatches conversion"| node_adapters
node_api -->|"selects mitigation"| node_zne
node_api -->|"selects mitigation"| node_pec
node_api -->|"selects mitigation"| node_cdr
node_api -->|"selects mitigation"| node_ddd
node_api -->|"selects mitigation"| node_rem
node_api -->|"selects mitigation"| node_qse
node_api -->|"selects mitigation"| node_lre
node_api -.->|"selects experimental method"| node_experimental
node_api -->|"calibrates strategies"| node_calibration
node_zne -->|"scales circuits"| node_zne_scaling
node_zne -->|"extrapolates results"| node_zne_inference
node_zne -->|"runs circuits"| node_executor
node_pec -->|"uses representations"| node_pec_representations
node_pec -->|"runs samples"| node_executor
node_cdr -->|"evaluates circuits"| node_executor
node_ddd -->|"evaluates circuits"| node_executor
node_lre -->|"evaluates circuits"| node_executor
node_executor -->|"executes circuits"| node_backend
node_backend -->|"returns results"| node_executor
node_executor -->|"normalizes results"| node_types
node_executor -->|"computes expectations"| node_observable

click node_api "https://github.com/unitaryfoundation/mitiq/blob/main/mitiq/__init__.py"
click node_calibration "https://github.com/unitaryfoundation/mitiq/blob/main/mitiq/calibration/calibrator.py"
click node_conversions "https://github.com/unitaryfoundation/mitiq/blob/main/mitiq/interface/conversions.py"
click node_adapters "https://github.com/unitaryfoundation/mitiq/tree/main/mitiq/interface"
click node_types "https://github.com/unitaryfoundation/mitiq/blob/main/mitiq/typing.py"
click node_executor "https://github.com/unitaryfoundation/mitiq/blob/main/mitiq/executor/executor.py"
click node_zne "https://github.com/unitaryfoundation/mitiq/blob/main/mitiq/zne/zne.py"
click node_zne_scaling "https://github.com/unitaryfoundation/mitiq/tree/main/mitiq/zne/scaling"
click node_zne_inference "https://github.com/unitaryfoundation/mitiq/blob/main/mitiq/zne/inference.py"
click node_pec "https://github.com/unitaryfoundation/mitiq/blob/main/mitiq/pec/pec.py"
click node_pec_representations "https://github.com/unitaryfoundation/mitiq/tree/main/mitiq/pec/representations"
click node_cdr "https://github.com/unitaryfoundation/mitiq/blob/main/mitiq/cdr/cdr.py"
click node_ddd "https://github.com/unitaryfoundation/mitiq/blob/main/mitiq/ddd/ddd.py"
click node_rem "https://github.com/unitaryfoundation/mitiq/blob/main/mitiq/rem/rem.py"
click node_qse "https://github.com/unitaryfoundation/mitiq/blob/main/mitiq/qse/qse.py"
click node_lre "https://github.com/unitaryfoundation/mitiq/blob/main/mitiq/lre/lre.py"
click node_experimental "https://github.com/unitaryfoundation/mitiq/tree/main/mitiq/experimental"
click node_observable "https://github.com/unitaryfoundation/mitiq/blob/main/mitiq/observable/observable.py"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_api,node_calibration,node_user toneBlue
class node_conversions,node_adapters toneAmber
class node_types,node_executor,node_observable toneMint
class node_zne,node_zne_scaling,node_zne_inference,node_pec,node_pec_representations,node_cdr,node_ddd,node_rem,node_qse,node_lre toneRose
class node_experimental,node_backend toneIndigo
```

## Components

### User Interface

- [Mitiq API](https://github.com/unitaryfoundation/mitiq/blob/main/mitiq/__init__.py): `mitiq/__init__.py`
- [Calibration](https://github.com/unitaryfoundation/mitiq/blob/main/mitiq/calibration/calibrator.py): `mitiq/calibration/calibrator.py`

### Circuit Formats

- [Circuit Conversion](https://github.com/unitaryfoundation/mitiq/blob/main/mitiq/interface/conversions.py): `mitiq/interface/conversions.py`
- [Framework Adapters](https://github.com/unitaryfoundation/mitiq/tree/main/mitiq/interface): `mitiq/interface`

### Execution Runtime

- [Program and Results Types](https://github.com/unitaryfoundation/mitiq/blob/main/mitiq/typing.py): `mitiq/typing.py`
- [Executor](https://github.com/unitaryfoundation/mitiq/blob/main/mitiq/executor/executor.py): `mitiq/executor/executor.py`
- [Observables](https://github.com/unitaryfoundation/mitiq/blob/main/mitiq/observable/observable.py): `mitiq/observable/observable.py`

### Stable Mitigation

- [Zero-Noise Extrapolation](https://github.com/unitaryfoundation/mitiq/blob/main/mitiq/zne/zne.py): `mitiq/zne/zne.py`
- [Noise Scaling](https://github.com/unitaryfoundation/mitiq/tree/main/mitiq/zne/scaling): `mitiq/zne/scaling`
- [Extrapolation Inference](https://github.com/unitaryfoundation/mitiq/blob/main/mitiq/zne/inference.py): `mitiq/zne/inference.py`
- [Probabilistic Error Cancellation](https://github.com/unitaryfoundation/mitiq/blob/main/mitiq/pec/pec.py): `mitiq/pec/pec.py`
- [Noise Representations](https://github.com/unitaryfoundation/mitiq/tree/main/mitiq/pec/representations): `mitiq/pec/representations`
- [Clifford Data Regression](https://github.com/unitaryfoundation/mitiq/blob/main/mitiq/cdr/cdr.py): `mitiq/cdr/cdr.py`
- [Dynamical Decoupling](https://github.com/unitaryfoundation/mitiq/blob/main/mitiq/ddd/ddd.py): `mitiq/ddd/ddd.py`
- [Readout Mitigation](https://github.com/unitaryfoundation/mitiq/blob/main/mitiq/rem/rem.py): `mitiq/rem/rem.py`
- [Quantum Subspace Expansion](https://github.com/unitaryfoundation/mitiq/blob/main/mitiq/qse/qse.py): `mitiq/qse/qse.py`
- [Layerwise Richardson Extrapolation](https://github.com/unitaryfoundation/mitiq/blob/main/mitiq/lre/lre.py): `mitiq/lre/lre.py`

### Experimental Methods

- [Experimental Techniques](https://github.com/unitaryfoundation/mitiq/tree/main/mitiq/experimental): `mitiq/experimental`

### Other components

- **Quantum User**
- **Simulator or Backend**

## Connections

- Quantum User → Mitiq API: supplies circuit
- Mitiq API → Circuit Conversion: accepts formats
- Circuit Conversion → Framework Adapters: dispatches conversion
- Mitiq API → Zero-Noise Extrapolation: selects mitigation
- Mitiq API → Probabilistic Error Cancellation: selects mitigation
- Mitiq API → Clifford Data Regression: selects mitigation
- Mitiq API → Dynamical Decoupling: selects mitigation
- Mitiq API → Readout Mitigation: selects mitigation
- Mitiq API → Quantum Subspace Expansion: selects mitigation
- Mitiq API → Layerwise Richardson Extrapolation: selects mitigation
- Mitiq API → Experimental Techniques: selects experimental method
- Mitiq API → Calibration: calibrates strategies
- Zero-Noise Extrapolation → Noise Scaling: scales circuits
- Zero-Noise Extrapolation → Extrapolation Inference: extrapolates results
- Zero-Noise Extrapolation → Executor: runs circuits
- Probabilistic Error Cancellation → Noise Representations: uses representations
- Probabilistic Error Cancellation → Executor: runs samples
- Clifford Data Regression → Executor: evaluates circuits
- Dynamical Decoupling → Executor: evaluates circuits
- Layerwise Richardson Extrapolation → Executor: evaluates circuits
- Executor → Simulator or Backend: executes circuits
- Simulator or Backend → Executor: returns results
- Executor → Program and Results Types: normalizes results
- Executor → Observables: computes expectations
