Article de reference

Langage de données Perl

Perl Data Language ( PDL ) est un ensemble d' extensions libres pour la programmation de tableaux au langage Perl . PDL étend les structures de données intégrées à Perl afin d'y...

libres pour la programmation de tableaux au langage Perl . PDL étend les structures de données intégrées à Perl afin d'y inclure de grands tableaux multidimensionnels et ajoute des fonctionnalités permettant de manipuler ces tableaux comme des objets vectoriels. Il fournit également des outils pour le traitement d'images , l'apprentissage automatique , la modélisation informatique de systèmes physiques, ainsi que la création et la présentation de graphiques. Les opérations simples sont automatiquement vectorisées sur l'ensemble des tableaux, et les opérations multidimensionnelles (telles que la multiplication matricielle) sont prises en charge.

de programmation vectoriel pour tableaux : sa syntaxe d'expression est une variante de la notation vectorielle mathématique standard, permettant ainsi à l'utilisateur de combiner et de manipuler de grands tableaux à l'aide d'expressions simples. À cet égard, PDL s'inscrit dans la lignée du langage de programmation APL et a été comparé à des langages commerciaux tels que MATLAB et IDL (Interactive Data Language) , ainsi qu'à d'autres langages libres comme NumPy et Octave . Contrairement à MATLAB et IDL, PDL offre une grande flexibilité en matière d'indexation et de vectorisation : par exemple, si une sous-routine opère normalement sur un tableau matriciel 2D, le fait de lui passer un cube de données 3D entraînera généralement la même opération pour chaque couche 2D du cube.

PDL emprunte à Perl au moins trois types fondamentaux de structure de programme : la programmation impérative , la programmation fonctionnelle et la programmation pipeline , qui peuvent être combinées. Les sous-programmes peuvent être chargés soit via un mécanisme de chargement automatique intégré , soit via le mécanisme de modules Perl classique.

Graphique

Un graphique généré à l'aide de PDL

Fidèle à ses origines de langage d'interface, PDL emprunte à plusieurs modules pour la gestion des graphismes et des tracés. NetPBM assure la gestion des fichiers image (bien que FITS soit pris en charge nativement). Les modules Gnuplot , PLplot , PGPLOT et Gnuplot et OpenGL sont pris en charge pour le rendu et le traçage 3D.

E/S

PDL offre des fonctionnalités de lecture et d'écriture pour de nombreux formats de données ouverts, notamment JPEG , PNG , GIF , PPM , MPEG , FITS , NetCDF , GRIB , les fichiers binaires bruts et les tables ASCII délimitées. Les programmeurs PDL peuvent utiliser les bibliothèques d'entrée/sortie Perl de CPAN pour lire et écrire des données dans des centaines de formats de fichiers standard et spécifiques.

apprentissage automatique

PDL peut être utilisé pour l'apprentissage automatique . Il comprend des modules permettant d'effectuer le clustering k-means classique ou des méthodes de modélisation linéaire générales et généralisées telles que l'ANOVA, la régression linéaire, l'ACP et la régression logistique. Parmi les exemples d'utilisation de PDL pour la modélisation par régression, on peut citer l'évaluation de l'association entre le niveau d'études et les différences d'ascendance des parents , la comparaison des profils d'interaction ARN-protéine nécessitant une normalisation par régression et l'analyse des spectres de galaxies

perldl

Une installation de PDL inclut généralement un interpréteur de commandes interactif appelé perldl , qui permet d'effectuer des calculs simples sans que l'utilisateur ait besoin de créer un fichier de programme Perl. Une session typique de perldl ressemble à ceci :

$x = pdl [[1, 2], [3, 4]]; perldl> $y = pdl [[5, 6, 7],[8, 9, 0]]; perldl> $z = $x x $y; perldl> p $z; [ [21 24 7] [47 54 21] ] "
perldl > $x = pdl [[ 1 , 2 ], [ 3 , 4 ]];perldl > $y = pdl [[ 5 , 6 , 7 ],[ 8 , 9 , 0 ]];perldl > $z = $x x $y ;perldl > p $z ;[ [ 21 24 7 ] [ 47 54 21 ] ]

Les commandes utilisées dans l'interpréteur de commandes sont des instructions Perl utilisables dans un programme PDLincluant le module. xest un opérateur surchargé pour la multiplication matricielle , et pdans la dernière commande, est un raccourci pour print.

Mise en œuvre

Le cœur de PDL est écrit en C. La plupart des fonctionnalités sont écrites en PP , un métalangage spécifique à PDL qui gère la vectorisation de fragments de code C simples et les interface avec le langage hôte Perl via le compilateur XS de Perl . Certains modules sont écrits en Fortran , avec une couche d'interface C/PP. De nombreuses fonctions fournies sont écrites en PDL. L'utilisateur peut utiliser PP pour écrire des extensions C pour PDL. Il existe également un module Inline (Inline::Pdlpp) qui permet d'insérer directement des définitions de fonctions PP dans un script Perl ; le code correspondant est compilé à bas niveau et disponible sous forme de sous-programme Perl.

L'API PDL utilise les fonctionnalités orientées objet de base de Perl 5 : PDL définit un nouveau type d'objet scalaire Perl ( appelé « PDL » ou « ndarray ») qui se comporte comme un scalaire Perl, mais qui contient un tableau typé classique de valeurs numériques ou de caractères. Tous les opérateurs Perl standard sont surchargés afin de pouvoir être utilisés de manière transparente sur les objets PDL, et ces derniers peuvent être combinés avec des scalaires Perl classiques. Plusieurs centaines de méthodes d'objet pour manipuler les PDL sont fournies par les modules principaux.