Appendix Ⅱ: pwdata
pwdata 是 PWMLFF 的数据预处理工具,包括如下功能:
-
atom.config(PWmat)
、POSCAR(VASP)
、lmp.init(Lammps)
、cp2k.init(CP2K)
之间的文件互转; -
对这些结构做阔胞、晶格缩放、晶格或原子位置微扰;
-
提取各种轨迹文件
MOVEMENT(PWmat)
、OUTCAR(VASP)
、lammps dump file(Lammps)
、cp2k md file(CP2K)
或常用训练数据pwmlff/npy
、extxyz
、deepmd/npy
、deepmd/raw
、meta OMAT24 开源数据集
之后转换为pwmlff/npy
或者extxyz
格式文件。 对于meta数据集,增加了cpu并行和查询操作,以快速从超过一亿结构的数据库中查找自己想要的结构。
支持的数据类型
Software | file | multi-Image | label | format |
---|---|---|---|---|
PWmat | MOVEMENT | True | True | 'pwmat/movement' |
PWmat | OUT.MLMD | False | True | 'pwmat/movement' |
PWmat | atom.config | False | False | 'pwmat/config' |
VASP | OUTCAR | True | True | 'vasp/outcar' |
VASP | poscar | False | False | 'vasp/poscar' |
LAMMPS | lmp.init | False | False | 'lammps/lmp' |
LAMMPS | dump | True | False | 'lammps/dump' |
CP2K | stdout, xyz, pdb | True | True | 'cp2k/md' |
CP2K | stdout | False | True | 'cp2k/scf' |
PWMLFF | *.npy | True | True | 'pwmlff/npy' |
DeepMD (read) | *.npy, *.raw | True | True | 'deepmd/npy', 'deepmd/raw' |
* (extended xyz) | *.xyz | True | True | 'extxyz' |
Meta (read) | *aselmdb | True | True | 'meta' |
安装方式
pip命令安装:
pip install pwdata
#安装pwdata,如果已安装,则升级到最新版本
pip install pwdata --upgrade
# 列出所有可安装版本
pip index versions pwdata
# 输出结果示例:
# pwdata (0.3.2)
# Available versions: 0.3.2, 0.3.1, 0.3.0, 0.2.16, 0.2.15
# INSTALLED: 0.3.2
# LATEST: 0.3.2
# 安装指定版本
pip install pwdata==n.m.o
pwdata 命令行调用方式
pwdata支持命令行操作以及源码接入两种方式。
一、命令行操作
命令列表:
pwdata 命令列表如下,您可以通过 '-h' 选项获取该命令列表的详细解释以及所有支持参数。这里 pwdata -h
用于输出所有可用命令,以及该命令的使用例子。
pwdata -h
pwdata convert_config or cvt_config -h
pwdata convert_configs or cvt_configs -h
pwdata scale_cell or scale -h
pwdata super_cell or super -h
pwdata perturb -h
pwdata count -h
下面对命令做详细说明
1. 结构互转 convert_config
该命令用于各种结构之间的互转,您可以使用 convert_config
或者它的缩写 cvt_config
参数如下所示
pwdata convert_config [-h] -i INPUT -f INPUT_FORMAT [-s SAVENAME] [-o OUTPUT_FORMAT] [-c] [-t ATOM_TYPES [ATOM_TYPES ...]]
-h
输出帮助信息,将列出命令的所有可用参数及其解释
-i
必选参数,输入文件的文件路径,支持绝对路径或者相对路径
-f
可选参数,输入文件的格式,如不指定将根据输入文件自动推测输入格式,支持的格式有 ['pwmat/config','vasp/poscar', 'lammps/lmp', 'cp2k/scf']
-o
可选参数,输出文件的格式,支持的格式有['pwmat/config','vasp/poscar', 'lammps/lmp'],如果未指定该参数,将会使用输入结构的格式,此时如果输入的文件格式是cp2k/scf
,那么将使用pwmat/config
格式
-s
输出文件的名称,与 -o
配合使用。如果未指定,对于 pwmat/config
格式将使用 atom.config
作为文件名,对于 vasp/poscar
格式使用 POSCAR
,对于 lammps/lmp
格式使用 lammps.lmp
作为文件名
-c
是否使用分数坐标,如果指定了 -c
参数,在保存结构时将使用笛卡尔坐标
,否则使用分数坐标
。注意,pwmat/config
只支持分数坐标,此时该参数将失效
-t
输入结构的原子类型,该参数用于当输入结构是 lammps/lmp
或 lammps/dump
格式时指定结构的原子类型,可以是元素名称或者原子编号,顺序需要与输入结构中保持一致。对于其他格式的输入文件,该参数失效
我们在源码的根目录下提供了 examples,您可以下载后使用这些测试例子:
# convert_config 案例:atom.config 转 poscar
# 执行完毕后将在examples/test_workdir目录下生成结构文件 cvtcnf_atom.POSCAR
pwdata cvt_config -i examples/pwmat_data/LiGePS_atom.config -s examples/test_workdir/cvtcnf_atom.POSCAR -o vasp/poscar
2. 训练数据提取 convert_configs
提取各种轨迹文件 MOVEMENT(PWmat)
、OUTCAR(VASP)
、lammps dump file(Lammps)
、cp2k md file(CP2K)
或常用训练数据 pwmlff/npy
、extxyz
、deepmd/npy
、deepmd/raw
、meta OMAT24 开源数据集
为 pwmlff/npy
或者 extxyz
格式文件。您可以使用 convert_configs
或者它的缩写 cvt_configs
.
参数如下所示
pwdata convert_configs [-h] -i INPUT [INPUT ...] -f INPUT_FORMAT [-t ATOM_TYPES [ATOM_TYPES ...]] [-s SAVEPATH] [-o OUTPUT_FORMAT] [-c] [-p TRAIN_VALID_RATIO] [-r] [-g GAP] [-q QUERY] [-n CPU_NUMS] [-m]
-h
输出帮助信息,将列出命令的所有可用参数及其解释
-i
必选参数,输入文件的文件路径,支持绝对路径或者相对路径。该参数为列表形式,支持输入多个文件路径或者目录。pwdata对 pwmlff/npy
、extxyz
、deepmd/npy
、deepmd/raw
、meta OMAT24 开源数据集
实现了目录自动查询,您只需要指定数据源根目录即 可。
例如对于examples/pwmlff_data/LiSiC,该目录下存在'C2, C448, C448Li75, C64Si32, Li1Si24, Li3Si8, Li8, Li88Si20, Si1, Si217'这些子目录, 输入'-i examples/pwmlff_data'
即可。
此外,如果您的文件或者目录较多(如meta数据库这类非常多的子文件),您也可以将这些路径写入一个json文件中,如下所示,命令中指定-i jsonfile
即可。
{
"datapath" : [
"/share/public/PWMLFF_test_data/eqv2-models/datasets/decompress/Omat24/train/rattled-1000-subsampled",
"/share/public/PWMLFF_test_data/eqv2-models/datasets/decompress/Omat24/train/rattled-300",
"/share/public/PWMLFF_test_data/eqv2-models/datasets/decompress/Omat24/train/rattled-300-subsampled"
]
}