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

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 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

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

Uploaded Source

Built Distribution

weas_widget-0.0.8-py3-none-any.whl (8.4 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: weas-widget-0.0.8.tar.gz
  • Upload date:
  • Size: 9.3 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.8.tar.gz
Algorithm Hash digest
SHA256 98303368fd2b2c261fa4fcda0ba6071f503a2205fbf76565a5be8b1416c07b55
MD5 8a7f7dc3db74d951fd8340711806d712
BLAKE2b-256 29294edb63eee58161193277bb80a87533f51b11a3be731c316d9f9b28eb7e8c

See more details on using hashes here.

File details

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

File metadata

  • Download URL: weas_widget-0.0.8-py3-none-any.whl
  • Upload date:
  • Size: 8.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.11.0

File hashes

Hashes for weas_widget-0.0.8-py3-none-any.whl
Algorithm Hash digest
SHA256 804e2cbfc88d23e1c25b5bf94aca7331f167611cf53956e96ec70c8d3764b0e7
MD5 aa3fde2f181ee2b17a8ece2cf3135060
BLAKE2b-256 1497f76c623e472a17f5aee99c22cfbce7a9a2d8f84c5bb7fb4846a4664dbf70

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