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

Uploaded Source

Built Distribution

weas_widget-0.0.13-py3-none-any.whl (10.6 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: weas_widget-0.0.13.tar.gz
  • Upload date:
  • Size: 10.0 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.13.tar.gz
Algorithm Hash digest
SHA256 f32c5b02c93dcf91cbd193a5f10cfd4dc72fe3cc61987192864f77fbe411c5ea
MD5 aaa2d8c22283fc25e3e1ea70387f08da
BLAKE2b-256 ce38667a1e56c9ea86ed7b3924e2538fe7f6fc3b9d19baff5f34e1c3f96aec9c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for weas_widget-0.0.13-py3-none-any.whl
Algorithm Hash digest
SHA256 7dbd17f91f2ec9f481e408e71479533f53b7464f74b4fb087127648a1b385a7d
MD5 47f4abe40a99895edb4e6c20e864a278
BLAKE2b-256 5fd4e8ade4d49abd3fe708675ebbca1e94bfbd5c1f354ded9abc5dd57697505b

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