pypi conda zenodo discord

license buildstatus codecov

sisl: tight-binding and DFT interface library

The Python library sisl was born out of a need to handle(create and read), manipulate and analyse output from DFT programs. It was initially developed by Nick Papior (co-developer of Siesta) as a side-project to TranSiesta and TBtrans to efficiently analyse TBtrans output for N-electrode calculations. Since then it has expanded to accommodate a rich set of DFT code input/outputs such as (but not limited to) VASP, OpenMX, BigDFT, Wannier90.

A great deal of codes are implementing, roughly, the same thing. However, every code implements their own analysis and post-processing utilities which typically turns out to be equivalent utilities only having the interface differently.

sisl tries to solve some of the analysis issues by creating a unified scripting approach in Python which does analysis using the same interface, regardless of code being used. For instance one may read the Kohn-Sham eigenvalue spectrum from various codes and return them in a consistent manner so the post-processing is the same, regardless of code being used.

sisl is also part of the training material for a series of workshops hosted here.

In some regards it has overlap with ASE and sisl also interfaces with ASE.

First time use

Here we show 2 examples of using sisl together with Siesta.

To read in a Hamiltonian from a Siesta calculation and calculate the DOS for a given Monkhorst-Pack grid one would do:

import sisl
import numpy as np
H = sisl.get_sile('RUN.fdf').read_hamiltonian()
mp = sisl.MonkhorstPack(H, [13, 13, 13])
E = np.linspace(-4, 4, 500)
DOS = mp.apply.average.DOS(E)
from matplotlib import pyplot as plt
plt.plot(E, DOS)

Which calculates the DOS for a 13x13x13 Monkhorst-Pack grid.

Another common analysis is real-space charge analysis, the following command line subtracts two real-space charge grids and writes them to a CUBE file:

sgrid reference/ --diff --geometry RUN.fdf --out diff.cube

which may be analysed using VMD, XCrySDen or other tools.

Every use of sisl

There are different places for getting information on using sisl, here is a short list of places to search/ask for answers:

  • This page for the documentation!

  • Workshop examples showing different uses, see workshop

  • Ask questions on its use on the Github issue page

  • Ask questions on Discord

If sisl was used to produce scientific contributions, please use this DOI for citation. We recommend to specify the version of sisl in combination of this citation:

  author       = {Papior, Nick},
  title        = {sisl: v<fill-version>},
  year         = {2021},
  doi          = {10.5281/zenodo.597181},
  url          = {}

To get the BibTeX entry easily you may issue the following command:

sdata --cite

which fills in the version number.

A table of contents for all methods may be found here while a table of contents for the sub-modules may be found here.