大家好,我和Elliot代表大家向大家介紹Illumina公司如何利用JMP中的資料處理自動化來加速產品開發流程。首先,我們將介紹Illumina的產品開發流程、公司概況以及產品開發方式。然後,我們將展示自動化資料處理如何融入其中,並提供一個典型的工作流程範例,最後總結本次示範的關鍵要點。
Illumina通常被認為是基因組學儀器的研發和生產公司。如今,我們更進一步,成為提供多種組學解決方案和平台的供應商,涵蓋基因組學、轉錄組學和蛋白質組學等領域。我們的旗艦產品,也是高通量定序儀,是2023年推出的NovaSeq X系列。 NovaSeq X的核心技術是XLEAP技術。
XLEAP 技術的一個關鍵特點是,與我們先前高通量儀器的運作所需的試劑體積相比,得益於該技術,我們在包裝以及客戶管理和儲存方面所投入的精力方面,實現了約 90% 的減少。
之所以能夠實現這一點,是因為這裡的試劑運輸無需使用乾冰或冰袋,所有試劑都裝在一個單獨的箱子裡,客戶無需費力處理和丟棄包裝、乾冰包裝以及其他類似的包裝。箱子裡裝著客戶收到的流通池,每次運行可完成約 300 個循環,每個循環可進行 250 億次測量。
為了開發這些儀器,我們估計大約需要運行5000個這樣的流動池。每次運行流動池時,我們都需要用包含所有試劑的試劑盒來預先填充儀器,這些試劑盒包含大約20種不同的試劑,每種試劑都是透過分析檢測和定序開發的。而自動化數據處理正是在此發揮作用。
我們在此舉例說明如何利用分析方法開發試劑。如您所知,在基於微孔板的分析中,科學家需要進行實驗、提取數據、進行數據簡化和分析,反覆點擊、複製貼上,直到產生報告。此時,即可得出結論並進行下一個實驗。您可以重複上述步驟,也可以利用 JavaScript 的特性。
產生一個腳本,用於自動執行資料擷取、資料簡化和資料處理,並以迭代的方式對重複實驗進行更多此類分析,這顯然具有多重優勢。首先,節省實驗人員的時間。其次,能夠在多個實驗中迭代執行這些操作,從而加快產品開發流程。此外,由於無需操作員逐一點擊、複製貼上,因此可以減少錯誤。減少錯誤意味著我們可以標準化流程。
標準化是實現可重複且穩健流程的關鍵支柱。即使對於那些腳本編寫經驗不多的科學研究人員來說,標準化也是可行的,因為他們可以利用 JMP 的工作流程建構器功能以及 JMP 社群提供的資源。只需具備基本的編碼經驗即可。
讓我們透過一個例子來說明如何使用工作流程建構器建立可重複使用的自動化資料處理流程,而無需對 GSR 有太多了解。在 LUNAR,我們經常開發新的定序試劑,並且通常需要開發一種測試方法來測量其活性。假設我們有一個這樣的測試:使用深色底物,測試我們的試劑將其轉化為螢光產物的能力,然後將該底物置於酶標儀上,測量螢光產物隨時間變化的反應曲線。
這種反應通常具有一級動力學特徵,因此產物 P 的生成可以用以下方程式描述,該方程式是時間的函數,並且包含兩個重要參數。我們有 Pₘₐₓ,它描述了在時間進程結束時我們獲得的最大強度,以及反應速率 k。
我們真正感興趣的是這個反應速率,也就是哪一種試劑的反應速率最高。通常,我們會從酶標儀取得一個軟體產生的原始資料文件,通常是 Excel 文件。然後,我們希望使用 JMP 軟體來自動處理資料。我們需要匯入這個 Excel 數據,並從反應值中減去背景強度數據。
我們想進行指數擬合來確定反應速率常數 k,然後將速率資料提取到 JMP 表格中,以便匯總結果。現在我們將打開 JMP,我將向您演示如何操作。但首先,讓我們開啟 Excel 檔案。這是一個典型的原始格式文件,通常來自酶標儀軟體。正如您所看到的,軟體已經填充了一些實驗細節。
我們已經有了板佈局圖,但直到第 21 行才能獲得實驗數據。我們希望能夠開啟這些數據,用 JMP 處理數據,然後產生一個簡潔的摘要。如果我們想為此建立一個自動化工作流程,但又不懂 JSL 程式碼,需要腳本,可以使用所謂的「工作流程建構器」。所有範例均使用 JMP 18 的基礎版本。我們在 JMP 專案中示範這些範例,是為了保持程式碼的條理性和易讀性,但您也可以在標準版 JMP 中完成這些任務。
首先,我們需要點擊“新建”,然後選擇“新建工作流程”。這裡是工作流程平台,需要注意的是,在開始錄製之前,點擊這裡的紅色按鈕,你執行的每個步驟都會被儲存為一個步驟,並產生對應的腳本。最後,你可以將這些步驟串連起來,組成一個完整的腳本供使用。
我們要在這裡導入Excel文件,所以我們打開它。正如我之前所示範的,資料並非從第一行開始,在這裡我們可以指定資料的起始行和結束行,以便匯入。點擊「立即匯入」後,該步驟將被記錄到「工作流程建構器」標籤的工作流程步驟中,資料如下所示。其中包含時間、不同的樣本以及背景資訊。
為了執行我們的操作,我們需要新增一個新列,我們將其命名為 Pred(預測)。我們將使用我在投影片上展示的公式來預測它隨時間變化的趨勢。這裡有兩個變數。我們已經指定了一些初始值,用於進行擬合。
現在,如果您想隨時暫停當前操作,去打高爾夫或探索其他內容,只需再次點擊紅色按鈕即可。您可以隨意操作,您的任何操作都不會被計入步驟。例如,我們來看看現在的數據情況。如果我們打開圖表建立器,重新匯入數據,看看它目前的原始格式是什麼樣子。
您可以看到,這裡的背景雜訊大約在 1000 個 RFU 單位左右,而我們的預測響應從零開始。可以看到,我們需要對樣本進行歸一化處理並去除背景雜訊。我們還需要先進行一些預處理。這些按鈕非常有用。如果您想返回開頭,可以點擊「重置」按鈕。它會將您帶回起點,然後點擊「播放」按鈕,我們就可以回到上次停止錄製時的位置。
在記錄更多步驟之前,我們需要再次點擊「錄製」按鈕。接下來,我們需要減去背景值。最好的方法是將這些樣本列堆疊起來。我們將建立一個新表格,把這些列堆疊在一起,並將資料列命名為 RFU(螢光單位),並將該列標記為 sample。
現在我們需要做的是找出背景訊號和樣本訊號之間的差異。最簡單的辦法就是選取這兩列資料。右鍵單擊,我們可以新建一個公式列。在「合併」選項下,我們可以計算這兩個欄位的差值。這裡有兩個選項:一是計算反向差值。我發現需要反覆嘗試才能確定應該選擇哪個選項。如果我們現在選錯了,就會得到負值。正如你所看到的,我們現在已經成功地從樣本數據中減去了背景訊號。
現在我們可以運行擬合來計算速率常數了。我們將進入“分析”選單,選擇“專用建模”。我們將擬合一個非線性模型,並將我們先前加入的預測公式加入到「X 預測公式」中。正如您所看到的,它已經提供了我們作為列屬性添加到擬合模型中的公式。我們將以基線減去樣本資料作為反應值。由於我們有多個樣本,因此需要逐個樣本進行擬合。
點擊「確定」後,我們將開啟非線性擬合平台。可以看到,每個樣本都有不同的擬合曲線。粗黑線代表實驗數據,細線代表預測公式,它提供了一個初始值。我們將迭代地改變這兩個變量,直到我們獲得擬合曲線。與 JMP 中的所有平台一樣,如果您想同時執行多個操作,可以按住 Ctrl 鍵並點擊「執行」。現在,它將使用預測公式對每個樣本的反應進行迭代擬合。
現在可以看到細線已經疊加在粗線上,我們的擬合已經收斂。以下是我們對 Pₘₐₓ 和 k 變數的估計值。接下來,我們需要將這些數據匯總到一個表格中。如果我右鍵單擊並選擇“建立合併資料表”,這將從這些擬合結果中提取所有變數資料。我們只對速率常數感興趣,因此在資料處理過程中,我們需要對這些資料進行一些清理。
我們要選取所有與 Pₘₐₓ 相符的儲存格。我們對 Pₘₐₓ 不感興趣,所以可以刪除這些行。同樣,我們不一定需要這裡的表格列,而且我們知道參數是 k,所以也可以關閉並清理它。
我們有了估計值、速率常數、上限值和下限值,以及信賴區間的上限和下限。為了更直觀地展示,我們可以重新排列估計值,使其位於下限值和上限值之間,這樣就得到了一個清晰的總表。假設我們不需要所有其他中間表格,並且想要刪除它們,關閉它們而不保存。我們可以將所有這些步驟記錄到我們的工作流程建構器中,這就是最終的輸出結果。
現在我們可以停止錄製了,接下來需要做的就是檢查一遍,確保一切運作正常。我們可以逐步檢查每個步驟,確保它按照預期執行,並且沒有錯誤。可以看到,每次成功執行時都會出現一個綠色對勾,但現在我們遇到了一個問題。這在建立合併資料表時很常見。它會建立一個名為「Untitled」的新表,並包含一個數字。每次重複此操作,該數字都會不斷增加。腳本需要的是一個特定的數字,這個數字來自我們創建工作流程建構器時產生的資料。
你可以看到它找不到“Untitled 7”,所以它問你想用哪一個。這說明我們遇到了一些問題,我們已經解決了。我們需要做一些手動操作才能讓腳本多次運行。透過一些非常簡單的程式碼,我們可以解決這個問題。我們可以打開腳本查看每個步驟。如果我們回到上一個成功執行的步驟,我們想要做的是將這個資料表定義為一個變量,這樣我們就不依賴一個未命名的數字了,所以我們把它叫做dt。
我們把 dt 定義為當前資料表。接下來我們需要做的就是繼續執行每個步驟。凡是呼叫未命名表的地方,我們都要用新變數取代它。這種情況可能會出現幾次,所以我們只需要把每個未命名表都替換成 dt 即可。我們已經完成了所有這些步驟,接下來會再次測試,看看是否有效。這可能不是最優雅的方法,但它能幫助我們建立自己的自動化腳本,並學習如何編寫程式碼。
如果我們再來一遍,這次成功了嗎?我漏掉了一個人,編號為7的人員。我們已經成功運行了腳本,現在有了匯總表。我們可以儲存這個工作流程,或點擊紅色箭頭,選擇“匯出”,然後儲存到腳本視窗。我說過,我們想要一個通用的、可重複使用的腳本,供不同的科學家多次使用。
目前,它的功能還比較具體,因為它只能開啟特定的檔案。只要再增加一行程式碼,我們就能讓它更加通用。我將定義一個變數 F,並簡單地設定 F 等於 pick file。這樣,如果我們把這個特定的檔案路徑替換成變數 F,我們就能選擇要使用的檔案了。現在讓我們看看腳本是否有效。
我們點擊綠色箭頭運行腳本。它會提示我們選擇文件,看看是否可行。好了,成功了。速度太快了,你甚至都沒注意到發生了什麼事。它迅速完成了我們為與建構器互動而編寫的所有步驟,並產生了一個總計表。這是我們創建可重複使用腳本以實現資料處理自動化的一種方法。我們剛才只花了幾秒鐘就完成了之前需要我花10分鐘才能示範的過程,這可以大大節省研發時間。
現在我們已經向您展示如何產生工作流程,接下來讓我們來看一個工作流程處理資料的範例。這裡我們以酵素活性測定為例。正如我們之前提到的,這些酶活性測定將採用螢光讀數。在本例中,科學家的任務是製備測定板。測定板上以黃色標示了待處理的各種樣本。每個樣品在孔中重複五次。
接下來是陽性對照列,該列資訊用於提取擬合所需的 Pₘₐₓ 參數。陰性對照列(如同所有合格實驗中都應該有的那樣)以及名為 dt 的列,該列提供反應開始前的螢光讀數,以便評估基線噪聲,並將其扣除以使數據與 y 軸零點對齊。至此,用戶已產生反應板。反應板交給酶標儀,酶標儀將啟動反應、處理反應板、產生螢光數據並將其記錄到 Excel 檔案中。同時,使用者需要填寫包含每個樣本相關資訊的樣本 ID 表。
這時,自動化流程就派上用場了。它會匯入Excel數據,並將其合併到樣本ID表中,確保每個孔都對應一個正確的樣本。流程會進行時間和反應歸一化,使時間進程從零時刻開始,y軸上的零點也隨之歸一化。接下來,會根據我們剛剛描述的動力學進行指數擬合。反應速率將被提取,取五次運行的平均值。其中一次運行結果出現偏差,將被排除,最終得到N=4。
然後,我們將使用統計檢定(例如本例中的變異數分析)來比較不同樣本的結果。此外,流程開始時會產生一個名為「流程轉儲」的資料夾。該資料夾會記錄流程的所有中間步驟。如果自動化流程出現故障,這將有助於科研人員進行故障排除。
本質上,輸出過程是將原始資料以迭代的方式轉換為易於理解的結果,在本例中以變異數分析(ANOVA)為例。實驗人員首次採用此方法時,可能需要約 45 分鐘來產生資料縮減流程。但一旦腳本準備就緒,資料縮減流程只需大約一分鐘即可運行。
如果我們考慮到在研討會開始時我展示的試劑盒中,開發其中一種試劑就需要一百多個培養皿,那麼您可以很容易地想像,我們至少節省了75個小時的開發時間,從而加速了XLEAP技術的開發。現在我回到JMP,示範一下酵素活性資料處理流程。我正在運行腳本。腳本會提示我選擇資料夾和文件,就像之前示範的那樣。
文件已開啟並匯出。現在我們從文件中提取了一些額外數據。特別是第二列的數據,我們將使用這些數據。這些是零時刻的螢光強度值,用於產生背景,並將每個時間序列與 y 軸的零點對齊。稍後,我們將匯出這些數據,並進行歸一化處理,現在我們得到了一個包含歸一化時間序列的表格。在每個時間序列上,我們都加入了零時刻的訊號值(約 1%),現在我們將把這些資料堆疊起來。
接下來會加入一個預測模型。好了。這個模型顯然會考慮每個時間點和每個孔板,預測我們預期讀取到的螢光類型,並將其與實際讀數進行比較。稍後,「非線性擬合」介面將打開,並啟用對每個資料時間序列的自動擬合。您可以看到,正如Elliot之前所展示的那樣,各種時間序列現在都顯示在螢幕上。這些序列將在幾秒鐘內自動擬合完成。
反應速率參數 k 將被提取並製成表格。所有提供的時間序列均已完成擬合,數據已提取,腳本現在提示我們已有以 ANOVA 格式呈現的數據。由於腳本運行速度較慢,我花了大約一分鐘的時間將其慢放,以便逐步向您展示其運行過程。慢放結束後,腳本將像剛才那樣快速運行,資料也已準備就緒。
我們的演示傳達了兩個主要訊息。首先,我們應該更有效率地工作,而不是更辛苦地工作。希望我們已經讓您相信,使用 JMP 腳本進行自動化資料處理可以顯著提高您的研發效率。我們可以將一些繁瑣的任務自動化,讓您的科學家和工程師有更多時間思考結果的意義,並創新產品和製程。我們也希望您已經意識到,使用 JMP 腳本進行自動化資料處理其實並不需要太多經驗。
在我之前示範的範例中,我們只需要兩行 JSL 程式碼就能編寫一個可重複使用的腳本。 JMP 工作流程建構器確實是一項顛覆性的工具,它讓您無需精通 JSL 程式碼即可編寫自訂腳本。最後,我們也要感謝所有同事的貢獻,特別是化學團隊的 Steve Mason。感謝大家今天的聆聽。
謝謝。