Sprint Review #15W09: stabilisation

Blog

Afin de ne pas perdre des articles sur MADEC en général, et de pouvoir les stocker quelque part, ils sont écrits en français et en Markdown, sauvegardés sur GitHub.

Nous avons choisi un générateur de site statique nommé Hexo.

J’ai transcrit le poster soumis (et accepté?) à VSST.

J’ai aussi commencé un article sur le minimum à savoir pour configurer un ezVIS.

J’en profite pour noter les sujets (et les liens) à présenter lors de cette sprint review numéro 9 qui expose les tâches menées à bien depuis la semaine 9 de 2015.

machine virtuelle

Nous avons eu quelques soucis de requêtes répondant bizarrement sur la machine virtuelle hébergeant ezmaster et ezVIS. Nous avons d’abord cru qu’il s’agissait d’un problème de mémoire (tant le swap était peu utilisé).

La mémoire vive de la machine a donc été portée de 2Gio à 8Gio.

ezmaster

L’application castor-admin, qui sert à administrer des instances d’applications (ou apps) basées sur castor-core (comme le sont ezvis et idefix) a été renommée en ezmaster, que ce soit sur GitHub ou sur npm.

board.inist.fr

Nous avons configuré ezmaster sur la machine virtuelle pour que le nom de domaine board.inist.fr et ses sous-domaines puissent servir à publier une instance d’ezvis.

Ainsi, les instances mises en place pour la démonstration du projet au directeur de la DIST jeudi dernier (le 26/03/2015) sont accessibles de l’extérieur.

Les deux premières instances sont aussi disponibles dans le dépôt vitrine: showcase.

Isabelle y a aussi ajouté une étude sur les séries télévisées.

dalekjs

J’ai commencé à mettre en place des tests, non pas unitaires, mais de comportement de l’application: en utilisant dalekjs, on peut écrire des scénarios de test de l’application.

Lancement du serveur à tester:

1
2
$ cd ~/dev/castorjs/ezvis
$ node cli test/dataset/test2

Lancement des tests:

1
2
$ cd ~/dev/castorjs/ezvis
$ dalek test/test2.js

Résultat espéré:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
Running tests
Running Browser: PhantomJS
OS: linux unknown 64bit
Browser Version: 1.9.8
RUNNING TEST - "Has data"
▶ OPEN http://localhost:20002/documents.html
▶ WAITFOR Interrupted by timeout
✔ EXISTS "Showing 1 to 4 of 4 entries"
✔ TEXT "Showing 1 to 4 of 4 entries"
✔ TEXT "1906" in first line
✔ TEXT "Kurt Gödel" in first line
▶ CLICK #dataTables-documents tr:nth-child(4) td:first:first-child a
✔ TITLE Correct
5 Assertions run
✔ TEST - "Has data" SUCCEEDED
RUNNING TEST - "Good display"
▶ OPEN http://localhost:20002/display/Z5OAoW.html
✔ TITLE Correct
✔ NUMBEROFELEMENTS 3 fields displayed
✔ TEXT Name is "Douglas Hofstadter"
3 Assertions run
✔ TEST - "Good display" SUCCEEDED
8/8 assertions passed. Elapsed Time: 10.11 sec

JBJ

  • on a évité d’écrire une action mapArray inutile (jbj#5)
  • j’ai ajouté l’action substring (jbj#6), plus simple et intuitive que l’utilisation successive de truncate et shift.

ezVIS

J’ai commencé à me servir des fonctionnalités de GitHub qui ne sont pas forcément incluses dans git: le système d’issues et de milestones.

J’ai donc placé un jalon pour ce sprint, en lui donnant une date. C’est la milestone “Sprint #15W09: stabilization” d’ezvis:

  • changer le label “Search” en “Filter” dans le page /documents.html #3
  • enlever le lien vers les champs depuis le tableau de bord #4
  • affecter une couleur à chaque champ d’un réseau inter-champs #5
  • corriger le bug d’export CSV vide de /documents.html #6
  • ajouter un seuil en-deça duquel on rassemble les valeurs dans le camembert #7
  • corriger les réseaux où les arcs sont dirigés #8
  • donner la possibilité de modifier la largeur de la colonne de gauche dans /display.html #9
  • restaurer la configuration des légendes #10
  • donner la possibilité d’afficher aussi les années vides dans les histogrammes #11
  • donner la possibilité d’afficher des labels plus courts sur les barres horizontales #12
  • verbaliser les codes des pays sélectionnés dans les cartes, afin de rendre les filtres plus lisibles #13
  • faire commencer l’axe des ordonnées à zéro dans les histogrammes #14
  • déterminer si on peut utiliser des chaînes de caractères sur l’axe des X pour créer des diagrammes à bulles #15
  • restaurer la configuration des couleurs #16

Configuration d'ezVIS / minimum

Introduction

Pour créer un rapport web avec ezVIS, il faut configurer l’application. Il y a 3 volets:

  1. connexion avec la base de données
  2. intégration des données
  3. ajout de graphiques

Ils sont tous gérables dans le fichier de configuration du rapport, qui est au format JSON (JavaScript Object Notation). Son extension est .jsonet son préfixe est obligatoirement le même que le nom du répertoire dans lequel se trouvent les fichiers de données.
Nous prendrons l’exemple d’un fichier data.json placé au même niveau que le répertoire data, qui contient un fichier au format CSV dont nous reparlerons plus tard.

Connexion avec la base de données

Le système de gestion de base de données utilisé par ezVIS est mongoDB, et une connexion par défaut est utilisée, qui permet de retrouver les données liées au rapport dans la database appelée castor.
Si vous voulez changer cet emplacement, modifiez la clé connexionURIdu fichier data.json (valeur par défaut: mongodb://localhost:27017/castor/).

À l’intérieur de castor, mongo range ses données dans des collections. Sans indication supplémentaire, ezVIS nomme la collection avec une clé de hachage calculée à partir du chemin du répertoire data. Cela donne un nom illisible pour un humain, mais quasi-unique en fonction du chemin.
Si vous avez l’intention de manipuler les données dans mongoDB (par exemple, simplement pour réinitialiser les données, avec castor-clean), il est prudent de renseigner la clé collectionName, dans notre cas avec la valeur "data"par exemple:

1
"collectionName": "data",

Tant que vous y êtes, il est prudent de renseigner aussi les clés titleet description, pour vous y retrouver quand vous relirez ce fichier dans quelques mois…

1
2
3
"title": "Rapport d'exemple de configuration",
"description": "D'après l'article \"Configuration d'ezVIS / minimum\"",
"collectionName": "data",

title sera utilisé pour le titre du rapport (la fenêtre du navigateur) et description sera beaucoup plus discrètement placée dans les métadonnées HTML du rapport (visible surtout des moteurs de recherche).

À condition d’avoir déjà installé ezvis, vous pouvez d’ores et déjà le lancer avec:

1
ezvis data

Intégration des données

Après avoir lancé ezVIS, un rapport vide devrait être consultable à l’URL http://localhost:3000/ (3000 étant le port par défaut, on peut le changer via la clé port).

Le menu gauche doit donner accès au dashboard et aux documents.

Seul un message signalant qu’aucune configuration n’existe encore apparaît sur ces deux pages.

Nous allons commencer par configurer simplement la liste des documents. Elle se présente sous la forme d’une table affichant, dans l’ordre où ils sont déclarés dans le fichier data.json, tous les champs déclarés visibles.

Prenons un exemple simple, un fichier data.csv qui sera placé dans le répertoire data:

1
year,person
1912,Alan Turing
1927,Marvin Minsky

C’est un fichier CSV (Comma Separated Values) qui aurait pu être exporté d’un tableur, comme Excel ou LibreOffice.
Pour que ces données soient affichées dans la page http://localhost:3000/documents.html, il faut que nous déclarions les champs yearet person (qui sont automatiquement placés dans une clé content.json de chaque document dans la base, au démarrage d’ezVIS).
Le premier document sera placé dans la base sous forme d’un document JSON, et la partie qui nous intéresse aura cette forme:

1
2
3
4
5
6
7
8
{
"content": {
"json": {
"year": "1912",
"person": "Marvin Minsky"
}

}

}

Pour déclarer les champs, nous utiliserons la clé documentFields (qui au passage créera une copie du contenu des champs mais directement à la racine du document):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
{
"documentFields": {
"$year": {
"get": "content.json.year",
"visible": true,
"label": "Année"
}
,

"$person": {
"get": "content.json.person",
"visible": true,
"label": "Nom"
}

}

}

Cette déclaration modifiera le document précédent pour donner ceci:

1
2
3
4
5
6
7
8
9
10
{
"content": {
"json": {
"year": "1912",
"person": "Marvin Minsky"
}

}
,

"year": "1912",
"person": "Marvin Minsky"
}

Cela peut paraître inutile pour l’instant, mais l’intérêt de cette redondance deviendra évident avec la manipulation de champs multivalués, par exemple.

Le fait d’avoir déclaré une clé visible avec une valeur true implique que le champ sera visible dans la table des documents.

La partie label de la déclaration donne le nom la colonne correspondante dans la table des documents.

Ajout de graphique

Pour ajouter un graphique, il suffit de sélectionner un type parmi:

  1. histogramme histogram
  2. barres horizontales horizontalbars
  3. camembert pie
  4. carte géographique map
  5. réseau network

et d’y associer un champ (calculé ou non).

Le plus simple est un histogramme.

Tous les graphiques sont inclus dans le dashboard (tableau de bord), c’est-à-dire la page d’accueil d’ezVIS.

Présentation d'ezVIS

Introduction

ezVIS est le résultat d’une réflexion menée au sein de l’Inist-CNRS sur le besoin d’un outil de mise à disposition et d’exploration de corpus en remplacement d’outil développé précédemment comme SERVIST. Dans le cadre du projet MADEC, le choix a été fait d’aborder l’exploration d’un corpus par sa description à travers un tableau de bord. Cela a conduit au développement d’un outil de réalisation de tableau de bord décrivant le corpus et y donnant accès.

ezVIS

L’Inist-CNRS propose à travers son service Appui au pilotage des études bibliométriques réalisées à partir de données structurées fournies par les usagers ou issues de bases de données pour assurer le suivi de la production scientifique, mettre en évidence les collaborations, etc. Ces études livrées sous forme de rapport PDF ne répondent pas à toutes les attentes des usagers (réutilisation des graphiques, accès aux données, etc.). Un outil comme ezVIS est la solution retenue pour satisfaire les attentes d’interactivité et de dynamisme du résultat fourni à travers un tableau de bord convivial point d’entrée du rapport en ligne.

Configuration des rapports

Chaque rapport mis en ligne correspond à une instance configurée de façon relativement simple. Il est possible de créer autant d’instances que nécessaire en reproduisant la même configuration ou en la personnalisant. Cet aspect devrait permettre de multiplier le nombre de rapports en capitalisant et mutualisant les configurations. Ce gain de temps devrait permettre de pousser le travail de personnalisation.

Par ailleurs, les instances peuvent être gérées grâce à une interface à la prise en main aisée.
La figure 1 présente l’interface d’administration qui permet créer et gérer (modification, suppression) les instances et de les configurer.

Figure 1 : interface d’administration et outil de paramétrage d’un rapport

À partir de données structurées en UTF8 et mises à disposition dans des fichiers de différents formats (csv, tsv ou XML) la configuration consiste à :

  • sélectionner les champs à afficher ou à utiliser pour les calculs,
  • réaliser les calculs (somme, pourcentage, etc.),
  • choisir le type de graphique (histogramme, camembert, barres horizontales) et les paramétrer (couleurs, seuil, légende).
  • définir les facettes associées à chaque graphique.
  • déterminer l’affichage des notices.

Fonctionnalités d’exploration

À ce stade du développement, l’outil offre un rapport web constitué d’une page d’accueil présentant le tableau de bord et un index sous forme de menu à partir desquels il est possible de naviguer vers des informations plus détaillées et les notices correspondantes. Les facettes complètent les graphiques en proposant des filtres complémentaires pour mettre en évidence d’autres résultats. La figure 2 présente un des graphiques du tableau de bord avec les facettes associées et le corpus sous forme de tableau.

Figure 2 : Détail du tableau de bord

La suite du développement prévoit d’autres types de représentations comme des cartes, des réseaux ainsi que des fonctionnalités comme l’export ou la sécurisation de l’interface.

Exemples d’usages

Le principal besoin auquel répond ezVIS est la création de tableaux de bord mettant en évidence des informations de type bibliométrique. La facilité de création et de configuration d’une instance est l’un des avantages évidents de cet outil qui autorise la multiplication des tableaux de bord. Toujours dans le domaine des corpus de notices bibliographiques, un tel outil permet également de vérifier le contenu et la qualité des données.
Enfin, le fait qu’il s’agisse d’un logiciel libre autorise son appropriation au-delà de la production scientifique comme par exemple pour l’analyse de fichiers de « logs » dans le cadre du projet ezPAARSE3.

Connaissance de la production scientifique liée à une thématique

À partir d’un corpus constitué thématiquement, il est possible de mettre en évidence des éléments concernant la production scientifique, son évolution ainsi que la répartition en sous-thématiques, par exemple. La figure 3 illustre l’utilisation d’un graphique de type camembert qui représente la répartition thématique du corpus. Il est possible en cliquant sur une partie du graphique d’avoir accès à la liste des résultats correspondants. Il est également possible d’utiliser les facettes pour mettre à jour le graphique de manière dynamique le graphique.

Figure 3 : Mise en évidence de l’utilisation des facettes pour filtrer les résultats

Exploration du contenu d’un corpus

Il peut être utile avant la mise en ligne de notices bibliographiques de vérifier la qualité des données ou leur homogénéité lorsque les origines et les formats sont différents. La figure 4 illustre l’exploration du corpus mis à disposition par un éditeur dans le cadre d’un projet.

Figure 4 : Exploration d’un corpus de notice bibliographique

Analyse des consultations de ressources en ligne

ezVIS peut être utilisé pour réaliser des comptages d’autres types d’informations structurées et le choix d’un logiciel libre favorise fortement l’élargissement de l’usage. La figure 5 illustre l’utilisation d’ezVIS pour la mise en évidence du détail des consultations.

Figure 5 : Détail des consultations de ressources numériques