J'ai déjà parlé sur ce blog d'un outil pour générer mes figures sans peine ici et là. Je l'utilise dans le cadre de mon travail de recherche.
En quelques mots, l'idée est d'avoir un outil de construction qui converti des sources vers des fichiers finaux tels que eps, pdf, svg, png, avec un support de traduction. il doit gérer des graphiques, des schémas, des graphiques avec des schémas, des formules chimiques, etc. L'outil que j'avais précédemment codé ne me donnait pas entière satisfaction car il reposait sur waf et il n'était pas toujours facile de faire évoluer les règles de compilation.
Les objectifs :
- automatisation (une commande construit tout)
- reproductibilité (je sais comment chaque figure a été générée)
- versionnage des sources (je sais ce qui a pu changer)
- données stockées à un seul endroit (facile à sauvegarder)
Les choix technologiques et le principes ont été expliqués dans les précédents billets. L'utilisation intensive que j'en ai fait (environ 200 à 300 figures générées jusqu'ici) valident totalement ces choix par l'usage.
Le principe étant très simple, j'ai décidé de recoder l'outil (nommé scifig) en python sans dépendance forte à une librairie existante. J'ai tiré profit de mon expérience avec waf pour soigner l'affichage, les logs et le principe de deux répertoires src/ et build/ ainsi que d'un export vers un répertoire de travail. L'avantage que je tire avec un code qui se suffit à lui-même est que l'écriture de règles doit être évident (ou alors, j'ai mal conçu ma bibliothèque).
Par la suite, il faudra que j'ajoute quelques nouvelles fonctionnalités qui me manquent et que j'avais du mal à inclure dans ma précédente version :
- construction rapide (un seul format) pour les retouches des figures
- règles pour matplotlib
- sorties png avec canal alpha et noir et blanc (utile pour vérifier qu'une figure est lisible sans imprimante couleur)
Plus de détails se trouvent sur mon wiki et dans la documentation.