How fiqci/qcut works
QCut is a Qiskit-based quantum circuit knitting package: users mark gate or resetless-wire cuts, or ask the automatic finder to choose cuts, then generate and run subcircuit experiments and reconstruct results. The graph preserves the separate planning, preparation, decomposition, execution, and result stages, including documented observables, probability reconstruction, and backend support. Source excerpts are partial, so uncertain internal call links are omitted; documented capabilities without sampled implementation are linked only where their runtime role is clear.
Main entry points: circuit_knitting.py Experiment orchestration · circuit_preparation.py Prepare and split · cutcircuit.py CutExperiment · cut_finding.py Automatic cut finder
Components 22
Cut planning
- Automatic cut finder
QCut/QCutFind/cut_finding.py - Cut refinement
QCut/QCutFind/refine.py - Cut options
QCut/options.py
Circuit preparation
- Prepare and split
QCut/cutting/circuit_preparation.py - Gate consolidation
QCut/cutting/consolidate.py - CutCircuit
QCut/cutcircuit.py - Cut locations
QCut/cutlocation.py
QPD experiments
- CutExperiment
QCut/cutcircuit.py - Joint cut bundles
QCut/qpd/bundle.py - QPD generation
QCut/qpd/qpd_generate.py - Insert QPD operations
QCut/qpd/qpd_operations.py
Execution and results
- Experiment orchestration
QCut/execution/circuit_knitting.py - MOVE routing
QCut/execution/move_routing.py - Parallel execution
QCut/execution/parallel.py - Shot distribution
QCut/execution/distribution.py - Observable handling
QCut/execution/observables.py - Result reconstruction
QCut/execution/postprocess.py - Probability reconstruction
QCut/execution/probabilities.py - QCut result
QCut/execution/qcutresult.py
Other components
- QCut user
- Marked circuit
- Quantum backend
Connections 31
- QCut user → Marked circuit: marks cuts
- QCut user → Automatic cut finder: requests cuts
- Marked circuit → Prepare and split: prepares split
- Automatic cut finder → Cut refinement: refines candidates
- Automatic cut finder → Prepare and split: creates cut markers
- Cut options → Automatic cut finder: configures search
- Cut options → Prepare and split: configures split
- Prepare and split → Gate consolidation: merges gate runs
- Prepare and split → Cut locations: records cuts
- Prepare and split → CutCircuit: returns split
- QCut user → CutCircuit: requests experiments
- CutCircuit → CutExperiment: builds experiments
- Cut options → CutExperiment: configures expansion
- CutExperiment → Joint cut bundles: plans joint cuts
- Joint cut bundles → QPD generation: selects decompositions
- QPD generation → Insert QPD operations: provides terms
- CutExperiment → Experiment orchestration: submits circuits
- Insert QPD operations → Experiment orchestration: prepares circuits
- QCut user → Experiment orchestration: runs experiments
- Experiment orchestration → MOVE routing: routes when needed
- Experiment orchestration → Shot distribution: allocates shots
- Experiment orchestration → Parallel execution: dispatches jobs
- Parallel execution → Quantum backend: runs circuits
- Experiment orchestration → Quantum backend: runs circuits
- Quantum backend → Experiment orchestration: returns counts
- CutExperiment → Observable handling: provides observables
- Experiment orchestration → Result reconstruction: reconstructs estimates
- Experiment orchestration → Probability reconstruction: reconstructs distributions
- Result reconstruction → QCut result: produces estimates
- Probability reconstruction → QCut result: produces probabilities
- QCut result → QCut user: returns results