forked from ScoDoc/ScoDoc
Calcul moyenne gen. BUT avec ECTS
This commit is contained in:
parent
29b5d54d22
commit
00fa91e598
@ -30,8 +30,11 @@
|
|||||||
import numpy as np
|
import numpy as np
|
||||||
import pandas as pd
|
import pandas as pd
|
||||||
|
|
||||||
|
from flask import g, url_for
|
||||||
|
from app.scodoc.sco_exceptions import ScoValueError
|
||||||
|
|
||||||
def compute_sem_moys_apc(
|
|
||||||
|
def compute_sem_moys_apc_using_coefs(
|
||||||
etud_moy_ue_df: pd.DataFrame, modimpl_coefs_df: pd.DataFrame
|
etud_moy_ue_df: pd.DataFrame, modimpl_coefs_df: pd.DataFrame
|
||||||
) -> pd.Series:
|
) -> pd.Series:
|
||||||
"""Calcule les moyennes générales indicatives de tous les étudiants
|
"""Calcule les moyennes générales indicatives de tous les étudiants
|
||||||
@ -48,6 +51,32 @@ def compute_sem_moys_apc(
|
|||||||
return moy_gen
|
return moy_gen
|
||||||
|
|
||||||
|
|
||||||
|
def compute_sem_moys_apc_using_ects(
|
||||||
|
etud_moy_ue_df: pd.DataFrame, ects: list, formation_id=None
|
||||||
|
) -> pd.Series:
|
||||||
|
"""Calcule les moyennes générales indicatives de tous les étudiants
|
||||||
|
= moyenne des moyennes d'UE, pondérée par leurs ECTS.
|
||||||
|
|
||||||
|
etud_moy_ue_df: DataFrame, colonnes ue_id, lignes etudid
|
||||||
|
ects: liste de floats ou None, 1 par UE
|
||||||
|
|
||||||
|
Result: panda Series, index etudid, valeur float (moyenne générale)
|
||||||
|
"""
|
||||||
|
try:
|
||||||
|
moy_gen = (etud_moy_ue_df * ects).sum(axis=1) / sum(ects)
|
||||||
|
except TypeError:
|
||||||
|
if None in ects:
|
||||||
|
raise ScoValueError(
|
||||||
|
f"""Calcul impossible: ECTS des UE manquants !
|
||||||
|
voir <a href="{url_for("notes.ue_table", scodoc_dept=g.scodoc_dept,
|
||||||
|
formation_id=formation_id)}">la page du programme</a>.
|
||||||
|
"""
|
||||||
|
)
|
||||||
|
else:
|
||||||
|
raise
|
||||||
|
return moy_gen
|
||||||
|
|
||||||
|
|
||||||
def comp_ranks_series(notes: pd.Series) -> (pd.Series, pd.Series):
|
def comp_ranks_series(notes: pd.Series) -> (pd.Series, pd.Series):
|
||||||
"""Calcul rangs à partir d'une séries ("vecteur") de notes (index etudid, valeur
|
"""Calcul rangs à partir d'une séries ("vecteur") de notes (index etudid, valeur
|
||||||
numérique) en tenant compte des ex-aequos.
|
numérique) en tenant compte des ex-aequos.
|
||||||
|
@ -14,7 +14,7 @@ from app import log
|
|||||||
from app.comp import moy_ue, moy_sem, inscr_mod
|
from app.comp import moy_ue, moy_sem, inscr_mod
|
||||||
from app.comp.res_common import NotesTableCompat
|
from app.comp.res_common import NotesTableCompat
|
||||||
from app.comp.bonus_spo import BonusSport
|
from app.comp.bonus_spo import BonusSport
|
||||||
from app.models import ScoDocSiteConfig
|
from app.models import ScoDocSiteConfig, formsemestre
|
||||||
from app.models.ues import UniteEns
|
from app.models.ues import UniteEns
|
||||||
from app.scodoc.sco_codes_parcours import UE_SPORT
|
from app.scodoc.sco_codes_parcours import UE_SPORT
|
||||||
|
|
||||||
@ -73,7 +73,7 @@ class ResultatsSemestreBUT(NotesTableCompat):
|
|||||||
)
|
)
|
||||||
# Les coefficients d'UE ne sont pas utilisés en APC
|
# Les coefficients d'UE ne sont pas utilisés en APC
|
||||||
self.etud_coef_ue_df = pd.DataFrame(
|
self.etud_coef_ue_df = pd.DataFrame(
|
||||||
1.0, index=self.etud_moy_ue.index, columns=self.etud_moy_ue.columns
|
0.0, index=self.etud_moy_ue.index, columns=self.etud_moy_ue.columns
|
||||||
)
|
)
|
||||||
|
|
||||||
# --- Modules de MALUS sur les UEs
|
# --- Modules de MALUS sur les UEs
|
||||||
@ -103,8 +103,13 @@ class ResultatsSemestreBUT(NotesTableCompat):
|
|||||||
# Moyenne générale indicative:
|
# Moyenne générale indicative:
|
||||||
# (note: le bonus sport a déjà été appliqué aux moyennes d'UE, et impacte
|
# (note: le bonus sport a déjà été appliqué aux moyennes d'UE, et impacte
|
||||||
# donc la moyenne indicative)
|
# donc la moyenne indicative)
|
||||||
self.etud_moy_gen = moy_sem.compute_sem_moys_apc(
|
# self.etud_moy_gen = moy_sem.compute_sem_moys_apc_using_coefs(
|
||||||
self.etud_moy_ue, self.modimpl_coefs_df
|
# self.etud_moy_ue, self.modimpl_coefs_df
|
||||||
|
# )
|
||||||
|
self.etud_moy_gen = moy_sem.compute_sem_moys_apc_using_ects(
|
||||||
|
self.etud_moy_ue,
|
||||||
|
[ue.ects for ue in self.ues],
|
||||||
|
formation_id=self.formsemestre.formation_id,
|
||||||
)
|
)
|
||||||
# --- UE capitalisées
|
# --- UE capitalisées
|
||||||
self.apply_capitalisation()
|
self.apply_capitalisation()
|
||||||
|
Loading…
Reference in New Issue
Block a user