コーディングアシスタントによるデータ処理とレポート作成の自動化
大規模言語モデル(LLM)コーディングアシスタントの登場により、ソフトウェアや新しいレポートの開発がかつてないほど容易になりました。これに対応するべく私たちも、LLM が利用できるコーディングスキルの提供を始めました (訳者注: ここでいう「コーディングスキル」とは、LLMに特定の開発作業を行わせるための追加機能・設定群並びにそれらの文書を指します) 。これらを利用することで、コーディング支援AIが Mascot Server と連携し、タスクの自動化やカスタムレポートの作成を行うことができます。LLMには「ハルシネーション(hallucinate幻覚)」を起こす事があることは皆様ご存じのとおりですが、このコーディングスキルと実験解析の適切な計画を組み合わせることで、多くの問題を回避することができるでしょう。
Mascot Serverの検索アルゴリズム、Distiller定量解析、Daemon自動化は、LLMが登場する以前から開発されてきたロングセラー製品ですが、それぞれの製品はスクリプトによる操作が可能なように設計されています。Mascot Serverとの連携に使用するソフトウェアライブラリはMascot Parserであり、2002年に最初にリリースされ、Mascot Serverのバージョンに合わせてアップデートされています。Mascot Parserはユーザー独自のパイプラインやプロジェクトで利用できるよう、無償で提供されています。
DDA-PASEFファイルはMascot Distillerで処理可能であり、Thunder-DDA-PASEFデータも例外ではありません。検索空間が広すぎて本来は有意なマッチングが得られないHLA+非特異的な切断データの解析でも、MS2PIPおよびPercolatorを用いた機械学習による再スコアリング法を適用することでその一部を同定する事が可能となります。
Mascot Parserを使用して独自のデータ解析パイプラインを作成する方法については既に文書化しています(1、2)が、実際に作成するためにはプログラミング言語に対する相当な習熟度が必要であることが指摘されてきました。しかし現在では、Mascot Parserのダウンロードに含まれるドキュメントやサンプルコードを参照させることで、LLMにMascot Parserの使用方法を学習させることが可能です。当社のGitHubリポジトリからダウンロードできるサンプルスキルは、様々なLLMコーディングエージェントと併用でき、作成プロセスを迅速化します。
このスキルを習得する事で、LLMを使用してMascot Serverとやり取りできるようになります。単純な自動化タスクから、あらゆるファイルからの結果の複雑な抽出や統合に至るまで、LLMでプログラム可能なことはすべて実現可能です。さらに重要な点として、データ処理中に各種の動作を起動させる仕組み「フック」と呼ばれる機能が複数用意されています。
Mascot Serverの検索後フック
Mascot Serverのmascot.dat設定ファイルには、Mascot Server自体でプロセスを実行するために使用できるフックが準備されています。これは検索がどのような方法で送信されたかとは無関係に動作し、すべての検索で実行されます。この仕組みはExecAfterSearchと呼ばれます。実行時のパラメーターは%resultfilepathと%resultfilenameの2つしか提供されませんが、設定ファイル内に追加の固定パラメーターを含めることが可能です。この機能の優れた利用例として、次のようなコマンドを用いて、すべての検索後にQCレポートを実行することをご紹介します。
ExecAfterSearch_0 waitfor:0;logging:3, Running QC, ../bin/my_qc_script.exe %resultfilepath
Mascot Daemonの External Processes(外部プロセス)
フックの主だったものはMascot Daemon上 にあります。使用できるフックは4つです。
- Before starting task
- Before each Search
- After each search
- After completing task
各フックでアクションを選択することができます。ほとんどの場合、特に検索前にピークリストの前処理を行う場合などで、“Wait for completion(計算終了を待つ)”を選択することになるのが多いと思います。必要に応じて“Halt on error(エラーで停止)” で処理を停止したり、そのエラーをいったん無視して次の処理をしたりと選ぶことができます。
Before starting task
このフックは、実際の作業が行われる前に実行されるため、あまり活用する機会がありません。一つの活用例として、タスクが開始されたことを知らせるメッセージを表示することが挙げられます。これは、前のタスクが終わり次第該当タスクを実行する、“start on completion of(完了後に開始)”を実施している場合に役立ちます。また、タスク番号や開始日時を記録するために、データベースやその他の進捗管理ソフトウェアへ情報を登録する用途にも利用できます。
Before each Search
いよいよ本題です!これは検索が始まる前、最初のピーク抽出後に実施されるステップです。つまり、各検索の前にピークリストをデータ処理する機会が得られることになります。優れた利用例として、検索前にMGFファイルを処理し、補完イオン(complementary ions)をプリカーサー質量の近くから従来のレポーターイオン領域へと移動させるTMTprotm 補完イオンスクリプトが挙げられます。
After each search
これは、検索完了後に検索結果を処理するための、従来から一般的に用いられてきた開始ポイントです。以前は、検索完了後の結果ファイルの出力処理やデータ処理、レポート作成を実行する用途で使われていました。
After completing task
これは「各検索後(After each search)」フックと同様に、処理対象として明確な検索結果出力が得られる仕組みです。個々のファイルを処理することもできますが、真価が発揮されるのは、そのタスクに含まれる検索結果全体をバッチとして扱う場合です。このフックには結果ファイルの保存場所が渡されるため、プログラム側でその場所にあるファイル名を読み取り、バッチとしてまとめることができます。バッチ処理を行うことで、データセット全体から統合結果を作成したり、タスク完了の通知メッセージを送信したりすることが可能になります。このフックを使用した例として、Mascot Daemon Export Extenderがあります。これはMascot Distillerの定量レポートを自動エクスポートでき、さらに任意のカスタムスクリプトを実行するよう拡張可能です。
実行時に置換可能なタグ(パラメーター)
Daemonでこれらのフックを使用する際、実行時に置換される17個のパラメーターがあります。詳細な説明は、Mascot Daemonのヘルプ(F1キーを押す)の「目次」→「Reference」→「External Processes Dialog」セクションに記載されています。簡単に言えば、コマンドライン文字列には以下のタグを含めることができ、これらは実行時に置換されます。
|
Tag |
Availability |
Description |
|
<taskname> |
All hooks |
タスク名 |
|
<parameters> |
All hooks |
パラメーターファイル名(パス名) |
|
<localhost> |
All hooks |
Windows のコンピューター名 |
|
<localuser> |
All hooks |
Windows ユーザーのログイン名 |
|
<task_directory> |
All hooks |
Daemonのキャッシュディレクトリのパス名 |
|
<mascot_user_id> |
All hooks * |
Mascot security ユーザーID |
|
<mascot_user_name> |
All hooks * |
Mascot security user name (e.g. jdoe) |
|
<mascot_user_full_name> |
All hooks * |
Mascot security user full name (e.g. John Doe) |
|
<mascot_user_email> |
All hooks * |
Mascot security user eメール |
|
<datafilename> |
Before / After each search |
データファイル名 |
|
<datafilepath> |
Before / After each search |
データファイルパス名 |
|
<cachedpeaklist> |
Before / After each search |
データインポートフィルターによって保存されたピークリストへのパス(存在する場合) |
|
<samplenumber> |
Before / After each search |
サンプル番号(存在する場合) |
|
<resulturl> |
After each search のみ |
Mascot 結果への完全な URL(例:http://localhost/mascot/cgi/master_results.pl?file=../data/20140123/F235567.dat) |
|
<resultfilename> |
After each search のみ |
結果ファイル名 (e.g. F235567.dat) |
|
<resultfilepath> |
After each search のみ |
結果ファイルの相対パス (e.g. ../data/20140123/F235567.dat) |
|
<exportfilepath> |
After each search のみ |
出力ファイルのパス名 (存在する場合) |
mascot_userではじまる*マークがついたタグは、Mascot Serverのセキュリティ機能が有効になっている場合にのみ設定されます。
カスタムレポートの作成
これで、どこでカスタムスクリプトを呼び出せるかは分かりました。次の問題は、どのようにスクリプトを呼び出し、自分の望む処理を実現するかです。今回の例では、結果の一部を可視化するレポートを作成します。Pythonスクリプト言語には、プロットや可視化を作成するための便利なライブラリがいくつかあります。Mascot Parserと、AIコーディングエージェントにその使い方を教えるスキルをダウンロードしてください。ここではAnthropic の Claude AI エージェントを使いますが、ChatGPT、Copilot、Gemini、Codex、Cursor、Replit(あるいはお好みのツール)でも同様に利用できます。保持時間(retention time)対 m/z、および同定率を示す2次元プロットを作成したいと思います。単純な2次元プロットでも構いませんが、少し見栄えを良くしつつ、なおかつ情報性も保てるようにしたいと思いました。
私はまず、作りたいものの計画を立て、プロットの種類、軸、スタイル、カラーパレットを列挙しました。そしてエージェントに /mascot-parser スキルを使うよう指示し、不足部分を補いながら計画を洗練するよう依頼しました。するとエージェントはスクリプトを書き進め、いくつかのテストも実行しました。その後、私はプロット配置の変更や、hexbin プロット用の別のカラーパレット指定など、微調整を依頼しました。最終的に、Mascot Daemon で利用することも、コマンドラインから直接実行することも可能なスクリプトが完成しました。私の入力内容、Claude の返答、および、より少ない試行回数で同様のものを構築できる統合プロンプトを示した対話要約も用意しました。また、サンプルQCスクリプトは当社のGitHubリポジトリからも入手可能です。
PRIDEプロジェクトPXD028735から取得したLFQ standardのDDA検索結果を使用し、ファイルLFQ_Orbitrap_DDA_Condition_A_Sample_Alpha_02.rawを用いたテストを実施しました。external processと「After Each Search」フックを使用し、以下のスクリプトコマンドを入力しました:
C:\Path_to_python\python.exe "C:\scripts\mascot_qc_report.py" "<resulturl>" "<task_directory>"
検索が完了すると、Daemonがスクリプトを呼び出し、レビューや利用にすぐ使える単一の画像としてプロットを生成しました。
左上:RTごとの同定数ヒストグラム -- 保持時間全体にわたる同定密度を示します。約10〜130分の範囲に明確な有効ウィンドウがあり、50〜100分付近でピークを示しています。
左中段:TICヒートマップストリップ -- 総イオン電流(TIC)をコンパクトな1次元ゲル状に表現したもので、縦方向のスペースをあまり取らずにシグナル密度を示すことができます。
左下:RT対m/z 散布図 -- 点はPercolatorのスコア(青→緑→赤のカラーマップ)で色分けされています。灰色の点は未同定のスキャンですが、同定された点がその上にプロットされているため見分けにくくなっています。なお同定率は約50%でした。
右パネル:TICヒートマップストリップ -- 総イオン電流(TIC)をコンパクトな1次元ゲル状に表現したもので、縦方向のスペースをあまり取らずにシグナル密度を示すことができます。
これらの例以外にも、さらに多くの有用な分析が可能です。完全な品質管理(QC)分析スイートへと拡張したり、メタプロテオミクス解析における可変修飾や生物種組成の確認など、より専門的なレポートを作成することも可能です。これらのアイデアについては、また後日ご紹介します。
Mascot Serverの検索結果は信頼性が高く、データを最大限に活用するための分析手法やツールを提供しています。実験やプロジェクトごとに異なる形式のレポートが必要となる場合がありますが、LLMエージェントを活用すれば、理想的なレポートを作成することが可能になります。
Mascot関連環境向けに、皆様が作成された、あるいは今後実現を希望されるレポート、ツール、パイプラインがございましたら、ぜひお知らせください。


