also record diameter and size

This commit is contained in:
Furen Xiao 2026-02-22 12:12:24 +08:00
parent 4f4e8f8882
commit 18df7a2d4f
2 changed files with 33 additions and 5 deletions

View file

@ -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}")

View file

@ -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()