Source code for seqme.models.amino_acid_descriptors

from typing import Literal

import numpy as np

from .exceptions import OptionalDependencyError


[docs] class AliphaticIndex: """Aliphatic index of amino acid sequences. Installation: ``pip install "seqme[aa_descriptors]"`` """
[docs] def __call__(self, sequences: list[str]) -> np.ndarray: """Compute aliphatic index. Args: sequences: Amino acid sequences. Returns: Aliphatic index for each sequence. """ try: from modlamp.descriptors import GlobalDescriptor except ModuleNotFoundError: raise OptionalDependencyError("aa_descriptors") from None d = GlobalDescriptor(sequences) d.aliphatic_index() return d.descriptor.squeeze(axis=-1)
[docs] class Aromaticity: """Aromaticity of amino acid sequences. Installation: ``pip install "seqme[aa_descriptors]"`` """
[docs] def __call__(self, sequences: list[str]) -> np.ndarray: """Compute aromaticity. Args: sequences: Amino acid sequences. Returns: Aromaticity value for each sequence. """ try: from modlamp.descriptors import GlobalDescriptor except ModuleNotFoundError: raise OptionalDependencyError("aa_descriptors") from None d = GlobalDescriptor(sequences) d.aromaticity() return d.descriptor.squeeze(axis=-1)
[docs] class BomanIndex: """Boman index, estimating binding potential to proteins. Installation: ``pip install "seqme[aa_descriptors]"`` """
[docs] def __call__(self, sequences: list[str]) -> np.ndarray: """Compute Boman index. Args: sequences: Amino acid sequences. Returns: Boman index value for each sequence. """ try: from modlamp.descriptors import GlobalDescriptor except ModuleNotFoundError: raise OptionalDependencyError("aa_descriptors") from None d = GlobalDescriptor(sequences) d.boman_index() return d.descriptor.squeeze(axis=-1)
[docs] class Charge: """Net charge of amino acid sequences at a given pH. Installation: ``pip install "seqme[aa_descriptors]"`` """
[docs] def __init__(self, ph: float = 7.0): """Initialize model. Args: ph: pH value at which to calculate the charge. """ self.ph = ph
[docs] def __call__(self, sequences: list[str]) -> np.ndarray: """Compute net charge. Args: sequences: List of amino acid sequences. Returns: Net charge for each sequence. """ try: from modlamp.descriptors import GlobalDescriptor except ModuleNotFoundError: raise OptionalDependencyError("aa_descriptors") from None d = GlobalDescriptor(sequences) d.calculate_charge(ph=self.ph) return d.descriptor.squeeze(axis=-1)
[docs] class Gravy: """GRAVY (hydropathy) score for amino acid sequences. Installation: ``pip install "seqme[aa_descriptors]"`` """
[docs] def __call__(self, sequences: list[str]) -> np.ndarray: """Compute GRAVY. Args: sequences: Amino acid sequences. Returns: GRAVY score for each sequence. """ try: from modlamp.descriptors import PeptideDescriptor except ModuleNotFoundError: raise OptionalDependencyError("aa_descriptors") from None d = PeptideDescriptor(sequences) d.load_scale("gravy") d.calculate_global() return d.descriptor.squeeze(axis=-1)
[docs] class Hydrophobicity: """Hydrophobicity using a selected scale. Installation: ``pip install "seqme[aa_descriptors]"`` """
[docs] def __init__(self, scale: Literal["eisenberg", "hopp-woods", "janin", "kytedoolittle"] = "eisenberg"): """Initialize the hydrophobicity. Args: scale: Name of the hydrophobicity scale to use. """ self.scale = scale
[docs] def __call__(self, sequences: list[str]) -> np.ndarray: """ Compute hydrophobicity. Args: sequences: Amino acid sequences. Returns: Hydrophobicity score for each sequence. """ try: from modlamp.descriptors import PeptideDescriptor except ModuleNotFoundError: raise OptionalDependencyError("aa_descriptors") from None d = PeptideDescriptor(sequences) d.load_scale(self.scale) d.calculate_global() return d.descriptor.squeeze(axis=-1)
[docs] class HydrophobicMoment: """Hydrophobic moment (i.e., amphiphilicity) for one or more amino acid sequences using a sliding-window approach. Installation: ``pip install "seqme[aa_descriptors]"`` """
[docs] def __init__( self, scale: Literal["eisenberg", "hopp-woods", "janin", "kytedoolittle"] = "eisenberg", window: int = 11, angle: int = 100, modality: Literal["max", "mean"] = "mean", ): """Initialize the hydrophobic moment. Args: scale: Name of the hydrophobicity scale to use. window: Size of window angle: Angle in which to calculate the moment. 100 for alpha helices, 180 for beta sheets. modality: Method to compute statistic """ self.scale = scale self.window = window self.angle = angle self.modality = modality
[docs] def __call__(self, sequences: list[str]) -> np.ndarray: """Compute hydrophobic moment. Args: sequences: List of amino acid sequences. Returns: hydrophobic moment for each sequence. """ try: from modlamp.descriptors import PeptideDescriptor except ModuleNotFoundError: raise OptionalDependencyError("aa_descriptors") from None d = PeptideDescriptor(sequences) d.load_scale(self.scale) d.calculate_moment(window=self.window, angle=self.angle, modality=self.modality) return d.descriptor.squeeze(axis=-1)
[docs] class InstabilityIndex: """Instability index, predicting in vitro protein stability. Installation: ``pip install "seqme[aa_descriptors]"`` """
[docs] def __call__(self, sequences: list[str]) -> np.ndarray: """Compute instability index. Args: sequences: Amino acid sequences. Returns: Instability index for each sequence. """ try: from modlamp.descriptors import GlobalDescriptor except ModuleNotFoundError: raise OptionalDependencyError("aa_descriptors") from None d = GlobalDescriptor(sequences) d.instability_index() return d.descriptor.squeeze(axis=-1)
[docs] class IsoelectricPoint: """Isoelectric point of amino acid sequences. Installation: ``pip install "seqme[aa_descriptors]"`` """
[docs] def __call__(self, sequences: list[str]) -> np.ndarray: """Compute isoelectric point. Args: sequences: Amino acid sequences. Returns: Isoelectric point for each sequence. """ try: from modlamp.descriptors import GlobalDescriptor except ModuleNotFoundError: raise OptionalDependencyError("aa_descriptors") from None d = GlobalDescriptor(sequences) d.isoelectric_point() return d.descriptor.squeeze(axis=-1)
[docs] class ProteinWeight: """Molecular weight of amino acid sequences. Installation: ``pip install "seqme[aa_descriptors]"`` """
[docs] def __call__(self, sequences: list[str]) -> np.ndarray: """Compute molecular weight of amino acid sequences. Args: sequences: Amino acid sequences. Returns: Molecular weight for each sequence. """ try: from modlamp.descriptors import GlobalDescriptor except ModuleNotFoundError: raise OptionalDependencyError("aa_descriptors") from None d = GlobalDescriptor(sequences) d.calculate_MW() return d.descriptor.squeeze(axis=-1)