import re
from datetime import datetime
from typing import Optional
from pydantic import Field, ValidationError, field_validator
from dataio.schemas.bonsai_api.metadata import User, Version
from dataio.tools import BonsaiBaseModel, BonsaiTableModel
[docs]
class FactBaseModel_uncertainty(BonsaiBaseModel):
variance: Optional[float] = None
standard_deviation: Optional[float] = None
confidence_interval_95min: Optional[float] = None
confidence_interval_95max: Optional[float] = None
confidence_interval_68min: Optional[float] = None
confidence_interval_68max: Optional[float] = None
distribution: Optional[str] = None
min_value: Optional[float] = None
max_value: Optional[float] = None
uncertainty_comment: Optional[str] = None
def __str__(self) -> str:
return self.name
[docs]
class FactBaseModel_samples(BonsaiBaseModel):
samples: list[float]
def __str__(self) -> str:
return self.name
[docs]
class DimensionModel(BonsaiBaseModel):
code: Optional[str] = None
position: Optional[int] = None
created_by: Optional[str] = None
[docs]
@field_validator("code")
def check_code_names(cls, v, field):
if " " in v:
raise ValueError(f"{field.field_name} not allowed to contain whitespaces.")
return v
[docs]
class CorrespondenceModel(BonsaiBaseModel):
created_by: Optional[str] = None
create_time: datetime = Field(default_factory=datetime.now)
[docs]
class MatrixModel:
column_schema: FactBaseModel_uncertainty
row_schema: FactBaseModel_uncertainty