Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
mednet
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Package registry
Model registry
Operate
Environments
Terraform modules
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
medai
software
mednet
Merge requests
!16
Make square centre-padding a model transform
Code
Review changes
Check out branch
Download
Patches
Plain diff
Merged
Make square centre-padding a model transform
issue-23-and-39
into
main
Overview
2
Commits
41
Pipelines
5
Changes
1
Merged
André Anjos
requested to merge
issue-23-and-39
into
main
1 year ago
Overview
2
Commits
41
Pipelines
5
Changes
1
Expand
This MR fixes issues
#23 (closed)
and
#39 (closed)
, by:
Removing centre-cropping from all databases raw-data loaders
Creating a SquareCenterPad transform that operates on tensors
Adding that transform to all relevant models (Pasa, Alexnet, Densenet)
Edited
1 year ago
by
André Anjos
0
0
Merge request reports
Viewing commit
117d75e0
Prev
Next
Show latest version
1 file
+
0
−
107
Inline
Compare changes
Side-by-side
Inline
Show whitespace changes
Show one file at a time
117d75e0
[test] Remove commented cli tests
· 117d75e0
Daniel CARRON
authored
1 year ago
tests/test_cli.py
+
94
−
105
Options
@@ -436,108 +436,97 @@ def test_evaluate_pasa_montgomery(temporary_basedir):
)
# This script does not work anymore, either fix or remove the script + this test
# def test_evaluatevis(temporary_basedir):
# import pandas as pd
# from mednet.scripts.evaluatevis import evaluatevis
# runner = CliRunner()
# # Create a sample directory structure and CSV files
# input_folder = temporary_basedir / "camutils_cli" / "gradcam"
# input_folder.mkdir(parents=True, exist_ok=True)
# class1_dir = input_folder / "class1"
# class1_dir.mkdir(parents=True, exist_ok=True)
# class2_dir = input_folder / "class2"
# class2_dir.mkdir(parents=True, exist_ok=True)
# data = {
# "MoRF": [1, 2, 3],
# "LeRF": [2, 4, 6],
# "Combined Score ((LeRF-MoRF) / 2)": [1.5, 3, 4.5],
# "IoU": [1, 2, 3],
# "IoDA": [2, 4, 6],
# "propEnergy": [1.5, 3, 4.5],
# "ASF": [1, 2, 3],
# }
# df = pd.DataFrame(data)
# df.to_csv(class1_dir / "file1.csv", index=False)
# df.to_csv(class2_dir / "file1.csv", index=False)
# df.to_csv(class1_dir / "file2.csv", index=False)
# df.to_csv(class2_dir / "file2.csv", index=False)
# result = runner.invoke(evaluatevis, ["-vv", "-i", str(input_folder)])
# assert result.exit_code == 0
# assert (input_folder / "file1_summary.csv").exists()
# assert (input_folder / "file2_summary.csv").exists()
# Not enough RAM available to do this test
# @pytest.mark.skip_if_rc_var_not_set("datadir.montgomery")
# def test_predict_densenetrs_montgomery(temporary_basedir, datadir):
# from mednet.scripts.predict import predict
# runner = CliRunner()
# with stdout_logging() as buf:
# output_folder = str(temporary_basedir / "predictions")
# result = runner.invoke(
# predict,
# [
# "densenet_rs",
# "montgomery_f0_rgb",
# "-vv",
# "--batch-size=1",
# f"--weight={str(datadir / 'lfs' / 'models' / 'densenetrs.pth')}",
# f"--output-folder={output_folder}",
# "--grad-cams"
# ],
# )
# _assert_exit_0(result)
# # check predictions are there
# predictions_file1 = os.path.join(output_folder, "train/predictions.csv")
# predictions_file2 = os.path.join(output_folder, "validation/predictions.csv")
# predictions_file3 = os.path.join(output_folder, "test/predictions.csv")
# assert os.path.exists(predictions_file1)
# assert os.path.exists(predictions_file2)
# assert os.path.exists(predictions_file3)
# # check some grad cams are there
# cam1 = os.path.join(output_folder, "train/cams/MCUCXR_0002_0_cam.png")
# cam2 = os.path.join(output_folder, "train/cams/MCUCXR_0126_1_cam.png")
# cam3 = os.path.join(output_folder, "train/cams/MCUCXR_0275_1_cam.png")
# cam4 = os.path.join(output_folder, "validation/cams/MCUCXR_0399_1_cam.png")
# cam5 = os.path.join(output_folder, "validation/cams/MCUCXR_0113_1_cam.png")
# cam6 = os.path.join(output_folder, "validation/cams/MCUCXR_0013_0_cam.png")
# cam7 = os.path.join(output_folder, "test/cams/MCUCXR_0027_0_cam.png")
# cam8 = os.path.join(output_folder, "test/cams/MCUCXR_0094_0_cam.png")
# cam9 = os.path.join(output_folder, "test/cams/MCUCXR_0375_1_cam.png")
# assert os.path.exists(cam1)
# assert os.path.exists(cam2)
# assert os.path.exists(cam3)
# assert os.path.exists(cam4)
# assert os.path.exists(cam5)
# assert os.path.exists(cam6)
# assert os.path.exists(cam7)
# assert os.path.exists(cam8)
# assert os.path.exists(cam9)
# keywords = {
# r"^Loading checkpoint from.*$": 1,
# r"^Total time:.*$": 3,
# r"^Grad cams folder:.*$": 3,
# }
# buf.seek(0)
# logging_output = buf.read()
# for k, v in keywords.items():
# assert _str_counter(k, logging_output) == v, (
# f"Count for string '{k}' appeared "
# f"({_str_counter(k, logging_output)}) "
# f"instead of the expected {v}:\nOutput:\n{logging_output}"
# )
@pytest.mark.skip_if_rc_var_not_set
(
"
datadir.montgomery
"
)
def
test_experiment
(
temporary_basedir
):
from
mednet.scripts.experiment
import
experiment
runner
=
CliRunner
()
output_folder
=
str
(
temporary_basedir
/
"
experiment
"
)
num_epochs
=
2
result
=
runner
.
invoke
(
experiment
,
[
"
-vv
"
,
"
pasa
"
,
"
montgomery
"
,
f
"
--epochs=
{
num_epochs
}
"
,
f
"
--output-folder=
{
output_folder
}
"
,
],
)
_assert_exit_0
(
result
)
assert
os
.
path
.
exists
(
os
.
path
.
join
(
output_folder
,
"
command.sh
"
))
assert
os
.
path
.
exists
(
os
.
path
.
join
(
output_folder
,
"
predictions.json
"
))
assert
os
.
path
.
exists
(
os
.
path
.
join
(
output_folder
,
"
model
"
,
"
command.sh
"
))
assert
os
.
path
.
exists
(
os
.
path
.
join
(
output_folder
,
"
model
"
,
"
constants.csv
"
))
assert
os
.
path
.
exists
(
os
.
path
.
join
(
output_folder
,
"
model
"
,
f
"
model-at-epoch=
{
num_epochs
-
1
}
.ckpt
"
)
)
# Need to glob because we cannot be sure of the checkpoint with lowest validation loss
assert
(
len
(
glob
.
glob
(
os
.
path
.
join
(
output_folder
,
"
model
"
,
"
model-at-lowest-validation-loss-epoch=*.ckpt
"
,
)
)
)
==
1
)
assert
os
.
path
.
exists
(
os
.
path
.
join
(
output_folder
,
"
model
"
,
"
model-summary.txt
"
)
)
assert
os
.
path
.
exists
(
os
.
path
.
join
(
output_folder
,
"
model
"
,
"
trainlog.pdf
"
))
assert
(
len
(
glob
.
glob
(
os
.
path
.
join
(
output_folder
,
"
model
"
,
"
logs
"
,
"
events.out.tfevents.*
"
)
)
)
==
1
)
assert
os
.
path
.
exists
(
os
.
path
.
join
(
output_folder
,
"
evaluation
"
,
"
plots.pdf
"
)
)
assert
os
.
path
.
exists
(
os
.
path
.
join
(
output_folder
,
"
evaluation
"
,
"
summary.rst
"
)
)
assert
os
.
path
.
exists
(
os
.
path
.
join
(
output_folder
,
"
gradcam
"
,
"
saliencies
"
))
assert
(
len
(
glob
.
glob
(
os
.
path
.
join
(
output_folder
,
"
gradcam
"
,
"
saliencies
"
,
"
CXR_png
"
,
"
MCUCXR_*.npy
"
,
)
)
)
==
138
)
assert
os
.
path
.
exists
(
os
.
path
.
join
(
output_folder
,
"
gradcam
"
,
"
visualizations
"
)
)
assert
(
len
(
glob
.
glob
(
os
.
path
.
join
(
output_folder
,
"
gradcam
"
,
"
visualizations
"
,
"
CXR_png
"
,
"
MCUCXR_*.png
"
,
)
)
)
==
58
)
Loading