这是一个用于动物模型实验中自动分组的工具,能够根据动物的体重、肿瘤体积等指标,使用模拟退火算法实现均衡分组,确保各组之间的差异最小化。
- 支持两种试验类型:药效试验(efficacy)和毒理试验(toxicity)
- 基于模拟退火算法实现最优分组,确保各组间指标均衡
- 支持读取历史分组数据,为新动物分配最佳分组
- 自动计算并保存各组统计信息(平均值、标准差等)
- 支持配置文件自定义参数
- 提供命令行接口和Gradio Web界面
本程序需要Python 3.6或更高版本。如果尚未安装Python,请先下载并安装:https://www.python.org/downloads/
cd pyrct
pip install -r requirements.txt依赖包包括:
- pandas:数据处理
- numpy:数值计算
- random、math:算法实现
- logging:日志记录
- argparse:命令行参数解析
- configparser:配置文件读取
- gradio:Web界面(可选)
python pyrct.py <input_file> [options]input_file:原始数据CSV文件路径(必需)--last_grouping:上一次分组结果的CSV文件路径(可选)--config_dir:配置文件目录,默认为当前目录(可选)--experiment_type:试验类型,可选值为'efficacy'(药效试验)或'toxicity'(毒理试验),默认为'efficacy'(可选)
- 药效试验分组
python pyrct.py test.csv --experiment_type efficacy- 毒理试验分组
python pyrct.py test.csv --experiment_type toxicity- 使用历史分组数据
python pyrct.py new_mice.csv --last_grouping results/old_mice/grouped_mouse_data_run1.csv --experiment_type efficacy通过Gradio提供的Web界面可以更直观地使用程序:
python gradio_interface.py或使用启动脚本:
python launch_gradio.py启动后,可以通过浏览器访问界面进行操作。
程序支持的CSV文件需要包含以下字段:
id或ear_tag:动物耳标或编号weight:体重
- 药效试验(efficacy):
tumor_volume:肿瘤体积
- 毒理试验(toxicity):
gender:性别,值为'F'(雌性)或'M'(雄性)
程序使用两个配置文件:
[grouping]
num_groups = 5 # 分组数量
group_sizes = 6,6,6,6,6 # 每组动物数量,用逗号分隔
runs = 10 # 运行次数,取最优结果[simulated_annealing]
initial_temp = 100 # 初始温度
final_temp = 0.1 # 最终温度
alpha = 0.95 # 降温系数
max_iter = 10000 # 最大迭代次数程序采用模拟退火算法进行分组优化,主要步骤如下:
- 初始分组:将动物均匀分配到各组
- 计算统计量:计算各组的体重和肿瘤体积的平均值和标准差
- 评估分组质量:使用目标函数评估分组方案的均衡性
- 模拟退火优化:通过随机交换动物并逐步降低温度,寻找最优分组方案
- 结果保存:保存分组结果和统计信息
程序会在results文件夹下创建与输入文件同名的子文件夹,并保存以下结果文件:
grouped_mouse_data_run{run_number}.csv:包含分组信息的动物数据group_stats_run{run_number}.csv:各组统计信息,包括平均值、标准差、动物数量和目标函数值
从CSV文件读取动物数据并根据试验类型验证必要字段
计算每个组的肿瘤体积和体重的平均值和标准差
objective_function(stats, overall_volume_mean, overall_volume_std, overall_weight_mean, overall_weight_std, experiment_type)
计算目标函数值,评估分组均衡性
simulated_annealing(data, num_groups, initial_temp, final_temp, alpha, max_iter, overall_weight_mean, overall_weight_std, overall_volume_mean, overall_volume_std, experiment_type)
使用模拟退火算法优化分组方案
从CSV文件读取上一次的分组结果
为多个新动物找到最佳分组,基于已有的历史分组
保存分组结果和统计信息
程序会输出日志信息,包括:
- 数据读取情况
- 总体统计信息
- 分组过程
- 结果保存路径
- 错误信息
- 确保输入数据格式正确,特别是必要字段的名称和格式
- 对于毒理试验,性别字段只能包含'F'和'M'
- 当动物数量无法平均分配到各组时,程序会尽量使各组数量接近
- 分组结果的优劣可以通过目标函数值判断,值越小表示分组越均衡
如有任何问题或建议,请联系开发人员。