Package: pivotpy
PivotPyA Python Processing Tool for Vasp Input/Output. A CLI is available in Powershell, seeVasp2Visual.<style>a{text-decoration: none !important;color:lightkblue;font-weight:bold;}
                a:focus,a:active,a:hover{color:hotpink !important;}</style>▶Index●▶Example▶StaticPlots▶InteractivePlots▶SpinProjectedSurfaces▶StructureIO▶Widgets▶MainAPIInstallpip install pivotpyHow to useUse commnadpivotpyin regular terminal to quickly launch documentation any time.SeeFull Documentation.See aCalculation ExampleFor CLI, useVasp2Visual.SeePDF Slidesfor detailed introduction.CLI commndsUsepivotpyin system terminal to launch DOCS.Usepivotpy_get_poscarto download POSCAR.Usepivotpy_get_kpathto create fine controlled KPATH.Plot in Terminal without GUIUsepp.plt2text(colorful=True/False)after matplotlib's code and your figure will appear in terminal. You need to zoom out alot to get a good view like below.Tip: Use filematplotlib2terminal.pyon github independent of this package to plot in terminal.Ipywidgets-based GUISee GIF here:Live Slides in Jupyter NotebookNavigate toipyslidesor dopip install ipyslidesto create beautiful data driven presentation in Jupyter Notebook.importos,pivotpyasppwithpp.set_dir('E:/Research/graphene_example/ISPIN_1/bands'):vr=pp.Vasprun(elim=[-5,5])print('Try Follwing Methods:')forvindir(vr):ifnotv.startswith('_'):print('vr.'+v)Try Follwing Methods:
vr.Fermi
vr.data
vr.elim
vr.fermi
vr.get_band_info
vr.get_en_diff
vr.get_fermi
vr.iplot_dos_lines
vr.iplot_rgb_lines
vr.kticks
vr.poscar
vr.select
vr.splot_bands
vr.splot_color_lines
vr.splot_dos_lines
vr.splot_en_diff
vr.splot_rgb_lines
vr.to_json
vr.to_pickleimportmatplotlib.pyplotaspltax1,ax2=pp.get_axes((6,3),ncols=2)ax1.plot(vr.data.scsteps['e_fr_energy'],lw=3,label='e_fr_energy',color='k')ax1.plot(vr.data.scsteps['e_0_energy'],lw=0.7,ls='dashed',label='e_0_energy',color='skyblue')ax1.set_ylabel('Energy (eV)')ax1.set_xlabel('Iteration Number')ax1.legend()vr.poscar.splot_lat(ax=ax2,plane='xy')X,Y,Z=vr.data.poscar.coords.Tq=ax2.quiver(X,Y,*vr.data.force[:,:2].T,scale=25,color='r')ax2.quiverkey(q,0.7,1,7,'Force (arb. units)')ax2.add_legend()Matplotlib's static plotsAdd anything from legend,colorbar, colorwheel. In below figure, all three are shown.Use aliases such as sbands, sdos,srgb,irgb,scolor,idos for plotting.#collapse_inputimportpivotpyaspp,numpyasnpimportmatplotlib.pyplotaspltvr1=pp.Vasprun('E:/Research/graphene_example/ISPIN_2/bands/vasprun.xml')vr2=pp.Vasprun('E:/Research/graphene_example/ISPIN_2/dos/vasprun.xml')axs=pp.get_axes(ncols=3,widths=[2,1,2.2],sharey=True,wspace=0.05,figsize=(8,2.6))elements=[0,[0],[0,1]]orbs=[[0],[2],[1,3]]labels=['s','$p_z$','$(p_x+p_y)$']ti_cks=dict(ktick_inds=[0,30,60,-1],ktick_vals=['Γ','M','K','Γ'])args_dict=dict(elements=elements,orbs=orbs,labels=labels,elim=[-20,15],colormap='viridis',)vr1.splot_bands(ax=axs[0],**ti_cks,elim=[-20,15])vr1.splot_rgb_lines(ax=axs[2],**args_dict,**ti_cks,colorbar=False)vr2.splot_dos_lines(ax=axs[1],vertical=True,spin='both',include_dos='pdos',**args_dict,legend_kwargs={'ncol':3})axs[2].color_cube(loc=(0.7,0.25),size=0.35)pp._show()[0;92m Given 0 at position 1 of sequence => 'C': range(0, 2). To just pick one ion, write it as [0].[00mInteractive plots using plotlyargs_dict['labels']=['s','p_z','p_x+p_y']args_dict.pop('colormap')fig1=vr1.iplot_rgb_lines(**args_dict)#pp.iplot2html(fig1) #Do inside Google Colab, fig1 inside JupyterfromIPython.displayimportMarkdownMarkdown("[See Interactive Plot](https://massgh.github.io/InteractiveHTMLs/iGraphene.html)")See Interactive PlotBrillouin Zone (BZ) ProcessingLook inpivotpy.siomodule orpivotpy.api.POSCARclass for details on generating mesh and path of KPOINTS as well as using Materials Projects' API to get POSCAR right in the working folder. Below is a screenshot of interactive BZ plot. You candouble clickon blue points and hitCtrl + Cto copy the high symmetry points relative to reciprocal lattice basis vectors.Same color points lie on a sphere, with radius decreasing as red to blue and  gamma point in gold color. These color help distinguishing points but the points not always be equivalent, for example in FCC, there are two points on mid of edges connecting square-hexagon and hexagon-hexagon at equal distance from center but not the same points.Any colored point's hover text is in gold background.Look the output ofpivotpy.sio.splot_bz.See Interactive BZ PlotInterpolationAmost every bandstructure and DOS plot function has an argumentinterp_nkwhich is a dictionary with keysn(Number of additional points between adjacent points) andk(order of interpolation 0-3).n > kmust hold.#collapse_inputimportpivotpyaspp,matplotlib.pyplotaspltplt.style.use('ggplot')k=vr1.data.kpathef=vr1.data.bands.Fermievals=vr1.data.bands.evals.SpinUp-ef#Let's interpolate our graph to see effect. It is useful for colored graphs.knew,enew=pp.interpolate_data(x=k,y=evals,n=10,k=3)plot=plt.plot(k,evals,'m',lw=5,label='real data')plot=plt.plot(k,evals,'w',lw=1,label='interpolated',ls='dashed')pp.splots.add_text(ax=plt.gca(),txts='Graphene')LOCPOT,CHG Visualizationcheck out the classpivotpy.LOCPOTto visulize local potential/charge and magnetization in a given direction.Running powershell commands from python.Some tasks are very tideious in python while just a click way in powershell. See below, and try to list processes in python yourself to see the difference!pp.utils.ps2std(ps_command='(Get-Process)[0..4]')[32;1m NPM(K)    PM(M)      WS(M)     CPU(s)      Id  SI ProcessName[0m
[32;1m ------    -----      -----     ------      --  -- -----------[0m
22     6.92       8.27       0.33   14100   1 AcrobatNot…
6     1.29       5.68       0.00    7724   0 Aggregator…
19     7.22      20.85       0.00    5608   0 AppHelperC…
26    39.25      57.59       0.48    2064   1 Applicatio…
9     1.67       6.88       0.00    5264   0 armsvcAdvancaed: Poweshell Cell/Line Magic%%ps/%psYou can create a IPython cell magic to run powershell commands directly in IPython Shell/Notebook (Powershell core installation required).Cell magic can be assigned to a variablefooby%%ps --out fooLine magic can be assigned to a variable byfoo = %ps powershell_commandPut below code in ipython profile's startup file (create one) "~/.ipython/profile_default/startup/powershell_magic.py"fromIPython.core.magicimportregister_line_cell_magicfromIPythonimportget_ipython@register_line_cell_magicdefps(line,cell=None):ifcell:returnget_ipython().run_cell_magic('powershell',line,cell)else:get_ipython().run_cell_magic('powershell','--out posh_output',line)returnposh_output.splitlines()Additionally you need to add following lines in "~/.ipython/profile_default/ipython_config.py" file to make above magic work.fromtraitlets.config.applicationimportget_configc=get_config()c.ScriptMagics.script_magics=['powershell']c.ScriptMagics.script_paths={'powershell':'powershell.exe -noprofile -command -','pwsh':'pwsh.exe -noprofile -command -'}%%psGet-ChildItem'E:\Research\graphene_example\'Directory: E:\Research\graphene_example





Mode                 LastWriteTime         Length Name        

----                 -------------         ------ ----        

da----          6/9/2022  10:33 AM                ISPIN_1     

da----          5/9/2020   1:05 PM                ISPIN_2     

-a----          5/9/2020   1:01 PM          75331 OUTCAR      

-a----          5/9/2020   1:01 PM         240755 vasprun.xmlx=%ps(Get-ChildItem'E:\Research\graphene_example\').Namex['ISPIN_1', 'ISPIN_2', 'OUTCAR', 'vasprun.xml']Functions Reference<style>a{text-decoration: none !important;color:lightkblue;font-weight:bold;}
                a:focus,a:active,a:hover{color:hotpink !important;}</style>▶Index●▶Example▶StaticPlots▶InteractivePlots▶SpinProjectedSurfaces▶StructureIO▶Widgets▶MainAPI