Package: parcoursup
Écrit pardeux doctorants del’équipe
SCEEdeCentraleSupélec, campus de
Rennes,Lilian Besson (Naereen)etBastien Trotobas (BastienTr), et d’autres
collaborateur-trice-s.PrésentationCe dépôt contient un clone (presque complet) des algorithmes régissant
laplateforme Parcoursup, qui gère
depuis 2018 les affectations des élèves de classe de Terminale (dans
les lycées en France) dans leurs formations dans l’enseignement
supérieur.Les algorithmes et l’implémentation officielle (en Java) ont été
distribués en accès libre, et sous licence libre (GPL), en mai 2018. En
2018, ils étaient hébergés surce site
(framagit.org/parcoursup/algorithmes-de-parcoursup).Nous proposons ici une implémentation complète des différents
algorithmes de Parcoursup, écrite en Python 3, dans un style très
clair, avec des commentaires, etune
documentation.Nous avons pour objectif de comprendre et d’expliquer ces
algorithmes, en utilisant au maximum des notions et des modules
Python qui soient abordables et compréhensibles par des élèves de
classes préparatoires scientifiques (typiquement des MPSI).Note: Vous pouvez contribuer si vous le souhaiter !Une erreur à
signaler ?,
ouune contribution
possible?
Merci d’avance !Plan de bataillePour le développement en cours, cf. ce fichierTODO.md!/:/ExplicationsPour l’instant, nous avons implémenté dans le dossierparcoursup/un clone complet du code Java
initial, écrit en Python 3.Et dans le dossiernotebooks/nous proposons des
implémentations simplifiées des principaux algorithmes, écrites sans
dépendances et dans un style très didactique, avec des visualisations
interactives afin de permettre à tout le monde d’expérimenter un peu
et de visualiser le comportement des algorithmes. L’accent est mis
sur la compréhension rapide de l’influence des différents paramètres
numériques.TODO expliquer l’algorithme dans les grandes lignes, avec notre
propre vocabulaire, ici.Organisation de ce dépôtDes visualisations sontaussi dans le dossier
notebooks/. TODO encore à travailler !Le code des algorithmes estdans le dossier
parcoursup/, comme le code Java initial, c’est
découpé en deux modules,ordreappeletpropositions,Les (exemples de) données synthétiques générées sontdans le dossier
donnees/,Des tests (plusieurs centaines) sont présents dans le dossiertests/, inspirés parce
projet,Une documentation de notre implémentation complète est disponible en
ligne,sur la page
suivante,
construite avec Sphinx à partir des fichiers présents dansle
dossier docs/,Des utilitaires sontdans le dossier utils/,Démonstration dans unnotebook JupyterDes visualisations sont dansle dossier
notebooks/.Documentation officielle et ressourcesLa page officielle de présentation de Parcoursup estici(en 2018).Communications journalistiques, entre le 23 mai 2018 et le 15 juillet
2018 :Les indicateurs quotidiennement publiés par le ministère sont surcette page
là(en juin 2018).Cette carte qui montre jour après jour les résultats donnés par
Parcoursup :statistiques.parcoursup.fr.
> Nous voulons proposer notre propre carte de visualisation,c’est
en cours…Des détails sur les algorithmes :Ce document
texteetcet autre document
PDFdonnent plein d’explications.Ce texte du Journal
Officielmontre l’autorisation donnée par la CNIL pour la création de la base
de données pour Parcoursup, et détaille un peu toutes les
informations stockées pour le service. Il est important de garder en
tête que ces données ne sontpasutilisées par les algorithmes de
Parcoursup, qui n’utilisent qu’un identifiant unique et anonyme pour
identifier chaque candidat-e.Autres ressources, moins techniques mais plus pédagogiques :Le dossier de presse du
ministèrepour ParcoursupCes articles sur des blogs du Monde: suringenuingenieur.blog.lemonde.fr,
surenseigner.blog.lemonde.frou surbinaire.blog.lemonde.fr.Cet autre article par Clémence Réda est
instructif.ExemplesInstallationCes lignes deBash(à exécuter
sur une machine type GNU/Linux ou un Mac avec les outils standards)
clone ce dépôt, et installent unvirtualenv
Pythonet installentles
dépendancesdans cet environnement virtuel :cd/tmp/gitclonehttps://GitHub.com/Naereen/ParcourSup.pycdParcoursup.py/makeinstallNote : Il n’est pas nécessaire d’utiliser un virtualenv, mais
c’est recommandé. Vous pouvez simplement installer les modules
requis avec sudo pip install -r requirements.txt.Note : notre code n’est pas spécifiquement écrit pour une machine
utilisant GNU/Linux, et il devrait fonctionner sur n’importe quelle
plateforme qui supporte Python 3.6 (Microsoft Windows et Mac OS X
notamment). Il est testé sous GNU/Linux (XUbuntu)etsous
Microsoft Windows 7.N’hésitez pas à signaler un
problème,
si besoin. Merci d’avance !TestsLes tests qui reproduisent
(presque)
parfaitementles données d’exemplespeuvent être exécutés
avec les deux commandes suivantes :Ordres d’appel :$.env/bin/activate;python3./parcoursup/ordreappel/__init__.py...Proposition de vœux :$.env/bin/activate;python3./parcoursup/propositions/__init__.py...Ces deux tests prennent environ 30 secondes chacun.Note : Il n’est pas nécessaire d’utiliser un virtualenv, mais
c’est recommandé. Vous pouvez simplement faire les tests avec
python3 ./parcoursup/ordreappel/__init__.py et
python3 ./parcoursup/propositions/__init__.py.Des tests supplémentaires ont été récemment ajoutés (voir#3).Construire la documentation ?Demande d’avoir le modulesphinxinstallé. (sudo pip3 install sphinx si besoin).Puis, dans le dossier principal, il suffit de faire :$makedocsSous Windows ou si GNU Make n’est pas disponible, vous pouvez
construire la documentation manuellement avec les deux commandes
suivantes :$sphinx-apidoc-f-o./docs-e-M./parcoursup/$sphinx-build-Mhtml./docs./_build$./docs/.fixes_html_in_doc.shÀ proposLanguage et versions ?Python v3.6+. Avec lesmodules
suivants:Numpypour les tableaux,La bibliothèque standardpour tout
le reste.ipython,Jupyterpour les notebooks.tqdmsont optionnels.Licence ?Code libre,sous licence MIT(fileLICENSE). ©Lilian
BessonetBastien
Trotobaset collaborateur-trice-s,
2018.