bqskit icon indicating copy to clipboard operation
bqskit copied to clipboard

Qfactor state vector instantiation

Open peachnuts opened this issue 1 year ago • 1 comments

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.

peachnuts avatar Mar 23 '23 16:03 peachnuts

Thanks for the bug report!

This is because Qfactor does not currently support state prep yet. When you use VariableUnitaryGates 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.

edyounis avatar Mar 31 '23 17:03 edyounis