stringtranslate.com

Lenguaje de datos Perl

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).

Diseño del lenguaje

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.

Gráficos

Un gráfico generado usando PDL

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.

E/S

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.

Aprendizaje automático

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]

perldl

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 PDLel módulo incluido. xes un operador sobrecargado para la multiplicación de matrices , y pen 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 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.

Véase también

Referencias

  1. ^ . 12 de mayo de 2024 https://github.com/PDLPorters/pdl/releases/tag/2.089 . Consultado el 20 de junio de 2024 . {{cite web}}: Falta o está vacío |title=( ayuda )
  2. ^ "Devolviendo a Perl a la cima en los campos de la informática científica y financiera".
  3. ^ "Documentación en línea de PDL (sección PDL::Threading)".
  4. ^ 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 nivel educativo influye en los niveles de homocigosidad a través de la migración y el apareamiento selectivo". PLOS ONE . ​​10 (3): e0118935. Bibcode :2015PLoSO..1018935A. doi : 10.1371/journal.pone.0118935 . PMC 4347978 . PMID  25734509. 
  5. ^ Wang T, Xie Y, Xiao G (enero de 2014). "dCLIP: un enfoque computacional para análisis comparativos de CLIP-seq". Genome Biology . 15 (1): R11. doi : 10.1186/gb-2014-15-1-r11 . PMC 4054096 . PMID  24398258. 
  6. ^ 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, un pipeline para analizar datos de espectroscopía 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 Bib : 2016RMxAA..52...21S.

Enlaces externos