bqskit
bqskit copied to clipboard
Qfactor state vector instantiation
Example to reproduce the issue:
circuit = Circuit(2)
circuit.append_gate(VariableUnitaryGate(1), [0])
circuit.append_gate(VariableUnitaryGate(1), [1])
circuit.append_gate(VariableUnitaryGate(2), [0, 1])
state = StateVector(np.array([1, 0, 0, 0]))
circuit.instantiate(state)
Errors:
Traceback (most recent call last): File "/bqskit/examples/instantiate2.py", line 39, in
circuit.instantiate(state) File "/bqskit/bqskit/ir/circuit.py", line 2826, in instantiate params_list = [ File "/bqskit/bqskit/ir/circuit.py", line 2827, in instantiater.instantiate(self, target, start) File "/bqskit/bqskit/ir/opt/instantiaters/qfactor.py", line 45, in instantiate return QFactorInstantiatorNative.instantiate(self, circuit, target, x0) TypeError: dimensionality mismatch: from=1, to=2
Note: the bqskit version is 1.1.0a2.
Thanks for the bug report!
This is because Qfactor does not currently support state prep yet. When you use VariableUnitaryGate
s the instantiation pipeline will select Qfactor by default as the instantiater. We plan on adding support for state instantiation in Qfactor soon.
In the meantime, you can use differentiable gates, e.g. PauliGate
rather than VariableUnitaryGates
.