Source code for openprotein.predictor.prediction
"""Prediction results represented as futures."""
import numpy as np
from openprotein.base import APISession
from openprotein.jobs import Future
from . import api
from .schemas import (
PredictJob,
PredictMultiJob,
PredictMultiSingleSiteJob,
PredictSingleSiteJob,
)
[docs]
class PredictionResultFuture(Future):
"""Prediction results represented as a future."""
job: PredictJob | PredictSingleSiteJob | PredictMultiJob | PredictMultiSingleSiteJob
[docs]
def __init__(
self,
session: APISession,
job: (
PredictJob
| PredictSingleSiteJob
| PredictMultiJob
| PredictMultiSingleSiteJob
),
sequences: list[bytes] | None = None,
):
super().__init__(session, job)
self._sequences = sequences
@property
def sequences(self):
if self._sequences is None:
self._sequences = api.predictor_predict_get_sequences(
self.session, self.job.job_id
)
return self._sequences
@property
def id(self):
return self.job.job_id
def __keys__(self):
return self.sequences
def get_item(self, sequence: bytes) -> tuple[np.ndarray, np.ndarray]:
"""
Get embedding results for specified sequence.
Args:
sequence (bytes): sequence to fetch results for
Returns:
mu (np.ndarray): means of sequence prediction
var (np.ndarray): variances of sequence prediction
"""
data = api.predictor_predict_get_sequence_result(
self.session, self.job.job_id, sequence
)
return api.decode_predict(data)
def get(self, verbose: bool = False) -> tuple[np.ndarray, np.ndarray]:
"""
Get embedding results for specified sequence.
Args:
sequence (bytes): sequence to fetch results for
Returns:
mu (np.ndarray): means of predictions
var (np.ndarray): variances of predictions
"""
data = api.predictor_predict_get_batched_result(self.session, self.job.job_id)
return api.decode_predict(data, batched=True)