Source code for icolos.core.workflow_steps.structure_prediction.dssp

from typing import List
from icolos.core.workflow_steps.step import StepBase
from icolos.utils.execute_external.execute import Executor
from pydantic import BaseModel
from icolos.utils.enums.step_enums import StepDSSPEnum
from icolos.utils.enums.program_parameters import DSSPEnum
import os


_SDE = StepDSSPEnum()
_DE = DSSPEnum()


[docs]class StepDSSP(StepBase, BaseModel): def __init__(self, **data): super().__init__(**data) self._initialize_backend(executor=Executor) def _construct_arguments(self, tmp_dir: str, file: str) -> List: args = [] for flag in self.settings.arguments.flags: args.append(flag) for key, value in self.settings.arguments.parameters.items(): args.append(key) args.append(value) # set the input and output files args.append(file) output = f"dssp_output_{file.split('.')[0]}.txt" args.append(output) return args def _parse_output(self, tmp_dir: str) -> None: for file in [f for f in os.listdir(tmp_dir) if f.endswith("txt")]: with open(os.path.join(tmp_dir, file), "r") as f: self._add_data_to_generic(file, f.read())
[docs] def execute(self): """ Executes dssp on a set of input structures """ tmp_dir = self._make_tmpdir() print(tmp_dir) self.data.generic.write_out_all_files(tmp_dir) file_list = self.data.generic.get_file_names_by_extension(ext="pdb") for file in file_list: arguments = self._construct_arguments(tmp_dir, file) self._backend_executor.execute( command=_DE.MKDSSP, arguments=arguments, check=True, location=tmp_dir ) self._parse_output(tmp_dir) self._remove_temporary(tmp_dir)