def dos_graph_soc(rawdatadir, savedir): dosrun = Vasprun("{}/vasprun.xml".format(rawdatadir), soc=True, parse_dos=True) dos = dosrun.complete_dos orbitals = { "s": Orbital.s, "p_y": Orbital.py, "p_z": Orbital.pz, "p_x": Orbital.px, "d_xy": Orbital.dxy, "d_yz": Orbital.dyz, "d_z2-r2": Orbital.dz2, "d_xz": Orbital.dxz, "d_x2-y2": Orbital.dx2 } spinor_component = { "mtot": SpinNonCollinear.mtot, "mx": SpinNonCollinear.mx, "my": SpinNonCollinear.my, "mz": SpinNonCollinear.mz } for m in spinor_component: dosplot = DosPlotter() if m == "mtot": dosplot.add_dos("Total DOS with SOC", dos.tdos) dosplot.add_dos_dict(dos.get_element_dos()) plt = dosplot.get_plot(xlim=[-3, 3], soc=True, spinor_component=spinor_component[m], element_colors=True) plt.grid() plt.savefig("{}/DOSGraph_{}_{}".format(savedir, m, "DOS by Element with SOC")) plt.close() for m in spinor_component: dosplot = DosPlotter() if m == "mtot": dosplot.add_dos("Total DOS with SOC", dos.tdos) dosplot.add_dos_dict(dos.get_orbital_dos()) plt = dosplot.get_plot(xlim=[-3, 3], soc=True, spinor_component=spinor_component[m]) plt.grid() plt.savefig("{}/DOSGraph_{}_{}".format(savedir, m, "DOS by Orbital with SOC")) plt.close() # Get detailed info about band gap (source: vasprun.xml) dos_graph_soc.e_fermi = float(dosrun.efermi) dos_graph_soc.electronic_gap = \ dosrun.tdos.get_gap_alt(xlim=[-3,3],e_fermi=dos_graph_soc.e_fermi, tol=0.001,abs_tol=False, spin=SpinNonCollinear.mtot) return
def setUp(self): with open(os.path.join(PymatgenTest.TEST_FILES_DIR, "complete_dos.json"), encoding="utf-8") as f: self.dos = CompleteDos.from_dict(json.load(f)) self.plotter = DosPlotter(sigma=0.2, stack=True) warnings.simplefilter("ignore")
def plot_dos(args): v = Vasprun(args.filename[0]) dos = v.complete_dos all_dos = OrderedDict() all_dos["Total"] = dos structure = v.final_structure if args.site: for i in xrange(len(structure)): site = structure[i] all_dos["Site " + str(i) + " " + site.specie.symbol] = \ dos.get_site_dos(site) if args.element: syms = [tok.strip() for tok in args.element[0].split(",")] all_dos = {} for el, dos in dos.get_element_dos().items(): if el.symbol in syms: all_dos[el] = dos if args.orbital: all_dos = dos.get_spd_dos() plotter = DosPlotter() plotter.add_dos_dict(all_dos) if args.file: plotter.get_plot().savefig(args.file[0]) else: plotter.show()
def plot_dos_dict(complete_dos, d, xlim=(-3, 3), **kwargs): """ Plot DOS dict with pymatgen. The dict is most likely generated with the methods of the pymatgen CompleteDos class. Parameters ---------- complete_dos : CompleteDos object. d : TYPE Dict of DOS. xlim : (tuple), optional Limits for x axis. The default is (-3,3). **kwargs : (dict) Arguments for DosPlotter in pymatgen. Returns ------- plt : Matplotlib object. """ dos_plotter = DosPlotter(**kwargs) for k in d: dos_plotter.add_dos(k, d[k]) eg = complete_dos.get_gap() plt = dos_plotter.get_plot(xlim=(xlim[0], eg + xlim[1])) return plt
def get_dos_plot(args): """ Plot DOS. Args: args (dict): Args from argparse. """ v = Vasprun(args.dos_file) dos = v.complete_dos all_dos = OrderedDict() all_dos["Total"] = dos structure = v.final_structure if args.site: for i, site in enumerate(structure): all_dos["Site " + str(i) + " " + site.specie.symbol] = dos.get_site_dos(site) if args.element: syms = [tok.strip() for tok in args.element[0].split(",")] all_dos = {} for el, dos in dos.get_element_dos().items(): if el.symbol in syms: all_dos[el] = dos if args.orbital: all_dos = dos.get_spd_dos() plotter = DosPlotter() plotter.add_dos_dict(all_dos) return plotter.get_plot()
def setUp(self): with open(os.path.join(test_dir, "complete_dos.json"), "r", encoding='utf-8') as f: self.dos = CompleteDos.from_dict(json.load(f)) self.plotter = DosPlotter(sigma=0.2, stack=True) warnings.simplefilter("ignore")
def get_dos(self, dos): task_id = dos['task_id'] dos_obj = self.vaspdb.get_dos(task_id) energies = dos_obj.energies efermi = dos_obj.efermi gap = dos_obj.get_gap() densities_up = dos_obj.densities[Spin.up] densities_dn = dos_obj.densities[Spin.down] #densities = densities_up + densities_dn densities = dos_obj.get_densities() #print('Fermi energy: {}'.format(efermi)) #print('gap: {}'.format(gap)) tdos = np.vstack((energies, densities)) #print(tdos) #print(type(densities)) plotter = DosPlotter() # Adds a DOS with a label. #plotter.add_dos("Total DOS", dos) # Alternatively, you can add a dict of DOSs. This is the typical # form returned by CompleteDos.get_spd/element/others_dos(). #plotter.add_dos_dict({"dos1": dos1, "dos2": dos2}) dosplot = plotter.add_dos_dict(dos_obj.get_element_dos()) #dosplot = plotter.add_dos_dict(dos_obj.get_spd_dos()) #plotter.show() self.head = [ 'energies', 'total_dos', 'total_dos_spin_up', 'total_dos_spin_down' ] self.unit = ['eV', '', '', ''] self.data = np.vstack( (energies, densities, densities_up, -densities_dn)).T self.parameter = dos['input']['incar']
def get_odos(self, stack=True, xlim=[-10, 10], ylim=[0, 50], sigma=0.15): dos_vasprun = Vasprun(os.path.join(self.path, "vasprun.xml"), parse_projected_eigen=True) dos_data = dos_vasprun.complete_dos plotter = DosPlotter(stack=stack, sigma=sigma) o_dos = dos_data.get_spd_dos() plotter.add_dos_dict(o_dos) plotter.save_plot(f'{self.path}-odos.png', img_format=u'png', xlim=xlim, ylim=ylim)
def get_sdos(self, dos_dict, stack=True, xlim=[-10, 10], ylim=None, sigma=0.15): dos_vasprun = Vasprun(os.path.join(self.path, "vasprun.xml"), parse_projected_eigen=True) dos_data = dos_vasprun.complete_dos plotter = DosPlotter(stack=stack, sigma=sigma) edos = dos_data.get_element_dos() for key in dos_dict: if type(dos_dict[key]) is list: for index, item in enumerate(dos_dict[key]): if index == 0: temp = dos_data.get_site_dos(dos_data.structure[item]) else: temp = temp + dos_data.get_site_dos(dos_data.structure[item]) plotter.add_dos(key, temp) elif type(dos_dict[key]) is str: temp = edos[Element(dos_dict[key])] plotter.add_dos(key, temp) elif type(dos_dict[key]) is int: temp = dos_data.get_site_dos(dos_data.structure[dos_dict[key]]) plotter.add_dos(key, temp) else: print('Warning: invalid value') if ylim is not None: plotter.save_plot(f'{self.path}-dos.png', img_format=u'png', xlim=xlim, ylim=ylim) else: plotter.save_plot(f'{self.path}-dos.png', img_format=u'png', xlim=xlim)
def main(): parser = argparse.ArgumentParser( description='''Convenient DOS Plotter for Feff runs. Author: Alan Dozier Version: 1.0 Last updated: April, 2013''') parser.add_argument('filename', metavar='filename', type=str, nargs=1, help='ldos%% file set to plot') parser.add_argument('filename1', metavar='filename1', type=str, nargs=1, help='feff.inp input file ') parser.add_argument('-s', '--site', dest='site', action='store_const', const=True, help='plot site projected DOS') parser.add_argument('-e', '--element', dest='element', action='store_const', const=True, help='plot element projected DOS') parser.add_argument('-o', '--orbital', dest="orbital", action='store_const', const=True, help='plot orbital projected DOS') args = parser.parse_args() f = LDos.from_file(args.filename1[0], args.filename[0]) dos = f.complete_dos all_dos = OrderedDict() all_dos['Total'] = dos structure = f.complete_dos.structure if args.site: for i, site in enumerate(structure): all_dos['Site ' + str(i) + " " + site.specie.symbol] = \ dos.get_site_dos(site) if args.element: all_dos.update(dos.get_element_dos()) if args.orbital: all_dos.update(dos.get_spd_dos()) plotter = DosPlotter() plotter.add_dos_dict(all_dos) plotter.show()
def plot_dos(vasprun_path: str): try: v = Vasprun(vasprun_path) except xml.etree.ElementTree.ParseError: print("\tskipped due to parse error") return tdos = v.tdos plt = DosPlotter() plt.add_dos("Total DOS", tdos) plt.show()
def plot_dos(self, T=None, npoints=10000): """ Plot the total Dos using DosPlotter() """ if self.bzt_interp is None: raise BoltztrapError("BztInterpolator not present") tdos = self.bzt_interp.get_dos(T=T, npts_mu=npoints) # print(npoints) dosPlotter = DosPlotter() dosPlotter.add_dos("Total", tdos) return dosPlotter
def __init__(self, vasp): self.vasp = vasp self.z = self.getGCD() self.formula = self.getElem() self.full_formula = self.getElem(False) self.elem_List = self.elList() self.mass = Mass(vasp.atomic_symbols) self.volume = vasp.final_structure.volume self.density = self.mass / self.volume * 1.66054 self.neighbors = nearNeighbors(vasp) self.latConst = self.getLatConst() self.plot = DosPlotter()
def plot_dos(self, sigma=0.05): """ plot dos Args: sigma: a smearing Returns: a matplotlib object """ plotter = DosPlotter(sigma=sigma) plotter.add_dos("t", self._bz.dos) return plotter.get_plot()
def get_mp_banddos(): check_matplotlib() mpr = check_apikey() print("input the mp-ID") wait_sep() in_str = wait() mp_id = in_str step_count = 1 proc_str = "Reading Data From " + web + " ..." procs(proc_str, step_count, sp='-->>') data = mpr.get_entry_by_material_id(mp_id) sepline() print(data) sepline() step_count += 1 proc_str = "Reading Band Data From " + web + " ..." procs(proc_str, step_count, sp='-->>') band = mpr.get_bandstructure_by_material_id(mp_id) if band is None: print("No data obtained online, stop now!") os.exit(0) step_count += 1 filename = mp_id + '_band.png' proc_str = "Writing Data to " + filename + " File..." bsp = BSPlotter(band) procs(proc_str, step_count, sp='-->>') bsp.save_plot(filename=filename, img_format="png") step_count += 1 proc_str = "Reading DOS Data From " + web + " ..." procs(proc_str, step_count, sp='-->>') dos = mpr.get_dos_by_material_id(mp_id) if dos is None: print("No data obtained online, stop now!") step_count += 1 filename = mp_id + '_dos.png' proc_str = "Writing Data to " + filename + " File..." dsp = DosPlotter() dsp.add_dos('Total', dos) procs(proc_str, step_count, sp='-->>') dsp.save_plot(filename=filename, img_format="png")
def pdos(vasprun): # Load the vasprun.xml file out = Vasprun(os.path.abspath(vasprun)) # Extract the types of species in the structure species = out.initial_structure.types_of_specie # Extract the complete DOS element_dos = out.complete_dos.get_element_dos() # Initialize the DosPlotter plotter = DosPlotter() # Add the element projected DOS to the DOSplotter for specie in species: plotter.add_dos(specie.name, element_dos[specie]) plotter.show()
def total_dos(): check_matplotlib() filename='vasprun.xml' check_file(filename) proc_str="Reading Data From "+ filename +" File ..." procs(proc_str,1,sp='-->>') vsr=Vasprun(filename,parse_eigen=False) tdos=vsr.tdos idos=vsr.idos E=tdos.energies-tdos.efermi if vsr.is_spin: proc_str="This Is a Spin-polarized Calculation." procs(proc_str,0,sp='-->>') proc_str="Writting TDOS.dat File ..." TDOSUP=tdos.densities[Spin.up] TDOSDOWN=tdos.densities[Spin.down] ETDOS=np.vstack((E,TDOSUP,TDOSDOWN)) head_line="#%(key1)+12s%(key2)+12s%(key3)+12s"%{'key1':'Energy(eV)','key2':'SpinUp','key3':'SpinDown'} write_col_data('TDOS.dat',ETDOS.T,head_line) proc_str="Writting IDOS.dat File ..." procs(proc_str,3,sp='-->>') IDOSUP=idos.densities[Spin.up] IDOSDOWN=idos.densities[Spin.down] EIDOS=np.vstack((E,IDOSUP,IDOSDOWN)) head_line="#%(key1)+12s%(key2)+12s%(key3)+12s"%{'key1':'Energy(eV)','key2':'IntSpinUp','key3':'IntSpinDown'} write_col_data('IDOS.dat',EIDOS.T,head_line) plt1=DosPlotter() plt2=DosPlotter() plt1.add_dos('Total DOS',tdos) plt2.add_dos('Total DOS',idos) try: # plt1.show() plt1.save_plot('TotalDOS.png', img_format="png") # plt2.show() plt2.save_plot('IntegratedDOS.png', img_format="png") except: print("pls use gnuplot to plot TDOS.dat and IDOS.dat") else: if vsr.parameters['LNONCOLLINEAR']: proc_str="This Is a Non-Collinear Calculation." else: proc_str="This Is a Non-Spin Calculation." procs(proc_str,0,sp='-->>') proc_str="Writting TDOS.dat File ..." procs(proc_str,2,sp='-->>') TDOS=tdos.densities[Spin.up] ETDOS=np.vstack((E,TDOS)) head_line="#%(key1)+12s%(key2)+12s"%{'key1':'Energy(eV)','key2':'TotalDOS'} write_col_data('TDOS.dat',ETDOS.T,head_line) proc_str="Writting IDOS.dat File ..." procs(proc_str,3,sp='-->>') IDOS=idos.densities[Spin.up] EIDOS=np.vstack((E,IDOS)) head_line="#%(key1)+12s%(key2)+13s"%{'key1':'Energy(eV)','key2':'IntegratedDOS'} write_col_data('IDOS.dat',EIDOS.T,head_line) plt1=DosPlotter() plt2=DosPlotter() plt1.add_dos('Total DOS',tdos) plt2.add_dos('Integrated DOS',idos) filename4="TotalDOS.png IntegratedDOS.png" proc_str="Saving Plot to "+ filename4 +" File ..." procs(proc_str,4,sp='-->>') try: # plt1.show() plt1.save_plot('TotalDOS.png', img_format="png") # plt2.show() plt2.save_plot('IntegratedDOS.png', img_format="png") except: print("pls use gnuplot to plot TDOS.dat and IDOS.dat")
from pymatgen.io.vasp.outputs import Vasprun, Element from pymatgen.electronic_structure.plotter import DosPlotter import os os.chdir('/home/jinho93/oxides/perobskite/lanthanum-aluminate/slab/14/asym') os.chdir( '/home/jinho93/oxides/perobskite/lanthanum-aluminate/periodic_step/vasp/stengel/001/vca/AlO2' ) os.chdir( '/home/jinho93/oxides/perobskite/lanthanum-aluminate/slab/14/asym/to_Al') # os.chdir('/home/jinho93/new/oxides/perobskite/lanthanum-aluminate/slab/7') vrun = Vasprun('vasprun.xml') cdos = vrun.complete_dos s = vrun.final_structure dsp = DosPlotter() dos_dict = {} i: Site for n, i in enumerate(s.sites): if i.species_string == 'La': dos_dict[f'{n}'] = cdos.get_site_dos(i) dsp.add_dos_dict(dos_dict) dsp.show(xlim=(-10, 5), ylim=(0, 2)) # %% aldos = cdos.get_site_dos(s.sites[0]) dx = aldos.energies[1] - aldos.energies[0]
def main(): """ Main function. """ parser = argparse.ArgumentParser( description="""Convenient DOS Plotter for Feff runs. Author: Alan Dozier Version: 1.0 Last updated: April, 2013""") parser.add_argument( "filename", metavar="filename", type=str, nargs=1, help="ldos%% file set to plot", ) parser.add_argument("filename1", metavar="filename1", type=str, nargs=1, help="feff.inp input file ") parser.add_argument( "-s", "--site", dest="site", action="store_const", const=True, help="plot site projected DOS", ) parser.add_argument( "-e", "--element", dest="element", action="store_const", const=True, help="plot element projected DOS", ) parser.add_argument( "-o", "--orbital", dest="orbital", action="store_const", const=True, help="plot orbital projected DOS", ) args = parser.parse_args() f = LDos.from_file(args.filename1[0], args.filename[0]) dos = f.complete_dos all_dos = {} all_dos["Total"] = dos structure = f.complete_dos.structure if args.site: for i, site in enumerate(structure): all_dos["Site " + str(i) + " " + site.specie.symbol] = dos.get_site_dos(site) if args.element: all_dos.update(dos.get_element_dos()) if args.orbital: all_dos.update(dos.get_spd_dos()) plotter = DosPlotter() plotter.add_dos_dict(all_dos) plotter.show()
if print_magnetic: # read in magentic moment from OUTCAR and print out = Outcar('./OUTCAR') print('Total Magnetic Moment:', out.total_mag) if make_dosplot: # read in BSDOSPlotter function to plot DOS and BS from pymatgen.electronic_structure.plotter import DosPlotter # make and save a plot of the band structure and DOS dos = vsp.complete_dos energy_range = (-10, 7) # eV, change if desired to change plotting range # create DosPlotter object with smearing edosplot = DosPlotter(sigma=dos_smearing) # plot Total DOS and element-projected dos edosplot.add_dos("Total DOS", dos) edosplot.add_dos_dict(dos.get_element_dos()) plt = edosplot.get_plot(xlim=energy_range) plt.plot((-20, 20), (0, 0), 'k--') plt.savefig('Element_DOS_plot.png') # create DosPlotter object with smearing odosplot = DosPlotter(sigma=dos_smearing) # plot Total DOS and orbital-projected dos odosplot.add_dos("Total DOS", dos) odosplot.add_dos_dict(dos.get_spd_dos()) plt = odosplot.get_plot(xlim=energy_range) plt.plot((-20, 20), (0, 0), 'k--') plt.savefig('Orbital_DOS_plot.png')
#!/nfshome/villa/anaconda3/bin/python """ Spyder Editor This is a temporary script file. """ import os from pymatgen.core.periodic_table import Element from pymatgen.io.vasp.outputs import Vasprun from pymatgen.io.vasp.inputs import Poscar from pymatgen.electronic_structure.plotter import DosPlotter complete_dos = Vasprun('vasprun.xml').complete_dos partial_dos = complete_dos.get_spd_dos() dos_plotter = DosPlotter() dos_plotter.add_dos('Total_dos', complete_dos) for orbital in partial_dos: dos_plotter.add_dos(orbital, partial_dos[orbital]) plt = dos_plotter.get_plot(xlim=(-10, 10)) plt.show()
@Author : Xu-Shan Zhao @Filename: pymatgenPlotBSDOS202005091027.py @IDE : PyCharm @Time1 : 2020-05-09 10:27:36 @Time2 : 2020/5/9 10:27 @Month1 : 5月 @Month2 : 五月 """ from pymatgen.electronic_structure.plotter import DosPlotter, BSPlotter, BSDOSPlotter from pymatgen.io.vasp import Vasprun, BSVasprun vasprun_file = './AlEuO3_Perovskite_DOS/vasprun.xml' vasprun = Vasprun(vasprun_file) tdos = vasprun.tdos plotter = DosPlotter() plotter.add_dos('Total DOS', tdos) # plotter.show(xlim=[-20, 20], ylim=[-6, 6]) plotter.show() completeDos = vasprun.complete_dos element_dos = completeDos.get_element_dos() plotter = DosPlotter() plotter.add_dos_dict(element_dos) plotter.add_dos('Total DOS', tdos) plotter.show() spd_dos = completeDos.get_spd_dos() plotter = DosPlotter() plotter.add_dos_dict(spd_dos) plotter.add_dos('Total DOS', tdos)
def plot_dos(self): plotter = DosPlotter(sigma=0.05) plotter.add_dos("t", self._bz.dos) plotter.get_plot().show()
os.chdir( '/home/ksrc5/FTJ/1.bfo/111-dir/junction/sto/vasp/vac/conf3/4.node03/dense_k_dos/again' ) vrun = Vasprun('vasprun.xml') s: Structure = vrun.final_structure cdos = vrun.complete_dos pdos = cdos.pdos doss = dict() num = 16 arr = np.linspace(0, 1, num, endpoint=False) darr = arr[1] - arr[0] for j in arr: densities = [] for i in s.sites: if j + darr > i.c >= j: densities.append(cdos.get_site_dos(i).get_densities()) densities = np.sum(densities, axis=0) doss[f'{j:.2f}'] = Dos(cdos.efermi, cdos.energies, {Spin.up: densities}) dsp = DosPlotter(sigma=0.1) ax_array, fig, plt = get_axarray_fig_plt(None, nrows=num, sharex=True) plt = pretty_plot(12, 6, plt=plt) for i in range(num): dsp.__init__(sigma=0.05) a = doss.popitem() dsp.add_dos(*a) fig.add_subplot(num, 1, i + 1) subplt = dsp.get_plot(xlim=(-1, 2), plt=plt) plt.savefig('figure.png') plt.show()
#!/nfshome/villa/anaconda3/bin/python from pymatgen.io.vasp.outputs import Vasprun from pymatgen.electronic_structure.plotter import BSPlotter, DosPlotter vaspout = Vasprun("./vasprun.xml") # Initializes plotter with some optional args. Defaults are usually # fine, complete_dos = vaspout.complete_dos plt = DosPlotter() plt.add_dos_dict(complete_dos.get_spd_dos()) tdos = vaspout.tdos # Adds a DOS with a label. plt.add_dos("Total", tdos) #plt.get_plot() plt.save_plot('dos_mg.pdf', img_format='pdf', xlim=[-7, 6], ylim=[0, 20])
#print cdos.get_densities() tdos = vasp.tdos #Total dos calculated at the end of run idos = vasp.idos # Integrated dos calculated at the end of run pdos = vasp.pdos # List of list of PDos objects. Access as pdos[atomindex][orbitalindex] efermi = vasp.efermi eigenvalues = vasp.eigenvalues projected_eigenvalues = vasp.projected_eigenvalues bs = bsvasp.get_band_structure(line_mode=True) total_dos = tdos pdoss = pdos #CDOS = CompleteDos(structure,total_dos,pdoss) spd_dos = cdos.get_spd_dos #print spd_dos element_dos = cdos.get_element_dos #element_spd_dos = cdos.get_element_spd_dos(el) dosplotter = DosPlotter() Totaldos = dosplotter.add_dos('Total DOS', tdos) Integrateddos = dosplotter.add_dos('Integrated DOS', idos) #Pdos = dosplotter.add_dos('Partial DOS',pdos) #Spd_dos = dosplotter.add_dos('spd DOS',spd_dos) #Element_dos = dosplotter.add_dos('Element DOS',element_dos) #Element_spd_dos = dosplotter.add_dos('Element_spd DOS',element_spd_dos) dos_dict = { 'Total DOS': tdos, 'Integrated DOS': idos } #'Partial DOS':pdos,'spd DOS':spd_dos,'Element DOS':element_dos}#'Element_spd DOS':element_spd_dos add_dos_dict = dosplotter.add_dos_dict(dos_dict) get_dos_dict = dosplotter.get_dos_dict() dos_plot = dosplotter.get_plot() ##dosplotter.save_plot("MAPbI3_dos",img_format="png") ##dos_plot.show()
def __init__(self, *args, **kwargs): MyMplCanvas.__init__(self, *args, **kwargs) self.dsp = DosPlotter()
# 3rd run to obtain Band structure band = MPNonSCFSet.from_prev_calc(static_dir, mode="line", standardize=True, user_incar_settings=myset) band.write_input(band_dir) run_vasp(cmd, band_dir) os.system('cp ' + band_dir + '/vasprun.xml ./band-vasprun.xml') os.system('cp ' + band_dir + '/KPOINTS ./') v = BSVasprun("band-vasprun.xml") bs = v.get_band_structure(kpoints_filename='KPOINTS', line_mode=True) plt = BSPlotter(bs) plt.get_plot(vbm_cbm_marker=True) plt.save_plot(Name + '-band.png', ylim=[-4, 4], img_format='png') v = Vasprun('dos-vasprun.xml') tdos = v.tdos cdos = v.complete_dos spd_dos = cdos.get_spd_dos() plotter = DosPlotter(sigma=0.1) plotter.add_dos("Total DOS", tdos) # plotter.add_dos("spd_dos", spd_dos) plotter.save_plot(Name + '-dos.png', img_format='png', xlim=[-4, 4]) shutil.rmtree(band_dir) shutil.rmtree(dos_dir) shutil.rmtree(static_dir) os.chdir('../')
def setUp(self): with open(os.path.join(test_dir, "complete_dos.json"), "r") as f: self.dos = CompleteDos.from_dict(json.load(f)) self.plotter = DosPlotter(sigma=0.2, stack=True)
from pymatgen.io.vasp import Vasprun, Element from pymatgen.electronic_structure.plotter import DosPlotter v = Vasprun('AgTe_dos/vasprun.xml') cdos = v.complete_dos element_dos = cdos.get_element_dos() element_orbital = cdos.get_element_spd_dos(el=Element("Te")) #print(cdos.pdos) #px = cdos.get_site_orbital_dos(site=v.final_structure.sites[0],orbital=0) #py = cdos.get_site_orbital_dos(site=v.final_structure.sites[0],orbital=2) #pz = cdos.get_site_orbital_dos(site=v.final_structure.sites[0],orbital=1) plotter = DosPlotter(zero_at_efermi=True) plotter.add_dos_dict(element_dos) #plotter.add_dos_dict(px) #plotter.add_dos_dict(py) #plotter.add_dos_dict(pz) plotter.show(xlim=[-4, 4], ylim=[0, 10])