Будем считать, что Python 3 и Jupyter Notebook уже установлены.
Открываем командную строку (на примере Ubuntu) и по очереди вводим команды:
python3 -m pip install nglview
python3 -m pip install pymatgen
python3 -m pip install ase
jupyter-nbextension enable nglview --py
jupyter notebook
Мне этого хватило, чтоб всё заработало. Теперь переходим в браузер в Jupyter, создаём новый ноутбук, в котором выполняем следующий код:
# Visualize pymatgen's structure with NGLView https://gist.github.com/lan496/3f60b6474750a6fd2b4237e820fbfea4 https://pymatgen.org/pymatgen.core.structure.html
import nglview
from pymatgen.core import Structure, Lattice
import numpy as np
# https://github.com/pyiron/pyiron/blob/9ba4f1efa57b286d69ee2cdb6b865782eda755f5/pyiron/atomistics/structure/_visualize.py
def plot3d(structure, spacefill=True, show_axes=True):
from itertools import product
from pymatgen.core import Structure
from pymatgen.core.sites import PeriodicSite
eps = 1e-8
sites = []
for site in structure:
species = site.species
frac_coords = np.remainder(site.frac_coords, 1)
for jimage in product([0, 1 - eps], repeat=3):
new_frac_coords = frac_coords + np.array(jimage)
if np.all(new_frac_coords < 1 + eps):
new_site = PeriodicSite(species=species, coords=new_frac_coords, lattice=structure.lattice)
sites.append(new_site)
structure_display = Structure.from_sites(sites)
view = nglview.show_pymatgen(structure_display)
view.add_unitcell()
if spacefill:
view.add_spacefill(radius_type='vdw', radius=0.5, color_scheme='element')
view.remove_ball_and_stick()
else:
view.add_ball_and_stick()
if show_axes:
view.shape.add_arrow([-4, -4, -4], [0, -4, -4], [1, 0, 0], 0.5, "x-axis")
view.shape.add_arrow([-4, -4, -4], [-4, 0, -4], [0, 1, 0], 0.5, "y-axis")
view.shape.add_arrow([-4, -4, -4], [-4, -4, 0], [0, 0, 1], 0.5, "z-axis")
view.camera = "perspective"
return view
# А здесь запускаем просмотр выбранного файла
plot3d(
Structure.from_file(
"IDAO-2022-main/data/dichalcogenides_public/structures/6141cf13cc0e69a0cf28ab3b.json"
),
spacefill=True
)
В результате должен открыться просмотрщик молекулы nglview. Всё можно крутить, вертеть, увеличивать и т.д.
Всем удачи!