def plotPotential(system, fftype, ax, window, doLegend = False, doXLabel = False, doYLabel = False, doXTickLabel = False):
	r_AA, pot_AA = getPotential(system, 'AA', fftype)
	r_SP, pot_SP = getPotential(system, 'SP', fftype)
	r_SPLD, pot_SPLD = getPotential(system, 'SPLD', fftype)
	ax.plot(r_AA, pot_AA , 'r-', label = r'$u_{\mathrm{AA}}$')
	ax.plot(r_SP, pot_SP, 'b-', label = r'$u_{\mathrm{pair, SP}}$')
	ax.plot(r_SPLD, pot_SPLD, 'g-', label = r'$u_{\mathrm{pair, SPLD}}$')
	ax.plot(np.linspace(window[0], window[1], 20), np.zeros(20), 'k--', linewidth = 2)
	ax.set_xlim([window[0], window[1]])
	ax.set_ylim([window[2], window[3]])
	setup.prune(ax, nbins = 6)
	if doLegend: ax.legend(loc = 'best')
	if doXLabel: ax.set_xlabel('r' + setup.Angstrom1)
	if doYLabel: ax.set_ylabel('potential ' + setup.energy)
	if not doXTickLabel: plt.setp(ax.get_xticklabels(), visible=False)
fig = plt.figure(figsize=(4, 3))
ax = fig.add_subplot(1, 1, 1)
styles = {'AA': 'ro', 'SP': 'b-', 'SPLD': 'k-'}
cgtypes = ['SP', 'SPLD']

for i, rho in enumerate(rhos):
    for j, cgtype in enumerate(cgtypes):
        prefix = os.path.join(data_dir, 'R%dT%d_%s' % (rho, temp, cgtype))
        histfile = pp.parseFileNames(prefix)[1]
        hist = pp.parseHist(histfile)['LD']
        r_t = hist[0]
        h_t = hist[1]
        r_m = hist[2]
        h_m = hist[3]
        if j == 0: ax.plot(r_t + 20 * i, h_t, styles['AA'], label='AA')
        ax.plot(r_m + 20 * i, h_m, styles[cgtype], label=cgtype)
        if i == 0: leg = ax.legend()

# design
ax.set_xlabel(r'$r(\AA)$')
ax.set_ylabel('local density')
setup.prune(ax)

# annotation
ax.annotate('300K', xy=(40, 0.30))

# save figure
plt.savefig('TIP4P_ld_dist.%s' % setup.params['savefig.format'])

if setup.showPlots: plt.show()
        err[i] = np.sqrt(4*rsq*var_r) # Error propagation rules for products of random variables
        Rsq_avgerr += err[i]/rsq

Rsq_avgerr /= len(LDCuts_2)
file('errbar.dat', 'a').write('\n Rsq avg. error = %g %%\n' % Rsq_avgerr)


######################## PLOTTING ############################
# srel_rc plot and design
fig = plt.figure(figsize = (setup.set_width('single'),2.8*2))
ax1 = fig.add_subplot(2,1,1)
ax1.errorbar(LDCuts_1, srel, yerr = err_delta, color = 'black', fmt = '--o', linewidth = 1, markersize = 3)
ax1.plot(LDCuts_1, srel, 'k-')
for i, p in enumerate(crit_points): ax1.plot(p, crit_srel[i], 'ro', markersize = 3, markerfacecolor = 'k', markeredgecolor = 'r', markeredgewidth = 1)
ax1.set_ylabel('$S_{rel}$')
setup.prune(ax1, nbins = 6)
if system == 'methane25':
        ax1.set_ylim([-0.92,0.2])
        ax1.annotate(r'$r_c = 6$' + setup.Angstrom2, xy = (6.0, -0.75), fontsize = 10)
        ax1.annotate(r'$r_c = 7.8$' + setup.Angstrom2, xy = (7.8, -0.86), fontsize = 10)
else:
        ax1.annotate(r'$r_c = 6.5$' + setup.Angstrom2, xy = (6.1, -0.117), fontsize = 10)
        ax1.annotate(r'$r_c = 7.8$' + setup.Angstrom2, xy = (8.0, -0.15), fontsize = 10)

# corrcoeff plot and design
ax2 = fig.add_subplot(2,1,2, sharex = ax1)
ax2.plot(LDCuts_2, Rsq, 'k-')
ax2.errorbar(LDCuts_2, Rsq, yerr = err, color = 'k', fmt = '--o', linewidth = 1.5, markersize = 3)
ax2.plot(LDCuts_2, Rsq, 'k-')
ax2.plot(6.5*np.ones(21), np.linspace(0, Rsq.max(), 21), 'k--', linewidth = 1, markersize = 3)
ax2.plot(6.5, 0, 'ko')
rho, pot = pp.parseLog(sumfile)['LD']
rholist = rho.tolist()

# start potential from zero
pot-= pot[0]
start = [rholist.index(x) for x in rholist if rholist.__contains__(x) and x >=1.][0]

# normalized f(rho)
fig1 = plt.figure(figsize = (setup.set_width('single'),2.8))	
ax1 = fig1.add_subplot(1,1,1)
ax1.plot(rho, pot, 'r-')

# normalized f(rho)/rho
fig2 = plt.figure(figsize = (setup.set_width('single'),2.8))
ax2 = fig2.add_subplot(1,1,1)
ax2.plot(rho, pot/rho, 'r-')


# Design
ax1.set_ylim([-2.5, 0.7])
for ax in [ax1,ax2]: setup.prune(ax, nbins = 8)
ax1.set_xlabel('local density of methane')
ax1.set_ylabel('potential ' + r'$(kcal/mol)$')
ax2.set_xlabel('local density of methane ' + r'$(\rho)$')
ax2.set_ylabel(r'$\frac{f(\rho)}{\rho}$' + ' ' + r'$(kcal/mol)$')


# save figure
setup.showPlots = True
if setup.showPlots: plt.show()
	avgerr += err[i]/rsq

avgerr /= len(LDCuts)
file('errbar.dat', 'a').write('\n Rsq avg. error = %g %%\n' % avgerr)

# master plot and design
fig = plt.figure(figsize = (setup.set_width('single'),3))
ax = fig.add_subplot(1,1,1)
ax.plot(LDCuts, Rsq, 'k-')
ax.errorbar(LDCuts, Rsq, yerr = err, color = 'k', ecolor = 'k')
ax.plot(6.5*np.ones(21), np.linspace(0, Rsq.max(), 21), 'k--', linewidth = 1, markersize = 3)
ax.plot(6.5, 0, 'ko')
ax.set_xlabel(r'$r_c$' + setup.Angstrom1)
ax.set_ylabel(r'$R^2$')
ax.set_ylim([0., 0.45])
setup.prune(ax, nbins = 6)

# inset plot and design
setup.params['xtick.labelsize'] = 6 ; setup.params['ytick.labelsize'] = 6
matplotlib.rcParams.update(setup.params)
ax_inset = fig.add_axes([0.74, 0.735, 0.2, 0.2])
ax_inset.plot(ld, fsw ,'rx', markersize = 1)
ax_inset.plot(ld, slope*ld+intercept, 'k-', linewidth = 1)
ax_inset.set_xlabel('monomer\ndensity', fontsize = 10)
ax_inset.set_ylabel('water\ndensity', fontsize = 10)
ax_inset.set_xlim([5,25]); ax_inset.set_ylim([0, 30])
setup.prune(ax_inset, nbins = 6)

# annotation
ax.annotate(r'$r_c = 6.5$' + setup.Angstrom2, xy = (6.6, 0.015))
ax_inset.annotate(r'$R^2 = $' + '%1.2f' % maxcoeff, xy = (7.1,21), fontsize = 7, fontweight = 'bold') 
import matplotlib.pyplot as plt 
import matplotlib
from matplotlib.ticker import FixedLocator
import numpy as np
import sys

sys.path.append('../')
import setup
matplotlib.rcParams.update(setup.params)

x = [0,1,2,3,20,21,22,23,24,25]
y = [0.,1.0, 0.,0., 0.1, 0.15, 0.2, 0.3, 0.22, 0.08]

fig = plt.figure(figsize = (setup.set_width('single'), 2.5))
ax1 = fig.add_subplot(1,2,1)
ax2 = fig.add_subplot(1,2,2, sharey = ax1)
ax1.plot(x,y) ; ax2.plot(x,y)
ax1.set_xlim([0, 2]); ax2.set_xlim([20,25])

#ax1.set_ylim([0, 1.2]) ; ax2.set_ylim([0., 0.3])

setup.prune(ax1, nbins = 5) ; setup.prune(ax2, nbins = 5)
ax1.spines['right'].set_visible(False)
ax2.spines['left'].set_visible(False)
ax1.tick_right()

plt.show()
p = p1+p2+p3
labels = [this_p.get_label() for this_p in p]
if system == 'methane25': loc = 1
else: loc = 1
axL.legend(p, labels, loc = loc)

# Design
if system == 'c25': 
        mon = 'monomer'
        axR.set_ylim([0, 0.15])
        axL.set_ylim([-1.2, 0.1])
        axL.set_xlim([0, 24])
else: 
        mon = 'methane'
        axL.set_ylim([-1.6, 0.7])
for ax in [axL,axR]: setup.prune(ax, nbins = 6)
axL.set_xlabel('local density of %s' % mon)
axL.set_ylabel('potential ' + setup.energy)
axR.set_ylabel('distribution')
axL.yaxis.label.set_color('red'); axR.yaxis.label.set_color('blue')
axRFormat = FormatStrFormatter('%1.2f')
axR.yaxis.set_major_formatter(axRFormat)

# save figure
if system == 'c25': figname = 'c25_ld_dist_%s_%g.%s' % (fftype, LDCut, setup.params['savefig.format'])
else: figname = 'methane25_ld_dist_%s_%g.%s' % (fftype, LDCut, setup.params['savefig.format'])

fig.savefig(figname)

if setup.showPlots: plt.show()
Example #8
0
cgtypes = ['AA', 'SP', 'SPLD', 'LD']
styles = ['ro', 'k:', 'k-', 'k--']
fig = plt.figure(figsize = (setup.set_width('single'),2.8))
ax = fig.add_subplot(1,1,1)
for i, cgtype in enumerate(cgtypes):
        pickleName = os.path.join(data_dir, '%s_%s_%s.pickle' % (prop, fftype, cgtype))
        bin_centers, bin_vals = pickle.load(open(pickleName, 'r'))
        ax.plot(bin_centers, bin_vals, styles[i], label = cgtype)

# design
if prop == 'kappa': ax.set_xlim([0,0.3])
elif prop == 'Rg': ax.set_xlim([3,6.])

units = {'Rg': setup.Angstrom1, 'R_EE': setup.Angstrom1, 'kappa': '', 'SASA_atom': r'$\left(\mathrm{\AA}^2\right)$'}
prop_labels = {'Rg': r'$Rg$', 'R_EE': r'$R_{EE}$', 'kappa': r'$\kappa$', 'SASA_atom': r'$SASA \Big/ atom$'}
ax.set_xlabel(prop_labels[prop] + ' ' + units[prop])
ax.set_ylabel('distribution')
setup.prune(ax, nbins = 6)
if makeLegend: ax.legend()

# JCP_reviewer_suggestion
if prop == 'SASA_atom':
	ax.yaxis.set_major_formatter(FormatStrFormatter('%1.2f'))
	setup.prune(ax, nbins = 5)

# save figure
plt.savefig('c25_%s_%s_%g.%s' % (prop, fftype, LDCut, setup.params['savefig.format']))

if setup.showPlots: plt.show()
	                  
	z = gaussian_filter(z_raw, sigma = smoothing_level[fftype])
	im2 = ax[i].contour(z, levels = levels, colors = contour_clr[cgtype], origin = 'lower', aspect = 'auto',
	                    interpolation = 'none', extent = [MIN_X, MAX_X, MIN_Y, MAX_Y])

	# superimpose AA contours on CG contours - request by JCP reviewer
	if cgtype == 'AA': AAdata = {'z': z, 'MAX_X': MAX_X, 'MIN_X': MIN_X, 'MAX_Y': MAX_Y, 'MIN_Y': MIN_Y}

	if not cgtype == 'AA':
		im3 = ax[i].contour(AAdata['z'], levels = levels, colors = contour_clr['AA'], origin = 'lower', aspect = 'auto',
						    interpolation = 'none', extent = [MIN_X, MAX_X, MIN_Y, MAX_Y])

	                	   	
# Design
for i in range(4): 
        setup.prune(ax[i], nbins = 6)
        if fftype == 'wca':
                ax[i].set_xlim([3.48,5.2])
                ax[i].set_ylim([4.0,9.2])
        if fftype == 'lj': 
                ax[i].set_xlim([3.48, 5.5])
                ax[i].set_ylim([4, 9.8])
        
ax[0].set_xticklabels([]); ax[1].set_xticklabels([])
ax[1].set_yticklabels([]); ax[3].set_yticklabels([])
ax[1].set_ylabel(''); ax[3].set_ylabel('')
plt.figtext(0.45, 0.0095, r'$Rg$' + setup.Angstrom1, fontsize = 10)
plt.figtext(0.00005, 0.55, r'$R_{EE}$' + setup.Angstrom1, fontsize = 10, rotation = 90)

# Annotation
lblpos = {'wca': [(4.4, 8.2), (4.0, 8.6), (4.6, 8.2), (4.6, 8)],
	        ind += 1
	      	      
#design
plt.figtext(0.5, 0.0005, prop_labels[prop] +' '+ units[prop] , fontsize = 10)
plt.figtext(0.0007, 0.65, 'distribution', fontsize = 10, rotation = 90)
for n, ax in enumerate(axs):
		ax.set_aspect('auto')
		ax.xaxis.labelpad = 0
		ax.yaxis.labelpad = 0
		if prop == 'Rg':
			nbins = 4
			if n == 0 or n == 5 or n == 10: ax.set_xlim([1, 4.0])
			if n == 1 or n == 6 or n == 11: ax.set_xlim([2.5, 5.5])
			if n == 2 or n == 7 or n == 12: ax.set_xlim([3., 5.])
			if n == 3 or n == 8 or n == 13: ax.set_xlim([3., 6.])
			if n == 4 or n == 9 or n == 14: ax.set_xlim([4., 6.5])
		elif prop == 'R_EE':
			nbins = 4
			if n == 5 or n == 10: ax.set_ylim([0., 0.4])
		else:
			nbins = 4

		setup.prune(ax = ax, nbins = nbins)
		if n == 0 or n == 5 or n == 10: ax.legend(loc = 'best')
		if n < 5: ax.set_title(clen[n])

# save figure
plt.savefig('rev_trans_%s_%s_%g.%s' % (prop, fftype, LDCut, setup.params['savefig.format']))

if setup.showPlots: plt.show()
cgtypes = ['AA', 'SP', 'SPLD']
styles = ['ro', 'k:', 'k-']

# plot and design of master 
fig = plt.figure(figsize = (setup.set_width('single'),2.8))
ax = fig.add_subplot(1,1,1)
for i, cgtype in enumerate(cgtypes):
        pickleName = '%s_%s.pickle' % (prefix, cgtype)
        data = pickle.load(open(pickleName, 'r'))
        bin_centers = data[0]; bin_vals = data[1]
        ax.plot(bin_centers, bin_vals, styles[i], label = cgtype)

ax.set_xlabel('size of methane cluster')
ax.set_ylabel('distribution')
ax.xaxis.set_major_formatter(FormatStrFormatter('%d'))
setup.prune(ax)
ax.legend()

# plot and design of inset
setup.params['xtick.labelsize'] = 6 ; setup.params['ytick.labelsize'] = 6
matplotlib.rcParams.update(setup.params)
ax_inset = fig.add_axes([0.5, 0.3, 0.3, 0.3])
for i, cgtype in enumerate(cgtypes):
        pickleName = '%s_%s.pickle' % (prefix, cgtype)
        data = pickle.load(open(pickleName, 'r'))
        bin_centers = data[0]; bin_vals = data[1]
        ax_inset.plot(bin_centers[-6:], bin_vals[-6:], styles[i])

ax_inset.xaxis.set_major_formatter(FormatStrFormatter('%d'))
setup.prune(ax = ax_inset, nbins = 4)
Example #12
0
data_dir = os.path.join(setup.data_dir, 'JCP_review_data')
Nmon = [25, 40, -1]
styles = {25: 'r-', 40: 'b-', -1: 'g-'}
lbls = {25: 'c25 AA', 40: 'c40 AA', -1: 'c40 SPLD'}


fig = plt.figure(figsize = (setup.set_width('single'),3))
ax = fig.add_subplot(1,1,1)

for n in Nmon:
	if n == -1: ldpickle = os.path.join(data_dir, 'c40_SPLD_ld.pickle')
	else: ldpickle = os.path.join(data_dir, 'c%d_ld.pickle' % n)
	r,g,e,f,x = pickle.load(open(ldpickle, 'r'))
	if n == 25: 
		r = r[:-4]
		g = g[:-4]
	ax.plot(r,g, styles[n], label = lbls[n])

ax.set_xlabel('local density of monomer')
ax.set_ylabel('distribution')
ax.legend(loc = 'best')

ax.set_xlim([0, 45])
ax.set_ylim([0, 0.12])
ax.yaxis.set_major_formatter(FormatStrFormatter('%1.2f'))
setup.prune(ax, nbins = 8)

figname = 'ld_comp.%s' % setup.params['savefig.format']
fig.savefig(figname)

plt.show()