Source code for icolos.core.workflow_steps.structure_prediction.peptide_embedder
from pydantic import BaseModel
from icolos.core.workflow_steps.step import StepBase
from Bio import SeqIO
from Bio.PDB import PDBIO
import os
import PeptideBuilder
from PeptideBuilder import Geometry
[docs]class StepPeptideEmbedder(StepBase, BaseModel):
def __init__(self, **data):
super().__init__(**data)
[docs] def execute(self):
# use the PeptideBuilder python library to build a rough peptide structure using
# sensible psi, phi angles etc, for subsequent simulation
tmp_dir = self._make_tmpdir()
self.data.generic.write_out_all_files(tmp_dir)
# Extract the peptide sequence from the provided fasta file
fasta_file = self.data.generic.get_argument_by_extension("fasta")
sequences = list(SeqIO.parse(os.path.join(tmp_dir, fasta_file), format="fasta"))
for idx, seq in enumerate(sequences):
geom = [Geometry.geometry(aa) for aa in seq.seq]
structure = PeptideBuilder.make_structure_from_geos(geom)
out = PDBIO()
out.set_structure(structure)
# TODO: find a better naming strategy than this
out.save(os.path.join(tmp_dir, f"sequence_{idx}.pdb"))
self._parse_output(tmp_dir)
self._remove_temporary(tmp_dir)