No documentation for "circuit_file" in example
zhoupingjay opened this issue · 6 comments
The "circuit_simulation" example expects an input "circuit_file", but there is no documentation about how to construct this file. Could you please add some document and/or samples for this?
The circuit simulation example reads an input file in the "qsim format" described in https://github.com/quantumlib/qsim/blob/master/docs/input_format.md, although we haven't implemented all those gates, but only h
, cz
, t
, x_1_2
, y_1_2
, hz_1_2
, is
, rz
, and fs
.
We call this format the "GRCS format" because it is the same circuit format used in https://github.com/sboixo/GRCS. It also appears in the public dataset of the Nature paper by Google that claims quantum supremacy.
Maybe we should add a docstring for the GRCS
function that explains this file format.
Hi, I tried writing a simplest circuit using the "qsim" format:
1
0 x 0
1 h 0
It only contains one qubit, using one X gate and one H gate. I then ran the circuit with circuit_simulation example:
python3 examples/circuit_simulation.py hello_acqdp.txt
But I got error from the example:
Traceback (most recent call last):
File "/Users/zhouping/GitHub/acqdp/examples/circuit_simulation.py", line 122, in <module>
c = GRCS(args.circuit_file, simplify=False)
File "/Users/zhouping/GitHub/acqdp/examples/circuit_simulation.py", line 67, in GRCS
int(x) for x in words[2:2 + size_table[words[1].lower()]])
KeyError: 'x'
A relative comment: The qsim format is deprecated. Is it possible to import circuit from Cirq's JSON format?
Another related question: How do I add measurements to the circuit, e.g. something like what I did this notebook:
https://github.com/zhoupingjay/quantum/blob/main/2-bit-Deutsch-Problem.ipynb
circuit.append([cirq.measure(q0), cirq.measure(q1)],
strategy=cirq.InsertStrategy.NEW_THEN_INLINE)
As mentioned above, we did not implement all the gates supported by the "qsim" format, but only the ones used in Google's random circuits. The GRCS
function is intended as a demonstration of how one could convert other circuit formats to our format, not a fully functional converter.
Maybe we could try to implement importing circuits from Cirq's JSON format if you could link to a complete format specification.
Measurements are a bit complicated. If you want to calculate the amplitude (or the probability) of a specific measurement result, you can use ZeroMeas
or OneMeas
. If you want to calculate the amplitude for all (computational basis) measurement results, you should just omit the measurement at all: The way the conversion from circuits to tensor networks work, all "open" qubits are implicitly "measured" in the computational basis. Other scenarios may require more creative solutions; see our QEC demo for some examples.