Data formatting with measurement control sorts by acquisition channel
Since some time, it is possible to spcify acquisition channels explicitely in measure operations. This is a very powerful interface that can be of great use, but there are some issues I noticed when playing around with this. For example, when exeucting an experiment with the `ScheduleGettable`, that has the following `Measure` operation: ```python Measure(b1, a1, acq_channel=("b1", "a1")) ``` I'd expect an output dataset from MeasurementControl that has four data variables (I+Q for each qubit), which are something like: - `y0`: I-values for qubit `b1` - `y1`: Q-values for qubit `b1` - `y2`: I-values for qubit `a1` - `y3`: Q-values for qubit `a1` Instead, the qubits are 'swapped' around. A typical use case would be two-qubit experiments (like conditional oscillations), where we'd have something like ```python target = b1 spectator = a1 Measure(target, spectator, acq_channel=("target", "spectator")) ``` I'm afraid that always ensuring we put the acquisition channels in a sorted order ourselves is very difficult, because historically we've always assigned 'roles' like this implicitely in this order already. The culprit seems to be [this line](https://gitlab.com/quantify-os/quantify/-/blob/main/quantify/measurement/control.py?ref_type=heads#L385). I understand this is useful, because you become insensitive to the order of data variables in the dataset (which can probably not be guaranteed). It does introduce the problem above, though. I see multiple solutions (probably not an exhaustive list): - Teach MeasurementControl to accepts datasets, so we don't have to do the conversion at all; - Provide the acquisition channels to the formatting function, to order them based on the specified channels instead.
issue