Skip to content

feat: Add event hook which records measurement results - #104

Merged
cgh-qtnm merged 3 commits into
mainfrom
george/result_hook
Dec 15, 2025
Merged

cgh-qtnm merged 3 commits into
mainfrom
george/result_hook

Conversation

@cgh-qtnm

@cgh-qtnm cgh-qtnm commented Dec 9, 2025

Copy link
Copy Markdown
Collaborator

This PR adds a new EventHook in selene-sim which records measurement results returned by the error model and delivers them to the user, replicating the task performed by the measurement replay feature on Quantinuum hardware.

Changes:

  • adds new on_runtime_results hook to the EventHook trait, which receives the measurements returned by the error model for each op batch
  • Adds MeasurementExtractor plugin using this hook, based on the design of CircuitExtractor
  • Adds some simple tests for the MeasurementExtractor plugin

Open questions:

  • Currently the new plugin only supports parsed output, because it writes the whole shot as a single message in the output stream. It could support unparsed output, at the cost of more overhead in the output stream (or structural changes in the parsing code). Let me know if this is desired and I will implement it.

Closes #103

@cgh-qtnm cgh-qtnm changed the title feat: Add event hook which extracts measurement results feat: Add event hook which records measurement results Dec 9, 2025
@cgh-qtnm

cgh-qtnm commented Dec 9, 2025

Copy link
Copy Markdown
Collaborator Author

Looks like the macos-13 runners are now permanently disabled. CI is passing other than that

@cgh-qtnm
cgh-qtnm marked this pull request as ready for review December 9, 2025 22:52
@jake-arkinstall

Copy link
Copy Markdown
Collaborator

Rebased on main (with macos-15-intel runner instead of macos-13)

@cgh-qtnm
cgh-qtnm merged commit 01300ee into main Dec 15, 2025
10 checks passed
@cgh-qtnm
cgh-qtnm deleted the george/result_hook branch December 15, 2025 13:18
jake-arkinstall pushed a commit that referenced this pull request Jan 8, 2026
🤖 I have created a release *beep* *boop*
---


##
[0.2.7](selene-sim-v0.2.6...selene-sim-v0.2.7)
(2026-01-08)


### Features

* Add event hook which records measurement results
([#104](#104))
([01300ee](01300ee)),
closes [#103](#103)
* Correct qubit ordering in QuEST state dumping
([#110](#110)), closes
[#109](#110)
* Support state-dump passthrough on quantum replay simulator
([#108](#108))
([1b01a01](1b01a01))

---
This PR was generated with [Release
Please](https://github.com/googleapis/release-please). See
[documentation](https://github.com/googleapis/release-please#release-please).
jake-arkinstall added a commit that referenced this pull request Jun 12, 2026
🤖 I have created a release *beep* *boop*
---


##
[0.3.0-alpha.1](selene-sim-v0.3.0-alpha.0...selene-sim-v0.3.0-alpha.1)
(2026-06-12)


### ⚠ BREAKING CHANGES

* Use struct exports for all plugin types, separate error model and
simulator ([#169](#169))
* Add handling for an additional gateset
([#119](#119))

### Features

* Add __version__ attributes
([#137](#137))
([379ae01](379ae01))
* Add event hook which records measurement results
([#104](#104))
([01300ee](01300ee)),
closes [#103](#103)
* Add handling for an additional gateset
([#119](#119))
([5180b80](5180b80))
* Add simulate_delay functionality
([#139](#139))
([cca97fa](cca97fa))
* Add support for object files provided as bytes
([#94](#94))
([c4cfac6](c4cfac6))
* add timing to builtin runtimes and batching options to softrz runtime
([#158](#158))
([049e123](049e123))
* Better exception handling for parse_shots=False
([#70](#70))
([3caf530](3caf530))
* Build improvements
([#142](#142))
([12f399b](12f399b))
* Bump selene-core dependency and relax guppylang testing dependency
([#120](#120))
([6375791](6375791))
* Cleanup error'd processes before log collection
([#98](#98))
([77e698e](77e698e))
* **compiler:** Bump tket version; add wasm + gpu to the hugr-qis
registry
([c69155d](c69155d))
* correct shot end strategy and error processing
([#91](#91))
([93eaeb0](93eaeb0))
* Emit a nicer error when trying to emulate unsupported pytket ops
([#72](#72))
([d88a28a](d88a28a))
* Fine-grained timeout configuration
([#69](#69))
([072842e](072842e))
* Interactive use of Selene from python
([#135](#135))
([db3028d](db3028d))
* Make interfaces shared, add ArgReader
([#171](#171))
([143e742](143e742))
* QIR support using QIR-QIS
([#114](#114))
([70ab294](70ab294))
* Quest performance improvements
([#133](#133))
([af640e9](af640e9))
* random_advance ([#55](#55))
([974b496](974b496))
* Record simulated delays in event hooks
([#154](#154))
([608884a](608884a))
* Result stream handling refactor
([#93](#93))
([607a55e](607a55e))
* Stim improvements (more ops + state printing)
([#115](#115))
([867d5e5](867d5e5))
* Support state-dump passthrough on quantum replay simulator
([#108](#108))
([1b01a01](1b01a01))
* test on QIS instead of relying on the upper stack
([#150](#150))
([b80a9c4](b80a9c4))
* Test on QIS snapshots
([#134](#134))
([c4d58ab](c4d58ab))
* Traces for analytics
([#160](#160))
([24b9978](24b9978))
* update to tket-qsystem 0.20
([#66](#66))
([7191b07](7191b07))
* Use mingw instead of msvc for windows wheels
([#143](#143))
([3d91514](3d91514))
* Use SeleneStartupError for errors before shot_start
([#170](#170))
([85c2907](85c2907))
* Use struct exports for all plugin types, separate error model and
simulator ([#169](#169))
([c44a5c9](c44a5c9))


### Bug Fixes

* add `___barrier` to Helios QIS for QIR emulation
([#136](#136))
([dfbc4c3](dfbc4c3))
* Add ENDING to allowed shot state on receiving meta information
([#100](#100))
([fc4d673](fc4d673))
* Add numpy dependency back
([#127](#127))
([c9a01eb](c9a01eb))
* avoid using qir_major_version string for QIR detection
([#123](#123))
([deaa0dc](deaa0dc))
* classify lowered qir-qis bitcode as helios
([#157](#157))
([67fca60](67fca60))
* **compiler:** error when entrypoint has arguments
([#84](#84))
([604b131](604b131))
* **compiler:** update tket-qystem to fix CZ bug
([#78](#78))
([3991f11](3991f11))
* correct post_runtime duration metric
([#74](#74))
([0bef66a](0bef66a))
* make qir-qis optional and stabilize CI
([#164](#164))
([e52c0b2](e52c0b2))


### Documentation

* add repository citation guidance and metadata
([#146](#146))
([880a58b](880a58b)),
closes [#145](#145)
* Correct URL to guppy repository
([#121](#121))
([27ded00](27ded00))

---
This PR was generated with [Release
Please](https://github.com/googleapis/release-please). See
[documentation](https://github.com/googleapis/release-please#release-please).

Co-authored-by: Jake Arkinstall <65358059+jake-arkinstall@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Add event hook for measurement results

2 participants