owned this note
owned this note
Published
Linked with GitHub
---
tags: Enseignement, TER, Jupyter
---
# TER Jupyter
## Feuille de route
### Rapport et soutenances
Les soutenance auront lieu par visio conférence le 13 mai, pendant le créneau usuel.
Pour le rapport, visons un rendu le 5 mai au soir, ce qui laisse une semaine pour relectures et corrections.
Format: vous mettrez à la racine de votre dépôt git:
- Un calepin `rapport.ipynb`
- Un calepin `soutenance.ipynb` avec le diaporama pour votre soutenance, utilisant RISE.
- Un `README.md` avec:
- un titre descriptif du projet
- un paragraphe de description de votre projet avec liens hypertexte
(page du cours, ...)
- des liens vers les calepins importants (rapport, presentation, ) avec badges binder
- un paragraphe sur l'installation et l'utilisation
Si cela s'y prête, et seulement dans ce cas, vous pouvez aussi faire un seul document qui puisse être vu comme rapport et comme diaporama de soutenance.
Il faudra aussi envoyer une copie du rapport (exporté en PDF) au secrétariat après les soutenances du 13 mai.
Contenu du rapport et du diaporama:
- Mise en contexte pour des personnes n'ayant pas participé au TER et ne connaissant pas forcément Jupyter
- Motivations et objectifs, illustrés par une démo courte
- Étapes de réalisation et résultats, avec compléments de démos, et lien vers le dépôt git.
- Qu'avez-vous appris: technologies, concepts de programmation, méthodologie de développement, ...
- Retour d'expérience: d'après votre expérience, Jupyter est-il adapté aux objectifs de ce TER (algorithmique interactive)? Choisissez un interlocuteur type (par exemple un étudiant ou enseignant avec certaines expertises), et rédigez quelques paragraphes à son intention: qu'est-ce qui est réalisable, qu'est-ce qui est difficile, pourquoi (maturité, ...), préconisations.
Nous essayerons de contruire collectivement, sur la base de vos rapports, un site web à l'attention des enseignants souhaitant utiliser Jupyter pour le l'algorithmique interactive, leur donnant des exemples et des préconisations.
### Séance du 13 mai
#### Soutenances!
1. Cornic & Hainak, Erwan & Nicolas , Laby Python et ValuePlayerWidget
[dépôt](https://github.com/nicolashainak/Laby_Python), [rapport](https://github.com/nicolashainak/Laby_Python/blob/master/Rapport.ipynb), [diapos](https://github.com/nicolashainak/Laby_Python/blob/master/Presentation.ipynb)
3. Merret & Robeyns, Damien & Matthieu, LabyC++ & Algorithme de Graph
Laby: [dépôt](https://gitlab.u-psud.fr/ter-graphupsud/labycpp_python), [rapport & diapos](https://gitlab.u-psud.fr/ter-graphupsud/labycpp_python/blob/master/For%20Any%20Labyrinth%20Query%20U%20Execute.ipynb) Graphes: [dépôt](https://gitlab.u-psud.fr/ter-graphupsud/algorithme_des_plus-courts_chemins_en_cpp), [rapport](https://gitlab.u-psud.fr/ter-graphupsud/algorithme_des_plus-courts_chemins_en_cpp/blob/master/rapport.ipynb), [diapos](https://gitlab.u-psud.fr/ter-graphupsud/algorithme_des_plus-courts_chemins_en_cpp/blob/master/soutenance.ipynb)
5. Gros, Edwige, Jeux de programmation
[dépôt](https://gitlab.u-psud.fr/edwige.gros/ter-jupyter.git), [rapport](https://gitlab.u-psud.fr/edwige.gros/ter-jupyter/blob/master/rapport.ipynb), [diapos](https://gitlab.u-psud.fr/edwige.gros/ter-jupyter/blob/master/soutenance.ipynb)
5. LYU, Shenjin, Algorithme distribué
[dépôt](https://gitlab.u-psud.fr/shenjin.lyu/ter.git), [rapport](https://gitlab.u-psud.fr/shenjin.lyu/ter/blob/master/rapport.ipynb), [diapos](https://gitlab.u-psud.fr/shenjin.lyu/ter/blob/master/soutenance.ipynb)
6. LIU, Jiaxuan, Bellman-Ford Algorithme
[dépôt](https://gitlab.u-psud.fr/ter-graphupsud/bellman_ford_python), [rapport](https://gitlab.u-psud.fr/ter-graphupsud/bellman_ford_python/blob/master/rapport.ipynb), [diapos](https://gitlab.u-psud.fr/ter-graphupsud/bellman_ford_python/blob/master/soutenance.ipynb)
### Soutenances deuxième session Yu / Tingting
[dépôt](https://gitlab.u-psud.fr/ter-graphupsud/flot_maximum_ford_fulkerson_python/tree/master),[rapport](https://gitlab.u-psud.fr/ter-graphupsud/flot_maximum_ford_fulkerson_python/blob/master/rapport_Tingting_ZHU_Yu_YANG.ipynb),[diapos](https://gitlab.u-psud.fr/ter-graphupsud/flot_maximum_ford_fulkerson_python/blob/master/soutenance.ipynb)
Plan de travail:
- [x] Tester le GraphAlgorithmPlayer d'Edwige
- [x] L'utiliser pour Flot Maximum (Ford-Fulkerson)
- [x] Adapter pour les autres algorithmes déjà implantés
- [x] Rapport à préparer pour le jour de la soutenance
- [ ] Soutenance 17 août 10h
### Projets de stage de M1
Rapport de stage Edwige Gros: https://drive.google.com/file/d/1mvm_rqXYMWKEBRADsNCgYzfnfcyDhosh/view?usp=sharing
TODO: mettre à jour ce qui est fait et à faire, avec lien vers les dépôts
Publier = dépot propre + README + tests + CI + démo + binder & co + paquet pip
#### Laby
- [ ] intégrer laby python dans laby-jupyter 6.ROBEYNS
- [ ] intégrer les contributions de Matthieu/Damien dans laby-jupyter 7.ROBEYNS
notamment traces de pas, empilement de svg
- [x] L'empilement des svg est à améliorer, via l'utilisation de Node.js.
(besoin de Node.js?) 4.ROBEYNS
https://github.com/nthiery/laby-jupyter/pull/20
- [ ] uniformiser laby C++ / Python, notamment widgets utilisés pour structurer la grille
- [ ] autres améliorations de laby
à faire: regarder la liste des tickets:
https://github.com/nthiery/laby-jupyter/issues
- [x] Modifications et adaptations par Edwige: https://gitlab.u-psud.fr/edwige.gros/Laby
- [x] Bug de la fonction regarder(), deux problèmes :
- PlayerView.regarde() appelle labyrinth.regarde() mais ne renvoie pas sa valeur
- labyrinth.regarde() renvoie une tuile et non son nom
- [x] Renvoyer self.board.get(self.devant()).name
- [x] Modifications des comparaisons avec self.regarde() dans laby_widget.py (exemple : méthodes ouvrir, prend et pose)
- [x] Utiliser ValuePlayerWidget officiel dans laby python
- Application immédiate impossible : le value_player_widget n'est pas la version générique donnée par Nicolas Hainak et Erwan Cornic : c'est une version spécialement conçue pour le laby
- Il faut modifier à minima global_fr.py et isoler la classe View présente dans le fichier value_player_widget.py
- [x] Isoler la classe View
- [x] Créer une classe LabyPlayer qui hérite de ValuePlayerWidget
- [ ] Laby Javascript? avec Python / C++ comme simples backends? 5.ROBEYNS
#### Jeux
ipywidgets-games
Dépôt git :https://gitlab.u-psud.fr/edwige.gros/ipywidgets-games
Edwige GROS 1
- [x] Améliorer les versions (affichage, traduction...)
- [x] Les publier séparément :
- Labyrinthe 3D : https://pypi.org/project/ipywidgets-game-maze/
- Jeu des cruches : https://pypi.org/project/ipywidgets-game-jugs/
- Jeu Chou-Chèvre-Loup : https://pypi.org/project/ipywidgets_game_wolf_goat_cabbage/
- [x] Y intégrer le ValuePlayerWidget avec UI (boutons et delpy)
- [x] Simplifier le code et la structure (supprimer l'intermédiaire avec une HBox possédant une value)
- [x] Publier nouvelle version avec gestion de l'UI par ValuePlayerWidget et structure simplifiée
- [ ] Publier RushHour ? https://gitlab.u-psud.fr/M1-ISD/AlgorithmiqueAvancee/Instructors/blob/master/2-ParcoursDeGraphes/06-RushHour.ipynb
#### Blockly
Edwige GROS 2
Dépôt git : https://github.com/Edwauline/DelpyWidget
Paquet Pypi : https://pypi.org/project/delpywidget/
- [x] Modifier l'interface et le code de Delpy pour pouvoir executer du code python directement dans le notebook
- [x] Créer un objet DelpyWidget qui hérite à la fois de Delpy et de ipywidgets.Output afin d'obtenir un widget Delpy
- [x] Faire une pull request au près du créateur de Delpy
- [x] Si absence de réponse, publier séparemment
#### ValuePlayerWidget
nom du projet: ipywidgets-value-player
Dépôt git : https://gitlab.u-psud.fr/edwige.gros/ValuePlayerWidget
- [x] paquet pip sur pypi.org pour le ValuePlayerWidget avec flit : https://pypi.org/project/valueplayerwidget/
- [ ] Bugs lecture arrière??? Dans Laby??? Si oui, à caractériser
- [x] Enregistrer et afficher le nom de l'action effectuée
- [x] Intégrer une génération automatique d'interface avec des boutons ou une fenêtre Delpy
- [x] Publier nouvelle version avec les interfaces
- [ ] Extraire ValuePlayerWidget C++ de laby?
- [ ] Implantation Javascript + binding C++ / Python
#### BQplot
- [x] Rapports de bugs / contributions? 1.ROBEYNS
https://github.com/bqplot/bqplot/issues/1155
https://github.com/bqplot/bqplot/issues/1154
#### GraphAlgorithmPlayer
Depot Git : https://gitlab.u-psud.fr/edwige.gros/GraphAlgorithmPlayer/tree/master/GraphAlgorithmPlayer
Paquet Pypi : https://pypi.org/project/graphalgorithmplayer/
- [x] Essayer ce [notebook](https://gitlab.u-psud.fr/M1-ISD/AlgorithmiqueAvancee/Students/2-ParcoursDeGraphes/blob/master/01-ParcoursDeGraphe.ipynb) qui montre un prototype de graph algorithme player en action
- [x] Tester graph_algorithm_player sur d'autres algorithmes
- [x] Intégrer le nouveau ValuePlayerWidget
- [x] Utilisation de matplotlib plutôt que bqplot :
- [x] Tester les modélisations de graphes avec networkx
- Possibilité de modifier les noeuds (couleurs, labels, taille)
- Pas de possibilité d'enregistrer le graphe rendu dans une variable : le graph s'affiche directement sous la cellule qui exécute le code
- Solution n°1 : utiliser IPython.utils.capture.capture_output
- Comment afficher et mettre à jour l'affichage en cas de modification (enregistrer le graphe et afficher son image ?)
- Piste n°1 : display capture_output dans un ipywidgets.Output() ou mieux, dans un SingleOutputWidget : fonctionne avec Output() mais désagréable à regarder car "tremble" à chaque rafraîchissement.
- Solution : ajouter wait=True au clear_output
- Problème: lors de l'affichage en direct de l'algorithme : doublons dans l'affichage des variables quand l'affichage est continue et non step-by-step.
- Hypothèse : interaction entre les différents output --> Remplacer les output des variables par des ipywidget.Label
- Pas de possibilité d'interargir directement avec le graphe
- [x] Possibilité d'utiliser soit bqplot soit networkx pour afficher le graphe
- [x] Création de deux classes GraphViewNx et GraphViewBqPlot qui permettent d'afficher un graphe et le modifier
- [x] Changement du graphe
- [x] Avec Networkx
- [x] Avec Bqplot
- [x] Si un graphe différent est donné dans parcours(), le graphe est mis à jour automatiquement
- [x] Publier graphe_algorithm_player
- [x] Configuration / style des sommets :
- [x] Possibilité d'ajouter des Labels aux sommets
- [x] Possibilité de modifier les labels des sommets à chaque étape
- [ ] Ajouter la possibilité de modifier la taille du sommet en Networkx ?
- [x] Coloration / style des arêtes
- [x] Avec Networkx : possibilité de colorer des arêtes
- [ ] Avec Networkx : Ajouter la possibilité de changer l'épaisseur de l'arête ?
- [x] Visualisation étiquettes arêtes
- [x] Afficher des labels constants avec Networkx
- [x] Possibilité de changer les labels avec networkx (Impossible avec BQPlot)
- [x] Généraliser widget pour afficher les variables d'un programme (Single Output Widget)
lien : https://github.com/Disatiler/ipywidgets 3.ROBEYNS
#### Visualisation Graphes: autres
- [ ] Faire l'algorithme d'Edmonds-Karp dans la partie graphe des flots. [Référence ici](https://fr.wikipedia.org/wiki/Algorithme_d%27Edmonds-Karp)
- [ ] Améliorer le côté interactif de la visualisation des graphes.
### Tutoriels / site web
- [ ] Extraire une série de tutoriels
- [ ] Visualiser l'exécution d'un algo
- [ ] Principe de séparation modèle / vue / controleur
- [ ] Utiliser un ValuePlayerWidget sur un ValueWidget existant
- [ ] Implanter un ValueWidget
- Pleins d'exemples suivant la même structure
- [ ] avec cppyy
- [ ] accumulation puis visualisation
- [ ] Visualisation de graphes: comparatif des différentes techniques
- [ ] BaseMap interactif avec ipympl?
- [ ] Inclure francy
### Géometrie constructive avec Jupyter
Objectif: pouvoir faire de la géométrie constructive paramétrée en Python, dans Jupyter, avec controle du paramétrage et visualisation par widgets.
Scénario minimal: une mini application avec un slider qui controle le diametre d'une sphere et on construit et visualise au vol l'intersection de cette sphère avec un cube.
Réferences:
- ViewSCAD: https://github.com/nickc92/ViewSCAD
### Compatibilité JupyterBook et GitLab
### Divers
- [x] SingleOutputWidget: première contribution à ipywidget. 2.ROBEYNS
- [ ] ajouter des tests à tous les projets
- [ ] géométrie constructive (ex: openscad) Edwige GROS 4
### Séance du 6 mai
#### Attendus avant la séance
- Rapports rédigés finis la veille au soir
#### Planning
- 13:30 Tour de table
- 14:00-15:00: travail en autonomie
- 15:00-17:30
#### Objectifs
- Relire les instructions pour les rapports et soutenances
ci-dessus (elles ont été mises à jour)
- Relectures croisées des rapports. Vous signalerez vos
suggestions d'améliorations via des "issues" sur les dépôts
correspondants. Il y aura du bonus pour ceux qui seront
les plus actifs!
Indication: si je vous ai fait une suggestion, vérifiez
si cette même suggestion ne s'appliquerait pas aux autres
projets, auquel cas retransmettez la en l'adaptant si
nécessaire
- Préparation soutenance
- Nettoyage de ce document: déplacez la description de
vos projets vers le README.md et/ou votre rapport et/ou
des "issues" de votre dépôt.
### Séance du **jeudi** 30 avril
#### Attendus avant la séance
- Plan de rapport
### Séance du 22 avril
- 13:30-14:00: Tour de table
- Tutoriel RISE
- Tutoriel [ValuePlayerWidget](gitlab.u-psud.fr/nicolas.thiery/ter-jupyter/issues/2): objectif: que le maximum de groupes l'utilise
- 14:15-17:10: Aide individuelle
- 17:10-17:30: Discussion
### 13-17 avril: vacances
NT reste disponible en cas de besoin, par exemple aux horaires usuels
### Séance du mercredi 8 avril
- 13:30-14:00: Tour de table
- 14:15-17:10: Aide individuelle
- 17:10-17:30: Discussion
### Séance du mercredi 1er avril
- 13:30-14:00: Tour de table
- 14:15-17:10: Aide individuelle
- 17:10-17:30: Discussion
### Séance du mercredi 25 mars
#### Planning
- 13:30-14:00: Tour de table: où en êtes sur votre projet; démo si vous le souhaitez
- 14:00-15:00: Travail en autonomie
- 15:00-15:15: Partage de notebooks interactifs avec Binder
- 15:15-17:00: Aide individuelle
- 17:10-17:30 Discussion
#### Attendus avant la séance
- Avancer le projet
- Nettoyer, mettre à jour et synthétiser la description de l'avancement de votre projet
Si vous ne l'avez pas encore fait:
- Déposer votre code sur gitlab
- Inclure un lien vers votre dépôt dans la description de votre projet ci-dessous
- Inclure dans votre dépot un fichier environment.yml décrivant toutes les dépendances de votre projet (voir celui du dépôt du cours)
Tester votre environnement avec:
conda env create
ou, si l'environnement existe déjà:
conda env update
### Séance du mercredi 18 mars
- 13:30-14:30:
- Prise en main de Collaborate
- Mise à jour de l'état d'avancement des projets ci-dessous
- Aide individuelle
- 14:30-15:00: Tour de table: où en êtes sur votre projet; démo si vous le souhaitez
- 15:00-17:15: Aide individuelle
- 17:15-17:30: Discussion
## FAQ
Merci d'utiliser le [forum](https://ecampus.paris-saclay.fr/mod/forum/view.php?id=126063)
## Projets
### Projet Visualisation d'algorithmes de résolution de labyrinthes avec Laby + réalisation d'un PlayerValueWidget
Participants: Nicolas Hainak / Erwan Cornic
Dépôt: https://github.com/nicolashainak/Laby_Python [![Binder](https://mybinder.org/badge_logo.svg)](https://mybinder.org/v2/gh/nicolashainak/Laby_Python/master)
Objectifs:
- Implanter ValuePlayerWidget
- Implanter Laby en Python
- Utiliser ce widget laby pour visualiser l'exécution d'algorithmes de résolution. Tout ça dans un labyrinthe avec différentes couleurs lors d'un choix possible.
### Partie CPP (execution de Laby avec trace sur n'importe quel Labyrinthe + Execution et visualisation des graphes PCC et de Flot)
#### Laby en cpp :
Ce projet a pour but de rendre Laby interactif et surtout de résoudre n'importe quel labyrinthe possible dans Laby.
Voici le lien Git pour ceux qui veulent s'amuser [LabyCPP](https://gitlab.u-psud.fr/ter-graphupsud/labycpp_python), pensez à lire le [README.md](https://gitlab.u-psud.fr/ter-graphupsud/labycpp_python/blob/master/README.md) pour lancer les bons fichiers.
Voici aussi le lien Binder pour Laby en cpp:
[![Binder](https://mybinder.org/badge_logo.svg)](https://mybinder.org/v2/git/https%3A%2F%2Fgitlab.u-psud.fr%2Fter-graphupsud%2Flabycpp_python.git/master)
#### Algorithme du PCC et de flot :
Le But du projet est de rendre visible l'exécution däun algorithme de PCC ou de Flot max sur un graphe.
Voici le lien du dépôt Git, lisez le [README.md](https://gitlab.u-psud.fr/ter-graphupsud/algorithme_des_plus-courts_chemins_en_cpp/blob/master/README.md) pour s'avoir quel fichier lancer, [DêpotGit](https://gitlab.u-psud.fr/ter-graphupsud/algorithme_des_plus-courts_chemins_en_cpp)
Voici le lien Binder pour l'algorithme des Plus_Court_chemin et Graphe des flots:
[![Binder](https://mybinder.org/badge_logo.svg)](https://mybinder.org/v2/git/https%3A%2F%2Fgitlab.u-psud.fr%2Fter-graphupsud%2Falgorithme_des_plus-courts_chemins_en_cpp.git/master)
Noms: ROBEYNS / MERRET
#### Implanter des algos de graphes avec NetworkX
#### Bellman Ford
Participants: Jiaxuan LIU
Dépôt: https://gitlab.u-psud.fr/ter-graphupsud/bellman_ford_python/tree/master
##### Premier essai:Implanter des algos de graphes avec NetworkX
Initialiser d’abord une carte du pays. Les nœuds représentent les villes.
Les arêtes sont le coût de transport entre deux villes.
Le but est de trouver un plan de transport avec le prix en ordre croissant
à partir une ville de départ. Dans la carte, la couleur des nœuds et des arêtes change au fur et à mesure que l’algo s’exécute. Finalement, le meilleur chemin et le deuxième meilleur chemin sont tracés.
- [x] Terminer l'algo de Bellman Ford
- [x] Arriver à dessiner le graphe (utilisant networkx) et les tableaux(utilisant ipywidgets)
- [x] Colorier les tableaux et le graphe. Dans le graphe: Le sommet rouge signifie que je suis en train de traiter ce sommet; les sommets verts sont les successeurs du point rouge. Il y a 5 tableaux en total. Chaque table correspond à un sommet (il y a 4 paramètre: Précurseur, Longueur de le plus court chemin, pre2, dis2). Si les valeurs des paramètres ont changé, le tableau est colorié
- [x] Créer un Slider. Utiliser ce Slider pour contrôler chaque mise à jour.
- [x] Utiliser Basemap pour dessiner une carte du monde
Problèmes rencontrés:
1. Chaque fois que Slider mise à jour le graph, ce n’est pas couramment. Le rafraîchissement des images est lent
2. Comme le graph et la carte sont dessinés utilisant 2 paquets, lorsqu’elles sont dessinées ensemble, chaque fois que les mettre à jour, e rafraîchissement des images est plus lent.
##### Deuxième essai : Implanter l’algo de graphes avec bqplot
- [x] Dessiner le graph utilisant bqplot : je peux changer les couleurs des sommets. Lorsque la souris pointe sur un sommet, le tableau de ce sommet peut être affiche et ces informations sont imprimées lorsque la souris est cliquée. Sur clic de souris: les nœuds peuvent changer la couleur, changer la transparence du nœud, changer la couleur de la bordure du nœud etc.
- [x]Dessiner la carte du monde utilisant bqplot : on peut choisir les pays ou les colorer en les cliquant
Problèmes rencontrés:
1. Je peux superposer le graph sur la carte. Mais ce sont deux parties distinctes. L'emplacement du point ne peut pas être déterminé en fonction de la latitude et de la longitude.
Les cartes peuvent être agrandies avec les fonctions intégrées de la carte. Mais lorsque la carte locale est agrandie, l'emplacement du pays / ville marqué par le point sera incorrect
2. Je ne peux pas tracer des lignes sur la carte du monde
#### Visualisation graphe de flot
Participants: Hainak
1. Représentation d'un graphe de flot avec possibilité d'interaction et de faire passé du flot
2. Etapes :
* choisir une méthode pour representer le graphe
* implémenter des curseurs/boutons permettant l'interaction avec le graphe de flot
* implémenter un algorithme automatique
*
#### Autres algorithmes
- [ ] Dijkstra
- [ ] Floyd Warshall
- [ ] Ford-Fulkerson
#### Visualisation
Combiner les deux précédents et éventuellement le PlayerWidget
#### Appel de code C++ depuis Python avec cppyy
Pour visualiser depuis Python l'execution d'un algo en C++
Installation:
pip install cppyy
Regarder le tutoriel
### Projet: Implémentation de trois petits jeux de programmation
Participants: Gros Edwige
Dépôt: https://gitlab.u-psud.fr/edwige.gros/ter-jupyter.git
Lien vers le binder:
[![Binder](https://mybinder.org/badge_logo.svg)](https://mybinder.org/v2/git/https%3A%2F%2Fgitlab.u-psud.fr%2Fedwige.gros%2Fter-jupyter.git/master)
Lien vers le rapport : [rapport.ipynb](rapport.ipynb) [![Binder](https://mybinder.org/badge_logo.svg)](https://mybinder.org/v2/git/https%3A%2F%2Fgitlab.u-psud.fr%2Fedwige.gros%2Fter-jupyter.git/master?filepath=rapport.ipynb)
Lien vers le diaporama : [soutenance.ipynb](soutenance.ipynb) [![Binder](https://mybinder.org/badge_logo.svg)](https://mybinder.org/v2/git/https%3A%2F%2Fgitlab.u-psud.fr%2Fedwige.gros%2Fter-jupyter.git/master?filepath=soutenance.ipynb)
### Projet: visualisation d'algorithmes combinatoires avec Sage-Combinat Widgets
Participant: LE
Dépôt: https://gitlab.u-psud.fr/trung-viet.le/rsk
- [x] Fonctions pour la création d'un tableau RSK initial et l'addition des nouvelles valeurs dans un tableau RSK existant.
- [x] Visualisation simple d'un tableau RSK et toutes les étapes nécessaires pour l'addition d'une nouvelle valeur.
- [ ] Écrire les méthodes dans GridViewWidget pour modifier un tableau RSK (surcharger):
- [x] Enlever les éléments.
- [x] méthode removable_cells_RSK
- [x] méthode remove_cell_RSK
- [x] Visualiser les cas amovibles
- [ ] Add
- [x] addable_cells_RSK
- [x] add_cell_RSK
- [ ] Vérifier une valeur ajouté
- [ ] Visualiser les positions par un nouveau tableau parce qu'on ne peut pas
#### Toute bonne idée!!!
### Projet: Algorithme distribué dans une élection
Participant: Shenjin Lyu
https://gitlab.u-psud.fr/shenjin.lyu/ter.git
[![Binder](https://mybinder.org/badge_logo.svg)](https://mybinder.org/v2/git/https%3A%2F%2Fgitlab.u-psud.fr%2Fshenjin.lyu%2Fter.git/master)
Simulation d'une élection avec l'algo distribué.
Dans un graphe, les processus sont représentés par des noeuds.
La couleur d'un noeud peut indiquer une décision ou un état d'un processus.
Pour une proposition de candidat, tous les processus votent.
Un candidat gagne l'élection ssi il obtient plus que la moitié de soutiens.
#### Étapes
- [ ] Explorer l'utilisation de dask; en pilotant le parallélisme directement en Python l'intégration sera plausiblement plus facile avec Jupyter/widgets qu'avec une solution mpi externe.
- [x] Comme je n'ai pas reussit de faire avec dask, je prends des données avec print(). Les données sont écrites dans un fichier data, ensuite je lis ce fichier pour tracer mes graphes.
- [x] Tracer un graphe pour simuler une élection avec networkx.
- [x] Tracer un graphe(bar) pour compter le nombre de votes obtenus.
- [x] Réduire la complexité de fonction tracer(), pour l'instant, elle retrace tous les fois, cela prend beaucoup de temps.
- [x] ajoute des fonctions qui permet de choisir le nombre de personnes qui participent à l'élection, de donner leur nom et de décider une liste des candidats permi eux.
- [x] refaire le graphe networks avec bqplot.marks.
- [x] refaire l'histgramme avec bqplot.pyplot.
- [x] faire un tooltip pour afficher les info sur les noeuds quand on met la souris dedans.
- [x] faire le rapport et la diapo.
## Projet : Le PCC dans un graphe
Participant: Yu Yang et Tingting Zhu
Dépôt:https://github.com/Toaddd/ter
#### ALGO UTILISES
- Dijkstra
- Flot maximum
#### Etape
- [x] Realiser les algo en Python
- [x] Dijkstra
- [x] Flot maximum
- [x] Visualiser graphe de Flot
- [ ] par Widget
- [x] Visualiser graphe de Dijkstra
- [ ] par Widget
## Autres projets
### Algorithmes de tris en place?
### Tests HTML
A:
<img src="https://raw.githubusercontent.com/nthiery/laby-jupyter/master/share/laby/tiles/exit.svg">
B:
<style>
.stack
{
position: absolute;
top: 0px;
left: 0px;
}
</style>
<table>
<tr>
<td><div style="position: relative; left: 0; top: 0;">
<img src="https://raw.githubusercontent.com/nthiery/laby-jupyter/master/share/laby/tiles/exit.svg">
<img src="https://raw.githubusercontent.com/nthiery/laby-jupyter/master/share/laby/tiles/ant-e.svg" class="stack"></td>
<td><div style="position: relative; left: 0; top: 0;">
<img src="https://raw.githubusercontent.com/nthiery/laby-jupyter/master/share/laby/tiles/exit.svg">
<img src="https://raw.githubusercontent.com/nthiery/laby-jupyter/master/share/laby/tiles/ant-e.svg" class="stack"></div></td></tr>
<tr><td>
<div style="position: relative; left: 0; top: 0;">
<img src="https://raw.githubusercontent.com/nthiery/laby-jupyter/master/share/laby/tiles/exit.svg">
<img src="https://raw.githubusercontent.com/nthiery/laby-jupyter/master/share/laby/tiles/ant-e.svg" class="stack"></td></tr>
</table>