Bohrium
robot
新建

空间站广场

论文
Notebooks
比赛
课程
Apps
我的主页
我的Notebooks
我的论文库
我的足迹

我的工作空间

任务
节点
文件
数据集
镜像
项目
数据库
公开
实验:不同pixel size对图像的影响
AI4S
AI4S
OrangeFree
发布于 2023-09-27
推荐镜像 :Basic Image:ubuntu20.04-py3.10-cuda11.6
推荐机型 :c12_m92_1 * NVIDIA V100
1
Step 1: 创建原子模型

Step 1: 创建原子模型

代码
文本
[1]
!pip install abtem==1.0.0b34
!pip install ase
!pip install cupy-cuda116
from ase import Atoms
from ase.build import mx2
from abtem import show_atoms
from abtem.structures import orthogonalize_cell

from ase.io import read, write
import os
import matplotlib.pyplot as plt
import numpy as np
import random
import pickle
import cupy as cp

from abtem import Probe, GridScan, Potential
from abtem import *

def show_atoms_top_and_side_view(atoms):
fig, (ax1, ax2, ax3) = plt.subplots(1, 3, figsize=(12,4))

show_atoms(atoms, ax=ax1, title='Top view')
show_atoms(atoms, ax=ax2, plane='xz', title='Side view')
show_atoms(atoms, ax=ax3, plane='yz', title='Side view')
Looking in indexes: https://pypi.tuna.tsinghua.edu.cn/simple
Requirement already satisfied: abtem==1.0.0b34 in /opt/mamba/lib/python3.10/site-packages (1.0.0b34)
Requirement already satisfied: ase in /opt/mamba/lib/python3.10/site-packages (from abtem==1.0.0b34) (3.22.1)
Requirement already satisfied: tqdm in /opt/mamba/lib/python3.10/site-packages (from abtem==1.0.0b34) (4.64.1)
Requirement already satisfied: numba in /opt/mamba/lib/python3.10/site-packages (from abtem==1.0.0b34) (0.58.0)
Requirement already satisfied: imageio in /opt/mamba/lib/python3.10/site-packages (from abtem==1.0.0b34) (2.31.4)
Requirement already satisfied: numpy in /opt/mamba/lib/python3.10/site-packages (from abtem==1.0.0b34) (1.24.2)
Requirement already satisfied: psutil in /opt/mamba/lib/python3.10/site-packages (from abtem==1.0.0b34) (5.9.4)
Requirement already satisfied: pyfftw in /opt/mamba/lib/python3.10/site-packages (from abtem==1.0.0b34) (0.13.1)
Requirement already satisfied: h5py in /opt/mamba/lib/python3.10/site-packages (from abtem==1.0.0b34) (3.8.0)
Requirement already satisfied: scipy in /opt/mamba/lib/python3.10/site-packages (from abtem==1.0.0b34) (1.10.1)
Requirement already satisfied: matplotlib in /opt/mamba/lib/python3.10/site-packages (from abtem==1.0.0b34) (3.8.0)
Requirement already satisfied: packaging>=20.0 in /opt/mamba/lib/python3.10/site-packages (from matplotlib->abtem==1.0.0b34) (23.0)
Requirement already satisfied: pillow>=6.2.0 in /opt/mamba/lib/python3.10/site-packages (from matplotlib->abtem==1.0.0b34) (10.0.1)
Requirement already satisfied: contourpy>=1.0.1 in /opt/mamba/lib/python3.10/site-packages (from matplotlib->abtem==1.0.0b34) (1.1.1)
Requirement already satisfied: python-dateutil>=2.7 in /opt/mamba/lib/python3.10/site-packages (from matplotlib->abtem==1.0.0b34) (2.8.2)
Requirement already satisfied: pyparsing>=2.3.1 in /opt/mamba/lib/python3.10/site-packages (from matplotlib->abtem==1.0.0b34) (3.1.1)
Requirement already satisfied: kiwisolver>=1.0.1 in /opt/mamba/lib/python3.10/site-packages (from matplotlib->abtem==1.0.0b34) (1.4.5)
Requirement already satisfied: fonttools>=4.22.0 in /opt/mamba/lib/python3.10/site-packages (from matplotlib->abtem==1.0.0b34) (4.42.1)
Requirement already satisfied: cycler>=0.10 in /opt/mamba/lib/python3.10/site-packages (from matplotlib->abtem==1.0.0b34) (0.11.0)
Requirement already satisfied: llvmlite<0.42,>=0.41.0dev0 in /opt/mamba/lib/python3.10/site-packages (from numba->abtem==1.0.0b34) (0.41.0)
Requirement already satisfied: six>=1.5 in /opt/mamba/lib/python3.10/site-packages (from python-dateutil>=2.7->matplotlib->abtem==1.0.0b34) (1.16.0)
WARNING: Running pip as the 'root' user can result in broken permissions and conflicting behaviour with the system package manager. It is recommended to use a virtual environment instead: https://pip.pypa.io/warnings/venv
Looking in indexes: https://pypi.tuna.tsinghua.edu.cn/simple
Requirement already satisfied: ase in /opt/mamba/lib/python3.10/site-packages (3.22.1)
Requirement already satisfied: scipy>=1.1.0 in /opt/mamba/lib/python3.10/site-packages (from ase) (1.10.1)
Requirement already satisfied: numpy>=1.15.0 in /opt/mamba/lib/python3.10/site-packages (from ase) (1.24.2)
Requirement already satisfied: matplotlib>=3.1.0 in /opt/mamba/lib/python3.10/site-packages (from ase) (3.8.0)
Requirement already satisfied: cycler>=0.10 in /opt/mamba/lib/python3.10/site-packages (from matplotlib>=3.1.0->ase) (0.11.0)
Requirement already satisfied: packaging>=20.0 in /opt/mamba/lib/python3.10/site-packages (from matplotlib>=3.1.0->ase) (23.0)
Requirement already satisfied: contourpy>=1.0.1 in /opt/mamba/lib/python3.10/site-packages (from matplotlib>=3.1.0->ase) (1.1.1)
Requirement already satisfied: pyparsing>=2.3.1 in /opt/mamba/lib/python3.10/site-packages (from matplotlib>=3.1.0->ase) (3.1.1)
Requirement already satisfied: pillow>=6.2.0 in /opt/mamba/lib/python3.10/site-packages (from matplotlib>=3.1.0->ase) (10.0.1)
Requirement already satisfied: kiwisolver>=1.0.1 in /opt/mamba/lib/python3.10/site-packages (from matplotlib>=3.1.0->ase) (1.4.5)
Requirement already satisfied: fonttools>=4.22.0 in /opt/mamba/lib/python3.10/site-packages (from matplotlib>=3.1.0->ase) (4.42.1)
Requirement already satisfied: python-dateutil>=2.7 in /opt/mamba/lib/python3.10/site-packages (from matplotlib>=3.1.0->ase) (2.8.2)
Requirement already satisfied: six>=1.5 in /opt/mamba/lib/python3.10/site-packages (from python-dateutil>=2.7->matplotlib>=3.1.0->ase) (1.16.0)
WARNING: Running pip as the 'root' user can result in broken permissions and conflicting behaviour with the system package manager. It is recommended to use a virtual environment instead: https://pip.pypa.io/warnings/venv
Looking in indexes: https://pypi.tuna.tsinghua.edu.cn/simple
Requirement already satisfied: cupy-cuda116 in /opt/mamba/lib/python3.10/site-packages (10.6.0)
Requirement already satisfied: numpy<1.25,>=1.18 in /opt/mamba/lib/python3.10/site-packages (from cupy-cuda116) (1.24.2)
Requirement already satisfied: fastrlock>=0.5 in /opt/mamba/lib/python3.10/site-packages (from cupy-cuda116) (0.8.2)
WARNING: Running pip as the 'root' user can result in broken permissions and conflicting behaviour with the system package manager. It is recommended to use a virtual environment instead: https://pip.pypa.io/warnings/venv
/opt/mamba/lib/python3.10/site-packages/tqdm/auto.py:22: TqdmWarning: IProgress not found. Please update jupyter and ipywidgets. See https://ipywidgets.readthedocs.io/en/stable/user_install.html
  from .autonotebook import tqdm as notebook_tqdm
代码
文本
[2]
def create_atoms(fomula_tag, lattice_constant_a, thick, x=15, randomize_std=0.01):
# fomula_tag表示分子式,lattice_constant_a表示晶格常数,thick表示厚度,x表示在x和y方向上都有x个单位的重复,randomize_std>0则对原子的位置进行随机扰动
atoms = mx2(formula=fomula_tag, kind='2H', a=lattice_constant_a, thickness=thick, size=(x, x, 1), vacuum=None)
atoms.set_pbc([True, True, False])
atoms = orthogonalize_cell(atoms)
atoms.center(vacuum=1, axis=2)
if randomize_std > 0:
for i in range(atoms.arrays['positions'].shape[0]):
perturbed = lattice_constant_a * np.array([np.random.normal(0, randomize_std), np.random.normal(0, randomize_std), 0])
atoms.arrays['positions'][i, :] += perturbed
return atoms
atoms=create_atoms(fomula_tag='MoS2', lattice_constant_a=3.19, thick=3.35)
代码
文本
[3]
# 配置冻结声子模型的参数
sigmas={'Mo':.1,'S':.1}# Mo和S的热振动标准差,值越大,原子热振动越剧烈
num_configs=30
# 创建冻结声子模型
frozen_phonon=FrozenPhonons(atoms,num_configs=num_configs,sigmas=sigmas)
# 计算电子和原子核的库仑势,用于定量图像模拟
slice_thickness=2 # 多层切片方法的每一层的间隔(A)
sampling_poten=0.1 # x-y网格精度(A)
potential = Potential(frozen_phonon,
sampling=sampling_poten,
projection='infinite',
slice_thickness=slice_thickness,
parametrization='kirkland').build()

# 构建电子探针
energy_EM=80e3 # 电压(V)
conv_angle=30 # 收敛角(mrad)
df=0 # 散焦(A)
C30=0 # 球差(A)
probe = Probe(energy=energy_EM, semiangle_cutoff=conv_angle,defocus=df,C30=C30, device='gpu')
# 将电子探针的网格与库仑势相匹配
probe.grid.match(potential)
代码
文本
[1]
import matplotlib.pyplot as plt
fig, axs = plt.subplots(nrows=1, ncols=5, figsize=(25,5))

desired_pixel_sizes = [0.050, 0.055, 0.060, 0.065, 0.070]

for idx, pixel_size in enumerate(desired_pixel_sizes):
# 设置扫描参数
scan_start=(1,1)#扫描开始(A)
scan_end = potential.extent#扫描结束
print('scan_end',scan_end)
scan_range = 256 * pixel_size
scan_end_new = (scan_start[0] + scan_range, scan_start[1] + scan_range)
gridscan = GridScan(start=scan_start,end=scan_end_new,sampling=pixel_size)#扫描间隔为pixel size
# 创建环形探测器
detector = FlexibleAnnularDetector()
# 执行扫描并获取测量结果
measurement = probe.scan(gridscan, detector, potential)
image2=haadf_measurement = measurement.integrate(50, 250)
axs[idx].imshow(image2.array, cmap='gray', interpolation='none')
axs[idx].set_title(f'Pixel Size: {pixel_size} Å')
axs[idx].axis('off')
filename = os.path.join('/data/abtem', f"image_{pixel_size}.png") # 命名文件为pixel值
plt.imsave(filename, image2.array, cmap='gray')

plt.tight_layout() # 调整子图的位置,使它们之间有适当的间距
plt.show() # 显示图像
代码
文本
[ ]

代码
文本
AI4S
AI4S
点个赞吧
推荐阅读
公开
不同材料abTEM仿真
STEMAI4S
STEMAI4S
OrangeFree
发布于 2023-09-21
2 赞1 转存文件4 评论
公开
氧掺杂abTEM仿真
AI4S
AI4S
Orange
发布于 2023-11-07