You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让Autodock Vina生成与终端格式一致的日志文件?

解决Autodock Vina日志输出与终端一致的问题

1. 先纠正参数误解

你用的--out参数是用来输出对接后的配体构象文件(pdbqt格式),不是日志输出参数。所以你生成的file.log本质是结构文件,自然看不到终端里的亲和力结果。

2. 生成与终端格式一致的日志文件

有两种实用方法可以捕获终端输出的完整日志:

方法一:重定向所有输出到日志文件

执行命令时,把标准输出和错误信息都重定向到日志文件,完整保存终端显示的所有内容:

vina --receptor receptor.pdbqt --ligand out1.pdbqt --config conf.txt > vina_log.txt 2>&1

如果还需要保存对接后的配体构象,额外指定--out参数到pdbqt文件即可:

vina --receptor receptor.pdbqt --ligand out1.pdbqt --config conf.txt --out docked_ligand.pdbqt > vina_log.txt 2>&1

解释:

  • >:将终端正常打印的内容写入日志文件
  • 2>&1:把警告、错误类信息也合并到同一个日志文件

方法二:实时查看并保存日志

如果想在终端实时监控对接过程,同时保存日志,用tee命令:

vina --receptor receptor.pdbqt --ligand out1.pdbqt --config conf.txt --out docked_ligand.pdbqt 2>&1 | tee vina_log.txt

这样终端会正常显示内容,同时自动同步写入日志文件。

3. Python提取日志信息的示例

生成的日志格式和终端完全一致,你可以用Python逐行解析关键信息,比如亲和力、构象序号:

with open('vina_log.txt', 'r') as log_file:
    for line in log_file:
        if 'Affinity:' in line:
            # 提取构象序号和亲和力数值
            mode_num = line.split('Mode')[1].split(':')[0].strip()
            affinity_val = float(line.split(':')[1].strip().split()[0])
            print(f"构象{mode_num}的亲和力:{affinity_val} kcal/mol")

内容的提问来源于stack exchange,提问作者haiki

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.20 18:59:54