From 74b31db5a5a4b6d50d8db21638dd5f76af2d0362 Mon Sep 17 00:00:00 2001 From: lingyuzeng Date: Thu, 7 Mar 2024 14:17:57 +0800 Subject: [PATCH] add logging --- analysis_pdb.py | 24 +++++++++++++++++++----- 1 file changed, 19 insertions(+), 5 deletions(-) diff --git a/analysis_pdb.py b/analysis_pdb.py index 3460f59..def6a5e 100755 --- a/analysis_pdb.py +++ b/analysis_pdb.py @@ -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()