Skip to main content

A Jupyter widget to plot band structure and density of states.

Project description

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

PyPI version Binder screenshot comparison

A Jupyter widget to plot band structures and density of states. The widget is using the mc-react-bands Javascript package and is turned into a Jupyter widget with anywidget.

Installation

pip install widget-bandsplot

Usage

Minimal usage example of the widget is the following:

widget = BandsPlotWidget(
    bands = [bands_data],
    dos = dos_data,
    energy_range = [-10.0, 10.0],
    format_settings = {
        "showFermi": True,
        "showLegend": True,
    }
)
display(widget)

where bands_data and dos_data are contain the band structure and density of states data, respectively. The format for these data objects is the following:

  • Band structure data follows the AiiDA CLI export format that can be generated from an AiiDA BandsData node with the following command:
    verdi data band export <PK> --format=json
    
  • The density of states data uses a custom format, with a a valid example being:
    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
                "lineStyle": "dash",           # optional
                "borderColor": "#41e2b3",      # optional
                "backgroundColor": "#51258b",  # optional
            },
            {
                "label": "Co",
                "x": [0.0, 0.1, 0.2],
                "y": [1.2, 3.2, 0.0],
                "lineStyle": "solid",
                "borderColor": "#43ee8b",
                "backgroundColor": "#59595c",
            },
        ],
    }
    

For more detailed usage, see example/example.ipynb and for more example input files see example/data.

Development

Install the python code:

pip install -e .[dev]

You then need to install the JavaScript dependencies and run the development server.

npm install
npm run dev

Open examples/example.ipynb in Jupyter notebook or lab to start developing. Changes made in js/ will be reflected in the notebook.

Releasing and publishing a new version

In order to make a new release of the library and publish to PYPI, run

bumpver update --major/--minor/--patch

This will

  • update version numbers, make a corresponding git commit and a git tag;
  • push this commit and tag to Github, which triggers the Github Action that makes a new Github Release and publishes the package to PYPI.

Github workflow testing

screenshot comparison

The screenshot comparison test will generate images of the widget using selenium and chrome-driver, and compares them to the reference image in test/widget-sample.png.

To update the reference image: download the generated image from the Github Workflow step called "Upload screenshots" and replace test/widget-sample.png.

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.7.4.tar.gz (185.9 kB view details)

Uploaded Source

Built Distribution

widget_bandsplot-0.7.4-py3-none-any.whl (187.8 kB view details)

Uploaded Python 3

File details

Details for the file widget_bandsplot-0.7.4.tar.gz.

File metadata

  • Download URL: widget_bandsplot-0.7.4.tar.gz
  • Upload date:
  • Size: 185.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.0 CPython/3.12.5

File hashes

Hashes for widget_bandsplot-0.7.4.tar.gz
Algorithm Hash digest
SHA256 a627f6fa5b85b98b8a29dae1fce5c00c6ceae3422e8a657c7ff192ee3d836594
MD5 ee2d010fb09f249a14da5a41431d81b0
BLAKE2b-256 7b9fae147822b63f02a6a25c1263787c3d0074997e351f2cc6ae365387914d99

See more details on using hashes here.

File details

Details for the file widget_bandsplot-0.7.4-py3-none-any.whl.

File metadata

File hashes

Hashes for widget_bandsplot-0.7.4-py3-none-any.whl
Algorithm Hash digest
SHA256 aae3d2838be80d7ce514a1f3a761a77baef86691d761e908acdf49462551d4be
MD5 f64f878babe0731e9a717c990ae9e040
BLAKE2b-256 bd0abeaffe8d6e2000d45f2da8e50cc799c12cc86380c1c36cc11ae5935a4295

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