class Training(PyBioSchema): setup = fields.Nested(Setup) source = fields.ImportableSource(required=True) required_kwargs = fields.List(fields.Str, missing=list) optional_kwargs = fields.Dict(fields.Str, missing=dict) dependencies = fields.Dependencies(required=True) description = fields.Str(missing=None)
class ModelSpec(BaseSpec): prediction = fields.Nested(Prediction) inputs = fields.Tensors(InputArray, valid_magic_values=[MagicTensorsValue.any], many=True) outputs = fields.Tensors( OutputArray, valid_magic_values=[MagicTensorsValue.same, MagicTensorsValue.dynamic], many=True ) training = fields.Nested(Training, missing=None) @validates("outputs") def validate_reference_input_names(self, data, **kwargs): pass # todo validate_reference_input_names # @validates_schema def input_propagation_from_training_reader(self, data, **kwargs): spec: nodes.ModelSpec = self.make_object(data, **kwargs) if spec.training is None: return reader_axes = spec.training.setup.reader.spec.outputs inputs = spec.inputs
class BaseSpec(PyBioSchema): name = fields.Str(required=True) format_version = fields.Str(required=True) description = fields.Str(required=True) cite = fields.Nested(CiteEntry, many=True, required=True) authors = fields.List(fields.Str(required=True)) documentation = fields.Path(required=True) tags = fields.List(fields.Str, required=True) language = fields.Str(required=True) framework = fields.Str(missing=None) source = fields.ImportableSource(required=True) required_kwargs = fields.List(fields.Str, missing=list) optional_kwargs = fields.Dict(fields.Str, missing=dict) test_input = fields.Path(missing=None) test_output = fields.Path(missing=None) thumbnail = fields.Path(missing=None)
class Setup(PyBioSchema): samplers = fields.List(fields.Nested(Sampler, required=True), required=True) preprocess = fields.Nested(Transformation, many=True, missing=list) postprocess = fields.Nested(Transformation, many=True, missing=list) losses = fields.Nested(Transformation, many=True, missing=list) optimizer = fields.Nested(Optimizer, missing=None)
class Sampler(SpecWithKwargs): spec = fields.SpecURI(SamplerSpec) readers = fields.List(fields.Nested(Reader, required=True), required=True)
class Reader(SpecWithKwargs): spec = fields.SpecURI(ReaderSpec) transformations = fields.List(fields.Nested(Transformation), missing=list)
class Prediction(PyBioSchema): weights = fields.Nested(Weights, missing=None) dependencies = fields.Dependencies(missing=None) preprocess = fields.Nested(Transformation, many=True, missing=list) postprocess = fields.Nested(Transformation, many=True, missing=list)