import pylab

filename_list=["from-niflheim/tutorial-calcs/gatescan.hdf5"]#, "gatescan_TS_du.hdf5"]
line_type=["-"]#,"or-",]
pos_labels=numpy.arange(0.0,1.0,0.1)
neg_labels = numpy.flipud(-0.1*numpy.arange(1,6,1))
label = numpy.append(neg_labels, pos_labels)

print(label)

# Figure filename
fig_name = "edp-vs-gate_bias.png"

# Gate voltage list
gate_voltage_list = numpy.arange(-0.5,1.0,0.1)

#print len(gate_voltage_list)

num_plots = 15
colormap = pylab.cm.gist_ncar
#pylab.gca().set_color_cycle([colormap(i) for i in numpy.linspace(0, 0.9, num_plots)])
pylab.gca().set_prop_cycle(pylab.cycler('color', pylab.cm.jet(numpy.linspace(0, 1, num_plots))))

for index,filename in enumerate(filename_list):
    avg_edd_list = []
    # Read the transmission spectra
    edp_list = nlread(filename,ElectrostaticDifferencePotential)
    [pos_edp_list,neg_edp_list] = numpy.split(edp_list,[10])
    neg_edp_list = numpy.flipud(neg_edp_list[1:])
    edp_list = numpy.append(neg_edp_list,pos_edp_list)
    n = len(edp_list)
    print(n)
    print(len(pos_edp_list))
    print(len(neg_edp_list))

    # Calculate the current and convert the units in A/m, considering the width of the device
    # in the periodic direction of (B) of 4.28387 Ang
    for i in range(n):
        if i % 2 is 0:
            avg_edp = edp_list[i].axisProjection('average', 'c')
            c_values = numpy.array(range(len(avg_edp[1])))/float(len(avg_edp[1]))
            pylab.plot(c_values, avg_edp[1], line_type[0], label=str(label[i])+' V')
        else:
            avg_edp = edp_list[i].axisProjection('average', 'c')
            c_values = numpy.array(range(len(avg_edp[1])))/float(len(avg_edp[1]))
            pylab.plot(c_values, avg_edp[1], line_type[0])

    # Plot in a semi-logarithmic  scale
    

# Set plot properties
pylab.xlabel('c')
pylab.ylabel('$\Delta V_E$ (eV)')

pylab.xlim([0,1])
pylab.grid(True)
pylab.legend(loc='upper left')
pylab.title("ElectrostaticDifferencePotential vs Gate Bias")

pylab.savefig(fig_name)
pylab.show()
