结合Stat-Ease 360(≥22.0) 原生 Python 环境、药学 DOE 主流场景(制剂处方 / 工艺、合成工艺、药效优化),提供开箱即用脚本模板,分基础版、进阶机器学习版、对接大模型版,附带操作步骤、参数说明、药学场景用法和避坑要点,复制即可运行。
前置说明
- 运行环境:SE360 22.0/23.0/24.0/25.x,普通 Design-Expert 无脚本功能,无法使用
- 依赖:SE360 内置 Python 基础环境,
pandas/numpy 自带;机器学习库scikit-learn 需手动安装(下文附安装方法) - 数据前提:先在软件内完成实验设计、录入全部实验数据,再运行脚本
一、前置:在 SE360 安装第三方 Python 库(仅首次操作)
- 打开 SE360 → 顶部菜单
Scripts → Open Script Folder,打开脚本目录 - 在此目录新建文本文件,改名
install_lib.py,粘贴下方代码并运行:
python
import subprocessimport sys# 安装机器学习常用库libs =["scikit-learn","numpy","pandas"]for lib in libs: subprocess.check_call([sys.executable,"-m","pip","install", lib,"-i","https://pypi.tuna.tsinghua.edu.cn/simple"])print("依赖库安装完成!")
- 点击运行按钮,等待提示安装完成,后续无需重复执行。
二、模板 1:基础模板 — 读取 DOE 数据 + 基础统计(入门必用)
功能
读取当前项目因子、响应值、实验序号,输出数据表格、描述性统计,适配所有药学 DOE(处方、工艺、色谱条件优化)。
使用步骤
Scripts
python
===== SE360 基础数据读取脚本 ==========# 导入内置库import numpy as npimport pandas as pd# 1. 读取当前数据集(SE360专属API)dataset = get_dataset()# 2. 提取因子、响应、实验信息factors = dataset.get_factors()# 自变量(处方比例、温度、时间等)responses = dataset.get_responses()# 因变量(包封率、溶出度、收率、粒径等)run_order = dataset.get_run_order()# 实验运行顺序# 3. 拼接为标准数据表df = pd.DataFrame(factors, columns=dataset.factor_names)for idx, res_name inenumerate(dataset.response_names): df[res_name]= responses[:, idx]df["Run_Order"]= run_order# 4. 输出结果print("===== 完整实验数据表 =====")print(df)print("\n===== 响应值描述性统计 =====")print(df[dataset.response_names].describe())
药学场景示例
- 制剂:因子 = 磷脂用量 / 胆固醇比例 / 超声时间,响应 = 包封率 / 粒径 / PDI
- 药化合成:因子 = 温度 / 投料比 / 反应时间,响应 = 产物收率
- 运行后可快速核查数据异常、极值,辅助 ANOVA 结果解读
注意事项
- 若出现中文乱码:SE360 系统区域设置为中文即可
三、模板 2:进阶模板 — 随机森林机器学习(因子重要性分析,药学高频)
功能
基于随机森林模型分析各因子对响应的贡献权重,弥补传统 RSM 多项式回归的局限性;适合非线性强、噪声大的制剂、纳米载体、生物药效体系。
python
# ========== 随机森林-因子重要性分析脚本 ==========import numpy as npimport pandas as pdfrom sklearn.ensemble import RandomForestRegressorfrom sklearn.model_selection import train_test_splitfrom sklearn.metrics import r2_score# 1. 读取SE360数据集dataset = get_dataset()X = dataset.get_factors()# 自变量矩阵y = dataset.get_responses()# 多响应矩阵factor_names = dataset.factor_namesresponse_names = dataset.response_names# 2. 逐个响应建模、计算因子重要性for res_idx, res_name inenumerate(response_names): y_single = y[:, res_idx]# 划分训练/测试集 X_train, X_test, y_train, y_test = train_test_split(X, y_single, test_size=0.2, random_state=42)# 初始化随机森林模型 rf = RandomForestRegressor(n_estimators=100, random_state=42) rf.fit(X_train, y_train)# 模型预测与拟合优度 y_pred = rf.predict(X_test) r2 = r2_score(y_test, y_pred)# 因子重要性(归一化百分比) importances = rf.feature_importances_ import_pct =100* importances / importances.sum()# 排序输出 imp_df = pd.DataFrame({"Factor": factor_names,"Importance(%)": np.round(import_pct,2)}).sort_values("Importance(%)", ascending=False)# 打印结果print(f"========== 响应指标:{res_name} ==========")print(f"模型决定系数 R² = {np.round(r2,4)}")print("各因子影响权重排序:")print(imp_df)print("-"*50)
使用方法 & 药学应用
- 适用场景:脂质体、微球、乳剂、缓控释制剂、合成工艺优化
- 权重越高 → 该因子对实验结果影响越大(可指导后续工艺严控关键参数)
- R^2>0.8:模型拟合良好,结果可信
- 对比传统 RSM:传统回归只能看线性 / 二次项显著性,该模型可分析复杂非线性交互作用
注意事项
- 样本量建议:实验组数 ≥15 组,样本过少会导致模型失真
- 随机种子
random_state=42固定结果,保证每次运行数据一致 - 若有多个响应(如包封率 + 粒径),脚本会自动逐个分析
四、模板 3:高阶模板 — 模型预测 + 最优条件推荐(工艺 / 处方智能寻优)
功能
训练模型后,自定义目标区间,批量预测全因子组合的响应值,输出最优处方 / 工艺参数,替代人工遍历。
python
# ========== 模型预测 + 条件寻优脚本 ==========import numpy as npimport pandas as pdfrom sklearn.ensemble import RandomForestRegressor# 1. 读取数据dataset = get_dataset()X = dataset.get_factors()y = dataset.get_responses()factor_names = dataset.factor_namesresponse_names = dataset.response_names# 2. 训练全局模型model = RandomForestRegressor(n_estimators=100, random_state=42)model.fit(X, y)# ==== 自定义优化目标(重点修改这里)=========# 示例(脂质体):响应1=包封率(≥85),响应2=粒径(≤100),响应3=PDI(≤0.2)target_rules ={ response_names[0]:{"min":85,"max":100}, response_names[1]:{"min":10,"max":100}, response_names[2]:{"min":0,"max":0.2}}# 生成待预测的因子网格(在原因子范围内均匀采样500组)n_sample =500# 读取每个因子的高低水平factor_ranges =[(dataset.factor_low[i], dataset.factor_high[i])for i inrange(len(factor_names))]# 随机采样rand_samples =[]for(low, high)in factor_ranges: rand_samples.append(np.random.uniform(low, high, n_sample))X_sample = np.column_stack(rand_samples)# ==============================================# 3. 批量预测y_pred = model.predict(X_sample)pred_df = pd.DataFrame(X_sample, columns=factor_names)for idx, res_name inenumerate(response_names): pred_df[res_name]= y_pred[:, idx]# 4. 筛选符合目标的最优组合filter_mask = np.ones(n_sample, dtype=bool)for res_name, rule in target_rules.items(): filter_mask = filter_mask &(pred_df[res_name]>= rule["min"])&(pred_df[res_name]<= rule["max"])best_df = pred_df[filter_mask].sort_values(response_names[0], ascending=False)# 5. 输出结果print("===== 符合目标的最优处方/工艺组合(Top10)=====")print(best_df.head(10))
修改说明(必看)
找到代码中 自定义优化目标 区域,根据你的实验修改:
- 响应指标上下限:比如合成收率要求
≥90、溶出度≥80 - 采样数量
n_sample:默认 500 组,电脑配置差可改为 200 组
药学使用场景
- 处方优化:限定包封率、粒径、稳定性区间,自动筛最优配比
- 色谱条件优化:限定分离度、峰面积,筛选最优流动相比例
注意事项
- 预测结果为模型仿真值,必须通过实际实验验证,不可直接当作最终结论
- 因子范围严格沿用实验设计的高低水平,不要超范围外推(模型外推误差极大)
五、模板 4:联动外部大模型(SE360 数据 → AI 自动生成分析文案)
功能
将 DOE 统计结果、机器学习结果直接发送给大模型,自动生成论文讨论、实验结论、机理分析(需联网 + 大模型 API)。
推荐搭配:DeepSeek / 通义千问 / 豆包 API,适合直接产出学术文本。
python
====== SE360 + 大模型API 自动生成分析文案 ====import requests# 1. 读取基础数据摘要dataset = get_dataset()factor_names = dataset.factor_namesresponse_names = dataset.response_namesdata_desc =f"""实验设计信息:因子:{factor_names}响应指标:{response_names}实验组数:{dataset.n_runs}"""# 2. 大模型API配置(替换为你自己的API密钥&地址)API_KEY ="你的API密钥"API_URL ="大模型接口地址"# 3. 构造药学专业提问prompt =f"""你是药学领域科研专家,基于以下Design-Expert实验设计数据,撰写一段适用于SCI论文的结果与讨论:{data_desc}要求:分析各因子对响应指标的影响规律、工艺/处方合理性、潜在作用机制,语言严谨,符合药学期刊风格。"""# 4. 调用接口并输出结果headers ={"Authorization":f"Bearer {API_KEY}","Content-Type":"application/json"}post_data ={"model":"deepseek-chat","messages":[{"role":"user","content": prompt}]}res = requests.post(API_URL, json=post_data, headers=headers)result = res.json()["choices"][0]["message"]["content"]print("===== AI自动生成论文讨论内容 =====")print(result)
注意事项(重点)
- 数据安全红线:涉及专利处方、涉密工艺、未公开配方,禁止使用云端 API,建议改用本地私有化大模型
- API 配置:不同大模型接口格式略有差异,按需微调
- 输出内容必须人工润色、核对专业术语,不能直接粘贴进论文
六、通用全局注意事项(所有脚本共用)
- 版本限制仅
Stat-Ease 360 22.0及以上 可用,标准版 Design-Expert 无脚本功能。 - 实验数据规范缺失值、异常值先在 SE360 内剔除 / 修正,再运行脚本,否则模型报错。
- 学术合规
- 机器学习预测、AI 生成文案仅作辅助分析,核心实验结论以实测数据为准
- 论文中使用机器学习模型,需在方法部分写明模型类型、参数
- 报错排查
- 读取数据为空:确认当前窗口是实验数据表,而非曲面图 / ANOVA 表
- 高斯过程搭配建议若体系非线性极强,可先用 SE360 内置
Gaussian Process建模,再用上述脚本做二次数据挖掘,精度翻倍。
七、药学博士最简工作流总结
- 用 SE360 完成 Box-Behnken/CCD/ 混料设计,录入实验数据 → 做常规 ANOVA、响应面分析
- 运行模板 3(智能寻优):批量筛选最优处方 / 工艺
- 结合模板 4(大模型):自动生成论文结果与讨论段落