Skip to main content
Build Status JOSS Paper Pypi Repository Zenodo Repository

Sumo is a Python toolkit for plotting and analysis of ab initio solid-state calculation data, built on existing Python packages from the solid-state chemistry/physics community. It is hoped that these command-line tools will bring some of the benefits of these libraries to a wider user-base while providing publication-ready plotting (powered by Matplotlib.)

The main features include:

  1. An extensive framework for generating high-symmetry k-point paths.

    • Crystallographic spacegroups are determined using Spglib.

    • Conventional crystallographic paths are built in as well as interfaces to the SeeK-path and Pymatgen implementations.

  2. Plotting scripts for electronic and phonon band structures, density of states, and optical absorption diagrams.

    • VASP calculations are imported using Pymatgen.

    • The Phonopy framework is supported for phonon band structures.

  3. Analysis scripts to calculate parabolic and non-parabolic band effective masses.

    • Curve fitting is performed using Scipy.

The code currently primarily supports VASP calculations, and has partial support for CASTEP and for LMTO calculations with Questaal. We would like to add support for additional solid-state codes in future releases. Code contributions to interface with these packages are welcome.

Sumo is free to use, however, we ask that you cite the code if you use it in your research. See the “contributing” section for information about reporting bugs and getting involved.

Usage

Sumo is intended to be used via the command-line, however, a fully-documented python API is also provided. A manual, including tutorials and API documentation, is available online. Additionally, the built-in help (-h) option for each command provides a summary of the available options.

A guide to using each command can be found on the Tutorial page.

For a preview of the functionality of sumo, see the Gallery.

Currently, the scripts provided are:

  • sumo-kgen: For generating VASP KPOINTS files along high-symmetry k-point paths.

  • sumo-bandplot: For plotting publication-ready electronic band structure diagrams.

  • sumo-dosplot: For plotting publication-ready electronic density of states diagrams.

  • sumo-optplot: For plotting publication-ready optical absorption diagrams.

  • sumo-phonon-bandplot: For plotting publication-ready phonon band structure diagrams.

  • sumo-bandstats: For calculating electron and hole effective masses from a band structure.

Information on how to tweak the style of sumo plots is provided on the Customising Sumo Plots page.

Feature support for different codes

Features

VASP

CASTEP

Questaal

k-point path generation

Y

Y (1)

Y

band plotting

Y

Y

Y

band projections

Y

N

N

band analysis

Y

N

N

total DOS plot

Y

Y

Y

projected DOS

Y

Y

Y

phonon band plot

Y (2)

Y

N

  1. Brillouin-zone path can also be written for CASTEP phonon calculation

  2. VASP phonons are plotted from Phonopy output files

Installation

Sumo is a Python 3 package and requires a typical scientific Python stack; we recommend using your main package manager if possible (e.g. apt, Homebrew), or Anaconda to install Python 3 with setuptools. It is a good idea to also use this package manager to install Numpy and Matplotlib, as building them with setuptools can be troublesome. Sumo can then be installed using the Python package manager “Pip”, which will automatically setup other Python packages as required:

pip install --user sumo

If this is your first entry to the scientific Python ecosystem, be aware that the full stack including Scipy with need several hundred MB of disk space.

Developer installation

Regular users can skip this section!

Sumo can also be installed from a copy of the source repository (https://github.com/smtg-bham/sumo); this will be preferred for development work or if using experimental code branches.

To clone the project from Github and make a local installation:

git clone https://github.com/smtg-bham/sumo.git
cd sumo
pip install --user -e .

The -e and --user options are recommended: Instead of copying files, with -e pip will create links to the source folder so that that tweaks to the code will be immediately reflected on the PATH. The --user flag installs to a directory in your home folder (usually under the hidden directory ~/.local), preventing interference with your root Python installation.

Tests

From a developer installation, the unit tests can be run (from the root directory of the project) using:

pytest

Automatic testing is run on the master branch of Sumo and proposed features using GitHub Actions.

Documentation

To build the documentation from the project files, install sumo with extra Sphinx dependencies before compiling with sphinx-build.

pip install --user .[docs]
sphinx-build docs/src docs_build

The user guide can then be explored from docs/build/html/index.html.

How to cite sumo

If you use sumo in your research, please consider citing the following work:

Alex M. Ganose, Adam J. Jackson, David O. Scanlon. sumo: Command-line tools for plotting and analysis of periodic ab initio calculations. Journal of Open Source Software, 2018 3 (28), 717, doi:10.21105/joss.00717.

License

Sumo is made available under the MIT License.

Detailed requirements

Sumo is currently compatible with Python 3.10+ and relies on a number of open-source python packages, specifically:

Contributing

Bugs reports and feature requests

There are probably still some bugs. If you think you’ve found one, please report it on the Issue Tracker. This is also the place to propose ideas for new features or ask questions about the design of Sumo. Poor documentation is considered a bug, but please be as specific as possible when asking for improvements.

Code contributions

We welcome your help in improving and extending the package with your own contributions. This is managed through Github pull requests; for external contributions we prefer the “fork and pull” workflow while core developers use branches in the main repository:

  1. First open an Issue to discuss the proposed contribution. This discussion might include how the changes fit Sumo’s scope and a general technical approach.

  2. Make your own project fork and implement the changes there. Please keep your code style compliant with PEP8.

  3. Open a pull request to merge the changes into the main project. A more detailed discussion can take place there before the changes are accepted.

Release files for sumo 3.0.0

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

Source distribution (sdist)

Source distribution for sumo 3.0.0
File Size Uploaded
sumo-3.0.0.tar.gz 117.1 kB Details

Built distribution (wheel)

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

Total release size: 257.6 kB

Release files / sumo-3.0.0.tar.gz

Download URL sumo-3.0.0.tar.gz
Size 117.1 kB
Tags Source
SHA-256 checksum
How to use checksums
6b9206784464dc3e35845759106b436e32bb1cb4784d5b8a2c53b5f2969de4f1
BLAKE2b-256 checksum
How to use checksums
0a85e3e25e356d8ce39be2eaf4bbc632df4ed58ad5db706c8bb3dcbac9c6c283
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 3, 2026.

Transparency log

Release files / sumo-3.0.0-py3-none-any.whl

Download URL sumo-3.0.0-py3-none-any.whl
Size 140.5 kB
Tags Python 3
SHA-256 checksum
How to use checksums
1f0161322bb9ce45933cadeb968eb50f340686a47675abb90671443ab262e856
BLAKE2b-256 checksum
How to use checksums
7aafccaa4c29145730608bc515d08a2039336bb677a479902a8116449f200ac5
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 3, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

3.0.0 This release

2 release files

2.4.0

2 release files

2.3.11

2 release files

2.3.10

2 release files

2.3.9

2 release files

2.3.8

2 release files

2.3.7

2 release files

2.3.6

2 release files

2.3.5

2 release files

2.3.4

2 release files

2.3.3

2 release files

2.3.2

2 release files

2.3.1

2 release files

2.3.0

2 release files

2.2.5

2 release files

2.2.4

2 release files

2.2.3

2 release files

2.2.2

2 release files

2.2.1

2 release files

2.2.0

2 release files

2.1.1

2 release files

2.1.0

2 release files

2.0.2

2 release files

2.0.1

2 release files

2.0.0

2 release files

1.4.0

2 release files

1.3.0

2 release files

1.2.0

2 release files

1.1.3

2 release files

1.1.2

2 release files

1.1.1

2 release files

1.1.0

2 release files

1.0.10

1 release file

1.0.9

2 release files

1.0.8

2 release files

1.0.7

2 release files

1.0.6

2 release files

1.0.5

2 release files

1.0.4

2 release files

1.0.3

2 release files

1.0.2

1 release file

1.0.1

2 release files

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