HeshamAI commited on
Commit
1072e12
ยท
verified ยท
1 Parent(s): 9df1ac5

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +28 -27
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
- row_number = row_pairs[i][1] # second row for CNR
497
- valid_cnr_refs = []
 
498
 
499
- # We'll check each column group to see if there's a (Mean1, Mean2, Std2) not all zero
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 = cols[2]
504
 
505
- mean1 = ws[f"{mean_col}{row_pairs[i][0]}"].value
506
- mean2 = ws[f"{mean_col}{row_pairs[i][1]}"].value
507
- std2 = ws[f"{std_col}{row_pairs[i][1]}"].value
508
-
509
- # Convert potential string values to float
510
  try:
511
- mean1 = float(mean1) if mean1 not in [None, ''] else 0
512
- mean2 = float(mean2) if mean2 not in [None, ''] else 0
513
- std2 = float(std2) if std2 not in [None, ''] else 0
514
- except (ValueError, TypeError):
515
- continue
516
-
517
- # If not all zero => there's something measured
518
- if not (mean1 == 0 and mean2 == 0 and std2 == 0):
519
- cell_ref = f"{formula_col}{row_number}"
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 valid_cnr_refs:
526
- # Use AVERAGEIF to ignore zero or empty cells
527
- # Must wrap references like (A1,A2,A3) not A1,A2,A3 alone
528
- formula_range = f"({','.join(valid_cnr_refs)})"
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
- # Final alignment in the last table
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)