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