配置文件解析:一手拆解config.txt
做AutoDock Vina对接,最核心的其实不是命令行本身,而是那个叫config.txt的配置文件。说实话,我见过不少新手把参数直接写在命令行里,每次改参数都要重新敲一遍,效率低不说,还容易敲错。我自己做批次对接的时候,从来都是写一个标准的config.txt模板,然后批量替换关键字段。这章咱们就把config.txt从头到尾掰开揉碎讲清楚。
config.txt完整结构
先摆出一个最典型的配置文件,我把它当作标准模板用。每一行我都加了注释,你直接抄下来就能用。
receptor = receptor.pdbqt
ligand = ligand.pdbqt
center_x = 0.0
center_y = 0.0
center_z = 0.0
size_x = 20
size_y = 20
size_z = 20
exhaustiveness = 8
num_modes = 9
out = output.pdbqt
cpu = 4
seed = 42
嗯,这就是一个最精简但完整的config.txt。注意Vina对大小写不敏感,但我个人习惯全部小写,看着统一。每个参数用等号连接,等号两边有没有空格都行,我偏爱加一个空格,可读性更好。
receptor与ligand路径
这两行指定蛋白质和小分子的PDBQT文件路径。路径可以是相对路径,也可以是绝对路径。但这里有个坑:如果路径里有空格或者中文,Vina可能会直接崩溃。我记得有一次合作方给的文件放在“docking results/实验数据/”这样的目录里,我直接写
receptor = docking results/实验数据/receptor.pdbqt
结果Vina报错说找不到文件。后来我把路径用双引号包起来也不行,最后只能把目录改成了纯英文和下划线才解决。说实话,Vina对路径字符的支持比较原始,我强烈建议:所有文件路径只用英文字母、数字、下划线和点,不要有任何特殊符号。
另外,receptor和ligand这两个参数名不能写错,receptor不能写成recept,ligand不能写成lig。Vina检查参数非常严格,拼写错了就直接报错退出。
center与size参数——对接盒子的灵魂
center_x、center_y、center_z定义对接盒子的中心坐标,单位是Å。这三个数就是你蛋白活性位点的大致位置。size_x、size_y、size_z定义盒子在三个方向上的边长,单位也是Å。Vina只在这个盒子里搜索配体的结合姿势,所以盒子要覆盖整个活性位点,但又不能太大,不然计算量暴涨。
我之前做过一个激酶抑制剂的项目,活性位点在一个很深的疏水口袋里。我一开始用了size_x=10, size_y=10, size_z=10,结果对接出来的姿势全部跑偏,根本不在口袋里。后来我把盒子扩大到30×30×30,才把整个口袋包住,对接结果就正常了。这里给个经验法则:size至少要比活性位点往外扩5Å,保证边界效应不影响结果。
center坐标怎么确定?我一般用PyMOL或AutoDock Tools打开蛋白,选中活性位点附近的关键残基,然后看它们的质心坐标。也可以用其他可视化工具直接读原子坐标求平均。
exhaustiveness——搜索精度与时间的平衡
exhaustiveness默认值是8,值越大,Vina在构象空间里搜索得越细致,但时间也线性增长。说白了就是“穷举程度”。一个简单对照:exhaustiveness=8时,对接一个常规分子大概30秒到2分钟;exhaustiveness=32时,时间会变成4倍左右,但结果可能只提升一点点。
我一般怎么用:
- 初步筛选:用exhaustiveness=8,快速跑几十个配体,挑出候选。
- 精细优化:对候选分子用exhaustiveness=32或64,确保找到全局最低自由能构象。
注意,exhaustiveness不是越大越好。我见过有人设成256,跑了一个星期……其实很多体系在16到32就已经收敛了。你可以先做个小测试:用同一个配体,分别设exhaustiveness=8, 16, 32, 64跑一次,对比打分和姿势,看看在哪个值之后结果不再明显变化。那个值就是你体系的最优值。
num_modes——要几个姿势?
num_modes指定Vina输出多少个不同的结合构象,默认是9。每个构象会按结合自由能从低到高排序,写在输出PDBQT文件的MODEL行里。我经常看到有人只取第一个模式,但其实后面几个模式可能也很有价值,尤其是当第一个和第二个能量差很小时,可能对应不同的结合方式。
有一次我做柔性对接分析,发现num_modes=9不够用,我需要看前20个低能构象来聚类结合模式。于是我把num_modes改成20,但要注意Vina会内部生成更多候选,然后保留能量最低的num_modes个。设得太大,内存占用和计算时间都会增加。一般做常规对接,9个足够;如果你要做结合模式聚类或后续MD,可以设到20~30。
其他参数速查
config.txt里还可选out、cpu、seed等参数,这里用一个表格总结:
| 参数名 | 说明 | 推荐值/备注 |
|---|---|---|
| receptor | 蛋白质PDBQT文件路径 | 路径不能含空格或中文 |
| ligand | 配体PDBQT文件路径 | 同上 |
| center_x/y/z | 对接盒子中心坐标 (Å) | 通过活性位点残基获取 |
| size_x/y/z | 对接盒子边长 (Å) | 至少比活性位点大5Å |
| exhaustiveness | 搜索精度 (整数) | 常用8,16,32;越大越慢 |
| num_modes | 输出构象数 | 常用9;可设为20~30 |
| out | 输出PDBQT文件路径 | 可选,默认与配体同名 |
| cpu | 使用的CPU线程数 | 默认为全部核心 |
| seed | 随机数种子 | 设置相同种子可重现结果 |
--help检查一下?不,更好的办法是拿一个已知的配体先跑一遍,和文献结果对比,确认参数没问题再批量跑。
config.txt参数关系框架图
下面这张图把config.txt里各参数如何串联成一次完整的对接流程展示出来。你可以看到,receptor和ligand是输入,center和size决定搜索空间,exhaustiveness控制搜索强度,num_modes决定输出数量,最后生成output.pdbqt。
好了,config.txt的核心参数就这些。下次你拿到一个对接任务,应该能一眼看出配置文件里的参数是否合理。记住那个表格和图,它们比死记硬背管用得多。