Perlで学ぶ分子生物学・バイオインフォマティクス入門 高速処理対応

Perlで学ぶ分子生物学・バイオインフォマティクス入門です。高速処理に対応します。

PerlにおけるBio Perlの課題はパフォーマンス

PerlにおけるBio Perlの課題は、Perlのパフォーマンスです。Perlは、文字列処理が得意な反面、ループやバイト列処理が遅いという問題があります。正規表現で、検索や置換をするのは、C言語の世界でできるので、速いのですが、ループでバイト処理が必要な局面になると、途端にパフォーマンスに影響を及ぼします。

Perlで書かれたBio Perlのライブラリは、Perl自体のパフォーマンスの影響を、そのまま受けます。

PerlよりもPythonのnumpyを基盤にしたライブラリが好まれる理由

Pythonのnumpyは、集合演算ライブラリです。集合演算に関しては、C/C++で書かれているので、パフォーマンスが速いです。またライブラリなので、関数として多数の機能が提供されます。numpyは、集合演算ライブラリのデファクトスタンダードです。

また結果をグラフ化して、視覚化するライブラリもnumpyの上に構成されています。

pythonのnumpyに課題はないのか?

pythonのnumpyに課題はないのでしょうか? 実際は、課題は存在します。

それは、個別の要素の計算のパフォーマンスです。集合演算はC/C++の世界で行われる一方、個別の要素の計算はpythonの世界で行わなければならないからです。

この課題が存在するための、NumbaやCythonを使いたいという動機が発生します。

すべてを集合演算ですべきという理想がある一方で、現実は、個別の要素の数値計算を速くしたいという要望があります。

私たちの目標はなにか?

私たちの目標は、Perlに集合演算を高速に行うためのデータ構造を追加し、このデータ構造を操作できるPerlに極めて近いプログラミング言語を実装し、C言語のパフォーマンスを生み出すことです。また、C言語で書いた処理を、簡単に呼び出せることです。

そして、この上に、Perlから呼び出せCPANにリリース可能な、バイオインフォマティクスのライブラリを構成することです。

この目標を意識しつつ、バイオインフォマティクス入門を書いていきます。

なお、Perlゼミは、ソフトウェア・プログラミングのプロフェッショナルではありますが、バイオインフォマティクスのプロフェッショナルではありません。

ネット上の、バイオインフォマティクスのサンプルを、再構成する形で進めて参ります。

コードで表現する内容が古い、間違っているなど、内容に関するお問い合わせは、メール(kimoto.yuki@gmail.com)まで。

ご専門の方からのご指摘歓迎です。

塩基配列の基本操作

塩基配列の基本操作を、PerlとSPVMの両方で記述していきます。SPVMの記述を行えるようになると、プリコンパイルを使って、C言語に変換した高速なコードを実行できるようになります。