使用 jupyterlab 交互式可视化晶体结构

介绍

在研究材料信息学时,我经常想用 jupyterlab 可视化晶体结构。虽然可以在随机图表上绘制原子,但在使用鼠标交互移动它们时能够从各个角度看到它们会很方便。这一次,我将介绍水晶工具包,它可以很容易地可视化晶体结构。

安装
pip install crystal-toolkit

确保 jupyterlab 的版本是 3 或更高版本。 2、你需要安装一个额外的扩展。

尝试可视化晶体结构

您可以通过在 jupyterlab 中执行以下命令轻松地对其进行可视化。

from crystal_toolkit.renderables import StructureGraph
from pymatgen.analysis.local_env import MinimumDistanceNN
from pymatgen.core import Structure

struct = Structure.from_file("ZnO.cif")
env = MinimumDistanceNN()
graph = StructureGraph.with_local_env_strategy(struct, env)
graph

当你运行它时,你会在输出部分看到如下图。

您可以用鼠标旋转晶体并将鼠标悬停在原子上以查看它们的坐标。

代码说明
from crystal_toolkit.renderables import StructureGraph

这部分看似导入了crystal_toolkit的StructureGraph,但实际上导入了pymatgen的StructureGraph。最重要的是,方法get_scene() 被添加到StructureGraph 并返回。这个get_scene() 使得在 jupyter 中显示交互式对象成为可能。

剩下要做的就是实例化它并将Structure 对象和MinimumDistanceNN 类传递给它以确定绑定。任何其他加入判断类(CrystalNN 等)都可以。

改变外观

也可以改变水晶的外观。如上所述,破解get_scene() 看起来不错。看源代码,

StructureGraph.get_scene = get_structure_graph_scene

这是让我们更改get_structure_graph_scene。

from crystal_toolkit.core.legend import Legend
from crystal_toolkit.renderables.structuregraph import get_structure_graph_scene

StructureGraph.get_scene = lambda x: get_structure_graph_scene(
    x,
    bond_radius=0.2,
    legend=Legend(struct, color_scheme="VESTA")
)

graph = StructureGraph.with_local_env_strategy(struct, MinimumDistanceNN())
graph

我更改了get_structure_graph_scene 的参数。使键更厚一点,并使用与 VESTA 相同的原子颜色绘制它。我可以改变我的外表。更详细的调整需要自己创建Scene对象。

概括

我能够使用水晶工具包通过 jupyterlab 轻松可视化晶体结构。除此之外,似乎可以以类似于“材料项目”页面的方式显示分子和相图。如果它们有用,我想介绍它们。

原创声明:本文系作者授权爱码网发表,未经许可,不得转载;

原文地址:https://www.likecs.com/show-308626919.html

63人参与, 0条评论 登录后显示评论回复

你需要登录后才能评论 登录/ 注册