| パラダイム | 配列 |
|---|---|
| 開発者 | カール・グレイズブルック、ヤール・ブリンチマン、トゥオマス・ルッカ、クリスチャン・ゼラー |
| 初登場 | 1996 |
| 安定版リリース | 2.089 [1]
/ 2024年5月12日 |
| OS | クロスプラットフォーム |
| ライセンス | GNU 一般公衆利用許諾書、Artistic License |
| Webサイト | 翻訳元 |
| 影響を受けた | |
| APL、IDL、Perl | |
Perl データ言語(略称PDL ) は、Perl プログラミング言語に対する一連のフリー ソフトウェア配列プログラミング拡張機能です。PDL は、Perl に組み込まれているデータ構造を拡張して、大規模な多次元配列を含め、それらの配列をベクトル オブジェクトとして操作する機能を追加します。また、画像処理、機械学習、物理システムのコンピューター モデリング、グラフィカルなプロットとプレゼンテーションのためのツールも提供します。単純な操作は完全な配列にわたって自動的にベクトル化され、高次元の操作 (行列乗算など) がサポートされています。
言語設計
PDLはベクトル化された配列プログラミング言語です。式の構文は標準的な数学的なベクトル表記法のバリエーションであり、ユーザーは単純な式で大きな配列を組み合わせて操作できます。この点で、PDLはAPLプログラミング言語の足跡をたどっており、MATLABやInteractive Data Languageなどの商用言語や、 NumPyやOctaveなどの他の無料言語と比較されてきました。[2] MATLABやIDLとは異なり、PDLはインデックス作成とベクトル化において大きな柔軟性を備えています。たとえば、サブルーチンが通常2次元行列配列に対して操作する場合、3次元データキューブを渡すと、通常、キューブの各2次元レイヤーに対して同じ操作が行われます。[3]
PDL は、少なくとも 3 種類の基本的なプログラム構造 (命令型プログラミング、関数型プログラミング、パイプライン プログラミング) を Perl から借用しており、これらを組み合わせることができます。サブルーチンは、組み込みの自動ロードメカニズムまたは通常の Perl モジュール メカニズムを介してロードできます。
グラフィックス

Perl の接着言語のルーツに忠実に、PDL はグラフィックスとプロットのサポートのためにいくつかの異なるモジュールを借用しています。NetPBMはイメージ ファイル I/O を提供します (ただし、FITS はネイティブでサポートされています)。Gnuplot 、PLplot、PGPLOT、および Prima モジュールは 2-D グラフィックスおよびプロット アプリケーション用にサポートされ、GnuplotおよびOpenGL は3-D プロットおよびレンダリング用にサポートされています。
入出力
PDL は、 JPEG、PNG、GIF、PPM、MPEG、FITS、NetCDF、GRIB、生のバイナリ ファイル、区切り ASCII テーブルなど、多くのオープン データ形式を読み書きする機能を提供します。PDL プログラマーは、 CPAN Perl I/O ライブラリを使用して、何百もの標準およびニッチなファイル形式でデータを読み書きできます。
機械学習
PDLは機械学習に使用できます。PDLには、従来のk平均法クラスタリングや、ANOVA、線形回帰、PCA、ロジスティック回帰などの一般線形モデリング手法を実行するために使用されるモジュールが含まれています。回帰モデリングタスクでのPDLの使用例としては、両親の教育達成度と祖先の違いとの関連性の評価、[4]、回帰ベースの正規化を必要とするRNA-タンパク質相互作用プロファイルの比較[5]、銀河のスペクトルの分析などがあります。[6]
パール
PDL のインストールには通常、perldlと呼ばれる対話型シェルが付属しており、これを使用すると、ユーザーが Perl プログラム ファイルを作成しなくても簡単な計算を実行できます。 perldl の一般的なセッションは次のようになります。
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 ] ]
シェルで使用されるコマンドは、モジュールを含むプログラムで使用できる Perl ステートメントですPDL。は、行列乗算のオーバーロードされた演算子xであり、最後のコマンドの は のショートカットです。
pprint
実装
PDL のコアはCで書かれています。ほとんどの機能はPPで書かれています。PP は PDL 固有のメタ言語で、単純な C スニペットのベクトル化を処理し、Perl のXSコンパイラを介して Perl ホスト言語とインターフェイスします。一部のモジュールは C/PP インターフェイス レイヤーを使用してFortranで書かれています。提供される関数の多くは PDL 自体で書かれています。PP は、PDL の C 言語拡張を書くためにユーザーが使用できます。また、PP 関数定義を Perl スクリプトに直接挿入できる Inline モジュール (Inline::Pdlpp) もあります。関連するコードは低レベルでコンパイルされ、Perl サブルーチンとして使用できます。
PDL API は、基本的な Perl 5 オブジェクト指向機能を使用します。PDL は、 Perl スカラーとして機能しますが、数値または文字値の従来の型付き配列を含む新しいタイプの Perl スカラー オブジェクト (「PDL」または「ndarray」と呼ばれます) を定義します。すべての標準 Perl 演算子はオーバーロードされているため、PDL オブジェクトで透過的に使用できます。また、PDL は通常の Perl スカラーと混在して使用できます。PDL を操作するための数百のオブジェクト メソッドがコア モジュールによって提供されます。
参照
参考文献
- ^ . 2024年5月12日 https://github.com/PDLPorters/pdl/releases/tag/2.089 . 2024年6月20日閲覧。
{{cite web}}:欠落または空|title=(ヘルプ) - ^ 「科学計算と金融計算の分野で Perl を再びトップに」。
- ^ 「PDL オンライン ドキュメント (PDL::Threading セクション)」。
- ^ アブデラウイ A、ホッテンガ JJ、ウィレムセン G、バーテルス M、ファン ベイスターベルト T、エーリ EA、デイビス GE、ブルックス A、サリバン PF、ペニンクス BW、デ ジェウス EJ、ブームスマ DI (2015 年 3 月)。 「学歴は移住と同類交配を介してホモ接合性のレベルに影響を与える」。プロスワン。10 (3): e0118935。Bibcode :2015PLoSO..1018935A。土井:10.1371/journal.pone.0118935。PMC 4347978。PMID 25734509。
- ^ Wang T、Xie Y、Xiao G (2014年1月)。「dCLIP: 比較CLIP-seq解析のための計算アプローチ」。ゲノム生物学。15 (1):R11。doi : 10.1186/ gb - 2014-15-1 - r11。PMC 4054096。PMID 24398258。
- ^ サンチェス SF、ペレス E、サンチェス=ブラスケス P、ゴンサレス JJ、ロサレス=オルテガ FF、カノ=ディアズ M、ロペス=コバー C、マリノ RA、ジル・デ・パス A、モラ M、ロペス=サンチェス AR、アスカシバル Y、バレラ-バレステロス J (4月) 2016)。 「Pipe3D、積分場分光法データを分析するためのパイプライン: I. FIT3D の新しいフィッティング哲学」。Revista Mexicana de Astronomya y Astrofísica。52:21~53。arXiv : 1509.08552。ビブコード:2016RMxAA..52...21S。
外部リンク
- 公式サイト
- PDL クイックリファレンス PDL の概要とリソース
- PDLのチュートリアル講義
- PDL-2.006 の PDL ブックのドラフトリリース
- 科学文献におけるPDLの使用例
