banetask
BaneTask:让量子化学计算工作流更简单
置顶tasker已经弃用快一年了,重构的banetask也已经悄悄升级到2.0。本程序笔者用着非常解放双手,有心换个血,但写程序介绍太费劲了,还是全权交给Claude罢。
以下彩虹屁均由Claude4.5生成。感觉好多东西没介绍出来,但就先这样吧
写在前面
如果你做过量子化学计算,你一定遇到过这些烦恼:
- 需要手动准备大量输入文件,重复劳动多
- 复杂的计算流程需要一步步手动执行
- 计算结果散落各处,难以管理和归档
- 切换不同量子化学程序时,需要重新学习输入格式
- 批量处理多个分子时,工作量成倍增加
BaneTask 就是为了解决这些问题而诞生的。
这是一个什么样的工具?
BaneTask 是一个开源的量子化学任务控制系统,使用 C++ 编写,专注于简化和自动化量子化学计算工作流。
核心理念:用一个简洁的 .bt
文本文件描述你的计算流程,剩下的交给 BaneTask。
主要特性
1. 统一的任务描述语言
不用记忆不同程序的复杂输入格式,用简洁的 .bt
文件描述你的计算任务:
1
2
3
4
5
6
$opt
%source origin
%keywords "opt freq B3LYP/6-31G(d) scrf=(SMD,solvent=water)"
%archive
strucid opt
properties {log_file,fchk_file}
这段配置就能完成几何优化、频率计算和结果归档的全部工作。
2. 多程序支持
目前支持:
- Gaussian:最常用的量子化学程序
- ORCA:开源高性能计算程序
- 其他程序:通过模板系统可扩展支持更多程序
切换程序?只需要一行配置:
1
%program orca
3. 智能的任务依赖管理
BaneTask 会自动处理任务之间的依赖关系:
1
2
3
4
5
6
7
$opt
%source origin
%keywords "opt freq B3LYP/6-31G(d)"
$sp
%source opt guess # 自动使用 opt 的结果作为起点
%keywords "sp B3LYP/def2-TZVP"
你只需要声明依赖关系,BaneTask 会:
- 检查依赖任务是否完成
- 自动提取几何结构
- 传递波函数信息(如果需要)
4. 灵活的变量系统
定义一次,到处使用:
1
2
3
4
5
6
7
8
9
10
define:
- func: B3LYP
- basis: 6-31G(d)
- solvent: water
$opt
%keywords "opt freq [func]/[basis] scrf=(solvent=[solvent])"
$sp
%keywords "sp [func]/def2-TZVP scrf=(solvent=[solvent])"
修改计算条件?只需改变变量定义,所有任务自动更新。
5. 强大的后处理能力
内置常用后处理命令:
1
2
3
4
%process
scripts fchk # 转换 checkpoint 文件
multiwfn [inputname].fchk esp # 静电势分析
analysis nimag # 检查虚频
支持自定义脚本,集成你的分析流程。
6. 自动归档管理
再也不用担心结果文件散落各处:
1
2
3
%archive
strucid opt
properties {log_file,fchk_file,png_file}
BaneTask 会自动整理和归档指定的计算结果。
实际应用场景
场景一:标准优化流程
研究一个分子的基态结构和振动频率:
1
2
3
4
5
6
7
8
title: 乙醇分子优化
smiles: CCO
$opt
%source origin
%keywords "opt freq B3LYP/6-31G(d) scrf=(SMD,solvent=water)"
%process
analysis nimag # 自动检查虚频
一个命令完成:
1
banetask ethanol.bt
场景二:激发态计算
优化后进行 TDDFT 计算:
1
2
3
4
5
6
7
8
9
$opt
%source origin
%keywords "opt B3LYP/6-31G(d)"
$td
%source opt guess
%keywords "td=(nstates=10) B3LYP/6-31G(d)"
%archive
properties {log_file}
场景三:批量计算
使用项目模式处理多个分子:
1
2
3
btask -b # 批处理模式
# 选择模板和几何文件
# 自动为每个分子创建任务
场景四:ORCA 自旋轨道耦合
1
2
3
4
5
6
7
8
9
10
$soc
%program orca
%source opt
%keywords "wb97x-d3 def2-svp RIJCOSX def2/J"
%extrakeywords
%tddft
nroots 5
dosoc true
end
end exkwd
技术架构
BaneTask 采用模块化设计,主要组件包括:
- TaskParser:解析 .bt 文件的核心引擎
- GeometryProcessor:处理分子几何结构
- InputGenerator:为不同程序生成输入文件
- CommandProcessor:处理后处理命令
- Archive:归档系统
使用 C++17 编写,性能优异,跨平台支持 Linux 系统。
上手很简单
1. 安装
1
2
3
4
5
git clone https://gitee.com/bane-dysta/banetask2.git
cd banetask2
mkdir build && cd build
cmake ..
make
2. 第一个例子
1
2
3
4
5
# 创建测试示例
btask -t
# 运行计算
banetask test
3. 使用模板
1
2
3
4
5
# 交互式选择模板
btask -i
# 查看所有模板
btask -l
模板生态
BaneTask 提供丰富的任务模板:
- optimization/:各类几何优化
- energy/:能量计算
- wfn-analysis/:波函数分析
- rate/:反应速率计算
你也可以创建自己的模板,分享给社区。
开发理念
BaneTask 的设计遵循几个原则:
- 简洁优先:配置文件应该易读易写
- 自动化:机器能做的,不让用户做
- 灵活性:支持从简单到复杂的各种需求
- 可扩展:通过模板和脚本系统支持自定义功能
适合谁使用?
- 计算化学研究者
- 需要处理大量分子计算的课题组
- 希望标准化计算流程的实验室
- 想要提高工作效率的量化工作者
项目状态
- 版本:v2.0.0
- 项目主页:https://github.com/bane-dysta/banetask
- 作者:Bane Dysta
加入我们
BaneTask 是一个开源项目,欢迎:
- 报告问题和提出建议
- 贡献代码和模板
- 分享使用经验
- 完善文档
通过 Gitee Issues 与我们交流。
结语
量子化学计算不应该被繁琐的流程所束缚。BaneTask 希望让研究者把更多时间花在科学问题本身,而不是重复的文件准备和结果整理上。
试试 BaneTask,让你的计算工作流更高效。
开始使用:
- 查看完整文档:README.md
- 快速上手:
btask -t
- 问题反馈:https://gitee.com/bane-dysta/banetask2/issues