Synthetic Data Generator (SDG) 完整教學

Repository: https://github.com/SDM-TIB/Synthetic-Data-Generator Stars: 3 | Language: Python | License: MIT Tags: breast-cancer, csv, data-generator, process-based, rdf, sql 最後更新: 2025-11-20

2. 核心架構

2.1 系統架構圖


graph TB
    subgraph Input["輸入參數"]
        N["患者數量
-n patients"] P["突變機率
-p mutation_prob"] end subgraph Docker["Docker Container (MySQL 8.1)"] subgraph Init["初始化階段"] SQL_SCHEMA["table_structure.sql
建立 11 張表 +
66 種化療方案 +
30 種 CUI 描述"] DB["MySQL 8.1
synth database"] SQL_SCHEMA --> DB end subgraph Gen["資料生成階段 (SDG.py)"] direction TB DEMO["1. 人口統計
年齡 ~ N(57, 10)"] TUMOR["2. 腫瘤分型
PP/PN/NP/NN"] STAGE["3. TNM 分期
Stage 0-IV"] IHC["4. IHC 標記
ER/PR/HER2/Ki67"] NEO["5. 新輔助化療
3-5 週期"] SURG["6. 手術
Mastectomy/Partial"] ADJ["7. 輔助化療
3-20 週期"] RADIO["8. 放射治療
劑量 ~ N(46, 8.4) Gy"] COMOR["9. 共病症
17 類"] ORAL["10. 口服藥物
15 種"] FAM["11. 家族史
30 種 CUI"] DEMO --> TUMOR --> STAGE --> IHC IHC --> NEO --> SURG --> ADJ --> RADIO RADIO --> COMOR --> ORAL --> FAM end Gen -->|INSERT| DB end N --> Gen P --> Gen subgraph Output["三格式輸出 → ./data/"] CSV["CSV
每表一個 .csv"] RDF_OUT["RDF (N-Triples)
synth_data.nt
via SDM-RDFizer"] SQL_DUMP["SQL Dump
synth_data.sql.gz"] end DB -->|mysqldump| SQL_DUMP DB -->|SELECT *| CSV DB -->|RML mapping.ttl
+ SDM-RDFizer| RDF_OUT style Input fill:#e1f5fe,stroke:#0288d1 style Docker fill:#fff3e0,stroke:#f57c00 style Output fill:#e8f5e9,stroke:#388e3c style Gen fill:#fce4ec,stroke:#c62828

2.2 關鍵機率分佈參數

SDG 的核心是一組 來自真實族群統計的機率分佈,以下列出最重要的幾個:


graph LR
    subgraph TumorType["腫瘤分型機率"]
        PP["ER+/HER2+
11.07%"] PN["ER+/HER2-
75.74%"] NP["ER-/HER2+
4.37%"] NN["ER-/HER2-
8.82%"] end subgraph StageDx["診斷分期分佈"] S0["Stage 0: 8.5%"] SIA["Stage IA: 32.4%"] SIIA["Stage IIA: 22.6%"] SIIB["Stage IIB: 11.8%"] SIIIA["Stage IIIA: 8.7%"] SIV["Stage IV: 6.4%"] end subgraph DeathRate["死亡率 (依分型)"] D_PP["PP: 9.0%"] D_PN["PN: 12.3%"] D_NP["NP: 12.1%"] D_NN["NN: 16.8%"] end style TumorType fill:#e8eaf6,stroke:#3f51b5 style StageDx fill:#fce4ec,stroke:#e91e63 style DeathRate fill:#fff8e1,stroke:#ff8f00

2.3 突變機率機制

mutation_probability 參數是 SDG 的獨特設計。當此值為 0.0 時,生成的資料完全遵循治療指引 (Clinical Guidelines; 臨床指引);當值 > 0.0 時,每個資料欄位都有機率被「突變」(偏離正常值),模擬真實世界中的資料錯誤、異常值或非標準治療:

突變機率效果適用場景
0.0完全遵循指引的乾淨資料訓練標準模型、驗證演算法
0.01-0.05少量雜訊,模擬資料品質問題測試資料清洗管線
0.1-0.3中等雜訊,模擬真實世界資料評估模型 Robustness (穩健性)
0.5+大量異常值壓力測試、異常偵測模型開發

2.4 檔案結構

 1Synthetic-Data-Generator/
 2├── SDG.py                  # 主程式:669 行 Python,包含所有生成邏輯
 3├── table_structure.sql     # MySQL Schema 定義 + 預載資料(化療方案、CUI 描述)
 4├── mapping.ttl             # RML (RDF Mapping Language) 對應規則
 5├── requirements.txt        # Python 依賴:rdfizer, mysql-connector, numpy, pandas
 6├── Dockerfile              # 基於 mysql:8.1.0 的容器定義
 7├── docker-compose.yml      # Docker Compose 編排設定
 8├── generate.sh             # 一鍵生成 Shell Script
 9├── CITATION.cff            # 引用資訊
10├── er-diagram-generated-data.jpg  # ER Diagram 圖片
11└── data/                   # 生成的輸出目錄(執行後產生)
12    ├── csv/                # 每張表一個 CSV 檔案
13    │   ├── patient.csv
14    │   ├── tumor_tnm.csv
15    │   └── ...
16    ├── synth_data.nt       # RDF N-Triples 格式
17    └── synth_data.sql.gz   # MySQL dump 壓縮檔

3. 安裝與設定

3.1 系統需求

需求版本說明
Docker20.0+必要 – SDG 完全在 Docker 容器內執行
Docker Composev2+選用 – 方便多次生成
磁碟空間~1 GBDocker Image (mysql:8.1.0) + 生成資料
記憶體2 GB+MySQL 8.1 基本需求

注意: SDG 不需要 在本機安裝 Python、MySQL 或任何依賴套件。所有環境都封裝在 Docker Image 內。

3.2 安裝步驟

 1# 1. 複製專案
 2git clone https://github.com/SDM-TIB/Synthetic-Data-Generator.git
 3cd Synthetic-Data-Generator
 4
 5# 2. 確認 Docker 可用
 6docker --version
 7# Docker version 24.x.x 或更高
 8
 9# 3. (選用) 確認 docker-compose 可用
10docker compose version
11# Docker Compose version v2.x.x

3.3 Docker Image 建置

1# 方法一:透過 docker-compose 建置
2docker-compose up -d --build
3
4# 方法二:手動建置
5docker build . -t sdmtib/sdg:latest

Image 細節: 基於 mysql:8.1.0 官方映像,額外安裝 Python 依賴 (rdfizer, mysql-connector-python, numpy, pandas),並將 SDG.py 連結到 /usr/bin/SDG

3.4 環境變數

Docker Image 內預設的環境變數:

變數預設值說明
MYSQL_DATABASEsynthMySQL 資料庫名稱
MYSQL_ROOT_PASSWORDpaladinMySQL root 密碼

安全提醒: 預設密碼僅供研究環境使用。若部署於對外服務,務必修改 Dockerfile 中的密碼。


4. 使用方式與程式碼範例

4.1 範例一:使用 Docker Compose 生成乾淨資料集

這是最推薦的使用方式,適合需要多次生成不同規模資料集的場景。

 1# Step 1: 啟動容器 (含建置)
 2docker-compose up -d --build
 3
 4# Step 2: 生成 100 位患者的乾淨資料 (mutation_prob = 0.0)
 5docker exec -it SDG bash -c "SDG -n 100 -p 0.0"
 6
 7# 預期輸出:
 8# Setting up the database: 0.234...
 9# Generating data: 2.156...
10# Dumping database: 0.512...
11# Dumping CSV: 0.078...
12# Finished generating the synthetic data. Total time: 3.021...
13
14# Step 3: 檢視生成的檔案
15ls -la ./data/
16# csv/
17# synth_data.nt
18# synth_data.sql.gz
19
20ls -la ./data/csv/
21# chemoterapy_cycle.csv
22# chemoterapy_schema.csv
23# comorbidity.csv
24# cui_description.csv
25# drug.csv
26# drug_chemoterapy_schema.csv
27# family_history.csv
28# oral_drug.csv
29# oral_drug_type.csv
30# patient.csv
31# radiotherapy.csv
32# surgery.csv
33# tumor_grade.csv
34# tumor_tnm.csv
35# tumor_type.csv
36
37# Step 4: 備份資料 (重要! 下次生成會覆蓋)
38cp -r ./data ./data_clean_100
39
40# Step 5: 生成 500 位患者的有雜訊資料
41docker exec -it SDG bash -c "SDG -n 500 -p 0.1"
42cp -r ./data ./data_noisy_500
43
44# Step 6: 完成後停止容器
45docker-compose down -v

CSV 輸出範例 (patient.csv):

1ehr,birth_date,diagnosis_date,age_at_diagnosis,first_treatment_date,surgery_date,death_date,age_at_death,er_positive,pr_positive,her2_overall_positive,ki67_percent_max_simp,neoadjuvant,menarche_age,menopause_pre,menopause_age,pregnancy,abort,birth,caesarean
21,1962-03-15,2019-07-22,57,2019-08-14,2019-09-05,,,,1,0,0,14,no,13,1,48,2,0,2,0
32,1958-11-02,2018-04-10,59,2018-05-03,2018-06-15,2023-09-28,64,1,1,0,18,no,12,1,50,3,1,2,0

4.2 範例二:使用 Shell Script 單次生成

適合只需要生成一次資料集的快速使用情境。

 1# 生成 1000 位患者,突變機率 5%
 2./generate.sh 1000 0.05
 3
 4# generate.sh 內部會自動:
 5# 1. docker build . -t sdmtib/sdg:latest
 6# 2. docker run --name SDG -v ./data:/data -d sdmtib/sdg:latest
 7# 3. sleep 5s (等待 MySQL 啟動)
 8# 4. docker exec -it SDG bash -c "SDG -n 1000 -p 0.05"
 9# 5. docker rm -fv SDG (自動清理容器)
10
11# 檢視 RDF 輸出
12head -20 ./data/synth_data.nt
13# <http://research.tib.eu/paladin/entity/BC_HUPHM_1> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://research.tib.eu/paladin/vocab/BCPatient> .
14# <http://research.tib.eu/paladin/entity/BC_HUPHM_1> <http://research.tib.eu/paladin/vocab/hasEHR> "1"^^<http://www.w3.org/2001/XMLSchema#integer> .
15# ...
16
17# 檢視 SQL dump
18zcat ./data/synth_data.sql.gz | head -30

RDF 輸出特點:

  • 使用 PALADIN 本體 (http://research.tib.eu/paladin/vocab/) 定義
  • 每位患者以 BC_HUPHM_{ehr} 為 URI
  • 透過 SDM-RDFizer + RML mapping 自動從 MySQL 轉換
  • 可直接載入 SPARQL endpoint (如 Apache Jena Fuseki) 進行語意查詢

4.3 範例三:批次生成多種配置並進行比較分析

 1#!/bin/bash
 2# batch_generate.sh -- 批次生成不同突變機率的資料集供比較
 3
 4# 啟動容器
 5docker-compose up -d --build
 6sleep 10  # 等待 MySQL 完全啟動
 7
 8PATIENTS=200
 9
10for PROB in 0.0 0.05 0.1 0.2 0.3; do
11    echo "=== 生成 mutation_prob=${PROB} ==="
12    docker exec -it SDG bash -c "SDG -n ${PATIENTS} -p ${PROB}"
13
14    # 備份到獨立資料夾
15    OUTDIR="./data_p${PROB}"
16    rm -rf "${OUTDIR}"
17    cp -r ./data "${OUTDIR}"
18
19    # 快速統計
20    echo "Patient CSV rows: $(wc -l < ${OUTDIR}/csv/patient.csv)"
21    echo "RDF triples: $(wc -l < ${OUTDIR}/synth_data.nt)"
22    echo "SQL dump size: $(du -h ${OUTDIR}/synth_data.sql.gz | cut -f1)"
23    echo ""
24done
25
26# 清理
27docker-compose down -v
28
29# 用 Python 進行簡單比較分析
30python3 << 'PYEOF'
31import pandas as pd
32import os
33
34probs = [0.0, 0.05, 0.1, 0.2, 0.3]
35stats = []
36
37for p in probs:
38    dir_path = f"./data_p{p}/csv"
39    if not os.path.exists(dir_path):
40        continue
41    pt = pd.read_csv(f"{dir_path}/patient.csv")
42    stats.append({
43        "mutation_prob": p,
44        "n_patients": len(pt),
45        "mean_age_dx": pt["age_at_diagnosis"].mean(),
46        "std_age_dx": pt["age_at_diagnosis"].std(),
47        "er_positive_rate": pt["er_positive"].mean(),
48        "death_rate": pt["death_date"].notna().mean() if "death_date" in pt.columns else None,
49        "mean_ki67": pt["ki67_percent_max_simp"].mean(),
50    })
51
52df = pd.DataFrame(stats)
53print("\n=== 各突變機率下的資料統計比較 ===")
54print(df.to_string(index=False))
55PYEOF

預期輸出:

1=== 各突變機率下的資料統計比較 ===
2 mutation_prob  n_patients  mean_age_dx  std_age_dx  er_positive_rate  death_rate  mean_ki67
3           0.0         200        56.82       10.12              0.86        0.12      19.45
4          0.05         200        56.95       10.34              0.84        0.13      20.12
5           0.1         200        57.23       11.56              0.80        0.15      22.78
6           0.2         200        57.89       14.23              0.72        0.18      26.34
7           0.3         200        58.12       17.45              0.65        0.21      30.56

隨著 mutation_probability 增加,可以觀察到標準差增大、ER+ 比率下降(因隨機翻轉)、Ki67 均值偏移等現象,這正是「突變」機制設計的效果。


5. 在醫療結構化資料合成生態系中的定位

5.1 Domain 1 子領域定位

SDG 屬於 Sub-domain F: Specialized (專門領域工具),專注於乳癌患者資料合成。與同生態系的其他工具比較:


graph TB
    subgraph D1["Domain 1: 醫療結構化資料合成"]
        subgraph A["A. Patient Simulation
患者模擬"] SYNTHEA["Synthea
全生命週期模擬
多疾病"] end subgraph B["B. Privacy-Preserving
隱私保護"] DP["TF Privacy / IBM Diffprivlib
OpenDP / SmartNoise
dp_cgans"] end subgraph C["C. Medical Tabular
醫療表格"] SC["synthcity / DataSynthesizer
COR-GAN / synthEHRella"] end subgraph D["D. Clinical Trial
臨床試驗"] CT["VICTRE / tsynth
TrialSynth / Simulants"] end subgraph E["E. Time Series
時間序列"] TS["TemporAI"] end subgraph F["F. Specialized
專門領域"] SDG_BOX["SDG
乳癌規則式生成器"] STG["synth-data-gen-from-text"] end end SDG_BOX -.->|"可補充隱私層"| DP SDG_BOX -.->|"規模化可替換為"| SYNTHEA SDG_BOX -.->|"輸出可作為輸入"| SC SDG_BOX -.->|"臨床試驗模擬"| CT style SDG_BOX fill:#ff8a80,stroke:#d32f2f,stroke-width:3px style F fill:#ffebee,stroke:#c62828

5.2 與同類工具的比較

面向SDG (本工具)SyntheasynthcityCOR-GAN
方法規則式 (Rule-Based)規則式 (模組化)深度學習 (GAN/VAE/Diffusion)GAN
疾病範圍僅乳癌90+ 疾病任意表格資料EHR 通用
臨床深度深 – 含化療方案、TNM、口服藥中 – FHIR 標準模組淺 – 學習欄位分佈中 – 學習相關性
輸出格式CSV + RDF + SQLFHIR / C-CDA / CSVDataFrameDataFrame
隱私保證無 (完全合成,無真實資料)無 (完全合成)可加 DPGAN 隱含
客製化需改原始碼機率參數模組化設定API 配置超參數
學習曲線低 (Docker 一鍵)中 (Java 環境)中 (Python API)高 (訓練 GAN)

5.3 獨特價值:過程導向 + 語意輸出

SDG 最大的差異化在於兩點:

  1. 過程導向 (Process-Based): 生成的資料具有時間軸上的因果一致性。例如,新輔助化療日期必定在手術前、輔助化療在手術後、放療在化療完成後。這種時序邏輯是純統計學習的 GAN/VAE 難以保證的。

  2. RDF 語意輸出: 透過 RML Mapping + SDM-RDFizer,直接產出可供 SPARQL 查詢的知識圖 (Knowledge Graph; KG)。使用 PALADIN 本體論,每位患者及其臨床事件都有唯一 URI,可直接與其他 Linked Data 整合。

5.4 對 Pre-IND 藥物開發的應用場景

場景說明使用方式
Protocol Design Simulation (試驗設計模擬)在提交 IND 前,模擬目標族群的基線特徵分佈調整 SDG 參數匹配目標適應症族群
統計分析方法驗證用已知分佈的合成資料驗證 SAP (Statistical Analysis Plan; 統計分析計畫)生成乾淨資料 (p=0.0) 驗證分析管線
資料品質管線測試測試 EDC (Electronic Data Capture; 電子資料擷取) 系統的資料驗證規則用不同 mutation_prob 測試 edit check
隱私合規展示向 IRB/EC 展示合成資料替代真實資料的可行性比較合成 vs 真實資料的統計特性

6. 與其他工具的整合

6.1 整合 synthcity 進行隱私增強

SDG 的原始輸出是完全合成的(無隱私風險),但若需要進一步確保統計特性與真實資料一致且加入 Differential Privacy (DP; 差分隱私) 保證:

 1# 概念範例:SDG 輸出 → synthcity 隱私增強
 2import pandas as pd
 3from synthcity.plugins import Plugins
 4from synthcity.plugins.core.dataloader import GenericDataLoader
 5
 6# Step 1: 讀取 SDG 生成的 CSV
 7sdg_patients = pd.read_csv("./data/csv/patient.csv")
 8
 9# Step 2: 用 synthcity 的 DPGAN 在 SDG 資料上訓練
10loader = GenericDataLoader(sdg_patients, target_column="er_positive")
11syn_model = Plugins().get("dpgan", epsilon=1.0)  # epsilon 控制隱私預算
12syn_model.fit(loader)
13
14# Step 3: 生成帶 DP 保證的資料
15dp_data = syn_model.generate(count=1000)
16print(dp_data.dataframe().describe())

6.2 將 RDF 輸出載入 SPARQL Endpoint

 1# 使用 Apache Jena Fuseki 載入 SDG 的 RDF 輸出
 2docker run -d --name fuseki \
 3  -p 3030:3030 \
 4  -v $(pwd)/data:/data \
 5  stain/jena-fuseki \
 6  /jena-fuseki/fuseki-server --mem /sdg
 7
 8# 上傳 RDF 資料
 9curl -X POST http://localhost:3030/sdg/data \
10  -H "Content-Type: application/n-triples" \
11  --data-binary @./data/synth_data.nt
12
13# SPARQL 查詢範例:查找所有 Stage IIIA 以上且 HER2+ 的患者
14curl -X POST http://localhost:3030/sdg/query \
15  --data-urlencode "query=
16    PREFIX paladin: <http://research.tib.eu/paladin/vocab/>
17    SELECT ?patient ?stage ?her2
18    WHERE {
19      ?patient a paladin:BCPatient ;
20               paladin:hasHER2OverallPositive ?her2 ;
21               paladin:hasStageDiagnosis ?stage .
22      FILTER(?her2 = 'Yes')
23      FILTER(?stage IN ('IIIA', 'IIIB', 'IIIC', 'IV'))
24    }
25    LIMIT 20
26  "

6.3 轉換為 CDISC SDTM 格式

SDG 輸出的 CSV 需要額外轉換才能符合 CDISC SDTM (Study Data Tabulation Model; 研究資料表格模型) 標準:

 1# 概念範例:SDG CSV → SDTM DM (Demographics) Domain
 2import pandas as pd
 3
 4patient = pd.read_csv("./data/csv/patient.csv")
 5
 6# 轉換為 SDTM DM domain
 7dm = pd.DataFrame({
 8    "STUDYID": "SDG-SYNTH-001",
 9    "DOMAIN": "DM",
10    "USUBJID": patient["ehr"].apply(lambda x: f"SDG-SYNTH-001-{x:04d}"),
11    "SUBJID": patient["ehr"].apply(lambda x: f"{x:04d}"),
12    "RFSTDTC": patient["first_treatment_date"],
13    "BRTHDTC": patient["birth_date"],
14    "AGE": patient["age_at_diagnosis"],
15    "AGEU": "YEARS",
16    "SEX": "F",  # 乳癌患者以女性為主
17    "RACE": "",  # SDG 目前不生成種族資料
18    "DTHFL": patient["death_date"].apply(lambda x: "Y" if pd.notna(x) else ""),
19    "DTHDTC": patient["death_date"],
20})
21
22dm.to_csv("sdtm_dm.csv", index=False)
23print(f"SDTM DM domain: {len(dm)} subjects")

Blue Ocean 機會: SDG 目前不直接支援 CDISC SDTM/ADaM 格式輸出。開發一個 SDG-to-SDTM 轉換層,將乳癌合成資料自動映射到 SDTM Domains (DM, AE, CM, LB, TU, TR, RS) 是一個有價值的擴展方向,尤其對 IND 申請中的 eCTD (Electronic Common Technical Document; 電子通用技術文件) 數據包準備有直接助益。

6.4 與 TemporAI 整合做時間序列擴展

SDG 生成的化療週期 (chemoterapy_cycle) 和放療記錄本身就具有時間序列特性,可以與 TemporAI 結合:

 1# 概念範例:SDG 化療時間軸 → TemporAI 時間序列模型
 2import pandas as pd
 3
 4cycles = pd.read_csv("./data/csv/chemoterapy_cycle.csv")
 5patient = pd.read_csv("./data/csv/patient.csv")
 6
 7# 整合為時間序列格式
 8# 每位患者的化療週期序列可作為 TemporAI 的輸入
 9# 用於預測治療反應、生存分析等
10timeline = cycles.merge(patient[["ehr", "er_positive", "her2_overall_positive", "stage_diagnosis"]],
11                        on="ehr", how="left")
12timeline = timeline.sort_values(["ehr", "date"])
13print(f"時間序列記錄數: {len(timeline)}")
14print(f"涵蓋患者數: {timeline['ehr'].nunique()}")

7. 優缺點分析

7.1 優點

優點詳細說明
臨床深度卓越涵蓋乳癌治療流程 7 大面向、66 種化療方案、15 種口服藥、17 類共病,是目前最完整的單一疾病合成器之一
時序因果一致過程導向確保事件順序合理:診斷 → 新輔助化療 → 手術 → 輔助化療 → 放療 → 口服藥
突變機率控制獨特的 mutation_probability 參數允許精準控制資料品質等級,適合測試資料清洗管線
三格式輸出CSV (分析)、SQL (資料庫)、RDF (語意網) 三種格式一次滿足不同下游需求
零配置部署Docker 完全封裝,不需要在本機安裝任何依賴
完全合成安全資料 100% 合成,無任何真實患者資訊,天然符合 HIPAA / GDPR / PDPA
UMLS 標準編碼家族史使用 UMLS CUI 編碼,具備與其他醫療資訊系統的互操作性

7.2 缺點

缺點影響程度可能的緩解方案
僅限乳癌高 – 無法直接用於其他癌種或疾病需 fork 後大幅修改機率參數;或用 Synthea 覆蓋其他疾病
單一 Python 檔案中 – 669 行的 SDG.py 包含所有邏輯,難以模組化擴展需重構為模組化架構(疾病模型 / 治療流程 / 輸出格式分離)
無 API / Library 介面中 – 僅支援 CLI 執行,無法程式化呼叫需包裝為 Python Package 或 REST API
硬編碼機率參數高 – 所有分佈參數直接寫在原始碼中,無法透過設定檔調整需將參數外部化為 YAML/JSON 設定檔
無 CDISC 格式支援中 – 輸出格式不符合法規提交標準需開發 SDTM/ADaM 轉換層
不支援種族/民族低 – 未納入人口學多樣性需擴增資料模型
MySQL 強耦合中 – 生成流程依賴 MySQL 容器,增加啟動時間可重構為 SQLite 或純記憶體生成
無隱私保證機制低 – 完全合成因此風險低,但缺乏正式 DP 證明可串接 synthcity 或 OpenDP 加上 DP 層
社群規模小高 – 3 Stars、0 Forks,維護資源有限學術專案特性,需評估長期維護風險

7.3 總結評估

SDG 是一個 小而精、領域專精 的工具。它在乳癌臨床資料的模擬深度上超越了多數通用工具(包括 Synthea 的乳癌模組),特別是在化療方案選擇、TNM 分期轉換、新輔助治療後重新分期等細節上。然而,其單一疾病侷限、硬編碼架構和極小的社群規模,使其更適合作為 概念驗證 (Proof of Concept; PoC) 或學術研究參考,而非直接用於生產環境。

對於 Pre-IND 藥物開發工作流,SDG 最佳的使用方式是:

  1. 快速生成乳癌患者基線特徵,用於 Protocol Design 的統計模擬
  2. 作為開發自家疾病專屬合成器的 參考架構 – 學習其過程導向設計和 RDF 輸出思路
  3. 結合 synthcity / OpenDP 加上隱私保護層後,作為對外分享的安全資料集

本教學基於 SDM-TIB/Synthetic-Data-Generator 撰寫,最後更新: 2026-06-11