Modification calcul bonus IUT St Nazaire

This commit is contained in:
Emmanuel Viennet 2022-11-29 10:12:19 +01:00
parent 6df0e8c941
commit c52807939a
1 changed files with 30 additions and 2 deletions

View File

@ -1208,7 +1208,7 @@ class BonusStDenis(BonusSportAdditif):
bonus_max = 0.5
class BonusStNazaire(BonusSportMultiplicatif):
class BonusStNazaire(BonusSport):
"""IUT de Saint-Nazaire
Trois bonifications sont possibles : sport, culture et engagement citoyen
@ -1230,9 +1230,37 @@ class BonusStNazaire(BonusSportMultiplicatif):
name = "bonus_iutSN"
displayed_name = "IUT de Saint-Nazaire"
classic_use_bonus_ues = True # s'applique aux UEs en DUT et LP
seuil_moy_gen = 0.0 # tous les points comptent
amplitude = 0.01 / 4 # 4pt => 1%
factor_max = 0.1 # 10% max
# Modifié 2022-11-29: calculer chaque bonus
# (de 1 à 3 modules) séparément.
def compute_bonus(self, sem_modimpl_moys_inscrits, modimpl_coefs_etuds_no_nan):
"""Calcul du bonus St Nazaire 2022
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)
"""
if 0 in sem_modimpl_moys_inscrits.shape:
# pas d'étudiants ou pas d'UE ou pas de module...
return
# Prend les 3 premiers bonus trouvés
# ignore les coefficients
bonus_mod_moys = sem_modimpl_moys_inscrits[:, :3]
bonus_mod_moys = np.nan_to_num(bonus_mod_moys, copy=False)
factor = bonus_mod_moys * self.amplitude
# somme les bonus:
factor = factor.sum(axis=1)
# et limite à 10%:
factor.clip(0.0, self.factor_max, out=factor)
# Applique aux moyennes d'UE
if len(factor.shape) == 1: # classic
factor = factor[:, np.newaxis]
bonus = self.etud_moy_ue * factor
self.bonus_ues = bonus # DataFrame
# Les bonus multiplicatifs ne s'appliquent pas à la moyenne générale
self.bonus_moy_gen = None
class BonusTarbes(BonusIUTRennes1):