How fiqci/fiqci-ems works
FiQCI EMS is a Qiskit-facing quantum error-mitigation library for IQM backends. Users submit circuits through a sampler, estimator, or backend wrapper; the backend submits work to IQM and returns lazy job handles that combine batches and apply mitigation when results are requested. The estimator additionally prepares observable measurement circuits and can extrapolate results across noise scales. The README documents mitigation levels and techniques; some internal wiring is omitted because source excerpts are partial.
Main entry points: core.py Backend wrapper · fiqci_estimator.py Estimator · jobs.py Lazy batch jobs · fiqci_sampler.py Sampler
Components 13
User interfaces
Execution and results
- Backend wrapper
src/fiqci/ems/backend/core.py - Lazy batch jobs
src/fiqci/ems/backend/jobs.py - Count handling
src/fiqci/ems/backend/counts.py
Error mitigation
- Readout mitigation
src/fiqci/ems/mitigators/rem.py - Dynamical decoupling
src/fiqci/ems/mitigators/dd.py - Pauli twirling
src/fiqci/ems/transpiler_passes/pauli_twirl.py
Observable estimation
- Basis measurement
src/fiqci/ems/transpiler_passes/basis_measurement.py - Noise folding
src/fiqci/ems/transpiler_passes/zne_circuits.py - Noise extrapolation
src/fiqci/ems/mitigators/zne.py
Other components
- Quantum user
- IQM backend
Connections 16
- Quantum user → Sampler: submits circuits
- Quantum user → Estimator: requests expectations
- Quantum user → Backend wrapper: runs circuits
- Sampler → Backend wrapper: delegates runs
- Estimator → Basis measurement: prepares measurements
- Estimator → Noise folding: folds circuits
- Estimator → Backend wrapper: submits circuits
- Backend wrapper → IQM backend: submits batches
- Backend wrapper → Lazy batch jobs: builds handles
- Backend wrapper → Readout mitigation: applies readout mitigation
- Backend wrapper → Dynamical decoupling: configures decoupling
- Backend wrapper → Pauli twirling: generates twirls
- Backend wrapper → Count handling: processes counts
- Lazy batch jobs → IQM backend: polls and retrieves
- Lazy batch jobs → Estimator: returns results
- Estimator → Noise extrapolation: extrapolates values