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('--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()