forked from ScoDoc/ScoDoc
Bonus grenoble 2020 (à compléter pour l'ancien)
This commit is contained in:
parent
4222ea8160
commit
3c36acd194
@ -49,6 +49,10 @@ class BonusSport:
|
||||
- modimpl_coefs: les coefs des modules
|
||||
En classique: 1d ndarray de float (modimpl)
|
||||
En APC: 2d ndarray de float, (modimpl x UE) <= attention à transposer
|
||||
- etud_moy_gen: Series, index etudid, valeur float (moyenne générale avant bonus)
|
||||
- etud_moy_ue: DataFrame columns UE (sans sport), rows etudid (moyennes avant bonus)
|
||||
|
||||
etud_moy_gen et etud_moy_ue ne sont PAS modifiés (mais utilisés par certains bonus non additifs).
|
||||
"""
|
||||
|
||||
# Si vrai, en APC, si le bonus UE est None, reporte le bonus moy gen:
|
||||
@ -67,9 +71,13 @@ class BonusSport:
|
||||
ues: list,
|
||||
modimpl_inscr_df: pd.DataFrame,
|
||||
modimpl_coefs: np.array,
|
||||
etud_moy_gen,
|
||||
etud_moy_ue,
|
||||
):
|
||||
self.formsemestre = formsemestre
|
||||
self.ues = ues
|
||||
self.etud_moy_gen = etud_moy_gen
|
||||
self.etud_moy_ue = etud_moy_ue
|
||||
self.etuds_idx = modimpl_inscr_df.index # les étudiants inscrits au semestre
|
||||
self.bonus_ues: pd.DataFrame = None # virtual
|
||||
self.bonus_moy_gen: pd.Series = None # virtual
|
||||
@ -293,7 +301,7 @@ class BonusTours(BonusDirect):
|
||||
# ---- Un peu moins simples (mais pas trop compliqué)
|
||||
|
||||
|
||||
# Bonus simple, mais avec chagement de paramètres en 2010 !
|
||||
# Bonus simple, mais avec changement de paramètres en 2010 !
|
||||
class BonusLille(BonusSportSimples):
|
||||
"""Calcul bonus modules optionels (sport, culture), règle IUT Villeneuve d'Ascq
|
||||
|
||||
@ -320,8 +328,63 @@ class BonusLille(BonusSportSimples):
|
||||
)
|
||||
|
||||
|
||||
def bonus_iut1grenoble_2017(notes_sport, coefs, infos=None):
|
||||
"""Calcul bonus sport IUT Grenoble sur la moyenne générale (version 2017)
|
||||
|
||||
La note de sport de nos étudiants va de 0 à 5 points.
|
||||
Chaque point correspond à un % qui augmente la moyenne de chaque UE et la moyenne générale.
|
||||
Par exemple : note de sport 2/5 : la moyenne générale sera augmentée de 2%.
|
||||
|
||||
Calcul ici du bonus sur moyenne générale
|
||||
"""
|
||||
# les coefs sont ignorés
|
||||
# notes de 0 à 5
|
||||
points = sum([x for x in notes_sport])
|
||||
factor = (points / 4.0) / 100.0
|
||||
bonus = infos["moy"] * factor
|
||||
|
||||
return bonus
|
||||
|
||||
|
||||
class BonusGrenobleIUT1(BonusSport):
|
||||
"""
|
||||
La note de sport est sur 20, et on calcule une bonification (en %)
|
||||
qui va s'appliquer à la moyenne de chaque UE du semestre en appliquant
|
||||
la formule : bonification (en %) = (note-10)*0,5.
|
||||
|
||||
Bonification qui ne s'applique que si la note est >10.
|
||||
|
||||
(Une note de 10 donne donc 0% de bonif ; note de 20 : 5% de bonif)
|
||||
|
||||
"""
|
||||
|
||||
name = "bonus_grenoble_iut1_2020"
|
||||
# C'est un bonus "multiplicatif": on l'exprime en additif,
|
||||
# sur chaque moyenne d'UE m_0
|
||||
# m_1 = a . m_0
|
||||
# m_1 = m_0 + bonus
|
||||
# bonus = m_0 (a - 1)
|
||||
def compute_bonus(self, sem_modimpl_moys_inscrits, modimpl_coefs_etuds_no_nan):
|
||||
"""calcul du bonus"""
|
||||
# Calcule moyenne pondérée des notes de sport:
|
||||
notes = np.sum(
|
||||
sem_modimpl_moys_inscrits * modimpl_coefs_etuds_no_nan, axis=1
|
||||
) / np.sum(modimpl_coefs_etuds_no_nan, axis=1)
|
||||
notes = np.nan_to_num(notes, copy=False)
|
||||
a = (notes - 10.0) * 0.005
|
||||
a[a <= 0] = 1.0 # note < 10, pas de bonus
|
||||
if self.formsemestre.formation.is_apc():
|
||||
# ne s'applique qu'aux moyennes d'UE
|
||||
b = self.etud_moy_ue * (a - 1)
|
||||
self.bonus_ues = b # DataFrame
|
||||
else:
|
||||
# ne s'applique qu'à la moyenne générale
|
||||
b = self.etud_moy_gen * (a - 1)
|
||||
self.bonus_moy_gen = b
|
||||
|
||||
|
||||
class BonusVilleAvray(BonusSport):
|
||||
"""Calcul bonus modules optionels (sport, culture), règle IUT Ville d'Avray
|
||||
"""Bonus modules optionels (sport, culture), règle IUT Ville d'Avray.
|
||||
|
||||
Les étudiants de l'IUT peuvent suivre des enseignements optionnels
|
||||
de l'Université Paris 10 (C2I) non rattachés à une unité d'enseignement.
|
||||
|
@ -73,6 +73,8 @@ class ResultatsSemestreBUT(NotesTableCompat):
|
||||
self.ues,
|
||||
self.modimpl_inscr_df,
|
||||
self.modimpl_coefs_df.transpose(),
|
||||
self.etud_moy_gen,
|
||||
self.etud_moy_ue,
|
||||
)
|
||||
self.bonus_ues = bonus.get_bonus_ues()
|
||||
if self.bonus_ues is not None:
|
||||
|
@ -80,6 +80,8 @@ class ResultatsSemestreClassic(NotesTableCompat):
|
||||
self.ues,
|
||||
self.modimpl_inscr_df,
|
||||
self.modimpl_coefs,
|
||||
self.etud_moy_gen,
|
||||
self.etud_moy_ue,
|
||||
)
|
||||
self.bonus_ues = bonus.get_bonus_ues()
|
||||
if self.bonus_ues is not None:
|
||||
|
Loading…
Reference in New Issue
Block a user