diff --git a/app/comp/bonus_spo.py b/app/comp/bonus_spo.py index cd74b8150..520445372 100644 --- a/app/comp/bonus_spo.py +++ b/app/comp/bonus_spo.py @@ -1197,6 +1197,88 @@ class BonusRoanne(BonusSportAdditif): proportion_point = 1 +class BonusSceaux(BonusSportAdditif): # atypique + """IUT de Sceaux + + L’IUT de Sceaux (Université de Paris-Saclay) propose aux étudiants un seul enseignement + non rattaché aux UE : l’option Sport. +

+ Cette option donne à l’étudiant qui la suit une bonification qui s’applique uniquement + si sa note est supérieure à 10. +

+

+ Cette bonification s’applique sur l’ensemble des UE d’un semestre de la façon suivante : +

+

+ + [ (Note – 10) / Nb UE du semestre ] / Total des coefficients de chaque UE + +

+ +

+ Exemple : un étudiant qui a obtenu 16/20 à l’option Sport en S1 + (composé par exemple de 3 UE:UE1.1, UE1.2 et UE1.3) + aurait les bonifications suivantes : +

+ + """ + + name = "bonus_iut_sceaux" + displayed_name = "IUT de Sceaux" + proportion_point = 1.0 + + def __init__( + self, + formsemestre: "FormSemestre", + sem_modimpl_moys: np.array, + ues: list, + modimpl_inscr_df: pd.DataFrame, + modimpl_coefs: np.array, + etud_moy_gen, + etud_moy_ue, + ): + # Pour ce bonus, il faut conserver: + # - le nombre d'UEs + self.nb_ues = len([ue for ue in ues if ue.type != UE_SPORT]) + # - le total des coefs de chaque UE + # modimpl_coefs : DataFrame, lignes modimpl, col UEs (sans sport) + self.sum_coefs_ues = modimpl_coefs.sum() # Series, index ue_id + super().__init__( + formsemestre, + sem_modimpl_moys, + ues, + modimpl_inscr_df, + modimpl_coefs, + etud_moy_gen, + etud_moy_ue, + ) + + def compute_bonus(self, sem_modimpl_moys_inscrits, modimpl_coefs_etuds_no_nan): + """Calcul du bonus IUT de Sceaux 2023 + sem_modimpl_moys_inscrits: les notes de sport + En APC: ndarray (nb_etuds, nb_mod_sport, nb_ues_non_bonus) + En classic: ndarray (nb_etuds, nb_mod_sport) + + Attention: si la somme des coefs de modules dans une UE est nulle, on a un bonus Inf + (moyenne d'UE cappée à 20). + """ + if (0 in sem_modimpl_moys_inscrits.shape) or (self.nb_ues == 0): + # pas d'étudiants ou pas d'UE ou pas de module... + return + super().compute_bonus(sem_modimpl_moys_inscrits, modimpl_coefs_etuds_no_nan) + self.bonus_ues = (self.bonus_ues / self.nb_ues) / self.sum_coefs_ues + + class BonusStEtienne(BonusSportAdditif): """IUT de Saint-Etienne. diff --git a/sco_version.py b/sco_version.py index 3a258add8..c34d6085f 100644 --- a/sco_version.py +++ b/sco_version.py @@ -1,7 +1,7 @@ # -*- mode: python -*- # -*- coding: utf-8 -*- -SCOVERSION = "9.4.60" +SCOVERSION = "9.4.61" SCONAME = "ScoDoc"