CREST:从结构集合搜索互变异构体
用乙醛实际运行扩展互变异构入口,串联质子化、去质子化、短采样、优化和筛选。
阅读本篇目录
除了单结构互变异构入口,CREST还有面向结构集合的扩展流程:逐条读取输入集合,进行质子化和去质子化循环,再对候选作短构象搜索、优化与筛选。本例用7原子乙醛实际跑通正向和反向两条路径。
1. 下载并看结果#
下载完整输入、实际原生结果与读取绘图程序,保存为 example.zip:
python3 -m zipfile -e example.zip .
cd crest-extended-tautomer
bash read.sh
bash plot.sh
默认读取附带结果,不重新搜索。CSV写入 analysis-read/,图片写入 figures/。

2. 准备集合XYZ#
cat inputs/forward/ensemble.xyz
本例复用已经优化的乙醛输入,C₂H₄O,电荷0、闭壳层;一条记录为:
7
-10.356706559999999
C -1.2745757202 0.1233082652 0.0476171220
C 0.0715856277 -0.5060953876 0.2139674225
O 1.0622195247 -0.2039767215 -0.3868259675
H 0.0886965076 -1.3148516382 0.9728036236
H -1.9935034341 -0.6410291810 -0.2419699427
H -1.5973843141 0.5349529632 1.0022247134
H -1.2442841006 0.9078420173 -0.7035367908
多条输入时按相同XYZ格式首尾相接,保持组成和合理的原子编号。input.xyz 为主入口坐标,ensemble.xyz 为待处理集合。
3. 先跑正向流程#
使用个人独立CREST 3.0.3,GNU Fortran与MKL构建,外部单点核对使用xTB 6.7.1。已有独立入口可共用;首次可在已分配的CPU作业内运行 bash build-private.sh。
下面命令在已分配CPU资源、独立输入目录中执行:
~/.local/ys-crest-tools/bin/crest input.xyz \
--forall ensemble.xyz --tautomerize2 --iter 0 \
--gfn2 --quick --mdlen 0.1 --mddump 50 --T 2 --keepdir
--forall 指定逐条处理集合,--tautomerize2 选择扩展入口。--iter 0 仍会执行初始一轮“质子化→去质子化”,只是不再增加后续迭代,并不是不做计算。
--mdlen 0.1 为内部短采样的单片段长度0.1 ps,--mddump 50 为50 fs保存间隔;生成的每个中性候选还会进入自己的短构象搜索,因此不能把0.1 ps解释成整套流程的累计总采样时间。本例采用快速、短采样设置作为操作演示。
4. 顺着输出查看每一步#
grep -E 'C Y C L E|Relaxation of generated|Final Geometry' \
reference-results/forward/native.log
ls reference-results/forward/TP1
head -9 reference-results/forward/tautomers.xyz
TP1 对应第一条输入记录。过程中可以暂时增加或减少一个H并调整电荷,最终互变异构输出仍需回到原来组成和总电荷;不要把中间质子化结构直接当作原分子的互变异构体。
本次中性候选在短搜索后保留2条记录,最后优化、拓扑筛选得到1条最终结构;本例最终结构仍是乙醛型连接。中间2条记录不等于最终有2种不同互变异构体。
5. 整包提交和结果#
bash submit.sh
# 计算结束
bash read.sh work-new analysis-read
bash plot.sh
脚本依次运行正向、反向路径,并对最终结构进行独立GFN2单点。正向约6.94秒、反向约5.89秒,均为本次7原子、2线程的实测,换分子不保证相同耗时。详细数据见路径CSV;路径差异见正反向循环与结果判断。