I have a stim circuit with 2 observables. When I simulate this I would like to know how many times the decoder predicts:

  • the value of the first observable incorrectly
  • the value of the second observable incorrectly
  • the value of at least one of the two observables incorrectly

I know I can do this by collecting data three times using sinter.collect (include only first observable, include second observable, include both observables).

Is there a more efficient way of doing this, where I only have to collect data once?


1 Answer 1


There currently isn't an option to do this. Even worse, it's actually hard to fix because it clashes with the output CSV format, which only has one column for errors. I'll add this question to the "it'd be nice to be able to separate the parallel-ing part from the aggregate-ing part" pile.

A hacky way that you can almost do this, specifically for the case of two observables, is to use one of the observables as a discard signal. E.g. add --postselected_observables_predicate "index == 1" to the sinter collect call on the command line. Then you get P(mispredictobs1) from the number of discards and P(mispredictobs0 given ~mispredictobs1) from the number of errors vs the number of non-discarded shots. This allows you to determine P(mispredictobs1) and P(mispredictobs0 or mispredictobs1) but not P(mispredictobs0).

In my own papers I generally collect X and Z separately, and then for the combined value I state that I am assuming independence or that I am getting an upper bound from assuming complete-anti-correlation. But most of my papers have involved memory experiments or other experiments that actually only support one observable at a time unless you use magical noiseless boundaries, so the issue came from the physicality constraints as opposed to the aggregation software.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.