Perl Data Language (abreviado como PDL ) es un conjunto de extensiones de programación de matrices de software libre para el lenguaje de programación Perl . PDL extiende las estructuras de datos integradas en Perl para incluir matrices multidimensionales grandes y agrega funcionalidad para manipular esas matrices como objetos vectoriales. También proporciona herramientas para procesamiento de imágenes , aprendizaje automático , modelado informático de sistemas físicos y representación gráfica. Las operaciones simples se vectorizan automáticamente en matrices completas y se admiten operaciones de dimensiones superiores (como la multiplicación de matrices).
PDL es un lenguaje de programación de matrices vectorizadas : la sintaxis de expresión es una variación de la notación matemática vectorial estándar , de modo que el usuario puede combinar y operar sobre matrices grandes con expresiones simples. En este sentido, PDL sigue los pasos del lenguaje de programación APL , y se lo ha comparado con lenguajes comerciales como MATLAB e Interactive Data Language , y con otros lenguajes libres como NumPy y Octave . [2] A diferencia de MATLAB e IDL, PDL permite una gran flexibilidad en la indexación y vectorización: por ejemplo, si una subrutina opera normalmente sobre una matriz de matrices 2-D , pasarle un cubo de datos 3-D generalmente hará que la misma operación suceda en cada capa 2-D del cubo. [3]
PDL toma prestados de Perl al menos tres tipos básicos de estructura de programa: programación imperativa , programación funcional y programación por canalización . Se pueden combinar distintas formas de programación. Las subrutinas se pueden cargar mediante un mecanismo de carga automática integrado o mediante el mecanismo de módulos habitual de Perl.
Fiel a las raíces del lenguaje de cola de Perl, PDL toma elementos de varios módulos diferentes para brindar soporte para gráficos y trazados. NetPBM proporciona E/S de archivos de imagen (aunque FITS se admite de forma nativa). Los módulos Gnuplot , PLplot , PGPLOT y Prima son compatibles con aplicaciones de gráficos y trazados en 2D, y Gnuplot y OpenGL son compatibles con trazados y renderizados en 3D.
PDL ofrece la posibilidad de leer y escribir numerosos formatos de datos abiertos, incluidos JPEG , PNG , GIF , PPM , MPEG , FITS , NetCDF , GRIB , archivos binarios sin procesar y tablas ASCII delimitadas. Los programadores de PDL pueden utilizar las bibliotecas de E/S de Perl CPAN para leer y escribir datos en cientos de formatos de archivos estándar y especializados.
El PDL se puede utilizar para el aprendizaje automático . Incluye módulos que se utilizan para realizar agrupaciones clásicas de k-medias o métodos de modelado lineal generalizados y generales como ANOVA, regresión lineal, PCA y regresión logística. Algunos ejemplos de uso de PDL para tareas de modelado de regresión incluyen la evaluación de la asociación entre el nivel educativo y las diferencias de ascendencia de los padres, [4] la comparación de perfiles de interacción proteína-ARN que necesitan normalización basada en regresión [5] y el análisis de espectros de galaxias. [6]
Una instalación de PDL suele venir con un shell interactivo conocido como perldl , que se puede utilizar para realizar cálculos simples sin necesidad de que el usuario cree un archivo de programa Perl. Una sesión típica de perldl se vería así:
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 ] ]
Los comandos utilizados en el shell son declaraciones de Perl que se pueden usar en un programa con PDL
el módulo incluido. x
es un operador sobrecargado para la multiplicación de matrices , y p
en el último comando hay un atajo para print
.
El núcleo de PDL está escrito en C. La mayor parte de la funcionalidad está escrita en PP , un metalenguaje específico de PDL que maneja la vectorización de fragmentos de código C simples y los interconecta con el lenguaje anfitrión de Perl a través del compilador XS de Perl. Algunos módulos están escritos en Fortran , con una capa de interfaz C/PP. Muchas de las funciones suministradas están escritas en el propio PDL. PP está disponible para que el usuario escriba extensiones de lenguaje C para PDL. También hay un módulo Inline (Inline::Pdlpp) que permite insertar definiciones de funciones PP directamente en un script de Perl; el código relevante se compila a bajo nivel y se pone a disposición como una subrutina de Perl.
La API PDL utiliza la funcionalidad básica orientada a objetos de Perl 5: PDL define un nuevo tipo de objeto escalar de Perl ( denominado epónimamente "PDL" o "ndarray") que actúa como un escalar de Perl, pero que contiene una matriz tipificada convencional de valores numéricos o de caracteres. Todos los operadores estándar de Perl están sobrecargados para que puedan utilizarse en objetos PDL de forma transparente, y los PDL pueden combinarse con escalares normales de Perl. Los módulos principales proporcionan varios cientos de métodos de objeto para operar en PDL.
{{cite web}}
: Falta o está vacío |title=
( ayuda )