New Sort Oder: PSG

            card["S(recall)"] = card.apply(
                lambda row: (
                    float(student.next_states(row["states"], row["delta_t"], 3)[0])
                    if row["stability"] != 0
                    else 0
                ),
                axis=1,
            )
            card["PSG"] = (
                card["S(recall)"] * card["retrievability"]
            ) / card["stability"].map(lambda x: x if x != 0 else 1)
            card["S(recall_tomorrow)"] = card.apply(
                lambda row: (
                    float(student.next_states(row["states"], row["delta_t"] + 1, 3)[0])
                    if row["stability"] != 0
                    else 0
                ),
                axis=1,
            )

            card["PSG_tomorrow"] = (
                card["S(recall_tomorrow)"] * card["retrievability"]
            ) / card["stability"].map(lambda x: x if x != 0 else 1)
            card["PLSG"] = card["PSG"] - card["PSG_tomorrow"]

3 Likes