28

私は学生として生物学研究所のサポートスタッフとして働いており、Perlはどこでも使われているようです。すべてのプロジェクトに当てはまるわけではありませんが、ここの人々の半数以上がオフィス/デスクに数冊のPerlの本を持っているようです。

なぜPerlは生物学でそんなに使われるのですか?

4

12 に答える 12

47

リンカーン・スタインは、彼の記事「Perlがヒトゲノムプロジェクトをどのように保存したか」で、バイオインフォマティクスのためのPerlの保存の恩恵のいくつかを強調しました 。

彼の分析から:

私はいくつかの要因が原因だと思います:

  1. Perlは、テキストのスライス、ダイシング、ツイスト、絞り、スムージング、要約、その他のマングリングに非常に適しています。生物科学は現在、かなりの数値分析を含んでいますが、主要なデータのほとんどは依然としてテキストです:クローン名、注釈、コメント、書誌参照。DNA配列でさえテキストのようなものです。互換性のないデータ形式の相互変換は、テキストのマングリングといくつかの創造的な当て推量の問題です。Perlの強力な正規表現マッチングおよび文字列操作演算子は、他の現代言語に匹敵する方法でこの作業を簡素化します。

  2. Perlは寛容です。多くの場合、生物学的データは不完全であるか、フィールドが欠落している可能性があります。または、1回存在すると予想されるフィールドが複数回発生するか(たとえば、実験が重複して実行されたため)、データが手動で入力されたものであり、完全ではありません。期待されるフォーマットに適合します。Perlは、値が空であるか、奇数文字が含まれているかを特に気にしません。正規表現を記述して、データ入力におけるさまざまな一般的なエラーを検出して修正することができます。もちろん、この柔軟性は呪いにもなり得ます。以下でPerlの問題について詳しく説明します。

  3. Perlはコンポーネント指向です。Perlは、Perlライブラリモジュールを使用するか、従来のUnixツール指向のアプローチを使用して、ソフトウェアを小さなモジュールで作成することを推奨しています。外部プログラムは、パイプ、システムコール、またはソケットを使用してPerlスクリプトに簡単に組み込むことができます。Perl5で導入された動的ローダーを使用すると、Cルーチンを使用してPerl言語を拡張したり、コンパイル済みライブラリ全体をPerlインタープリターで使用できるようにすることができます。生物学的データに関して世界中で収集されたすべての知恵を「bioPerl」と呼ばれる一連のモジュールに集めるための取り組みが現在進行中です(Perl Journalで後で公開される記事で詳細に説明されています)。

  4. Perlは記述が簡単で、開発も迅速です。インタプリタでは、すべての関数プロトタイプとデータ型を事前に宣言する必要はありません。必要に応じて新しい変数が出現します。未定義の関数を呼び出すと、関数がエラーになる場合にのみエラーが発生します。必要です。デバッガーはEmacsでうまく機能し、快適なインタラクティブな開発スタイルを可能にします。

  5. Perlは優れたプロトタイピング言語です。Perlは速くて汚いので、高速コンパイルされた言語に移動する前に、Perlで新しいアルゴリズムのプロトタイプを作成することはしばしば理にかなっています。Perlは十分に高速であるため、アルゴリズムを移植する必要がない場合があります。多くの場合、アルゴリズムの小さなコアをCで記述し、動的にロードされるモジュールまたは外部実行可能ファイルとしてコンパイルし、残りのアプリケーションをPerlのままにすることができます(この方法で実装された複雑なゲノムマッピングアプリケーションの例については、を参照してください。http://waldo.wi.mit.edu/ftp/distribution/software/rhmapper/)。

  6. PerlはWebCGIスクリプトに適した言語であり、データを公開するためにWebを利用するラボが増えるにつれて重要性が増しています。

于 2010-03-26T22:49:03.760 に答える
16

本当の答えは、おそらくあなたが思っているほど Perl とは関係ありません。起こっていることの多くは、歴史の偶然です。当時、Perl の人気が高く、Java の人気が高まり、Python に注目する人はあまり多くなく、Ruby はまだ始まったばかりでした。

仕事を終わらせる必要のある人々は Perl を使用し、Perl でいくつかのライブラリを作成し、他の人々はそれらのライブラリを使用し始めました。人々は、自分にとって適度に役立つものを使い始めると、切り替えない傾向があります (経済学者はそれらを「切り替えコスト」と呼んでいます)。そこから、他の多くの人が使用しているため、さらに多くの人が使用し始めます.

同じ進化は今日起こらないかもしれません。Perl、Python、および Ruby はすべて完全に適切であり、タスクを実行できると言えます。mobrule が Lincoln Stein から引用したすべてのことは、今日の 3 つのいずれにも当てはまる可能性があります。今日、誰もがゼロから始めなければならないとしたら、これらの言語のいずれかが、誰もが使用する言語になる可能性があります。

私自身の顧客ベース (バイオテクノロジーの非常に小規模で代表的でないサンプル) から、多くの生物学的なもののプログラミングを推し進めている人々は、少なくとも科学者をサポートしていたパートタイムのシステム管理者であるように思われることに気付きました。科学者たちは科学を心配し、簡単なプログラミングを行いましたが、IT サポート担当者は科学以外の部分について多くの重労働を行っていました。Perl は、インターネットのダクトテープであるため、sysadmin ツールとして非常に適切に位置付けられています。

于 2010-03-27T00:14:32.667 に答える
12

おそらく、Perlは文字列の操作に長けており、遺伝学の多くの研究には、非常に長い「ACTGCATG...」文字列の操作が含まれているためです。推測するだけ...

于 2010-03-26T22:35:24.853 に答える
9

私は、社会科学の研究で質的および量的データを扱うために多くの Perl を使用しています。物事を (主にテキストを使って) 素早く終わらせること、CPAN でライブラリーを見つけること (中央の便利な場所)、そして一般的に物事を素早く成し遂げることに関しては、これを超えることはできません。

Perl は接着剤としても優れているため、機器の記録がいくつかあり、それらをデータ分析ルーチンに接着する必要がある場合は、Perl が最適です。

于 2010-03-26T23:09:30.267 に答える
8

Perl はバイオインフォマティクスに最適な言語のようです。O'Reilly のタイトルでさえ、まさにこの主題に関するものです: Beginning Perl for Bioinformatics .

于 2010-03-26T22:35:19.217 に答える
5

Perlはテキストの処理に関して非常に強力であり、ほとんどすべてのLinux/Unixディストリビューションに存在します。バイオインフォマティクスでは、シーケンスデータはPerlで非常に簡単に操作できるだけでなく、ほとんどのバイオインフォマティクスアルゴリズムはある種のテキスト結果を出力します。

次に、EBIのような最大のバイオインフォマティクスセンターには、 BioPerlプロジェクトを率いていたその偉大な人物であるEwanBirneyがいました。そのライブラリには、あらゆる種類の一般的なバイオインフォマティクスアルゴリズムの結果、および主要なシーケンスデータベースで使用されるさまざまなシーケンスフォーマットを操作するためのパーサーが多数あります。

しかし、今日では、バイオインフォマティクス技術者が使用する言語はPerlだけではありません。シーケンスデータとともに、ラボはますます異なる種類のデータタイプを生成し、他の言語がこれらの分野でより頻繁に使用されます。

たとえば、R統計プログラミング言語は、マイクロアレイおよびqPCRデータ(とりわけ)の統計分析に広く使用されています。繰り返しますが、なぜ私たちはそれをそんなに使うのですか?それはその種のデータのための素晴らしいライブラリを持っているからです(バイオコンダクタープロジェクトを参照)。

現在、Web開発に関して言えば、CGIは今日の最先端技術ではありませんが、Perlを知っている人はそれに固執するかもしれません。私の会社ではもう使われていませんが...

これがお役に立てば幸いです。

于 2010-03-27T13:35:03.163 に答える
3

Perlは基本的に非常に短い開発サイクルを強制します。それは物事を成し遂げる種類の開発です。

Perlの欠点を上回るだけで十分です。

于 2010-03-26T22:40:40.433 に答える
2

バイオインフォマティクスは主にテキストの解析を扱い、Perl は文字列の解析用に作成されているため、この仕事に最適なプログラミング言語です。O'Reilly の本 (Beginning Perl for Bioinformatics) が述べているように、「データ内のパターンを検出する Perl の高度に発達した能力により、Perl は生物学的データ分析で最も人気のある言語の 1 つになりました。」

于 2010-04-07T08:36:10.353 に答える
1

これはかなり包括的な応答のようです。ただし、おそらく 1 つ欠けているのは、ほとんどの生物学者は (おそらく最近まで) プログラミングの経験がまったくないということです。Perl の学習曲線は、コンパイル済み言語 (C や Java など) よりもはるかに短いですが、テキスト処理に関しては、Perl は依然として多くの機能を提供しています。では、実行に時間がかかる場合はどうなるでしょうか。生物学者は間違いなくそれを処理できます。実験室の実験は通常 1 時間以上かかるため、データ処理が完了するまで数分余分に待っても実験が終了することはありません。

ここで私が話しているのは、必要に迫られてプログラムを作成する生物学者についてであることに注意してください。Perl を使用している非常に熟練したプログラマーやコンピューター サイエンティストもいると理解していますが、これらのコメントは彼らには当てはまらない可能性があります。

于 2010-09-27T21:33:12.430 に答える
1

人々はDBIを見逃していました。これは、バイオインフォマティクス データベースの操作を非常に簡単にする Perl の抽象データベース インターフェイスです。

ワンライナーアングルもあります。Perl では、1 行でデータを再フォーマットする何かを記述し、-peフラグを使用してそれをコマンド ラインに埋め込むことができます。AWKsedを使用していた多くの人々が Perl に移行しました。完全なプログラムであっても、ファイル I/O は信じられないほど簡単かつ迅速に記述でき、テキスト変換は周囲のエンジニアリング言語と比較して高いレベルで表現力があります。1 回限りのテキスト変換に Java や Python を使用する人は、別の言語を学ぶのが面倒です。Java は特に、 JVM実装とその I/O パフォーマンスに大きく依存しています。

少なくとも、Perl があらゆる場所でどれほど高速または低速であるかはわかっていますが、CI/O よりもわずかに低速です。grepcutsed、またはAWKを学習しないでください。Perl を使って大規模なプログラムを作成しない場合でも、コマンド ライン ツールとして Perl を学ぶだけです。CGI に関しては、Perl にはCatalystMojoliciousなどのより優れた Web フレームワークがたくさんありますが、マインドシェアは間違いなく CGI とバイオインフォマティクスがインターネットの初期のヘビー ユーザーの 1 つであることに起因しています。

于 2013-01-25T09:33:35.677 に答える
0

Perl は、他の言語に比べて習得が非常に簡単です。ビッグデータ化する生体データを存分に活用できます。ビッグデータを操作でき、操作データのキュレーションやあらゆる種類の DNA プログラミングに適しています。生物学の自動化は、Perl、Python、Rubyなどの言語により容易になりました。生物学を知っていても、他のプログラミング言語でそれをプログラミングする方法を知らない人にとっては非常に簡単です。

于 2014-06-02T10:26:53.367 に答える