Currently for execute_circuits, passing qubit_maps of [[q0, q2, q3, q7, ..., qn]] for a single circuit returns a Counter object where the bitstrings are mapped to (qn, ..., q7, q3, q2, q0). Furthermore, if the consumer is only looking at certain combinations of qubits (e.g. pairs), they would have to break the bitstring counter to obtain their relevant bits, which adds to the confusion of result mapping.
I propose an approach where we relax the constraint of https://github.com/qiboteam/qibocal/blob/main/src/qibocal/auto/transpile.py#L89-L97 where only a single qubit can be measured per measurement gate and simply resolve the single/multi-qubit measurement registers with measurement_maps. This would place it much closer to the existing circuit execution pipeline of QibolabBackend. Then, we then resolve the mapping of logical qubits onto the physical qubits and return Counter objects like in the existing behaviour, but mapped to the requested physical qubits per measurement.
Currently for
execute_circuits, passingqubit_mapsof[[q0, q2, q3, q7, ..., qn]]for a single circuit returns aCounterobject where the bitstrings are mapped to(qn, ..., q7, q3, q2, q0). Furthermore, if the consumer is only looking at certain combinations of qubits (e.g. pairs), they would have to break the bitstring counter to obtain their relevant bits, which adds to the confusion of result mapping.I propose an approach where we relax the constraint of https://github.com/qiboteam/qibocal/blob/main/src/qibocal/auto/transpile.py#L89-L97 where only a single qubit can be measured per measurement gate and simply resolve the single/multi-qubit measurement registers with
measurement_maps. This would place it much closer to the existing circuit execution pipeline ofQibolabBackend. Then, we then resolve the mapping of logical qubits onto the physical qubits and returnCounterobjects like in the existing behaviour, but mapped to the requested physical qubits per measurement.