Update app.py
Browse files
app.py
CHANGED
|
@@ -455,7 +455,6 @@ class DicomAnalyzer:
|
|
| 455 |
cell.alignment = center_alignment
|
| 456 |
|
| 457 |
# ---- Create tables for StdDev Averages and CNR Averages ----
|
| 458 |
-
|
| 459 |
current_row = 32
|
| 460 |
|
| 461 |
# 1) StdDev Averages
|
|
@@ -492,41 +491,43 @@ class DicomAnalyzer:
|
|
| 492 |
cnr_header.alignment = center_alignment
|
| 493 |
current_row += 1
|
| 494 |
|
|
|
|
| 495 |
for i, size in enumerate(phantom_sizes):
|
| 496 |
-
|
| 497 |
-
|
|
|
|
| 498 |
|
| 499 |
-
#
|
| 500 |
for cols in column_groups:
|
| 501 |
formula_col = get_column_letter(column_index_from_string(cols[-1]) + 1)
|
|
|
|
|
|
|
|
|
|
| 502 |
mean_col = cols[1]
|
| 503 |
-
std_col
|
| 504 |
|
| 505 |
-
|
| 506 |
-
|
| 507 |
-
|
| 508 |
-
|
| 509 |
-
# Convert potential string values to float
|
| 510 |
try:
|
| 511 |
-
|
| 512 |
-
|
| 513 |
-
|
| 514 |
-
except
|
| 515 |
-
|
| 516 |
-
|
| 517 |
-
#
|
| 518 |
-
if not (
|
| 519 |
-
|
| 520 |
-
valid_cnr_refs.append(cell_ref)
|
| 521 |
|
| 522 |
size_cell = ws.cell(row=current_row, column=1, value=size)
|
| 523 |
size_cell.alignment = center_alignment
|
| 524 |
-
|
| 525 |
-
if
|
| 526 |
-
#
|
| 527 |
-
|
| 528 |
-
|
| 529 |
-
cnr_formula = f'=IFERROR(AVERAGEIF({formula_range}, "<>0"), "")'
|
| 530 |
|
| 531 |
avg_cell = ws.cell(row=current_row, column=2)
|
| 532 |
avg_cell.value = cnr_formula
|
|
@@ -535,7 +536,7 @@ class DicomAnalyzer:
|
|
| 535 |
|
| 536 |
current_row += 1
|
| 537 |
|
| 538 |
-
#
|
| 539 |
for row in range(32, current_row):
|
| 540 |
for col in range(1, 3):
|
| 541 |
cell = ws.cell(row=row, column=col)
|
|
|
|
| 455 |
cell.alignment = center_alignment
|
| 456 |
|
| 457 |
# ---- Create tables for StdDev Averages and CNR Averages ----
|
|
|
|
| 458 |
current_row = 32
|
| 459 |
|
| 460 |
# 1) StdDev Averages
|
|
|
|
| 491 |
cnr_header.alignment = center_alignment
|
| 492 |
current_row += 1
|
| 493 |
|
| 494 |
+
# ุญุณุงุจ ู
ุชูุณุท CNR ููุตู ุงูุซุงูู ูู ูู pair:
|
| 495 |
for i, size in enumerate(phantom_sizes):
|
| 496 |
+
# ุงูุตู ุงูุซุงูู ูู row_pairs[i][1]
|
| 497 |
+
row_number = row_pairs[i][1]
|
| 498 |
+
cnr_cells = []
|
| 499 |
|
| 500 |
+
# ูุฌู
ุน ูู ุงูุฎูุงูุง ุงูุชู ูููุง ุงูุตูุบุฉ CNR (ููู ุงูุนู
ูุฏ ุจุนุฏ ุขุฎุฑ ุนู
ูุฏ ูู ุงูู
ุฌู
ูุนุฉ)
|
| 501 |
for cols in column_groups:
|
| 502 |
formula_col = get_column_letter(column_index_from_string(cols[-1]) + 1)
|
| 503 |
+
cnr_cell_ref = f"{formula_col}{row_number}"
|
| 504 |
+
|
| 505 |
+
# ุชุญูู ู
ู ููู
(Mean1,Mean2,Std2) ููููุชุฑุฉ
|
| 506 |
mean_col = cols[1]
|
| 507 |
+
std_col = cols[2]
|
| 508 |
|
| 509 |
+
mean1_val = ws[f"{mean_col}{row_pairs[i][0]}"].value
|
| 510 |
+
mean2_val = ws[f"{mean_col}{row_pairs[i][1]}"].value
|
| 511 |
+
std2_val = ws[f"{std_col}{row_pairs[i][1]}"].value
|
| 512 |
+
|
|
|
|
| 513 |
try:
|
| 514 |
+
mean1_val = float(mean1_val) if mean1_val not in [None, ''] else 0
|
| 515 |
+
mean2_val = float(mean2_val) if mean2_val not in [None, ''] else 0
|
| 516 |
+
std2_val = float(std2_val) if std2_val not in [None, ''] else 0
|
| 517 |
+
except:
|
| 518 |
+
mean1_val, mean2_val, std2_val = 0, 0, 0
|
| 519 |
+
|
| 520 |
+
# ูู ูููุง ุตูุฑ => ูุง ูุถูู ูุฐู ุงูุฎููุฉ ููู
ุชูุณุท
|
| 521 |
+
if not (mean1_val == 0 and mean2_val == 0 and std2_val == 0):
|
| 522 |
+
cnr_cells.append(cnr_cell_ref)
|
|
|
|
| 523 |
|
| 524 |
size_cell = ws.cell(row=current_row, column=1, value=size)
|
| 525 |
size_cell.alignment = center_alignment
|
| 526 |
+
|
| 527 |
+
if cnr_cells:
|
| 528 |
+
# ูุจูู ุตูุบุฉ AverageIF ุชุชุฌุงูู ุงูุฎูุงูุง = 0
|
| 529 |
+
cnr_range = f"({','.join(cnr_cells)})"
|
| 530 |
+
cnr_formula = f'=IFERROR(AVERAGEIF({cnr_range}, "<>0"), "")'
|
|
|
|
| 531 |
|
| 532 |
avg_cell = ws.cell(row=current_row, column=2)
|
| 533 |
avg_cell.value = cnr_formula
|
|
|
|
| 536 |
|
| 537 |
current_row += 1
|
| 538 |
|
| 539 |
+
# ุชูุณูู ุงูุนูุงููู ุงูุฃุฎูุฑุฉ
|
| 540 |
for row in range(32, current_row):
|
| 541 |
for col in range(1, 3):
|
| 542 |
cell = ws.cell(row=row, column=col)
|