pip install doped  # install doped and dependencies
conda install -c conda-forge spglib  # bundle C libraries with spglib

Note that either conda install -c conda-forge spglib or pip install git+ --config-settings=cmake.define.SPGLIB_SHARED_LIBS=OFF should be used after pip install doped, which ensures that the correct C libraries are bundled with spglib, to prevent unnecessary warnings. You can check that the correct C libraries have been bundled by running the following in Python, and confirming that the same version numbers are printed:

import spglib

Alternatively if desired, doped can also be installed from conda with:

conda install -c conda-forge doped
pip install pydefect  # pydefect not available on conda, so needs to be installed with pip or otherwise, if using the eFNV correction

If you are installing doped via conda and you plan on using the eFNV (Kumagai-Oba) finite-size correction, you will need to install the pydefect package with pip as shown or otherwise, as it is not available on conda.

It may be desirable to install doped in a virtual envionment (e.g. if you encounter package dependency conflict warnings during installation etc). You can do this with conda with:

conda create -n doped python=3.11
conda activate doped
pip install doped

Setup POTCARs and Materials Project API

To generate VASP POTCAR input files, and auto-determine INCAR settings such as NELECT for charged defects, your POTCAR directory needs to be setup to work with pymatgen (via the ~/.pmgrc.yaml file).


1. Set the VASP pseudopotential directory and your Materials Project API key in $HOME/.pmgrc.yaml (pymatgen config file) as follows:

PMG_VASP_PSP_DIR: <Path to VASP pseudopotential top directory>
PMG_MAPI_KEY: <Your MP API key obtained from>

Within your VASP pseudopotential top directory, you should have a folder named POT_GGA_PAW_PBE/potpaw_PBE.54/POT_GGA_PAW_PBE_54 which contains POTCAR.X(.gz) files, generated using pmg config.

  1. If you have not previously setup your POTCAR directory in this way with pymatgen, then follow these steps:

    mkdir temp_potcars  # make a top folder to store the unzipped POTCARs
    mkdir temp_potcars/POT_GGA_PAW_PBE  # make a subfolder to store the unzipped POTCARs
    mv potpaw_PBE.54.tar.gz temp_potcars/POT_GGA_PAW_PBE  # copy in your zipped VASP POTCAR source
    cd temp_potcars/POT_GGA_PAW_PBE
    tar -xf potpaw_PBE.54.tar.gz  # unzip your VASP POTCAR source
    cd ../..  # return to the top folder
    pmg config -p temp_potcars psp_resources  # configure the psp_resources pymatgen POTCAR directory
    pmg config --add PMG_VASP_PSP_DIR "${PWD}/psp_resources"  # add the POTCAR directory to pymatgen's config file ($HOME/.pmgrc.yaml)
    rm -r temp_potcars  # remove the temporary POTCAR directory
  2. If this has been successful, you should be able to run the shell commands:

    pmg potcar -s Na_pv
    grep PBE POTCAR

    Which should then show PAW_PBE Na_pv {date} as the output (you can ignore any pymatgen warnings about recognising the POTCAR type).

  3. If this does not work, you may need to add this to the .pmgrc.yaml file:

    PMG_DEFAULT_FUNCTIONAL: PBE  # whatever functional label your POTCARs have

    Note the Materials Project API key is required for determining the necessary competing phases to calculate in order to determine the chemical potential limits (required for defect formation energies). This should correspond to the legacy MP API, with your unique key available at:

If you use doped in your research, please cite:

Developer Installation

If you want to use the example files from the tutorials or run the package tests, you will need to clone the doped GitHub repository:

  1. Download the doped source code using the command:

git clone
  1. Navigate to root directory:

cd doped
  1. Install the code, using the command:

pip install -e .


The doped dependencies are listed in the pyproject.toml file on the GitHub repository.