Module brevettiai.model.metadata.metadata

Expand source code
import h5py
from pydantic import BaseModel, Field, parse_obj_as
from typing import Optional, Type
from brevettiai import Module

from brevettiai.io.h5_metadata import get_metadata as h5_metadata


class ModelMetadata(BaseModel):
    id: str = Field(description="unique id of model")
    run_id: str = Field(description="Specifier of which training run created the model")
    name: str = Field(description="Name of model")
    producer: str = Field(description="Name of producing code")
    host_name: Optional[str] = Field(default=None, description="URI to host where more information may be found")

    class Config:
        json_encoders = {
            Module: lambda x: x.get_config()
        }


def get_metadata(file: str, metadata_type: Type[ModelMetadata] = ModelMetadata):
    if isinstance(file, h5py.File):
        return parse_obj_as(metadata_type, h5_metadata(file))
    if file.endswith(".h5"):
        return parse_obj_as(metadata_type, h5_metadata(file))
    else:
        raise NotImplementedError(f"Getting metadata from '{file}' not implemented")

Functions

def get_metadata(file: str, metadata_type: Type[ModelMetadata] = brevettiai.model.metadata.metadata.ModelMetadata)
Expand source code
def get_metadata(file: str, metadata_type: Type[ModelMetadata] = ModelMetadata):
    if isinstance(file, h5py.File):
        return parse_obj_as(metadata_type, h5_metadata(file))
    if file.endswith(".h5"):
        return parse_obj_as(metadata_type, h5_metadata(file))
    else:
        raise NotImplementedError(f"Getting metadata from '{file}' not implemented")

Classes

class ModelMetadata (**data: Any)

Create a new model by parsing and validating input data from keyword arguments.

Raises ValidationError if the input data cannot be parsed to form a valid model.

Expand source code
class ModelMetadata(BaseModel):
    id: str = Field(description="unique id of model")
    run_id: str = Field(description="Specifier of which training run created the model")
    name: str = Field(description="Name of model")
    producer: str = Field(description="Name of producing code")
    host_name: Optional[str] = Field(default=None, description="URI to host where more information may be found")

    class Config:
        json_encoders = {
            Module: lambda x: x.get_config()
        }

Ancestors

  • pydantic.main.BaseModel
  • pydantic.utils.Representation

Subclasses

Class variables

var Config
var host_name : Optional[str]
var id : str
var name : str
var producer : str
var run_id : str