in leaderboard/data.py [0:0]
def from_irt_results(cls: Type[T], irt_results: IrtResults) -> T:
# pylint: disable=line-too-long
example_ids = set()
irt_2pl_example_stats = {}
for str_idx, ex_id in irt_results.example_ids.items():
idx = str_idx_to_int(str_idx, IrtModelType(irt_results.irt_model))
n_examples = len(irt_results.example_ids)
if idx < 0 or idx > n_examples - 1:
raise ValueError(f"Invalid index: {idx}, n_examples={n_examples}")
example_ids.add(ex_id)
irt_2pl_example_stats[ex_id] = ExampleStats(
irt_model=irt_results.irt_model,
example_id=ex_id,
diff=irt_results.diff[idx],
disc=irt_results.disc[idx] if irt_results.disc is not None else None,
lambda_=irt_results.lambdas[idx] if irt_results.lambdas is not None else None,
)
model_ids = set()
irt_2pl_model_stats = {}
n_models = len(irt_results.model_ids)
for str_idx, m_id in irt_results.model_ids.items():
idx = str_idx_to_int(str_idx, IrtModelType(irt_results.irt_model))
if idx < 0 or idx > n_models - 1:
all_ids = [int(str_idx) for str_idx in irt_results.model_ids.keys()]
max_id = max(all_ids)
min_id = min(all_ids)
raise ValueError(
f"Invalid index: {idx} model_type={irt_results.irt_model} n_models={n_models} min_id={min_id} max_id={max_id}"
)
model_ids.add(m_id)
irt_2pl_model_stats[m_id] = ModelStats(
irt_model=irt_results.irt_model, model_id=m_id, skill=irt_results.ability[idx],
)
return cls(
irt_model=IrtModelType(irt_results.irt_model),
example_stats=irt_2pl_example_stats,
example_ids=list(example_ids),
model_stats=irt_2pl_model_stats,
model_ids=list(model_ids),
)