Skip to content

🔧 自定义命令

GPUMDkit 支持从 ~/.gpumdkit.in 加载自定义命令。你可以把常用脚本或工作流封装成 custom_ 开头的 Bash 函数,然后通过 gpumdkit.sh -命令名 调用。

设置

编辑配置文件:

vi ~/.gpumdkit.in

自定义函数需要使用 custom_ 前缀。

示例

简单问候

~/.gpumdkit.in 中写入:

custom_hello() {
    echo "Hello, GPUMDkit user! This is a custom command."
    echo "Current GPUMDkit path: ${GPUMDkit_path}"
}

然后运行:

gpumdkit.sh -hello

你会看到类似输出:

Hello, GPUMDkit user! This is a custom command.
Current GPUMDkit path: /home/yanzihan/software/GPUMDkit

带必需参数的命令

custom_greet() {
    name=$1
    echo "Hello, ${name}!"
}

运行:

gpumdkit.sh -greet Zihan

输出:

Hello, Zihan!

传递参数时,可以用 "$@" 安全地转发所有参数;如果需要从第一个参数开始引用,也可以使用 ${@:1}

调用外部脚本

如果希望像调用 GPUMDkit 内置命令一样调用自己的脚本:

custom_nepanalyse() {
    python ~/my_gpumd_tools/analyse_nep.py
}

运行:

gpumdkit.sh -nepanalyse

进阶示例

批处理绘图

对多个目录批量绘图:

custom_batch_plot() {
    for dir in "$@"; do
        cd "$dir"
        gpumdkit.sh -plt thermo save
        gpumdkit.sh -plt msd save
        cd ..
    done
}

用法:

gpumdkit.sh -batch_plot dir1 dir2 dir3

训练集分析流程

把多个分析命令组合成一个入口:

custom_analyze_training() {
    xyz_file=$1
    echo "Analyzing $xyz_file..."

    gpumdkit.sh -range "$xyz_file" force
    gpumdkit.sh -min_dist_pbc "$xyz_file"
    gpumdkit.sh -analyze_comp "$xyz_file"

    echo "Analysis complete!"
}

用法:

gpumdkit.sh -analyze_training train.xyz

自定义数据准备流程

custom_prep_training() {
    echo "Preparing training data..."

    gpumdkit.sh -out2xyz ./
    gpumdkit.sh -filter_value train.xyz force 30
    gpumdkit.sh -range filtered_force.xyz energy

    echo "Training data ready!"
}

用法:

gpumdkit.sh -prep_training

使用建议

  • 命令名尽量清楚,例如 custom_analyze_trainingcustom_at 更容易维护。
  • 对需要参数的命令,建议在参数为空时打印用法提示。
  • 调用外部脚本时,尽量用 "$@" 保留参数中的空格和特殊字符。
  • 批处理目录时,注意使用 cd "$dir",避免路径中有空格时出错。

感谢你使用 GPUMDkit!如有任何问题或需要进一步帮助,欢迎在我们的 GitHub 仓库提 issue 或联系 Zihan YAN (yanzihan@westlake.edu.cn)。