Automatisation - python Extrait du Calcul Scientifique http://calcul-scientifique-ljk.imag.fr/visualisation-46/paraview/article/automatisation-python Automatisation - python - Visualisation - ParaView - Date de mise en ligne : mardi 2 septembre 2014 Copyright © Calcul Scientifique - Tous droits réservés Copyright © Calcul Scientifique Page 1/4 Automatisation - python • • Pourquoi automatiser Comment automatiser • State files • Macros python • Custom filters • pvpython, pvbatch • Générer automatiquement une image Pourquoi automatiser ? • • • • On veut visualiser plusieurs jeux de données de manière identique sans avoir a refaire à chaque fois les même actions (—> state files, macro, custom filters) On veut pouvoir revenir à une visualisation dans l'état dans lequel on l'a laissée (—> state files) Lancer des actions paraview en background sans le client, surtout si elles prennent du temps (—> pvpython, pvbatch) Générer automatiquement des images sans avoir à ouvrir le client (—> pvpython, pvbatch) Cela peut se faire soit via l'interface graphique (utilisation des states files, des macros, des custom filters) ou via les utilitaires en ligne de commande (pvpython, pvbatch) Les macros, les utilitaires pvpython et pvbatch utilisent le langage de programmation python. States files On peut sauvegarder une visualisation (données sources + filtres appliqués) dans un state file, ou fichier d'état. Pour cela utiliser le menu File/Save State.. Le fichier sauvegardé a comme extension .pvsm Pour réouvrir le fichier, utiliser le menu File/Load State A l'ouverture d'un state file, on peut changer le jeu de données source. Macro python Une macro, sous paraview, est un script python que l'on peu exécuter. En effet, l'interface de paraview peut être entièrement pilotée par des instructions en python (Menu Shell). L'enregistrement d'une macro est très simple. Tools/Python Pour enregistrer une macro : • • • Cliquer sur le menu Tools/Start Trace ; Faire une série d'action dans l'interface ; Cliquer sur le menu Tools/Stop Trace : les instructions pythons correspondant aux actions réalisées s'affichent Copyright © Calcul Scientifique Page 2/4 Automatisation - python • • dans un éditeur ; Dans l'éditeur, choisir le menu 'Save As Macro' pour enregistrer le script dans un répertoire spécifique paraview, ou 'Save As' pour enregistrer le script dans un répertoire propre ; Utiliser le menu Macro/Add new Macro pour référencer la macro dans l'interface paraview. Pour utiliser une macro : menu Macro/ nom de la macro Custom filters Les custom filters (filtres personnalisés) permettent d'enregistrer une série de filtres et leurs paramètres sous un nom unique, puis de les appliquer comme un filtre classique. • • • • Sélectionner dans le pipeline les filtres devant faire parti du custom filter. (Touche maj + cliquer sur chacun des filtres) Menu Tools/Create Custom Filter. Choisir les paramètres voulus Pour accéder au filtrer créé : menu Filters/Alphabetical : les custom filters sont tout à la fin de la liste ; ou bien menu Filters/Recent si on vient juste de créer le filtre. pvpyton, pvbatch pvpython et pvbatch sont deux utilitaires python qui permettent de manipuler paraview sans passer par l'interface client. • • pvpython : utilisation interactive ou lancement de scripts pvbatch : lancement de scripts, indiqué si on veut faire tourner des scripts en parallèle Exemple : On enregistre une série d'actions dans l'interface paraview (menu Tools/Start et Stop Trace) dans un fichier monscript.py On execute ces actions sans l'interface client, sur un jeu de données myData : pvpython --data=myData monscript.py pvpython et pvbatch se trouvent dans le répertoire /bin de paraview. Si on veut les utiliser sans avoir à taper le répertoire complet à chaque fois, il faut compléter la variable PATH de son environnement. D'autre part, entre le client graphique paraview et pvpython, le rendu est légèrement différent, car le réglage du background et de la lumière par défaut ne sont pas les mêmes. Si on veut le même rendu, il faut ajouter les lignes suivantes à la fin de monscript.py : # lights RenderView1.LightSwitch=0 # turns off the headlight RenderView1.UseLight=1 # turns on the ambient lighting # background view=GetActiveView() Copyright © Calcul Scientifique Page 3/4 Automatisation - python view.Background = [0.32,0.34,0.43] Générer automatiquement une image Si on n'a pas le temps d'apprendre à utiliser les librairies python de paraview, on peut générer un script qui créé une image via l'interface graphique, puis utiliser pvpython pour lancer ce script. • • • • • • A l'ouverture du client paraview, lancer Tools/Start Trace Utiliser l'interface pour obtenir la visualisation désirée Utiliser le menu File/Save Screenshot pour sauvegarder l'image Menu Tools/Stop Trace —> sauvegarder le script de création d'image Ouvrir le script, ajuster si besoin les lumières et le background (voir le § au dessus) On peut ensuite lancer le script avec pvpython pour générer l'image sans ouvrir l'interface graphique de paraview : pvpython nom_du_script.py Note : on peut ensuite utiliser python pour passer en parametre le nom du fichier source de données. • • Voir la librairie argparse pour faire ça dans les règles de l'art ; Sinon, pour faire vite on peut utiliser : import sys myFirstArg=sys.argv[1] Après, il suffit de rajouter le paramètre après le nom du fichier : Copyright © Calcul Scientifique pvpython my_script.py my_arg Page 4/4