diff --git a/kimo/2-check-series.py b/kimo/2-check-series.py index 74c157d..d56b70a 100644 --- a/kimo/2-check-series.py +++ b/kimo/2-check-series.py @@ -22,6 +22,7 @@ INCLUDED_HASH = [ LAST_DAY = datetime.datetime.strptime("2025-11-01", "%Y-%m-%d") +MAX_PATIENT = 10//3 SRC_ROOT = "/mnt/t24/Public/kimo/TSHA" RAW_DIR = "/mnt/t24/Public/kimo/raw/" @@ -217,6 +218,8 @@ def main(): for patho in sorted(os.listdir(SRC_ROOT)): patho_dir = os.path.join(SRC_ROOT, patho) + num_patient = 0 + for patient in sorted(os.listdir(patho_dir)): md5, hash = hashptid(patient) @@ -268,7 +271,9 @@ def main(): if num_study > 0: with open(complete_file, 'w') as f: f.write('done') - # break + num_patient += 1 + if num_patient >= MAX_PATIENT: + break # break print(NII_DICT) logging.info(f"BodyPartExamined: {BodyPartExamined}") diff --git a/kimo/4-final-copy.py b/kimo/4-final-copy.py index 79458cf..b563423 100644 --- a/kimo/4-final-copy.py +++ b/kimo/4-final-copy.py @@ -6,6 +6,7 @@ import shutil from PIL import Image import numpy as np +import pandas as pd import SimpleITK as sitk ROOT_DIR = "/mnt/t24/Public/kimo/" @@ -99,8 +100,14 @@ def contour_overlay(image_nii, label_nii): logging.warning(f"No label found in {label_nii}") return None - print(stats.GetPhysicalSize(1)) - exit() + if stats.GetPhysicalSize(1) < 1000: + logging.warning(f"Label size too small in {label_nii}") + return None + + # print(stats.GetFeretDiameter(1)) + # print(stats.GetEquivalentEllipsoidDiameter(1)) + # print(stats.GetPhysicalSize(1)) + # exit() center_idx = largest.TransformPhysicalPointToIndex(stats.GetCentroid(1)) @@ -162,9 +169,11 @@ def contour_overlay(image_nii, label_nii): return { 'contour_image': Image.fromarray(row_con), - 'overlay_image': combined_img + 'overlay_image': combined_img, + 'stats': stats, } +DATALIST = [] def main(): FORMAT = '%(asctime)s [%(filename)s:%(lineno)d] %(message)s' @@ -213,10 +222,24 @@ def main(): shutil.copyfile(image_nii, f"{dest_dir}/image.nii.gz") shutil.copyfile(label_nii, f"{dest_dir}/label.nii.gz") - copytree(dicomdir, f"{dest_dir}/DICOM") + # copytree(dicomdir, f"{dest_dir}/DICOM") CASE_SET.add(hash) # exit() + DATALIST.append({ + "Category": category, + "Stem": stem, + "EquivalentEllipsoidDiameter": con_ov['stats'].GetEquivalentEllipsoidDiameter(1), + "PhysicalSize": con_ov['stats'].GetPhysicalSize(1), + # "dicomdir": dicomdir, + # "image_nii": image_nii, + # "label_nii": label_nii, + # "dest_dir": dest_dir, + }) + + df = pd.DataFrame(DATALIST) + df.to_excel(f"{FINAL_DIR}/datalist.xlsx", index=False) + if __name__ == "__main__": main()