sandialabs / pyGSTi

A python implementation of Gate Set Tomography
http://www.pygsti.info
Apache License 2.0
132 stars 55 forks source link

Deprecation of DenseOperatorInterface #447

Open coreyostrove opened 1 month ago

coreyostrove commented 1 month ago

This issue is meant to track progress on the process of deprecating and removing the DenseOperatorInterface for model members. The DenseOperatorInterface is a class which certain process matrix-like model members (such as FullArbitraryOp or FullTPOp) inherit from which allows for interacting with them using a numpy-like API (i.e. as if they were simply numpy arrays). We have identified some problematic aspects of this design, including its connection to the bug reported in #397. Additionally, this creates a bifurcation in the API for model members where in some instance one can interact with an object like an array, but some other model members require the use of methods such as to_dense and set_dense etc. to interact with their contents. There are benefits to the simplicity of having a single unified API, including maintainability and readability.

Given that we have made the tentative decision to remove this functionality, with it being officially deprecated in 0.9.13 and slated for removal in 0.9.14. We are, of course, open to feedback on this decision. So if there is sufficient push back to this we can reevaluate whether it makes sense to proceed with the removal.