Skip to main content

vaspvis

A highly flexible and customizable library for visualizing electronic structure data from VASP calculations.

Usage

This package was designed to give VASP users a flexible and easy to understand method for generating a wide variety of band structures and density of states plots. The main modules in this package are:

  • Band
  • Dos
  • standard
  • utils

The Band and Dos modules allow for the highest level of flexibility because the user needs to pass in their own matplotlib axis, letting the user completely design the external appearance of their plot. The Band and Dos modules will then parse the VASP output data and append it to the axis.

The standard module uses the Band and Dos modules internally and was designed for those people who are not familiar with matplotlib or don't need to completely customize their own figure. There are a total of 56 different styles of plots to choose from in this module. It gives the user the capability to project onto any orbital, any atom, or any element in their structure, as well as individual orbitals on any atom or element. There are also options for spin polarized band structures and density of states as well, letting the user make intricate plots with only a few lines of code.

The utils module contains helper functions, for example to generate the files for band unfolding calculations, to build and passivate slab structures, and to determine band gaps.

The package also provides the STM class for simulated STM images and the Charge class for charge transfer analysis.

Installation

pip install vaspvis

How to Cite

To cite VaspVis please reference the following paper:

https://link.aps.org/doi/10.1103/PhysRevMaterials.5.064606

Loading Data

from vaspvis import Band, Dos

# Plain band structure
bs = Band(folder='path to vasp output folder')


# Projected band structure
bs_projected = Band(folder='path to vasp output folder', projected=True)


# Density of states (projected or non-projected)
dos = Dos(folder='path to vasp output folder')

Important Note: Band structures are parsed from the EIGENVAL, PROCAR, KPOINTS, POSCAR, INCAR, and OUTCAR files, and densities of states from the DOSCAR, POSCAR, INCAR, and OUTCAR files (the Fermi level is read from OUTCAR). Be sure that they are in the folder you load into vaspvis.

Important Note: For spin projected orbitals you must load the spin up and spin down channels separately using the spin = 'up' or spin = 'down' options when loading data. Default is spin = 'up'.

Band Unfolding

Band unfolding is useful for visualizing band structures of supercells and slab structures. The method used for calculating the band unfolded structure requires an integer transformation matrix from the bulk structure. To convert the slab structure so it has an integer matrix, the convert_slab function can be used to generate the new slab structure and also return the transformation matrix (M). More information about the band unfolding method can be found here.

from vaspvis.utils import convert_slab

# This function returns and prints out the transformation matrix (M)
M = convert_slab(
    bulk_path='POSCAR_bulk', # POSCAR of the primitive bulk structure
    slab_path='POSCAR_slab', # POSCAR of the slab structure
    index=[1,1,1], # Miller index of the given slab structure
)

To generate the KPOINTS file for the band unfolded calculation the generate_kpoints function can be used

from vaspvis.utils import generate_kpoints

high_symmetry_points = [
    [0.5,0.0,0.5], # X
    [0.0,0.0,0.0], # Gamma
    [0.5,0.0,0.5], # X
]

generate_kpoints(
    M=M, # M can be generated with the convert slab function
    high_symmetry_points=high_symmetry_points, # Special points
    n=50, # Number of segments between each special point
)

To plot the band structure the Band or standard module can be used. An example using the standard module is shown below.

from vaspvis import standard as st

band_folder = 'PATH_TO_VASP_FOLDER'

# Transformation matrix generated from convert_slab
M = [
    [0,1,-1],
    [1,-1,0],
    [-8,-8,-8]
]

high_symm_points = [
    [0.5, 0.0, 0.5], # X
    [0.0, 0.0, 0.0], # Gamma
    [0.5, 0.0, 0.5]  # X
]

# All other functions in the standard library work with band unfolding too.
st.band_plain(
    folder=band_folder,
    erange=[-4,0],
    unfold=True,
    kpath=[['X', 'G'], ['G', 'X']],
    high_symm_points=high_symm_points,
    n=50,
    M=M,
)

Examples

The plots below were generated with exactly the code shown, from a band structure and a density of states calculation of InAs (PBE with spin-orbit coupling). scale_factor sets the size of the projection markers. The legend is drawn beside the axes but inside the figure, so the examples with a legend use a wider figsize; this keeps the axes the same size in every plot.

band_folder = 'path to the band structure calculation'
dos_folder = 'path to the density of states calculation'

Band Structures

Plain Band Structure

from vaspvis import standard

standard.band_plain(
    folder=band_folder
)

s, p, d Projected Band Structure

from vaspvis import standard

standard.band_spd(
    folder=band_folder,
    scale_factor=40,
    figsize=(4.43, 3),
)

Orbital Projected Band Structure

from vaspvis import standard

standard.band_orbitals(
    folder=band_folder,
    orbitals=[0, 1, 2, 3, 4, 5, 6, 7, 8],
    scale_factor=40,
    figsize=(4.76, 3),
)

Atom Projected Band Structure

from vaspvis import standard

standard.band_atoms(
    folder=band_folder,
    atoms=[0, 1],
    scale_factor=40,
    figsize=(4.42, 3),
)

Atom-Orbital Projected Band Structure

from vaspvis import standard

standard.band_atom_orbitals(
    folder=band_folder,
    atom_orbital_dict={0:[1,3], 1:[1,7]},
    scale_factor=40,
    figsize=(4.73, 3),
)

Atom s, p, d Projected Band Structure

from vaspvis import standard

standard.band_atom_spd(
    folder=band_folder,
    atom_spd_dict={0:'spd'},
    scale_factor=40,
    figsize=(4.62, 3),
)

Element Projected Band Structure

from vaspvis import standard

standard.band_elements(
    folder=band_folder,
    elements=['In', 'As'],
    scale_factor=40,
    figsize=(4.52, 3),
)

Element s, p, d Projected Band Structure

from vaspvis import standard

standard.band_element_spd(
    folder=band_folder,
    element_spd_dict={'As':'spd'},
    scale_factor=40,
    figsize=(4.70, 3),
)

Element Orbital Projected Band Structure

from vaspvis import standard

standard.band_element_orbitals(
    folder=band_folder,
    element_orbital_dict={'As':[2], 'In':[3]},
    scale_factor=40,
    figsize=(4.76, 3),
)

Density of States

Plain Density of States

from vaspvis import standard

standard.dos_plain(
    folder=dos_folder,
    energyaxis='x',
)

s, p, d Projected Density of States

from vaspvis import standard

standard.dos_spd(
    folder=dos_folder,
    energyaxis='x',
    figsize=(4.44, 3),
)

Orbital Projected Density of States

from vaspvis import standard

standard.dos_orbitals(
    folder=dos_folder,
    orbitals=[0, 1, 2, 3, 4, 5, 6, 7, 8],
    energyaxis='x',
    figsize=(4.77, 3),
)

Atom Projected Density of States

from vaspvis import standard

standard.dos_atoms(
    folder=dos_folder,
    atoms=[0, 1],
    energyaxis='x',
    figsize=(4.43, 3),
)

Atom-Orbital Projected Density of States

from vaspvis import standard

standard.dos_atom_orbitals(
    folder=dos_folder,
    atom_orbital_dict={0:[1,3], 1:[1,7]},
    energyaxis='x',
    figsize=(4.74, 3),
)

Atom s, p, d Projected Density of States

from vaspvis import standard

standard.dos_atom_spd(
    folder=dos_folder,
    atom_spd_dict={0:'spd'},
    energyaxis='x',
    figsize=(4.63, 3),
)

Element Projected Density of States

from vaspvis import standard

standard.dos_elements(
    folder=dos_folder,
    elements=['In', 'As'],
    energyaxis='x',
    figsize=(4.53, 3),
)

Element s, p, d Projected Density of States

from vaspvis import standard

standard.dos_element_spd(
    folder=dos_folder,
    element_spd_dict={'As':'spd'},
    energyaxis='x',
    figsize=(4.71, 3),
)

Element Orbital Projected Density of States

from vaspvis import standard

standard.dos_element_orbitals(
    folder=dos_folder,
    element_orbital_dict={'As':[2], 'In':[3]},
    energyaxis='x',
    figsize=(4.77, 3),
)

Band Structure / Density of States

Plain Band Structure / Density of States

from vaspvis import standard

standard.band_dos_plain(
    band_folder=band_folder,
    dos_folder=dos_folder,
)

s, p, d Projected Band Structure / Density of States

from vaspvis import standard

standard.band_dos_spd(
    band_folder=band_folder,
    dos_folder=dos_folder,
    scale_factor=40,
    figsize=(6.50, 3),
)

Orbital Projected Band Structure / Density of States

from vaspvis import standard

standard.band_dos_orbitals(
    band_folder=band_folder,
    dos_folder=dos_folder,
    orbitals=[0, 1, 2, 3, 4, 5, 6, 7, 8],
    scale_factor=40,
    figsize=(6.82, 3),
)

Atom-Orbital Projected Band Structure / Density of States

from vaspvis import standard

standard.band_dos_atom_orbitals(
    band_folder=band_folder,
    dos_folder=dos_folder,
    atom_orbital_dict={0:[1,3], 1:[1,7]},
    scale_factor=40,
    figsize=(6.79, 3),
)

Atom Projected Band Structure / Density of States

from vaspvis import standard

standard.band_dos_atoms(
    band_folder=band_folder,
    dos_folder=dos_folder,
    atoms=[0, 1],
    scale_factor=40,
    figsize=(6.49, 3),
)

Element Projected Band Structure / Density of States

from vaspvis import standard

standard.band_dos_elements(
    band_folder=band_folder,
    dos_folder=dos_folder,
    elements=['In', 'As'],
    scale_factor=40,
    figsize=(6.58, 3),
)

Element s, p, d Projected Band Structure / Density of States

from vaspvis import standard

standard.band_dos_element_spd(
    band_folder=band_folder,
    dos_folder=dos_folder,
    element_spd_dict={'As':'spd'},
    scale_factor=40,
    figsize=(6.77, 3),
)

Element Orbital Projected Band Structure / Density of States

from vaspvis import standard

standard.band_dos_element_orbitals(
    band_folder=band_folder,
    dos_folder=dos_folder,
    element_orbital_dict={'As':[2], 'In':[3]},
    scale_factor=40,
    figsize=(6.82, 3),
)

Release files for vaspvis 1.4.3

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for vaspvis 1.4.3
File Size Uploaded
vaspvis-1.4.3.tar.gz 106.4 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for vaspvis 1.4.3
File Interpreter ABI Platform
vaspvis-1.4.3-py3-none-any.whl Python 3 none any Details

Total release size: 211.6 kB

Release files / vaspvis-1.4.3.tar.gz

Download URL vaspvis-1.4.3.tar.gz
Size 106.4 kB
Tags Source
SHA-256 checksum
How to use checksums
a79d1cd37f1729e613c48f071bf86ddcd29ae660f0676dd7e9197299bbd991e8
BLAKE2b-256 checksum
How to use checksums
4abc3f2929498252262b023c2b65408a6096fc01acd75141a847f63e98018b43
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.11.11

Release files / vaspvis-1.4.3-py3-none-any.whl

Download URL vaspvis-1.4.3-py3-none-any.whl
Size 105.2 kB
Tags Python 3
SHA-256 checksum
How to use checksums
887abff08f6b7f265b9998311b024b848b205e04ec52c3a9c637bff7113aae85
BLAKE2b-256 checksum
How to use checksums
b926cf1bba4aa265de4b3a76ee440d282f031229bd3a7d25e92a996e78f1cfe0
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.11.11

Release history Release notifications | RSS feed

This release

1.4.3 This release

2 release files

1.4.2

2 release files

1.4.1

2 release files

1.4.0

2 release files

1.3.7

2 release files

1.3.6

2 release files

1.3.5

2 release files

1.3.4

2 release files

1.3.3

2 release files

1.3.2

2 release files

1.3.1

2 release files

1.3.0

2 release files

1.2.18

2 release files

1.2.17

2 release files

1.2.16

2 release files

1.2.15

2 release files

1.2.14

2 release files

1.2.13

1 release file

1.2.12

1 release file

1.2.11

1 release file

1.2.10

1 release file

1.2.9

1 release file

1.2.8

1 release file

1.2.7

1 release file

1.2.6

1 release file

1.2.5

1 release file

1.2.4

1 release file

1.2.3

1 release file

1.2.2

1 release file

1.2.1

1 release file

1.2.0

1 release file

1.1.8

1 release file

1.1.7

1 release file

1.1.6

1 release file

1.1.5

1 release file

1.1.4

1 release file

1.1.3

1 release file

1.1.2

1 release file

1.1.1

1 release file

1.1.0

1 release file

1.0.10

1 release file

1.0.9

1 release file

1.0.8

1 release file

1.0.7

1 release file

1.0.6

1 release file

1.0.5

1 release file

1.0.4

1 release file

1.0.3

1 release file

1.0.2

1 release file

1.0.1

1 release file

1.0.0

1 release file

0.4.25

1 release file

0.4.24

1 release file

0.4.22

1 release file

0.4.21

1 release file

0.4.20

1 release file

0.4.19

1 release file

0.4.18

1 release file

0.4.17

1 release file

0.4.16

1 release file

0.4.15

1 release file

0.4.14

1 release file

0.4.13

1 release file

0.4.12

1 release file

0.4.11

1 release file

0.4.10

1 release file

0.4.9

1 release file

0.4.8

1 release file

0.4.7

1 release file

0.4.6

1 release file

0.4.5

1 release file

0.4.4

1 release file

0.4.3

1 release file

0.4.2

1 release file

0.4.1

1 release file

0.3.49

1 release file

0.3.48

1 release file

0.3.47

1 release file

0.3.46

1 release file

0.3.45

1 release file

0.3.44

1 release file

0.3.43

1 release file

0.3.42

1 release file

0.3.41

1 release file

0.3.40

1 release file

0.3.29

1 release file

0.3.28

1 release file

0.3.27

1 release file

0.3.26

1 release file

0.3.25

1 release file

0.3.24

1 release file

0.3.23

1 release file

0.3.22

1 release file

0.3.21

1 release file

0.3.20

1 release file

0.3.19

1 release file

0.3.18

1 release file

0.3.17

1 release file

0.3.16

1 release file

0.3.15

1 release file

0.3.14

1 release file

0.3.13

1 release file

0.3.12

1 release file

0.3.11

1 release file

0.3.10

1 release file

0.3.9

1 release file

0.3.8

1 release file

0.3.7

1 release file

0.3.6

1 release file

0.3.5

1 release file

0.3.4

1 release file

0.3.3

1 release file

0.3.2

1 release file

0.3.1

1 release file

0.2.33

1 release file

0.2.32

1 release file

0.2.31

1 release file

0.2.30

1 release file

0.2.29

1 release file

0.2.28

1 release file

0.2.27

1 release file

0.2.26

1 release file

0.2.25

1 release file

0.2.24

1 release file

0.2.23

1 release file

0.2.22

1 release file

0.2.21

1 release file

0.2.20

1 release file

0.2.19

1 release file

0.2.18

1 release file

0.2.17

1 release file

0.2.16

1 release file

0.2.15

1 release file

0.2.14

1 release file

0.2.13

1 release file

0.2.12

1 release file

0.2.11

1 release file

0.2.10

1 release file

0.2.9

1 release file

0.2.8

1 release file

0.2.6

1 release file

0.2.5

1 release file

0.2.4

1 release file

0.2.3.9

1 release file

0.2.3.8

1 release file

0.2.3

1 release file

0.2.2

1 release file

0.2.1

1 release file

0.2.0

1 release file

0.1.26

1 release file

0.1.25

1 release file

0.1.24

1 release file

0.1.23

1 release file

0.1.22

1 release file

0.1.21

1 release file

0.1.20

1 release file

0.1.19

1 release file

0.1.18

1 release file

0.1.17

1 release file

0.1.16

1 release file

0.1.15

1 release file

0.1.14

1 release file

0.1.13

1 release file

0.1.12

1 release file

0.1.11

1 release file

0.1.10

1 release file

0.1.9

1 release file

0.1.8

1 release file

0.1.7

1 release file

0.1.6

1 release file

0.1.5

1 release file

0.1.4

1 release file

0.1.3

1 release file

0.1.2

1 release file

0.1.1

1 release file

0.1.0

1 release file

0.0.17

1 release file

0.0.16

1 release file

0.0.15

1 release file

0.0.14

1 release file

0.0.13

1 release file

0.0.12

1 release file

0.0.11

1 release file

0.0.10

1 release file

0.0.9

1 release file

0.0.8

1 release file

0.0.7

1 release file

0.0.6

1 release file

0.0.5

1 release file

0.0.4

1 release file

0.0.3

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page