Compare commits

...

8 Commits
main ... main

Author SHA1 Message Date
Jean-Christophe Dubacq
5f6276ade4 Clarify documentation 2024-11-01 16:21:56 +01:00
Jean-Christophe Dubacq
d98be6618c Rehaul completely option management 2024-11-01 00:18:55 +01:00
Jean-Christophe Dubacq
3b7a3df51c Add mixed dataviz. CLI not operational yet. 2024-10-27 20:50:51 +01:00
Jean-Christophe Dubacq
b33370daaf Modularize the source code (functions only) 2024-10-27 11:11:32 +01:00
Jean-Christophe Dubacq
474d2dffbd Refactorize debug and warning functions
add switches to control optimization
2024-10-24 20:11:39 +02:00
Jean-Christophe Dubacq
67bab0af54 Add display names and automatic height calculation 2024-10-18 03:05:40 +02:00
Jean-Christophe Dubacq
6ccb348361 * SCODOC_SERVER instead of SCODOC_URL to match documentation
* Ignore EXT semesters for old semesters
  * General cleanup
2024-10-18 03:04:14 +02:00
Jean-Christophe Dubacq
41bf7fd069 Enhance documentation, especially for Windows installations. 2024-10-17 23:18:41 +02:00
3 changed files with 981 additions and 496 deletions

View File

@ -1,9 +1,8 @@
# scodoc-cohortes # scodoc-cohortes
Visualisation des cohortes de BUT depuis scodoc *Visualisation des cohortes de BUT depuis scodoc*
Ce programme utilise l'API pour générer des graphes de Sankey permettant Ce programme utilise l'API pour générer des graphes de Sankey permettant de visualiser le devenir d'une cohorte.
de visualiser le devenir d'une cohorte.
La notion de cohorte devient difficile à traiter lorsqu'on considère La notion de cohorte devient difficile à traiter lorsqu'on considère
l'existence de passerelles permettant d'entrer à n'importe quel année l'existence de passerelles permettant d'entrer à n'importe quel année
@ -38,17 +37,19 @@ Il existe un dernier type (qui tombe dans le 5 ou le 6 actuellement), c'est
le cas d'un élève en BUT3 qui ne valide pas le BUT3, a validé le BUT2, et le cas d'un élève en BUT3 qui ne valide pas le BUT3, a validé le BUT2, et
partirait dans une autre filière après. Le cas paraît beaucoup plus douteux que le deuxième type et est pour le moment classé en échec. partirait dans une autre filière après. Le cas paraît beaucoup plus douteux que le deuxième type et est pour le moment classé en échec.
## Installation ## Installation (Linux et MacOS)
Créer un virtualenv: Créer un virtualenv:
```bash ```bash
python3 -m venv venv python3 -m venv venv
source venv/bin/activate source venv/bin/activate
sudo apt-get install libcairo-dev sudo apt install libcairo-dev
``` ```
(n'importe quelle version de python récente fera l'affaire). (n'importe quelle version de python récente fera l'affaire).
Si vous êtes sur un système qui n'est pas de la famille Debian/Ubuntu, il faudra sans doute remplacer la dernière ligne par votre installeur de paquets préféré. Cette opération n'est à faire qu'une seule fois par machine.
Puis installer les composants suivants dans ce virtualenv: Puis installer les composants suivants dans ce virtualenv:
``` ```
@ -63,16 +64,35 @@ SCODOC_USER=un_utilisateur_api
SCODOC_PASSWORD=son_mot_de_passe SCODOC_PASSWORD=son_mot_de_passe
``` ```
## Installation (Windows)
Exécuter un terminal depuis le répertoire où est installé le programme. Les commandes à taper dans l'interpréteur de commandes *PowerShell* sont :
```powershell
python.exe -m venv venv
venv\Scripts\Activate.ps1
pip install -r requirements.txt
```
Puis indiquer votre configuration ScoDoc dans le fichier `.env`:
```bash
SCODOC_SERVER=https://votre.serveur.fr
SCODOC_USER=un_utilisateur_api
SCODOC_PASSWORD=son_mot_de_passe
```
Pycairo ne devrait pas s'installer. Si vous savez installer un pycairo fonctionnel pour Windows, n'hésitez pas à nous proposer de le rajouter à ces instructions.
### Note pour les développeurs ### Note pour les développeurs
Pour mettre à jour le fichier `requirements.txt`, lancer (après avoir activé Pour mettre à jour le fichier `requirements.txt`, lancer (après avoir activé
l'environnement python) l'environnement python)
```py ```py
pip freeze > requirements.txt pip freeze|sed -e '/pycairo/ s/$/; platform_system != "Windows"/g' > requirements.txt
``` ```
## Usage ## Usage
Après ouverture du terminal: Après ouverture du terminal (une seule fois par terminal):
```bash ```bash
source venv/bin/activate source venv/bin/activate
@ -81,22 +101,37 @@ source venv/bin/activate
Puis Puis
```bash ```bash
./get.py [--techno] [--base 2021] dept ... ./get.py [--options] dept ...
``` ```
Il est possible d'utiliser aussi un fichier JSON qui contient soit un tableau associatif avec une clé nommée CLI qui est une liste de chaînes, soit directement une liste de chaînes. Ces chaînes remplacent simplement les arguments de la ligne de commande.
### Options principales
|Option|Défaut|utilisation sommaire|
|------|------|--------------------------------|
| --baseyear,-b |2021| L'année de début de la cohorte |
| --base_techno |Faux| L'effectif principal doit avoir un bac techno|
| --base_women |Faux| L'effectif principal doit être féminin |
| --secondary_techno |Vrai| L'effectif focus doit avoir un bac techno |
| --secondary_women |Faux| L'effectif focus doit être féminin |
| **--optimize** |Oui|Utilise un algorithme pour optimiser l'ordre des paquets en repartant de l'état précédent|
| --reuse |Non| N'optimise pas l'ordre des paquets : réutilise le précédent (si présent)|
| --restart|Non|Utilise un algorithme pour optimiser l'ordre des paquets|
| --loops|300|Nombre d'itérations de l'algorithme|
## FICHIERS ## FICHIERS
### get.py ### get.py
Le programme principal. Il prend en argument des acronymes de département (par exemple GEA ou INFO) et fabrique un graphe comportant les formations BUT de ce département (ou ces départements dans le même graphe, s'ils sont plusieurs sur la ligne de commande). C'est l'exécutable. Il prend en argument des acronymes de département (par exemple GEA ou INFO) et fabrique un graphe comportant les formations BUT de ce département (ou ces départements dans le même graphe, s'ils sont plusieurs sur la ligne de commande).
Il faut un environnement virtuel pour que soient accessibles les bibliothèques Python pycairo, drawsvg, requests. A priori libcairo est optionnel, mais le graphe marchera moins bien sans. La bibliothèque (système) `libcairo2` doit aussi être installée (`apt install libcairo-dev` ou équivalent). Il faut un environnement virtuel pour que soient accessibles les bibliothèques Python pycairo, drawsvg, requests. A priori libcairo est optionnel, mais le graphe marchera moins bien sans. La bibliothèque (système) `libcairo2` doit aussi être installée (`apt install libcairo-dev` ou équivalent).
On peut rajouter l'option `--techno` pour n'avoir que les bacs technos.
### redirect.csv ### redirect.csv
Certains élèves ne reçoivent jamais de décision de jury lorsqu'ils quittent la cohorte, tout en n'étant pas démissionnaires. Ce sont des erreurs administratives, mais il est possible d'indiquer un *résultat de jury* fictif pour ces élèves. La plupart du temps, ce sont des élèves qui abandonnent la formation, et il suffit de leur donner le résultat NAR ou DEM. Dans d'autres cas, ça peut être des élèves en attente de décision parce que le jury n'a pas encore eu lieu, mais on sait déjà quel sera l'issue du jury (par exemple des notes élevés et un stage qui se déroule bien, ou au contraire pas de stage trouvé au mois de septembre). Certains élèves ne reçoivent jamais de décision de jury lorsqu'ils quittent la cohorte, tout en n'étant pas démissionnaires. Ce sont des erreurs administratives, mais il est possible d'indiquer un *résultat de jury* **fictif** pour ces élèves. La plupart du temps, ce sont des élèves qui abandonnent la formation, et il suffit de leur donner le résultat NAR ou DEM. Dans d'autres cas, ça peut être des élèves en attente de décision parce que le jury n'a pas encore eu lieu, mais on sait déjà quel sera l'issue du jury (par exemple des notes élevés et un stage qui se déroule bien, ou au contraire pas de stage trouvé au mois de septembre).
**Format :** format CSV avec virgule comme séparateur. Les lignes vides ou commençant par # sont ignorées. **Format :** format CSV avec virgule comme séparateur. Les lignes vides ou commençant par # sont ignorées.
@ -107,7 +142,7 @@ Certains élèves ne reçoivent jamais de décision de jury lorsqu'ils quittent
### theme.csv ### theme.csv
Possibilité de choisir les couleurs pour chacune des catégories. Ce fichier offre la ossibilité de choisir les couleurs pour chacune des catégories.
**Format :** format CSV avec virgule comme séparateur. Les couleurs sont au format de sankeymatic.com, soit le format hexadécimal d'HTML sauf la catégorie TRANSPARENT qui vaut #FFFFFF.0 (blanc transparent). Les catégories sont `+DUT`, `QUIT`, `SUCCESS`, `NORMAL`, `FAIL`, `OLD`, `NEW`, `TRANSPARENT`, `RED`. **Format :** format CSV avec virgule comme séparateur. Les couleurs sont au format de sankeymatic.com, soit le format hexadécimal d'HTML sauf la catégorie TRANSPARENT qui vaut #FFFFFF.0 (blanc transparent). Les catégories sont `+DUT`, `QUIT`, `SUCCESS`, `NORMAL`, `FAIL`, `OLD`, `NEW`, `TRANSPARENT`, `RED`.
@ -121,10 +156,25 @@ Possibilité de choisir les couleurs pour chacune des catégories.
TRANSPARENT,#FFFFFF.0 TRANSPARENT,#FFFFFF.0
RED,#000000 RED,#000000
### <dept>.json ### <dept>_x_y.json
Ce fichier permet de mettre les options autrement que sur la ligne de commande, pour permettre une utilisation plus aisée (notamment en cas d'utilisation d'une autre interface pour générer les options).
Les valeurs `x` et `y` sont basées sur les populations primaires et secondaires.
**Format :** format JSON (utiliser un éditeur qui sait repérer les erreurs de format est recommandé).
**Liste des clés :**
* `cli` : liste de chaînes de caractères qui sont des options de la ligne de commande.
### <dept>.svg ### <dept>.svg
Ce fichier est la sortie du programme. C'est un graphique au format SVG, facile à incorporer dans des pages Web ou autres programmes de traitement de texte.
### best-<dept>.json ### best-<dept>.json
Ce fichier contient le résultat d'une recherche heuristique pour avoir un graphe meilleur. Il peut être supprimé si le graphe ne s'améliore pas sur des lancements successifs. Il peut aussi être modifié à la main. Ce fichier contient le résultat d'une recherche heuristique pour avoir un graphe visuellement plus satisfaisant. Il peut être supprimé si le graphe ne s'améliore pas par des lancements successifs. Il peut aussi être modifié à la main. C'est essentiellement l'ordre des balises
### cache.json
Un fichier global qui stocke de façon temporaire les données issues de scodoc. Il peut être supprimé sans pertes (sauf de temps).

1365
get.py

File diff suppressed because it is too large Load Diff

View File

@ -2,7 +2,7 @@ certifi==2024.8.30
charset-normalizer==3.4.0 charset-normalizer==3.4.0
drawsvg==2.4.0 drawsvg==2.4.0
idna==3.10 idna==3.10
pycairo==1.27.0 pycairo==1.27.0;platform_system != "Windows"
python-dotenv==1.0.1 python-dotenv==1.0.1
requests==2.32.3 requests==2.32.3
urllib3==2.2.3 urllib3==2.2.3