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
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 agit 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
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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
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
Algorithm | Hash digest | |
---|---|---|
SHA256 | a627f6fa5b85b98b8a29dae1fce5c00c6ceae3422e8a657c7ff192ee3d836594 |
|
MD5 | ee2d010fb09f249a14da5a41431d81b0 |
|
BLAKE2b-256 | 7b9fae147822b63f02a6a25c1263787c3d0074997e351f2cc6ae365387914d99 |
File details
Details for the file widget_bandsplot-0.7.4-py3-none-any.whl
.
File metadata
- Download URL: widget_bandsplot-0.7.4-py3-none-any.whl
- Upload date:
- Size: 187.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.0 CPython/3.12.5
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | aae3d2838be80d7ce514a1f3a761a77baef86691d761e908acdf49462551d4be |
|
MD5 | f64f878babe0731e9a717c990ae9e040 |
|
BLAKE2b-256 | bd0abeaffe8d6e2000d45f2da8e50cc799c12cc86380c1c36cc11ae5935a4295 |