testing_patients = [27,136,62,144,83,78,135,13,126]
#validation_patients = [125,  68,  85,  88,   7, 112, 130,   8,  32, 122,  70, 100, 128, 91,  41]
num_classes=5

'''all_patients = load_patients_David_not_adapted()
all_patients_no_test = {}
for k in all_patients.keys():
    if k not in testing_patients:
        all_patients_no_test[k] = all_patients[k]'''
train_ids = [i for i in range(200) if (i not in validation_patients and i not in testing_patients)]

train_ids = [i for i in train_ids if i not in ignore]
validation_patients = [i for i in validation_patients if i not in ignore]
testing_patients = [i for i in testing_patients if i not in ignore]

patients_train = load_patients_David_for_3D_UNet(train_ids)
patients_validation = load_patients_David_for_3D_UNet(validation_patients)
patients_test = load_patients_David_for_3D_UNet(testing_patients)

# del all_patients
# all_patients_no_test = all_patients
'''tmp = SegmentationBatchGeneratorDavid(all_patients_no_test, 50, validation_patients, PATCH_SIZE=OUTPUT_PATCH_SIZE, mode="train", ignore=[40], losses=None, num_batches=None, seed=None)
tmp = Multithreaded_Generator(tmp, 2, 20)

ctr = 0
class_frequencies = np.zeros(5)
for data, seg, id in data_gen_train:
    print ctr
    class_frequencies[0] += np.sum(seg[:, 0] == 0)
    class_frequencies[1] += np.sum(seg[:, 0] == 1)
    class_frequencies[2] += np.sum(seg[:, 0] == 2)



test_patients = np.unique([27,136,62,144,83,78,135,13,126])
experiment_name = "segmentPatches_David_UNet3D_noBN_adapted_expSchedule"
results_folder = "/home/fabian/datasets/Hirntumor_von_David/experiments/results/%s/" % experiment_name
epoch = 27
results_out_folder = "/home/fabian/datasets/Hirntumor_von_David/experiments/results/%s/ep%03.0d" % (experiment_name, epoch)
if not os.path.isdir(results_out_folder):
    os.mkdir(results_out_folder)

all_official_metrics = np.zeros((len(test_patients), 13))
ctr=0

patients_test = load_patients_David_for_3D_UNet(test_patients)


for patient_id in test_patients:
    print patient_id
    output_folder = os.path.join(results_out_folder, "%03.0d" % patient_id)
    if not os.path.isdir(output_folder):
        os.mkdir(output_folder)
    patient_data = patients_test[patient_id]
    patient_data["t1"] = extract_brain_region(patient_data["t1"], patient_data["seg"], 0)
    patient_data["t1km"] = extract_brain_region(patient_data["t1km"], patient_data["seg"], 0)
    patient_data["flair"] = extract_brain_region(patient_data["flair"], patient_data["seg"], 0)
    patient_data["adc"] = extract_brain_region(patient_data["adc"], patient_data["seg"], 0)
    patient_data["cbv"] = extract_brain_region(patient_data["cbv"], patient_data["seg"], 0)
    patient_data["seg"] = extract_brain_region(patient_data["seg"], patient_data["seg"], 0)
    curr_shape = patient_data["t1"].shape