update PDBAlign
This commit is contained in:
@@ -23,6 +23,7 @@ from Bio import SeqIO
|
|||||||
import requests
|
import requests
|
||||||
from copy import deepcopy
|
from copy import deepcopy
|
||||||
from pymol import cmd
|
from pymol import cmd
|
||||||
|
import pymol
|
||||||
import os
|
import os
|
||||||
|
|
||||||
@dataclass
|
@dataclass
|
||||||
@@ -296,18 +297,26 @@ class PDBAnalyzer:
|
|||||||
class PDBAlign:
|
class PDBAlign:
|
||||||
template_file: Path
|
template_file: Path
|
||||||
target_file: Path
|
target_file: Path
|
||||||
|
pymol_instance: object = field(init=False)
|
||||||
out_file: Path = field(default=None) # 输出文件路径
|
out_file: Path = field(default=None) # 输出文件路径
|
||||||
|
|
||||||
|
def __post_init__(self):
|
||||||
|
self.initialize_pymol()
|
||||||
|
|
||||||
|
def initialize_pymol(self):
|
||||||
|
self.pymol_instance = pymol.cmd
|
||||||
|
self.pymol_instance.reinitialize()
|
||||||
|
|
||||||
def align(self):
|
def align(self):
|
||||||
cmd.reinitialize()
|
self.pymol_instance.reinitialize()
|
||||||
# 首先,加载模板结构
|
# 首先,加载模板结构
|
||||||
cmd.load(self.template_file.as_posix(), "template")
|
self.pymol_instance.load(self.template_file.as_posix(), "template")
|
||||||
|
|
||||||
# 加载并对齐所有目标结构
|
# 加载并对齐所有目标结构
|
||||||
cmd.load(self.target_file.as_posix(), "target")
|
self.pymol_instance.load(self.target_file.as_posix(), "target")
|
||||||
cmd.align("target", "template")
|
self.pymol_instance.align("target", "template")
|
||||||
|
|
||||||
return cmd.get_pdbstr('target')
|
return self.pymol_instance.get_pdbstr('target')
|
||||||
|
|
||||||
def main(PDB_ID, PDB_file_path):
|
def main(PDB_ID, PDB_file_path):
|
||||||
# 示例
|
# 示例
|
||||||
@@ -498,3 +507,4 @@ if __name__ == "__main__":
|
|||||||
pass
|
pass
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user