Skip to main content

A widget to visualize and interact with atomistic structures in Jupyter Notebook.

Project description

Welcome to WEAS Widget!

PyPI version Docs status Unit test

A widget to visualize and edit atomistic structures in Jupyter Notebook. It uses WEAS (Web Environment For Atomistic Structure) in the backend.

Features:

  • Model: space-filling, ball-stick, polyhedral.
  • Supported File type: cif, xyz.
  • Edit structure: move, rotate, delete and replace atoms.
  • Support periodic boundary conditions
  • Animation
  • Isosurface
  • Vector field, e.g., magnetic moment

Installation

Use the pip:

pip install weas-widget

To install the latest version from source, first clone the repository and then install using pip:

git clone https://github.com/superstar54/weas-widget
cd weas-widget
npm install
npm run build
pip install -e .

How to use

Please visit: https://weas-widget.readthedocs.io/en/latest/index.html

Issue

If you encounter any problems, please update the widget to the latest version.

    pip install weas-widget  --upgrade

If the problem persists, please report it on the GitHub issue

Edit the structure with mouse and keyboard

WEAS supports editing the atoms directly in the GUI and synchronizing with the structure of the Python object.

Select Atoms

There are two methods for selecting atoms:

  • Pick Selection: Click directly on an atom to select it.
  • Range Selection: Hold the Shift key and drag the right mouse button to select a group of atoms.

Move, Rotate selected atoms

Press the transform shortcut, and move your mouse.

Operation Shortcut
Move g
Rotate r
Duplicate d

Delete selected atoms

Press the Delete key to delete the selected atoms

Export edited atoms

One can export the edited atoms to ASE or Pymatgen

Example

Load structure

One can load a structure from ASE or Pymatgen

from ase.build import molecule
from weas_widget import WeasWidget
atoms = molecule("C2H6SO")
viewer = WeasWidget()
viewer.from_ase(atoms)
viewer

Crystal view

For a nice visualization of a crystal, one usually shows the polyhedra and the atoms on the unit cell boundary, as well as the bonded atoms outside the cell.

from weas_widget import WeasWidget
viewer1 = WeasWidget()
viewer1.load_example("tio2.cif")
viewer1.modelStyle = 2
viewer1.boundary = [[-0.1, 1.1], [-0.1, 1.1], [-0.1, 1.1]]
viewer1.showBondedAtoms = True
viewer1.colorType = "VESTA"
viewer1

Isosurface

from ase.build import molecule
from weas_widget import WeasWidget
from ase.io.cube import read_cube_data
volume, atoms = read_cube_data("h2o-homo.cube")
viewer = WeasWidget()
viewer.from_ase(atoms)
viewer.volumetricData = {"values": volume}
viewer.isoSettings = [{"isovalue": 0.0001, "mode": 0}]
viewer

Magnetic moment

Show the magnetic moment as a vector field.

from ase.build import bulk
from weas_widget import WeasWidget
import numpy as np
atoms = bulk("Fe", cubic=True)
atoms*=[2, 2, 1]
atoms.set_array("moment", np.ones(len(atoms)))
viewer = WeasWidget()
viewer.from_ase(atoms)
viewer.modelStyle = 1
viewer

Phonon

One can visualize the phonon dispersion via lattice vibrations. One only need to use the eigenstates (calculated with an external software) to generate the trajectory.

import numpy as np
from ase.build import bulk
from weas_widget import WeasWidget
from weas_widget.utils import generate_phonon_trajectory

atoms = bulk("Fe", cubic=True)
eigenvector = np.array([[0, -0.0, 0.5], [0, 0.0, -0.5]])
trajectory = generate_phonon_trajectory(atoms, eigenvector, repeat=[4, 4, 1])
viewer = WeasWidget()
viewer.from_ase(trajectory)
# set a vector field to show the arrow
viewer.vectorField = [{"origins": "positions", "vectors": "movement", "radius": 0.1}]
viewer

Save image

Save image to a path by:

viewer.save_image("/home/xing/filename.png")

Download image

This will open a download panel.

viewer.download_image("filename.png")

Contact

License

MIT

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

weas_widget-0.0.12.tar.gz (9.9 kB view details)

Uploaded Source

Built Distribution

weas_widget-0.0.12-py3-none-any.whl (10.5 kB view details)

Uploaded Python 3

File details

Details for the file weas_widget-0.0.12.tar.gz.

File metadata

  • Download URL: weas_widget-0.0.12.tar.gz
  • Upload date:
  • Size: 9.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.11.5

File hashes

Hashes for weas_widget-0.0.12.tar.gz
Algorithm Hash digest
SHA256 f33de7cb80ffd6b00c8ce98fdab184452691c5388c6310900d2c0f93953f605c
MD5 342f108ff5b41b4181d5b573fadc10a7
BLAKE2b-256 114fa9b1209c6bfedfa0397507211174cfeb45dde1f0da28eda8a7ceecd830be

See more details on using hashes here.

File details

Details for the file weas_widget-0.0.12-py3-none-any.whl.

File metadata

File hashes

Hashes for weas_widget-0.0.12-py3-none-any.whl
Algorithm Hash digest
SHA256 234fc4d7812709d142845d6fb6217f6fd5ac13d56f7bef3aff31afb371a6bdaa
MD5 35355d5a810e00117b407cbb105a6868
BLAKE2b-256 a836dbc65503b75944645a6518ee4e372334885cdb38cffaeb5becf79a6ef9f0

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