计算之道

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

想要使用pymol将cif转换为pdb,又不想每次都打开pymol的图形界面,于是想通过命令行操作pymol来实现:

首先,执行命令行中的python,发现python的环境中没有pymol模块,因此需要将 PyMOL 的模块路径添加到 PYTHONPATH:

在环境变量中添加并source:

export PYTHONPATH=$PYTHONPATH:/home/username/software/pymol3.1.3/pymol/lib/python3.10/site-packages
#最好是在命令行中运行而不是一直放在环境变量中,不然可能造成系统中不同软件之间python环境不兼容

 

执行转换的python脚本:

# cif_to_pdb.py
# python cif_to_pdb.py input.cif output.pdb
import sys
import pymol

def cif_to_pdb(cif_file, pdb_file):
    pymol.finish_launching(['pymol', '-qc'])
    pymol.cmd.load(cif_file)
    pymol.cmd.save(pdb_file)
    pymol.cmd.quit()

if __name__ == "__main__":
    if len(sys.argv) != 3:
        print("Usage: python cif_to_pdb.py <input.cif> <output.pdb>")
        sys.exit(1)

    input_cif = sys.argv[1]
    output_pdb = sys.argv[2]

    cif_to_pdb(input_cif, output_pdb)
    print(f"Conversion complete: {output_pdb}")

posted on 2025-05-18 15:05  计算之道  阅读(783)  评论(0)    收藏  举报