first commit
This commit is contained in:
parent
abc6526143
commit
26631f9b48
24 changed files with 1089 additions and 1 deletions
104
Code/3-group.py
Normal file
104
Code/3-group.py
Normal file
|
|
@ -0,0 +1,104 @@
|
|||
import openpyxl
|
||||
import csv
|
||||
import os.path
|
||||
|
||||
|
||||
def read_value(patient_dir, atlas, data_type):
|
||||
folder_name = os.path.basename(patient_dir)
|
||||
csv_file_path = os.path.join(patient_dir, f"{data_type}_{atlas}_result", "result_atlas.csv")
|
||||
|
||||
result = [folder_name]
|
||||
with open(csv_file_path, mode='r') as data_csv_file:
|
||||
csv_reader = csv.DictReader(data_csv_file)
|
||||
for row in csv_reader:
|
||||
mean = float(row["meanValue"])
|
||||
result.append(mean)
|
||||
|
||||
return result
|
||||
|
||||
|
||||
def read_header(patient_dir, atlas, data_type):
|
||||
header = ['编号']
|
||||
|
||||
csv_file_path = os.path.join(patient_dir, f"{data_type}_{atlas}_result", "result_atlas.csv")
|
||||
|
||||
with open(csv_file_path, mode='r') as data_csv_file:
|
||||
csv_reader = csv.DictReader(data_csv_file)
|
||||
for row in csv_reader:
|
||||
region_name = row["Chinese Name"]
|
||||
header.append(region_name)
|
||||
|
||||
return header
|
||||
|
||||
|
||||
def generate_stats_row(name, region_size, function, patient_size, extra_parameter):
|
||||
result = [name]
|
||||
|
||||
for i in range(region_size):
|
||||
letter = openpyxl.utils.cell.get_column_letter(i + 2)
|
||||
result.append(f'={function}({letter}2:{letter}{patient_size + 1}{extra_parameter})')
|
||||
|
||||
return result
|
||||
|
||||
|
||||
def write_to_work_sheet(work_sheet, patient_list, atlas, data_type):
|
||||
if len(patient_list) == 0:
|
||||
return
|
||||
|
||||
header = read_header(patient_list[0], atlas, data_type)
|
||||
|
||||
work_sheet.append(header)
|
||||
|
||||
for patient_dir in patient_list:
|
||||
print(data_type, patient_dir)
|
||||
patient_data = read_value(patient_dir, atlas, data_type)
|
||||
|
||||
work_sheet.append(patient_data)
|
||||
|
||||
region_size = len(header) - 1
|
||||
work_sheet.append([])
|
||||
work_sheet.append([])
|
||||
work_sheet.append(generate_stats_row('均值', region_size, 'AVERAGE', len(patient_list), ''))
|
||||
work_sheet.append(generate_stats_row('标准差', region_size, 'STDEV', len(patient_list), ''))
|
||||
work_sheet.append(generate_stats_row('最小值', region_size, 'MIN', len(patient_list), ''))
|
||||
work_sheet.append(generate_stats_row('5%', region_size, 'PERCENTILE', len(patient_list), ',0.05'))
|
||||
work_sheet.append(generate_stats_row('25%', region_size, 'PERCENTILE', len(patient_list), ',0.25'))
|
||||
work_sheet.append(generate_stats_row('50%', region_size, 'PERCENTILE', len(patient_list), ',0.50'))
|
||||
work_sheet.append(generate_stats_row('75%', region_size, 'PERCENTILE', len(patient_list), ',0.75'))
|
||||
work_sheet.append(generate_stats_row('95%', region_size, 'PERCENTILE', len(patient_list), ',0.95'))
|
||||
work_sheet.append(generate_stats_row('最大值', region_size, 'MAX', len(patient_list), ''))
|
||||
|
||||
|
||||
def main():
|
||||
data_types = ['corr-CBF', "ATT"]
|
||||
atlas_list = ['AnImage_WholeBrain', 'AnImage_BrainLobes', 'AnImage_AAL3']
|
||||
|
||||
output_file = r'..\Data\csv-group.xlsx'
|
||||
group_file = r'..\Data\group.xlsx'
|
||||
patient_root = r'..\Data\csv-data'
|
||||
|
||||
groups = {}
|
||||
# 读取分组信息
|
||||
group_workbook = openpyxl.load_workbook(group_file)
|
||||
for sheet_name in group_workbook.sheetnames:
|
||||
group = []
|
||||
group_sheet = group_workbook[sheet_name]
|
||||
for i in range(1, group_sheet.max_row + 1):
|
||||
patient_id = group_sheet.cell(row=i, column=1).value
|
||||
patient_path = os.path.join(patient_root, patient_id)
|
||||
group.append(patient_path)
|
||||
groups[sheet_name] = group
|
||||
|
||||
work_book = openpyxl.Workbook()
|
||||
work_book.remove(work_book.active)
|
||||
|
||||
for group_key in groups.keys():
|
||||
for data_type in data_types:
|
||||
for atlas in atlas_list:
|
||||
work_sheet = work_book.create_sheet(title=f'{group_key}_{atlas}_{data_type}')
|
||||
write_to_work_sheet(work_sheet, groups[group_key], atlas, data_type)
|
||||
|
||||
work_book.save(output_file)
|
||||
|
||||
|
||||
main()
|
||||
Loading…
Add table
Add a link
Reference in a new issue