Skip to content

stim.target_combiner and stim.PauliString not supported for OBSERVABLE_INCLUDE #955

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
oscarhiggott opened this issue May 16, 2025 · 0 comments

Comments

@oscarhiggott
Copy link

The new pauli targets for OBSERVABLE_INCLUDE only works with stim.target_pauli but not stim.target_combiner or stim.PauliString. Instead I would have expected stim.target_combiner or stim.PauliString to be supported and not stim.target_pauli alone since it is a pauli product being included into the observable.

For example:

import stim

circuit = stim.Circuit()

obs_pauli = stim.PauliString("IXYZIIXYZ")

# Works fine
circuit.append("MPP", targets=[obs_pauli])

# ValueError: Gate OBSERVABLE_INCLUDE only takes measurement record targets and Pauli targets (rec[-k], Xk, Yk, Zk).
circuit.append("OBSERVABLE_INCLUDE", targets=[obs_pauli], arg=0)
# ValueError: Gate OBSERVABLE_INCLUDE only takes measurement record targets and Pauli targets (rec[-k], Xk, Yk, Zk).
circuit.append(
    "OBSERVABLE_INCLUDE", targets=[*stim.target_combined_paulis(obs_pauli)], arg=1
)

obs_pauli_targets = []
for i in range(len(obs_pauli)):
    if obs_pauli[i] != 0:
        obs_pauli_targets.append(stim.target_pauli(i, obs_pauli[i]))
# Works fine
circuit.append("OBSERVABLE_INCLUDE", targets=obs_pauli_targets, arg=1)
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

No branches or pull requests

1 participant