diff --git a/src/components/StatusModal/CalibrationTable.jsx b/src/components/StatusModal/CalibrationTable.jsx index b9d7c5f3b661..0fde7b08a640 100644 --- a/src/components/StatusModal/CalibrationTable.jsx +++ b/src/components/StatusModal/CalibrationTable.jsx @@ -5,7 +5,7 @@ import { formatMetricValue } from '../../utils/formatMetricValue'; // Render calibration data as a table export const CalibrationTable = (props) => { - const { calibrationData, qubitSwitch, couplerSwitch, qubitMetricOptions, couplerMetricOptions } = props; + const { calibrationData, qubitSwitch, qubitMetricOptions, couplerMetricOptions } = props; if (!calibrationData) return

No calibration data available

; const allMetrics = Object.keys(calibrationData); @@ -13,20 +13,44 @@ export const CalibrationTable = (props) => { // Get all unique qubit/coupler IDs const allIds = new Set(); + const idMap = {}; // Map normalized IDs to actual IDs in data allMetrics.forEach(metric => { Object.keys(calibrationData[metric]).forEach(id => { - if (id !== 'statistics' && ((qubitSwitch && !id.includes("__")) || (couplerSwitch && id.includes("__")))) { - allIds.add(id); + if (id !== 'statistics' && ((qubitSwitch && !id.includes("__")) || (!qubitSwitch && id.includes("__")))) { + // Normalize the ID + const match = id.match(/QB(\d+)__QB(\d+)/); + let normalizedId = id; + if (match) { + const [, num1, num2] = match; + const smaller = Math.min(parseInt(num1), parseInt(num2)); + const larger = Math.max(parseInt(num1), parseInt(num2)); + normalizedId = `QB${smaller}__QB${larger}`; + } + allIds.add(normalizedId); + idMap[normalizedId] = id; // Store the actual ID } }); }); - const sortedIds = Array.from(allIds); - + var sortedIds; + if (qubitSwitch){ + sortedIds = Array.from(allIds).sort((a, b) => { + const numA = parseInt(a.replace('QB', '')); + const numB = parseInt(b.replace('QB', '')); + return numA - numB; + }); + } else { + sortedIds = Array.from(allIds).sort((a, b) => { + const [a1, a2] = a.match(/QB(\d+)__QB(\d+)/).slice(1).map(Number); + const [b1, b2] = b.match(/QB(\d+)__QB(\d+)/).slice(1).map(Number); + return a1 - b1 || a2 - b2; + }); + } // Filter out metrics that have only N/A values for the filtered IDs const metrics = allMetrics.filter(metric => { return sortedIds.some(id => { - const data = calibrationData[metric][id]; + const actualId = idMap[id]; + const data = calibrationData[metric][actualId]; const value = data?.value; return value !== null && value !== undefined; }); @@ -53,9 +77,23 @@ export const CalibrationTable = (props) => { {id} {metrics.map(metric => { - const data = calibrationData[metric][id]; - const value = data?.value; + const actualId = idMap[id]; + let data = calibrationData[metric][actualId]; + let value = data?.value; const unit = data?.unit || ''; + + // Try flipped ID if value is N/A + if ((value === null || value === undefined) && actualId.includes("__")) { + const match = actualId.match(/QB(\d+)__QB(\d+)/); + if (match) { + const flippedId = `QB${match[2]}__QB${match[1]}`; + const flippedData = calibrationData[metric][flippedId]; + if (flippedData?.value !== null && flippedData?.value !== undefined) { + value = flippedData.value; + } + } + } + return ( {value !== null && value !== undefined ? formatMetricValue(value, unit) : 'N/A'} @@ -69,4 +107,4 @@ export const CalibrationTable = (props) => { ); -}; +}; \ No newline at end of file diff --git a/src/components/StatusModal/RawDataSwitcher.jsx b/src/components/StatusModal/RawDataSwitcher.jsx index 81807f6f5ff7..1257008e7cfd 100644 --- a/src/components/StatusModal/RawDataSwitcher.jsx +++ b/src/components/StatusModal/RawDataSwitcher.jsx @@ -53,7 +53,6 @@ export const RawDataSwitcher = (props) => { value={viewState.qubitSwitch} onChangeValue={(e) => { updateViewState('qubitSwitch', e.detail) - updateViewState('couplerSwitch', !e.detail) }} > Qubits @@ -61,10 +60,9 @@ export const RawDataSwitcher = (props) => {
{ updateViewState('qubitSwitch', !e.detail) - updateViewState('couplerSwitch', e.detail) }} > Couplers diff --git a/src/components/StatusModal/StatusModalConent.jsx b/src/components/StatusModal/StatusModalConent.jsx index a4a1796ef205..7683e2f16a6c 100644 --- a/src/components/StatusModal/StatusModalConent.jsx +++ b/src/components/StatusModal/StatusModalConent.jsx @@ -34,7 +34,6 @@ export const ModalContent = (props) => { rawDataType: { name: 'Calibration Data', value: 'calibration_data' }, tableView: false, qubitSwitch: true, - couplerSwitch: false, }); // Update functions for grouped states @@ -132,7 +131,6 @@ export const ModalContent = (props) => {