From 15cafdc84ae41e5b22bf2443ca7e1ec763a6c2b5 Mon Sep 17 00:00:00 2001 From: Alessandro Candido Date: Fri, 24 Jan 2025 18:20:33 +0100 Subject: [PATCH] feat: Extract results from qblox acqusitions structure --- src/qibolab/_core/instruments/qblox/results.py | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/src/qibolab/_core/instruments/qblox/results.py b/src/qibolab/_core/instruments/qblox/results.py index ce6b8dff5..d469f169a 100644 --- a/src/qibolab/_core/instruments/qblox/results.py +++ b/src/qibolab/_core/instruments/qblox/results.py @@ -2,6 +2,7 @@ from operator import or_ from typing import Optional, TypedDict +import numpy as np from qblox_instruments.qcodes_drivers.module import Module from qibolab._core.identifier import ChannelId, Result @@ -82,8 +83,17 @@ class IndexedData(TypedDict): AcquiredData = dict[acquisition.MeasureId, IndexedData] +def _extract(data: Integration, length: int) -> Result: + res = np.array([data["path0"], data["path1"]]) + return np.moveaxis(res, 0, -1) / length + + def extract( acquisitions: dict[ChannelId, AcquiredData], - lenghts: dict[acquisition.MeasureId, int], + lengths: dict[acquisition.MeasureId, int], ) -> dict[PulseId, Result]: - return {} + return { + int(acq): _extract(idata["acquisition"]["bins"]["integration"], lengths[acq]) + for data in acquisitions.values() + for acq, idata in data.items() + }