Skip to main content

Package for bandsplot widget

Project description

widget-bandsplot: Jupyter Widget to Plot Band Structure and Density of States

PyPI version Binder

A Jupyter widget to plot band structures and density of states. The widget is using the bands-widget Javascript package, which is developed by Materials Cloud group.

Installation

To install use pip:

$ pip install widget_bandsplot

Usage

1. Plot both the band structure and the density of states (DOS) side by side

w = BandsPlotWidget(bands=[banddata1, banddata2], dos=dosdata, plot_fermilevel = True, show_legend = True, energy_range = {"ymin": -10.0, "ymax": 10.0})
display(w)

In order to plot the band structure and density of states, one needs to provide bands data and DOS data as JSON-files. The examples of the input JSON-files are provided in the examples/data folder. The JSON-files for the band structure can be exported with the AiiDA command line interface (CLI) verdi as demonstrated in the code below:

verdi data band export <PK> --format=json

One can plot several band structure input files together with the widget. The format of the DOS input dict is validate by the PDOS Schema, the exampla valid input is:

dos_data = {
    "fermi_energy": -7.0,
    "dos": [
        {
            "label": "Total DOS",   # required
            "x": [0.0, 0.1, 0.2],   # required
            "y": [1.2, 3.2, 0.0],   # required
            "borderColor": "#41e2b3",   # optional
            "backgroundColor": "#51258b",   # optional
            "backgroundAlpha": "52%",  #optional: A string with integer between 0-100 and '%' in end.
            "lineStyle": "dash",    # optional
        },
        {
            "label": "Co (s↑)",
            "x": [0.0, 0.1, 0.2],
            "y": [1.2, 3.2, 0.0],
            "lineStyle": "solid",
            "borderColor": "#43ee8b",
            "backgroundColor": "#59595c",
        },
        {
            "label": "Co (s↓)",
            "x": [0.0, 0.1, 0.2],
            "y": [1.2, 3.2, 0.0],
            "lineStyle": "solid",
            "borderColor": "#403bae",
            "backgroundColor": "#a16c5e",
        },
    ],
}

2. Plot only the band structure

w = BandsPlotWidget(bands=[banddata1, banddata2], plot_fermilevel = True, show_legend = True, energy_range = {"ymin": -10.0, "ymax": 10.0})
display(w)

3. Plot only the density of states (DOS)

w = BandsPlotWidget(dos=dosdata, plot_fermilevel = True, show_legend = True, energy_range = {"ymin": -10.0, "ymax": 10.0})
display(w)

When only plotting the density of states, the plot will be shown in horizontal format.

For developers

For a development installation (requires Node.js and Yarn version 1),

$ git clone https://github.com/osscar/widget-bandsplot.git
$ cd widget-bandsplot
$ pip install -e .
$ jupyter nbextension install --py --symlink --overwrite --sys-prefix widget_bandsplot
$ jupyter nbextension enable --py --sys-prefix widget_bandsplot

When actively developing your extension for JupyterLab, run the command:

$ jupyter labextension develop --overwrite widget_bandsplot

Then you need to rebuild the JS when you make a code change:

$ cd js
$ yarn run build

You then need to refresh the JupyterLab page when your javascript changes.

For maintainers

To create a new release, clone the repository, install development dependencies with pip install -e '.[dev]', and then execute bumpver update [--major|--minor|--patch] [--tag [alpha|beta|rc]]. This will:

  1. Create a tagged release with bumped version and push it to the repository.
  2. Trigger a GitHub actions workflow that creates a GitHub release and publishes it on PyPI.

Additional notes:

  • Use the --dry option to preview the release change.
  • The release tag (e.g. a/b/rc) is determined from the last release. Use the --tag option to switch the release tag.
  • This packages follows semantic versioning.

Acknowledgements

We acknowledge support from the EPFL Open Science Fund via the OSSCAR project.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

widget-bandsplot-0.5.0b0.tar.gz (799.6 kB view details)

Uploaded Source

Built Distribution

widget_bandsplot-0.5.0b0-py3-none-any.whl (881.1 kB view details)

Uploaded Python 3

File details

Details for the file widget-bandsplot-0.5.0b0.tar.gz.

File metadata

  • Download URL: widget-bandsplot-0.5.0b0.tar.gz
  • Upload date:
  • Size: 799.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.9.15

File hashes

Hashes for widget-bandsplot-0.5.0b0.tar.gz
Algorithm Hash digest
SHA256 ebdc9349e51daa34919f9b45bed7b100c4f261d224cc2dbb638323e50c6140ed
MD5 641b0dcb924441e0c5933eec3cfffd04
BLAKE2b-256 8b4859bbaac612ad23a773c3ded449fd8316101b88d4450712737e274d70cc3d

See more details on using hashes here.

File details

Details for the file widget_bandsplot-0.5.0b0-py3-none-any.whl.

File metadata

File hashes

Hashes for widget_bandsplot-0.5.0b0-py3-none-any.whl
Algorithm Hash digest
SHA256 cff88354821135e2cdc2e119cafbd52ccac159a814f1d3e48d2db95c5adbe0a1
MD5 44298307cd3ec21381b1917bbb2836e0
BLAKE2b-256 7ff6d505d7da3da7f663cd13a12adcee7a42f48d8ed5d959717be9bb03aa760d

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page