fast-mri/scripts/test.py

95 lines
3.6 KiB
Python
Executable File

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)