Exemplo n.º 1
0
def main():

    parser = argparse.ArgumentParser(description='')
    parser.add_argument('--MC','-Q', help='Quantum training file',   nargs='+')
    parser.add_argument('--ED','-C', help='Classical training file', nargs='+')
    parser.add_argument('--clamped', help='Clamped simulation', default=False, action='store_true')
    args = vars(parser.parse_args())


    if 'MC' in args.keys():
        skip = 3 # skip estimators we don't care about 
        for filename in args['MC']:
            fparams = ssexyhelp.getReduceParamMap(filename)
            data    = np.loadtxt(filename)
            headers = Hfile.getHeaders(filename)
            if not(args['clamped']): (first, last) = (headers.index('X0'),  headers.index('sX0'))
            else:                    (first, last) = (headers.index('sX0'), len(headers))
            aves    = np.zeros(last-first)
            stds    = np.zeros(last-first)
            for i, c in enumerate(range(first, last)):
                cdata   = data[~np.isnan(data[:,c]),c]
                aves[i] = np.mean(cdata)
                stds[i] = np.amax(MCstat.bin(cdata[np.newaxis].T))
            
    if 'ED' in args.keys():
        for filename in args['ED']:
            fparams = ssexyhelp.getReduceParamMap(filename)
            ED    = np.loadtxt(filename)
    
    print ED
    print aves
    print stds
    colors = ["#66CAAE", "#CF6BDD", "#E27844", "#7ACF57", "#92A1D6", "#E17597", "#C1B546"]


    fig = pl.figure(1, figsize=(10,5))
    pl.connect('key_press_event',kevent.press)
    ax  = pl.subplot(111)
    ax.plot((ED-aves)/stds, color=colors[0])#, lw=2, m='o', ls='')#, label=r'$data$')
    
    pl.ylabel(r'$(ED-MC)/\Delta_{MC}$')
    pl.xlabel(r'$Averages$')
    lgd = pl.legend(loc = 'best')
    
    lheaders = []
    for head in Hfile.getHeaders(args['ED'][0]):
        lheaders += [r'$%s$' %head]
    pl.xticks(range(len(lheaders)), lheaders, rotation='vertical')

    #lgd.draggable(state=True)
    #lgd.draw_frame(False)
    pl.tight_layout()
    pl.show()
Exemplo n.º 2
0
def main(): 
    parser = argparse.ArgumentParser(description='')
    parser.add_argument('--quant',  '-Q',  help='Quantum training file',   nargs='+')
    parser.add_argument('--squant1', '-S', help='Fixed delta quantum training file',   nargs='+')
    parser.add_argument('--aquant1',  help='Approximate quantum training file',   nargs='+')
    parser.add_argument('--squant2', help='Fixed delta quantum training file',   nargs='+')
    parser.add_argument('--squant3', help='Fixed delta quantum training file',   nargs='+')
    parser.add_argument('--aquant2',  help='Approximate quantum training file',   nargs='+')
    parser.add_argument('--aquant3',  help='Approximate quantum training file',   nargs='+')
    parser.add_argument('--class','-C', help='Classical training file', nargs='+')

    args = vars(parser.parse_args())

    colors = ["#66CAAE", "#CF6BDD", "#E27844", "#7ACF57", "#92A1D6", "#E17597", "#C1B546"]
    fig = pl.figure(1, figsize=(10,5))
    pl.connect('key_press_event',kevent.press)
    ax  = pl.subplot(111)

    
    # ----------------------------------------------------------------------
    if 'class' in args.keys():
        cdata = {}
        i = -1
        for filename in args['class']:
            data = Hfile.cleanData(np.loadtxt(filename))
            
            LL      = data[-1,0]
            fparams = ssexyhelp.getReduceParamMap(filename)
            N       = int(fparams['N'])
            
            if not(N in cdata.keys()): cdata[N] = []
            cdata[N] += [LL]
        
        (Ns, vLLs, eLLs) = (cdata.keys(), [], [])
        Ns.sort()
        for N in Ns:
            vLLs += [np.mean(np.array(cdata[N]))]
            eLLs += [np.std(np.array(cdata[N]))/float(np.sqrt(len(cdata[N])))]
        
        cLLs = unumpy.uarray((np.array(vLLs), np.array(eLLs)))
        #ax.errorbar(Ns, unumpy.nominal_values(cLLs), unumpy.std_devs(cLLs), color=colors[1], lw=1, marker='o', ms=4, ls='', label=r'$classical$')

    # ----------------------------------------------------------------------
    if 'quant' in args.keys():
        qdata = {}
        i = -1
        for filename in args['quant']:
            data = Hfile.cleanData(np.loadtxt(filename))
            
            LL      = data[-1,0]
            fparams = ssexyhelp.getReduceParamMap(filename)
            N       = int(fparams['N'])
            
            if not(N in qdata.keys()): qdata[N] = []
            qdata[N] += [LL]

        (Ns, vLLs, eLLs) = (qdata.keys(), [], [])
        Ns.sort()
        for N in Ns:
            vLLs += [np.mean(np.array(qdata[N]))]
            eLLs += [np.std(np.array(qdata[N]))/float(np.sqrt(len(qdata[N])))]

        eqLLs = cLLs - unumpy.uarray((np.array(vLLs), np.array(eLLs)))
        ax.errorbar(Ns, unumpy.nominal_values(eqLLs), unumpy.std_devs(eqLLs), color=colors[0], lw=1, ls=':', marker='s', ms=4, label=r'$exact \, quantum$')
        #ax.plot(Ns, unumpy.nominal_values(eqLLs), color=colors[2], lw=1, ls='-', marker='s', ms=4, label=r'$exact \, quantum$')


    # ----------------------------------------------------------------------
    if 'aquant1' in args.keys():
        aqdata = {}
        i = -1
        for filename in args['aquant1']:
            data = Hfile.cleanData(np.loadtxt(filename))
            
            LL      = data[-1,0]
            fparams = ssexyhelp.getReduceParamMap(filename)
            N       = int(fparams['N'])
            
            if not(N in aqdata.keys()): aqdata[N] = []
            aqdata[N] += [LL]

        (Ns, vLLs, eLLs) = (aqdata.keys(), [], [])
        Ns.sort()
        for N in Ns:
            vLLs += [np.mean(np.array(aqdata[N]))]
            eLLs += [np.std(np.array(aqdata[N]))/float(np.sqrt(len(aqdata[N])))]
        
        aqLLs = cLLs - unumpy.uarray((np.array(vLLs), np.array(eLLs)))
        ax.errorbar(Ns, unumpy.nominal_values(aqLLs), unumpy.std_devs(aqLLs), color=colors[1], lw=1, ls='-', marker='p', ms=4, label=r'$appr. \,quantum \, \Delta=1$')
        #ax.plot(Ns, unumpy.nominal_values(aqLLs), color=colors[3], lw=1, ls='-', marker='p', ms=4, label=r'$appr. \,quantum \, \Delta=2$')

    # ----------------------------------------------------------------------
    if 'squant1' in args.keys():
        qdata = {}
        i = -1
        for filename in args['squant1']:
            print filename
            data = Hfile.cleanData(np.loadtxt(filename))
            
            LL      = data[-1,0]
            fparams = ssexyhelp.getReduceParamMap(filename)
            N       = int(fparams['N'])
            
            if not(N in qdata.keys()): qdata[N] = []
            qdata[N] += [LL]

        (Ns, vLLs, eLLs) = (qdata.keys(), [], [])
        Ns.sort()
        for N in Ns:
            vLLs += [np.mean(np.array(qdata[N]))]

            eLLs += [np.std(np.array(qdata[N]))/float(np.sqrt(len(qdata[N])))]

        eqLLs = cLLs[:-1] - unumpy.uarray((np.array(vLLs), np.array(eLLs)))
        ax.errorbar(Ns, unumpy.nominal_values(eqLLs), unumpy.std_devs(eqLLs), color=colors[1], lw=1, ls='--', marker='s', ms=4, label=r'$fixed \, quantum \, \Delta=1$')
        #ax.plot(Ns, unumpy.nominal_values(eqLLs), color=colors[5], lw=1, ls='-', marker='s', ms=4, label=r'$fixed \, quantum \, \Delta =1$')

 
    # ----------------------------------------------------------------------
    if 'aquant2' in args.keys():
        aqdata = {}
        i = -1
        for filename in args['aquant2']:
            data = Hfile.cleanData(np.loadtxt(filename))
            
            LL      = data[-1,0]
            fparams = ssexyhelp.getReduceParamMap(filename)
            N       = int(fparams['N'])
            
            if not(N in aqdata.keys()): aqdata[N] = []
            aqdata[N] += [LL]

        (Ns, vLLs, eLLs) = (aqdata.keys(), [], [])
        Ns.sort()
        for N in Ns:
            vLLs += [np.mean(np.array(aqdata[N]))]
            eLLs += [np.std(np.array(aqdata[N]))/float(np.sqrt(len(aqdata[N])))]
        
        aqLLs = cLLs - unumpy.uarray((np.array(vLLs), np.array(eLLs)))
        ax.errorbar(Ns, unumpy.nominal_values(aqLLs), unumpy.std_devs(aqLLs), color=colors[2], lw=1, ls='-', marker='p', ms=4, label=r'$appr. \,quantum \, \Delta=2$')
        #ax.plot(Ns, unumpy.nominal_values(aqLLs), color=colors[3], lw=1, ls='-', marker='p', ms=4, label=r'$appr. \,quantum \, \Delta=2$')

    # ----------------------------------------------------------------------
    if 'squant2' in args.keys():
        qdata = {}
        i = -1
        for filename in args['squant2']:
            data = Hfile.cleanData(np.loadtxt(filename))
            
            LL      = data[-1,0]
            fparams = ssexyhelp.getReduceParamMap(filename)
            N       = int(fparams['N'])
            
            if not(N in qdata.keys()): qdata[N] = []
            qdata[N] += [LL]

        (Ns, vLLs, eLLs) = (qdata.keys(), [], [])
        Ns.sort()
        for N in Ns:
            vLLs += [np.mean(np.array(qdata[N]))]

            eLLs += [np.std(np.array(qdata[N]))/float(np.sqrt(len(qdata[N])))]

        eqLLs = cLLs[:-1] - unumpy.uarray((np.array(vLLs), np.array(eLLs)))
        ax.errorbar(Ns, unumpy.nominal_values(eqLLs), unumpy.std_devs(eqLLs), color=colors[2], lw=1, ls='--', marker='s', ms=4, label=r'$fixed \, quantum \, \Delta=3$')
        #ax.plot(Ns, unumpy.nominal_values(eqLLs), color=colors[5], lw=1, ls='-', marker='s', ms=4, label=r'$fixed \, quantum \, \Delta =1$')

 
    # ----------------------------------------------------------------------
    if 'aquant3' in args.keys():
        aqdata = {}
        i = -1
        for filename in args['aquant3']:
            data = Hfile.cleanData(np.loadtxt(filename))
            
            LL      = data[-1,0]
            fparams = ssexyhelp.getReduceParamMap(filename)
            N       = int(fparams['N'])
            
            if not(N in aqdata.keys()): aqdata[N] = []
            aqdata[N] += [LL]

        (Ns, vLLs, eLLs) = (aqdata.keys(), [], [])
        Ns.sort()
        for N in Ns:
            vLLs += [np.mean(np.array(aqdata[N]))]
            eLLs += [np.std(np.array(aqdata[N]))/float(np.sqrt(len(aqdata[N])))]
        
        aqLLs = cLLs - unumpy.uarray((np.array(vLLs), np.array(eLLs)))
        ax.errorbar(Ns, unumpy.nominal_values(aqLLs), unumpy.std_devs(aqLLs), color=colors[3], lw=1, ls='-', marker='p', ms=4, label=r'$appr. \,quantum \, \Delta=3$')
        #ax.plot(Ns, unumpy.nominal_values(aqLLs), color=colors[3], lw=1, ls='-', marker='p', ms=4, label=r'$appr. \,quantum \, \Delta=2$')

    # ----------------------------------------------------------------------
    if 'squant3' in args.keys():
        qdata = {}
        i = -1
        for filename in args['squant3']:
            data = Hfile.cleanData(np.loadtxt(filename))
            
            LL      = data[-1,0]
            fparams = ssexyhelp.getReduceParamMap(filename)
            N       = int(fparams['N'])
            
            if not(N in qdata.keys()): qdata[N] = []
            qdata[N] += [LL]

        (Ns, vLLs, eLLs) = (qdata.keys(), [], [])
        Ns.sort()
        for N in Ns:
            vLLs += [np.mean(np.array(qdata[N]))]

            eLLs += [np.std(np.array(qdata[N]))/float(np.sqrt(len(qdata[N])))]

        eqLLs = cLLs[:-1] - unumpy.uarray((np.array(vLLs), np.array(eLLs)))
        ax.errorbar(Ns, unumpy.nominal_values(eqLLs), unumpy.std_devs(eqLLs), color=colors[3], lw=1, ls='--', marker='s', ms=4, label=r'$fixed \, quantum \, \Delta=3$',capthick=2.0, capsize=3.0, markersize='5')
        #ax.plot(Ns, unumpy.nominal_values(eqLLs), color=colors[5], lw=1, ls='-', marker='s', ms=4, label=r'$fixed \, quantum \, \Delta =1$')

    
    pl.xlabel(r'$System \, size$')
    pl.ylabel(r'$\Delta LL$')
    ax.set_xlim([3,11])
    ax.set_yscale('log')
    lgd = pl.legend(loc = 'best')
    lgd.draggable(state=True)
    lgd.draw_frame(False)
    pl.tight_layout()
    pl.show()
Exemplo n.º 3
0
def main(): 
    parser = argparse.ArgumentParser(description='')
    parser.add_argument('--quant','-Q', help='Quantum training file',   nargs='+')
    parser.add_argument('--class','-C', help='Classical training file', nargs='+')

    args = vars(parser.parse_args())

    colors = ["#66CAAE", "#CF6BDD", "#E27844", "#7ACF57", "#92A1D6", "#E17597", "#C1B546"]
    fig = pl.figure(1, figsize=(10,5))
    pl.connect('key_press_event',kevent.press)
    ax  = pl.subplot(111)

    
    # ----------------------------------------------------------------------
    if 'class' in args.keys():
        cdata = np.zeros((5, len(args['class'])//5))
        ssizes = []
        i = -1
        for filename in args['class']:
            data = Hfile.cleanData(np.loadtxt(filename))
            
            cKL             = np.amin(data[:,1])
            fparams         = ssexyhelp.getReduceParamMap(filename)
            (bsize, seed)   = (int(fparams['ssise']), int(filename[:-4].split('_')[-1]))
            
            if not(bsize in ssizes): 
                i += 1
                ssizes += [bsize]
            cdata[seed, i] = cKL  
        
        cKLs = np.sum(cdata, axis = 0)
        ax.plot(ssizes, cKLs, color=colors[1], lw=1, ls='-', label=r'$classical$')

    # ----------------------------------------------------------------------
    if 'quant' in args.keys():
        qdata = np.zeros((5, len(args['quant'])//5))
        ssizes = []
        i = -1
        for filename in args['quant']:
            data = cleanData(np.loadtxt(filename))
            
            qKL             = np.amin(data[:,1])
            fparams         = ssexyhelp.getReduceParamMap(filename)
            (bsize, seed)   = (int(fparams['ssise']), int(filename[:-4].split('_')[-1]))
            
            if not(bsize in ssizes): 
                i += 1
                ssizes += [bsize]
            qdata[seed, i] = qKL  

        qKLs = np.sum(qdata, axis = 0)
        ax.plot(ssizes, qKLs, color=colors[2], lw=1, ls='-', label=r'$quantum$')


    
    pl.xlabel(r'$Training \, sample \, size$')
    pl.ylabel(r'$KL-divergence$')
    lgd = pl.legend(loc = 'best')
    lgd.draggable(state=True)
    lgd.draw_frame(False)
    pl.tight_layout()
    pl.show()
Exemplo n.º 4
0
def main(): 
    parser = argparse.ArgumentParser(description='')
    parser.add_argument('--data', '-D', help='Data file',         type=str)
    parser.add_argument('--inter','-I', help='Interactions file', type=str)
    parser.add_argument('--train','-T', help='Training file',     type=str)

    args = vars(parser.parse_args())

    # ----------------------------------------------------------------------
    data = np.loadtxt(args['data'], dtype='int32')
    udata = []
    cdata = collections.OrderedDict()
    for i,a in enumerate(data):
        d = a.tolist()
        if not(d in udata): udata += [d]; cdata[repr(d)]  = 1
        else:                             cdata[repr(d)] += 1
    weights = np.array(cdata.values())/float(data.shape[0])
    data    = udata
    
    eweights = np.zeros(2**len(udata[0]))
    for i,cbits in enumerate(data):
        d = toDecimal(cbits)
        eweights[d] = weights[i]

    #sortind = [i[0] for i in sorted(enumerate(data), key=HammingDistance1)]
    #sortind  = np.argsort(weights)
    #weights = weights[sortind]
    #data    = (np.array(data)[sortind]).tolist()
    #for v in data:
    #    print v, HammingDistance(v)
    #colors = ["#66CAAE", "#CF6BDD", "#E27844", "#7ACF57", "#92A1D6", "#E17597", "#C1B546"]
    fig = pl.figure(1, figsize=(13,6))
    pl.connect('key_press_event',kevent.press)
    ax  = pl.subplot(111)
    #ax.plot( np.sum(-(data*2-1), axis=0)/(1.0*data.shape[0]))
   
    if ((args['inter'] != None) and (args['train'] != None)):
        # ----------------------------------------------------------------------
        Hs, Ds, Js, bonds = Hfile.LoadInters(args['inter'])
        
        # ----------------------------------------------------------------------
        headers = Hfile.getHeaders(args['train'])
        tdata = Hfile.cleanData(np.loadtxt(args['train']))
        Hs = tdata[:, headers.index('H0')    :headers.index('D0')]     
        Ds = tdata[:, headers.index('D0')    :headers.index('J(0,1)')]     
        Js = tdata[:, headers.index('J(0,1)'):headers.index('<Z0>')]     

        # ----------------------------------------------------------------------
        (Ns, Nb) = (Hs.shape[1], len(bonds)) 

        norm = mpl.colors.Normalize(vmin=0, vmax=tdata.shape[0])
        c_m = mpl.cm.cool
        s_m = mpl.cm.ScalarMappable(cmap=c_m, norm=norm)
        s_m.set_array([])

        for i in range(tdata.shape[0]):
            ds = np.transpose(np.vstack((np.arange(Ns), Ds[i,:])))
            hs = np.transpose(np.vstack((np.arange(Ns), Hs[i,:])))
            js = np.hstack((bonds, Js[i,:].reshape(Nb,1)))

            #Ps = []
            #kwargs = {'X': ds, 'Z1': hs, 'Z2': js}
            #BM = bmachine.BoltzmannMachine(Ns, 1.0, **kwargs)
            #for cbits in data:
            #    BM.setProjector(cbits)
            #    Ps += [BM.evaluateProjector()]
            #del BM
            #ax.plot(-weights*np.log(Ps), color=s_m.to_rgba(i), lw=1, ls='-')#            Ps = []
    
            kwargs = {'X': ds, 'Z1': hs, 'Z2': js}
            BM = bmachine.BoltzmannMachine(Ns, 1.0, **kwargs)
            Ps = np.zeros(2**len(udata[0]))
            for cbits in data:
                BM.setProjector(cbits)
                d = toDecimal(cbits)
                Ps[d] = BM.evaluateProjector()
            del BM
            ax.plot(-eweights*np.log(Ps), color=s_m.to_rgba(i), lw=1, ls='-')#, label = r'$epoch \, %d$' %i)

        plt.colorbar(s_m)
    ax.plot(-eweights*np.log(eweights), color='black', lw=2, ls='-', label = r'$data$')
    #ax.plot(-weights*np.log(weights), color='black', lw=2, ls='-', label = r'$data$')
    pl.xlabel(r'$Data$')
    pl.ylabel(r'$P_{data}\log P_{model}$')
    lgd = pl.legend(loc = 'best')
    lgd.draggable(state=True)
    pl.tight_layout()
    pl.show()