ESMFold2-Fast / esmfold2_utils_types.py
lhallee's picture
Upload folder using huggingface_hub
fb8a87c verified
from __future__ import annotations
import io
from dataclasses import dataclass
from pathlib import Path
from typing import Union
from cloudpathlib import CloudPath
PathLike = Union[str, Path, CloudPath]
PathOrBuffer = Union[PathLike, io.StringIO]
@dataclass
class FunctionAnnotation:
"""Represents an annotation of a protein's function over a range of residues.
Fields:
label (str): An entry in either the function_tokens or residue_annotations tokenizer vocabs
start (int): Start index of this annotation. 1-indexed, inclusive.
end (int): End index of this annotation. 1-indexed, inclusive.
"""
label: str
start: int
end: int
def to_tuple(self) -> tuple[str, int, int]:
return self.label, self.start, self.end
def __len__(self) -> int:
"""Length of the annotation."""
return self.end - self.start + 1