Perl Data Language (abreviado PDL ) es un conjunto de extensiones de programación de matrices de software gratuito para el lenguaje de programación Perl . PDL extiende las estructuras de datos integradas en Perl para incluir grandes matrices multidimensionales y agrega funcionalidad para manipular esas matrices como objetos vectoriales. También proporciona herramientas para el procesamiento de imágenes , aprendizaje automático , modelado por computadora de sistemas físicos y trazado y presentació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 vectorial matemática estándar , de modo que el usuario puede combinar y operar en matrices grandes con expresiones simples. En este sentido, PDL sigue los pasos del lenguaje de programación APL , y ha sido 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 normalmente opera en una matriz de matriz 2-D , pasarle un cubo de datos 3-D generalmente hará que suceda la misma operación. 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 en canalización que pueden combinarse. Las subrutinas se pueden cargar mediante un mecanismo de carga automática incorporado o mediante el mecanismo habitual del módulo Perl.
Fiel a las raíces del lenguaje pegamento de Perl, PDL toma prestado de varios módulos diferentes para soporte de gráficos y trazado. NetPBM proporciona E/S de archivos de imágenes (aunque FITS es compatible de forma nativa). Los módulos Gnuplot , PPLlot , PGPLOT y Prima son compatibles con gráficos 2D y aplicaciones de trazado, y Gnuplot y OpenGL son compatibles con trazado y renderizado 3D.
PDL proporciona funciones para leer y escribir muchos formatos de datos abiertos, incluidos JPEG , PNG , GIF , PPM , MPEG , FITS , NetCDF , GRIB , archivos binarios sin formato y tablas ASCII delimitadas. Los programadores de PDL pueden utilizar las bibliotecas de E/S de CPAN Perl para leer y escribir datos en cientos de formatos de archivos estándar y especializados.
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 generales y generalizados como ANOVA, regresión lineal, PCA y regresión logística. 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 ARN-proteína que necesita una normalización basada en regresión [5] y el análisis de espectros de galaxias. [6]
Una instalación de PDL generalmente viene con un shell interactivo conocido como perldl , que puede usarse para realizar cálculos simples sin necesidad de que el usuario cree un archivo de programa Perl. Una sesión típica de perldl sería similar a la siguiente:
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 utilizar en un programa con PDL
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 simples y los interconecta con el lenguaje host 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 proporcionadas están escritas en el propio PDL. PP está disponible para que el usuario escriba extensiones de lenguaje C en PDL. También hay un módulo Inline (Inline::Pdlpp) que permite insertar definiciones de funciones PP directamente en un script Perl; el código relevante se compila a bajo nivel y se pone a disposición como una subrutina Perl.
La API de PDL utiliza la funcionalidad básica orientada a objetos de Perl 5: PDL define un nuevo tipo de objeto escalar de Perl ( llamado del mismo nombre "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 usarse en objetos PDL de forma transparente, y los PDL se pueden mezclar y combinar con escalares normales de Perl. Los módulos principales proporcionan varios cientos de métodos de objetos para operar en PDL.
{{cite web}}
: Falta o está vacío |title=
( ayuda )