工具函数模块

本模块提供了一系列通用的工具函数,用于支持其他模块的操作。

模块概述

该模块包含了一组辅助函数,主要用于:

  1. 文件和目录操作

  2. 化学系统和元素组合处理

  3. 路径和文件安全检查

  4. 配置验证

主要函数说明

mkdir_output_load(path)

创建输出目录,如果已存在则清空。

参数: - path: 目录路径

返回: - 无返回值

作用: 确保输出目录存在且为空,避免文件残留影响后续处理。

chemsys_comb(elements)

生成所有可能的元素组合。

参数: - elements: 元素符号列表,如 [‘Ba’, ‘Ti’, ‘O’]

返回: - 所有可能的元素组合字符串列表,如 [‘Ba’, ‘Ti’, ‘O’, ‘Ba-Ti’, ‘Ba-O’, ‘Ti-O’, ‘Ba-Ti-O’]

作用: 用于化学系统组合生成,便于搜索多种元素组合的材料。

get_formula_from_filename(filename)

从文件名中提取化学式。

参数: - filename: 文件名,如 ‘BaTiO3-mp-2998.vasp’

返回: - 提取的化学式字符串,如 ‘BaTiO3’

作用: 从包含Material Project ID的文件名中提取纯化学式部分。

safe_copy(src, dst)

安全复制文件。

参数: - src: 源文件路径 - dst: 目标文件路径

返回: - 布尔值,表示复制是否成功

作用: 封装文件复制操作,提供错误处理和日志记录。

check_potcar_availability(config)

检查POTCAR配置是否可用。

参数: - config: 配置字典

返回: - 布尔值,表示POTCAR配置是否可用

作用: 验证POTCAR生成方法的相关配置和依赖是否正常。

safe_path_join(*args)

安全的路径连接,处理混合的路径分隔符。

参数: - *args: 路径组成部分

返回: - 标准化后的完整路径字符串

作用: 处理不同操作系统和用户输入的路径分隔符问题,确保路径连接正确。

check_file_exists(file_path)

检查文件是否存在,提供详细的错误信息。

参数: - file_path: 文件路径

返回: - 布尔值,表示文件是否存在

作用: 增强的文件存在性检查,提供详细的诊断信息帮助调试。

使用示例

from utils import *

# 创建目录
mkdir_output_load('./output')

# 生成元素组合
elements = ['Ba', 'Ti', 'O']
combos = chemsys_comb(elements)  # ['Ba', 'Ti', 'O', 'Ba-Ti', ...]

# 提取化学式
formula = get_formula_from_filename('BaTiO3-mp-2998.vasp')  # 'BaTiO3'

# 安全复制
success = safe_copy('input.vasp', 'output/POSCAR')

# 检查配置
potcar_ok = check_potcar_availability(config)

# 路径操作
full_path = safe_path_join('parent', 'subdir', 'file.txt')

# 文件检查
exists = check_file_exists('POSCAR')

注意事项

  1. mkdir_output_load 会清空已存在的目录,使用时需谨慎

  2. chemsys_comb 的组合数量随元素数量指数增长,需控制元素数量

  3. safe_path_join 主要解决Windows/Linux路径分隔符兼容问题

  4. check_file_exists 主要用于调试,提供详细的文件系统信息