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\\")