Nettoyage de printemps dans HAL et AURéHAL

Le printemps arrive, c’est donc le moment de se lancer dans un grand nettoyage… Nous avons récemment repris l’administration du portail HAL de notre établissement et après nous être familiarisés avec les fonctions principales de gestion, nous avons rapidement constaté qu’il fallait assainir une situation devenue très confuse à 3 niveaux :

  • les collections
  • les structures
  • les comptes utilisateurs

Ce billet a pour objectif de présenter les stratégies et aussi les outils auxquels nous avons eu recours pour aboutir à une situation plus raisonnable.

 

Une collection impressionnante de collections !

Manuellement, en rebondissant de collection mère en collection fille, nous avons identifié 84 collections, contenant de 0 à 3333 dépôts. Nous avons aussi identifié, le cas échéant, quel laboratoire était “associé” à chacune d’entre elles, et si le tampon était manuel ou automatique. Enfin, nous avons aussi recensé qui étaient les référents collections. Après avoir corrigé quelques anomalies (collections complètement orphelines, par exemple), nous nous sommes attelés à optimiser le tamponnage. Dans notre organisation, les collections de laboratoire font l’objet d’un tamponnage manuel par les documentalistes référents de chaque labo, ce qui permet de faire une rapide vérification de la qualité du dépôt. Mais, malgré le tampon dans une collection de laboratoire, le fonctionnement en place impliquait un autre tampon manuel par l’administrateur pour l’entrée dans le portail (collection ENPC) au même titre que pour les dépôts candidats à l’entrée au portail en raison d’une affiliation à une structure critère de tampon sur cette collection supérieure ENPC et non parce qu’ils étaient en provenance d’une collection fille. Pour être plus clair, si certains auteurs sont bien affiliés à des laboratoires (structures filles de notre institution), d’autres sont affiliés directement à l’institution, à juste titre (s’ils ne sont pas chercheurs, par exemple) ou pas…

Afin de ne pas avoir à tamponner une seconde fois les dépôts déjà vérifiés par les documentalistes et n’avoir à vérifier que ceux qui sont directement rattachés à l’institution, nous avons créé 2 collections invisibles :

  • l’une pour repérer les dépôts rattachés uniquement à la structure correspondant à notre institution, ENPC_ONLY
  • l’autre, baptisée “ramasse-miettes” qui regroupe toutes les collections créées à des fins particulières comme pour réunir les dépôts liés à un colloque ou encore à un Labex et qui peuvent alimenter notre portail, ENPC_AUTRE

Et la collection principale ENPC qui sert à alimenter notre portail peut ainsi être passée en tamponnage automatique, alimentée uniquement par des collections filles dont le contenu a été vérifié.

L’outil Draw.io a permis d’avancer plus facilement dans le dédale de collections, il offre en effet une fonction bien pratique de génération de graphique sur la base d’un import csv. Voici un extrait de l’organigramme généré :

Extrait de l’organigramme des collections générés par Draw.io

Ce travail ainsi que des échanges avec le support de HAL nous ont permis de (mieux) comprendre les implications liées :

  • à l’ajout de critères de tampon,
  • au fait que le tampon soit manuel ou automatique,
  • à l’organisation hiérarchique des collections.

Romain Boistel, notre camarade partenaire de galère dans ce nettoyage, résume la situation de la manière suivante :


COMBINAISONS AVEC/SANS CRITÈRES ET TAMPON MANUEL/AUTO

  • Sans critère + tampon auto : pas de bouton « Liste des articles non encore tamponnés »
  • Sans critère + tampon manuel : pas de bouton « Liste des articles non encore tamponnés » (donc inutile car rien ne remonte)
  • Critères + tampon auto : bouton (on peut le faire manuellement même si c’est automatisé la nuit)
  • Critères + tampon manuel : bouton
LIENS COLLECTIONS – SOUS-COLLECTIONS
  • Collection mère avec critères : les critères descendent par héritage dans les sous-collections. Pour avoir des sous-collections plus restrictives -> Tampon auto ou manuel possible.
  • Collection mère sans critères : les dépôts des sous-collections remontent dans la collection mère. Pour récupérer les dépôts des sous-collections sans effet de bord ->  Tampon auto uniquement

Au cours de ce travail de hiérarchisation et d’optimisation du tamponnage, il a fallu faire naturellement des allers-retours dans le référentiel des structures afin de les intégrer aux critères de tampon et le foisonnement de doublons et d’incongruités a transformé le petit nettoyage de printemps en entreprise titanesque.

 

Restructurer…

L’ampleur de la tâche était telle qu’il a fallu cette fois-ci recourir à l’API du référentiel AURéHAL et développer une macro en VBA pour extraire toutes les structures gravitant dans la galaxie de notre portail. Cette macro StructurHAL développée par Romain Boistel peut être téléchargée depuis GitHub ; elle est aussi présentée sur le wiki du CCSD. Elle permet, en donnant en entrée un ou plusieurs identifiants de structures, de récupérer les structures filles ou mères associées et de tisser ainsi un réseau de structures. Plus justement, à partir de la structure A, la macro va chercher s’il existe des filles de A et des mères de A. Puis, selon le paramétrage qu’on lui donne au départ, elle peut remonter dans la hiérarchie en requêtant sur les mères précédemment trouvées ou bien descendre en requêtant sur les filles. Cette macro permet donc de construire une arborescence montante de structures, par exemple d’une équipe de recherche vers ses tutelles, ou descendante, par exemple d’une institution vers ses équipes de recherche.

Nous avons été un temps grisés par les données collectées et tentés de cartographier toute la galaxie HAL, mais nous sommes rapidement revenus à la raison face aux temps de calculs (ça se comptait en semaines !) et nous nous sommes “contentés” de nettoyer notre environnement proche. Cette opération s’est déroulée sur 1 mois environ.

À partir du fichier Excel ainsi obtenu, il était facile de générer un fichier de liens (mère-fille) et un fichier de nœuds (décrits par le nom de la structure, son acronyme, son statut (OLD, VALID, INCOMING), son type (institution, laboratory, researchteam) et le nombre de dépôts lui étant associés). Dans le package développé par Romain Boistel, une deuxième macro permet de générer le csv qui servira de source pour générer un graphe dans Draw.io. Une alternative est de générer les liens et nœuds depuis le fichier Excel puis d’importer le tout dans Gephi. Et pour plus de commodité, nous générons une version dynamique du réseau avec le plugin Sigmajs Exporter ; cela permet d’explorer des parties du réseau et de se focaliser ainsi sur le nettoyage d’une structure. Il est malheureusement impossible d’encapsuler ces graphes dynamiques sur un carnet Hypothèses, le lecteur devra se contenter d’une capture d’écran…

Capture d’écran du réseau dynamique généré à mi-parcours

Nous avons commencé en bas de la hiérarchie et nous avons fusionné les structures après d’innombrables vérifications dans AURéHAL et aussi dans HAL pour nous assurer que nous avions bien affaire à des doublons et pour limiter certains dommages collatéraux. Par exemple, si une équipe de recherche a été créée par un déposant qui l’a liée indûment à 2 autres structures pour montrer qu’il relève lui-même de ces 2 structures, à la fusion et donc la suppression de la structure erronée, la mention des 2 autres structures peut disparaître. Dans de nombreux cas, nous avons mis à jour les affiliations directement au niveau du dépôt afin de ne pas faire disparaître une information sans doute importante aux yeux du déposant.

Chaque étape prend du temps, notamment parce que la mise à jour d’une fusion dans AURéHAL n’est pas instantanée, ce qui oblige à des pauses fréquentes… Et les fusions sont souvent effectuées pour des structures qui ne comptent qu’une poignée de dépôts :

[Ce graphique sert surtout à montrer que nous progressons dans l’utilisation de Tableau et que l’encapsulage d’une visualisation dans un carnet Hypotheses fonctionne à merveille…]

Par ailleurs, nous n’avons pas saisi dans quelles conditions exactes les structures sans dépôt étaient effectivement supprimées chaque nuit. Nous nous sommes aussi demandé s’il fallait nettoyer d’anciennes structures, nous avons en réalité limité ce travail sur l’ancien au strict nécessaire.

Nous avons donc lentement gravi les différents niveaux du réseau pour aboutir au nettoyage des variantes de l’institution mère et lorsque la situation était saine autour de l’Ecole des Ponts, nous avons fusionné avec plaisir les 10 variantes de l’établissement (à noter la localisation surprenante de l’une d’entre elles à Rouen…) :

Nous avons considéré le nettoyage terminé lorsqu’il n’était plus possible de fusionner aucune structure. Il ne reste alors plus que 81 nœuds au graphe, soit 180 structures de moins !

Vue (de loin) des structures de la galaxie ENPC avant et après nettoyage

Le travail d’assainissement a parfois nécessité d’interroger les labos directement afin de savoir si les équipes créées existaient vraiment/encore. Nous avons été confrontés à des situations inextricables dans AURéHAL concernant l’attitude à adopter face à une “équipe-projet” qui relève de plusieurs tutelles qui ne sont pas forcément celles des labos dont dépend cette équipe. Par exemple, IMAGINE est une équipe mixte de l’Ecole des Ponts et du CSTB, elle dépend du laboratoire LIGM qui a pour tutelle les Ponts mais pas le CSTB. Les évolutions annoncées dans AURéHAL pourront, nous l’espérons, gérer mieux ces regroupements.

 

Vrais comptes, faux comptes…

Au fur et à mesure du travail sur les structures, nous en avons profité pour mettre à jour les noms des référents. Il ne nous restait plus qu’à traiter les comptes utilisateurs.
Dans l’idée d’alléger le travail des chercheurs, de nombreux comptes génériques ont été créés et utilisés par une ou plusieurs personnes en charge des dépôts. Ainsi un compte HAL est-il parfois associé à une adresse mail qui est elle-même un alias qui regroupe jusqu’à 5 mails différents. Et au fil du temps, les personnes partent et les mails restent…
Mais sur ce dernier point, nous n’avons trouvé aucune solution satisfaisante. Nous avons parfois modifié le mail associé à certains comptes afin d’être nous-mêmes destinataires des éventuelles demandes de propriété mais pour des comptes non-génériques, associés à des humains, il faut se résoudre au fait que les demandes adressées au contributeur affiché n’arriveront jamais. Il n’est pas possible de transférer systématiquement et indéfiniment les comptes de personnels ayant quitté la galaxie HAL ou partis en retraite vers des comptes de personnes actives sur HAL.

 

Pour conclure, il en va du ménage dans HAL comme de celui à faire chez soi : c’est un éternel recommencement. Il nous faudra donc y revenir régulièrement pour tâcher de juguler la création de nouvelles structures et permettre au chercheur déposant d’identifier facilement son laboratoire. Concernant les collections, même si nous maîtrisons davantage la situation, on pourrait aussi envisager une évolution de l’API de HAL pour nous faciliter la tâche : elle permettrait de requêter sur une collection et, à l’instar de ce qu’il est possible de récupérer pour une structure, de retrouver les collections mères et filles, et aussi le mode de tamponnage.

 

Photo en une : derekGavey via Foter.com / CC BY

 

Citer ce billet : Bordignon F., "Nettoyage de printemps dans HAL et AURéHAL," in Carnet'IST, 03/04/2017, https://carnetist.hypotheses.org/1013. Consulté en ligne le 26/09/2017.


Vous aimerez aussi...

1 réponse

  1. Bénédicte Kuntziger dit :

    Bonjour,
    Bravo pour ce travail!
    Une précision :
    ‘Par ailleurs, nous n’avons pas saisi dans quelles conditions exactes les structures sans dépôt étaient effectivement supprimées chaque nuit’ : les entrées sont supprimées automatiquement si aucun dépôt ne leur est associé, mais seulement si elles sont ‘à valider’.
    Par ailleurs, nous notons la suggestion de requêtes API sur les collections. A suivre donc.

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *