Skip to content

Commit

Permalink
Merge pull request #477 from qiboteam/dummy_fix_discrimination_genera…
Browse files Browse the repository at this point in the history
…tion

Fix Dummy discrimination
  • Loading branch information
Jacfomg committed Jun 8, 2023
2 parents affcbb8 + 981d1ce commit 66fc74a
Showing 1 changed file with 16 additions and 23 deletions.
39 changes: 16 additions & 23 deletions src/qibolab/instruments/dummy.py
Original file line number Diff line number Diff line change
Expand Up @@ -40,45 +40,38 @@ def stop(self):
def disconnect(self):
log.info("Disconnecting dummy instrument.")

def play(self, qubits: Dict[Union[str, int], Qubit], sequence: PulseSequence, options: ExecutionParameters):
expts = 1 if options.averaging_mode is AveragingMode.CYCLIC else options.nshots

def get_values(self, options, sequence, exp_points):
results = {}
for ro_pulse in sequence.ro_pulses:
if options.acquisition_type is AcquisitionType.DISCRIMINATION:
values = np.random.rand(expts)
if options.averaging_mode is AveragingMode.SINGLESHOT:
values = np.random.randint(2, size=exp_points)
elif options.averaging_mode is AveragingMode.CYCLIC:
values = np.random.rand(exp_points)
elif options.acquisition_type is AcquisitionType.RAW:
samples = int(ro_pulse.duration * self.sampling_rate)
values = np.random.rand(samples * expts) * 100 + 1j * np.random.rand(samples * expts) * 100
values = np.random.rand(samples * exp_points) * 100 + 1j * np.random.rand(samples * exp_points) * 100
elif options.acquisition_type is AcquisitionType.INTEGRATION:
values = np.random.rand(expts) * 100 + 1j * np.random.rand(expts) * 100
values = np.random.rand(exp_points) * 100 + 1j * np.random.rand(exp_points) * 100
results[ro_pulse.qubit] = results[ro_pulse.serial] = options.results_type(values)

return results

def play(self, qubits: Dict[Union[str, int], Qubit], sequence: PulseSequence, options: ExecutionParameters):
exp_points = 1 if options.averaging_mode is AveragingMode.CYCLIC else options.nshots

return self.get_values(options, sequence, exp_points)

def sweep(
self,
qubits: Dict[Union[str, int], Qubit],
sequence: PulseSequence,
options: ExecutionParameters,
*sweepers: List[Sweeper],
):
expts = 1
exp_points = 1
for sweeper in sweepers:
expts *= len(sweeper.values)
exp_points *= len(sweeper.values)
if options.averaging_mode is not AveragingMode.CYCLIC:
expts *= options.nshots

results = {}
exp_points *= options.nshots

for ro_pulse in sequence.ro_pulses:
if options.acquisition_type is AcquisitionType.DISCRIMINATION:
values = np.random.rand(expts)
elif options.acquisition_type is AcquisitionType.RAW:
samples = int(ro_pulse.duration * self.sampling_rate)
values = np.random.rand(samples * expts) * 100 + 1j * np.random.rand(samples * expts) * 100
elif options.acquisition_type is AcquisitionType.INTEGRATION:
values = np.random.rand(expts) * 100 + 1j * np.random.rand(expts) * 100
results[ro_pulse.qubit] = results[ro_pulse.serial] = options.results_type(values)

return results
return self.get_values(options, sequence, exp_points)

0 comments on commit 66fc74a

Please sign in to comment.