From cb6c184e0e7c69949216101f115252e99775d495 Mon Sep 17 00:00:00 2001 From: szmazurek Date: Thu, 16 Jan 2025 18:05:29 +0100 Subject: [PATCH] Making previous tests e2e --- testing/test_lightning_components.py | 220 +++++++++++++-------------- 1 file changed, 108 insertions(+), 112 deletions(-) diff --git a/testing/test_lightning_components.py b/testing/test_lightning_components.py index 626851132..62cbcbb54 100644 --- a/testing/test_lightning_components.py +++ b/testing/test_lightning_components.py @@ -326,6 +326,8 @@ def test_port_model_2d_rad_segmentation_single_device_single_node(device): trainer.fit(module, train_dataloader, val_dataloader) trainer.test(module, test_dataloader) + trainer.predict(module, test_dataloader) + def test_port_model_3d_rad_segmentation_single_device_single_node(device): with TrainerTestsContextManager(): @@ -391,6 +393,8 @@ def test_port_model_3d_rad_segmentation_single_device_single_node(device): trainer.fit(module, train_dataloader, val_dataloader) trainer.test(module, test_dataloader) + trainer.predict(module, test_dataloader) + def test_port_model_2d_rad_regression_single_device_single_node(device): with TrainerTestsContextManager(): @@ -448,6 +452,8 @@ def test_port_model_2d_rad_regression_single_device_single_node(device): trainer.fit(module, train_dataloader, val_dataloader) trainer.test(module, test_dataloader) + trainer.predict(module, test_dataloader) + def test_port_model_3d_rad_regression_single_device_single_node(device): with TrainerTestsContextManager(): @@ -506,118 +512,113 @@ def test_port_model_3d_rad_regression_single_device_single_node(device): trainer.fit(module, train_dataloader, val_dataloader) trainer.test(module, test_dataloader) + trainer.predict(module, test_dataloader) + def test_port_model_2d_rad_classification_single_device_single_node(device): - with TrainerTestsContextManager(): - parameters = parseConfig( - TESTS_DIRPATH + "/config_classification.yaml", version_check_flag=False - ) - parameters["modality"] = "rad" - parameters["track_memory_usage"] = True - parameters["patch_size"] = PATCH_SIZE["2D"] - parameters["model"]["dimension"] = 2 - training_data, parameters["headers"] = parseTrainingCSV( - TEST_DATA_DIRPATH + "/train_2d_rad_classification.csv" - ) - parameters["model"]["num_channels"] = 3 - parameters["model"]["onnx_export"] = False - parameters["model"]["print_summary"] = False - parameters["save_output"] = True - parameters["model"]["architecture"] = "densenet121" - parameters = populate_header_in_parameters(parameters, parameters["headers"]) - dataset = ImagesFromDataFrame( - training_data, parameters, train=True, loader_type="train" - ) - dataset_val = ImagesFromDataFrame( - training_data, parameters, train=False, loader_type="validation" - ) - dataset_test = ImagesFromDataFrame( - training_data, parameters, train=False, loader_type="test" - ) - train_dataloader = torch.utils.data.DataLoader( - dataset, batch_size=parameters["batch_size"], shuffle=True - ) - val_dataloader = torch.utils.data.DataLoader( - dataset_val, batch_size=parameters["batch_size"], shuffle=False - ) - test_dataloader = torch.utils.data.DataLoader( - dataset_test, batch_size=parameters["batch_size"], shuffle=False - ) - parameters = populate_channel_keys_in_params(train_dataloader, parameters) - module = GandlfLightningModule(parameters, output_dir=TEST_DATA_OUTPUT_DIRPATH) - trainer = pl.Trainer( - accelerator="auto", - strategy="auto", - fast_dev_run=False, - devices=1, - num_nodes=1, - max_epochs=parameters["num_epochs"], - sync_batchnorm=False, - enable_checkpointing=False, - logger=False, - num_sanity_val_steps=0, - ) - trainer.fit(module, train_dataloader, val_dataloader) - trainer.test(module, test_dataloader) + # with TrainerTestsContextManager(): + parameters = parseConfig( + TESTS_DIRPATH + "/config_classification.yaml", version_check_flag=False + ) + parameters["modality"] = "rad" + parameters["track_memory_usage"] = True + parameters["patch_size"] = PATCH_SIZE["2D"] + parameters["model"]["dimension"] = 2 + parameters["model"]["final_layer"] = "logits" + training_data, parameters["headers"] = parseTrainingCSV( + TEST_DATA_DIRPATH + "/train_2d_rad_classification.csv" + ) + parameters["model"]["num_channels"] = 3 + parameters["model"]["onnx_export"] = False + parameters["model"]["print_summary"] = False + parameters["save_output"] = True + parameters["model"]["architecture"] = "densenet121" + parameters = populate_header_in_parameters(parameters, parameters["headers"]) + dataset = ImagesFromDataFrame( + training_data, parameters, train=True, loader_type="train" + ) + dataset_val = ImagesFromDataFrame( + training_data, parameters, train=False, loader_type="validation" + ) + dataset_test = ImagesFromDataFrame( + training_data, parameters, train=False, loader_type="test" + ) + train_dataloader = torch.utils.data.DataLoader( + dataset, batch_size=parameters["batch_size"], shuffle=True + ) + val_dataloader = torch.utils.data.DataLoader( + dataset_val, batch_size=parameters["batch_size"], shuffle=False + ) + test_dataloader = torch.utils.data.DataLoader( + dataset_test, batch_size=parameters["batch_size"], shuffle=False + ) + parameters = populate_channel_keys_in_params(train_dataloader, parameters) + module = GandlfLightningModule(parameters, output_dir=TEST_DATA_OUTPUT_DIRPATH) + trainer = pl.Trainer( + accelerator="auto", + strategy="auto", + fast_dev_run=False, + devices=1, + num_nodes=1, + max_epochs=parameters["num_epochs"], + sync_batchnorm=False, + enable_checkpointing=False, + logger=False, + num_sanity_val_steps=0, + ) + trainer.fit(module, train_dataloader, val_dataloader) + trainer.test(module, test_dataloader) + inference_data, parameters["headers"] = parseTrainingCSV( + TEST_DATA_DIRPATH + "/train_2d_rad_classification.csv" + ) + inference_data.drop("ValueToPredict", axis=1, inplace=True) + inference_data.drop("Label", axis=1, inplace=True) + temp_infer_csv = os.path.join(TEST_DATA_OUTPUT_DIRPATH, "temp_infer_csv.csv") + inference_data.to_csv(temp_infer_csv, index=False) + parameters = parseConfig( + TESTS_DIRPATH + "/config_classification.yaml", version_check_flag=False + ) + inference_data, parameters["headers"] = parseTrainingCSV(temp_infer_csv) + parameters["output_dir"] = TEST_DATA_OUTPUT_DIRPATH # this is in inference mode + parameters["modality"] = "rad" + parameters["patch_size"] = PATCH_SIZE["2D"] + parameters["model"]["dimension"] = 2 + parameters["model"]["final_layer"] = "logits" + parameters["model"]["num_channels"] = 3 + parameters = populate_header_in_parameters(parameters, parameters["headers"]) + parameters["model"]["architecture"] = "densenet121" + parameters["model"]["onnx_export"] = False + parameters["differential_privacy"] = False + parameters["save_output"] = True + + dataset = ImagesFromDataFrame( + inference_data, parameters, train=False, loader_type="testing" + ) -def test_port_model_3d_rad_classification_single_device_single_node(device): - with TrainerTestsContextManager(): - parameters = parseConfig( - TESTS_DIRPATH + "/config_classification.yaml", version_check_flag=False - ) - parameters["modality"] = "rad" - parameters["track_memory_usage"] = True - parameters["patch_size"] = PATCH_SIZE["3D"] - parameters["model"]["dimension"] = 3 - training_data, parameters["headers"] = parseTrainingCSV( - TEST_DATA_DIRPATH + "/train_3d_rad_classification.csv" - ) - parameters["model"]["num_channels"] = len( - parameters["headers"]["channelHeaders"] - ) - parameters["model"]["onnx_export"] = False - parameters["model"]["print_summary"] = False - parameters["save_output"] = True - parameters = populate_header_in_parameters(parameters, parameters["headers"]) - dataset = ImagesFromDataFrame( - training_data, parameters, train=True, loader_type="train" - ) - dataset_val = ImagesFromDataFrame( - training_data, parameters, train=False, loader_type="validation" - ) - dataset_test = ImagesFromDataFrame( - training_data, parameters, train=False, loader_type="test" - ) - train_dataloader = torch.utils.data.DataLoader( - dataset, batch_size=parameters["batch_size"], shuffle=True - ) - val_dataloader = torch.utils.data.DataLoader( - dataset_val, batch_size=parameters["batch_size"], shuffle=False - ) - test_dataloader = torch.utils.data.DataLoader( - dataset_test, batch_size=parameters["batch_size"], shuffle=False - ) - parameters = populate_channel_keys_in_params(train_dataloader, parameters) - module = GandlfLightningModule(parameters, output_dir=TEST_DATA_OUTPUT_DIRPATH) - trainer = pl.Trainer( - accelerator="auto", - strategy="auto", - fast_dev_run=False, - devices=1, - num_nodes=1, - max_epochs=parameters["num_epochs"], - sync_batchnorm=False, - enable_checkpointing=False, - logger=False, - num_sanity_val_steps=0, - ) - trainer.fit(module, train_dataloader, val_dataloader) - trainer.test(module, test_dataloader) + inference_dataloader = torch.utils.data.DataLoader( + dataset, batch_size=parameters["batch_size"], shuffle=True + ) + parameters = populate_channel_keys_in_params(inference_dataloader, parameters) + + module = GandlfLightningModule(parameters, output_dir=TEST_DATA_OUTPUT_DIRPATH) + trainer = pl.Trainer( + accelerator="auto", + strategy="auto", + fast_dev_run=False, + devices=1, + num_nodes=1, + max_epochs=parameters["num_epochs"], + sync_batchnorm=False, + enable_checkpointing=False, + logger=False, + num_sanity_val_steps=0, + ) + trainer.predict(module, inference_dataloader) # TODO Refactor this and other tests -def test_port_model_3d_rad_classification_inference_single_device_single_node(device): +def test_port_model_3d_rad_classification_single_device_single_node(device): with TrainerTestsContextManager(): parameters = parseConfig( TESTS_DIRPATH + "/config_classification.yaml", version_check_flag=False @@ -779,10 +780,6 @@ def test_port_model_inference_classification_histology_2d(device): parameters["model"]["print_summary"] = False parameters["model"]["onnx_export"] = False parameters["differential_privacy"] = False - modelDir = os.path.join(TEST_DATA_OUTPUT_DIRPATH, "modelDir") - if os.path.isdir(modelDir): - shutil.rmtree(modelDir) - Path(modelDir).mkdir(parents=True, exist_ok=True) dataset = ImagesFromDataFrame( training_data, parameters, train=True, loader_type="train" @@ -851,7 +848,7 @@ def test_port_model_inference_segmentation_histology_2d(): output_dir_patches_output, file_config_temp, ) - + os.remove(file_config_temp) file_for_Training = os.path.join(output_dir_patches_output, "opm_train.csv") parameters = ConfigManager( TESTS_DIRPATH + "/config_segmentation.yaml", version_check_flag=False @@ -872,8 +869,7 @@ def test_port_model_inference_segmentation_histology_2d(): parameters["model"]["onnx_export"] = True parameters["model"]["print_summary"] = True parameters["data_preprocessing"]["resize_image"] = [128, 128] - modelDir = os.path.join(TEST_DATA_OUTPUT_DIRPATH, "modelDir") - Path(modelDir).mkdir(parents=True, exist_ok=True) + dataset = ImagesFromDataFrame( training_data, parameters, train=True, loader_type="train" )