scripts python pour la visualisation de données

1 - arximdraw

Le script python arximdraw a été développé pour visualiser les résultats des simulations arxim (code dédié à la modélisation des interactions fluides-minéraux).
Le script est donc dédié à la représentation de séries de données, comme l'évolution des molalités d'espèces en fonction du pH, ou l'évolution temporelle des abondances des minéraux dans une cellule de réaction.
Ces fichiers produits par arxim (suffixe .restab) sont des fichiers texte dont la première ligne contient le descriptif des champs. Ils peuvent être lus directement par un logiciel tableur (excel, libreoffice calc, etc), mais on a considéré qu'il serait plus rentable, à terme, de développer un programme de visualisation dédié à ce type de données. La librairie matplotlib permet en plus de générer des diagrammes de meilleure qualité que les tableurs standard, avec de nombreux outils disponibles.

Les librairies requises sont

pysimplegui est une librairie python, apparue assez récemment, qui permet de développer une interface graphique (GUI, graphic user interface) beaucoup plus facilement qu'avec les outils analogues, certes plus complets et plus professionnels, tels que wxPython and PyQt. D'après l'auteur de pysimplegui, on peut être opérationnel en GUI en quelques heures, et c'est assez vrai.

Le principal problème rencontré avec pysimplegui a trait à l'intégration directe dans l'interface de figures générées par matplotlib. Il semble que pysimplegui n'est pas à jour des évolutions récentes de matplotlib et exige qu'on utilise matplotlib-3.0.3 au plus, mais, même en respectant cette condition, l'intégration de matplotlib reste délicate et parfois beuguante. Pour passer cet obstacle, nous avons préféré ne pas intégrer les figures matplotlib dans la fenêtre pysimplegui, et utiliser PIL (python image library) pour les afficher, après conversion en PNG. On a utilisé pour ce faire la fonction convert_to_bytes utilisée dans les programmes "demo" du dépôt github de pysimplegui.

Pour tester ce script, on peut télécharger le fichier arximdraw_data.restab , qui provient d'une simulation 0D de l'altération d'un assemblage quartz - feldspaths par une eau acide (les PHI_Quartz, PHI_Albite, etc correspondent aux factions volumiques des différents minéraux dans la cellule calculées aux différents pas de temps).

arximdraw-01
variations absolues variations relatives: mode y(t)-y(t0)
arximdraw-02 arximdraw-02
représentation en cumulé: mode Stacked
arximdraw-02 arximdraw-02-stacked

2 - geoxdraw

Le script python geoxdraw est dédié à la visualisation de données géochimiques (analyses de roches totales, en particulier). Il reprend la plupart des fonctionnalités du programme geoxdraw d'origine, développé en Delphi, et appelé initialement tikazu.

Les librairies requises sont

Pour tester le script, on peut utiliser en entrée le fichier excel geoxdraw_data.xls, qui contient des analyses en roche totale de carbonatites, phoscorites et roches associées du complexe de Sokli (thèse Mi-Jung LEE).

Dans le programme Geoxdraw originel, les fichiers d'entrée sont des fichiers texte Tab-délimités générés par copier/coller d'une zone de données d'une feuille de calcul. Dans cette version python, on travaille directement à partir d'une feuille d'un fichier excel. On utilise la librairie xlrd pour lire les fichiers excel, il faudra donc l'installer par

pip (ou pip3) install xlrd

Mais on doit noter que xlrd ne prend plus en charge ("due to potential security vulnerabilities") les formats excel récents, à suffixe xslx. Il faudra donc travailler sur des versions .xls de vos fichiers, obtenues facilement par un "sauver sous...". Noter aussi que pour l'instant geoxdraw prend en compte, par défaut, la première feuille du fichier excel.

format des fichiers d'entrée geoxdraw

Comme l'illustre le fichier exemple, le format est assez simple:

format de l'en-tête du fichier

La première ligne du fichier contient les informations qui définissent la structure du fichier. Il faut en effet que le programme puisse reconnaître quoi est quoi ...

Une analyse comporte deux types de données:

Les champs du premier type seront systématiquement placés en tête de ligne (donc dans les colonnes de gauche), et, pour signaler que ces champs correspondent à des valeurs alphanumériques, on devra placer le caractère point '.' en premier caractère de chaque nom de champ (i.e. l'intitulé du champ, dans la ligne décrivant le format, et non le contenu pour une anlyse donnée). Ensuite viendront les noms des oxydes et éléments analysés (et autres données numériques telles que profondeur, cotes, etc.).

Un fichier de données se présente donc de la façon suivante (Littlelon formation element concentrations in Shaw (1954) samples):

.SAMP .CS .GRAD LOI SiO2 TiO2 AL2O3 FE2O3 MNO MGO
L01 GCF LOW 3.54 66.60 0.88 15.70 6.38 0.04 2.30
L02 GCF LOW 4.47 58.10 0.65 21.00 7.35 0.06 3.41
L03 GCF LOW 3.94 64.30 1.06 18.00 6.74 0.03 1.19
L05 LCF MEDIUM 1.70 74.40 0.46 13.70 2.70 0.03 0.51
L06 LCF MEDIUM 4.70 44.20 0.74 33.60 6.22 0.05 0.86
L07 LCF MEDIUM 1.08 85.30 0.41 5.80 3.44 0.10 0.55
L12 LCF MEDIUM 2.38 62.40 1.04 21.30 3.94 0.08 1.25
L13 LCF MEDIUM 1.59 69.20 0.89 14.40 5.79 0.08 1.87

Ici, la première ligne ne commence pas par un point, le programme considère donc qu'il s'agit d'un titre.

La deuxième ligne, qui commence par un point, décrit la structure du fichier.

On trouvera alors les noms des champs numériques comme choix possibles pour les axes, et les noms des champs alphanumériques comme choix possibles pour les couleurs, symboles, sélections, et labels.

geoxdraw-01

Save on File enregistre le diagramme aux formats png et eps (encapsulated postscript, vectoriel), sous un nom arbitraire (par exemple geoxdraw_data_1_Al2O3_Fe2O3, pour le premier diagramme tracé à partir du fichier d'entrée geoxdraw_data) qu'on pourra ensuite modifier.
Save on Screen permet de garder un diagramme affiché à l'écran tout le temps de la session d'analyse des données.

geoxdraw-02

Le choix des symboles et couleurs des points (en diagramme binaire simple) se fait par les "listbox" sous-titrées Symbols et Colors, mais le résultat pourra varier d'une session à l'autre, si l'ordre des analyses dans le fichier est modifié. Cette méthode peut être intéressante dans un premier stade, mais, pour avoir une symbolique choisie et stable à plus long terme, il est préférable de coder les symboles/couleurs dans le fichier. On introduira dans le fichier d'entrée une colonne appelée .COLSYM qui contient pour chaque analyse la symbolique, sous la forme d'un mot de deux lettres, couleur puis symbole, par exemple r+ pour une croix rouge. Noter que la légende (qui serait normalement générée par matplotlib à partir de ces codes couleur-marqueur) sera générée ici à partir de la colonne située à gauche de la colonne .COLSYM. Le fichier exemple geoxdraw_data.xls donne un exemple de cette organisation.

exemple de codage couleur/symbole par .COLSYM
geoxdraw-03-data geoxdraw-03
utilisation de Select, MUTIC et Labels
geoxdraw-04-label geoxdraw-05-label

Code couleur: one of the characters {'b', 'g', 'r', 'c', 'm', 'y', 'k', 'w'}, which are short-hand notations for shades of blue, green, red, cyan, magenta, yellow, black, and white.

Code symbole: 'o', 'v', 'H', 'X', 's', 'p', 'P', '*', 'D', '^', 'h', '>', 'd', '+', '<', 'x', '1', '2', '3', '4'