教程(16):監(jiān)管路徑——把插件放進(jìn)申報(bào)信封)
虛擬器官插件開發(fā)教程16監(jiān)管路徑——把插件放進(jìn)申報(bào)信封版本聲明塊監(jiān)管文本ICH E14/S7B QA Step 42022-02-21、FDA Federal Register 2022-18515、FDAMA 2.02022-12-29 簽署、FDA《減少臨床前安全性評(píng)價(jià)動(dòng)物試驗(yàn)路線圖》2025-04media/186092及第一年進(jìn)展報(bào)告2026-04-20media/191986、歐委會(huì) C(2026) 3497工具/軟件Python 3.11 PyYAML 6.x申報(bào)附錄生成心臟插件口徑見第 17 篇、肝插件見第 18 篇、驗(yàn)證見第 15 篇本文目標(biāo)把插件的仿真輸出落成一份模型能進(jìn)申報(bào)信封的合規(guī)骨架并說清它在監(jiān)管里的真實(shí)地位——支持性證據(jù)不是強(qiáng)制替代一句話結(jié)論一個(gè)心臟安全插件要進(jìn)申報(bào)靠的不是CiPA 取代了 TQT而是 ICH E14/S7B QA 把多電流 iPSC-CM ECG 的非臨床綜合風(fēng)險(xiǎn)評(píng)估納入totality of evidence證據(jù)整體作為支持性證據(jù)——把模型描述含出處 DOI如 CiPAORdv1.0 的10.3389/fphys.2017.00616、輸入溯源、驗(yàn)證結(jié)果Li 202010.1002/cpt.1647口徑、限制聲明四件套用build_appendix()從 YAML 渲染成 Markdown就是申報(bào)附錄的最小可交付。〇、本篇要解決的認(rèn)知問題我的插件算出來的 qNet/肝細(xì)胞損失監(jiān)管到底認(rèn)不認(rèn)它的確切地位是什么CiPA 已經(jīng)取代 TQT 研究這句話能不能寫進(jìn)申報(bào)材料模型自帶的驗(yàn)證第 15 篇和申報(bào)文檔本篇是什么關(guān)系為什么缺一不可FDAMA 2.0 與 FDA 2025 路線圖給插件替代動(dòng)物實(shí)驗(yàn)提供了多大的政策空間邊界又在哪一份能被審評(píng)員接受的模型申報(bào)附錄到底要包含哪幾塊怎么把它自動(dòng)化生成一、機(jī)制解析模型證據(jù)在監(jiān)管鏈條里的真實(shí)坐標(biāo)先破一個(gè)流傳很廣的誤解。CiPA 官網(wǎng)的原話是CiPA 的相關(guān)工作 “was used to inform the ICH E14/S7B Implementation Working Group”被用于為 ICH E14/S7B 實(shí)施工作組提供參考?!癷nform是提供參考輸入”不是取代。E14/S7B QA 的措辭也是非臨床綜合風(fēng)險(xiǎn)評(píng)估CiPA 式多電流阻滯 hiPSC-CM 臨床 ECG可作為totality of evidence的一部分支持促心律失常風(fēng)險(xiǎn)評(píng)估。這里的關(guān)鍵詞是 totality of evidence證據(jù)整體首現(xiàn)給英文——模型是證據(jù)鏈里的一環(huán)而不是替代整條鏈。更要注意 CiPA 的 Steering TeamFDA/HESI/CSRC/SPS/EMA/Health Canada/日本 NIHS/PMDA在官網(wǎng)掛了明確 Disclaimer不提供背書或認(rèn)證。這條免責(zé)恰好反過來指導(dǎo)我們——模型必須自帶驗(yàn)證包因?yàn)闆]有一個(gè)權(quán)威機(jī)構(gòu)會(huì)替你的模型簽字。把監(jiān)管坐標(biāo)拆成三層插件開發(fā)者要各就各位層文本/事實(shí)對(duì)插件的意義表述紅線臨床 ECGE14/S7B QA 以C-QTc 為主要分析接受TQT 替代路徑QA 5.1 與 6.1你的 in silico 結(jié)論要與 C-QTc/I 期 ECG 證據(jù)互證禁寫CiPA 已正式取代 TQT/成為強(qiáng)制方法非臨床綜合多電流 iPSC-CM ECG 納入 totality of evidence支持性插件輸出定位為支持性證據(jù)寫支持性/weight of evidence不寫決定性算法使用細(xì)則IWG第二階段 QA 主題如何使用促心律失常預(yù)測(cè)算法/模型結(jié)果概念文仍在制定模型進(jìn)申報(bào)有路但細(xì)則未定寫算法使用細(xì)則仍在制定再看 NAM新 approaches methodologies新途徑學(xué)方法這股東風(fēng)給插件開發(fā)者開了多大的窗。FDAMA 2.02022-12-29 簽署把法規(guī)措辭從 “animal tests”動(dòng)物試驗(yàn)改為 “nonclinical tests or studies”非臨床試驗(yàn)或研究并點(diǎn)名了替代技術(shù)細(xì)胞基檢測(cè)、microphysiological systems (MPS), such as organ-on-a-chip微生理系統(tǒng)如器官芯片、computer/algorithmic models計(jì)算機(jī)/算法模型、類器官、高通量篩選與組學(xué)。注意——computer models 是被法定點(diǎn)名的類別之一這正是虛擬器官插件的合法性錨點(diǎn)。FDA 2025-04 路線圖進(jìn)一步設(shè)定3-5 年內(nèi)讓動(dòng)物研究從默認(rèn)變例外起點(diǎn)是單抗2025-12-02 發(fā)布了取消非腫瘤單抗 6 個(gè)月 NHP 毒理的精簡(jiǎn)草案2026-04-20 宣布第一年目標(biāo)達(dá)成。歐盟側(cè)有 Directive 2010/63/EU3Rs 錨點(diǎn)、歐委會(huì) C(2026) 3497 化學(xué)品安全性評(píng)估動(dòng)物試驗(yàn)逐步退出路線圖以及 REACH2.0 修訂第 25 條動(dòng)物試驗(yàn)僅作last resort最后手段。這里必須給替代動(dòng)物實(shí)驗(yàn)這句話劃紅線政策方向是減少依賴DILIsym 官方定位原話就是 “reducing reliance on animal testing”REACH 的措辭是最后手段都不是已全面禁止。寫申報(bào)材料時(shí)用支持減少/替代部分動(dòng)物試驗(yàn)絕不寫已全面禁止動(dòng)物試驗(yàn)。最后是文檔落點(diǎn)。一個(gè)插件的仿真結(jié)果要變成審評(píng)員手里的證據(jù)需要申報(bào)四件套┌──────────────── 模型申報(bào)附錄四件套 ────────────────┐ │ (1) 模型描述 name/version/DOI/license/intended_use │ ← 鐵律 23出處與許可鎖死 │ (2) 輸入溯源 IC50/PBPK暴露/參照集每個(gè)帶 provenance │ ← 鐵律 110單位批次 │ (3) 驗(yàn)證結(jié)果 靈敏度/特異度/錯(cuò)分率 不確定度(第15篇) │ ← Li 2020 10.1002/cpt.1647 │ (4) 限制聲明 支持性地位 / 無背書 / 單指標(biāo)不足 │ ← 鐵律 9監(jiān)管表述克制 └────────────────────────────────────────────────────────┘第 15 篇教的是算出驗(yàn)證數(shù)字本篇教的是把數(shù)字連同它的邊界一起裝進(jìn)信封。兩者是同一條證據(jù)鏈的兩端只有驗(yàn)證數(shù)字沒有限制聲明是越權(quán)宣稱只有文檔框架沒有驗(yàn)證數(shù)字是空殼。二、完整代碼與逐行剖析申報(bào)附錄的正確做法是結(jié)構(gòu)化數(shù)據(jù)YAML與渲染Markdown分離。YAML 是單一事實(shí)源可版本控制、可被注冊(cè)表引用Markdown 是給人和審評(píng)員看的成品。下面這段把四件套從一份 YAML 檔案渲染成 Markdown可運(yùn)行、帶自檢。代碼 1申報(bào)檔案模板與生成器YAML 單一事實(shí)源 → Markdown# -*- coding: utf-8 -*-申報(bào)附錄生成器一份 YAML 模型檔案 - Markdown 申報(bào)附錄四件套骨架importyaml# 這是單一事實(shí)源。生產(chǎn)環(huán)境它由模型注冊(cè)表(第19篇)與驗(yàn)證管線(第15篇)自動(dòng)填充# 這里手寫一份最小心臟插件檔案字段嚴(yán)格對(duì)應(yīng)申報(bào)四件套。TEMPLATE_YAML model: # (1) 模型描述 name: cardiotox-CiPAORdv1.0 version: 1.2.0 doi: 10.3389/fphys.2017.00616 # 模型出處 DOI 必須鎖死(鐵律2)錯(cuò)一處全盤證據(jù)失效 license: GPL-3.0 (FDA/CiPA R code) # 許可證登記(鐵律3)GPL 代碼要鏈接隔離 intended_use: 非臨床綜合風(fēng)險(xiǎn)評(píng)估中的支持性證據(jù)不替代 TQT(ICH E14/S7B totality of evidence) inputs: # (2) 輸入溯源 - {name: hERG IC50, source: 濕測(cè)電壓鉗, unit: nM, provenance: GLP lab / batch R-2043} - {name: 游離藥濃度, source: PBPK (PK-Sim v12), unit: uM, provenance: 第11篇 CSV 契約} - {name: TdP 分層參照, source: CiPA 28, unit: category 0/1/2, provenance: github.com/FDA/CiPA} validation: # (3) 驗(yàn)證結(jié)果(第15篇口徑) principle: Li 2020, CPT 107:322-332, doi:10.1002/cpt.1647 dataset: CiPA 28 (TdP 0/1/2) sensitivity: 0.83 specificity: 0.80 misclassification: 0.19 uncertainty: 2000 參數(shù)抽樣 - qNet 置信區(qū)間(compute_qNet_CI 口徑) limitations: # (4) 限制聲明 - CiPA 證據(jù)在 ICH E14/S7B 為 totality of evidence 支持性地位算法/模型使用細(xì)則 QA 仍在制定 - 本模型不提供監(jiān)管背書(CiPA 官方 Disclaimer) - 單 hERG 不足以判風(fēng)險(xiǎn)須多電流投票(復(fù)極儲(chǔ)備) defbuild_appendix(doc:dict)-str:mdoc[model]L[# 模型申報(bào)附錄%s%m[name],,## 1. 模型描述]L.append(- 名稱/版本**%s** / %s%(m[name],m[version]))# DOI 用行內(nèi)代碼包裹避免被 Markdown 里的下劃線吃掉格式也提醒讀者這是鎖死字段L.append(- 出處 DOI%s 許可證%s%(m[doi],m[license]))L.append(- 預(yù)期用途%s%m[intended_use])# intended_use 是監(jiān)管用途聲明必須與地位一致L[,## 2. 輸入溯源,| 輸入 | 來源 | 單位 | 溯源批次 |,|---|---|---|---|]foritindoc[inputs]:# 每行一個(gè) provenance可追溯性是鐵律10的文檔化落點(diǎn)缺批次證據(jù)不可復(fù)現(xiàn)L.append(| %s | %s | %s | %s |%(it[name],it[source],it[unit],it[provenance]))vdoc[validation]L[,## 3. 驗(yàn)證結(jié)果,- 方法學(xué)%s%v[principle],- 數(shù)據(jù)集%s%v[dataset]]# 三件套以點(diǎn)估計(jì)呈現(xiàn)但下面緊跟不確定度一句話防止審評(píng)員把點(diǎn)估計(jì)當(dāng)鐵板數(shù)字L.append(- 靈敏度 / 特異度 / 錯(cuò)分率**%.2f / %.2f / %.2f**%(v[sensitivity],v[specificity],v[misclassification]))L.append(- 不確定度%s%v[uncertainty])L[,## 4. 限制聲明]forlimindoc[limitations]:L.append(- %s%lim)# 限制聲明是合規(guī)剎車越誠(chéng)實(shí)越能過審評(píng)return\n.join(L)if__name____main__:docyaml.safe_load(TEMPLATE_YAML)# 先驗(yàn)證 YAML 合法再生成——CI 里這一步失敗就不許出報(bào)告mdbuild_appendix(doc)print(md)assert10.3389/fphys.2017.00616inmdandtotality of evidenceinmdassert| hERG IC50 |inmdand0.83inmdprint(\n[selfcheck] 申報(bào)附錄四件套齊全可解析、可渲染)逐行看關(guān)鍵設(shè)計(jì)。為什么intended_use要寫支持性證據(jù)不替代 TQT因?yàn)楸O(jiān)管地位是模型的合同用途一旦你在檔案里把它寫成決定性或替代 TQT就是越權(quán)宣稱審評(píng)會(huì)直接退回。為什么許可證 GPL-3.0 要顯式登記進(jìn)申報(bào)檔案因?yàn)槟P痛a的許可證決定了你商用交付的合法路徑第 19 篇的 SBoM 治理正是從這里長(zhǎng)出來的。為什么驗(yàn)證塊后面必須跟限制聲明塊而不是收尾因?yàn)?CiPA 官方不提供背書模型的可靠性敘述必須自帶邊界——單 hERG 判風(fēng)險(xiǎn)會(huì)過度分檔第 05 篇、算法使用細(xì)則仍在制定第 16 篇機(jī)制這些不寫出來反而顯得不專業(yè)。代碼 2把驗(yàn)證數(shù)字從注冊(cè)表自動(dòng)灌進(jìn)檔案與第 19 篇審計(jì)合一申報(bào)檔案最容易造假/過時(shí)的地方是驗(yàn)證數(shù)字手填。正確做法是讓檔案從一個(gè)只讀的注冊(cè)表派生本節(jié)先演示從字典讀驗(yàn)證指標(biāo)→校驗(yàn)范圍→渲染的最小閉環(huán)完整 SQLite 版見第 19 篇。# -*- coding: utf-8 -*-驗(yàn)證數(shù)字不手填從一個(gè)事實(shí)源讀入并做范圍校驗(yàn)越界即拒絕出報(bào)告。defassert_metric(name,val,lo0.0,hi1.0):# 申報(bào)級(jí)衛(wèi)生靈敏度/特異度/錯(cuò)分率必須在 [0,1]NaN 或 1 直接判定為上游管線出錯(cuò)ifvalisNoneornot(lovalhi):raiseValueError(驗(yàn)證指標(biāo) %s%r 越界應(yīng)在[%s,%s]疑似上游未收斂%(name,val,lo,hi))returnvaldefbuild_from_registry(reg):reg 來自模型注冊(cè)表(第19篇)或驗(yàn)證管線(第15篇)的導(dǎo)出字典。vreg[validation]forkin(sensitivity,specificity,misclassification):assert_metric(k,v[k])# 三個(gè)點(diǎn)估計(jì)逐個(gè)校驗(yàn)任一越界整份檔案作廢# 錯(cuò)分率與靈敏/特異度非獨(dú)立這里做一致性交叉核對(duì)1 - 準(zhǔn)確率 近似量級(jí)# 若三者自相矛盾(如靈敏度0.83特異度0.80錯(cuò)分率卻寫0.01)說明數(shù)字被手改過要人審implied_err1-(v[sensitivity]v[specificity])/2ifabs(implied_err-v[misclassification])0.25:raiseAssertionError(錯(cuò)分率與靈敏/特異度不自洽請(qǐng)回到第15篇重算)print(檔案可簽發(fā)靈敏度%.2f 特異度%.2f 錯(cuò)分率%.2f%(v[sensitivity],v[specificity],v[misclassification]))returnTrueif__name____main__:reg{validation:{sensitivity:0.83,specificity:0.80,misclassification:0.19}}assertbuild_from_registry(reg)bad{validation:{sensitivity:1.4,specificity:0.8,misclassification:0.19}}try:build_from_registry(bad);raiseSystemExit(應(yīng)攔截越界指標(biāo))exceptValueErrorase:print([selfcheck] 越界指標(biāo)被攔截:,str(e)[:40])為什么加自洽性交叉核對(duì)申報(bào)造假最常見不是數(shù)字算錯(cuò)是數(shù)字被事后手改到互相矛盾。用靈敏度與特異度的均值粗估錯(cuò)分量級(jí)偏差超閾值就強(qiáng)制回退到第 15 篇重算——這是把人工誠(chéng)信降級(jí)成機(jī)器可檢。手寫檔案 vs 派生檔案手寫派生推薦驗(yàn)證數(shù)字來源人在文檔里敲注冊(cè)表/驗(yàn)證管線只讀導(dǎo)出版本一致性易與代碼脫節(jié)與模型 DOI/版本綁定審計(jì)可追溯無每條 run 有哈希快照第19篇三、常見報(bào)錯(cuò)與排查現(xiàn)象申報(bào)里寫CiPA 已正式取代 TQT。根因把政策方向誤讀為已生效法規(guī)。解法E14/S7B QA 只接受 C-QTc 為主要分析、TQT 替代路徑見 QA 5.1/6.1模型是 totality of evidence 的支持性證據(jù)算法使用細(xì)則的第二階段 QA 仍在制定。措辭改成作為支持性證據(jù)納入證據(jù)整體?,F(xiàn)象yaml.safe_load(TEMPLATE_YAML)報(bào) parser error。根因模板里混用了未加引號(hào)的冒號(hào)或 Tab 縮進(jìn)。解法值里含:或#的整串加雙引號(hào)只用空格縮進(jìn)先在 CI 跑一遍safe_load再出報(bào)告?,F(xiàn)象附錄生成成功但缺限制聲明。根因把驗(yàn)證結(jié)果當(dāng)成終點(diǎn)。解法四件套是硬約束limitations列表為空時(shí)生成器應(yīng)報(bào)錯(cuò)而非省略第 4 節(jié)——CiPA 官方 Disclaimer 決定了沒有邊界敘述的模型檔案不完整?,F(xiàn)象把減少動(dòng)物試驗(yàn)寫成已全面禁止動(dòng)物試驗(yàn)。根因誤讀 REACH。解法REACH 第 25 條是last resort最后手段“DILIsym 官方定位是reducing reliance on animal testing”寫支持減少/替代部分動(dòng)物試驗(yàn)引用 FDAMA 2.0 與 FDA 2025 路線圖的政策表述?,F(xiàn)象驗(yàn)證指標(biāo)靈敏度 1 或?yàn)?NaN 仍被寫進(jìn)附錄。根因上游未收斂。解法用代碼 2 的assert_metric做范圍閘門越界即拒絕簽發(fā)。四、動(dòng)手練習(xí)把TEMPLATE_YAML的intended_use改成決定性證據(jù)可完全替代 TQT 研究運(yùn)行生成器。判定標(biāo)準(zhǔn)文檔雖能渲染但你應(yīng)能在評(píng)審時(shí)一眼指出它違反鐵律 9——正確做法是改回支持性證據(jù)/totality of evidence。把misclassification從 0.19 改成 0.01運(yùn)行代碼 2。判定標(biāo)準(zhǔn)AssertionError(錯(cuò)分率與靈敏/特異度不自洽…)被觸發(fā)。新增一個(gè)inputs條目{name:ALT 代理閾值,source:機(jī)制模型,unit:fraction,provenance:第18篇}。判定標(biāo)準(zhǔn)Markdown 第 2 節(jié)表格出現(xiàn) 4 行且 YAML 仍可safe_load。五、小結(jié)與下一篇預(yù)告本篇把插件輸出→申報(bào)證據(jù)這條路走完模型在 ICH E14/S7B 里的地位是 totality of evidence 的支持性證據(jù)CiPA 官方不背書所以模型必須自帶驗(yàn)證包FDAMA 2.0/FDA 2025 路線圖/歐盟 C(2026) 3497 給出了減少動(dòng)物試驗(yàn)的政策窗口但邊界是最后手段不是全面禁止。申報(bào)落點(diǎn)是四件套——模型描述、輸入溯源、驗(yàn)證結(jié)果、限制聲明用build_appendix()從 YAML 派生、用范圍與自洽校驗(yàn)把守。驗(yàn)證數(shù)字怎么來在第 15 篇詳述檔案字段如何被注冊(cè)表統(tǒng)一治理在第 19 篇展開。下一篇第 17 篇進(jìn)入實(shí)戰(zhàn)把這套契約與文檔落地成一個(gè)端到端可跑、帶 CiPA 28 子集回歸的心臟安全插件 cardiotox。本篇認(rèn)知問題回顯FAQQ1ICH E14/S7B QA 下心臟安全插件算出的 qNet 在監(jiān)管里是什么地位A屬于非臨床綜合風(fēng)險(xiǎn)評(píng)估的一部分作為 totality of evidence證據(jù)整體的支持性證據(jù)C-QTc 是臨床主要分析TQT 替代路徑見 QA 5.1/6.1。它是支持性不是決定性且如何使用算法/模型的第二階段 QA 仍在制定。Q2能不能寫CiPA 已經(jīng)取代 TQTA不能。CiPA 官網(wǎng)原話是其工作was used to inform the ICH E14/S7B Implementation Working Group為工作組提供參考且官方聲明不提供背書。正確表述是CiPA 式多電流 iPSC-CM ECG 證據(jù)納入 totality of evidence 作為支持CiPA 已取代 TQT屬過頭表述。Q3為什么申報(bào)附錄里必須包含限制聲明和模型出處 DOIACiPA 官方不提供監(jiān)管背書所以模型必須自帶驗(yàn)證與邊界敘述。出處 DOI如 CiPAORdv1.0 的 10.3389/fphys.2017.00616錯(cuò)一處會(huì)讓整條申報(bào)證據(jù)失效限制聲明寫明支持性地位、無背書、單 hERG 不足以判風(fēng)險(xiǎn)缺它檔案不完整。Q4FDAMA 2.0 與 FDA 2025 路線圖給插件多大政策空間邊界在哪AFDAMA 2.02022-12-29 簽署點(diǎn)名 computer/algorithmic models 與器官芯片MPS, organ-on-a-chip為合法替代技術(shù)把a(bǔ)nimal tests改為nonclinical tests or studiesFDA 2025 路線圖欲在 3-5 年讓動(dòng)物研究從默認(rèn)變例外。邊界是減少依賴/最后手段不是已全面禁止動(dòng)物試驗(yàn)措辭要克制。Q5申報(bào)附錄的四件套具體指什么怎么自動(dòng)生成A模型描述name/version/DOI/license/intended_use、輸入溯源每個(gè)帶單位與批次、驗(yàn)證結(jié)果靈敏度/特異度/錯(cuò)分率不確定度、限制聲明。用build_appendix()從一份 YAML 單一事實(shí)源渲染成 Markdownyaml.safe_load先驗(yàn)合法性指標(biāo)越界即拒絕簽發(fā)。