Python 生物统计执行
仅在用户明确选择 Python 或既有项目以 Python 为主流程时执行;Python 运行时缺失时先询问是否安装,用户不安装则评估现有 R 环境中的经核验等价实现。不存在等价实现时说明差异并等待选择,不静默切换,也不重写可工作的 R 主流程。
1. 输入与方法
- 读取本轮必要输入;项目执行或正式发布时,再读取项目规则、PROTOCOL、SAP、配置、方法决定与尚未解决且需要后续处理的事项。
- 确认分析集、暴露或干预、终点、比较、时间零点、协变量和主要方法。多个合理口径会改变答案时先确认。
- 从最早输入核对字段、类型、键、重复、缺失、范围和逐步样本量。
- 方法匹配 estimand、研究设计、结局类型、时间结构和抽样设计,不按库的便利性替代研究问题。
可沿用项目已有的 pandas、polars、scipy、statsmodels、scikit-learn、lifelines 或 scikit-survival;这些是可能实现,不是强制依赖。统计图转 publication-figures。
2. 实现与运行
- 沿用项目风格,只封装重复或高风险逻辑;原始数据只读。
- 只有随机抽样、模拟、重采样、数据拆分或随机算法固定并记录种子。
- 普通 Python 包缺失时按
biostat-principles的依赖政策在项目隔离环境补齐;失败不得静默换包、换方法或换语言。 - 多行分析写入
.py。局部任务运行目标脚本;项目执行和正式发布通过run_pipeline.py调用项目现有且版本兼容的 Python,启动独立进程并按已确认顺序运行全部相关脚本。 - 非机械修改
.py后,先用项目现有 Python 执行python -m py_compile <受影响脚本>,通过后再运行受影响的最小入口或总运行脚本。编译通过只是一道即时门禁,不能替代实跑和科学结果检查。 - 核对完整 stdout/stderr、样本量链、缺失、估计范围、区间、收敛、适用的模型假设和预期文件;warning、traceback、failed、nan 不得略过。
异常可能改变口径或结论时回到最早来源并停下报告,不通过删记录、改模型或捕获异常掩盖。
3. 结果与完成
项目执行和正式发布的关键结果使用 scripts/emit_summary.py 写入 results/results.yaml。每项必须填写实际生成结果的脚本、脚本中提取结果的对象、输入文件或其哈希值、分析集、运行编号,以及实际使用该结果的文件;禁止直接修改 YAML。文件结构和旧项目读取方式见 结果数据文件。
方法选择或方案偏离写入 DECISIONS.md;总运行脚本自动记录实际命令、状态、输入输出文件哈希值和环境信息。只有需要后续补充材料、外部资源或由用户决定的事项才写入 BACKLOG.md。试新方法按 biostat-principles 的 E0/E1/E2 规则隔离。
完成时确认原始数据未改、相关脚本实际运行、样本与诊断已核对、异常已处理,并且项目执行和正式发布涉及的 results/results.yaml、自动运行记录和实际使用结果的文件一致。局部任务只交付用户指定的产物和必要的复现说明。