def digits_pairwise_match():
    """
    Find discrepancy and minimizing angle for each pair of digits.

    """

    discrepancy = np.empty((10, 10))
    theta_min = np.empty((10, 10))

    for m in xrange(0, 10):
        c0 = DiscreteCurve()
        c0.load(DATA_FOLDER + '/%d_processed.mat' % m)
        c0.translate(-c0[0,:])
    
        print "*** SOURCE: %d ***" % m
    
        for n in xrange(0, 10):
            c1 = DiscreteCurve()
            c1.load(DATA_FOLDER + '/%d_processed.mat' % n)
            c1.translate(-c1[0,:])
        
            print "*** TARGET: %d ***" % n
        
            mp = MatchingProblem(c0, c1, 2)
            energies = mp.sweep_theta_range(40)
        
            E_conv, E_div = separate_energies(energies)
            if len(E_conv) == 0:
                print "*** ERROR: No convergence for %d to %d ***" % (m, n)
        
            argmin = E_conv[:, 1].argmin()
            theta, E_min = E_conv[argmin, 0:2]
        
            print "* theta_min = %f, E_min = %f *" % (theta, E_min)
        
            discrepancy[m, n] = E_min
            theta_min[m, n] = theta

    return theta_min, discrepancy