Skip to content

Conversation

@enielse
Copy link
Collaborator

@enielse enielse commented Oct 13, 2025

Adds logic to allow implicit models to be used for germ selection and fiducial pair reduction. This basically just adds case logic to interpret an ImplicitOpModel's prep_blks['layers'], povm_blks['layers'], and operation_blks['layers'] elements as the state prep, POVM, and gate operations of that model (parallel to the .preps, .povms, and .operations of an ExplicitOpModel). I don't think this necessarily handles all the edge cases, but I've found it to work fine when using LocalNoiseModel objects when you also specify the num_nongauge_params when performing germ selection.

…be used in germ selection.

And partially in fiducial selection.
Replaces these calls with more general _copy_to_static_explicitop_model
calls, which call model.set_all_parameterizations('static') when
the model is an explicit op model but construct such a model manually
when an implicit model is given.  This allows implicit target models
to be given to FPR routines such as
pygsti.alg.find_sufficient_fiducial_pairs_per_germ.
@enielse enielse requested review from a team as code owners October 13, 2025 14:57
@enielse enielse requested a review from coreyostrove October 13, 2025 14:57
@sserita sserita added this to the 0.9.15 milestone Oct 14, 2025
@rileyjmurray
Copy link
Contributor

@enielse can you add one test each to test_fiducialpairreduction.py and test_germselection.py (both in test/unit/algorithms/)? A natural test would be to make an equivalent ImplicitOpModel from an ExplicitOpModel and see that FPR and germ selection return the same results for the ImplicitOpModel. I'd welcome the addition of utility functions for these classes that convert between one another.

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.

4 participants