中药提取工艺 DOE 技能(tcm-extraction-doe)
Overview
将中药制剂提取工艺优化从"拍脑袋试错"固化为标准化流程:需求澄清 → 单因素/文献定范围 → 正交试验筛选 → 极差/方差分析 → 响应面 BBD 精化 → 最优工艺验证 → 工艺参数结论。所有统计计算由脚本确定性完成,输出可直接用于论文"工艺研究"章节或申报资料。
核心决策树
用户提出提取工艺优化需求
│
├── 因素 ≤ 4 且以筛选主效应/交互作用为主 → 正交试验(Step A)
│ ↓ 获得显著因素与最优水平组合
│ 需要更精确最优参数(连续变量)→ 响应面 BBD(Step B)
│
├── 因素 ≤ 3 且直接寻找连续最优参数 → 响应面 BBD(Step B)
│
└── 因素 ≥ 5 或含混合水平 → 先正交筛选(Step A),显著因素再做 BBD
判断要点:
- 正交试验:离散水平、因素多、样本量小(L9=9次),得到"最优水平组合"(在给定水平内);
- 响应面 BBD:因素少(2~3个)、连续变量、需要回归方程预测任意点最优值,试验次数较多(3因素=15~17次);
- 工业上常用组合拳:正交粗筛(减因素/定范围)→ 响应面精化(找最优)→ 验证实验。
工作流总览
Step 1 需求澄清:药材/剂型、考察因素与水平、评价指标与权重、试验方法
Step 2 方案设计:选择正交表 或 BBD 设计(运行脚本生成方案表)
Step 3 数据录入:用户回填各试验号结果(指标值/综合评分)
Step 4 统计分析:脚本输出极差/方差分析表 或 回归方程+方差分析+最优解
Step 5 验证实验设计:最优组合验证(重复3次)、与预测值对比
Step 6 结论输出:工艺参数确定 + 报告/表格交付
Step 1:需求澄清(必做,不跳步)
向用户依次确认以下信息,缺失项逐条列出询问,不得自行杜撰:
| 澄清项 | 说明 | 示例 |
|---|---|---|
| 药材/处方 | 单味还是复方,是否需先做饮片前处理 | 丹参饮片 20 g/份 |
| 提取方式 | 回流/煎煮/超声/渗漉/微波等 | 乙醇回流提取 |
| 考察因素 | 通常从:加水量(料液比)、提取时间、提取次数、乙醇浓度、提取温度、浸泡时间中选择 | 乙醇浓度(A)、提取时间(B)、加水量(C) |
| 因素水平 | 由单因素预实验或文献确定的范围,覆盖最优区间的上中下水平 | A: 60/70/80%;B: 1/1.5/2 h;C: 8/10/12 倍量 |
| 评价指标 | 单指标(含量/出膏率)或多指标综合评分 | 指标成分含量+出膏率加权综合评分 |
| 指标权重 | 多指标时各指标权重(专家打分/层次分析/等权) | 含量0.6、出膏率0.4 |
| 试验方法 | 各指标测定方法(药典方法/自建方法) | HPLC 测丹参酮ⅡA 含量 |
多指标综合评分法(权重归一化,正向指标用公式):
单指标评分 = (实测值 - 最小值)/(最大值 - 最小值) × 100
综合评分 = Σ(单指标评分 × 权重) (权重合计=1)
反向指标(如杂质、损失率)用 (最大值-实测值)/(最大值-最小值)×100。
Step 2A:正交试验设计(因素≥3 或需筛选)
运行脚本生成试验方案:
python3 <skill_dir>/scripts/orthogonal_design.py design --factors '乙醇浓度:3,提取时间:3,加水量:3'
- 自动匹配正交表:3水平→L9(3⁴) / L27(3¹³);2水平→L8(2⁷);4水平→L16(4⁵);5水平→L25(5⁶);支持混合水平 L18、L12。
- 交互作用与误差列:脚本默认将空列作误差项;若需考察交互作用,按表头设计分配列,减少因素数留出交互列。
- 输出:因素水平表 + 试验方案表(正交表第1~k列映射到因素水平实际值)。
将方案表(含水平实际值)交给用户执行实验,回填每号试验的评价指标实测值(或综合评分)。
Step 3A:正交数据分析(极差分析 + 方差分析)
python3 <skill_dir>/scripts/orthogonal_design.py analyze --data results.csv
results.csv 首行为表头,示例:
A,B,C,score
1,1,1,62.5
1,2,2,71.3
...共9行...
脚本输出(Markdown):
1. 极差分析表:各水平 K 值、均值 k、极差 R、因素主次排序(R 大者影响大)、最优水平组合(综合评分取大者);
2. 方差分析表:SS、df、MS、F 值、P 值(scipy 精确计算),标注显著性( P<0.05, P<0.01);
3. 结论*:显著因素(P<0.05)需进一步优化,不显著因素按成本/效率取水平(如提取次数少、浓度低)。
分析解读规则:
- R 值与 F 检验结论应一致;不一致时以方差分析为准(极差无法区分随机误差);
- 空列误差过小(SS_e≈0)时,合并最小 R 的因素列入误差(pooling),避免 F 值虚大;
- 若正交表无空列且无重复,需用户补做 1~2 组重复试验以估算误差。
Step 2B:响应面 BBD 设计(因素≤3,找连续最优)
python3 <skill_dir>/scripts/bbd_response_surface.py design --factors '乙醇浓度:60:80,提取时间:1:2,加水量:8:12'
- 生成 Box-Behnken 设计矩阵:3因素 = 12 边缘点 + 3 中心点 = 15 次试验(编码 -1/0/+1 + 实际值);
- 中心点重复次数默认 3,可参数调整(中心点用于失拟检验与纯误差估计);
- 输出设计表(编码值+实际值),交用户执行并回填响应值。
Step 3B:BBD 回归分析与优化
python3 <skill_dir>/scripts/bbd_response_surface.py analyze --data bbd_results.csv --objective maximize
- 二次多项式回归:
y = b0 + Σbi·xi + Σbii·xi² + Σbij·xi·xj(numpy lstsq 最小二乘); - 方差分析:回归模型显著性 F/P、失拟检验(lack of fit,P>0.05 说明模型拟合良好)、R²/调整R²;
- 输出回归方程(编码值→实际值换算系数);
- 网格扫描 [-1,1]³ 求最优解:最优工艺参数(实际值)+ 预测响应值;
--plot 1时输出等高线图(两两因素,matplotlib 保存 PNG)。
模型诊断规则:
- 失拟 P<0.05 → 模型不足以描述曲面,需增加因素水平/改用 CCD 或加入三次项;
- R²<0.8 → 检查是否存在异常点、因素是否选错;
- 最优解落在边界(±1)→ 提示扩大考察范围,补充实验。
Step 4:验证实验(必做)
无论正交还是响应面,最终最优组合必须验证:
- 按最优工艺参数做 3 次平行实验;
- 计算实测均值 ± SD,与模型预测值对比;
- 偏差 < 5% 且 RSD < 3%(提取工艺一般要求)→ 工艺可行;
- 偏差大 → 回到 Step 1 检查因素范围/指标测定,重新设计。
Step 5:结论输出
产出标准化结论,包含:
- 最优提取工艺参数(含单位、批内用量);
- 各因素影响主次/显著性(表格);
- 验证实验结果(均值±SD vs 预测值);
- 工艺参数的合理波动范围建议(供放大生产与申报);
- 直接可用的 Markdown 表格(可复制入论文"提取工艺研究"章节或申报工艺研究资料)。
质量门禁(交付前自查)
- [ ] 所有水平/因素/指标均来自用户确认,无杜撰数值;
- [ ] 正交表选择正确(水平数匹配、行数=试验次数);
- [ ] 方差分析含误差来源说明(空列/重复);
- [ ] BBD 含失拟检验与 R² 报告;
- [ ] 最优组合已做验证实验(3平行,偏差<5%);
- [ ] 多指标时综合评分权重合计=1;
- [ ] 结论表格可直接复制使用。
Resources
scripts/
orthogonal_design.py— 正交表生成(design)+ 极差/方差分析(analyze),支持 L4/L8/L9/L12/L16/L18/L25/L27,scipy 精确 F/P 值;bbd_response_surface.py— Box-Behnken 设计(design)+ 二次回归/失拟检验/网格寻优/等高线图(analyze)。
references/
design-guide.md— 提取工艺 DOE 方法学指南:因素水平确定(单因素预实验)、正交表选择与表头设计(含交互作用列)、综合评分法、常见陷阱(误差列、混合水平、随机化);workflow-template.md— 端到端工作流模板与交付文档结构(含需求澄清清单、报告骨架、验收标准),供 Step 1~5 参照。