pygsti.modelmembers.operations.denseop
The DenseOperator class and supporting functionality.
Module Contents
Classes
Adds a numpyarraymimicing interface onto an operation object. 

TODO: update docstring 

TODO: update docstring 
Functions

Computes a finitedifference Jacobian for a LinearOperator object. 

Checks the deriv_wrt_params method of a LinearOperator object. 
 pygsti.modelmembers.operations.denseop.finite_difference_deriv_wrt_params(operation, wrt_filter, eps=1e07)
Computes a finitedifference Jacobian for a LinearOperator object.
The returned value is a matrix whose columns are the vectorized derivatives of the flattened operation matrix with respect to a single operation parameter, matching the format expected from the operation’s deriv_wrt_params method.
Parameters
 operationLinearOperator
The operation object to compute a Jacobian for.
 wrt_filterlist or numpy.ndarray
List of parameter indices to filter the result by (as though derivative is only taken with respect to these parameters).
 epsfloat, optional
The finite difference step to use.
Returns
 numpy.ndarray
An M by N matrix where M is the number of operation elements and N is the number of operation parameters.
 pygsti.modelmembers.operations.denseop.check_deriv_wrt_params(operation, deriv_to_check=None, wrt_filter=None, eps=1e07)
Checks the deriv_wrt_params method of a LinearOperator object.
This routine is meant to be used as an aid in testing and debugging operation classes by comparing the finitedifference Jacobian that should be returned by operation.deriv_wrt_params with the one that actually is. A ValueError is raised if the two do not match.
Parameters
 operationLinearOperator
The operation object to test.
 deriv_to_checknumpy.ndarray or None, optional
If not None, the Jacobian to compare against the finite difference result. If None, operation.deriv_wrt_parms() is used. Setting this argument can be useful when the function is called within a LinearOperator class’s deriv_wrt_params() method itself as a part of testing.
 wrt_filterlist or numpy.ndarray
List of parameter indices to filter the result by (as though derivative is only taken with respect to these parameters).
 epsfloat, optional
The finite difference step to use.
Returns
None
 class pygsti.modelmembers.operations.denseop.DenseOperatorInterface
Bases:
object
Adds a numpyarraymimicing interface onto an operation object.
 to_array()
Return the array used to identify this operation within its range of possible values.
For instance, if the operation is a unitary operation, this returns a unitary matrix regardless of the evolution type. The related
to_dense()
method, in contrast, returns the dense representation of the operation, which varies by evolution type.Note: for efficiency, this doesn’t copy the underlying data, so the caller should copy this data before modifying it.
Returns
numpy.ndarray
 to_sparse(on_space='minimal')
Return the operation as a sparse matrix.
Parameters
 on_space{‘minimal’, ‘Hilbert’, ‘HilbertSchmidt’}
The space that the returned dense operation acts upon. For unitary matrices and bra/ket vectors, use ‘Hilbert’. For superoperator matrices and superbra/superket vectors use ‘HilbertSchmidt’. ‘minimal’ means that ‘Hilbert’ is used if possible given this operator’s evolution type, and otherwise ‘HilbertSchmidt’ is used.
Returns
scipy.sparse.csr_matrix
 class pygsti.modelmembers.operations.denseop.DenseOperator(mx, basis, evotype, state_space=None)
Bases:
DenseOperatorInterface
,pygsti.modelmembers.operations.krausop.KrausOperatorInterface
,pygsti.modelmembers.operations.linearop.LinearOperator
TODO: update docstring An operator that behaves like a dense superoperator matrix.
This class is the common base class for more specific dense operators.
Parameters
 mxnumpy.ndarray
The operation as a dense process matrix.
 basisBasis or {‘pp’,’gm’,’std’} or None
The basis used to construct the HilbertSchmidt space representation of this state as a superoperator. If None, certain functionality, such as access to Kraus operators, will be unavailable.
 evotypeEvotype or str
The evolution type. The special value “default” is equivalent to specifying the value of pygsti.evotypes.Evotype.default_evotype.
 state_spaceStateSpace, optional
The state space for this operation. If None a default state space with the appropriate number of qubits is used.
Attributes
 basenumpy.ndarray
Direct access to the underlying process matrix data.
Initialize a new LinearOperator
 property kraus_operators
A list of this operation’s Kraus operators as numpy arrays.
 classmethod from_kraus_operators(kraus_operators, basis='pp', evotype='default', state_space=None)
Create an operation by specifying its Kraus operators.
Parameters
 kraus_operatorslist
A list of numpy arrays, each of which specifyies a Kraus operator.
 basisstr or Basis, optional
The basis in which the created operator’s superoperator representation is in.
 evotypeEvotype or str, optional
The evolution type. The special value “default” is equivalent to specifying the value of pygsti.evotypes.Evotype.default_evotype.
 state_spaceStateSpace, optional
The state space for this operation. If None a default state space with the appropriate number of qubits is used.
 to_dense(on_space='minimal')
Return the dense array used to represent this operation within its evolution type.
Note: for efficiency, this doesn’t copy the underlying data, so the caller should copy this data before modifying it.
Parameters
 on_space{‘minimal’, ‘Hilbert’, ‘HilbertSchmidt’}
The space that the returned dense operation acts upon. For unitary matrices and bra/ket vectors, use ‘Hilbert’. For superoperator matrices and superbra/superket vectors use ‘HilbertSchmidt’. ‘minimal’ means that ‘Hilbert’ is used if possible given this operator’s evolution type, and otherwise ‘HilbertSchmidt’ is used.
Returns
numpy.ndarray
 to_memoized_dict(mmg_memo)
Create a serializable dict with references to other objects in the memo.
Parameters
 mmg_memo: dict
Memo dict from a ModelMemberGraph, i.e. keys are object ids and values are ModelMemberGraphNodes (which contain the serialize_id). This is NOT the same as other memos in ModelMember (e.g. copy, allocate_gpindices, etc.).
Returns
 mm_dict: dict
A dict representation of this ModelMember ready for serialization This must have at least the following fields: module, class, submembers, params, state_space, evotype Additional fields may be added by derived classes.
 class pygsti.modelmembers.operations.denseop.DenseUnitaryOperator(mx, basis, evotype, state_space)
Bases:
DenseOperatorInterface
,pygsti.modelmembers.operations.krausop.KrausOperatorInterface
,pygsti.modelmembers.operations.linearop.LinearOperator
TODO: update docstring An operator that behaves like a dense (unitary) operator matrix.
This class is the common base class for more specific dense operators.
Parameters
 mxnumpy.ndarray
The operation as a dense process matrix.
 basisBasis or {‘pp’,’gm’,’std’}, optional
The basis used to construct the HilbertSchmidt space representation of this state as a superoperator.
 evotypeEvotype or str
The evolution type. The special value “default” is equivalent to specifying the value of pygsti.evotypes.Evotype.default_evotype.
 state_spaceStateSpace, optional
The state space for this operation. If None a default state space with the appropriate number of qubits is used.
Attributes
 basenumpy.ndarray
Direct access to the underlying process matrix data.
Initialize a new LinearOperator
 property kraus_operators
A list of this operation’s Kraus operators as numpy arrays.
 classmethod from_kraus_operators(kraus_operators, basis='pp', evotype='default', state_space=None)
Create an operation by specifying its Kraus operators.
Parameters
 kraus_operatorslist
A list of numpy arrays, each of which specifyies a Kraus operator.
 basisstr or Basis, optional
The basis in which the created operator’s superoperator representation is in.
 evotypeEvotype or str, optional
The evolution type. The special value “default” is equivalent to specifying the value of pygsti.evotypes.Evotype.default_evotype.
 state_spaceStateSpace, optional
The state space for this operation. If None a default state space with the appropriate number of qubits is used.
 classmethod quick_init(unitary_mx, superop_mx, basis, evotype, state_space)
 to_dense(on_space='minimal')
Return the dense array used to represent this operation within its evolution type.
Note: for efficiency, this doesn’t copy the underlying data, so the caller should copy this data before modifying it.
Parameters
 on_space{‘minimal’, ‘Hilbert’, ‘HilbertSchmidt’}
The space that the returned dense operation acts upon. For unitary matrices and bra/ket vectors, use ‘Hilbert’. For superoperator matrices and superbra/superket vectors use ‘HilbertSchmidt’. ‘minimal’ means that ‘Hilbert’ is used if possible given this operator’s evolution type, and otherwise ‘HilbertSchmidt’ is used.
Returns
numpy.ndarray
 to_memoized_dict(mmg_memo)
Create a serializable dict with references to other objects in the memo.
Parameters
 mmg_memo: dict
Memo dict from a ModelMemberGraph, i.e. keys are object ids and values are ModelMemberGraphNodes (which contain the serialize_id). This is NOT the same as other memos in ModelMember (e.g. copy, allocate_gpindices, etc.).
Returns
 mm_dict: dict
A dict representation of this ModelMember ready for serialization This must have at least the following fields: module, class, submembers, params, state_space, evotype Additional fields may be added by derived classes.