Skip to content

dengzhou5068/PyRCT

Repository files navigation

动物模型自动分组程序

这是一个用于动物模型实验中自动分组的工具,能够根据动物的体重、肿瘤体积等指标,使用模拟退火算法实现均衡分组,确保各组之间的差异最小化。

功能特点

  • 支持两种试验类型:药效试验(efficacy)和毒理试验(toxicity)
  • 基于模拟退火算法实现最优分组,确保各组间指标均衡
  • 支持读取历史分组数据,为新动物分配最佳分组
  • 自动计算并保存各组统计信息(平均值、标准差等)
  • 支持配置文件自定义参数
  • 提供命令行接口和Gradio Web界面

安装指南

1. 确保已安装Python

本程序需要Python 3.6或更高版本。如果尚未安装Python,请先下载并安装:https://www.python.org/downloads/

2. 安装依赖包

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'(可选)

示例

  1. 药效试验分组
python pyrct.py test.csv --experiment_type efficacy
  1. 毒理试验分组
python pyrct.py test.csv --experiment_type toxicity
  1. 使用历史分组数据
python pyrct.py new_mice.csv --last_grouping results/old_mice/grouped_mouse_data_run1.csv --experiment_type efficacy

Web界面方式

通过Gradio提供的Web界面可以更直观地使用程序:

python gradio_interface.py

或使用启动脚本:

python launch_gradio.py

启动后,可以通过浏览器访问界面进行操作。

数据格式要求

程序支持的CSV文件需要包含以下字段:

通用字段

  • idear_tag:动物耳标或编号
  • weight:体重

试验类型特定字段

  • 药效试验(efficacy):
    • tumor_volume:肿瘤体积
  • 毒理试验(toxicity):
    • gender:性别,值为'F'(雌性)或'M'(雄性)

配置文件说明

程序使用两个配置文件:

1. group.ini

[grouping]
num_groups = 5          # 分组数量
group_sizes = 6,6,6,6,6 # 每组动物数量,用逗号分隔
runs = 10               # 运行次数,取最优结果

2. config.ini

[simulated_annealing]
initial_temp = 100      # 初始温度
final_temp = 0.1        # 最终温度
alpha = 0.95            # 降温系数
max_iter = 10000        # 最大迭代次数

分组算法说明

程序采用模拟退火算法进行分组优化,主要步骤如下:

  1. 初始分组:将动物均匀分配到各组
  2. 计算统计量:计算各组的体重和肿瘤体积的平均值和标准差
  3. 评估分组质量:使用目标函数评估分组方案的均衡性
  4. 模拟退火优化:通过随机交换动物并逐步降低温度,寻找最优分组方案
  5. 结果保存:保存分组结果和统计信息

结果输出

程序会在results文件夹下创建与输入文件同名的子文件夹,并保存以下结果文件:

  • grouped_mouse_data_run{run_number}.csv:包含分组信息的动物数据
  • group_stats_run{run_number}.csv:各组统计信息,包括平均值、标准差、动物数量和目标函数值

函数说明

核心函数

read_mouse_data(file_path, experiment_type)

从CSV文件读取动物数据并根据试验类型验证必要字段

calculate_group_stats(groups, data)

计算每个组的肿瘤体积和体重的平均值和标准差

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)

使用模拟退火算法优化分组方案

read_last_grouping(file_path)

从CSV文件读取上一次的分组结果

find_best_group_for_new_mice(groups, new_mice_indices, data, experiment_type)

为多个新动物找到最佳分组,基于已有的历史分组

save_results(data, groups, result_folder, run_number, overall_stats, experiment_type)

保存分组结果和统计信息

日志记录

程序会输出日志信息,包括:

  • 数据读取情况
  • 总体统计信息
  • 分组过程
  • 结果保存路径
  • 错误信息

注意事项

  1. 确保输入数据格式正确,特别是必要字段的名称和格式
  2. 对于毒理试验,性别字段只能包含'F'和'M'
  3. 当动物数量无法平均分配到各组时,程序会尽量使各组数量接近
  4. 分组结果的优劣可以通过目标函数值判断,值越小表示分组越均衡

问题反馈

如有任何问题或建议,请联系开发人员。

About

用于动物模型实验中自动分组的工具,能够根据动物的体重、肿瘤体积等指标,使用模拟退火算法实现均衡分组,确保各组之间的差异最小化。 功能特点

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages