Perl Data Language

Perl Data Language (PDL)
Paradigm Array
Utvecklare Karl Glazebrook , Jarle Brinchmann, Tuomas Lukka och Christian Soeller
Dök först upp 1996 ( 1996 )
Stabil frisättning
Edit this on Wikidata 2.080 / 28 maj 2022 ; 9 månader sedan ( 28 maj 2022 )
OS Cross-plattform
Licens GNU General Public License , Artistic License
Hemsida pdl .perl .org
Influerad av
APL , IDL , Perl

Perl Data Language (förkortat PDL ) är en uppsättning gratis programvaruarray -programtillägg till programmeringsspråket Perl . PDL utökar datastrukturerna som är inbyggda i Perl till att inkludera stora flerdimensionella arrayer och lägger till funktionalitet för att manipulera dessa arrayer som vektorobjekt. Den tillhandahåller också verktyg för bildbehandling , maskininlärning , datormodellering av fysiska system och grafisk plottning och presentation. Enkla operationer vektoriseras automatiskt över hela arrayer, och högre dimensionella operationer (som matrismultiplikation) stöds.

Språkdesign

PDL är ett vektoriserat array-programmeringsspråk : uttryckssyntaxen är en variant av standard matematisk vektornotation , så att användaren kan kombinera och arbeta på stora arrayer med enkla uttryck. I detta avseende följer PDL i APL-programmeringsspråkets fotspår, och det har jämförts med kommersiella språk som MATLAB och Interactive Data Language , och med andra fria språk som NumPy och Octave . Till skillnad från MATLAB och IDL tillåter PDL stor flexibilitet i indexering och vektorisering: till exempel, om en subrutin normalt fungerar på en 2-D- matrismatris , kommer att skicka en 3-D- datakub i allmänhet att göra att samma operation händer med varje 2-D-matris. D lager av kuben.

PDL lånar från Perl minst tre grundläggande typer av programstruktur: imperativ programmering , funktionell programmering och pipeline-programmeringsformer kan kombineras. Subrutiner kan laddas antingen via en inbyggd autoload- mekanism eller via den vanliga Perl-modulmekanismen.

Grafik

En plot genererad med PDL

Trogen de limspråkiga rötterna i Perl, lånar PDL från flera olika moduler för grafik och plottning. NetPBM tillhandahåller I/O för bildfiler (även om FITS stöds inbyggt). Modulerna Gnuplot , PLplot , PGPLOT och Prima stöds för 2D-grafik och plottningstillämpningar, och Gnuplot och OpenGL stöds för 3D-plottning och rendering.

I/O

PDL tillhandahåller faciliteter för att läsa och skriva många öppna dataformat, inklusive JPEG , PNG , GIF , PPM , MPEG , FITS , NetCDF , GRIB , råa binära filer och avgränsade ASCII-tabeller. PDL-programmerare kan använda CPAN Perl I/O-biblioteken för att läsa och skriva data i hundratals standard- och nischfilformat.

Maskininlärning

PDL kan användas för maskininlärning . Den innehåller moduler som används för att utföra klassiska k-means klustring eller generella och generaliserade linjära modelleringsmetoder som ANOVA, linjär regression, PCA och logistisk regression. Exempel på PDL-användning för regressionsmodelleringsuppgifter inkluderar att utvärdera sambandet mellan utbildningsnivå och skillnader i anor för föräldrar, jämförelse av RNA-proteininteraktionsprofiler som behöver regressionsbaserad normalisering och analys av galaxspektra.

perldl

En installation av PDL kommer vanligtvis med ett interaktivt skal känt som perldl , som kan användas för att utföra enkla beräkningar utan att användaren behöver skapa en Perl-programfil. En typisk session av perldl skulle se ut ungefär så här:

       

        0

     

  


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

Kommandona som används i skalet är Perl-satser som kan användas i ett program med PDL- modul inkluderad. x är en överbelastad operator för matrismultiplikation , och p i det sista kommandot är en genväg för utskrift .

Genomförande

Kärnan i PDL skrivs i C . Det mesta av funktionaliteten är skriven i PP , ett PDL-specifikt metaspråk som hanterar vektorisering av enkla C-snuttar och kopplar dem till Perl-värdspråket via Perls XS -kompilator. Vissa moduler är skrivna i Fortran , med ett C/PP-gränssnittslager. Många av de medföljande funktionerna är skrivna i själva PDL. PP är tillgängligt för användaren att skriva C-språktillägg till PDL. Det finns också en Inline-modul (Inline::Pdlpp) som gör att PP-funktionsdefinitioner kan infogas direkt i ett Perl-skript; den relevanta koden kompileras på låg nivå och görs tillgänglig som en Perl-subrutin.

PDL API använder den grundläggande Perl 5 objektorienterade funktionaliteten: PDL definierar en ny typ av Perl skalärt objekt ( eponymt kallat "PDL" eller "ndarray") som fungerar som en Perl skalär, men som innehåller en konventionell typmatris av numeriska eller teckenvärden. Alla standard Perl-operatorer är överbelastade så att de kan användas på PDL-objekt transparent, och PDL kan blandas och matchas med normala Perl-skalärer. Flera hundra objektmetoder för att arbeta på PDL:er tillhandahålls av kärnmodulerna.

Se även

externa länkar