# 'legend.fontsize': 14, # 8 # 'font.size': 14, # 8 # 'xtick.labelsize': 14, # 8 # 'ytick.labelsize': 14, # 8 # 'lines.markersize': 16, # 8 # 'savefig.bbox': 'tight', # tight # 'savefig.pad_inches': 0.1, # 0.1 # 'text.usetex': True, # 'font.family': 'serif', # 'text.latex.preamble' : [r'\usepackage{amsmath}'], # 'figure.figsize': (10, 7)} # (3.5, 2.5) default # rcParams.update(plot_params) i=10 stri = str(i) IO.go_to_data_parent('interpolatedboson/a'+stri) IO.add_to_path() state = IO.get_state() Ls = range(9, 11, 1) L_min, L_max = min(Ls), max(Ls) shift_func = lambda L: 0.1 if L==9 else -0.15 #shift_func = lambda L: 0.2*(L-L_max)/(L_max - L_min) #shift_func = lambda L: 0 params = IO.Params.kw('LKN', L=Ls, K=[0], N=[0]) for p in params: run.create_edge_spectrum(state, p, overwrite=False) spectrum = pp.load_edge_spectrum(state, Ls) spectrum = pp.shift_boson_number(spectrum)
# coding: utf-8 from PEPS import mps_tools from __future__ import division import math import numpy as np from PEPS import IO_helper as IO IO.go_to_data_parent('softcoreboson') IO.add_to_path() state = IO.get_state() mps = mps_tools mps.example_SPT_calc() L=3 p=2 edge_d=2 #lcst = get_left_canonical_site_tensor(statename='hardcoreboson', L=L) gcst, Lambda, V_basis_change = mps.get_canonical_site_tensor(statename='hardcoreboson', L=L) p_dim, bond_dim, _ = gcst.shape reload(mps) L=3 p=2 edge_d=2 #lcst = get_left_canonical_site_tensor(statename='hardcoreboson', L=L) gcst, Lambda, V_basis_change = mps.get_canonical_site_tensor(statename='hardcoreboson', L=L) p_dim, bond_dim, _ = gcst.shape #print rhoL XHC = np.array([[0, 1], [1, 0]]) ZHC = np.array([[1, 0],[0,-1]]) ZSC = np.array([[1, 0, 0, 0],[0,-1, 0, 0],[0,0, 1, 0],[0,0, 0, -1]]) Id = np.identity(p_dim)
cax10 = divider10.append_axes("right", size="5%", pad=0) divider11 = make_axes_locatable(ax11) cax11 = divider11.append_axes("right", size="5%", pad=0) L = 8 radius1 = radius2 = 5.0 hexradius1 = hexradius2 = 4.2 # radius1 = radius2 = 14.0 # hexradius1 = hexradius2 = 13.5 circle_size = "radius" ## Left two plots for softcoreboson IO.go_to_data_parent("softcoreboson", parent="Data//FBI-TM") params = IO.Params.kw("LKN", L=[L], K=[0], N=[0]) param = next(iter(params)) corrmap, corrmap_string = plot.load_combined_corrmap(param, ("bdag", "b")) hexcorrmap = hexplot.convert_zigzag_dict_to_hex( corrmap, L, [p for p, dist in hexplot.Hex(-1, 2).disc(radius=radius1) if p.sub != "C"] ) hexcorrmap = {k: np.real(v).item() for k, v in hexcorrmap.items()} p = hexplot.hex_circle_plot( hexcorrmap, hexlattice_radius=hexradius1, cmap=hexplot.cmap_seq, ax=ax00, circle_size=circle_size, scale=1,
import numpy as np from matplotlib import pyplot as plt from DataAnalysis import PEPS_plots as pp from PEPS import spectra_analyzer as spec from PEPS.CylinderPEPS import run from PEPS import analysis from PEPS import IO_helper as IO import sfig i=10 stri = str(i) IO.go_to_data_parent('interpolatedboson/a'+stri) IO.add_to_path() state = IO.get_state() Ls = range(2, 11) params = IO.Params.kw('LKN', L=Ls, K=[0], N=[0]) for p in params: run.create_edge_spectrum(state, p, overwrite=False) def entanglement_entropy(es): return sum(-v * np.log2(v) for v in es if not np.isclose(v, 0)) entropy = [] for p in params: spec = run.load_edge_spectrum(state, p, evecs=False) es = [spec_pnt[1] for spec_pnt in spec] entropy.append(entanglement_entropy(es)) entropy = np.real(entropy)
from matplotlib.backends.backend_pdf import PdfPages from DataAnalysis import data from DataAnalysis import PEPS_plots as pp import numpy as np from matplotlib import pyplot as plt from PEPS import IO_helper as IO from PEPS import spectra_analyzer as spec from PEPS.CylinderPEPS import run show_fit_details = True show_legend = True ############ Go to state data i = 10 stri = str(i) IO.go_to_data_parent("interpolatedboson/a" + stri) IO.add_to_path() state = IO.get_state() Ls = range(2, 11, 2) L_min, L_max = min(Ls), max(Ls) shift_func = lambda L: 0.3 * (L - L_max - 1) / (L_max - L_min) # if needed create edge spectrum params = IO.Params.kw("LKN", L=Ls, K=[0], N=[0]) for p in params: run.create_edge_spectrum(state, p, overwrite=False) # load and prepare spectrum spectrum = pp.load_edge_spectrum(state, Ls) spectrum = pp.shift_boson_number(spectrum) spectrum.add_as_prop(pp.energy, val="val")
from DataAnalysis import data from DataAnalysis import PEPS_plots as pp import numpy as np from matplotlib import pyplot as plt from PEPS import IO_helper as IO from PEPS import spectra_analyzer as spec from PEPS.CylinderPEPS import run from collections import OrderedDict show_fit_details = False show_legend = True ############ Go to state data i=10 stri = str(i) IO.go_to_data_parent('interpolatedboson/a'+stri) IO.add_to_path() state = IO.get_state() Ls = range(2, 11, 2) L_min, L_max = min(Ls), max(Ls) shift_func = lambda L: 0.3*(L-L_max-1)/(L_max - L_min) # if needed create edge spectrum params = IO.Params.kw('LKN', L=Ls, K=[0], N=[0]) for p in params: run.create_edge_spectrum(state, p, overwrite=False) # load and prepare spectrum spectrum = pp.load_edge_spectrum(state, Ls) spectrum = pp.shift_boson_number(spectrum) spectrum.add_as_prop(pp.energy, val='val')
# coding: utf-8 from __future__ import division from DataAnalysis import data from DataAnalysis import PEPS_plots as pp import numpy as np from matplotlib import pyplot as plt from PEPS import IO_helper as IO from PEPS import spectra_analyzer as spec from PEPS.CylinderPEPS import run #IO.go_to_data_parent('rotated_softcoreboson') state = IO.get_state() params = IO.Params.kw('LKN', L=[1,2, 3], K=[0], N=[0]) for p in params: run.create_edge_spectrum(state, p) reload(run) params = IO.Params.kw('LKN', L=[1,2, 3], K=[0], N=[0]) for p in params: run.create_edge_spectrum(state, p) def rotated_state_params(Ls): params = data.pdict.kw('LKN', L = Ls, K = range(max(Ls)), N = range(-max(Ls), max(Ls)+1)) K_lt_L = lambda p: p['K']<p['L'] N_le_L = lambda p: -p['L'] <= p['N'] <= p['L'] params.add_constraints([K_lt_L, N_le_L]) return params Ls = [1, 2, 3] L_min = min(Ls) L_max = max(Ls) params = rotated_state_params(Ls) spectrum = data.ParametrizedDataSet(params)
from matplotlib import rcParams rcParams.update({'figure.figsize':(5.3, 4)}) Ls = range(2, 9) scale = 0 L_min = min(Ls) L_max = max(Ls) # from PEPS.CylinderPEPS import run # run.go_diag_sectors(8, 8, sectors=[[0,1], [1,1]]) # run.go_diag_sectors(5, 5, sectors=[[0,1], [1,1]]) # run.go_diag_sectors(5, 5, sectors=[[0,1], [1,1]], overwrite=True) #pp.IO.go_to_data_parent('interpolatedboson/a0') IO.go_to_data_parent('softcoreboson') IO.add_to_path() state = IO.get_state() spectrum = pp.load_transfer_matrix_spectrum(state, Ls) pp.shift_and_scale(spectrum, scale) spectrum = spectrum.filter([lambda p:(0<=p['K']<4 and 0<=p['N']<4)], [lambda band:band<=1], band='band') spec_points = spectrum.collect(['K', 'N', 'band'], 'L', 'E') # ParametrizedDataSet with K, N, band as parameters spec_points.plot_toolbox = pp.data.SpectraPlotTools() spec_points.plot_toolbox.markers = ['1', '2', '3', '4'] spec_points.update_plot_args(title='Transfer Matrix Spectrum', xlabel='K', ylabel='Inverse Correlation Length -log(|T|) = 1/$\\xi$', xlim=[-0.5, 2.1], ylim=[-0.1, 2.1], ls = ':', markersize=8)
from __future__ import division from matplotlib import pyplot as plt import numpy as np from DataAnalysis import PEPS_plots as pp from PEPS import IO_helper as IO from PEPS.CylinderPEPS import run import sfig ev_to_corr = lambda e: -1/np.log(np.abs(e)) phase = lambda e: 'e^(i pi {})'.format(IO.round_sig(np.angle(e)/np.pi, 2)) def corrbound_data(state, Ls): ans = {} for L in Ls: tmspec = run.load_transfer_matrix_spectrum(state, L) if tmspec: norm = tmspec[(0, 0)][0] ev1 = tmspec[(0, 1)][0]/norm if L>1: symev00 = tmspec[(0, 0)][1]/norm symev10 = tmspec[(1, 0)][0]/norm #K=+-1, N=0 ev is bigger than K=0, N=0 sometimes print abs(symev00), abs(symev10) symev = symev00 if abs(symev00)>abs(symev10) else symev10 #symev = symev00 else: symev00 = tmspec[(0, 0)][1]/norm symev = symev00 ans[L] = ev_to_corr(ev1), phase(ev1), ev_to_corr(symev), phase(symev) return ans IO.go_to_data_parent('softcoreboson', parent='Data//FBI-TM')
# coding: utf-8 get_ipython().system(u'explorer .') from __future__ import division from DataAnalysis import data from DataAnalysis import PEPS_plots as pp import numpy as np from matplotlib import pyplot as plt from PEPS import IO_helper as IO from PEPS import spectra_analyzer as spec from PEPS.CylinderPEPS import run IO.go_to_data_parent('armchair_softcoreboson') state = IO.get_state() params = IO.Params.kw('LKN', L=[1,2, 3], K=[0], N=[0]) from PEPS import spectra_analyzer as spec def armchair_state_params(Ls): params = data.pdict.kw('LKN', L = Ls, K = range(max(Ls)), N = range(-max(Ls), 2*max(Ls)+1)) K_lt_L = lambda p: p['K']<p['L'] N_le_2L = lambda p: -p['L'] <= p['N'] <= 2*p['L'] params.add_constraints([K_lt_L, N_le_2L]) return params Ls = [1, 2, 3] params = armchair_state_params(Ls) spectrum = data.ParametrizedDataSet(params) for L in Ls: edge_spectrum_list = run.load_edge_spectrum(state, data.OrderedDict(zip(['L', 'K', 'N'], [L, 0, 0]))) edge_spectrum_dict = spec.collect_spectrum_points(edge_spectrum_list) for K, N in edge_spectrum_dict: for indx, val in enumerate(edge_spectrum_dict[(K, N)]): spectrum.append(data.DataPoint(L=L, K=K, N=N, val=val, band=indx)) Ls = [1, 2, 3] params = armchair_state_params(Ls)
def go(L): #with PdfPages('L_10_all_mom_10.pdf') as pdf: ########################################################### #get state i=10 stri = str(i) IO.go_to_data_parent('interpolatedboson/a'+stri) IO.add_to_path() state = IO.get_state() Ls = [L] L_min, L_max = min(Ls), max(Ls) shift_func = lambda L: 0 ########################################################### #make edge spectrum if necessary params = IO.Params.kw('LKN', L=Ls, K=[0], N=[0]) for p in params: run.create_edge_spectrum(state, p, overwrite=False) ########################################################### #load and prepeare edge spectrum spectrum = pp.load_edge_spectrum(state, Ls) spectrum = pp.shift_boson_number(spectrum) spectrum.add_as_prop(pp.energy, val='val') data_name = 'energy' pp.shift_and_scale(spectrum, scale=0) #just shift data_name = 'E' all_points = list(spectrum.points()) spec_points = spectrum.collect(['K', 'N', 'band'], 'L', data_name) spec_points = spec_points.filter([lambda p: p['K']<=L/2]) spec_points.plot_toolbox = data.SpectraPlotTools() spec_points.plot_toolbox.markers = ['1', '2', '3', '4'] spec_points.update_plot_args(title='', xlabel='K', ylabel='Energy', xlim=[-0.5, 12], ylim=[-0.4, 6]) #even_colors = ['k', 'b', 'g', 'r', 'gold', 'orange', 'orangered', 'y','m', 'lime', 'c'] color_pairs = [('k', 'k'), ('b', 'c'),('g', 'lime'),('r', 'm'),('orange', 'orangered'),('gold', 'y')] colors = [c for cp in color_pairs for c in cp] def color_func(N): x=0 if N<0: x=1 if N%2==0: return abs(N)+x else: return abs(N)+1+4+x spec_points.plot_toolbox.colors = colors spec_points.plot_toolbox.color_func = color_func ########################################################### #make plot if makelegend: xlim=[-0.5, np.floor(L/2)+1.1] else: xlim=[-0.5, np.floor(L/2)+.5] fig, spec_ax = spec_points.plot_toolbox.spec_plot(spec_points, data_name, shift_func=shift_func, copy_points=True,xlim=xlim, legend=None) # if i!=10 and i!=0: # plt.title('Entanglement Spectrum for b=0.'+stri) # elif i==10: # plt.title('Entanglement Spectrum for soft-core state') # elif i==0: # plt.title('Entanglement Spectrum for hard-core FBI') if L==10: plt.ylabel('Entanglement Energy') if L==9: plt.ylabel('') ax = plt.gca() Ks = np.arange(0, np.floor(L/2+1)) ax.set_xticks(Ks) if L==10: ax.set_xticklabels(['0', '$\pi/5$', '$2\pi/5$', '$3\pi/5$', '$4\pi/5$', '$\pi$']) if L==9: ax.set_xticklabels(['0', '$2\pi/9$', '$4\pi/9$', '$6\pi/9$', '$8\pi/9$']) #ax.set_xticklabels(['$2\pi'+str(K)+'/'+str(L)+'$' if K in [1for K in Ks]) ax.yaxis.tick_left() ax.xaxis.tick_bottom() if makelegend: handles, labels = ax.get_legend_handles_labels() hl = sorted(zip(handles, labels), key= lambda x: abs(int(x[1]))) handles2, labels2 = zip(*hl) def label_helper(string_representing_integer): i = int(string_representing_integer) if not i%2: if i<=0: return str(i//2) else: return '+'+str(i//2) else: if i<=0: return str(i)+'/2' else: return '+'+str(i)+'/2' labels3 = [label_helper(l) for l in labels2] if L==9: legendloc = (0.8, 0.15) if L==10: legendloc = (0.825, 0.15) leg=ax.legend(handles2, labels3, loc = legendloc, numpoints=1, frameon=False, labelspacing=0.25)