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