Skip to content

Commit 1dd856c

Browse files
authored
Merge branch 'main' into rafaelha/get_observable_idx_from_measurement_id_analysis
2 parents f0faf11 + 9885999 commit 1dd856c

File tree

3 files changed

+49
-0
lines changed

3 files changed

+49
-0
lines changed
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
11
from . import dialects as dialects
22
from .group import kernel as kernel
3+
from .stdlib import default_post_processing as default_post_processing
34
from .dialects.operations import terminal_measure as terminal_measure
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
from .post_processing import (
2+
set_detector as set_detector,
3+
set_observable as set_observable,
4+
default_post_processing as default_post_processing,
5+
)
Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
from typing import Any
2+
3+
from kirin.dialects import ilist
4+
5+
from bloqade import squin, types
6+
7+
from ..group import kernel
8+
from ..dialects import operations
9+
10+
11+
@kernel(aggressive_unroll=True, verify=False)
12+
def set_detector(meas: ilist.IList[types.MeasurementResult, Any]):
13+
return ilist.IList(
14+
[
15+
squin.set_detector(
16+
[meas[0], meas[1], meas[2], meas[3]], coordinates=[0, 0]
17+
),
18+
squin.set_detector(
19+
[meas[1], meas[2], meas[4], meas[5]], coordinates=[0, 1]
20+
),
21+
squin.set_detector(
22+
[meas[2], meas[3], meas[4], meas[6]], coordinates=[0, 2]
23+
),
24+
]
25+
)
26+
27+
28+
@kernel(aggressive_unroll=True, verify=False)
29+
def set_observable(meas: ilist.IList[types.MeasurementResult, Any], index: int):
30+
return squin.set_observable([meas[0], meas[1], meas[5]], index)
31+
32+
33+
@kernel(aggressive_unroll=True, verify=False)
34+
def default_post_processing(register: ilist.IList[types.Qubit, Any]):
35+
measurements = operations.terminal_measure(register)
36+
37+
detectors = set_detector(measurements[0])
38+
observables = ilist.IList([set_observable(measurements[0], 0)])
39+
for i in range(1, len(register)):
40+
detectors = detectors + set_detector(measurements[i])
41+
observables = observables + [set_observable(measurements[i], i)]
42+
43+
return detectors, observables

0 commit comments

Comments
 (0)