【ASE】笔记总结

这里写自定义目录标题

    • ASE 介绍
    • ASE 的安装
    • 文件格式的转化
        • 命令行操作
        • 图形界面操作
        • Python代码操作[2]
        • 支持的文件转化格式
    • ASE(三):图形界面查看/建立/修改结构
        • 图形界面召唤
        • 查看结构
    • python代码查看/建立结构
        • 读写、查看结构
        • 建立结构
        • 分子
    • 周期性体系

https://nb.bohrium.dp.tech/detail/7217528884?utm_source=csdn

https://zhuanlan.zhihu.com/p/446086740?utm_id=0

https://blog.csdn.net/qq_40481843/article/details/128170814

pip install --upgrade ase
  • read(),write()函数,作用分别是:将结构信息读取为atom object,将atom object写入文件;
  • atom_object.get_positions()函数,可以获取atom object中所有的原子坐标信息,数据形式为列表;
  • atom.index,atom.symbol,可以获取atom object中某种元素所对应所有原子索引

del atom_object[atom_index] ,删除atom object中某个原子

ASE 介绍

ASE (Atomic Simulation Environment) 是计算化学/计算材料领域的一个很好用的工具,能够用于建模、文件格式转化、计算结果分析与可视化,它内置了结构优化、过渡态计算、分子动力学模拟等一些常用的计算方法。同时,ASE有很多常用计算软件的接口 (calculators),用于生成输入文件,批量处理计算与运行。

它是一个Python库,同时也有图形界面 (GUI)和命令行工具,非常容易上手。官网的Tutorials有很多计算的示例代码,对计算小白超级友好。

GUI:https://wiki.fysik.dtu.dk/ase/ase/gui/gui.html#index-0

命令行工具:https://wiki.fysik.dtu.dk/ase/cmdline.html

示例:https://wiki.fysik.dtu.dk/ase/tutorials/tutorials.html

在这里插入图片描述

从结构的初始建模,输入文件中参数设置,计算任务提交,到结果可视化与分析的一个完整计算流程,都可以通过ASE完成,更简单来说,通过一个Python文件就可以完成。

虽然针对不同的计算软件已有许多计算脚本,比如VASPKIT[6],Gaussian的一些脚本[7]等,但是这些脚本往往只适用于某一个特定的软件。如果在研究中需要使用多个软件进行计算,需要批量生成或处理文件,ASE是一个不错的选择。

ASE 的安装

https://wiki.fysik.dtu.dk/ase/install.html

无论是Windows, Linux还是Mac OS X系统的安装,官网都有详细的介绍。安装不难,一步步跟着教程做即可。

装完ASE以后记得设置环境变量!
(这样可以使用命令行方式快速使用 ase)

文件格式的转化

使用Material Studio建模,用VASP做计算时通常需要将构建的xsd或cif文件转化为POSCAR文件进行输入。

有许多脚本/软件可以做到这一点,比如:

  • 用VESTA打开cif文件,另存为.vasp文件,修改名称为POSCAR。(VESTA的好处是能够选择使用direct坐标还是cartesian坐标)
  • 使用VASPKIT的105或106的cif2pos.py或xsd2pos.py。
  • Material Studio脚本xsd2pos.pl。
  • OpenBabel。

那如果后续想用其他软件处理优化好的结构呢?那又要去寻找对应的软件。这个时候,ASE的优势就凸显出来了。

在命令行输入命令 ase convert input output ,其中input 为建好的结构文件,output是转化后的文件。

命令行操作

只需要在终端输入下面这行即可将Cu.cif文件转化为POSCAR文件。

ase convert Cu.cif POSCAR

之前大师兄网站讲ASE[1]的时候使用的是这个命令,

ase gui Cu.cif -o POSCAR 

试了一下也可以正常转化,不过会有一个UserWarning: You should be using “ase convert …” instead! 的警告。

看来ASE官方还是推荐使用ase convert,直译过来就是ase 转化,需要敲的命令更少,也更好记。

图形界面操作

很多时候建完模希望先打开看一眼结构对不对,再转换成输入文件。可以先用

ase gui Cu.cif

可视化,再通过菜单栏的 File-save 另存为POSCAR。不过这种操作和使用VESTA转化也没什么区别了……

图形界面的好处是可以固定原子!

在图形界面选择原子并固定,另存为POSCAR的时候会把固定的信息也存储下来,即POSCAR中的T T T/ F F F,比使用其他脚本根据z坐标设置固定范围方便得多,也不会固定错原子(血泪教训)。

Python代码操作[2]

本质上就是文件的读和写。

from ase.io import read, writeCu = read('Cu.cif') # 有多帧结构时可以指定index# 一般来说中间会对Cu结构进行一些操作……write('POSCAR', Cu) # write可以有很多参数,不过这样就可以转化为想要的POSCAR文件了
支持的文件转化格式

https://wiki.fysik.dtu.dk/ase/ase/io/io.html#module-ase.io

在这里插入图片描述在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

当然,这种文件转化不止适用于POSCAR和cif文件,ASE支持很多很多文件格式,常用的计算软件的输入输出文件都可以进行处理。

https://zhuanlan.zhihu.com/p/585635093?utm_id=0

ASE(三):图形界面查看/建立/修改结构

图形界面召唤

在命令行输入:

ase gui

即可。图形界面长这样

看上去比较普通,但还挺好用的。

查看结构
ase gui 结构名

python代码查看/建立结构

https://wiki.fysik.dtu.dk/ase/ase/build/build.html#module-ase.build

上一篇介绍了怎么用图形界面查看/建立/修改结构,但ASE更常见的应用是基于python代码来研究结构。建议将这篇和上一篇对比着看。

读写、查看结构
from ase.visualize import view #从ASE查看结构的模块visualize导入view
from ase.io import read #导入ASE读取文件的函数readstructure = read('***') #***是结构文件名,支持绝大多数格式
view(structure) #会弹出和命令行使用ase gui ***一样的图形界面#也可以将结构写入文件
from ase.io import write
write('***',structure)

view()函数也可以有其他的关键词,比如view(atoms, viewer=‘VMD’, data=…) 。

  • viewer可以有: ‘ase.gui’, ‘gopenmol’, ‘vmd’, ‘rasmol’, ‘paraview’, ‘ngl’, ‘x3d’
  • data可以显示3D数据,比如电荷密度。
建立结构

无论是分子还是周期性体系,都可以通过ASE构建。

分子

ASE有一个叫G2的数据库,里面有常见的分子。

from ase.collections import g2
print(g2.names)  '''
#数据库里的分子['PH3', 'P2', 'CH3CHO', 'H2COH', 'CS', 'OCHCHO', 'C3H9C', 'CH3COF','CH3CH2OCH3', 'HCOOH', 'HCCl3', 'HOCl', 'H2', 'SH2', 'C2H2','C4H4NH', 'CH3SCH3', 'SiH2_s3B1d', 'CH3SH', 'CH3CO', 'CO', 'ClF3','SiH4', 'C2H6CHOH', 'CH2NHCH2', 'isobutene', 'HCO', 'bicyclobutane','LiF', 'Si', 'C2H6', 'CN', 'ClNO', 'S', 'SiF4', 'H3CNH2','methylenecyclopropane', 'CH3CH2OH', 'F', 'NaCl', 'CH3Cl','CH3SiH3', 'AlF3', 'C2H3', 'ClF', 'PF3', 'PH2', 'CH3CN','cyclobutene', 'CH3ONO', 'SiH3', 'C3H6_D3h', 'CO2', 'NO','trans-butane', 'H2CCHCl', 'LiH', 'NH2', 'CH', 'CH2OCH2','C6H6', 'CH3CONH2', 'cyclobutane', 'H2CCHCN', 'butadiene', 'C','H2CO', 'CH3COOH', 'HCF3', 'CH3S', 'CS2', 'SiH2_s1A1d', 'C4H4S','N2H4', 'OH', 'CH3OCH3', 'C5H5N', 'H2O', 'HCl', 'CH2_s1A1d','CH3CH2SH', 'CH3NO2', 'Cl', 'Be', 'BCl3', 'C4H4O', 'Al', 'CH3O','CH3OH', 'C3H7Cl', 'isobutane', 'Na', 'CCl4', 'CH3CH2O', 'H2CCHF','C3H7', 'CH3', 'O3', 'P', 'C2H4', 'NCCN', 'S2', 'AlCl3', 'SiCl4','SiO', 'C3H4_D2d', 'H', 'COF2', '2-butyne', 'C2H5', 'BF3', 'N2O','F2O', 'SO2', 'H2CCl2', 'CF3CN', 'HCN', 'C2H6NH', 'OCS', 'B', 'ClO','C3H8', 'HF', 'O2', 'SO', 'NH', 'C2F4', 'NF3', 'CH2_s3B1d','CH3CH2Cl', 'CH3COCl', 'NH3', 'C3H9N', 'CF4', 'C3H6_Cs', 'Si2H6','HCOOCH3', 'O', 'CCH', 'N', 'Si2', 'C2H6SO', 'C5H8', 'H2CF2', 'Li2','CH2SCH2', 'C2Cl4', 'C3H4_C3v', 'CH3COCH3', 'F2', 'CH4', 'SH','H2CCO', 'CH3CH2NH2', 'Li', 'N2', 'Cl2', 'H2O2', 'Na2', 'BeH','C3H4_C2v', 'NO2']'''from ase.build.molecule import extra
print(extra.keys())  #输出:dict_keys(['Be2', 'C7NH5', 'BDA', 'biphenyl', 'C60'])

使用molecule()函数构建分子:

from ase.build import molecule
atoms = molecule('H2O')

周期性体系

  1. 纳米管

ase.build的nanotube()构建,默认是碳纳米管,n和m是纳米管的(n,m)标记。

ase.build.nanotube(n,m,length=1,bond=1.42,symbol='C',verbose=False,vacuum=None)
  1. 石墨烯纳米带
ase.build.graphene_nanoribbon(n,m,type='zigzag',saturated=False,C_H=1.09,C_C=1.42,vacuum=None,magnetic=False,initial_mag=1.12,sheet=False,main_element='C',saturate_element='H')
  1. 体相

简单的bulk金属可以使用ase.build模块的bulk()函数构建。

ase.build.bulk(name:str,crystalstructure:Optional[str]=None,a:Optional[float]=None,b:Optional[float]=None,c:Optional[float]=None,*,alpha:Optional[float]=None,covera:Optional[float]=None,u:Optional[float]=None,orthorhombic:bool=False,cubic:bool=False,basis=None)

from ase.build import bulk
a1 = bulk('Cu', 'fcc', a=3.6) # 得到Cu原胞,1个原子
a1.cell #查看晶格常数
'''
晶胞:
array([[ 0. ,  1.8,  1.8],[ 1.8,  0. ,  1.8],[ 1.8,  1.8,  0. ]])
'''a2 = bulk('Cu', 'fcc', a=3.6, orthorhombic=True) #ASE默认,2个Cu原子
'''
array([[ 0. ,  1.8,  1.8],[ 1.8,  0. ,  1.8],[ 1.8,  1.8,  0. ]])
'''a3 = bulk('Cu', 'fcc', a=3.6, cubic=True) #惯用晶胞conventional cell,4个原子
'''
array([[ 3.6,  0. ,  0. ],[ 0. ,  3.6,  0. ],[ 0. ,  0. ,  3.6]])
'''
  1. 表面

ase.build模块下有一些常见晶面、晶体结构的函数,可以直接调用:

  • fcc: fcc100(), fcc110(), fcc111(), fcc211(), fcc111_root()
  • bcc: bcc100(), bcc110(), bcc111() * - bcc111_root()
  • hcp: hcp0001(), hcp10m10(), hcp0001_root()
  • diamond: diamond100(), diamond111()

也可以使用surface()函数构建不那么常见的界面

ase.build.surface(lattice,indices,layers,vacuum=None,tol=1e-10,periodic=False)

比如:

s1 = surface('Au', (2, 1, 1), 9) #Au211面,9层
s1.center(vacuum=10, axis=2) #在c方向加10Å真空层

ASE的局限性在于只能构建简单、常见的结构,在建模效率上可能不如Material Studio点几下就行那么方便,研究复杂结构更多地还是从Materials Project等数据库下载,或者根据文献里的结构进行修改。那这个究竟有什么用呢?个人觉得Python代码的好处是它的灵活性,在需要批量生成结构、与其他代码联用等场景则非常有用;另一个优点则是稳定性,对一个初学者来说,在可视化建模软件点错了几个设置可能会影响建出的模型,但使用同一份Python代码建出来的则是一样的结构。

(使用ASE修改结构后续再慢慢填坑吧。)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/27034.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

新创作活动,The Sandbox 宣布第二届 “创作者挑战”!

是时候展示你的实力了! 继首届 “创作者挑战” 成功举办之后,The Sandbox 很高兴推出第二届 "创作者挑战",邀请创作者再次释放他们的创造力和创业精神。本次活动从 2024 年 6 月 24 日开始至 8 月 26 日结束,为期 10 …

Ant-design-vue开源项目介绍、应用场景、组件有哪些

文章目录 一、Ant-design-vue项目介绍二、Ant-design-vue项目特点三、Ant-design-vue应用场景四、Ant-design-vue有哪些组件五、Ant-design-vue案例代码1. 后台管理系统登录页面的例子2. Table组件使用案例 开源项目地址 一、Ant-design-vue项目介绍 Ant-design-vue 是一个基于…

第104天: 权限提升-Linux 系统环境变量定时任务权限配置不当MDUT 自动化

目录 案例一:Linux-环境变量文件配合 SUID-本地 案例二:Linux-定时任务打包配合 SUID-本地 案例三:Linux-定时任务文件权限配置不当-WEB&本地 案例四:Linux-第三方软件 MYSQL 数据库提权-WEB&本地 隧道出网 手工提权…

Science Online《科学周刊》文献在家如何查找下载

今天有位同学自己学校没有Science《科学》数据库,求助几篇该数据库文献,小编就把自己在家下载文献的方法分享给了这位同学,同时也分享给其他有需要文献下载但找不到资源的朋友。本文以下载Science《科学》文献为例来演示一下在家获取文献的过…

32T存储删除视频的恢复方法

由于存储技术的发展和普及目前很多行业都开始使用小型存储,NAS可以通过网络进行数据上传和读取,使用极为方便。但是由于NAS设备容量较大且碎片较多,所以此类设备删除或者格式后恢复难度是比较大的,下边我们来分享下32T存储的恢复方…

opencv安装笔记 各种平台

目录 python安装opencv-python c 麒麟arm系统安装和用法 python安装opencv-python pypi上搜索 Search results PyPI 现在安装是一个版本,大于3.6都可以安装 c 麒麟arm系统安装和用法 参考: ffmpeg rknn麒麟系统 安装 opencv_ffmpeg4 解码示例-CSDN…

【Gitlab】访问默认PostgreSQL数据库

本地访问PostgreSQL gitlab有可以直接访问内部PostgreSQL的命令 sudo gitlab-rails dbconsole # 或者 sudo gitlab-psql -d gitlabhq_production效果截图 常用SQL # 查看用户状态 select id,name,email,state,last_sign_in_at,updated_at,last_credential_check_at,last_act…

SqlSugar使用DbFirst对象根据数据库表结构创建实体类-C#

本文所述开发环境:.C#、NET8、Visual Studio2022 1. 在项目中安装SqlSugar 在Visual Studio2022中新建一个 C# 的控制台应用程序,框架选择 .Net8。新建后如下图所示: 然后打开NuGet程序包管理器 搜索 SqlSugarCore 并安装 安装后在解决方案…

音乐界的ChatGPT!Suno V3震撼发布,AI创作的新纪元开启!

AI音乐革命的背景与意义 在数字化的浪潮中,音乐产业正经历着前所未有的变革。随着人工智能技术的不断进步,AI不仅改变了我们消费音乐的方式,更开始重塑音乐的创作过程。Suno V3,这个由Suno AI公司推出的音乐生成模型,…

【等保资料】等级保护定级指南及网络安全解读(ppt原件)

新版网络安全等级保护定级指南网络安全等级保护工作的作用对象,主要包括基础信息网络、工业控制系统、云计算平台、物联网、使用移动互联技术的网络和大数据等。 软件全套精华资料包清单部分文件列表: 工作安排任务书,可行性分析报告&#xf…

Linux网络-HttpServer的实现

文章目录 前言一、请求报文的解析URL的解析 二、响应报文的发送Content-LenthConten-TypeCookie和Set-CookieCookie的风险 三、尝试发送一个HTML网页404网页Location 重定向 四、浏览器的多次请求行为总结 前言 之前我们简单理解了一下Http协议,本章我们将在LInux下…

WPF视频学习-简单应用篇图书馆程序(一)

1.登录界面和主界面跳转 先把登录界面分为三行《Grid》 先添加两行&#xff1a; <Grid><!--//分三行&#xff0c;行排列--><Grid.RowDefinitions><RowDefinition Height"auto"/><RowDefinition Height"auto"/><RowDef…

Spring Boot集成antlr实现词法和语法分析

1.什么是antlr&#xff1f; Antlr4 是一款强大的语法生成器工具&#xff0c;可用于读取、处理、执行和翻译结构化的文本或二进制文件。基本上是当前 Java 语言中使用最为广泛的语法生成器工具。Twitter搜索使用ANTLR进行语法分析&#xff0c;每天处理超过20亿次查询&#xff1…

【第四篇】SpringSecurity的HttpSecurity详解

SpringSecurity的XML文件配置 在配置文件中通过 security:http 等标签来定义了认证需要的相关信息 SpringSecurity的HttpSecurity配置 在SpringBoot项目中,脱离了xml配置文件的方式,在SpringSecurity中提供了HttpSecurity等工具类,这里HttpSecurity就等同于在配置文件中定…

PS的抠图算法原理剖析 2

记得还有个这种抠图方式 我们尝试理解一下 第一步&#xff0c;人工选取点位&#xff0c;然后其实构造了一个凸多边形&#xff0c;这一步还行&#xff0c;中间有洞就挖洞&#xff0c;类似earcut那种东西 第二步&#xff0c;2个点中间的连线部分&#xff0c;怎么包裹到轮廓的&a…

单调队列——Acwing.154滑动窗口

单调队列 定义 单调队列是一个限制只能队尾插入&#xff0c;但是可以两端删除的双端队列。单调队列存储的元素值&#xff0c;是从队首到队尾单调递增或单调递减的。 运用情况 滑动窗口最大值&#xff1a;给定一个整数数组和一个窗口大小&#xff0c;计算窗口内的最大值。任…

深入解析MySQL的层次化设计

一、基础架构 1.连接器 1.会先连接到这个数据库上&#xff0c;这时候接待你的就是连接器。连接器负责跟客户端建立连接、获取权限、维持和管理连接 2.用户密码连接成功之后&#xff0c;会从权限表中拿出你的权限&#xff0c;后续操作权限都依赖于此时拿出的权限,这就意味着当链…

达梦导入导出

针对导出数据库表结构通常有 3 种方法&#xff1a; 使用 DTS 导出 打开 DTS 迁移工具&#xff0c;选择【DM-->SQL】并链接到数据库中&#xff0c;如下图所示&#xff1a; 添加定义脚本&#xff0c;并选择【迁移范围】&#xff08;仅迁移对象定义&#xff09;&#xff0c;如…

不愧是字节,图像算法面试真细致

这本面试宝典是一份专为大四、研三春招和研二暑假实习生准备的珍贵资料。 涵盖了图像算法领域的核心知识和常见面试题&#xff0c;包括卷积神经网络、实例分割算法、目标检测、图像处理等多个方面。不论你是初学者还是有经验的老手&#xff0c;都能从中找到实用的内容。 通过…

内存卡提示需要格式化?别急,这样拯救你的数据

一、内存卡突然提示需要格式化 在日常生活中&#xff0c;我们经常会使用到内存卡来存储照片、视频、文档等重要数据。然而&#xff0c;有时当我们试图访问内存卡时&#xff0c;却会遭遇一个令人头疼的问题——系统突然提示“内存卡需要格式化”。这意味着我们无法直接读取或写…