| スピーカー |
トランスクリプト |
| アンドレア・クームズ、JMP |
こんにちは。JMPのシステムエンジニア、アンドレア・クームズです。今日は、私が製薬業界で働いていた頃の話をしたいと思います。 |
| |
さて、今日私がお話ししたいことの要点は次の通りです。 |
| |
意味を理解するための対処戦略 |
| |
製造業におけるリアルタイム生産データ、特にワクチン製造におけるリアルタイム生産データについてです。そしてそのプレゼンテーションでは、曲面データの扱い方について説明しました。 |
| |
製造現場のセンサーからリアルタイムで取得したデータです。 |
| |
本日は、JMP の新しいツール、特に関数データ エクスプローラーについてお話ししたいと思います。このツールによって、この作業がいかに簡単になるかについてもお話しします。 |
| |
また、プロセスの理解、プロセスの最適化、プロセスの監視のために機能データ エクスプローラーを使用する方法についても説明します。 |
| |
それではまず、私たちが扱っていたプロセスと曲線についてお話ししましょう。左側には、仮想的なワクチン製造プロセスの例があります。これは材料の準備から始まります。 |
| |
この場合、細菌発酵を2段階で行い、その後、生成物を濾過、吸収、そして収穫します。 |
| |
下流では、製品が遠心分離され、最終的に、複数のサブロットの材料が 1 つのロットの材料に配合されます。 |
| |
今日は、このプロセスの発酵段階に焦点を当てたいと思います。 |
| |
細菌は発酵しながら増殖しており、増殖曲線は右側の図のようになります。つまり、増殖過程には、遅滞期、指数関数的増殖期、定常期、そして最後に対数的死滅期があります。 |
| |
私がこの会社にいた頃、私たちはプロセスの進化、特に成長曲線に関するプロセスの理解を深める過程にありました。 |
| |
そこで私たちは、まずこの2つの発酵段階から5つのサンプルを採取し、それを品質管理室に送って結果を待つことから始めました。そして、 |
| |
光学密度を測定することで、サンプル内の細胞の密度を知ることができ、得られた結果は右側に示すようなものになりました。 |
| |
特定の時点における結果の分布は把握していますが、成長曲線がどのようなものになるかは全く分かりませんでした。下の分布の上に描いた曲線のどれかに似ている可能性がありました。全く予想がつかなかったのです。 |
| |
しかし、その後、インラインプローブと濁度プローブを導入し、成長曲線が実際にどのようになっているかを確認できるようにしました。ただし、ガウンを着て製造スイートに入る必要がありました。 |
| |
データを手動でダウンロードし、デスクに持ち帰って、このすべてのデータを使って何をするかを検討しようとしました。 |
| |
そして、最終的にPLCをアップグレードし、すべてのセンサーからのすべてのデータをデスクで管理できるようになりました。ガウンを着て製造現場に戻る必要はありません。すべてのデータが揃っています。 |
| |
指先で操作できるようになったのは素晴らしいことでした。しかし、綿密な分析の結果、データが多すぎること、そして処理すべきデータが山ほどあることが判明しました。 |
| |
だから… |
| |
だからこそ、私はリアルタイムデータを理解するための対処戦略に関するプレゼンテーションを行いました。 |
| |
私たちはデータの意味を理解するために多大な労力を費やしており、リアルタイム データの意味を理解するために実行できるいくつかの戦略を共有したいと考えました。 |
| |
最初に話したのは、成長曲線をパラメータ化することでした。この曲線はありましたが、成長曲線と |
| |
何が起こっているのか理解するために、私たちはそれらをパラメータ化しました。つまり、増殖の傾きと死亡率の傾きを取り、細菌が各段階にある時間の長さを調べました。 |
| |
特定の時点における濁度を測定し、成長変数と呼ばれる成長の膨大なコレクションを作成しました。 |
| |
これらの成長変数は私たちにとって非常に有益でした。プロセスの理解、プロセスの最適化、そしてプロセスの監視に活用しました。 |
| |
さて、私が話した2番目の対処戦略は、このリアルタイムデータの処理についてです |
| |
当然のことながら、このデータがすべて有用であることがわかり始めたら、すぐにアクセスしたいと思いました。 |
| |
そこでまず最初に、すべてのデータソースを把握し、ヒストリアンのデータだけでなく、 |
| |
ERPシステム、つまり研究室の情報管理システムです。そのデータをすべて一箇所に集める必要がありました。スーパージャーナルを使用していました。これは、すべてのデータにアクセスし、すべてのスクリプトを実行するためのコマンドセンターのようなものです。 |
| |
本当に大変な作業でした。自分たちにかなり誇りを持っていましたが、振り返ってみると |
| |
JMP、特に現在の JMP 16 にどのようなツールが搭載されているかを知っていれば、この作業がはるかに簡単になる方法がいくつかあります。 |
| |
成長曲線については、関数データエクスプローラーを使って曲線を分析することができました。パラメータ化する必要はありません。 |
| |
多くのデータが残っていましたが、機能データエクスプローラーですべてのデータを活用できます。そしてもちろん、拡張ログでのアクション記録も利用できます。 |
| |
そうすれば、スクリプト作成の作業がはるかに楽になったはずです。しかし今日は、関数型データエクスプローラーをどのように活用していたかに焦点を当てたいと思います。 |
| |
もちろん、もうそのデータにはアクセスできないので、成長曲線をいくつかシミュレーションしてみました。ここには20種類の異なる曲線があり、細菌発酵中に見られる変動を表しています。 |
| |
関数データエクスプローラーでは、実際には次の4つのステップに要約されます。まず、曲線のコレクションを取得します |
| |
個々の曲線をすべて平滑化します。次のステップは、これらの曲線に見られるすべての変動を表す平均形状と形状成分を決定することです。 |
| |
次のステップは、各曲線の形状コンポーネントの大きさを抽出することです。 |
| |
これら2つの形状要素は実際には機能主成分と呼ばれます。 |
| |
その後、曲線がモデルへの入力であるか、モデルへの出力であるか、クラスタリング分析を行うかどうかなど、データを分析する目的に応じてこれらを使用できます。 |
| |
実際、これらの機能的主成分分析を使えば、あらゆる種類の分析が可能になります。今日の例では、すべての曲線がモデルの出力なので、機能的DOEを使用します。 |
| |
これらの曲線を詳しく見てみましょう。それではJMPを見てみましょう。 |
| |
ここにデータ テーブルがあります。バッチ番号と濁度の時間があり、曲線を構成しています。 |
| |
プロセスパラメータもいくつかあります。まず最初に、これらのプロセスパラメータが |
| |
曲線に見られる変動性に影響を与えている要因です。それでは、関数データエクスプローラーを開きましょう。X軸に時間、Y軸に濁度を入力します。ID関数を入力し、これらのプロセスパラメータをすべて補助変数として入力します。 |
| |
さて、最初に行う必要があるのは、すべての曲線に柔軟なモデルを適合させることです。そのためには、方向性のある直接機能 PCA を使用します。 |
| |
これが柔軟なモデルです。2つ目のステップは、JMPが既に行ってくれている平均曲線の決定です。 |
| |
そして形状要素です。JMPは6つの異なる形状要素を識別しました。左側に、6つの異なる形状要素が表示されています。 |
| |
そして、ここに、これらの形状コンポーネントが私のデータ内で説明している変動性の累積量を示します。 |
| |
最初の 2 つの形状コンポーネントだけで、曲線の変動の 92% をすでに表現していることがわかります。これはすばらしいことです。 |
| |
残りの形状要素は除外します。おそらく、データのランダムな変動を説明しているだけでしょう。そこで、FPCの数を2つに減らし、残りの2つの形状要素だけを残しましょう。 |
| |
さて、次のステップは、それぞれの曲線について、それぞれの形状コンポーネントの大きさを決定することです。その結果は、スコア プロットに表示されています。 |
| |
X 軸には Shape Component 1 があり、Y 軸には Shape Component 2 があります。 |
| |
下の図ではプロファイラーを使ってカーブを確認しています。ここでは黄色で強調表示しています。最初のシェイプコンポーネントがカーブの形状にどのように影響するかが分かります。 |
| |
主に曲線の成長段階に影響を与え、2 番目の形状コンポーネントは主に曲線の死滅段階に影響を与えます。 |
| |
これらのバッチのいくつかを詳しく見てみましょう。バッチ15を見てみましょう。こちらはバッチ15の曲線で、シェイプコンポーネント1とシェイプコンポーネント2の振幅が確認できます。これらはプロファイラーに直接入力できます。 |
| |
バッチ15の曲線を再現できたことがお分かりいただけると思います。もう一つ見てみましょう。バッチ2を見てみましょう。バッチ15と比べて、形状が大きく異なっていることがわかります。形状成分の大きさも大きく異なります。それでは、 |
| |
それらを見てください。 |
| |
そして、ご覧のとおり、この曲線も再現できるようになりました。 |
| |
したがって、平均形状、つまり曲線の周りの変動を表す 2 つの形状コンポーネントがわかっているので、それらの形状コンポーネントの大きさを使用して分析を行うことができます。 |
| |
そして、曲線がモデル内の応答である場合、その分析を機能データ エクスプローラーで実行できます。 |
| |
下の方に新しいプロファイラーがあります。今度はプロファイラーにカーブが再び表示され、黄色でハイライト表示されます。 |
| |
そして、pH、温度、圧力、混合速度のパラメータがあります。ここでわかるように、混合速度は非常に平坦なので、形状に影響を与えていません。 |
| |
圧力についても同様ですが、温度に注目すると、曲線の形状、特に成長段階が変化していることがわかります。また、pHを変化させると、主に成長段階に影響を与えます。 |
| |
これが私がプロセス理解のために取るアプローチです。では、プロセス最適化はどうでしょうか?ここで言うプロセス最適化とは、 |
| |
特定の曲線を標準化したい場合、その曲線を得るために必要なpHと温度はどれくらいでしょうか?まず最初に、その曲線が何であるかを定義する必要があります。 |
| |
理想の曲線はどんな形か。データテーブルの下部に、私が求めている形状を表すデータポイントがいくつかあるので、ここに表示されています。 |
| |
グラフビルダーで。この場合、非常に速い成長率と非常に遅いクラッシュ率を持つ曲線を取得したいと考えています。 |
| |
これを関数データエクスプローラーに追加するのはとても簡単です。あと1つだけ追加するだけです。先ほどやったことを思い出してください。 |
| |
そしてもう1つのステップは、そのターゲット関数をロードし、 |
| |
関数はターゲットを表します。今やっていることは、以前やったことを繰り返すだけです。直接関数主成分分析(PCA)を実行します。 |
| |
FPC を 2 にカスタマイズすると、これらの結果はまさに先ほど見たものとまったく同じになります。次に、機能的 DOE を実行します。 |
| |
ここでもう一度、曲線を強調表示します。目標曲線が特定されたので、望ましさを最大化できます。言い換えれば、pHと温度の設定点を見つけることができます。 |
| |
そして圧力と混合速度を調節して、目標曲線に最も近い曲線を作成します。 |
| |
急速な成長率と緩やかな崩壊率。そして私は |
| |
pH7.2の培地から始め、発酵槽の温度を37.9℃に設定します。これが、私がプロセスの理解と最適化のために用いたアプローチです。 |
| |
成長曲線や曲線の形状のプロセス監視について話すとき、いくつかの異なるオプションがあり、ここではいくつかの異なる考えがあります。 |
| |
これを実行したいと思っている場合は、2020 年のプレゼンテーション「関数形式を持つプロセス変数の統計的プロセス制御」を確認することを強くお勧めします。 |
| |
これは録画されたプレゼンテーションで、本当に素晴らしいです。機能主成分をモデル駆動型多変量管理図に組み込む方法について説明されていました。 |
| |
彼らは素晴らしいデモンストレーションを行いました...そして、そのアプローチを取ることの欠点についても話しました。 |
| |
そこで、検討する必要がある別のアプローチ、つまり標準からの統合された差異を検討するというアプローチについてお話ししたいと思います。 |
| |
先ほどと同様に、ターゲットカーブを基準として、各バッチについてその基準との差を計算します。例えば、ここにあります |
| |
1バッチ分の曲線が青…いや、赤で示されています。標準曲線は青で、その差をとっています。その差が下の緑の曲線に示されています。 |
| |
この曲線を積分して曲線の下の面積を求めると、統計的プロセス制御プログラムで使用できます。その手順を簡単にご説明したいと思います。 |
| |
これが最初のバッチの時間と標準濁度値です。この2つの差を計算しました。そして、 |
| |
fit Y by X を使用して、時間の経過に伴う差異のスプライン モデルを構築し、そのモデルの係数をデータ テーブルに保存できます。 |
| |
得られるのは、X値とスプラインモデルを構築するために使用できる4つの係数です。スプラインモデルを構築するための式は次のとおりです。 |
| |
そして、この数式を積分します。スクリプトを使って行うこともできますが、私は数式エディタを使って行うことにしました。ここでは、先ほどの式を手作業で積分することで、曲線の各スライスの面積を求めています。 |
| |
これらの領域のスライスを取得したら、関心のある領域を合計するだけです。これで、全体の曲線の領域を計算できます。 |
| |
成長期と死滅期だけを対象にすることもできます。ここでそれを実行しました。 |
| |
テーブル変数に。これで、総積分差、成長期のみの積分差、そして死滅期の積分差を表す変数ができました。 |
| |
基本的には、各バッチごとにこれを実行するだけです。ここでは20バッチすべてに対してこれを実行しました。これで、これらの変数に対して統計的プロセス制御を行うことができます。 |
| |
以上が、Functional Data Explorerを使ってプロセス監視、プロセス理解、そしてプロセス最適化を検討する際に私が採用したアプローチです。ぜひ一度お試しください。きっと皆さんにも簡単にできると思います。ありがとうございます。 |