Accueil - Informatique - Programmation - Langages

Perl Data Language

Publié le lundi 22 novembre 2004.


PDL ("Perl Data Language") ajoute au Perl standard la possibilité de manipuler rapidement des tableaux de N dimensions généralement utilisés en calcul scientifique.

Mise à jour le 29 février 2007

PDL - The Perl Data Language

PDL est un langage permettant de manipuler des matrices via une interface objet en Perl comme on peut le faire avec des produits commerciaux tels que Matlab ou IDL.

Il existe également un interpréteur (shell interactif) perldl permettant de d’exécuter et de tester en ligne de commandes les instructions qui seront utilisées dans vos scripts Perl.

Il existe également un module PDL::NetCDF permettant de lire ou d’écrire directement des objets PDL ou "piddle" dans un fichier NetCDF. La syntaxe objet de ce module, concise et puissante, permet de créer simplement des fichiers NetCDF.

Pour plus d’informations sur PDL visiter le site officiel.

Installation des modules

Pour une installation manuelle, on trouvera les sources de la version PDL-2.4.3
et PDL-NetCDF-0.92 sur le site de CPAN puis compiler et installer avec la procédure classique :

$ perl Makefile.PL
$ make
$ make test
$ make install

Pour une installation simplifiée, utilisez cpan pour installer les modules PDL et PDL::NetCDF.

$ perl -MCPAN -e shell
cpan> install PDL
cpan> install PDL::NetCDF

Remarques sous Cygwin :

L’interpréteur shell perldl

Lancez perldl et entrez vos commandes.

Voir le liens sur la documentation de perldl plus plus d’informations.

On pourra également utiliser l’aide sous perldl comme suit :

Aide en ligne

Utiliser les pages de manuel perldoc :

$ perldoc PDL
$ perldoc PDL::Index
$ perldoc PDL::Core
etc...

Sur le Web :

Quelques démos sous perldl

Sous l’interpréteur perldl, lancez la commande demo pdl :

Exemple d’utilisation du module PDL::NetCDF

Voici un exemple de code source en perl permettant de créer un fichier NetCDF à 2 dimensions (3 stations, 6 niveaux de mesures) pour 3 variables PRES, TEMP et PSAL.

En production, les "piddles" seront créés dynamiquement dans une table de hashage (tableau associatif) dont les clés seront les variables. Pour plus d’informations, contacter J Grelet.

On pourra visualiser l’entete du fichier à l’aide du programme ncdump (package NetCDF) :

Exemple de création du fichier NetCDF de données CTD réalisées lors de la campagne PIRATA-FR12 à partir du script Perl oceano2cdf.pl :

$ ./oceano2cdf -d 1 -f pirata-fr12_ctd -o test.nc -p 500 -s 15
PIRATA-FR12,ATALANTE,IRD,SBE911+
Profondeur max: 500
Lit station: 1 0.0022 5.0013 20040130134700 30.574
Lit station: 2 -0.0016 0.0088 20040201062700 32.269
Lit station: 3 1.0058 -10.0027 20040203152900 34.645
Lit station: 4 0.0172 -9.9275 20040204234400 35.989
Lit station: 5 -1.0008 -10.0009 20040205155600 36.664
Lit station: 6 -2.0000 -10.0015 20040205223300 36.940
Lit station: 7 -3.0008 -10.0012 20040206045800 37.207
Lit station: 8 -3.9989 -10.0003 20040206112900 37.478
Lit station: 9 -4.9993 -10.0004 20040206183900 37.777
Lit station: 10 -6.0123 -9.9935 20040207153400 38.649
Lit station: 11 -6.9996 -9.9993 20040207222900 38.937
Lit station: 12 -8.0000 -10.0005 20040208050600 39.212
Lit station: 13 -9.0009 -10.0000 20040208113800 39.485
Lit station: 14 -9.9252 -9.9728 20040209023200 40.106
Lit station: 15 -0.0140 -23.0090 20040213023200 44.106
Type: Float  D [15] PDL
Type: Float  D [15] PDL
Type: Float  D [15] PDL
Type: Float  D [501,15] PDL
Type: Float  D [501,15] PDL
Type: Float  D [501,15] PDL
Type: Float  D [501,15] PDL
Type: Float  D [501,15] PDL
Type: Float  D [501,15] PDL

Les données pouront ensuite être directement visualisées avec un outils comme ncbrowse

NcBrowse
Outils visuel en java de lecture des fichiers NetCDF

Visualisation de la température :

Température - PIRATA-FR12
Visualisation des profils de température réalisés lors de PIRATA-FR12 à partir d’un fichier NetCDF avec ncbrowse

Visualisation de la salinité :

Salinité - PIRATA-FR12
Visualisation des profils de salinité réalisés lors de PIRATA-FR12 à partir d’un fichier NetCDF avec ncbrowse
PDL