Exemple d’interface pour manipuler les réseaux. Manipulation de réseaux biologiques [McGuffin & Jurisica, IEEE InfoVis 2009]

Slides:



Advertisements
Présentations similaires
Été INF1025 Driouch Elmahdi
Advertisements

Algorithmes et structures de données avancés
Portée des variables VBA & Excel
Efficient Simplification of Point-Sampled Surfaces
Visualisation d’information interactive 5 : Graphes
Interaction Directe contrat Creative Commons Paternité-Pas d'Utilisation Commerciale- Partage des Conditions Initiales à l'Identique.
Lexique des manœuvres de base pour utiliser à PowerPoint
Retour au menu principal. Généralités Lenvironnement Laffichage de la fenêtre Déplacement / sélection dans une feuille Classeurs La gestion des classeurs.
le nom du logiciel et le nom du fichier s’appelle la barre des titres
Introduction à la programmation (420-PK2-SL) cours 15 Gestion des applications Technologie de linformation (LEA.BW)
Voilà la page que vous devriez trouver après avoir téléchargé et ouvert NotePad Cliquer sur « continue »….page suivante.
Systèmes d’exploitation
Traitement Co-Séquentiel: Appariment et Fusion de Plusieurs Listes
Vidéogramme séance 2 du 13 février 2012 Les Fenêtres Windows Micro Informatique au Cellier Joseph HOHN Séance du 13 février 2012 Sur le thème de Découverte.
PRÉSENTATION Logiciel de traitement de texte:
Présentation générale de MapBruit
Concepts avancés en mathématiques et informatique appliquées
PRESENTATION DU LOGICIEL
44 Contrôle du déroulement du programme. 4-2 Objectifs A la fin de ce cours, vous serez capables de : Utiliser les constructions de prise de décision.
Présenter par Karim MOULAY. Le projet à la base est un projet salarié que je doit réaliser. Toute fois ce projet à subit des modifications et est devenue.
Créer une animation simple Gif avec ImageReady.
OCaml – Les arbres L3 MI.
Déplacement de composant Le Logiciel Aide de visualisation Recherche de dimensions eDrawings (Vos premiers pas)
Création d’un programme :
Coloriser une image au trait avec GIMP
L’entrée gestuelle et la reconnaissance de gestes
Langage Oriente Objet Cours 2.
Leçon 2 : Surcharge des opérateurs IUP 2 Génie Informatique Méthode et Outils pour la Programmation Françoise Greffier Université de Franche-Comté.
FICHIERS : Définition : Algorithme général:
DESS CCI POO-JAVA TD n°7 exercice n°1
IFT-2000: Structures de données Les graphes Dominic Genest, 2009.
Structures de données IFT-2000
Structures de données IFT-2000
Structures de données IFT-2000 Abder Alikacem Standard Template library Édition Septembre 2009 Département dinformatique et de génie logiciel.
Entrée gestuelle et reconnaissance de gestes. Quelques exemples de systèmes à entrée gestuelle, et densembles de gestes …
Présentation Structures de Données et TDA
Les modes, et quelques exemples de techniques dinteraction (utilisant lentrée gestuelle et autre)
Génération d’un segment de droite
Les Graphes. Graphes Un graphe G = (V, E) consiste en un ensemble V de noeud, et un ensemble E darêtes, tels que chaque arête dans E relie une paire de.
Gestion de Fichiers GF-10: Traitement Co-Sequentiel: Appariment et Fusion de Plusieures Listes (Base sur les sections de Folk, Zoellick & Riccardi,
Les images numériques COM 1560 Printemps 2005.
Rappel... Matrices bloc. Décomposition des matrices:
Exploration systématique de graphes
Graphes 1. Introduction 2. Définition 3. Représentation mémoire
Windows 7 et son explorateur
Plan de la leçon Réf. p. WRD- 149 Les styles Les listes hiérarchiques
Tutorat en bio-informatique
Structures de données avancées : Arbres ‘Left Leaning Red-Black’
Intelligence Artificielle
Exploration systématique de graphes
Cours LCS N°4 Présenté par Mr: LALLALI
Iup MIAGe 3° année Projet MIAGe Toulouse – Groupe 21 Charte graphique.
Le Jeu et l’intelligence artificielle
L’ordinateur et ses composantes
Une aide pour débutant éclairé
Traitement d’images 420-D78-SW A15 Semaine 02.
L’entrée gestuelle et la reconnaissance de gestes.
ALGORITHME DE VOLÉES Programmation créatives Les volées, le spawning et les collisions.
A propos du “Minimal Controllability Problem” C. Commault Département Automatique Gipsa-Lab Grenoble –FRANCE 1 Séminaire GIPSA-Lab 22 octobre 2015.
FLASH MX : séance 1 Sandrine Rabin Nicolas Mollet SI28.
Environnement Flash MX
Dreamweaver le retour Avec Les Formulaires Les Calques
FORMULAIRES FOMULAIRE Permet à l’utilisateur d’entrer des renseignements le concernant. Utilisation –Inscription sur un site –Mise à jour d’une base.
Dreamweaver 2 Plan 1.Calques 2.CSS 3.Modèles 4.Comportements 5.Formulaires 6.Mise en ligne 1 Timothée Devaux Myriam Roudy Dreamweaver 2 Printemps 2008.
Traversées (Parcours ) de graphes
Les calques Les Template (modèles) Les Comportements Les scénarios Les formulaires Les CSS Le serveur Web de l’UTC Présentation.
Pourquoi ne faut-il pas jeter son ordinateur par la fenêtre ?
1 Tableur Excel. 2 Introduction Un tableur est un logiciel permettant de manipuler des données numériques et d'effectuer automatiquement des calculs sur.
Soumis par: DRPU équipe Software Site:
Résolutions et réponses Epreuve n° 4 – 6ème Résolutions et réponses Epreuve n° 4 – 6ème RALLYE MATH 92 2 ème Édition RALLYE MATH 92 2 ème Édition.
Transcription de la présentation:

Exemple d’interface pour manipuler les réseaux

Manipulation de réseaux biologiques [McGuffin & Jurisica, IEEE InfoVis 2009]

Motivation Comment visualiser des graphes (réseaux) ? –Plusieurs algorithmes de “layout” existent [Di Battista et al., 1999] La conférence annuelle “Graph Drawing” 1992-présent Comment permettre à l’utilisateur de manipuler une visualisation de graphe ? –Ex: réseaux biologiques

Comment invoquer une commande? Deux sortes de commandes: Commandes sans arguments, “à un coup” –Montrer / cacher étiquettes –Fermer / ouvrir un méta-noeud –Disposer les noeuds en ligne / cercle Commandes nécessitant des arguments –Effectuer une translation (argument: déplacement) –Effectuer une rotation (argument: angle) –Changer l’opacité des noeuds (argument: alpha)

Comment invoquer des commandes sans arguments? Boutons dans un panneau, barre d’outils, ou palette flottante –Consomment de l’espace –Demandent des mouvements d’aller-retour Menus déroulants –Demandent encore plus de mouvements Raccourcis clavier –Difficiles à découvrir –Ne s’étendent pas à un grand nombre de commandes Menu contextuel –Mieux Menu contextuel radial –Encore mieux !

Menus radiaux versus menus linéaires Les directions sont plus mémorables et plus faciles à reproduire que les distances.

Menu radial hiéarchique

Marking Menus [Kurtenbach and Buxton, 1993]

Marking Menu “Scale invariant recognition”: Reconnaissance des gestes (marques) qui ne dépend pas de la longueur des segments; seule les angles des segments importe. Donc, les marques peuvent être dessinées en petit et donc rapidement, de façon balistique. Un utilisateur qui sait quelle marque dessiner n’a même pas besoin de voir le menu s’afficher.

Ensemble de marques découvrables (“self-revealing”), contrairement aux interfaces gestuelles habituelles

Présentation graphique améliorée

Le Hotbox dans Maya [Kurtenbach et al., 1999]

Comment invoquer des commandes avec arguments? Barre d’outils, menus déroulants, raccourcis clavier –Ont les mêmes problèmes mentionnés avant –En plus, ces techniques impliquent (habituellement) un changement de mode dans lequel on fournit les arguments. Donc: possibilité d’erreurs de mode. Notre nouvelle version du hotbox –A tous les avantages mentionnés avant –Permet de fusionner l’invocation d’une commande avec la spécification de ses arguments –Évite les erreurs de mode

Notre hotbox

Comment sélectionner des noeuds? Cliquer sur des noeuds individuels pour les sélectionner / désélectionner Sélection rectangle Sélection lasso Sélection en fonction de la structure du réseau (comment?) Question: Comment éviter des changements de mode ?

Selecting a subset with rectangle/lasso [Saund et al., 2003]

Selecting a subset by dragging out radius of neighborhood

Démo !

Remarque L’interface utilise seulement 2 boutons pour accéder à … –3 menus radiaux supplémentaires –4 techniques de sélection –Le hotbox (dans lequel on pourrait mettre des centaines de commandes) … sans panneaux ou de barres d’outils Ce qui laisse beaucoup d’autres boutons pouvant servir à des raccourcis, au besoin

NAViGaTOR Logiciel gratuit d’analyse et de visualisation de réseaux biologiques On y retrouve une version de notre hotbox

“chains”trees biconnected components nodes with common neighborhoods

Pour plus d’informations …

Méthodes de disposition (“layout”) pour les réseaux

Disposition dirigée par forces (“force-directed layout”) Simulation de ressort et de forces de répulsion jusqu’à convergence vers un état d’énergie minimale Exemple: –Force de ressort F S = k(x-x 0 ) entre chaque pair de noeuds adjacents, où k est une constante, x est la distance entre les noeuds, et x 0 est la longueur du ressort au repos –Force de répulsion F R = alpha / x 2 entre chaque pair de noeuds, où alpha est une constante, et x est la distance entre les noeuds

Disposition dirigée par forces simulateOneStepOfForceDirectedLayout() { // initialization for ( int i = 0; i < nodes.size(); ++i ) { Node n = nodes.get(i); n.forceX = 0; n.forceY = 0; } …

Disposition dirigée par forces … // repulsive force between all pairs of nodes for ( int i = 0; i < nodes.size(); ++i ) { Node n1 = nodes.get(i); for ( int j = i+1; j < nodes.size(); ++j ) { Node n2 = nodes.get(j); float dx = n2.x - n1.x; float dy = n2.y - n1.y; if ( dx == 0 && dy == 0 ) { dx = (float)Math.random()-0.5f; dy = (float)Math.random()-0.5f; } float distanceSquared = dx*dx + dy*dy; float distance = (float)Math.sqrt( distanceSquared ); float force = alpha / distanceSquared; dx *= force / distance; dy *= force / distance; n1.forceX -= dx; n1.forceY -= dy; n2.forceX += dx; n2.forceY += dy; } } … Pourquoi j=i+1 ?

Disposition dirigée par forces … // spring force for ( int i = 0; i < nodes.size(); ++i ) { Node n1 = nodes.get(i); for ( int j = 0; j < n1.neighbours.size(); ++j ) { Node n2 = n1.neighbours.get(j); int n2_index = network.getIndexOfNode( n2 ); // obtenir l’indice dans le vecteur global if ( n2_index < i ) continue; float dx = n2.x - n1.x; float dy = n2.y - n1.y; float distance = (float)Math.sqrt( dx*dx + dy*dy ); if ( distance > 0 ) { float distanceFromRestLength = distance - SPRING_REST_LENGTH; float force = k * distanceFromRestLength; dx *= force / distance; dy *= force / distance; n1.forceX += dx; n1.forceY += dy; n2.forceX -= dx; n2.forceY -= dy; } } … Pourquoi ?

Disposition dirigée par forces … // update positions for ( int i = 0; i < nodes.size(); ++i ) { Node n = nodes.get(i); // Don't change positions of nodes that are fixed in place. if ( n.isFixed ) continue; float dx = timeStep * n.forceX; float dy = timeStep * n.forceY; float displacementSquared = dx*dx + dy*dy; final float MAX_DISPLACEMENT = 10; final float MAX_DISPLACEMENT_SQUARED = MAX_DISPLACEMENT * MAX_DISPLACEMENT; if ( displacementSquared > MAX_DISPLACEMENT_SQUARED ) { float s = MAX_DISPLACEMENT / (float)Math.sqrt( displacementSquared ); dx *= s; dy *= s; } n.x += dx; n.y += dy; } } // simulateOneStepOfForceDirectedLayout()

Disposition dirigée par forces Comment, et combien de fois, faut-il appeler la routine simulateOneStepOfForceDirectedLayout() ? Quel serait l’effet de changer –k ? –alpha ? –timeStep ?

Parcours en largeur (Breadth-First Traversal) Chaque noeud a une couleur : –blanc : pas encore visité; la couleur initiale –gris : visité et dans la file (“queue”); en cours de traitement; peut-être adjacent à des noeuds blancs –noir : visité et traité; n’est pas adjacent à des noeuds blancs Chaque noeud a aussi une distance (en arêtes, mesurée à partir de la racine) et un pointeur (ou une référence) vers son prédécesseur On se sert d’une file (“queue”) pour stocker les noeuds gris

Parcours en largeur entrée: graphe G=(V,E) et noeud root dans V for each v in V { // initialisation v.color = WHITE; v.distance = +infinity; v.predecessor = NULL; } root.color = GREY; root.distance = 0; Q.enqueue( root ); // enfile le premier noeud comme point de départ while ( ! Q.empty() ) { u = Q.dequeue(); // défile le prochain noeud for each v such (u,v) in E { if ( v.color == WHITE ) { v.color = GREY; v.distance = u.distance + 1; v.predecessor = u; Q.enqueue( v ); } } u.color = BLACK; }

Parcours en largeur Remarque: une fois le parcours terminé, les pointeurs prédécesseur définissent l’arborescence de parcours en largeur (“breadth-first tree”) ayant comme racine le noeud qui a servi comme point de départ. La profondeur de chaque noeud dans cette arborescence est donnée par distance. Ce parcours sert aussi à identifier les composantes connexes dans un graphe. (Comment?)

Parcours en largeur : version plus générique public abstract class NodeVisitor { // retourne faux pour annuler le parcours public abstract boolean visit( Node node, Node predecessorNode, int distance ); } public void breadFirstTraversal( Node root, NodeVisitor visitor ) { for each v in V { // initialisation v.color = WHITE; v.distance = +infinity; v.predecessor = NULL; } root.color = GREY; root.distance = 0; Q.enqueue( root ); // enfile le premier noeud comme point de départ while ( ! Q.empty() ) { u = Q.dequeue(); // défile le prochain noeud for each v such (u,v) in E { if ( v.color == WHITE ) { v.color = GREY; v.distance = u.distance + 1; v.predecessor = u; Q.enqueue( v ); } } if ( ! visitor.visit( u, u.predecessor, n.distance ) ) break; u.color = BLACK; } }

Exemple de layout radial Un noeud central sert comme racine pour un parcours en largeur. L’arborescence ainsi retrouvée est disposée de manière radiale. Seulement les arêtes de l’arborescence sont montrées. Exemple tiré de [Yee et al., 2001]

Exemple de layout radial

Réordonnancement de matrice Graphe biparti qu’on veut dessiner en deux niveaux (“layered drawing”) –Exemple: noeuds: {A,B,C,D,1,2,3,4,5}, arêtes dans {A,B,C,D}×{1,2,3,4,5} Le réordonnancement sert à réduire les croisements d’arètes

Tiré de [Mäkinen et Siirtola, 2005] Il s’agit de réordonnancer les colonnes et rangées d’une sorte de matrice d’adjacence, pour ramener les “1”s vers le diagonal

Une façon simple de faire: l’heuristique barycentrique reorder( nodes ) { for ( i = 0; i < nodes.size(); ++i ) { n = nodes.get( i ); neighbors = neighborsOfNode( n ); n.newPosition = 0; for n2 in neighbors n.newPosition += n2.position; n.newPosition /= neighbors.size(); } nodes.sortByValueOfNewPosition(); for ( i = 0; i < nodes.size(); ++i ) { n = nodes.get( i ); n.position = i; } } loop { reorder({A,B,C,D}); reorder({1,2,3,4,5}); } Quand arrêter ?

Cas plus général: un graphe qu’on veut dessiner en plusieurs couches (“layered drawing”) layer 1 layer 2 layer 3 layer 4 layer N-1 layer N

reorder( nodes, fixedNodes ) { for ( i = 0; i < nodes.size(); ++i ) { n = nodes.get( i ); neighbors = neighborsOfNode( n ).intersect( fixedNodes ); n.newPosition = 0; for n2 in neighbors n.newPosition += n2.position; n.newPosition /= neighbors.size(); } nodes.sortByValueOfNewPosition(); for ( i = 0; i < nodes.size(); ++i ) { n = nodes.get( i ); n.position = i; } } loop { reorder( layer 2, layer 1 ); reorder( layer 3, layer 2 ); … reorder( layer N, layer N-1 ); reorder( layer N-1, layer N ); … reorder( layer 2, layer 3 ); reorder( layer 1, layer 2 ); }

Cas relié: un graphe qu’on veut dessiner en plusieurs cercles concentriques Serait amélioré si on appliquait une méthode (comme l’heuristique barycentrique) pour réduire les croisements d’arêtes d’un niveau à l’autre.

Cas spécial: les colonnes et rangées de la matrice sont identiques Avant réordonnancement … HJBIEDKFACG H11111 J11 B111 I1111 E111 D111 K11 F1111 A1 C11 G111 HJBIEDKFACG A B C D E FG K HI J

ABCDEFGHIJK A1 B111 C11 D111 E111 F1111 G111 H11111 I1111 J11 K11 ABCDEFGHIJK A B C D E FG K HI J Cas spécial: les colonnes et rangées de la matrice sont identiques … Après réordonnancement

Après réordonnancement, les “1”s sont plus près du diagonal dans la matrice, et les cliques sont plus faciles à voir dans la matrice ABCDEFGHIJK A1 B111 C11 D111 E111 F1111 G111 H11111 I1111 J11 K11 ABCDEFGHIJK A B C D E FG K HI J

Un SPLOM (“scatter plot matrix”) pour visualiser les noeuds d’un graphe Dimensions: Degré Coefficient de clustering (“cc”) Noyau (“core”)

Le coefficient de clustering Tiré de

Décomposition en noyaux (“cores”) Tiré de [Batagelj et Zaveršnik, 2002],

Scatterplot Matrix (SPLOM)

Autre SPLOM possible: SPLOM des sous-graphes intéressants Dimensions: type (noyaux en rouge, bicomposantes en vert, arbres en cyan, chaînes en bleu, ensembles de noeuds ayant les même voisins en magenta) taille (“size”) en noeuds degré moyen coefficient de clustering (“cc”) moyen noyau (“core”) moyen

Utiliser les noyaux pour placer les noeuds sur des cercles concentriques Tiré de [Alvarez-Hamelin et al., 2005]

Utiliser les noyaux pour placer les noeuds sur des cercles concentriques Tiré de [Alvarez-Hamelin et al., 2005]

Visualisation “focus+context” d’un grand réseau Image de Igor Jurisica