LungTumorMask / training /Utils /radiomics_formatting.py
Vemund Fredriksen
Add training pipeline (#21)
1cc0005 unverified
raw
history blame
No virus
2.03 kB
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\\")