Perl Data Language (abreviado PDL ) es un conjunto de extensiones de programación de matriz de software gratuito para el lenguaje de programación Perl . PDL amplía 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 informático de sistemas físicos y representación gráfica y presentación. Las operaciones simples se vectorizan automáticamente en matrices completas y se admiten operaciones de dimensiones superiores (como la multiplicación de matrices).
Paradigma | Formación |
---|---|
Desarrollador | Karl Glazebrook , Jarle Brinchmann , Tuomas Lukka y Christian Soeller |
Apareció por primera vez | 1996 |
Lanzamiento estable | 2.034 / 31 de marzo de 2021 [1] |
SO | Multiplataforma |
Licencia | Licencia pública general GNU , licencia artística |
Sitio web | pdl |
Influenciado por | |
APL , IDL , Perl |
Diseño de lenguaje
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 se 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 la 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 bidimensional 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 formas de programación de 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. La funcionalidad similar a PDL se está incluyendo en el desarrollo de Raku . [4]
Gráficos
Fiel a las raíces del lenguaje adhesivo de Perl, PDL toma prestado de varios módulos diferentes para soporte de gráficos y trazado. NetPBM proporciona E / S de archivos de imagen (aunque FITS es compatible de forma nativa). Los módulos Gnuplot , PLplot , PGPLOT y Prima son compatibles con gráficos 2-D y aplicaciones de trazado, y Gnuplot y OpenGL son compatibles con el trazado y renderizado 3-D.
E / S
PDL proporciona funciones para leer y escribir muchos 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 CPAN Perl para leer y escribir datos en cientos de formatos de archivo estándar y especializados.
Aprendizaje automático
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 como ANOVA, regresión lineal, PCA y regresión logística. Ejemplos de uso de PDL para tareas de modelado de regresión incluyen evaluar la asociación entre el nivel educativo y las diferencias de ascendencia de los padres, [5] comparación de perfiles de interacción ARN-proteína que necesitan normalización basada en regresión [6] y análisis de espectros de galaxias. [7]
perldl
Una instalación de PDL generalmente viene con un shell interactivo conocido como perldl , que se puede usar para realizar cálculos simples sin requerir que el usuario cree un archivo de programa Perl. Una sesión típica de perldl se parecería a lo 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
.
Implementación
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 simples de C 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 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 está disponible como una subrutina de 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 ( epónimo llamado "PDL", pronunciado "piddle") que actúa como un escalar de Perl, pero que contiene una matriz de tipo 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 pueden combinarse y combinarse con escalares Perl normales. Los módulos centrales proporcionan varios cientos de métodos de objetos para operar en PDL.
Versión Raku
En Raku , PDL se especifica como un rasgo en la Sinopsis 9. [8] En enero de 2013, esta característica aún no está implementada en Rakudo .
Ver también
- Lista de software de análisis numérico
- Comparación de software de análisis numérico
Referencias
- ^ "Lenguaje de datos de Perl - metacpan.org" . 31 de marzo de 2021.
- ^ "Poner a Perl de nuevo en la cima en los campos de la informática científica y financiera" .
- ^ "Documentación en línea de PDL (PDL :: Sección de subprocesos)" .
- ^ "Re: RFC 169 (v1) Sintaxis propuesta para el acceso y corte de elementos de matriz" .
- ^ Abdellaoui A, Hottenga JJ, Willemsen G, Bartels M, van Beijsterveldt T, Ehli EA, Davies GE, Brooks A, Sullivan PF, Penninx BW, de Geus EJ, Boomsma DI (marzo de 2015). "El logro educativo influye en los niveles de homocigosidad a través de la migración y el apareamiento selectivo" . PLOS ONE . 10 (3): e0118935. Código bibliográfico : 2015PLoSO..1018935A . doi : 10.1371 / journal.pone.0118935 . PMC 4347978 . PMID 25734509 .
- ^ Wang T, Xie Y, Xiao G (enero de 2014). "dCLIP: un enfoque computacional para análisis comparativos CLIP-seq" . Biología del genoma . 15 (1): R11. doi : 10.1186 / gb-2014-15-1-r11 . PMC 4054096 . PMID 24398258 .
- ^ Sánchez SF, Pérez E, Sánchez-Blázquez P, González JJ, Rosález-Ortega FF, Cano-Dí az M, López-Cobá C, Marino RA, Gil de Paz A, Mollá M, López-Sánchez AR, Ascasibar Y, Barrera -Ballesteros J (abril de 2016). "Pipe3D, una tubería para analizar datos de espectroscopia de campo integral: I. Nueva filosofía de ajuste de FIT3D". Revista Mexicana de Astronomía y Astrofísica . 52 : 21–53. arXiv : 1509.08552 . Código bibliográfico : 2016RMxAA..52 ... 21S .
- ^ http://perlcabal.org/syn/S09.html#PDL_support
enlaces externos
- Página web oficial
- PDL Quick Reference Introducción y recursos de PDL
- Conferencia tutorial sobre PDL
- Versión preliminar del libro PDL para PDL-2.006
- Ejemplo de uso de PDL en la literatura científica