胞時(shí)代來(lái)臨:用深度學(xué)習(xí)預(yù)測(cè)未知藥物的單細(xì)胞響應(yīng))
當(dāng) ChatGPT 通過(guò)大規(guī)模預(yù)訓(xùn)練學(xué)會(huì)生成自然語(yǔ)言時(shí)一個(gè)更讓人好奇的問(wèn)題擺在生物信息學(xué)者面前我們能不能構(gòu)建一個(gè)“細(xì)胞版大模型”給定一個(gè)細(xì)胞的基因表達(dá)狀態(tài)再給定一種從未見(jiàn)過(guò)的藥物分子就能預(yù)測(cè)這個(gè)細(xì)胞在藥物作用下會(huì)走向增殖、凋亡還是耐藥這個(gè)想法聽(tīng)上去很科幻但它正是“虛擬細(xì)胞Virtual Cell”研究想要回答的問(wèn)題。關(guān)于虛擬細(xì)胞不同團(tuán)隊(duì)有過(guò)不同的定義。有人強(qiáng)調(diào)“器官級(jí)數(shù)字孿生”有人強(qiáng)調(diào)“高精度分子模擬”也有人把它等同于“把已知的生物通路全部寫(xiě)進(jìn)計(jì)算機(jī)模型”。但最近一篇發(fā)表在 Nature Machine Intelligence 上的研究把視角拉回到一個(gè)非常具體、也非常難的任務(wù)上未知藥物的單細(xì)胞響應(yīng)預(yù)測(cè)。這篇論文的核心是提出一個(gè)新的框架目標(biāo)是讓模型在面對(duì)訓(xùn)練階段根本沒(méi)有見(jiàn)過(guò)的藥物時(shí)仍然能夠比較可靠地預(yù)測(cè)單細(xì)胞層面的轉(zhuǎn)錄組響應(yīng)。這篇文章不打算只復(fù)述論文摘要。我會(huì)從“為什么這個(gè)任務(wù)很難”“虛擬細(xì)胞框架到底要解決什么問(wèn)題”“這類(lèi)框架通常會(huì)有哪些核心模塊”“你如果自己想做這個(gè)方向應(yīng)該怎么設(shè)計(jì)實(shí)驗(yàn)、評(píng)估結(jié)果、避開(kāi)哪些坑”幾個(gè)層面展開(kāi)。也就是說(shuō)比起“這篇論文很厲害”我更想講清楚它厲害在哪一步以及作為技術(shù)人你能從這套思路里拿到什么可遷移的東西。這個(gè)主題有一個(gè)特別值得注意的背景單細(xì)胞測(cè)序技術(shù)已經(jīng)在過(guò)去十年積累了海量數(shù)據(jù)但數(shù)據(jù)的“可解釋利用”遠(yuǎn)沒(méi)有跟上“數(shù)據(jù)產(chǎn)出”的速度。原因很簡(jiǎn)單測(cè)序給我們的是一張又一張靜態(tài)快照而藥物響應(yīng)本質(zhì)上是動(dòng)態(tài)的、多細(xì)胞協(xié)作的、涉及大量基因調(diào)控變化的過(guò)程。要讓模型學(xué)習(xí)這種復(fù)雜映射單靠傳統(tǒng)統(tǒng)計(jì)方法根本不夠必須把深度學(xué)習(xí)、圖神經(jīng)網(wǎng)絡(luò)、預(yù)訓(xùn)練表征、遷移學(xué)習(xí)這些技術(shù)整合到一起。這正是“框架”這兩個(gè)字的真正價(jià)值所在。1. 這篇文章真正要解決的問(wèn)題先問(wèn)一個(gè)最直接的問(wèn)題為什么要花這么大力氣去預(yù)測(cè)“未知藥物”對(duì)單細(xì)胞的響應(yīng)如果你做過(guò)藥物篩選或藥理學(xué)相關(guān)研究應(yīng)該知道傳統(tǒng)路線的成本有多高。一個(gè)候選化合物進(jìn)入細(xì)胞實(shí)驗(yàn)之前通常要經(jīng)過(guò)靶點(diǎn)預(yù)測(cè)、體外活性篩選、劑量反應(yīng)測(cè)試等步驟每一步都要消耗大量的樣本、時(shí)間和試劑。更麻煩的是很多新藥分子在合成出來(lái)之后我們只知道它的化學(xué)結(jié)構(gòu)并不清楚它在真實(shí)細(xì)胞里會(huì)激活哪條通路、殺傷哪類(lèi)細(xì)胞、產(chǎn)生什么樣的毒性。如果能在實(shí)驗(yàn)前用計(jì)算模型給出一個(gè)“預(yù)測(cè)細(xì)胞響應(yīng)排序”就能顯著縮小實(shí)驗(yàn)驗(yàn)證的范圍。但這里的難點(diǎn)是“未知藥物”。大部分已有的預(yù)測(cè)模型采用的是“記憶式”策略訓(xùn)練時(shí)見(jiàn)過(guò)某幾種藥物測(cè)試時(shí)也只在這幾種藥物上評(píng)估。這種做法在真實(shí)藥物研發(fā)中很難用因?yàn)樾滤幍慕Y(jié)構(gòu)往往不在訓(xùn)練集里。分子可以有無(wú)數(shù)種組合變化模型如果不能對(duì)未見(jiàn)過(guò)的分子做外推那預(yù)測(cè)能力就只剩下一張漂亮但無(wú)用的排行榜。另一個(gè)痛點(diǎn)來(lái)自單細(xì)胞數(shù)據(jù)本身。單細(xì)胞轉(zhuǎn)錄組數(shù)據(jù)有強(qiáng)烈的技術(shù)噪聲、批次效應(yīng)、測(cè)序深度差異并且表達(dá)矩陣稀疏性很高。同樣是藥物處理不同細(xì)胞類(lèi)型可能給出完全相反的反應(yīng)同一個(gè)癌細(xì)胞株里有一部分亞群會(huì)凋亡另一部分亞群反而會(huì)上調(diào)耐藥基因。如果把所有細(xì)胞混在一起求平均等于把最關(guān)鍵的信息抹掉了。所以只有“單細(xì)胞”級(jí)別的預(yù)測(cè)才能真正反映腫瘤異質(zhì)性和藥物敏感性的復(fù)雜關(guān)系。因此這篇論文被關(guān)注核心原因不是它堆了多少層網(wǎng)絡(luò)而是它把研究問(wèn)題定義得很清晰構(gòu)建一個(gè)可泛化的、能響應(yīng)“未知藥物輸入”的單細(xì)胞預(yù)測(cè)框架。這個(gè)定義本身就是對(duì)虛擬細(xì)胞研究的一次收斂從“我們要做很大的虛擬細(xì)胞”變成“我們先把其中一個(gè)真正有價(jià)值、也可驗(yàn)證的子問(wèn)題做扎實(shí)”。2. 虛擬細(xì)胞是什么為什么現(xiàn)在能談“虛擬細(xì)胞”不是某個(gè)具體軟件而是一類(lèi)計(jì)算建模目標(biāo)的統(tǒng)稱(chēng)。它的終極形態(tài)可以描述為用分子層面的數(shù)據(jù)構(gòu)建一個(gè)細(xì)胞的計(jì)算模型使得輸入某個(gè)初始狀態(tài)和外部擾動(dòng)就能預(yù)測(cè)細(xì)胞的后續(xù)狀態(tài)變化??梢园阉?lèi)比成天氣預(yù)報(bào)。氣象學(xué)家不需要控制每一顆空氣分子而是把大氣離散成網(wǎng)格用物理方程擬合空氣、水汽、溫度的演化規(guī)律從而預(yù)報(bào)天氣。虛擬細(xì)胞的邏輯類(lèi)似把細(xì)胞離散成基因調(diào)控網(wǎng)絡(luò)、代謝通路、表觀修飾等可計(jì)算的模塊用數(shù)據(jù)驅(qū)動(dòng)的方式擬合“細(xì)胞狀態(tài)”的演進(jìn)。過(guò)去幾十年生物學(xué)界對(duì)細(xì)胞行為的建模主要依賴兩類(lèi)方法一類(lèi)是機(jī)制模型mechanistic model比如把某個(gè)信號(hào)通路用常微分方程描述。這種模型可解釋性強(qiáng)但需要大量人工設(shè)定的參數(shù)而且只覆蓋特定通路很難擴(kuò)展到全基因組范圍。另一類(lèi)是統(tǒng)計(jì)模型和機(jī)器學(xué)習(xí)模型比如用傳統(tǒng)分類(lèi)器根據(jù)基因表達(dá)區(qū)分藥物處理組和對(duì)照組。這類(lèi)模型能做預(yù)測(cè)但往往只是黑箱打分缺乏對(duì)細(xì)胞狀態(tài)內(nèi)部變化的深層理解。虛擬細(xì)胞路線真正興起得益于三個(gè)條件同時(shí)成熟單細(xì)胞多組學(xué)技術(shù)讓“細(xì)胞狀態(tài)”可以被高分辨率觀測(cè)深度學(xué)習(xí)框架讓高維稀疏數(shù)據(jù)建模成為可操作工程大規(guī)模預(yù)訓(xùn)練模型讓大家相信“底層規(guī)律可以從數(shù)據(jù)中涌現(xiàn)”。換句話說(shuō)現(xiàn)在談虛擬細(xì)胞不是單純的理論升級(jí)而是技術(shù)工具鏈剛好走到了這一步。“虛擬細(xì)胞”和“單細(xì)胞響應(yīng)預(yù)測(cè)框架”的關(guān)系可以這樣理解前者是長(zhǎng)期藍(lán)圖后者是藍(lán)圖里一塊必須落地的地基。真正的虛擬細(xì)胞應(yīng)該能回答一系列問(wèn)題包括轉(zhuǎn)錄調(diào)控、代謝變化、細(xì)胞通訊、空間組織、擾動(dòng)響應(yīng)等等。而“藥物擾動(dòng)后細(xì)胞會(huì)怎么變”是其中最貼近實(shí)際應(yīng)用、也最容易用數(shù)據(jù)驗(yàn)證的一個(gè)子任務(wù)。把這個(gè)問(wèn)題解決清楚虛擬細(xì)胞才不是一個(gè)空泛口號(hào)。3. 單細(xì)胞響應(yīng)預(yù)測(cè)的技術(shù)難點(diǎn)做這類(lèi)任務(wù)第一反應(yīng)可能是直接用神經(jīng)網(wǎng)絡(luò)擬合藥物分子和基因表達(dá)之間的映射不就行了但實(shí)際操作時(shí)會(huì)遇到一系列非常具體的技術(shù)障礙。3.1 藥物如何表示藥物分子不能直接喂進(jìn)神經(jīng)網(wǎng)絡(luò)必須轉(zhuǎn)成計(jì)算模型能理解的表示。常見(jiàn)方案包括分子指紋、分子圖、SMILES 字符串等。分子指紋把結(jié)構(gòu)轉(zhuǎn)成固定長(zhǎng)度的 0/1 向量簡(jiǎn)單但丟失拓?fù)湫畔⒎肿訄D保留原子和化學(xué)鍵的連接關(guān)系適合圖神經(jīng)網(wǎng)絡(luò)處理SMILES 字符串可以借助文本模型學(xué)習(xí)語(yǔ)言式表征。不同表示方式直接影響模型對(duì)“未知藥物”的泛化能力。有的框架采用多模態(tài)特征融合讓模型同時(shí)從多個(gè)表示中學(xué)習(xí)這也是近期比較被認(rèn)可的工程方向。3.2 細(xì)胞狀態(tài)的表示單細(xì)胞轉(zhuǎn)錄組數(shù)據(jù)經(jīng)過(guò)質(zhì)量控制、標(biāo)準(zhǔn)化、對(duì)數(shù)變換后會(huì)形成一個(gè)“細(xì)胞 × 基因”的矩陣。這個(gè)矩陣動(dòng)輒數(shù)萬(wàn)基因但大多數(shù)基因在單個(gè)細(xì)胞里并不表達(dá)造成高度稀疏。一個(gè)模型如果想要理解細(xì)胞狀態(tài)通常需要先做一個(gè)降維或特征提取步驟要么用 PCA、要么用自編碼器要么用目前很火的單細(xì)胞基礎(chǔ)模型把基因表達(dá)映射成細(xì)胞嵌入。問(wèn)題在于不同數(shù)據(jù)集之間因?yàn)閰f(xié)議、實(shí)驗(yàn)室、樣本來(lái)源不同會(huì)有嚴(yán)重批次效應(yīng)如果不做整合模型很容易學(xué)到“哪個(gè)樣本來(lái)的”而不是“藥物處理導(dǎo)致的差異”。3.3 響應(yīng)的定義和標(biāo)簽很多公開(kāi)數(shù)據(jù)集只包含處理組和對(duì)照組并沒(méi)有“每個(gè)基因應(yīng)該變化多少”的標(biāo)準(zhǔn)答案。常見(jiàn)做法是用對(duì)照組作為基線計(jì)算處理組的差異表達(dá)基因然后把預(yù)測(cè)目標(biāo)定義為“基因表達(dá)的變化量”或“是否顯著變化”。這聽(tīng)起來(lái)簡(jiǎn)單但處理組和對(duì)照組通常不是同一批細(xì)胞批次效應(yīng)會(huì)混入差異信號(hào)。更嚴(yán)格的設(shè)計(jì)是使用同一細(xì)胞系的配對(duì)數(shù)據(jù)或者加入對(duì)照樣本作為條件輸入讓模型顯式學(xué)習(xí)藥物擾動(dòng)帶來(lái)的增量。3.4 未知藥物的外推這是整個(gè)任務(wù)最難、也是最有價(jià)值的地方。訓(xùn)練集中有 100 種藥物測(cè)試集中出現(xiàn) 5 種從未見(jiàn)過(guò)的新藥模型看到的是完全陌生的分子結(jié)構(gòu)。它不能靠記憶答案必須學(xué)到“分子結(jié)構(gòu)特征與細(xì)胞狀態(tài)變化之間的底層規(guī)律”。這樣跨分布泛化能力本質(zhì)上是對(duì)模型表征學(xué)習(xí)能力的考驗(yàn)也直接關(guān)系到框架是否有實(shí)用價(jià)值。4. 這個(gè)新框架的核心設(shè)計(jì)思路從題目和這類(lèi)方法的一般設(shè)計(jì)邏輯推斷該框架至少會(huì)包含幾個(gè)關(guān)鍵模塊單細(xì)胞基礎(chǔ)模型、藥物表示模塊、擾動(dòng)條件生成模塊、評(píng)估與校準(zhǔn)模塊。這是一種很典型的“虛擬細(xì)胞”框架架構(gòu)每個(gè)模塊解決一個(gè)具體問(wèn)題。4.1 單細(xì)胞基礎(chǔ)模型先學(xué)會(huì)讀懂細(xì)胞要讓框架理解未知藥物的響應(yīng)第一步不是預(yù)測(cè)而是先讓模型知道“一個(gè)細(xì)胞正常狀態(tài)下長(zhǎng)什么樣”。這通常通過(guò)大規(guī)模預(yù)訓(xùn)練實(shí)現(xiàn)用大量無(wú)標(biāo)簽單細(xì)胞轉(zhuǎn)錄組數(shù)據(jù)訓(xùn)練一個(gè)自編碼器或掩碼語(yǔ)言模型讓模型學(xué)習(xí)基因之間的共表達(dá)模式、細(xì)胞類(lèi)型之間的差異、以及不同狀態(tài)下細(xì)胞嵌入的分布規(guī)律。這個(gè)預(yù)訓(xùn)練步驟非常關(guān)鍵。它相當(dāng)于給框架建立一套“細(xì)胞語(yǔ)言模型”。有了這套語(yǔ)言模型后續(xù)預(yù)測(cè)藥物響應(yīng)時(shí)模型不是從零開(kāi)始而是在已經(jīng)理解細(xì)胞基本語(yǔ)法的基礎(chǔ)上學(xué)習(xí)“藥物擾動(dòng)”這個(gè)特殊語(yǔ)法。單細(xì)胞基礎(chǔ)模型近兩年發(fā)展很快有基于 Transformer 的也有基于圖神經(jīng)網(wǎng)絡(luò)的還有用擴(kuò)散模型做生成式建模的。無(wú)論具體結(jié)構(gòu)如何目標(biāo)都是一致的把高維稀疏基因表達(dá)變成低維、稠密、有生物學(xué)意義的細(xì)胞嵌入。4.2 藥物分子表征模塊讓模型理解化學(xué)藥物分子表征模塊負(fù)責(zé)把化學(xué)結(jié)構(gòu)轉(zhuǎn)成模型可以處理的向量。對(duì)于預(yù)測(cè)響應(yīng)的框架來(lái)說(shuō)這個(gè)模塊與生物模塊必須形成聯(lián)合特征空間否則就會(huì)出現(xiàn)“化學(xué)特征學(xué)得好但細(xì)胞響應(yīng)預(yù)測(cè)不準(zhǔn)”的割裂問(wèn)題。高質(zhì)量的藥物表征通常需要結(jié)合多個(gè)學(xué)科知識(shí)化學(xué)結(jié)構(gòu)決定分子性質(zhì)、拓?fù)浣Y(jié)構(gòu)影響靶點(diǎn)結(jié)合、物理化學(xué)性質(zhì)決定吸收分布代謝等參數(shù)。因此一個(gè)負(fù)責(zé)任的框架不會(huì)只用一種藥物特征而是讓模型在不同特征之間做注意力融合或?qū)Ρ葘W(xué)習(xí)幫助模型在訓(xùn)練中學(xué)會(huì)關(guān)注與細(xì)胞響應(yīng)最相關(guān)的化學(xué)信息。4.3 擾動(dòng)條件生成模塊預(yù)測(cè)“會(huì)發(fā)生什么”在拿到細(xì)胞狀態(tài)嵌入和藥物分子表征之后核心預(yù)測(cè)模塊就要工作了。它需要輸出一個(gè)“未來(lái)的細(xì)胞狀態(tài)”嵌入或者直接輸出基因表達(dá)變化量。如果框架采用生成式路線它會(huì)用條件變分自編碼器或擴(kuò)散模型在給定條件下采樣可能的響應(yīng)分布如果采用判別式路線它會(huì)直接預(yù)測(cè)差異表達(dá)基因集合或基因表達(dá)變化均值。條件生成的價(jià)值在于它能夠表達(dá)“不確定性”。同一個(gè)藥物作用于同一個(gè)基因背景下的細(xì)胞結(jié)果也不是單一的有些細(xì)胞會(huì)響應(yīng)有些不響應(yīng)有些走向不同命運(yùn)。輸出一個(gè)分布比輸出一個(gè)點(diǎn)估計(jì)更符合生物學(xué)現(xiàn)實(shí)。4.4 評(píng)估與校準(zhǔn)模塊確保預(yù)測(cè)可信虛擬細(xì)胞框架如果沒(méi)有一套嚴(yán)格評(píng)估流程很容易變成“自我感覺(jué)良好的花架子”。新框架大概率會(huì)在評(píng)估上花大量心思尤其強(qiáng)調(diào)“未知藥物”的測(cè)試協(xié)議訓(xùn)練集與測(cè)試集的藥物結(jié)構(gòu)不能高度相似最好用骨架聚類(lèi)來(lái)劃分評(píng)估指標(biāo)要兼顧預(yù)測(cè)精度、排序能力和不確定性校準(zhǔn)。這樣就避免模型通過(guò)化學(xué)相似性“間接記憶”測(cè)試集藥物。這種模塊化設(shè)計(jì)值得每一個(gè)想進(jìn)入這個(gè)領(lǐng)域的人借鑒。不要一上來(lái)就追求一個(gè)端到端的大黑箱而是把任務(wù)拆成“理解細(xì)胞”“理解藥物”“學(xué)習(xí)擾動(dòng)規(guī)律”“驗(yàn)證預(yù)測(cè)可信度”四個(gè)子問(wèn)題每個(gè)子問(wèn)題獨(dú)立設(shè)計(jì)、獨(dú)立評(píng)估最后再通過(guò)聯(lián)合訓(xùn)練串起來(lái)。這種做法在工程上也更可控。5. 一個(gè)可以落地的框架原型思路如果你被這套想法吸引也想在自己的數(shù)據(jù)上做實(shí)驗(yàn)下面給出一個(gè)通用最小實(shí)現(xiàn)思路。這些代碼不是原論文復(fù)現(xiàn)而是把“單細(xì)胞響應(yīng)預(yù)測(cè)框架”的常見(jiàn)流程拆成可運(yùn)行的結(jié)構(gòu)方便你理解工程實(shí)現(xiàn)要點(diǎn)。5.1 環(huán)境準(zhǔn)備與依賴工作環(huán)境建議使用 Python 3.9 以上版本核心依賴包括pip install scanpy anndata scikit-learn torch pytorch-lightning版本不寫(xiě)死因?yàn)楦黜?xiàng)目環(huán)境差異較大。scanpy用于單細(xì)胞數(shù)據(jù)讀取和預(yù)處理anndata管理數(shù)據(jù)結(jié)構(gòu)torch和pytorch-lightning負(fù)責(zé)模型訓(xùn)練。如果要用 Transformer 或圖神經(jīng)網(wǎng)絡(luò)再按需安裝對(duì)應(yīng)擴(kuò)展庫(kù)即可。5.2 單細(xì)胞數(shù)據(jù)預(yù)處理先做標(biāo)準(zhǔn)化、篩選高變基因、批次整合再劃分訓(xùn)練集和測(cè)試集。注意劃分單位是“藥物”不是“細(xì)胞”否則會(huì)導(dǎo)致嚴(yán)重的數(shù)據(jù)泄漏讓模型看似很強(qiáng)大、實(shí)則在作弊。import scanpy as sc import numpy as np from sklearn.model_selection import GroupShuffleSplit # 讀取 h5ad 格式的單細(xì)胞數(shù)據(jù) adata sc.read_h5ad(your_single_cell_dataset.h5ad) # 基礎(chǔ)質(zhì)量控制和預(yù)處理 sc.pp.filter_cells(adata, min_genes200) sc.pp.filter_genes(adata, min_cells3) sc.pp.normalize_total(adata, target_sum1e4) sc.pp.log1p(adata) # 篩選高變基因保留用于模型的輸入特征 sc.pp.highly_variable_genes(adata, n_top_genes2000, flavorseurat_v3) adata adata[:, adata.var[highly_variable]] # 按藥物分組劃分?jǐn)?shù)據(jù)訓(xùn)練集藥物與測(cè)試集藥物完全不相交 splitter GroupShuffleSplit(n_splits1, test_size0.2, random_state42) train_idx, test_idx next(splitter.split(adata.X, groupsadata.obs[drug_id])) train_adata adata[train_idx].copy() test_adata adata[test_idx].copy()這一步有兩點(diǎn)需要特別強(qiáng)調(diào)第一drug_id必須是藥物唯一標(biāo)識(shí)不包含濃度、批次等信息第二劃分之后需要檢查訓(xùn)練集和測(cè)試集藥物是否有結(jié)構(gòu)重疊如果兩個(gè)藥物骨架非常相似測(cè)試評(píng)估的可信度會(huì)降低。5.3 構(gòu)建藥物特征與細(xì)胞特征融合模型下面這個(gè)示例展示一個(gè)非常簡(jiǎn)化的預(yù)測(cè)模型輸入是一個(gè)藥物的 Morgan 指紋向量和一個(gè)細(xì)胞的基因表達(dá)向量輸出是該細(xì)胞在藥物處理后的基因表達(dá)變化量預(yù)測(cè)。實(shí)際框架里細(xì)胞基因表達(dá)往往會(huì)先經(jīng)過(guò)預(yù)訓(xùn)練的單細(xì)胞基礎(chǔ)模型轉(zhuǎn)成低維嵌入這里為了演示直接用高變基因表達(dá)作為輸入。import torch import torch.nn as nn class SingleCellDrugResponsePredictor(nn.Module): def __init__(self, cell_dim, drug_dim, hidden_dim256): super().__init__() # 細(xì)胞表達(dá)編碼器 self.cell_encoder nn.Sequential( nn.Linear(cell_dim, hidden_dim), nn.BatchNorm1d(hidden_dim), nn.ReLU(), ) # 藥物特征編碼器 self.drug_encoder nn.Sequential( nn.Linear(drug_dim, hidden_dim), nn.BatchNorm1d(hidden_dim), nn.ReLU(), ) # 融合后預(yù)測(cè)基因表達(dá)變化量 self.predictor nn.Sequential( nn.Linear(hidden_dim * 2, hidden_dim), nn.ReLU(), nn.Linear(hidden_dim, cell_dim), ) def forward(self, cell_expr, drug_fp): cell_h self.cell_encoder(cell_expr) drug_h self.drug_encoder(drug_fp) fused torch.cat([cell_h, drug_h], dim-1) return self.predictor(fused)模型結(jié)構(gòu)本身不復(fù)雜真正重要的是訓(xùn)練時(shí)如何處理響應(yīng)標(biāo)簽。響應(yīng)標(biāo)簽可以定義為“藥物處理組的平均表達(dá) - 對(duì)照組平均表達(dá)”也可以定義為配對(duì)樣本的差異。用配對(duì)數(shù)據(jù)時(shí)要注意同一個(gè)藥物、同一個(gè)細(xì)胞系的處理組和對(duì)照組才能這樣算否則差異信號(hào)里會(huì)混入批次噪聲。5.4 訓(xùn)練與評(píng)估流程import pytorch_lightning as pl import torch.nn.functional as F from torch.utils.data import DataLoader, TensorDataset class LitResponsePredictor(pl.LightningModule): def __init__(self, model, lr1e-3): super().__init__() self.model model self.lr lr def training_step(self, batch, batch_idx): cell_expr, drug_fp, target batch pred self.model(cell_expr, drug_fp) loss F.mse_loss(pred, target) self.log(train_loss, loss) return loss def validation_step(self, batch, batch_idx): cell_expr, drug_fp, target batch pred self.model(cell_expr, drug_fp) loss F.mse_loss(pred, target) self.log(val_loss, loss) return loss def configure_optimizers(self): return torch.optim.Adam(self.model.parameters(), lrself.lr)評(píng)估不能只看整體 MSE還要分維度看已知藥物上的表現(xiàn)、未知藥物上的表現(xiàn)、不同細(xì)胞類(lèi)型上的表現(xiàn)、對(duì)高頻基因和低頻基因的表現(xiàn)。一個(gè)只對(duì)已知藥物有效、對(duì)未知藥物失效的框架在這個(gè)任務(wù)里沒(méi)有實(shí)際價(jià)值。合理的評(píng)估協(xié)議應(yīng)該是主結(jié)果直接在未知藥物測(cè)試集上報(bào)告再對(duì)比已知藥物的結(jié)果差異這個(gè)差異也能反映模型的泛化能力。5.5 配置管理與實(shí)驗(yàn)記錄實(shí)驗(yàn)配置建議使用 YAML 文件把數(shù)據(jù)路徑、超參數(shù)、模型結(jié)構(gòu)、訓(xùn)練策略這些都沉淀下來(lái)方便復(fù)現(xiàn)與協(xié)作。data: path: your_single_cell_dataset.h5ad cell_feature_dim: 2000 drug_feature: morgan_fingerprint drug_dim: 1024 test_ratio: 0.2 model: hidden_dim: 256 dropout: 0.1 train: batch_size: 128 max_epochs: 50 learning_rate: 0.001 gpu: 1 evaluation: metrics: [mse, pearson, spearman] split_by: drug_id這種配置文件看似簡(jiǎn)單卻能在團(tuán)隊(duì)協(xié)作和論文復(fù)現(xiàn)中省下大量時(shí)間。很多項(xiàng)目跑不出好結(jié)果不是因?yàn)槟P筒恍卸且驗(yàn)閷?shí)驗(yàn)記錄混亂不確定超參數(shù)和數(shù)據(jù)版本。6. 如何評(píng)估一個(gè)虛擬細(xì)胞框架好不好評(píng)估標(biāo)準(zhǔn)這件事看起來(lái)只是技術(shù)細(xì)節(jié)但實(shí)際上決定了整個(gè)領(lǐng)域的研究質(zhì)量。一個(gè)框架如果宣稱(chēng)“預(yù)測(cè)藥物響應(yīng)很準(zhǔn)”你首先要問(wèn)它是怎么劃分訓(xùn)練集和測(cè)試集的當(dāng)前比較合理的評(píng)估層級(jí)可以分成三層。第一層是“已知藥物可復(fù)現(xiàn)”。測(cè)試集里的藥物在訓(xùn)練集中出現(xiàn)過(guò)模型只需要記憶藥物與細(xì)胞響應(yīng)的映射關(guān)系就能做到不錯(cuò)的效果。這層評(píng)估主要驗(yàn)證模型是否有足夠的擬合能力不能說(shuō)明泛化能力。第二層是“未知藥物可泛化”。測(cè)試集藥物與訓(xùn)練集藥物在分子結(jié)構(gòu)上有一定差異模型必須利用分子表征來(lái)推斷。這個(gè)難度明顯更高也是最接近真實(shí)藥物研發(fā)場(chǎng)景的評(píng)估方式。從當(dāng)前領(lǐng)域進(jìn)展來(lái)看已有的公開(kāi)方法對(duì)這個(gè)層級(jí)的預(yù)測(cè)能力還在持續(xù)提升中距離完美外推還有很大差距。第三層是“跨數(shù)據(jù)集、跨平臺(tái)可遷移”。在 A 實(shí)驗(yàn)室的數(shù)據(jù)上訓(xùn)練到 B 實(shí)驗(yàn)室的獨(dú)立數(shù)據(jù)集上測(cè)試。這是對(duì)框架魯棒性最嚴(yán)格的檢驗(yàn)也是最容易被忽視的。單細(xì)胞數(shù)據(jù)批次效應(yīng)嚴(yán)重如果框架在這個(gè)層級(jí)上仍然保持較強(qiáng)預(yù)測(cè)能力說(shuō)明它學(xué)到的可能真的是生物學(xué)規(guī)律而不是數(shù)據(jù)集里的偽相關(guān)信號(hào)。評(píng)估指標(biāo)方面任務(wù)不同會(huì)有差異?;貧w任務(wù)常用 Pearson 相關(guān)系數(shù)和 Spearman 相關(guān)系數(shù)看預(yù)測(cè)基因變化量與真實(shí)變化量的相關(guān)程度分類(lèi)任務(wù)常用 AUROC 和 PR-AUC看區(qū)分“響應(yīng)/不響應(yīng)”的能力。近年越來(lái)越多論文強(qiáng)調(diào)“不確定性校準(zhǔn)”希望模型在輸出預(yù)測(cè)時(shí)同時(shí)告訴研究者“這個(gè)預(yù)測(cè)我有多大把握”。對(duì)于實(shí)際實(shí)驗(yàn)驗(yàn)證來(lái)說(shuō)一個(gè)經(jīng)過(guò)良好校準(zhǔn)的不確定性分?jǐn)?shù)往往比點(diǎn)到平均值的精確預(yù)測(cè)更有指導(dǎo)價(jià)值。對(duì)讀者來(lái)說(shuō)看到論文時(shí)不要被大詞匯迷惑先看評(píng)估協(xié)議。如果一張圖表只展示了已知藥物上的表現(xiàn)那只能說(shuō)明模型有學(xué)習(xí)能力不能說(shuō)明它解決了未知藥物預(yù)測(cè)問(wèn)題如果模型在結(jié)構(gòu)和生物機(jī)制上都沒(méi)有任何可解釋的輸出那它作為“虛擬細(xì)胞”的說(shuō)法也要打折扣。7. 常見(jiàn)問(wèn)題與排查方法在你的實(shí)際復(fù)現(xiàn)和實(shí)驗(yàn)過(guò)程中大概率會(huì)遇到下面這些問(wèn)題。這里整理一個(gè)簡(jiǎn)要的排查表。問(wèn)題現(xiàn)象可能原因排查方式解決方案模型在訓(xùn)練集上預(yù)測(cè)很準(zhǔn)測(cè)試集上效果崩盤(pán)數(shù)據(jù)劃分時(shí)不按藥物分組造成數(shù)據(jù)泄漏檢查測(cè)試集訓(xùn)練集的藥物是否有重疊嚴(yán)格按藥物 ID 分組劃分使用 scaffold 聚類(lèi)確保分子結(jié)構(gòu)差異未知藥物表現(xiàn)遠(yuǎn)低于已知藥物模型過(guò)于依賴記憶沒(méi)有學(xué)到化學(xué)結(jié)構(gòu)與響應(yīng)的關(guān)系對(duì)比已知/未知藥物分組結(jié)果查看模型是否主要依賴細(xì)胞特征引入預(yù)訓(xùn)練藥物表征使用對(duì)比學(xué)習(xí)約束藥物特征與細(xì)胞響應(yīng)對(duì)齊預(yù)測(cè)結(jié)果充滿隨機(jī)噪聲重復(fù)運(yùn)行差異大單細(xì)胞測(cè)序數(shù)據(jù)批次效應(yīng)嚴(yán)重標(biāo)簽本身噪聲大按批次可視化樣本分布檢查對(duì)照組與處理組的均值差異增加批次整合步驟使用配對(duì)樣本計(jì)算響應(yīng)標(biāo)簽訓(xùn)練時(shí)啟用固定隨機(jī)種子模型輸出接近均值無(wú)法捕捉不同細(xì)胞的異質(zhì)性模型容量不足或訓(xùn)練標(biāo)簽被過(guò)度平均化查看每個(gè)細(xì)胞預(yù)測(cè)值的方差檢查損失曲線增加模型容量引入條件生成模型或者在特征層加入細(xì)胞類(lèi)型信息預(yù)處理后基因數(shù)量非常大訓(xùn)練速度極慢沒(méi)有做高變基因篩選或特征選擇查看輸入維度檢查內(nèi)存占用用highly_variable_genes降維或采用預(yù)訓(xùn)練細(xì)胞嵌入替代原始表達(dá)復(fù)現(xiàn)論文時(shí)結(jié)果對(duì)不上數(shù)據(jù)版本、預(yù)處理流程、隨機(jī)種子不一致核對(duì)數(shù)據(jù)下載版本記錄每一步預(yù)處理參數(shù)建立完整的配置文件把數(shù)據(jù)版本、預(yù)處理步驟、模型超參數(shù)全部固定下來(lái)這些問(wèn)題里最隱蔽的是數(shù)據(jù)泄漏。許多看起來(lái)效果拔群的模型最后被發(fā)現(xiàn)在數(shù)據(jù)劃分上把同一個(gè)藥物的不同批次分別放進(jìn)了訓(xùn)練集和測(cè)試集導(dǎo)致模型表面上是“預(yù)測(cè)未知藥物”實(shí)際上是在“回憶同藥物的相似樣本”。這個(gè)問(wèn)題在每個(gè)論文復(fù)現(xiàn)前都應(yīng)該先檢查一遍。8. 工程實(shí)踐與科研建議如果你準(zhǔn)備在團(tuán)隊(duì)或?qū)嶒?yàn)室里啟動(dòng)“虛擬細(xì)胞”相關(guān)方向下面這些工程層面的建議非常值得注意。8.1 數(shù)據(jù)版本管理比模型結(jié)構(gòu)更重要單細(xì)胞數(shù)據(jù)動(dòng)輒幾十 GB預(yù)處理后還會(huì)產(chǎn)生多個(gè)中間版本。如果不用類(lèi)似dvc或wandb這類(lèi)工具管理數(shù)據(jù)版本和實(shí)驗(yàn)記錄幾個(gè)月后你可能根本說(shuō)不清某個(gè)模型是用哪份數(shù)據(jù)訓(xùn)練出來(lái)的。建議從第一天開(kāi)始就把“數(shù)據(jù)版本 預(yù)處理代碼 模型配置 實(shí)驗(yàn)結(jié)果”綁定在一起這能極大減少無(wú)效返工。8.2 先跑通小規(guī)模基線再升級(jí)模型復(fù)雜度不要一上來(lái)就追求超大預(yù)訓(xùn)練模型。建議先用一個(gè)簡(jiǎn)單 MLP 或 GNN 在小規(guī)模數(shù)據(jù)上跑通全流程確保數(shù)據(jù)預(yù)處理、標(biāo)簽構(gòu)建、評(píng)估協(xié)議都是正確的再去升級(jí)基礎(chǔ)模型。這個(gè)道理在很多深度學(xué)習(xí)項(xiàng)目里都適用但在單細(xì)胞響應(yīng)預(yù)測(cè)里尤其重要因?yàn)閿?shù)據(jù)管線極長(zhǎng)、坑點(diǎn)極多一旦出問(wèn)題你很難判斷是數(shù)據(jù)問(wèn)題還是模型問(wèn)題。8.3 批次效應(yīng)是最大的隱性風(fēng)險(xiǎn)單細(xì)胞轉(zhuǎn)錄組數(shù)據(jù)的批次效應(yīng)往往比藥物響應(yīng)信號(hào)本身更強(qiáng)。很多模型在訓(xùn)練集上表現(xiàn)好、測(cè)試集上崩潰原因不是模型不夠強(qiáng)而是它把批次信息當(dāng)成了響應(yīng)信號(hào)。從工程角度建議在建模前先做批次整合可視化看看處理組和對(duì)照組是否能在 UMAP 上明顯區(qū)分區(qū)分方向是否符合生物學(xué)預(yù)期。如果處理組內(nèi)部都分成多個(gè)小簇那大概率是批次效應(yīng)主導(dǎo)了差異。8.4 生物可解釋性不是可選項(xiàng)虛擬細(xì)胞框架如果要真正服務(wù)藥物研發(fā)就不能只輸出一個(gè)數(shù)字。研究者需要知道模型關(guān)注了哪些基因這些基因是否落到了已知的信號(hào)通路里預(yù)測(cè)結(jié)果能否被已有的生物學(xué)知識(shí)解釋??梢栽谀P椭屑尤胱⒁饬C(jī)制或者用 SHAP、集成梯度等方法分析模型輸入的重要性。如果某個(gè)藥物預(yù)測(cè)響應(yīng)很強(qiáng)的基因集合全是未知功能基因那模型可能學(xué)到了某種新的生物學(xué)機(jī)制也可能是在擬合噪聲需要做實(shí)驗(yàn)驗(yàn)證才能判斷。8.5 算力資源要有梯度規(guī)劃單細(xì)胞數(shù)據(jù)規(guī)模大藥物響應(yīng)框架通常需要多輪實(shí)驗(yàn)。不是每一次實(shí)驗(yàn)都要用最大模型、最大數(shù)據(jù)集。建議先做消融實(shí)驗(yàn)用部分?jǐn)?shù)據(jù)驗(yàn)證某個(gè)模塊是否真的有幫助確認(rèn)之后再擴(kuò)展到全數(shù)據(jù)。這樣可以節(jié)省大量算力成本也讓實(shí)驗(yàn)周期更可控。8.6 多團(tuán)隊(duì)協(xié)作時(shí)的接口統(tǒng)一虛擬細(xì)胞是一個(gè)高度跨學(xué)科方向通常需要生物實(shí)驗(yàn)團(tuán)隊(duì)、生物信息團(tuán)隊(duì)、算法團(tuán)隊(duì)協(xié)作。團(tuán)隊(duì)之間的數(shù)據(jù)格式、基因命名標(biāo)準(zhǔn)、藥物 ID 體系、標(biāo)簽定義如果不統(tǒng)一會(huì)產(chǎn)生大量溝通成本。建議把數(shù)據(jù)接口定義成項(xiàng)目文檔的一部分例如統(tǒng)一使用 Ensembl ID 表示基因、使用 InChI Key 表示藥物分子避免因?yàn)槊灰恢聦?dǎo)致后續(xù)無(wú)法對(duì)齊。9. 總結(jié)與后續(xù)學(xué)習(xí)方向回到文章開(kāi)頭的問(wèn)題我們能不能構(gòu)建一個(gè)“細(xì)胞版大模型”讓它預(yù)測(cè)未知藥物對(duì)單細(xì)胞的影響從這篇 Nature Machine Intelligence 研究看答案是“正在成為可能”但前提是必須把任務(wù)定義清楚、把評(píng)估協(xié)議設(shè)計(jì)嚴(yán)格、把工程實(shí)踐做扎實(shí)。這篇文章真正想表達(dá)的判斷是虛擬細(xì)胞的價(jià)值不在于短期內(nèi)造出一個(gè)“完整細(xì)胞模擬器”而在于把細(xì)胞科學(xué)中的復(fù)雜問(wèn)題轉(zhuǎn)化為可計(jì)算、可驗(yàn)證、可迭代的框架。而“未知藥物單細(xì)胞響應(yīng)預(yù)測(cè)”正是這個(gè)框架里最值得優(yōu)先突破的方向之一。它既與真實(shí)藥物研發(fā)場(chǎng)景直接相關(guān)又不像“全細(xì)胞模擬”那樣遙不可及是一個(gè)既有挑戰(zhàn)、又能看到進(jìn)展的好問(wèn)題。如果你對(duì)這個(gè)方向感興趣下一步可以按這個(gè)順序自學(xué)第一熟悉單細(xì)胞轉(zhuǎn)錄組數(shù)據(jù)的讀取、預(yù)處理和可視化重點(diǎn)理解批次效應(yīng)和數(shù)據(jù)劃分方法第二掌握藥物分子表征的常用手段建議從 Morgan 指紋和圖神經(jīng)網(wǎng)絡(luò)開(kāi)始第三閱讀近年單細(xì)胞基礎(chǔ)模型相關(guān)論文理解嵌入和預(yù)訓(xùn)練思想如何應(yīng)用在細(xì)胞數(shù)據(jù)上第四自己動(dòng)手跑通一個(gè)最小預(yù)測(cè)流程再針對(duì)未知藥物泛化這個(gè)難點(diǎn)設(shè)計(jì)實(shí)驗(yàn)、做多組對(duì)照。做這個(gè)方向很容易在一堆復(fù)雜模型和數(shù)據(jù)細(xì)節(jié)里迷失。但記住一條主線框架設(shè)計(jì)的目標(biāo)始終是回答“如果給模型一種從未見(jiàn)過(guò)的藥物它能不能幫我們理解細(xì)胞會(huì)怎么反應(yīng)”。所有模塊、數(shù)據(jù)和算力都是為這個(gè)目標(biāo)服務(wù)的。建議把本文提到的評(píng)估協(xié)議、數(shù)據(jù)劃分原則、工程管理方案收藏起來(lái)。等你自己真的復(fù)現(xiàn)一個(gè)虛擬細(xì)胞模型時(shí)再回頭看這些問(wèn)題會(huì)有完全不同的體會(huì)。