Mascotに独自のAI/MLアダプターを追加する
Mascot Server 3.0以降では、ペプチド配列から保持時間とスペクトル類似性を予測するためのアルゴリズム「MS2Rescore」が標準で搭載されています。では、これとは異なるAI/MLシステムで予測を行いたい場合はどうすればよいでしょうか?Mascot Serverには、それを実現するためのアプリケーションプログラミングインターフェース(API)が用意されています。以下のチュートリアルにおいて、独自のアダプターを作成する際の方法と、そのとっかかりとして利用できるPythonスクリプトについてご紹介します。
MLアダプターとは何か
プロテオミクスにおける、機械学習アルゴリズムによる各種予測はまだまだ新しい分野であり、各MLシステムが異なる設定、入力/出力形式、実行要件を持っています。今回ご紹介するMLアダプターとは、Mascot ServerとそれらのAI/MLシステムの間を繋ぐため、必要な前処理やデータ変換などを行うコマンドラインアプリケーションです。この仕組みを導入することで、Mascot Server側に大きな変更を加えることなく、新たなプログラムとの統合を可能にします。単に新しいアダプターを追加するだけで実現できます。
MS2Rescoreとの統合はこのMLアダプターを使用して実装されています。ただし、アダプターは必ずしもAI/ML予測システムとの統合である必要はありません。PSMデータから直接数値データを計算したり、Pythonモジュールや外部実行可能ファイルを実行したり、データベースに接続したり、HTTPを使用してPSMデータを送信し、サービスから予測結果を受け取ったりするために利用する事も可能です。
MLアダプターのプロトコルとデータ形式の詳細については、インストール&セットアップマニュアルの13章に記述されています。マニュアルは、Mascotソフトウェアのホーム画面からダウンロードできます。
アダプターの例
アダプターは、Python、Perl、Java、C#、C++で記述できます。このチュートリアルでは、以下の手順を実行するexample_ML_adapter.zip を開発しました:
- Mascot結果ファイル(--resfile)をMascot Parserを使用して開く。
- クエリーリストファイル(--query_list)を読み取り、解析する。失敗した場合は終了。
- クエリーリストを反復処理し、各PSMのペプチド長を計算する。
- クエリリストを再度反復処理し、計算された値を出力ファイル(--output)に出力する。.
アダプターがアクティブ化されると、Mascotは検索結果をアダプターに渡し、アダプターが返す予測されたfeature(例:peptide length)をPercolatorのfeatureセットに利用させます。Mascotのcore featureセットにはすでにpeptideLengthというfeatureがあるのですが、これはアダプターから取得されたfeatureとは衝突しません。これは、Mascotがアダプターの名前を接頭辞として対応feature名に付けるためです。
アダプターはいかなる計算結果(または予測されたfeatureの値)でもMASCOT側に渡すことができます。今回ご紹介するアダプターの例では、構造を単純化させるため、1つのfeatureのみを返しています。
スクリプトの実行
MASCOTがアダプターをどのように利用しているか、その動作が気になる方は、コマンドラインから実際に実行してみてください:
- Python 3.6以降がインストールされていない場合はインストールしてください。このチュートリアルでは、PythonがC:\Python\Python311にインストールされているものと仮定しています。
- example_ML_adapter.zipをC:\inetpub\mascot\bin\ML_adapters\customにダウンロードしてコピーしてください(Mascot ServerがC:\inetpub\mascotにインストールされている場合)。
- Mascot Parser を当社のウェブサイトからダウンロードします。適切な一時ディレクトリに解凍します。
- python36_or_later ディレクトリから msparser.py と _msparser.pyd を、example_ML_adapter.py と隣接する C:\inetpub\mascot\bin\ML_adapters\custom ディレクトリにコピーします。
- スクリプトを実行してすべてのコンポーネントが正しく配置されていることを確認してください。
C: cd \inetpub\mascot\bin C:\python\python311\python.exe ML_adapters\custom\example_ML_adapter.py --help
スクリプトは mascot\bin ディレクトリから実行する必要があります。これは mascot\config\mascot.dat へのアクセスが必要だからです。ただし、スクリプト自体は mascot\bin に保存する必要はありません。スクリプトの置き場所としてのお勧めはbin\ML_adapters\custom ディレクトリです。
上記のステップは弊社にて Windows でテストされています。Linux での手順はほぼ同じです。Linux のディストリビューションに付属の Python バージョンを使用し、ファイルパスを適宜変更してお試しください。
ユーザーインターフェースに ML アダプターを追加する
Mascot にはMLアダプター利用における中心的な設定ファイル mascot\config\ML_adapters.toml が準備されています。このファイルに、アダプター名、インストール先、必要なパラメーターを定義する必要があります。Mascot は ML_adapters.toml を使用して、検索フォームのドロップダウンメニューとProtein Family Summary レポート画面にアダプターを表示させることができます。
Installation & Setupマニュアルの13章に記載された手順に従って、新しいアダプターを追加してください。ここでは、簡単にその内容をご紹介します。
[example_ML_adapter] interpreter = "C:/python/python311/python.exe" program = "C:/inetpub/mascot/ML_adapters/custom/example_ML_adapter.py" visible_in_user_interface = true [[example_ML_adapter.parameters]] name = "enabled" title = "Example: example_ML_adapter.py" values = [ 1 ]
この設定は、スクリプトが C:\inetpub\mascot\ML_adapters\custom に保存されていることを前提としています。_msparser.pyd と msparser.py も同じディレクトリにコピーしてください。パラメーターの値は今回の例であるスクリプト内では使用されていませんが、ユーザーインターフェースでアダプターを有効にするためには少なくとも1つのパラメーターを定義する必要があります。
お手元のMascotサーバーでDecoyデータベースでも検索を行った結果を開きます。その画面に、新しい ML アダプターのオプションが表示されるはずです:
「1」を選択し、”apply”をクリックします。正常に動作した場合、機械学習、Percolator、結果のキャッシュの進行状況バーが表示されます
機械学習品質レポートで、計算されたfeatureを評価する
Protein Family Summaryレポートで表示されているリンクをクリックして、機械学習品質レポートを開きます
「Rescoring Features」タブを開きます。このタブには、利用した各featureの、 Q値、ECDF、AUCを示すグラフが表示されます。AUCが大きいほど、該当featureが正解と不正解(target and decoy)のPSMを区別する能力が高いことを示します。
Mascotは、MLアダプターで計算されたfeatureとは別に、core featureをグループ化します。
peptideLengthはMascotで計算されたcore featuresです。他のアダプターで同じ特徴名を使用しても問題ありません(重複することはありません)。Mascotはcore featuresと組み合わせる前に、feature名にアダプター名を接頭辞として付加するためです。この場合、core featuresのpeptideLengthはexample_ML_adapter.pyで計算されたpeptideLengthと同一であり、AUCも同一になります。
より複雑なアダプターを作成するために必要なこと
今回ご紹介したスクリプト例は、ご自身で独自のAI/MLアダプターを作成するうえでまず参考にしていただくことを想定した出発点です。アダプターはMascot Parserがサポートするプログラミング言語のいずれかで記述する必要があります:Python、Perl、Java、C#、またはC++。Parserのドキュメントは詳細ですが、ほとんどのアダプターでは、結果ファイルを開き、ペプチドマッチング内容を読み込み、PSMのプロパティ情報(ms_peptideメソッド)を読み取るだけで十分です。Mascotの結果ファイルには、ピークリストと完全なプレカーサー情報も含まれており、ms_inputquery を使用してアクセスすることが可能です。
Keywords: machine learning, sysadmin, tutorial