95 lines
3.6 KiB
Python
95 lines
3.6 KiB
Python
|
from multiprocessing import set_start_method
|
||
|
import numpy as np
|
||
|
from umcglib.utils import apply_parallel,print_stats_np
|
||
|
from os import listdir
|
||
|
import matplotlib.pyplot as plt
|
||
|
|
||
|
# mypath = f'/data/pca-rad/datasets/miccai_2022/K2S_MICCAI2022_GRP/train/data/TBrecon1/train/untarred'
|
||
|
# patient_id = 'pat00123'
|
||
|
# seg = np.load(f'{mypath}/{patient_id}/{patient_id}_seg.npy').astype(int)
|
||
|
# print(np.shape(seg))
|
||
|
# print_stats_np(seg,'seg_sdgsd')
|
||
|
|
||
|
def load_seg(file,mypath):
|
||
|
patient_id = file
|
||
|
print(patient_id)
|
||
|
seg = np.load(f'{mypath}/{patient_id}/{patient_id}_seg.npy').astype(int)
|
||
|
background = np.sum(seg == 0)
|
||
|
femoral_cartilage = np.sum(seg == 1)
|
||
|
tibial_cartilage = np.sum(seg == 2)
|
||
|
patellar_cartilage = np.sum(seg == 3)
|
||
|
femur = np.sum(seg == 4)
|
||
|
tibia = np.sum(seg == 5)
|
||
|
patella = np.sum(seg == 6)
|
||
|
output = [background,femoral_cartilage,tibial_cartilage,patellar_cartilage,femur,tibia,patella]
|
||
|
# print('background',background)
|
||
|
return output
|
||
|
|
||
|
def calculate_hist(segs):
|
||
|
background = np.sum(segs == 0)
|
||
|
femoral_cartilage = np.sum(segs == 1)
|
||
|
tibial_cartilage = np.sum(segs == 2)
|
||
|
patellar_cartilage = np.sum(segs == 3)
|
||
|
femur = np.sum(segs == 4)
|
||
|
tibia = np.sum(segs == 5)
|
||
|
patella = np.sum(segs == 6)
|
||
|
output = [background,femoral_cartilage,tibial_cartilage,patellar_cartilage,femur,tibia,patella]
|
||
|
# print('background',background)
|
||
|
return output
|
||
|
|
||
|
if __name__ == '__main__':
|
||
|
path = f'/data/pca-rad/datasets/miccai_2022/K2S_MICCAI2022_GRP/train/data/TBrecon1/train/untarred'
|
||
|
files = [f for f in listdir(path)]
|
||
|
print('files length',len(files))
|
||
|
# For multiprocessing
|
||
|
set_start_method("spawn")
|
||
|
print('spawn done')
|
||
|
# segs_list = apply_parallel(files, load_seg, 4, mypath = path)
|
||
|
segs_list = apply_parallel(files, load_seg, 12, mypath = path)
|
||
|
print('done loading 50')
|
||
|
# segs_list_100 = apply_parallel(files[50:100], load_seg, 4, mypath = path)
|
||
|
# print('done loading 100')
|
||
|
# segs_list_150 = apply_parallel(files[100:150], load_seg, 4, mypath = path)
|
||
|
# print('done loading 150')
|
||
|
# segs_list_200 = apply_parallel(files[150:200], load_seg, 4, mypath = path)
|
||
|
# print('done loading 200')
|
||
|
# segs_list_250 = apply_parallel(files[200:250], load_seg, 4, mypath = path)
|
||
|
# print('done loading 250')
|
||
|
# segs_list_300 = apply_parallel(files[250:300], load_seg, 4, mypath = path)
|
||
|
print('done loading 300')
|
||
|
# segs_list.extend(segs_list_100)
|
||
|
# segs_list.extend(segs_list_150)
|
||
|
# segs_list.extend(segs_list_200)
|
||
|
# segs_list.extend(segs_list_250)
|
||
|
# segs_list.extend(segs_list_300)
|
||
|
print('segs_list is done')
|
||
|
|
||
|
output = np.stack(segs_list, axis=0)
|
||
|
# print('load done',np.shape(segs_n))
|
||
|
|
||
|
# output = apply_parallel(segs_list,calculate_hist,4)
|
||
|
print('hist calc done',np.shape(output))
|
||
|
# print(np.stack(output)[:,0])
|
||
|
|
||
|
dict = {
|
||
|
'background': np.stack(output)[:,0],
|
||
|
'femoral_cartilage': np.stack(output)[:,1],
|
||
|
'tibial_cartilage': np.stack(output)[:,2],
|
||
|
'patellar_cartilage': np.stack(output)[:,3],
|
||
|
'femur': np.stack(output)[:,4],
|
||
|
'tibia': np.stack(output)[:,5],
|
||
|
'patella': np.stack(output)[:,6]
|
||
|
}
|
||
|
|
||
|
np.save('../dict.npy',dict)
|
||
|
|
||
|
for keys in dict:
|
||
|
plt.figure()
|
||
|
data = dict[f'{keys}']
|
||
|
plt.hist(data)
|
||
|
plt.title(f"historgram of {keys}")
|
||
|
plt.savefig(f"../{keys}.png", dpi=300)
|
||
|
print('done ',keys)
|
||
|
|
||
|
|