You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Circuit cutting as a service: added CIRCUIT_CUT job type to QoroService with validation to ensure only one circuit is submitted for circuit-cutting jobs
Noisy simulation support in ParallelSimulator: added qiskit_backend parameter (supports "auto" for automatic backend selection or specific backend names) and noise_model parameter for simulating noisy quantum circuits using Qiskit Aer
Zero Noise Extrapolation (ZNE) implementation: added ZNE class in divi/qem.py (187 lines) using Mitiq library with modify_circuit() method for circuit folding and postprocess_results() method for extrapolation, supporting configurable scale factors and extrapolation factories
QASM import/export functionality for QEM support: added cirq_circuit_from_qasm() and cirq_circuit_to_qasm() functions in divi/exp/cirq/ module for converting between Cirq circuits and QASM strings, enabling QEM protocols like ZNE to work with circuit representations
Cirq QASM parser and lexer for QEM support: added _lexer.py (126 lines) and _parser.py (889 lines) modules with PLY-based lexer and parser implementation for parsing QASM 2.0 syntax, including support for parameterized gates with input and angle keywords, required for QEM circuit manipulation
Progress bars with polling info: added _pbar.py module (73 lines) using Rich library with make_progress_bar() function, ConditionalSpinnerColumn, and PhaseStatusColumn classes that display job progress, polling attempts, and final status
Enhanced logging module (qlogger): improved OverwriteStreamHandler class (85 lines) with message overwriting support using \c prefix for updating progress messages on the same line, and better terminal size handling
Circuit folding with modified Cirq conversion code: enhanced QASM export to properly handle parameterized circuits by modifying Cirq's QASM conversion to preserve Sympy symbols for parameters
CircuitRunner abstract base class: added divi/interfaces.py (21 lines) with abstract submit_circuits() method for abstracting circuit execution, implemented by ParallelSimulator and QoroService
Reporter infrastructure for progress tracking: added progress reporting system in ProgramBatch and QuantumProgram classes that integrates with progress bars and logging for real-time status updates
🔄 Changed
Refactored ParallelSimulator to implement CircuitRunner interface: renamed simulate() method to submit_circuits() and made class inherit from CircuitRunner for consistent API
Updated QoroService to implement CircuitRunner interface: renamed send_circuits() method to submit_circuits() and made class inherit from CircuitRunner for consistent API
Enhanced circuit generation and parameter handling: improved MetaCircuit class to properly handle parameterized circuits with measure_all=True and symbol preservation in QASM export
Improved error handling and logging: enhanced error messages and logging throughout codebase, particularly in circuit execution and progress reporting
Updated tutorial examples: modified grouping tutorial to work with new API changes
🐛 Fixed
Fixed instance variable conflict in QuantumProgram: resolved variable naming conflicts that were causing issues in program execution
Fixed issues with standalone Sympy symbols: corrected QASM export to properly handle Sympy symbols in parameterized circuits, preventing Pennylane errors from unresolved symbols
Fixed bug with postprocessing function in ProgramBatch: corrected postprocessing logic to properly handle results from batch execution