Skip to content

Commit

Permalink
Making previous tests e2e
Browse files Browse the repository at this point in the history
  • Loading branch information
szmazurek committed Jan 16, 2025
1 parent 7611b3a commit cb6c184
Showing 1 changed file with 108 additions and 112 deletions.
220 changes: 108 additions & 112 deletions testing/test_lightning_components.py
Original file line number Diff line number Diff line change
Expand Up @@ -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():
Expand Down Expand Up @@ -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():
Expand Down Expand Up @@ -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():
Expand Down Expand Up @@ -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
Expand Down Expand Up @@ -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"
Expand Down Expand Up @@ -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
Expand All @@ -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"
)
Expand Down

0 comments on commit cb6c184

Please sign in to comment.