Source code for pyrosetta_help.residue_decription.betaturn

from functools import partial
from typing import (Callable, List, Dict)
import pyrosetta

from .ss import get_ss
from ..common_ops import pose_range

class _BetaTurnPresent:
    """
    Was formerly

        beta_turn_present: Callable[[int], bool] = partial(btd.beta_turn_present, pose)

    But some ligands were causing issues.
    :return:
    """
    def __init__(self, pose):
        self.btd = pyrosetta.rosetta.protocols.features.BetaTurnDetection()
        self.pose=pose

    def __call__(self, resi) -> bool:
        try:
            return self.btd.beta_turn_present(self.pose, resi)
        except RuntimeError:
            return False

[docs]def get_betaturns(pose: pyrosetta.Pose) -> Dict[int, str]: """ There is a wee problem in that alpha-helices get classified as beta-turns And I am not sure all are beta-turns... """ get_ss(pose) # fill secstruct loop_iter = filter(lambda i: pose.secstruct(i) == 'L', pose_range(pose, protein_only=True)) maxed = list(loop_iter)[:-3] beta_iter = filter(_BetaTurnPresent(pose), maxed) btd = pyrosetta.rosetta.protocols.features.BetaTurnDetection() return {i: btd.beta_turn_type(pose, i) for i in beta_iter}