watch, watchtype='prob', **kwargs)

Creates a handle that watches either marginal probability or walker entanglement during propagation.

  • nodes (array of ints) – the nodes to watch marginal probability (e.g. [0,1,4]).
  • watchtype (str) –

    (‘prob’ , ‘entanglement’).

    the type of watch handle to produce.

Keyword Arguments:

: If ``watchtype=’entanglement’``, EigSolver keywords can also be passed;

for more details of the available EigSolver properties, see propagate().


: * if watchtype='prob', creates a handle that can be accessed to retrieve marginal node probabilities for various \(t\) * if watchtype='entanglment', creates a handle that can be accessed to retrieve entanglement values for various \(t\)

Return type:


To watch the entanglement,
>>> walk.propagate(5.,method='chebyshev')
>>> timeArray, entArray = walk.entanglementHandle.getEntanglement()


  • The entanglement measure used in Von Neumann entropy, calculated via \(S=-\sum_{i}\lambda_i\log_{2}\lambda_i\), where \(\lambda_i\) are the eigenvalues of the reduced density matrix \(\rho_2 = \text{Tr}_1(|\psi(t)\rangle\langle\psi(t)|)\)
  • Nodes do not need to be specified, as entanglement is a global measurement.
  • As it is a global measurement, there is a large amount of node communication which may increase overall program run time.
To watch the probabilities,
>>> walk.propagate(2.,method='chebyshev')
>>> timeArray, probXArray, probYArray, probZArray = walk.handle.getLocalNodes(p=2)


Note that walk.handle attributes are not collective; if running on multiple nodes, only local values will be returned.