Source code for peptacular.sequence.converters

from typing import overload

from ..annotation import ProFormaAnnotation
from ..constants import parallelMethod, parallelMethodLiteral
from .parallel import parallel_apply_internal


def _convert_ip2_sequence_single(sequence: str) -> str:
    return ProFormaAnnotation.from_ip2_sequence(sequence).serialize()


@overload
def convert_ip2_sequence(
    sequence: str,
    n_workers: None = None,
    chunksize: None = None,
    method: parallelMethod | parallelMethodLiteral | None = None,
) -> str: ...


@overload
def convert_ip2_sequence(
    sequence: list[str],
    n_workers: int | None = None,
    chunksize: int | None = None,
    method: parallelMethod | parallelMethodLiteral | None = None,
) -> list[str]: ...


[docs] def convert_ip2_sequence( sequence: str | list[str], n_workers: int | None = None, chunksize: int | None = None, method: parallelMethod | parallelMethodLiteral | None = None, ) -> str | list[str]: """ Converts a IP2-Like sequence to a proforma2.0 compatible sequence. .. code-block:: python >>> convert_ip2_sequence('K.PEP(phospho)TIDE.K') 'PEP[phospho]TIDE' """ if isinstance(sequence, list): return parallel_apply_internal( _convert_ip2_sequence_single, sequence, n_workers=n_workers, chunksize=chunksize, method=method, ) else: return _convert_ip2_sequence_single(sequence)
def _convert_diann_sequence_single(sequence: str) -> str: return ProFormaAnnotation.from_diann(sequence).serialize() @overload def convert_diann_sequence( sequence: str, n_workers: None = None, chunksize: None = None, method: parallelMethod | parallelMethodLiteral | None = None, ) -> str: ... @overload def convert_diann_sequence( sequence: list[str], n_workers: int | None = None, chunksize: int | None = None, method: parallelMethod | parallelMethodLiteral | None = None, ) -> list[str]: ...
[docs] def convert_diann_sequence( sequence: str | list[str], n_workers: int | None = None, chunksize: int | None = None, method: parallelMethod | parallelMethodLiteral | None = None, ) -> str | list[str]: """ Converts a DIANN-Like sequence to a proforma2.0 compatible sequence. .. code-block:: python >>> convert_diann_sequence('_[Acytel]YMGTLRGC[Carbamidomethyl]LLRLYHD[1.0]_[Methyl]') '[Acytel]-YMGTLRGC[Carbamidomethyl]LLRLYHD[1.0]-[Methyl]' """ if isinstance(sequence, list): return parallel_apply_internal( _convert_diann_sequence_single, sequence, n_workers=n_workers, chunksize=chunksize, method=method, ) else: return _convert_diann_sequence_single(sequence)
def _convert_casanovo_sequence_single(sequence: str) -> str: return ProFormaAnnotation.from_casanovo(sequence).serialize() @overload def convert_casanovo_sequence( sequence: str, n_workers: None = None, chunksize: None = None, method: parallelMethod | parallelMethodLiteral | None = None, ) -> str: ... @overload def convert_casanovo_sequence( sequence: list[str], n_workers: int | None = None, chunksize: int | None = None, method: parallelMethod | parallelMethodLiteral | None = None, ) -> list[str]: ...
[docs] def convert_casanovo_sequence( sequence: str | list[str], n_workers: int | None = None, chunksize: int | None = None, method: parallelMethod | parallelMethodLiteral | None = None, ) -> str | list[str]: """ Converts a Casanovo sequence with modifications to a proforma2.0 compatible sequence. :return: Proforma2.0 compatable sequence or list of sequences. :rtype: str | list[str] .. code-block:: python >>> convert_casanovo_sequence('+43.006P+100EPTIDE') '[+43.006]-P[+100]EPTIDE' """ if isinstance(sequence, list): return parallel_apply_internal( _convert_casanovo_sequence_single, sequence, n_workers=n_workers, chunksize=chunksize, method=method, ) else: return _convert_casanovo_sequence_single(sequence)