target

Graph.target(operator, filter_function_projector=None)

Create information about the target for system time evolution.

Nodes created with this function contain two types of information: the target gate for the system time evolution, and the projection operator that defines the subspace of interest for robustness.

Parameters

  • operator (np.ndarray or Tensor) – The target gate UtargetU_\mathrm{target}. Must be a non-zero partial isometry.
  • filter_function_projector (np.ndarray or None , optional) – The orthogonal projection matrix PP onto the subspace used for filter function calculations. If you provide a value then it must be Hermitian and idempotent. Defaults to the identity matrix.

Returns

The node containing the specified target information.

Return type

Target

SEE ALSO

Graph.infidelity_pwc : Total infidelity of a system with a piecewise-constant Hamiltonian.

Graph.infidelity_stf : Total infidelity of a system with a sampleable Hamiltonian.

Notes

The target gate UtargetU_\mathrm{target} is a non-zero partial isometry, which means that it can be expressed in the form jψj><ϕj\sum_j \left|\psi_j\right>\left<\phi_j\right|, where {ψj>}\left\{\left|\psi_j\right>\right\} and {ϕj>}\left\{\left|\phi_j\right>\right\} both form (non-empty) orthonormal, but not necessarily complete, sets. Such a target represents a target state ψj>\left|\psi_j\right> for each initial state ϕj>\left|\phi_j\right>. The resulting operational infidelity is 0 if and only if, up to global phase, each initial state ϕj>\left|\phi_j\right> maps exactly to the corresponding final state ψj>\left|\psi_j\right>.

The filter function projector PP is an orthogonal projection matrix, which means that it satisfies P=P=P2P=P^\dagger=P^2. The image of PP defines the set of initial states from which the calculated filter function measures robustness.

Examples

Define a target operation for the Pauli XX gate.

>>> target_operation = graph.target(operator=np.array([[0, 1], [1, 0]]))
>>> target_operation
<Target: operation_name="target", value_shape=(2, 2)>

See more examples in the How to optimize controls robust to strong noise sources user guide.

Was this useful?