Skip to content

card_factory

Conversions between schema and internal DB models.

create_card_model(negotiation_card_orm)

Creates the internal model object from the corresponding DB object.

Source code in mlte/store/artifact/underlying/rdbs/card_factory.py
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
def create_card_model(
    negotiation_card_orm: DBNegotiationCard,
) -> NegotiationCardModel:
    """Creates the internal model object from the corresponding DB object."""
    body = NegotiationCardModel(
        system=SystemDescriptor(
            task=negotiation_card_orm.sys_task,
            usage_context=negotiation_card_orm.sys_usage_context,
            risks=[risk.description for risk in negotiation_card_orm.sys_risks],
            problem_type=negotiation_card_orm.sys_problem_type,
            goals=_build_goal_descriptors(negotiation_card_orm.sys_goals),
        ),
        data=_build_data_descriptors(negotiation_card_orm.data_descriptors),
        model=_build_model_descriptor(
            negotiation_card_orm.model_dev_resources,
            negotiation_card_orm.model_prod_deployment_platform,
            negotiation_card_orm.model_prod_capability_deployment_mechanism,
            negotiation_card_orm.model_prod_model_source,
            negotiation_card_orm.model_prod_inputs,
            negotiation_card_orm.model_prod_outputs,
            negotiation_card_orm.model_prod_resources,
        ),
        system_requirements=[
            QASDescriptor(
                identifier=qas.identifier,
                quality=qas.quality,
                stimulus=qas.stimulus,
                source=qas.source,
                environment=qas.environment,
                response=qas.response,
                measure=qas.measure,
            )
            for qas in negotiation_card_orm.system_requirements
        ],
    )
    return body

create_card_orm(negotiation_card, session)

Creates the DB object from the corresponding internal model.

Source code in mlte/store/artifact/underlying/rdbs/card_factory.py
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
def create_card_orm(
    negotiation_card: NegotiationCardModel,
    session: Session,
) -> DBNegotiationCard:
    """Creates the DB object from the corresponding internal model."""
    # Create intermedidate objects.
    if negotiation_card.model.development_compute_resources:
        model_dev_resources_orm = DBModelResourcesDescriptor(
            cpu=negotiation_card.model.development_compute_resources.cpu,
            gpu=negotiation_card.model.development_compute_resources.gpu,
            gpu_memory=negotiation_card.model.development_compute_resources.gpu_memory,
            main_memory=negotiation_card.model.development_compute_resources.main_memory,
            storage=negotiation_card.model.development_compute_resources.storage,
        )
    else:
        model_dev_resources_orm = None

    model_prod_resources_orm = DBModelResourcesDescriptor(
        cpu=negotiation_card.model.production_compute_resources.cpu,
        gpu=negotiation_card.model.production_compute_resources.gpu,
        gpu_memory=negotiation_card.model.production_compute_resources.gpu_memory,
        main_memory=negotiation_card.model.production_compute_resources.main_memory,
        storage=negotiation_card.model.production_compute_resources.storage,
    )

    # Create the actual object.
    negotiation_card_orm = DBNegotiationCard(
        sys_goals=[],
        sys_problem_type=negotiation_card.system.problem_type,
        sys_task=negotiation_card.system.task,
        sys_usage_context=negotiation_card.system.usage_context,
        sys_risks=[],
        model_dev_resources=model_dev_resources_orm,
        model_prod_resources=model_prod_resources_orm,
        model_prod_deployment_platform=negotiation_card.model.deployment_platform,
        model_prod_capability_deployment_mechanism=negotiation_card.model.capability_deployment_mechanism,
        model_prod_model_source=negotiation_card.model.model_source,
        model_prod_inputs=[],
        model_prod_outputs=[],
        data_descriptors=[],
        system_requirements=[],
    )

    # Create list of risks.
    for risk in negotiation_card.system.risks:
        risk_orm = DBGeneralRisk(description=risk)
        negotiation_card_orm.sys_risks.append(risk_orm)

    # Create list of system goal objects.
    for goal in negotiation_card.system.goals:
        goal_orm = _build_goal_orm(goal)
        negotiation_card_orm.sys_goals.append(goal_orm)

    # Create list of data descriptor objects.
    for data_descriptor in negotiation_card.data:
        data_orm = _build_data_descriptor_orm(data_descriptor, session)
        negotiation_card_orm.data_descriptors.append(data_orm)

    # Create list of model input objects.
    for input in negotiation_card.model.input_specification:
        input_orm = _build_io_descriptor_orm(input)
        negotiation_card_orm.model_prod_inputs.append(input_orm)

    # Create list of model output objects.
    for output in negotiation_card.model.output_specification:
        output_orm = _build_io_descriptor_orm(output)
        negotiation_card_orm.model_prod_outputs.append(output_orm)

    # Create list of QAS objects.
    for qas in negotiation_card.system_requirements:
        qas_orm = DBQAS(
            identifier=qas.identifier,
            quality=qas.quality,
            stimulus=qas.stimulus,
            source=qas.source,
            environment=qas.environment,
            response=qas.response,
            measure=qas.measure,
        )
        negotiation_card_orm.system_requirements.append(qas_orm)

    return negotiation_card_orm