:py:mod:`pygsti.modelmembers.states.computationalstate` ======================================================= .. py:module:: pygsti.modelmembers.states.computationalstate .. autoapi-nested-parse:: The ComputationalBasisState class and supporting functionality. Module Contents --------------- Classes ~~~~~~~ .. autoapisummary:: pygsti.modelmembers.states.computationalstate.ComputationalBasisState .. py:class:: ComputationalBasisState(zvals, basis='pp', evotype='default', state_space=None) Bases: :py:obj:`pygsti.modelmembers.states.state.State`, :py:obj:`pygsti.modelmembers.errorgencontainer.NoErrorGeneratorInterface` A static state vector that is tensor product of 1-qubit Z-eigenstates. This is called a "computational basis state" in many contexts. Parameters ---------- zvals : iterable A list or other iterable of integer 0 or 1 outcomes specifying which computational basis element this object represents. The length of `zvals` gives the total number of qubits. basis : Basis or {'pp','gm','std'}, optional The basis used to construct the Hilbert-Schmidt space representation of this state as a super-ket. evotype : Evotype or str, optional The evolution type. The special value `"default"` is equivalent to specifying the value of `pygsti.evotypes.Evotype.default_evotype`. state_space : StateSpace, optional The state space for this operation. If `None` a default state space with the appropriate number of qubits is used. Initialize a new state Vector .. py:property:: num_params Get the number of independent parameters which specify this state vector. Returns ------- int the number of independent parameters. .. py:method:: from_state_vector(vec, basis='pp', evotype='default', state_space=None) :classmethod: Create a new ComputationalBasisState from a dense vector. Parameters ---------- vec : numpy.ndarray A state vector specifying a computational basis state in the standard basis. This vector has length 4^n for n qubits. basis : Basis or {'pp','gm','std'}, optional The basis of `vec` as a super-ket. evotype : Evotype or str The evolution type. The special value `"default"` is equivalent to specifying the value of `pygsti.evotypes.Evotype.default_evotype`. state_space : StateSpace, optional The state space for this operation. If `None` a default state space with the appropriate number of qubits is used. Returns ------- ComputationalBasisState .. py:method:: from_pure_vector(purevec, basis='pp', evotype='default', state_space=None) :classmethod: Create a new ComputationalBasisState from a pure-state vector. Currently, purevec must be a single computational basis state (it cannot be a superpostion of multiple of them). Parameters ---------- purevec : numpy.ndarray A complex-valued state vector specifying a pure state in the standard computational basis. This vector has length 2^n for n qubits. basis : Basis or {'pp','gm','std'}, optional The basis of `vec` as a super-ket. evotype : Evotype or str, optional The evolution type of the resulting effect vector. The special value `"default"` is equivalent to specifying the value of `pygsti.evotypes.Evotype.default_evotype`. state_space : StateSpace, optional The state space for this operation. If `None` a default state space with the appropriate number of qubits is used. Returns ------- ComputationalBasisState .. py:method:: to_dense(on_space: pygsti.SpaceT = 'minimal', scratch=None) Return this state vector as a (dense) numpy array. The memory in `scratch` maybe used when it is not-None. 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 super-bra/super-ket vectors use `'HilbertSchmidt'`. `'minimal'` means that `'Hilbert'` is used if possible given this operator's evolution type, and otherwise `'HilbertSchmidt'` is used. scratch : numpy.ndarray, optional scratch space available for use. Returns ------- numpy.ndarray .. py:method:: taylor_order_terms(order, max_polynomial_vars=100, return_coeff_polys=False) Get the `order`-th order Taylor-expansion terms of this state vector. This function either constructs or returns a cached list of the terms at the given order. Each term is "rank-1", meaning that it is a state preparation followed by or POVM effect preceded by actions on a density matrix `rho` of the form: `rho -> A rho B` The coefficients of these terms are typically polynomials of the State's parameters, where the polynomial's variable indices index the *global* parameters of the State's parent (usually a :class:`Model`) , not the State's local parameter array (i.e. that returned from `to_vector`). Parameters ---------- order : int The order of terms to get. max_polynomial_vars : int, optional maximum number of variables the created polynomials can have. return_coeff_polys : bool Whether a parallel list of locally-indexed (using variable indices corresponding to *this* object's parameters rather than its parent's) polynomial coefficients should be returned as well. Returns ------- terms : list A list of :class:`RankOneTerm` objects. coefficients : list Only present when `return_coeff_polys == True`. A list of *compact* polynomial objects, meaning that each element is a `(vtape,ctape)` 2-tuple formed by concatenating together the output of :meth:`Polynomial.compact`. .. py:method:: to_vector() Get the state vector parameters as an array of values. Returns ------- numpy array The parameters as a 1D array with length num_params(). .. py:method:: from_vector(v, close=False, dirty_value=True) Initialize the state vector using a 1D array of parameters. Parameters ---------- v : numpy array The 1D vector of state vector parameters. Length must == num_params() close : bool, optional Whether `v` is close to this state vector's current set of parameters. Under some circumstances, when this is true this call can be completed more quickly. dirty_value : bool, optional The value to set this object's "dirty flag" to before exiting this call. This is passed as an argument so it can be updated *recursively*. Leave this set to `True` unless you know what you're doing. Returns ------- None .. py:method:: 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.