irt-service/app/models/bundle.py

40 lines
1.1 KiB
Python

from pydantic import BaseModel
from typing import List
from lib.irt.test_information_function import TestInformationFunction
from lib.irt.test_response_function import TestResponseFunction
from models.item import Item
from models.irt_model import IRTModel
class Bundle(BaseModel):
id: int
count: int
items: List[Item]
type: str
def tif(self, irt_model: IRTModel, theta: float) -> float:
return TestInformationFunction(irt_model).calculate(self.items,
theta=theta)
def trf(self, irt_model: IRTModel, theta: float) -> float:
return TestResponseFunction(irt_model).calculate(self.items,
theta=theta)
def tif_sum(self, solver_run):
total = 0
for target in solver_run.objective_function.tcc_targets:
total += self.tif(solver_run.irt_model, target.theta)
return total
def trf_sum(self, solver_run):
total = 0
for target in solver_run.objective_function.tcc_targets:
total += self.trf(solver_run.irt_model, target.theta)
return total