# Within Stim, how to trace back DEM error instructions to Stim circuit faults

If I have a line in a DEM e.g.

error(0.001) D0

is there an easy way to see which circuit faults in the original circuit contributed to that error mechanism?

Use stim.Circuit.explain_detector_error_model_errors, like this:

circuit = ...
dem_errors_to_explain = stim.DetectorErrorModel("""
error(1) D0
""")

circuit_errors = circuit.explain_detector_error_model_errors(
dem_filter=dem_errors_to_explain,
reduce_to_one_representative_error=True,
)


The result is a list of stim.ExplainedError objects (in this case the list only has one item, since we only asked to explain one error).

Note that these circuit error describing objects have a lot of fields. The easiest way to understand them is to start by just printing them out and see what's listed. The reduce_to_one_representative_error argument simplifies things by making each explained error only contain the simplest stim.CircuitErrorLocation, instead of all of them. You'll then get something like:

>>> print(circuit_errors[0])

Explained Error {
dem_error_terms D0[coords 1,2,3]
CircuitErrorLocation {
flipped_pauli_product: Y0[coords 0,0]
Circuit location stack trace:
(after 10 TICKs)
at instruction #3 (DEPOLARIZE1) in the circuit
at target #1 of the instruction
resolving to DEPOLARIZE1(0.01) 0[coords 0,0]
}
}


Note that if you get something like this:

Explained Error {
dem_error_terms D0[coords 1,2,3]
[no single circuit error had these exact symptoms]
}


you may have accidentally used a version of your circuit that had no noise in it.