Source code for RIAssigner.data.ValidateSimpleData
from typing import Iterable
from RIAssigner.utils import is_sorted
from .SimpleData import SimpleData
from .Data import Data
[docs]
class ValidateSimpleData(SimpleData):
def __init__(
self,
retention_times: Iterable[float],
rt_unit: str,
retention_indices: Iterable[float] = None,
):
"""Constructor for `NumpyData` class.
Args:
retention_times (Iterable[float]): Retention time values
"""
super().__init__(retention_times, rt_unit, retention_indices)
self._validate_input(retention_times, retention_indices)
self._read(retention_times, retention_indices)
[docs]
def _validate_input(self, retention_times, retention_indices):
if not isinstance(retention_times, list) or None in retention_times:
raise TypeError("Retention times must be a list and cannot contain None.")
if not all(map(Data.is_valid, retention_times)):
raise ValueError("Retention time data is invalid.")
if not is_sorted(retention_times):
raise ValueError("Retention time data has to be sorted.")
if retention_indices is not None:
if len(retention_times) != len(retention_indices):
raise ValueError("Retention times and index data are of different length.")
if not is_sorted(retention_indices):
raise ValueError("Retention indices data has to be sorted.")