皆さん、こんにちは。私とエリオットを代表して、ご挨拶申し上げます。今回のプレゼンテーションでは、イルミナにおけるJMPのデータ処理自動化の活用方法をご紹介します。まずは、イルミナの製品開発パイプライン、イルミナの概要、そして製品開発プロセスについてご紹介します。次に、自動化されたデータ処理がどのようにこのパイプラインに位置付けられているか、そして典型的なワークフローの例をご紹介し、最後に重要なメッセージをお伝えします。
イルミナは、ゲノミクス研究のための機器を開発・製造する企業として広く知られています。現在では、オミクス、ゲノミクス、トランスクリプトミクス、プロテオミクスなど、様々な分野に対応するソリューションとプラットフォームを提供するプロバイダーとして位置づけられています。当社の主力製品であるハイスループット機器は、2023年に発売したNovaSeq Xシリーズです。NovaSeq Xに搭載されている主要技術は、XLEAPテクノロジーです。
XLEAP 技術の重要な特徴の 1 つは、当社の以前の高スループット機器の反復で高スループット機器を実行するために必要だった試薬量の種類に関して、この技術により、パッケージと、顧客側での管理および保管の労力の両方で約 90% の削減を達成できたことです。
これが可能になったのは、試薬をドライアイスや氷で包んで輸送しないため、試薬は1つの箱にまとめて輸送され、お客様側で包装材、ドライアイスの包装材、その他類似の包装材を廃棄・管理する手間がかからないからです。その箱の中には、1回の測定で約300サイクル、250億回の測定が可能なこのタイプのフローセルが入っています。
これらの装置を開発するためには、約5,000個のフローセルを動作させる必要があったと推定しています。動作させるたびに、約20種類の試薬を含むすべての試薬が入ったカートリッジを装置に装填する必要があります。これらの試薬は、分析アッセイとシーケンシングによって開発されました。ここで、自動データ処理が役立ちます。
ここでは、分析アッセイを用いた試薬開発の例を示しました。ご存知の通り、プレートベースのアッセイでは、科学者は実験を行い、データを抽出し、データ整理、データ処理、分析を行い、クリック一つ一つ、コピー&ペーストを繰り返しながら、レポートを完成させます。完成した時点で結論を導き出し、次の実験へと進むことができます。同じ手順を何度も繰り返すか、JavaScriptの機能を活用するのも良いでしょう。
データ抽出、データ削減、データ処理を自動化するスクリプトを生成し、反復的な実験においてこの種の分析を反復的に実行できるようにします。これには明らかに複数のメリットがあります。まず、実験者の時間を節約できます。次に、複数の実験にわたってこれらの分析を反復的に実行できるため、製品開発パイプラインの加速につながります。さらに、オペレーターによるクリックツークリックやコピー&ペーストといった操作が不要になるため、エラーが減少します。エラーが減少するということは、手順を標準化できることを意味します。
標準化は、再現性と堅牢性を備えたプロセスを実現するための柱です。スクリプト作成の経験があまりない研究者でも、JMPのワークフロービルダー機能やJMPコミュニティで利用可能な情報を活用すれば、標準化を実現できます。最低限のコーディング経験があれば十分です。
GSRの知識をほとんど必要とせずに、ワークフロービルダーを使用して再利用可能な自動データ処理を構築する方法の例を見てみましょう。LUNARでは新しいシーケンシング試薬を開発するのが一般的であり、その活性を測定するためのテストを開発する必要があることがよくあります。例えば、暗い基質を用意し、試薬をテストして蛍光生成物に変換し、それをプレートリーダーにセットして、この蛍光生成物の反応の経時変化を時間の関数として測定するというテストがあるとします。
このような反応は典型的には一次反応速度論に従うため、生成物Pの生成は、時間の関数と2つの重要なパラメータを持つこの式で記述できます。Pₘₐₓは、時間経過の終わりに得られる最大強度を表し、速度kも存在します。
この反応速度こそが、私たちが本当に関心のあるところです。どの試薬が最も高い反応速度を示すかを調べています。通常、プレートリーダーからソフトウェアの生データファイルを取得します。多くの場合、これはExcelファイルで、JMPを使ってデータ処理を自動化したいと考えています。このExcelデータをインポートし、レスポンスからバックグラウンド強度データを差し引く必要があります。
指数関数近似を行って反応速度kを求め、この速度データをJMPテーブルに抽出して結果のサマリーを作成します。JMPでその方法を説明します。まずはExcelファイルを開いてみましょう。これはプレートリーダーソフトウェアから得られる典型的な生データ形式のファイルです。ご覧のとおり、ソフトウェアによって実験の詳細情報がいくつか入力されています。
プレートレイアウトのグラフは作成できましたが、21行目からようやく実験データを取得できます。これを開いてJMPでデータ処理し、分かりやすい要約を作成できるようにしたいのです。JSLでのコードの書き方やスクリプトの入手方法がわからない場合は、ワークフロービルダーと呼ばれるツールを使うことができます。今回の例では、JMP 18のベーシックバージョンを使用しています。JMPプロジェクト内で例を実行することで、分かりやすく整理して見やすくしていますが、これらのタスクはJMPのスタンダードバージョンでも実行できます。
まず最初に「新規」から「ワークフロー」を選択します。これはワークフロープラットフォームです。重要なのは、記録を開始する前に、この赤いボタンをクリックすることです。すると、実行したすべてのステップがステップとして保存され、対応するスクリプトが自動的に作成されます。最後に、これらのステップをつなぎ合わせて、使用可能なスクリプトを作成できます。
Excelファイルをインポートしたいので、これを開きます。先ほども示したように、データは1行目から始まっていません。ここでデータの開始位置と終了位置を指定してインポートできます。「インポート」をクリックすると、そのステップがワークフロービルダータブのワークフローステップに記録されます。データは次のようになります。時間、様々なサンプル、そして背景データが表示されています。
ビットを実行するには、新しい列を追加する必要があります。これを予測用のPredと呼びます。スライドに示した式を使って、時間の関数としてどのようになるかを予測します。ここに2つの変数があります。ここでは、いくつかの初期値とフィッティングの実行を指定しました。
ゴルフや探索などの作業を一時停止したい場合は、赤いボタンをもう一度クリックするだけで、すぐに再開できます。ここで行った操作はステップとして追加されることはありません。例えば、現在のデータがどのようになっているか確認してみましょう。グラフビルダーにアクセスしてデータを再インポートし、現在の生の形式でどのようになっているかを確認してみましょう。
背景が約1000RFUユニットで、予測応答がゼロから始まっていることがわかります。サンプルを正規化し、背景を除去する必要があることがわかります。まずはもう少し処理が必要です。これらのボタンは非常に便利です。最初に戻りたい場合は、この「リセット」ボタンをクリックしてください。これで最初の状態に戻り、「再生」をクリックすると、最後に記録を停止した時点まで再生できます。
次のステップを記録する前に、もう一度「記録」ボタンをクリックしてください。バックグラウンドを減算する必要があります。ここでは、サンプル列を積み重ねるのが最も良い方法です。これらを積み重ねた新しいテーブルを作成し、データ列をRFU(蛍光単位)とします。列のラベルは「sample」にします。
ここで必要なのは、バックグラウンド信号とサンプル信号の差を求めることです。最も簡単な方法は、これらの2つの列をハイライト表示することです。右クリックすると、新しい数式列を作成できます。「結合」で、これらの2つの列の差を求めることができます。2つのオプションがあります。差は逆順で表示されます。どちらを選択すべきかは試行錯誤が必要でしょう。もし今間違った方を選択すると、負の値になります。ご覧のとおり、サンプルからバックグラウンド信号を適切に差し引くことができました。
これで、フィッティングを実行して速度定数を算出できるようになりました。「分析」→「特殊モデリング」に進みます。非線形モデルをフィッティングし、列の予測式を「X予測式」に追加します。ご覧のとおり、フィッティングモデルの列属性として追加した式が表示されています。ベースラインから差し引いたサンプルデータが応答データとなります。複数のサンプルがあるため、サンプルごとにフィッティングする必要があります。
「OK」をクリックすると、非線形近似プラットフォームが開きます。各サンプルに対して異なる近似値が用意されていることがわかります。太くて黒い線は実験データです。細い線は予測式で、これが出発点となります。ここで2つの変数を繰り返し変更し、近似値が得られるまで調整していきます。JMPの他のプラットフォームと同様に、複数の処理を同時に実行したい場合は、Ctrlキーを押しながら「実行」をクリックすると、各サンプルの予測式を用いて応答を反復的に近似します。
細い線が太い線に重ね合わされ、フィッティングが収束しているのがわかります。これがPₘₐₓ変数とk変数の推定値です。次に、これらをサマリーテーブルにまとめます。右クリックして「結合データテーブルの作成」を選択すると、これらのフィッティングからすべての変数データが抽出されます。私たちが関心を持っているのは速度定数だけなので、データ処理の一環として、これを少し整理しておきます。
Pₘₐₓに一致するすべてのセルを選択する必要があります。Pₘₐₓには興味がないので、これらの行は削除できます。繰り返しますが、この表の列は必ずしも必要ではありませんし、パラメータがkであることは分かっているので、これも閉じてクリーンアップできます。
推定値、速度定数、上限値と下限値、そして信頼区間の上限と下限ができました。見やすくするために、推定値の順序を変更して、下限値と上限値の中間に来るようにすると、見やすい要約表が完成します。次に、他の中間表は不要になったので削除し、保存せずに閉じます。これらの手順はすべてワークフロービルダーに記録でき、これが最終的な出力です。
これで記録を停止できます。あとは、すべてが正しく動作するか確認するだけです。各ステップをステップ実行し、期待通りに動作し、エラーがないことを確認します。正常に実行されるたびに緑色のチェックマークが表示されますが、ここで問題が発生しています。これは、結合されたデータテーブルを作成するときによくあることです。「Untitled」という新しいテーブルが作成され、そこに数字が設定されます。これを繰り返すたびに、数字が増えていきます。このスクリプトは、ワークフロービルダーを実行した際に指定した特定の数字を探しています。
Untitled 7 が見つからないため、どちらを使用するか尋ねられています。これは、私たちが理解している問題を示しています。スクリプトを複数回実行させるには、少し手作業が必要です。非常に簡単なコーディングで、この問題を解決できます。各ステップでスクリプトを開くことができます。正常に実行された最後のステップに戻り、このデータテーブルを変数として定義します。つまり、Untitled の数値に頼らないようにするためです。これを dt と呼びます。
dt は Current Data Table と等しいとします。次のステップに進む必要があります。untitled table を呼び出している箇所はすべて、新しい変数に置き換えます。この処理は何度か発生する可能性がありますので、untitled table を dt に変更するだけです。これらをすべて記述したら、もう一度テストして、動作するかどうかを確認します。これは最もエレガントな方法ではないかもしれませんが、コードの書き方を学ぶための独自の自動スクリプトを構築できます。
これをもう一度実行したら、今度は成功するでしょうか? 一人見落としていました。Untitled 7さんです。スクリプトの実行は成功し、サマリーテーブルが作成されました。このワークフローを保存するか、赤い矢印をクリックして「エクスポート」を選択し、「スクリプトウィンドウに保存」することもできます。先ほど申し上げたように、様々な科学者が複数回使用できる、汎用的で再利用可能なスクリプトを作成したいと考えています。
現時点では、非常に特定のファイルを開くだけなので、まだかなり具体的な処理になっています。コードをあと1行追加するだけで、もっと汎用的に処理できます。変数Fを定義し、「F = pick file」と入力します。このコマンドにより、この特定のファイルパスを変数Fに置き換えることで、使用するファイルを選択できるようになります。スクリプトを実行して、動作するか確認してみましょう。
緑の矢印をクリックしてスクリプトを実行します。ファイルを選択するように求められているので、動作するか確認してみましょう。さあ、できました。とても速くて、何が起こっているのかさえ分かりませんでした。しかし、ビルダーと連携するように記述したすべてのステップがすぐに実行され、概要表が作成されました。これは、データ処理を自動化する再利用可能なスクリプトを作成する方法の一つです。先ほどお見せした処理に10分かかっていたプロセスを数秒で実行できました。これにより、研究開発の時間を大幅に節約できます。
ワークフローの生成方法を説明したので、次はワークフローがデータを処理する例を見てみましょう。ここでは酵素活性アッセイの例を示します。前述の通り、この酵素活性アッセイでは蛍光読み取りを行います。この場合、科学者の仕事はアッセイプレートを準備することです。アッセイプレートには、処理対象となる様々なサンプルが黄色で示されています。各サンプルはウェル全体に5回ずつ均等に繰り返し配置されます。
次に、ポジティブコントロールの列があり、この情報を使用してフィッティング用のPₘₐₓパラメータを抽出します。ネガティブコントロールは、すべての優れた実験に存在するべきものです。また、反応開始前の蛍光測定値を提供するdt列があり、これによりベースラインノイズを評価できます。このノイズを差し引くことで、データをy軸のゼロ点に揃えることができます。この時点で、ユーザーはプレートを生成しています。プレートはプレートリーダーに渡され、反応が進行し、プレートが処理され、蛍光データが生成され、Excelファイルに記録されます。その間に、ユーザーは各サンプルに関する情報をサンプルIDテーブルに入力します。
ここで自動化パイプラインが活躍します。Excelデータをインポートし、サンプルIDテーブルに統合することで、各ウェルが適切なサンプルに関連付けられます。時間と反応は正規化され、時間経過は時間ゼロとY軸のゼロ点から開始されます。先ほど説明した速度論に従って指数関数的に近似されます。反応速度が抽出され、5回の試行の平均が算出されます。分岐した試行は除外され、最終的なNは4になります。
次に、統計的検定(例えば、この場合は分散分析)を用いて、様々なサンプルの結果を比較します。もう一つの特徴として、プロセス開始時に「プロセスダンプ」というフォルダが生成されます。このフォルダには、パイプラインのすべての中間ステップが記録されます。これは、自動化されたパイプラインが動作しない場合に、科学者がトラブルシューティングを行うのに役立ちます。
本質的には、出力は生データを取得し、反復的な方法で分かりやすい結果に変換することです。この例では、分散分析(ANOVA)がそれを表しています。実験者がこのアプローチを初めて行う場合、データ削減パイプラインの生成に約45分かかることがあります。しかし、スクリプトが準備できれば、データ削減パイプラインは約1分で実行できます。
セミナーの冒頭でご紹介した試薬カートリッジに入っている試薬1種類を開発するのに、100枚以上のプレートが必要だったことを考えれば、開発パイプラインの時間を少なくとも75時間節約し、XLEAPテクノロジーの開発を加速できたことは容易に想像できるでしょう。それではJMPに戻り、酵素活性データパイプラインがどのように機能するかをお見せしましょう。スクリプトを実行しています。スクリプトは、先ほど示したように、フォルダとファイルを選択するように要求します。
さあ、ファイルを開いてエクスポートしました。ファイルから取得した追加データがあります。特に、列2のデータを使用します。これは、時間ゼロの蛍光強度で、バックグラウンドを生成し、すべての時間経過をY軸のゼロ点に揃えるために使用されます。後ほどこれをエクスポートし、データを正規化します。これで、正規化された時間経過を示す表が作成されます。それぞれのデータに、時間ゼロの信号(約1%)を適用し、これらのデータを積み重ねます。
予測モデルが追加されます。これで完了です。このモデルは、プレート上のすべての時点とすべてのウェルを考慮し、どのような蛍光が読み取られると予想されるかを考慮し、実際の測定値と比較します。まもなく、非線形フィットインターフェースが開き、各データの時系列を自動的にフィッティングできるようになります。エリオットが先ほど示したように、様々な時系列が画面に表示されているのがわかります。これらはすぐに自動的にフィッティングされます。
反応速度パラメータkが抽出され、表形式で表示されます。指定されたすべての時間経過にわたってフィッティングが行われ、データが抽出されました。スクリプトには、ANOVA形式で提示されたデータが既に利用可能であることが示されています。スクリプトをスローモーションで実行するのに約1分かかりましたが、これにより、何が起こっているかを段階的に説明できました。スローモーションを解除すると、1分前に表示したスクリプトはすぐに実行され、データの準備が整います。
プレゼンテーションでは、2つの重要なメッセージを伝えました。1つ目は、一生懸命働くのではなく、賢く働くことを心がけるべきだということです。JMPスクリプトを活用し、データ処理を自動化することで、研究開発の生産性を大幅に向上できることをご理解いただけたかと思います。面倒な作業を自動化することで、科学者やエンジニアは結果の意味について考える時間を増やし、新しい製品やプロセスの開発に注力できるようになります。また、最低限の経験は必要であることもご理解いただけたかと思います。
先ほど示した例では、再利用可能なスクリプトを作成するのに必要なJSLの行数はわずか2行でした。JMPワークフロービルダーは、JSLコードに精通していなくても独自のカスタムスクリプトを作成できる、まさに画期的なツールです。最後に、化学チームのSteve Masonをはじめとする、私たちの同僚全員の貢献に感謝の意を表したいと思います。本日はご清聴ありがとうございました。
ありがとう。