# 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 the 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 the 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.eigenvalue(wrap=lambda ev: ev.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/Rho.grid.nc --diff Rho.grid.nc --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

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