计算之道

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

使用命令行+pymol将cif文件转换为pdb

2026.1.17更新:

可以直接使用命令行工具(推荐,高效)

需要安装 bcifgemmi 工具。它们处理mmCIF文件非常专业。

  1. 安装 gemmi (一个强大的晶体学工具):

    • macOS (使用Homebrew)brew install gemmi

    • Linux (Ubuntu/Debian)sudo apt install gemmi

    • 也可以通过Python安装:pip install gemmi

    • 或从GitHub下载预编译版本。

  2. 使用 gemmi 进行转换
    打开终端,进入文件所在目录,运行以下命令:

    bash
    gemmi convert test.cif.gz test.pdb

    gemmi 会自动识别.gz压缩并解压,然后将.cif转换为.pdb

 
##Pre

想要使用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  计算之道  阅读(1229)  评论(0)    收藏  举报