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
    $ pip install -e weas-widget

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

Delete selected atoms

Press the x 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

Download image

viewer.download_image("filename.png")

How to use

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

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

Uploaded Source

Built Distribution

weas_widget-0.0.10-py3-none-any.whl (8.9 kB view details)

Uploaded Python 3

File details

Details for the file weas-widget-0.0.10.tar.gz.

File metadata

  • Download URL: weas-widget-0.0.10.tar.gz
  • Upload date:
  • Size: 9.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.11.0

File hashes

Hashes for weas-widget-0.0.10.tar.gz
Algorithm Hash digest
SHA256 c9edea365d59d0026d124f2165459662b513eb0b1fdcc9afdcf5f03aada0061c
MD5 bb93bcfa45b7ecf23562adb8e11cdb06
BLAKE2b-256 510eef2a98091abccdca7a1ec02dc78b88a03c9c2f46041a40e5d72a34d869a2

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for weas_widget-0.0.10-py3-none-any.whl
Algorithm Hash digest
SHA256 5407575da931960459c065fd0eadd604151ea10a861c4e8fe78a966aa3cd02e6
MD5 12643bd5a3b1dfe9d8b9407a1ebbfa0c
BLAKE2b-256 83bce3a06e36ccb98680cc25af70c5051316fad6ebcaaf04d0729e679a33214b

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