Spaces:
Sleeping
Sleeping
File size: 2,031 Bytes
1cc0005 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 |
from dcmrtstruct2nii import dcmrtstruct2nii, list_rt_structs
from glob import glob
import os
import platform
directory_split = "\\" if platform.system() == "Windows" else "/"
def format_scan(dicom_path, rstruct_path, savepath):
dcmrtstruct2nii(rstruct_path, dicom_path, savepath, mask_foreground_value=1, structures=['GTV-1'])
def move_temporary_file(save_directory, file_name):
try:
os.rename(f"{save_directory}{directory_split}temp{directory_split}mask_GTV-1.nii.gz", f"{save_directory}{directory_split}Labels{directory_split}{file_name}")
os.rename(f"{save_directory}{directory_split}temp{directory_split}image.nii.gz", f"{save_directory}{directory_split}Images{directory_split}{file_name}")
except:
print("Segmentation or raw image not found\nmoving on...")
def format_radiomics(load_directory, save_directory):
os.mkdir(f"{save_directory}{directory_split}temp")
os.mkdir(f"{save_directory}{directory_split}Images")
os.mkdir(f"{save_directory}{directory_split}Labels")
temp_dir = f"{save_directory}{directory_split}temp"
for scan in sorted(glob(f"{load_directory}{directory_split}*")):
file_name = "radiomics_" + scan.split(directory_split)[-1].split("-")[-1]
scan_folder = glob(f"{scan}{directory_split}*")[0]
components = glob(f"{scan_folder}{directory_split}*")
dcm = components[0]
rstruct = components[0]
for component in components:
if(len(glob(f"{component}{directory_split}*")) > 1):
dcm = component
break
for component in components:
rs = glob(f"{component}{directory_split}*")[0]
try:
list_rt_structs(rs)
rstruct = rs
except:
pass
format_scan(dcm, rstruct, temp_dir)
move_temporary_file(save_directory, f"{file_name}.nii.gz")
if __name__ == "__main__":
format_radiomics("D:\\Datasets\\NSCLC-Radiomics\\NSCLC-Radiomics\\", "D:\\Datasets\\Temp\\") |