Component reference

Docker users: only a subset of processors is installed by default. Add class names to docker/processors.txt and run docker compose up -d --build nifi. Enable additional processors.

This catalogue is generated from ProcessorDetails.description in the processor source files. Shared helper modules are excluded. Regenerate it with just docs. For FlowFile attributes and processor construction, see Creating processors.

The current source tree contains 115 processors.

Algorithms (all-in-one solvers)

Processor Description Source
CirqAmplitudeEstimation Canonical QPE-based Quantum Amplitude Estimation implemented from primitives in Cirq (Bernoulli problem, A = Ry(2asin(sqrt(p))), Grover operator Ry(2theta)). Measures the m-qubit phase register and estimates a = sin^2(piy/2^m). Emits ae. attributes and report.type = simulation. Source
CirqQAOA Trains a p-layer QAOA ansatz using a hand-rolled sympy-parameterised Cirq circuit (exact statevector expectations, scipy.optimize.minimize) and emits the trained, bound circuit as portable OpenQASM 2.0 (same construction as CirqQAOACircuit) with qaoa.optimal_parameters (betas then gammas). It does not sample: connect any counts simulator, then QuantumQAOAEvaluator. Source
CirqVQE Hand-rolled VQE for Cirq: simulates a sympy-parameterised ansatz, computes the Hamiltonian expectation from the state vector, and minimises it with scipy.optimize. Strict solver - requires an upstream Hamiltonian (content) and ansatz (ansatz.cirq_json). Emits vqe.* results, optimal-circuit counts as JSON, and report.type=simulation. Source
PennylaneAmplitudeEstimation Canonical QPE-based Quantum Amplitude Estimation composed from PennyLane's QuantumPhaseEstimation template (Bernoulli problem, A = Ry(2asin(sqrt(p))), Grover operator Ry(2theta)). Reads the analytic probabilities of the estimation wires and estimates a = sin^2(piy/2^m). Emits ae. attributes and report.type = simulation. Source
PennylaneQAOA Trains a p-layer QAOA ansatz using PennyLane's qml.qaoa layers (exact analytic expectations on default.qubit, scipy.optimize.minimize) and emits the trained, bound circuit as portable OpenQASM 2.0 (same construction as PennylaneQAOACircuit) with qaoa.optimal_parameters (betas then gammas). It does not sample: connect any counts simulator, then QuantumQAOAEvaluator. Source
PyquilQAOA Trains a p-layer QAOA ansatz using the native pyQuil program builder (exact local-expectation objectives, scipy.optimize.minimize) and emits the trained, bound circuit as portable OpenQASM 2.0 (same construction as PyquilQAOACircuit) with qaoa.optimal_parameters (betas then gammas). It does not sample: connect any counts simulator, then QuantumQAOAEvaluator. Source
PyquilVQE Minimize a Hermitian Hamiltonian using a recipe from PyquilAnsatz (attach mode), native pyQuil exact local expectations and SciPy. Reads neutral Hamiltonian content; emits final counts, vqe.* results and the optimized qasm2 in circuit.qasm2. No Forest server or hardware calls. Source
QiskitAmplitudeEstimation Quantum Amplitude Estimation (Bernoulli problem) using qiskit-algorithms. Estimates the amplitude p prepared by A = Ry(2asin(sqrt(p))). Method 'canonical' is QPE-based with a grid estimate plus MLE refinement; 'iterative' converges within epsilon without a phase register. Emits ae. attributes and report.type = simulation. Source
QiskitGroverSearch Runs Grover's search algorithm for a given target bitstring. Builds a phase oracle for the marked state, wraps it with the grover_operator from qiskit.circuit.library, applies it N times, simulates with AerSimulator, and writes the measurement counts as JSON. Source
QiskitQAOA Trains a p-layer QAOA ansatz using qiskit_algorithms.QAOA (a seeded StatevectorSampler, sampled objective at 1024 shots) and emits the trained, bound circuit as portable OpenQASM 2.0 (same construction as QiskitQAOACircuit) with qaoa.optimal_parameters (betas then gammas). It does not sample: connect any counts simulator, then QuantumQAOAEvaluator. Source
QiskitVQE Variational Quantum Eigensolver. Reads a Hamiltonian (from QiskitHamiltonian content or the Hamiltonian property) and an ansatz (from the ansatz.qpy_b64 attribute or built from properties), then minimises the energy with a classical optimizer. Emits vqe.* result attributes, the optimal-circuit measurement counts as JSON content, and report.type = simulation for QuanifiReport. Source
QrispAmplitudeEstimation Quantum Amplitude Estimation (Bernoulli problem) using Qrisp's native IQAE. Estimates the amplitude p prepared by A = Ry(2asin(sqrt(p))) to within Epsilon Target at confidence Alpha. Emits ae. attributes and report.type = simulation. Source
QrispBernsteinVazirani Executes the Bernstein-Vazirani algorithm using Qrisp. Finds a hidden bitstring s in a single quantum query. Emits bv.secret_bitstring, bv.found_bitstring, and measurement distributions. Source
QrispDeutschJozsa Executes the Deutsch-Jozsa algorithm using Qrisp. Determines whether a boolean oracle is constant or balanced in a single evaluation. Emits dj.verdict ('constant' or 'balanced') and measurement distributions. Source
QrispGroverSearch Runs Grover's search algorithm using the Qrisp framework. Accepts a target bitstring, builds a phase oracle with tag_state(), runs grovers_alg(), and outputs the measurement probability distribution as JSON with sim. and circuit. attributes compatible with QuanifiReport. Source
QrispQAOA Trains a p-layer QAOA ansatz using Qrisp's QAOAProblem.optimization_routine (exact, Qrisp-rounded probabilities) and emits the trained, bound circuit as portable OpenQASM 2.0 (same construction as QrispQAOACircuit) with qaoa.optimal_parameters (betas then gammas). It does not sample: connect any counts simulator, then QuantumQAOAEvaluator. Source
QrispQIRO Quantum-Informed Recursive Optimization (QIRO) for Maximum Independent Set using Qrisp's own QIRO components: train a QAOA, fix or remove vertices from the strongest correlation, shrink the graph and repeat. Emits the final stage's trained circuit as portable OpenQASM 2.0 plus a qiro.* step trace. It does not sample: connect any counts simulator, then QuantumQAOAEvaluator. Source
QrispShor Runs Shor's factoring algorithm using Qrisp's native shors_alg. Configure Number To Factor (small odd composites, e.g. 15 or 21); emits shor.factor_1 / shor.factor_2. Educational scale: the local statevector simulator limits N to small numbers. Source
QrispSwapTest Executes the SWAP test using Qrisp to measure quantum state fidelity / overlap ||^2. Emits swap_test.overlap, ancilla measurement probabilities, and canonical simulation results. Source
QrispVQE Variational Quantum Eigensolver using Qrisp's VQEProblem. Reads a Hamiltonian (content) and an ansatz spec (ansatz.format=qrisp_spec), trains the ansatz with the chosen optimizer, and emits vqe.* results, the optimal-state probability distribution as JSON, and report.type=simulation. Strict solver - requires both upstream stages. Source

Circuit builders

Processor Description Source
CirqAnsatz Builds a parameterised Cirq variational ansatz (efficient_su2, real_amplitudes, or two_local) with sympy free parameters and attaches it as Cirq JSON in the ansatz.cirq_json attribute. In chain mode the incoming Hamiltonian passes through; standalone it writes the ansatz as circuit content. Source
CirqGroverCircuit Builds a Grover search circuit using Cirq for a given target bitstring and outputs the unmeasured circuit in either Cirq JSON or OpenQASM 2.0 format. Connect to a Cirq simulator processor to run the simulation. Source
CirqGroverOperator Reads an oracle circuit from the FlowFile content (produced by CirqPhaseOracle), prepends the uniform superposition H⊗n, and applies the full Grover operator (oracle + diffuser) the requested number of times. Equivalent to Classiq's power(reps, grover_operator(oracle, hadamard_transform)). No measurement is added — connect to CirqSimulator to run the circuit. Source
CirqHadamardTransform Applies a Hadamard gate to every qubit (H⊗n). In standalone mode a fresh n-qubit circuit is created, producing the uniform superposition H⊗n|0⟩. In compose mode the H layer is appended to an existing Cirq circuit received via the FlowFile content (circuit.format must be cirq_json or qasm2). Source
CirqPhaseEstimation Quantum Phase Estimation (QPE) using Cirq. Estimates the eigenphase φ of a unitary operator U such that U|ψ⟩ = exp(2πiφ)|ψ⟩. In standalone mode a builtin Z-rotation gate (T, S, or Z) is used as the unitary. In compose mode the incoming Cirq circuit is used as the unitary — its qubits become the target register and are prepared in the |1⟩ eigenstate. Circuit structure: X on target → H on phase register → controlled-U^(2^k) → inverse QFT on phase register. No measurement is added — connect to CirqSimulator; the first circuit.qpe_phase_register_size bits of the top result encode the phase. Source
CirqQAOACircuit Builds the bound Cirq QAOA circuit (hand-rolled sympy-parameterised cost/mixer ladder) for a diagonal I/Z cost Hamiltonian and explicit Betas/Gammas (beta then gamma) and emits portable OpenQASM 2.0 plus hamiltonian.json, so any counts engine can run it and QuantumQAOAEvaluator can score it. Convention: H on all qubits, then per layer exp(-igammaH) and RX(2*beta). Source
CirqQFTCircuit Applies the Quantum Fourier Transform (or its inverse QFT†) using Cirq's built-in cirq.qft primitive. In standalone mode a fresh n-qubit QFT circuit is created. In compose mode the QFT is appended to an existing Cirq circuit received via the FlowFile content (cirq_json or qasm2). No measurement is added — connect to CirqSimulator to run the circuit. Source
CirqQuantumArithmetic Builds a reversible integer adder circuit in Cirq, which ships no high-level adder of its own. Choose the Cuccaro ripple-carry construction or Draper's Fourier-basis adder. Configure Operand A, Operand B, and Bit Width. Outputs qasm2 with no measurement, plus the classical expected result for a deterministic-output oracle. Source
CirqStatePreparation Prepares a quantum state circuit from a classical description, using Cirq. Supports uniform superposition, GHZ, a specific basis state, or an arbitrary normalized amplitude vector (custom mode). Cross-framework mirror of QiskitStatePreparation. Source
PennylaneGroverCircuit Builds a PennyLane Grover search circuit for a given target bitstring and outputs the unmeasured circuit as OpenQASM 2.0, so it can be executed by any Quanifi counts engine. PennyLane's export emits an OpenQASM 3 'gphase' statement that OpenQASM 2.0 does not define; it is removed, and circuit.global_phase_dropped records that it was. Source
PennylaneQAOACircuit Builds the bound PennyLane QAOA circuit (qml.qaoa cost_layer/mixer_layer) for a diagonal I/Z cost Hamiltonian and explicit Betas/Gammas (beta then gamma) and emits portable OpenQASM 2.0 plus hamiltonian.json, so any counts engine can run it and QuantumQAOAEvaluator can score it. Convention: H on all qubits, then per layer exp(-igammaH) and RX(2*beta). PennyLane emits the RX mixer as h.rz.h and no gphase; circuit.global_phase_dropped records whether any were stripped. Source
PennylaneQuantumArithmetic Builds a reversible integer adder with PennyLane's SemiAdder from Operation, Operand A, Operand B and Bit Width. Outputs qasm2 with no measurement, plus the classical expected result for a deterministic-output oracle. Source
PennylaneVariationalAnsatz Builds a PennyLane variational ansatz (StronglyEntanglingLayers or BasicEntanglerLayers) with reproducible seeded weights and emits it as OpenQASM 2.0. Standalone mode creates a fresh n-qubit ansatz; when the incoming FlowFile already carries a qasm2 circuit (circuit.format=qasm2) the ansatz is appended to it, composing an embedding->ansatz model circuit. The qasm2 output feeds any Quanifi simulator or PennylaneExpectation. Source
PyquilAnsatz Build a reusable RY or RY/RZ trial-state recipe with CNOT entanglers. Attach mode preserves an upstream Hamiltonian for PyquilVQE; circuit mode emits a bound qasm2 circuit for simulation or PyquilExpectation. Source
PyquilGroverCircuit Builds a Grover search circuit using pyquil (Rigetti) for a given target bitstring and outputs the unmeasured circuit as OpenQASM 2.0, the interchange format every engine in this repo accepts. pyquil ships no Grover/amplitude-amplification helper, so the oracle and diffuser -- including the multi-controlled-Z, which pyquil has no native gate for beyond 2 controls -- are built here directly from pyquil's own H/X/CNOT/RZ primitives (see pyquil_components.mcz_ops), not translated from another framework's circuit. Connect to PyquilSimulator or any other engine in this repo to run the simulation. Source
PyquilGroverOperator Read a phase oracle as qasm2/qasm3, prepare a uniform superposition, and repeat oracle plus native pyQuil diffuser. Output qasm2 for any simulator. Input must be an oracle, not a complete Grover circuit. Source
PyquilQAOACircuit Builds the bound native pyQuil QAOA circuit (pyquil_components.qaoa) for a diagonal I/Z cost Hamiltonian and explicit Betas/Gammas (beta then gamma) and emits portable OpenQASM 2.0 plus hamiltonian.json, so any counts engine can run it and QuantumQAOAEvaluator can score it. Convention: H on all qubits, then per layer exp(-igammaH) and RX(2*beta). Source
PyquilQFT Build or append the forward/inverse quantum Fourier transform in native pyQuil. Qubit 0 is the most significant bit in the documented Fourier matrix; optional final swaps reverse the output register. Emits bound qasm2. Source
QiskitAmplitudeAmplification Generalised Grover amplitude amplification using the qiskit-algorithms AmplificationProblem / Grover.construct_circuit() framework (Brassard et al., 2000). Standalone mode: builds a phase oracle for the Marked State bitstring and wraps it in a uniform-superposition (H⊗n) Grover circuit. Compose mode: the incoming FlowFile is treated as the oracle circuit; amplitude amplification is built around it. No measurement is added — connect to QiskitAerSimulator to run. Q = A·S₀·A†·Sᶠ is applied Num Iterations times. Source
QiskitAnsatz Builds a parameterised variational ansatz (efficient_su2, real_amplitudes, or two_local) and attaches it to the FlowFile as base64 QPY in the ansatz.qpy_b64 attribute. In chain mode the incoming Hamiltonian content passes through unchanged; in standalone mode the ansatz is written as the circuit content with the circuit.* contract. Source
QiskitBellState Prepares one of the four Bell states (H + CNOT + optional local flips), samples it, and reports the two-outcome histogram plus bell.correlation (probability mass on the correlated pair, 1.0 ideal). The canonical entanglement demo. Source
QiskitGroverCircuit Builds a Grover search circuit for a given target bitstring and outputs the unmeasured circuit in either QPY (Qiskit binary) or OpenQASM 3 format. Connect to AerSimulator to run the simulation. Source
QiskitGroverOperator Reads an oracle circuit from the FlowFile content (produced by QiskitPhaseOracle, or by CirqPhaseOracle with Output Format 'qasm2'), prepends the uniform superposition H⊗n, and applies the full Grover operator (oracle + diffuser) the requested number of times via qiskit.circuit.library.grover_operator. Mirrors CirqGroverOperator so the two are interchangeable on the canvas. No measurement is added — connect to QiskitAerSimulator to run the circuit. Source
QiskitHadamardTransform Applies a Hadamard gate to every qubit of a circuit. If the incoming FlowFile already carries a circuit (circuit.format attribute set), H gates are appended to all its qubits. If the FlowFile is empty, a fresh n-qubit circuit is created. Source
QiskitPhaseEstimation Builds a Quantum Phase Estimation (QPE) circuit using Qiskit's PhaseEstimation library block. In standalone mode a demo QPE circuit is constructed for a builtin unitary (T, S, or Z). In compose mode the unitary is loaded from the FlowFile content. The phase register size controls estimation precision. Source
QiskitQAOACircuit Builds the bound Qiskit QAOA circuit (qiskit.circuit.library.qaoa_ansatz) for a diagonal I/Z cost Hamiltonian and explicit Betas/Gammas (beta then gamma) and emits portable OpenQASM 2.0 plus hamiltonian.json, so any counts engine can run it and QuantumQAOAEvaluator can score it. Convention: H on all qubits, then per layer exp(-igammaH) and RX(2*beta). Source
QiskitQFTCircuit Applies the Quantum Fourier Transform (QFT) or its inverse to a circuit. In standalone mode a fresh n-qubit QFT circuit is created. In compose mode the QFT is appended to an existing circuit received via the FlowFile content. Source
QiskitQuantumArithmetic Builds a reversible integer adder circuit with one of Qiskit's three independent implementations (CDKM ripple-carry, VBE ripple-carry, Draper QFT). Configure Implementation, Operand A, Operand B, and Bit Width. Outputs qasm2 with no measurement, plus the classical expected result and expected counts key for a deterministic-output oracle. Source
QiskitQuantumHelloWorld Runs a Qiskit GHZ-state circuit and writes the measurement bitstring to the FlowFile content Source
QiskitStatePreparation Prepares a quantum state circuit from a classical description. Supports uniform superposition, GHZ, a specific basis state, or an arbitrary normalized amplitude vector (custom mode). Source
QiskitTeleportation Teleports Rz(Phi)Ry(Theta)|0> from qubit 0 to qubit 2 using a Bell pair, a Bell measurement, and classically conditioned corrections (dynamic circuit). Self-verifies by inverting the preparation on the target: teleport.fidelity = P(target measures 0), ideally 1.0. Source
QrispAnsatz Declares a parameterised Qrisp variational ansatz (efficient_su2, real_amplitudes, or two_local) as a spec carried in ansatz.* attributes. A Qrisp ansatz is a callable, not a serialisable circuit, so QrispVQE reconstructs it from the spec. In chain mode the incoming Hamiltonian passes through. Source
QrispGroverCircuit Builds a Grover search circuit for a target bitstring with Qrisp (tag_state phase oracle + grovers_alg diffuser, fixed Num Iterations) and outputs the unmeasured circuit as portable OpenQASM 2.0 (one qreg, gates h/x/cx/rz), so any counts engine can run it. Marked State is q0-left (qubit 0 = leftmost character), like the Qiskit, Cirq, PennyLane and pyQuil Grover builders. 1-8 qubits. Source
QrispHadamardTransform Applies a Hadamard gate to every qubit (H⊗n) using Qrisp. In standalone mode (empty FlowFile) a fresh n-qubit circuit is created, producing the uniform superposition H⊗n|0⟩. In compose mode the H layer is appended to an existing qasm2 circuit received via the FlowFile content. Always emits OpenQASM 2.0, compatible with QrispSimulator, QiskitAerSimulator, and CirqSimulator. Cross-framework mirror of QiskitHadamardTransform. Source
QrispPhaseEstimation Quantum Phase Estimation (QPE) using Qrisp. Estimates the eigenphase φ of a unitary operator U such that U|ψ⟩ = exp(2πiφ)|ψ⟩. Uses Qrisp's QPE primitive with iter_spec=True for efficient controlled-U^(2^k) application. Built-in unitaries: T (φ=1/8), S (φ=1/4), Z (φ=1/2). The target register is prepared in the |1⟩ eigenstate. Outputs a probability distribution over estimated phase values (as floats 0–1). Sets qpe.top_phase to the most likely phase; also exports the circuit as qasm2. Source
QrispQAOACircuit Builds the bound Qrisp QAOA circuit (QAOAProblem's cost operator + mixer, without training) for a diagonal I/Z cost Hamiltonian and explicit Betas/Gammas (beta then gamma) and emits portable OpenQASM 2.0 plus hamiltonian.json, so any counts engine can run it and QuantumQAOAEvaluator can score it. Convention: H on all qubits, then per layer exp(-igammaH) and RX(2*beta). Qrisp's per-qubit registers are normalised to one qreg; the XY mixer is rebased to {h,x,rx,ry,rz,cx}. Source
QrispQCCSDAnsatz Declares a QCCSD chemistry ansatz for QrispVQE. Carries the chemistry spec in ansatz.* attributes and passes through incoming Hamiltonian content in chain mode. Source
QrispQFTCircuit Applies the Quantum Fourier Transform (or its inverse QFT†) using Qrisp's built-in QFT primitive. Outputs qasm2 compatible with QrispSimulator, QiskitAerSimulator, and CirqSimulator. No measurement is added — connect to a simulator to run the circuit. Source
QrispQuantumArithmetic Builds a quantum arithmetic circuit (add / subtract / multiply) on Qrisp QuantumFloat registers. Configure Operation, Operand A, Operand B, Bit Width, and Signed. Outputs qasm2 compatible with QrispSimulator, QiskitAerSimulator, and CirqSimulator; no measurement is added. Source
QrispStatePreparation Prepares a quantum state circuit from a classical description, using Qrisp. Supports uniform superposition, GHZ, a specific basis state, or an arbitrary normalized amplitude vector (custom mode). Emits OpenQASM 2.0 compatible with QiskitAerSimulator and CirqSimulator. Cross-framework mirror of QiskitStatePreparation. Source
QrispTruthTableSynthesis Compiles classical boolean truth tables into reversible quantum circuits using Qrisp. Supports Gray-code and PPRM logic synthesis methods. Source
QrispTypeEncoder Encodes classical numbers or arrays into typed quantum registers (QuantumFloat/QuantumArray) using Qrisp, generating the corresponding quantum initialization circuit. Source
QuantumQAOAEvaluator Framework-neutral QAOA scoring for any counts engine's output. Reads q0_left measurement counts (sim.bit_order=q0_left) plus the cost Hamiltonian (hamiltonian.json from any upstream QAOA builder/solver, or the Hamiltonian property) and emits qaoa.best_measurement, best_value, sampled_expectation, exact_minimum/maximum, approximation_ratio, expectation_ratio, optimal_probability, optimal_states and the builder/engine that produced this cell. Counts pass through unchanged so QuanifiReport can still render them. Source
ReadoutBaselineCircuit Builds a readout-error baseline circuit: prepares a target bitstring with X gates only (no superposition, no entanglement, no two-qubit gates) and measures it. Used as the calibration reference in the Grover N-M hardware matrix so gate error (builder-dependent) can be separated from readout error (builder-independent) on the same physical qubits, in the same batch. Source

Differential & mutation-testing infrastructure

Processor Description Source
CirqPhaseOracle Builds a phase oracle circuit for a given target bitstring. The oracle applies a -1 phase to |target⟩ and leaves all other states unchanged. In standalone mode it outputs a bare oracle circuit (no state preparation). In compose mode it appends the oracle to an existing Cirq circuit. Connect to CirqGroverOperator to build the full Grover search, or feed into amplitude estimation / amplitude amplification circuits. Source
MutationScoreReport Aggregates per-case verdicts (assert.verdict + mut. attributes) into a mutation survival rate, grouped by mutation operator and keyed on test.run_id. Excludes control rows from the score and reports control dissents (real cross-framework discrepancies) separately. Writes an HTML survival-rate report and emits mutation. summary attributes. Source
PyquilPhaseOracle Build an unmeasured bitstring phase oracle in native pyQuil. Outputs qasm2, with qubit 0 at the left of Marked State. Connect to PyquilGroverOperator. Source
QiskitPhaseOracle Builds a phase oracle circuit for a given target bitstring using Qiskit. The oracle applies a -1 phase to |target⟩ and leaves all other states unchanged. In standalone mode it outputs a bare oracle circuit (no state preparation). In compose mode it appends the oracle to an existing Qiskit circuit. Connect to QiskitGroverOperator to build the full Grover search, or feed into QiskitAmplitudeAmplification. Mirrors CirqPhaseOracle so the two are interchangeable on the canvas (use Output Format 'qasm2' to cross frameworks). Source
QuantumAssertion Assertion gate for data-driven differential testing. Receives the output of QuantumDistributionComparison and applies a Hellinger threshold check (differential oracle) plus an optional ground-truth check against test.expected. Routes to 'pass' or 'fail'. Appends a row to an HTML test-results table showing per-case verdicts, reasons, and a pass rate. Source
QuantumCalibratedOracle Scores a hardware batch with a threshold calibrated from control replicates in the same job, instead of a fixed value. Applies the two-gate kill rule (chi-squared rejection AND effect size) to every control and mutant comparison, reports false alarms and the mutation score, persists the raw batch counts, and writes an HTML card. Pair with a batch submitter/poller. Source
QuantumConsensusOracle K-way majority oracle: collects K framework measurement distributions sharing a slot key, takes a majority vote (endian-agnostic), and emits assert.verdict = PASS / FAIL / DISAGREE plus consensus.* details. Generalises QuantumDistributionComparison+QuantumAssertion to K branches and feeds MutationScoreReport. FAIL catches whole-case mutants that all branches get equally wrong; DISAGREE catches single-branch dissent. Source
QuantumDistributionComparison Pairs two quantum measurement distributions and computes Hellinger distance, Total Variation, and Fidelity (effect sizes), plus a Pearson chi-squared homogeneity test on the raw counts (inference: is the gap explainable by shot noise?). Emits a two-gate verdict — consistent / negligible-difference / disagree — gated by the Significance Level and Practical Hellinger Threshold properties. Writes a side-by-side HTML comparison card. Pairing is controlled by a static Comparison Label — no shared FlowFile attribute required. Source
QuantumDistributionOracle K-way consensus over branch measurement distributions, voting on distribution similarity (max pairwise Hellinger gated by a chi-squared homogeneity test) instead of the top-1 measured state. Use for degenerate or multi-peaked outputs such as GHZ, where a top-1 vote is a coin flip and reports DISAGREE on correct code. Ground truth is checked as expected support, not a single winner. Writes an HTML consensus card. Source
QuantumMutator Gate-level (Layer-A) mutation-testing operator: reads a qasm2/qasm3 circuit, applies one syntactic mutation (gate.add, gate.remove, gate.replace same-arity, rotation.perturb) and emits the mutant in the same format with mut.* bookkeeping attributes. Connect between a circuit builder and a simulator on ONE branch of a K-branch consensus flow so a killed mutant surfaces as a single-branch DISAGREE at QuantumConsensusOracle. Control rows (mut.applied=false) and Layer-B mutants pass through unmutated. Source
QuantumSuccessProbabilityOracle Scores measurement counts against a single known-correct outcome: success probability with a Wilson confidence interval, and (in paired mode) a two-proportion test between two runs sharing a Comparison Label. For programs whose specification fixes exactly one answer, such as reversible arithmetic. Source
QuantumTestCaseSource Expands a compact test-matrix spec (explicit JSON table or parameter axes) into a JSON array of test-case rows for data-driven / differential testing. Each row carries input parameters plus test.case_id / test.run_id / test.partition. Feed into SplitJson to fan out one FlowFile per case. Source
QuantumUnitaryComparison Compares two unitary matrices for equivalence up to a global phase. Pairs two FlowFiles produced by QuanifiUnitary using a static Comparison Label, then computes the process fidelity F = |tr(U_A^dagger . U_B)|^2 / d^2. F = 1 (within tolerance) means the circuits are equivalent on every possible input, not just |0...0>. The first arrival is held in a state file; the second triggers the comparison. Routes the first of a pair to failure (auto-terminate it) and the completed comparison to success. Source

Hamiltonians & problem encoders

Processor Description Source
CirqHamiltonian Builds a problem Hamiltonian from a compact-indexed Pauli sum such as 'Z0 + Z1 + 0.5 X0 X1' (or JSON) and serialises it in the framework-neutral wire format shared with QiskitHamiltonian. Tags hamiltonian.framework=cirq. No quantum execution. Source
MaxCliqueProblem Encodes a graph (JSON edge list) into the Maximum Clique Ising Hamiltonian in the framework-neutral wire format (hamiltonian.format = sparse_pauli_op_json). Drop the output directly into QrispQAOA, QiskitQAOA, or CirqQAOA. Source
MaxCutProblem Encodes a weighted graph (JSON edge list, e.g. [[0,1],[1,2,0.5]]) as the MaxCut Ising Hamiltonian in the framework-neutral wire format (hamiltonian.format = sparse_pauli_op_json, diagonal). The minimum eigenvalue equals -max_cut. Drop the output into QiskitQAOA, CirqQAOA, QrispQAOA or PennylaneQAOA to solve it — no Pauli strings required. Source
MaxIndependentSetProblem Encodes a graph (JSON edge list) into the Maximum Independent Set (MIS) Ising Hamiltonian in the framework-neutral wire format (hamiltonian.format = sparse_pauli_op_json). Drop the output directly into QrispQAOA, QiskitQAOA, or CirqQAOA. Source
MoleculeHamiltonian Builds a molecular qubit Hamiltonian from a geometry such as 'H 0 0 0; H 0 0 0.735' using pyscf + OpenFermion (Jordan-Wigner). Emits the framework-neutral operator JSON with hamiltonian.format = 'sparse_pauli_op_json' so any *VQE solver can consume it, plus chemistry attributes (formula, bond distance, HF/FCI reference energies). No quantum execution happens here. Source
PortfolioRebalancingProblem Encodes Markowitz portfolio rebalancing with cardinality constraint into the framework-neutral Ising Hamiltonian wire format. Drop the output into QrispQAOA (especially with Mixer Type = XY), QiskitQAOA, or CirqQAOA. Source
QiskitHamiltonian Builds a problem Hamiltonian (SparsePauliOp) from a compact-indexed Pauli sum such as 'Z0 + Z1 + 0.5 X0 X1' (or JSON) and serialises it as JSON. Sets hamiltonian.format = 'sparse_pauli_op_json' so QiskitVQE (or any operator consumer) can pick it up. No quantum execution happens here. Source
QrispHamiltonian Builds a problem Hamiltonian from a compact-indexed Pauli sum such as 'Z0 + Z1 + 0.5 X0 X1' (or JSON) and serialises it in the framework-neutral wire format shared with QiskitHamiltonian and CirqHamiltonian. Tags hamiltonian.framework=qrisp. No quantum execution. Source
QuboToHamiltonian Encodes a QUBO matrix (JSON 2D array; minimize x^T Q x over binary x) as the equivalent Ising Hamiltonian in the framework-neutral wire format (hamiltonian.format = sparse_pauli_op_json, diagonal). The minimum eigenvalue equals the QUBO optimum and the ground bitstring is the binary solution. Feed it to any QAOA or VQE solver. Source

Hardware batch lane

Processor Description Source
IQMJobPoller Polls the IQM Resonance REST API (GET /api/v1/jobs/{id}) for the job in hw.job_id, honouring the Retry-After header, and emits measurement counts when it completes. Routes to 'pending' while the job is still queued or running — wire that back into this processor to keep polling without blocking the canvas. Source
QuantumBatchPoller Polls an IQM Resonance batch job and emits all circuits' measurement counts merged with the submitter's manifest, ready for QuantumCalibratedOracle. Routes to 'pending' while the job is queued — wire that back in to keep polling without blocking the canvas. Source
QuantumBatchResultExpander Expands a polled hardware batch into a JSON array of one row per circuit, each carrying that circuit's counts (normalised to q0_left) and the ground-truth attributes recorded at submission, so per-circuit results can be scored against a known answer. Feed into SplitJson. Source
QuantumIBMBatchPoller Polls an asynchronous IBM Runtime Sampler batch and emits all raw counts. Source
QuantumIBMBatchSubmitter Accumulates one calibrated hardware batch, searches and pins one layout, checks queue and estimated QPU usage caps, and submits one asynchronous IBM Runtime Sampler job. Source
QuantumIQMBatchPoller Polls one IQM Resonance BATCH job and merges its measurement counts back onto the submitter's manifest, preserving each circuit's ground truth, so QuantumBatchResultExpander can expand and score it. The batch twin of IQMJobPoller, which handles a single circuit. Source
QuantumIQMBatchSubmitter Accumulates OpenQASM circuits and submits them to IQM Resonance as a single job with one shared, searched qubit layout — required so that control replicates and mutants share a calibration snapshot, and so per-job cost is paid once. Does not block: emits the job id and a manifest for QuantumBatchPoller to collect. Source
QuantumInspireBatchPoller Polls one Quantum Inspire BATCH job -- recovered from the QPY handle QuantumInspireBatchSubmitter wrote alongside its manifest -- and merges its measurement counts back onto that manifest, preserving each circuit's ground truth, so QuantumBatchResultExpander can expand and score it. Source
QuantumInspireBatchSubmitter Accumulates OpenQASM circuits and submits them to Quantum Inspire as a single batch job with one shared, searched qubit layout. Does not block: emits the batch job id and a manifest for QuantumInspireBatchPoller to collect. Source

Hardware execution

Processor Description Source
BraketDevice Runs a circuit (circuit.format = qasm3 or qasm2, from any framework's builder) on an Amazon Braket device: a QPU / managed-simulator ARN, or 'local' for the offline LocalSimulator. Supports fire-and-forget submission (Wait For Results = false -> hw.task_arn) for long QPU queues. Credentials via the standard AWS chain. Source
QiskitRuntimeSampler Samples a circuit (circuit.format = qasm2 or qasm3, from any framework's builder) via IBM Qiskit Runtime SamplerV2. Backend 'fake_' runs the calibrated noisy fake backend locally (offline); 'least_busy' or a backend name submits to real IBM hardware (token required). Source
QrispIQMDevice Runs a circuit (circuit.format = qasm2, from any framework's builder) on an IQM quantum computer via Qrisp's Backend Interface. Device Instance 'local' uses Qrisp's offline statevector simulator; 'garnet' / 'emerald' / ... submit to IQM Resonance (API token required). Supports fire-and-forget submission (Wait For Results = false -> hw.job_id) for long QPU queues; pair it with IQMJobPoller. Source

PennyLane QML lane

Processor Description Source
PennylaneDatasetLoader Emits a labelled classical dataset as a JSON array of records ({"features": [...], "label": k}) to drive a QML pipeline. 'synthetic' generates a separable two-class Gaussian-blob dataset (numpy only, fully offline and seeded); 'inline' validates and emits a dataset provided in the Records property. Feed into SplitJson to fan out one FlowFile per sample, then into PennylaneFeatureEmbedding. Source
PennylaneFeatureEmbedding Encodes a classical feature vector into a quantum circuit using a PennyLane embedding template (angle / amplitude / iqp / basis) and emits it as OpenQASM 2.0. The feature vector is read from the FlowFile content (a JSON array of numbers) when present, otherwise from the Features property. This is the classical->quantum data-loading step of a QML pipeline; the qasm2 output is interoperable with every Quanifi simulator. Source
PennylaneVariationalClassifier Trains a variational quantum classifier (AngleEmbedding + StronglyEntanglingLayers + trainable bias) on the labelled JSON dataset in the FlowFile content (from PennylaneDatasetLoader). Emits train.* attributes (final loss, train/validation accuracy), the loss history and trained weights as JSON, and report.type = training for the loss-curve report card. Source

Reporting & utility

Processor Description Source
QiskitCircuitReport [DEPRECATED — use QuanifiReport] Legacy Qiskit-only reporter. Appends an HTML card to a local report file for each FlowFile, showing the Grover circuit diagram (SVG re-rendered from QASM3), OpenQASM 3 source, simulation attributes, and a measurement-count bar chart. Superseded by the generic, framework-agnostic QuanifiReport (report.type/sim.framework-driven); kept only for backward compatibility with existing saved flows. Source
QuanifiReport Generic HTML report writer for Quanifi processors. Reads report.type from the FlowFile attribute to select which sections to render (circuit diagram, counts, statevector, comparison metrics, etc.) and appends a card to a local HTML file. Extend _SECTION_REGISTRY to support new processor output types. Source
QuanifiUnitary Computes the 2^n by 2^n unitary matrix of a quantum circuit and writes it as JSON ({real: [...], imag: [...]}). Connect between any circuit builder (CirqGroverCircuit, CirqPhaseOracle, CirqGroverOperator, QiskitGroverCircuit, QiskitQFTCircuit, etc.) and a downstream consumer such as QuantumUnitaryComparison. Reads the input format from the circuit.format attribute (cirq_json, qasm2, qasm3, qpy). Qiskit circuits are normalised to Cirq qubit-ordering convention so the unitaries are directly comparable across frameworks. Routes to failure with a clear error if the input is not a circuit or if the circuit exceeds Max Qubits. Source

Simulators

Processor Description Source
BraketSimulator Reads a quantum circuit from the FlowFile content (OpenQASM 3 or OpenQASM 2.0, determined by the 'circuit.format' attribute; both are re-based onto Braket-native gates via Qiskit's parser), samples it on the Amazon Braket LocalSimulator (no AWS account or network access required), and writes shot counts as JSON. Bit order is MSB-first (qubit 0 leftmost, the Cirq convention). Noise Model = none (default) runs the ideal state-vector simulator (braket_sv), unchanged from prior versions. Any other Noise Model runs the density-matrix simulator (braket_dm) with the selected single-qubit noise channel injected via Braket QASM pragmas after every 1-qubit gate; braket_dm's memory cost is 4^n (vs 2^n for braket_sv), so noisy runs are narrower and slower than noiseless ones. Source
CirqSimulator Reads a quantum circuit from the FlowFile content (Cirq JSON or OpenQASM 2.0, determined by the 'circuit.format' attribute), adds measurement, runs it on Cirq's wave-function simulator, and writes shot counts as JSON. Accepts Cirq JSON from CirqGroverCircuit or OpenQASM 2.0 from any circuit processor (including Qiskit processors that output qasm2 format). Optionally applies a noise channel (depolarizing / bit-flip / amplitude-damping) and a readout error. Source
CirqStatevectorSimulator Computes the exact statevector of an unmeasured quantum circuit using cirq.Simulator().simulate(). Accepts Cirq JSON or OpenQASM 2.0 (set by the 'circuit.format' attribute). Outputs the probability distribution as JSON and writes an HTML card with amplitude and phase per basis state. Cross-framework mirror of QiskitStatevectorSimulator. Source
PennylaneExpectation Runs a quantum circuit (OpenQASM 2.0, via circuit.format=qasm2) on a PennyLane device and emits its QML-native outputs: per-qubit Pauli expectation values (sim.expectations) and the probability distribution (FlowFile content, JSON state->probability). Unlike the shot-count simulators this is the expectation-value lane PennyLane is built around. Set Shots for sampled estimates, or leave blank for an exact (analytic) result. Accepts qasm2 from any Quanifi circuit builder. Source
PennylaneSimulator Reads a quantum circuit from the FlowFile content (OpenQASM 2.0, determined by the 'circuit.format' attribute), samples it on PennyLane's default.qubit device, and writes shot counts as JSON. Accepts qasm2 output from any Quanifi circuit builder. Note: default.qubit is an ideal (noiseless) statevector engine — for noisy simulation use QiskitAerSimulator or CirqSimulator, which expose a Noise Model property. For PennyLane's QML-native outputs (expectation values, analytic probabilities) use PennylaneExpectation instead. Source
PyquilExpectation Evaluate a Hermitian Pauli-sum expectation exactly using pyQuil local wavefunction simulation. Reads a qasm2/qasm3 circuit and an indexed Pauli expression or neutral Hamiltonian JSON property. Outputs expectation JSON, not shot counts. Source
PyquilSimulator Reads a quantum circuit from the FlowFile content (OpenQASM 2 or OpenQASM 3, determined by the 'circuit.format' attribute; both are re-based onto Quil-native gates via Qiskit's parser), samples it on Rigetti's pyquil PyQVM (no external quilc/qvm server required), and writes shot counts as JSON. Bit order is q0-left. Optionally applies pyquil's built-in Kraus noise channels via PyQVM's ReferenceDensitySimulator. Source
QSharpSimulator Reads an OpenQASM 2 or 3 circuit natively via the Microsoft QDK (no cross-framework translation through Qiskit), adds a full-register measurement when one isn't already present, and runs it with the QDK sparse-state or Clifford simulator. Emits canonical q0-left counts and optionally applies Pauli noise. Source
QiskitAerSimulator Reads a quantum circuit from the FlowFile content (QPY or OpenQASM 3, determined by the 'circuit.format' attribute), adds measurement, runs it on Qiskit's AerSimulator, and writes the shot counts as JSON. Optionally applies a gate/readout noise model so the simulation is non-ideal. Source
QiskitStatevectorSimulator Computes the exact statevector of an unmeasured quantum circuit using qiskit.quantum_info.Statevector. Outputs probability distribution as JSON and writes an HTML card with amplitude and phase per basis state. Source
QrispSimulator Reads a quantum circuit from the FlowFile content (OpenQASM 2.0, determined by the 'circuit.format' attribute), adds measurement, runs it on Qrisp's native statevector simulator, and writes shot counts as JSON. Accepts qasm2 output from any Qiskit or Cirq circuit processor. Note: Qrisp's native simulator is an ideal (noiseless) statevector engine and has no noise-model support — for noisy simulation use QiskitAerSimulator or CirqSimulator, which expose a Noise Model property. Source