@jit(nopython=True, cache=True)<EOL>def __dtw_backtracking(D_steps, step_sizes_sigma):  
wp = []<EOL>cur_idx = (D_steps.shape[<NUM_LIT:0>] - <NUM_LIT:1>, D_steps.shape[<NUM_LIT:1>] - <NUM_LIT:1>)<EOL>wp.append((cur_idx[<NUM_LIT:0>], cur_idx[<NUM_LIT:1>]))<EOL>while cur_idx[<NUM_LIT:0>] > <NUM_LIT:0>:<EOL><INDENT>cur_step_idx = D_steps[(cur_idx[<NUM_LIT:0>], cur_idx[<NUM_LIT:1>])]<EOL>cur_idx = (cur_idx[<NUM_LIT:0>] - step_sizes_sigma[cur_step_idx][<NUM_LIT:0>],<EOL>cur_idx[<NUM_LIT:1>] - step_sizes_sigma[cur_step_idx][<NUM_LIT:1>])<EOL>wp.append((cur_idx[<NUM_LIT:0>], cur_idx[<NUM_LIT:1>]))<EOL><DEDENT>return wp<EOL>
Backtrack optimal warping path.

    Uses the saved step sizes from the cost accumulation
    step to backtrack the index pairs for an optimal
    warping path.


    Parameters
    ----------
    D_steps : np.ndarray [shape=(N, M)]
        Saved indices of the used steps used in the calculation of D.

    step_sizes_sigma : np.ndarray [shape=[n, 2]]
        Specifies allowed step sizes as used by the dtw.

    Returns
    -------
    wp : list [shape=(N,)]
        Warping path with index pairs.
        Each list entry contains an index pair
        (n,m) as a tuple

    See Also
    --------
    dtw