Skip to content

Qibo fails to parse valid OpenQASM 2.0 measure q -> c; syntax #1743

@GabrielePalazzo

Description

@GabrielePalazzo

Description

When importing a valid OpenQASM 2.0 circuit that uses the vectorized measurement syntax
measure q -> c;, Qibo raises an error.
The same circuit parses correctly if the measurements are written explicitly per-qubit.

To Reproduce

from qibo import Circuit

program = """
OPENQASM 2.0;
include "qelib1.inc";
qreg q[2];
creg c[2];

h q[0];
cx q[0], q[1];

measure q -> c;
"""

# This fails
circuit = Circuit.from_qasm(program)

This is the error message:

raceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/home/gabriele/.venv/lib/python3.12/site-packages/qibo/models/circuit.py", line 1211, in from_qasm
    return parser.to_circuit(qasm_code, accelerators, density_matrix)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/gabriele/.venv/lib/python3.12/site-packages/qibo/models/_openqasm.py", line 158, in to_circuit
    gates.append(self._get_measurement(statement))
                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/gabriele/.venv/lib/python3.12/site-packages/qibo/models/_openqasm.py", line 188, in _get_measurement
    register = measurement.target.name.name
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'str' object has no attribute 'name'

If I measure each quit separately, it works:

from qibo import Circuit

program = """
OPENQASM 2.0;
include "qelib1.inc";
qreg q[2];
creg c[2];

h q[0];
cx q[0], q[1];

measure q[0] -> c[0];
measure q[1] -> c[1];
"""

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions