펄 데이터 언어

Perl Data Language
PDL(Perl 데이터 언어)
패러다임배열
개발자카를 글레이즈브룩, 잘레 브린치만, 투오마스 루카, 크리스티안 소엘러
첫 등장1996 (1996)
안정적 해제
2.057 / 2021년 8월 13일; 4개월(2021-08-13)[1]
OS크로스 플랫폼
면허증GNU 일반 공중 라이선스, 예술 라이선스
웹사이트pdl.perl.org
영향을 받은
APL, IDL, Perl

Perl 데이터 언어(약칭 PDL)는 Perl 프로그래밍 언어에 대한 무료 소프트웨어 어레이 프로그래밍 확장 모음입니다. PDL은 Perl에 내장된 데이터 구조를 대규모 다차원 어레이로 확장하고, 이러한 어레이를 벡터 객체로 조작하는 기능을 추가한다. 또한 이미지 처리, 머신러닝, 물리적 시스템의 컴퓨터 모델링, 그래픽 플로팅 및 프리젠테이션을 위한 도구도 제공한다. 단순 연산은 전체 배열에서 자동으로 벡터링되며, 고차원 연산(매트릭스 곱셈 등)이 지원된다.

언어 디자인

PDL은 벡터화된 배열 프로그래밍 언어로서, 표현 구문은 표준 수학 벡터 표기법에 대한 변화로, 사용자가 간단한 표현으로 큰 배열에서 결합하여 운영할 수 있다. 이 점에서 PDL은 APL 프로그래밍 언어의 전철을 밟으며, MATLAB, Interactive Data Language와 같은 상용 언어와 NumPy, 옥타브와 같은 다른 자유 언어와 비교되어 왔다.[2] MATLAB와 IDL과는 달리 PDL은 인덱싱과 벡터화에 있어 뛰어난 유연성을 허용한다. 예를 들어 서브루틴이 보통 2-D 매트릭스 어레이에서 작동하는 경우, 3-D 데이터 큐브를 통과하면 일반적으로 큐브의 각 2-D 레이어에 동일한 작동이 발생한다.[3]

PDL은 Perl로부터 최소한 세 가지 기본 프로그램 구조, 즉 필수 프로그래밍, 기능 프로그래밍파이프라인 프로그래밍 형식을 결합할 수 있다. 서브루틴은 내장 자동 장착 메커니즘 또는 일반적인 Perl 모듈 메커니즘을 통해 로드될 수 있다. 라쿠 개발에는 PDL급 기능성이 포함되고 있다.[4]

그래픽스

PDL을 사용하여 생성된 플롯

Perl의 글루 언어 뿌리에 맞는 PDL은 그래픽과 플롯 지원을 위해 여러 다른 모듈에서 빌린다. NetPBM은 이미지 파일 I/O를 제공한다(FITS는 기본적으로 지원됨). 2-D 그래픽과 플로팅 어플리케이션에는 Gnuplot, PGPLOT, Prima 모듈이 지원되고, 3-D 플로팅 및 렌더링에는 Gnuplot, OpenGL이 지원된다.

I/O

PDL은 JPEG, PNG, GIF, PPM, MPEG, FITS, NetCDF, GRIB, 원시 바이너리 파일 및 구분된 ASCII 테이블을 포함한 많은 개방형 데이터 형식을 읽고 쓸 수 있는 기능을 제공한다. PDL 프로그래머는 CPAN Perl I/O 라이브러리를 사용하여 수백 개의 표준 및 틈새 파일 형식으로 데이터를 읽고 쓸 수 있다.

머신러닝

PDL은 기계 학습에 사용할 수 있다. 여기에는 기존의 k-평균 군집화 또는 분산 분석, 선형 회귀 분석, PCA, 로지스틱 회귀 분석과 같은 일반적이고 일반화된 선형 모델링 방법을 수행하는 데 사용되는 모듈이 포함된다. 회귀 모델링 작업에 대한 PDL 사용의 예로는 교육 달성도와 부모의 선조 차이 사이의 연관성 평가,[5] 회귀 기반[6] 정규화가 필요한 RNA-단백질 상호작용 프로필 비교 및 은하의 스펙트럼 분석을 포함한다.[7]

구불구불하게 하다

PDL의 설치는 보통 perldl이라고 알려진 인터랙티브 과 함께 제공되는데, 사용자가 Perl 프로그램 파일을 만들 필요 없이 간단한 계산을 수행하는 데 사용할 수 있다. 일반적인 perldl 세션은 다음과 같이 보일 것이다.

구불구불하게 하다> $x = pdl [[1, 2], [3, 4]];  구불구불하게 하다> $y = pdl [[5, 6, 7],[8, 9, 0]];  구불구불하게 하다> $z = $x x $y;  구불구불하게 하다> p $z;  [  [21 24  7]  [47 54 21] ] 

셸에서 사용되는 명령은 Perl 문이며, 이 문장은 다음 명령어를 사용하는 프로그램에서 사용할 수 있다. PDL 모듈 포함. x 매트릭스 곱셈에 대한 과부하 연산자이며, 마지막 명령에서 의 바로 가기입니다.

실행

PDL의 핵심은 C로 표기되어 있다. 대부분의 기능은 PDL 고유 금속구인 PP로 작성되며, Perl의 XS 컴파일러를 통해 단순 C 스니펫의 벡터화를 처리하고 Perl 호스트 언어와 접속한다. 일부 모듈은 C/PP 인터페이스 레이어로 Fortran에 작성된다. 공급된 기능 중 상당수는 PDL 자체로 작성된다. PP는 사용자가 PDL에 C 언어 확장을 쓸 수 있다. 인라인 모듈도 있다(인라인::Pp 함수 정의를 Perl 스크립트에 직접 삽입할 수 있는 :Pdlpp). 관련 코드는 낮은 레벨의 컴파일하여 Perl 서브루틴으로 사용할 수 있게 한다.

PDL API는 기본 Perl 5 객체 지향 기능을 사용한다: PDL은 Perl 스칼라(: "PDL" 또는 "ndarray"라고 불리며)는 Perl 스칼라(Perl 스칼라)의 역할을 하지만, 기존의 형식화된 숫자 또는 문자 의 배열을 포함하는 새로운 유형의 Perl 스칼라 개체(" 또는 "ndarray")를 정의한다. 표준 Perl 연산자는 모두 과부하되어 PDL 객체에 투명하게 사용할 수 있으며 PDL은 일반 Perl 스칼라와 혼합하여 매치할 수 있다. PDL에서 동작하기 위한 수백 가지의 객체 방법은 핵심 모듈에서 공급된다.

라쿠 버전

라쿠에서 PDL은 시놉시스 9의 특성으로 명시되어 있다.[8] 2013년 1월 현재 라쿠도에서는 아직 이 기능이 구현되지 않고 있다.

참고 항목

참조

  1. ^ "Perl Data Language - metacpan.org". August 13, 2021.
  2. ^ "Putting Perl Back on Top in the Fields of Scientific and Financial Computing".
  3. ^ "PDL online documentation (PDL::Threading section)".
  4. ^ "Re: RFC 169 (v1) Proposed syntax for matrix element access and slicing".
  5. ^ 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 (Mar 2015). "Educational Attainment Influences Levels of Homozygosity through Migration and Assortative Mating". PLOS ONE. 10 (3): e0118935. Bibcode:2015PLoSO..1018935A. doi:10.1371/journal.pone.0118935. PMC 4347978. PMID 25734509.
  6. ^ Wang T, Xie Y, Xiao G (Jan 2014). "dCLIP: a computational approach for comparative CLIP-seq analyses". Genome Biology. 15 (1): R11. doi:10.1186/gb-2014-15-1-r11. PMC 4054096. PMID 24398258.
  7. ^ 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 (April 2016). "Pipe3D, a pipeline to analyze Integral Field Spectroscopy Data: I. New fitting philosophy of FIT3D". Revista Mexicana de Astronomía y Astrofísica. 52: 21–53. arXiv:1509.08552. Bibcode:2016RMxAA..52...21S.
  8. ^ http://perlcabal.org/syn/S09.html#PDL_support

외부 링크