【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,一经查实,立即删除!

相关文章

深入浅出MyBatis:全面解析与实战指南

MyBatis 是一个优秀的持久层框架,它简化了 Java 应用与关系数据库之间的映射。对于大多数 Java 开发者而言,掌握 MyBatis 是必不可少的一部分。本文将详细介绍 MyBatis 的各个方面,包括其基本原理、配置、操作、动态 SQL、插件机制和高级应用…

新创作活动,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《科学》文献为例来演示一下在家获取文献的过…

STM32开发遇到问题解决2024.6.14

1、电路板打样出问题 电路板样品回来,做了接线,连接上后,可以下载程序,上电测试,有画面,但是上电不到一分钟,电池电量突增,串口屏开始闪烁,3.3V指示灯闪烁,赶…

leetcode刷题记录40-886. 可能的二分法

问题描述 给定一组 n 人(编号为 1, 2, ..., n), 我们想把每个人分进任意大小的两组。每个人都可能不喜欢其他人,那么他们不应该属于同一组。 给定整数 n 和数组 dislikes ,其中 dislikes[i] [ai, bi] ,表示…

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公司推出的音乐生成模型,…

Vue前端服务是什么:深入解析与实际应用

Vue前端服务是什么:深入解析与实际应用 在现今的互联网开发领域,前端技术日新月异,Vue.js作为其中的佼佼者,其前端服务更是成为了众多开发者关注的焦点。那么,Vue前端服务究竟是什么?它有哪些核心要素和实…

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

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

模拟面试题卷二

1. 什么是JavaEE框架,你能列举一些常用的JavaEE框架吗? 答:JavaEE框架是一套用于开发企业级应用的技术规范和工具集合。常用的JavaEE框架有Spring、Hibernate、Struts、JSF等。 2. 请解释一下面向对象技术和设计原则是什么,你能…

VR编程零基础好学吗?深入解析四个维度、五大要素、六大技巧与七大挑战

VR编程零基础好学吗?深入解析四个维度、五大要素、六大技巧与七大挑战 在科技飞速发展的今天,虚拟现实(VR)技术已逐渐渗透到我们生活的方方面面。对于许多零基础的学习者来说,VR编程是否好学成为了他们心中的疑问。本…

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…

原子性,一致性,隔离性,持久性

原子性&#xff08;Atomicity&#xff09;&#xff1a;一个事务中的所有操作&#xff0c;要么全部完成&#xff0c;要么全部不完成&#xff0c;不会结束在中间某个环节&#xff0c;而且事务在执行过程中发生错误&#xff0c;会被回滚到事务开始前的状态&#xff0c;就像这个事务…