add logging
This commit is contained in:
@@ -30,7 +30,8 @@ from copy import deepcopy
|
||||
from pymol import cmd
|
||||
from pymol import CmdException
|
||||
import pymol
|
||||
import os
|
||||
import logging
|
||||
from logging.handlers import RotatingFileHandler
|
||||
# 使用 BioPython 导入氨基酸缩写
|
||||
AMINO_ACIDS = set(IUPACData.protein_letters)
|
||||
|
||||
@@ -101,19 +102,32 @@ class PDBAnalyzer:
|
||||
biodf: PandasPdb = field(init=False)
|
||||
protein_state: str = field(init=False) # Apo or Holo
|
||||
chain_id_list: List[str] = field(init=False)
|
||||
logger: logging.Logger = field(init=False)
|
||||
|
||||
def __post_init__(self):
|
||||
"""
|
||||
Initialize the PDB structure after the object is created.
|
||||
"""
|
||||
self.initialize_properties()
|
||||
self._initialize_logging()
|
||||
self._initialize_structure()
|
||||
self._initialize_properties()
|
||||
|
||||
def _initialize_logging(self):
|
||||
self.logger = logging.getLogger(f"PDBAnalyzer_{self.pdb_file.stem}")
|
||||
self.logger.setLevel(logging.DEBUG)
|
||||
handler = RotatingFileHandler(f"{self.pdb_file.stem}.log", maxBytes=1048576, backupCount=5)
|
||||
formatter = logging.Formatter('%(asctime)s - %(levelname)s - %(message)s')
|
||||
handler.setFormatter(formatter)
|
||||
self.logger.addHandler(handler)
|
||||
|
||||
def _initialize_structure(self):
|
||||
self.structure = PDBParser(QUIET=True).get_structure('PDB_structure', self.pdb_file.as_posix())
|
||||
self.protein_structure = self.structure
|
||||
|
||||
def initialize_properties(self):
|
||||
def _initialize_properties(self):
|
||||
"""Initialize properties based on the pdb_file."""
|
||||
self.pdb_file_stem = self.pdb_file.stem.split('.')[0]
|
||||
self.pid = self.pdb_file_stem.lower() if len(self.pdb_file_stem) == 4 else None
|
||||
self.structure = PDBParser(QUIET=True).get_structure('PDB_structure', self.pdb_file.as_posix())
|
||||
self.protein_structure = PDBParser(QUIET=True).get_structure('PDB_structure', self.pdb_file.as_posix())
|
||||
self.biodata = PandasPdb().read_pdb(self.pdb_file.as_posix())
|
||||
self.protein_state = 'Holo' if 'HETATM' in self.biodata.df.keys() else 'Apo'
|
||||
self.chain_id_list = self.biodata.df['ATOM']['chain_id'].drop_duplicates().to_list()
|
||||
|
||||
Reference in New Issue
Block a user