Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Getting code ready for the next major release #58

Draft
wants to merge 1,390 commits into
base: master
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
1390 commits
Select commit Hold shift + click to select a range
675bb2e
Simplify build copy. Rename stages
aristizabal95 Jul 24, 2023
4ea515a
Simplify build copy. Rename stages
aristizabal95 Jul 24, 2023
4dcb96e
Merge branch 'fets_2.0' of https://github.com/FeTS-AI/Front-End into …
aristizabal95 Jul 24, 2023
678eee4
Merge branch 'fets_2.0' of https://github.com/FeTS-AI/Front-End into …
aristizabal95 Jul 24, 2023
75b1bed
added example for tumor segmentation models
sarthakpati Jul 25, 2023
54d5159
added example for tumor segmentation models
sarthakpati Jul 25, 2023
e6f72c7
updated to use the example models
sarthakpati Jul 25, 2023
8d7ecd9
updated to use the example models
sarthakpati Jul 25, 2023
760c0da
added brats nomenclature
sarthakpati Jul 25, 2023
734dd04
added brats nomenclature
sarthakpati Jul 25, 2023
3243bee
updated nomenclature
sarthakpati Jul 25, 2023
00470e6
updated nomenclature
sarthakpati Jul 25, 2023
99a3a2e
fixed list issue
sarthakpati Jul 26, 2023
f672747
fixed list issue
sarthakpati Jul 26, 2023
b8eadb1
Merge branch 'fets_2.0' of https://github.com/FeTS-AI/Front-End into …
sarthakpati Jul 26, 2023
3c1bcb4
Merge branch 'fets_2.0' of https://github.com/FeTS-AI/Front-End into …
sarthakpati Jul 26, 2023
440376a
updated hash
sarthakpati Jul 26, 2023
9fe207b
version update
sarthakpati Jul 26, 2023
60aae62
Merge branch 'master' of https://github.com/FeTS-AI/Front-End into fe…
sarthakpati Jul 26, 2023
57d7a38
Merge branch 'master' of https://github.com/FeTS-AI/Front-End into fe…
sarthakpati Jul 26, 2023
b7b918b
Move downloaded models to MLCube
aristizabal95 Jul 26, 2023
eb53a4b
Move downloaded models to MLCube
aristizabal95 Jul 26, 2023
85cb2bf
Fix prev stage removal from brain_extraction
aristizabal95 Jul 26, 2023
94b8588
Fix prev stage removal from brain_extraction
aristizabal95 Jul 26, 2023
ee47c95
Fix get row information retrieval
aristizabal95 Jul 26, 2023
c421040
Fix get row information retrieval
aristizabal95 Jul 26, 2023
b5cd751
Merge branch 'fets_2.0' of https://github.com/FeTS-AI/Front-End into …
aristizabal95 Jul 26, 2023
33aabc7
Merge branch 'fets_2.0' of https://github.com/FeTS-AI/Front-End into …
aristizabal95 Jul 26, 2023
a061984
added comment
sarthakpati Jul 26, 2023
687fa90
added comment
sarthakpati Jul 26, 2023
c056e69
dynamic download of models
sarthakpati Jul 27, 2023
4e0edb7
dynamic download of models
sarthakpati Jul 27, 2023
4f4e30b
Remove repeated pip installs. Don't use venv
aristizabal95 Jul 31, 2023
828cb5b
Remove repeated pip installs. Don't use venv
aristizabal95 Jul 31, 2023
e262d51
Merge branch 'fets_2.0' of https://github.com/FeTS-AI/Front-End into …
aristizabal95 Jul 31, 2023
6f1cfd0
Merge branch 'fets_2.0' of https://github.com/FeTS-AI/Front-End into …
aristizabal95 Jul 31, 2023
7e3b2ef
Implement genera, extract stage.
aristizabal95 Jul 31, 2023
4a997ef
Implement genera, extract stage.
aristizabal95 Jul 31, 2023
f7ebae9
Fix brain file naming issue
aristizabal95 Jul 31, 2023
03216e0
Fix brain file naming issue
aristizabal95 Jul 31, 2023
56ef4d0
Add status code to extract code
aristizabal95 Jul 31, 2023
408f3b8
Add status code to extract code
aristizabal95 Jul 31, 2023
a8b5053
no need for cast
sarthakpati Jul 31, 2023
6447316
no need for cast
sarthakpati Jul 31, 2023
cd2032f
Merge branch 'fets_2.0' of https://github.com/FeTS-AI/Front-End into …
aristizabal95 Aug 1, 2023
ca4dfce
Merge branch 'fets_2.0' of https://github.com/FeTS-AI/Front-End into …
aristizabal95 Aug 1, 2023
fd8e417
Download model checkpoints at build time
aristizabal95 Aug 1, 2023
eb2a501
Download model checkpoints at build time
aristizabal95 Aug 1, 2023
e16cf65
Move downloads to happen before copying contents
aristizabal95 Aug 7, 2023
b8e2ba9
Move downloads to happen before copying contents
aristizabal95 Aug 7, 2023
709d894
Generalize extract stage. Get Traceback
aristizabal95 Aug 7, 2023
056d979
Generalize extract stage. Get Traceback
aristizabal95 Aug 7, 2023
b3c5dff
Place constants on a separate folder
aristizabal95 Aug 7, 2023
2d2f11c
Place constants on a separate folder
aristizabal95 Aug 7, 2023
77ec6fd
Add manual step
aristizabal95 Aug 7, 2023
10d8adb
Add manual step
aristizabal95 Aug 7, 2023
2ce8fa4
Set backup to read-only
aristizabal95 Aug 8, 2023
98f73f4
Set backup to read-only
aristizabal95 Aug 8, 2023
b009e89
Remove unused dockerfile
aristizabal95 Aug 10, 2023
3b3213d
Remove unused dockerfile
aristizabal95 Aug 10, 2023
f152385
Fix manual stage
aristizabal95 Aug 10, 2023
d8e9a0c
Fix manual stage
aristizabal95 Aug 10, 2023
ad37303
[WIP] Implement match stage
aristizabal95 Aug 10, 2023
58f497b
[WIP] Implement match stage
aristizabal95 Aug 10, 2023
2880193
Implement match stage should_run function
aristizabal95 Aug 10, 2023
5713d3d
Implement match stage should_run function
aristizabal95 Aug 10, 2023
419733b
Install recent version of GaNDLF
aristizabal95 Aug 10, 2023
15a2b0b
Install recent version of GaNDLF
aristizabal95 Aug 10, 2023
f5ad518
copy data_prep_models from the correct folder
hasan7n Aug 15, 2023
c52193b
copy data_prep_models from the correct folder
hasan7n Aug 15, 2023
ef574ab
fix bugs related to tumor segmentation
hasan7n Aug 15, 2023
c32dd95
fix bugs related to tumor segmentation
hasan7n Aug 15, 2023
2aefcdc
modify tumor segmentation model download url
hasan7n Aug 16, 2023
40ed04c
modify tumor segmentation model download url
hasan7n Aug 16, 2023
3f04385
fix the bugfix in prepareDataset
hasan7n Aug 16, 2023
a6793a7
fix the bugfix in prepareDataset
hasan7n Aug 16, 2023
d122ae6
start fixing matching step (WIP)
hasan7n Aug 16, 2023
7b7c35b
start fixing matching step (WIP)
hasan7n Aug 16, 2023
e56bb5a
updated link for tumor segmentation model
sarthakpati Aug 18, 2023
54bb2c5
updated link for tumor segmentation model
sarthakpati Aug 18, 2023
ee06c51
updated modality order and models
sarthakpati Aug 18, 2023
bec43dd
updated modality order and models
sarthakpati Aug 18, 2023
8bd3dbe
merge branch fets_2.0
hasan7n Aug 21, 2023
fe1d353
merge branch fets_2.0
hasan7n Aug 21, 2023
d2f5abc
Update Dockerfile
sarthakpati Aug 22, 2023
0ff9b41
Update Dockerfile
sarthakpati Aug 22, 2023
99aefe4
replacing string containment with string non-equality
brandon-edwards Aug 22, 2023
d0ed8fc
replacing string containment with string non-equality
brandon-edwards Aug 22, 2023
0939398
use tumor files names from dict
hasan7n Aug 23, 2023
f246be3
use tumor files names from dict
hasan7n Aug 23, 2023
436a4c2
fix name conventions for extraction models outputs
hasan7n Aug 23, 2023
24d492d
fix name conventions for extraction models outputs
hasan7n Aug 23, 2023
6afa8ce
revert back to non openvino model
hasan7n Aug 23, 2023
2ba17d5
revert back to non openvino model
hasan7n Aug 23, 2023
07ea0f2
remove file extension from tumor mask ID
hasan7n Aug 23, 2023
c0125aa
remove file extension from tumor mask ID
hasan7n Aug 23, 2023
1bd29e2
Merge remote-tracking branch 'hasan7n/separate-stages-copied-branch' …
hasan7n Aug 23, 2023
67452ab
Merge remote-tracking branch 'hasan7n/separate-stages-copied-branch' …
hasan7n Aug 23, 2023
2fca4ca
missing and extra modalities detected by string for subject and timep…
brandon-edwards Aug 24, 2023
c2d0cdb
missing and extra modalities detected by string for subject and timep…
brandon-edwards Aug 24, 2023
84f8d98
Merge branch 'separate-stages-copied-branch' of https://github.com/ha…
brandon-edwards Aug 24, 2023
fed4063
Merge branch 'separate-stages-copied-branch' of https://github.com/ha…
brandon-edwards Aug 24, 2023
696ce37
Merge pull request #1 from hasan7n/separate-stages-copied-branch
aristizabal95 Aug 28, 2023
eb82322
Merge pull request #1 from hasan7n/separate-stages-copied-branch
aristizabal95 Aug 28, 2023
8ee2bb5
Implement comparison
aristizabal95 Aug 30, 2023
b60d3b9
Implement comparison
aristizabal95 Aug 30, 2023
d3cdc7c
Fix manual step
aristizabal95 Aug 30, 2023
a62b4cc
Fix manual step
aristizabal95 Aug 30, 2023
3cb4b6e
Update itcr_connectivity.md
sarthakpati Aug 31, 2023
8efaf43
Sync data to input data. Implement confirm stage
aristizabal95 Aug 31, 2023
0737cb2
Sync data to input data. Implement confirm stage
aristizabal95 Aug 31, 2023
a7a02c2
Fix manual step trying to inspect nonexistent path
aristizabal95 Sep 1, 2023
8aff52b
Fix manual step trying to inspect nonexistent path
aristizabal95 Sep 1, 2023
2bcc6a3
Fix report using incorrect out path
aristizabal95 Sep 1, 2023
f1719c0
Fix report using incorrect out path
aristizabal95 Sep 1, 2023
a1fa8e2
Fix report being created with wrong voxels column
aristizabal95 Sep 1, 2023
134a181
Fix report being created with wrong voxels column
aristizabal95 Sep 1, 2023
7608e58
Add comment on exact match
aristizabal95 Sep 1, 2023
73420d6
Add comment on exact match
aristizabal95 Sep 1, 2023
01f28ce
Implement confirm stage (Auto-confirm for now)
aristizabal95 Sep 1, 2023
b7926cc
Implement confirm stage (Auto-confirm for now)
aristizabal95 Sep 1, 2023
09728b9
Implement split stage
aristizabal95 Sep 1, 2023
e66b65a
Implement split stage
aristizabal95 Sep 1, 2023
58ace77
Implement pipeline. Fix bugs
aristizabal95 Sep 6, 2023
5968853
Implement pipeline. Fix bugs
aristizabal95 Sep 6, 2023
5a00b18
Fix stages not returning success status
aristizabal95 Sep 7, 2023
1493942
Fix stages not returning success status
aristizabal95 Sep 7, 2023
234e9a5
Separate paths by data and labels
aristizabal95 Sep 8, 2023
f4ce377
Separate paths by data and labels
aristizabal95 Sep 8, 2023
d1e1ece
Implement folder structure validation
aristizabal95 Sep 12, 2023
668f591
Implement folder structure validation
aristizabal95 Sep 12, 2023
86a593f
Fix pipeline. Implement file-based input.
aristizabal95 Sep 12, 2023
363d976
Fix pipeline. Implement file-based input.
aristizabal95 Sep 12, 2023
07a4374
Implement empty statistics task
aristizabal95 Sep 12, 2023
8ae2953
Implement empty statistics task
aristizabal95 Sep 12, 2023
6884c79
Merge branch 'fets_2.0' into separate-stages
aristizabal95 Sep 12, 2023
29215d0
Merge branch 'fets_2.0' into separate-stages
aristizabal95 Sep 12, 2023
70e3499
Remove outdated data.csv
aristizabal95 Sep 19, 2023
905d43b
Remove outdated data.csv
aristizabal95 Sep 19, 2023
b9a2cc8
Generate extra split files
aristizabal95 Sep 19, 2023
2f4fee2
Generate extra split files
aristizabal95 Sep 19, 2023
4297da4
Fix nift not deleting previous folder
aristizabal95 Sep 22, 2023
14f92a1
Fix nift not deleting previous folder
aristizabal95 Sep 22, 2023
57f4ccf
Skip processing if input data is already prepared
aristizabal95 Sep 27, 2023
fb26d06
Skip processing if input data is already prepared
aristizabal95 Sep 27, 2023
6f5cd63
Handle errors when validating data
aristizabal95 Sep 29, 2023
cd845ca
Handle errors when validating data
aristizabal95 Sep 29, 2023
7bd6488
Only display error message on failed val
aristizabal95 Sep 29, 2023
861728e
Only display error message on failed val
aristizabal95 Sep 29, 2023
619b2ab
Merge branch 'master' of https://github.com/FeTS-AI/Front-End into se…
aristizabal95 Oct 4, 2023
ed15ba0
Merge branch 'master' of https://github.com/FeTS-AI/Front-End into se…
aristizabal95 Oct 4, 2023
174ef26
Add metadata path
aristizabal95 Oct 6, 2023
0e8e950
Add metadata path
aristizabal95 Oct 6, 2023
6d16602
Add metadata to all tasks. Implement basic stats
aristizabal95 Oct 6, 2023
f253a8b
Add metadata to all tasks. Implement basic stats
aristizabal95 Oct 6, 2023
f1f56fc
added fields from EC
sarthakpati Oct 11, 2023
506e44f
added fields from EC
sarthakpati Oct 11, 2023
b4d24dc
Merge branch 'fets_2.0' of https://github.com/FeTS-AI/Front-End into …
aristizabal95 Oct 11, 2023
5f5f1de
Merge branch 'fets_2.0' of https://github.com/FeTS-AI/Front-End into …
aristizabal95 Oct 11, 2023
0a4fbf6
added more fields
sarthakpati Oct 12, 2023
379074a
Start working on nnunet stage
aristizabal95 Oct 12, 2023
957ca68
Implement extract nnunet
aristizabal95 Oct 13, 2023
c428ff0
Handle failure scenarios
aristizabal95 Oct 16, 2023
bf9b086
Modularize tumor extraction
aristizabal95 Oct 18, 2023
b7bdd49
Add tumor fusing and screenshots
aristizabal95 Oct 18, 2023
600d4d8
ignore models folder
aristizabal95 Oct 18, 2023
0f26cff
fix git ignore models
aristizabal95 Oct 18, 2023
ed3ffba
Don't skip nnunet models
aristizabal95 Oct 19, 2023
7e1693c
Decouple mlcube from report details
aristizabal95 Oct 19, 2023
f6f9c7b
Use empty vs blank stage info
aristizabal95 Oct 19, 2023
67c527e
Merge branch 'separate-stages' of https://github.com/aristizabal95/Fe…
aristizabal95 Oct 19, 2023
020b911
Merge branch 'separate-stages' of https://github.com/aristizabal95/Fe…
aristizabal95 Oct 19, 2023
337a854
Removed unused report assignments
aristizabal95 Oct 20, 2023
a4751a2
Update instructions for the manual steps
aristizabal95 Oct 20, 2023
eb90f88
Change name from reviewed to finalized
aristizabal95 Oct 24, 2023
36588f9
Merge branch 'separate-stages' of https://github.com/aristizabal95/Fe…
aristizabal95 Oct 24, 2023
c6115b6
Merge branch 'fets_2.0' of https://github.com/FeTS-AI/Front-End into …
aristizabal95 Oct 24, 2023
529667f
Merge branch 'separate-stages' of https://github.com/aristizabal95/Fe…
aristizabal95 Oct 24, 2023
3772b88
Fix EOL error for string literal
aristizabal95 Oct 25, 2023
931efdd
Merge branch 'separate-stages' of https://github.com/aristizabal95/Fe…
aristizabal95 Oct 25, 2023
d61f979
syntax fix
sarthakpati Oct 30, 2023
c43975b
Implement brain mask correction rollback
aristizabal95 Nov 2, 2023
1ac185d
Update instructions to use finalized folder
aristizabal95 Nov 3, 2023
e254fab
Pass hash of index for anonimization
aristizabal95 Nov 7, 2023
ca46628
Remove trash during execution
aristizabal95 Nov 7, 2023
a119915
Merge branch 'separate-stages' of https://github.com/aristizabal95/Fe…
aristizabal95 Nov 15, 2023
c1cdc89
Pass stages to medperf through parameters
aristizabal95 Nov 15, 2023
e837c7e
Revert "Pass stages to medperf through parameters"
aristizabal95 Nov 15, 2023
e3eb58b
Pass report stages to medperf through parameters
aristizabal95 Nov 15, 2023
cf6c217
Implement unhandled exception report
aristizabal95 Nov 16, 2023
8bdff96
Fix unhandled exceptions being handled
aristizabal95 Nov 27, 2023
a070b9d
Check for segmentation hash
aristizabal95 Nov 30, 2023
654656e
Fix unhandled error report
aristizabal95 Nov 30, 2023
0531d07
Fix statistics showing non-anonymized data
aristizabal95 Dec 7, 2023
1b5d8b9
Fix extract failing to hide already existing files
aristizabal95 Dec 7, 2023
24165ea
Fix rollback not being handled correctly
aristizabal95 Dec 7, 2023
81534eb
Fix stage not working when no stage is identified
aristizabal95 Dec 7, 2023
976615a
Fix comparison only testing hash if file exists
aristizabal95 Dec 7, 2023
9f1bd9d
Handle review edge cases
aristizabal95 Dec 11, 2023
3e9ffb0
Merge branch 'separate-stages' of https://github.com/aristizabal95/Fe…
aristizabal95 Dec 11, 2023
7a6366b
Import from extract for nnUNet
aristizabal95 Dec 11, 2023
d79d5e3
Remove report dependency. Handle empty stats
aristizabal95 Dec 11, 2023
d85b430
Merge branch 'separate-stages' of https://github.com/aristizabal95/Fe…
aristizabal95 Dec 11, 2023
08a9032
Sync generate_report with parent
aristizabal95 Dec 11, 2023
f47a8a5
Remove stages file
aristizabal95 Dec 11, 2023
bca838b
Merge branch 'separate-stages' of https://github.com/aristizabal95/Fe…
aristizabal95 Dec 11, 2023
884a035
fix some permission issues inside the container
hasan7n Dec 12, 2023
644aaf6
Handle alternative folder structures
aristizabal95 Dec 13, 2023
401319a
Merge branch 'fix-container-perms' of https://github.com/hasan7n/Fron…
aristizabal95 Dec 13, 2023
87fa69a
Support semi-prepared input data
aristizabal95 Dec 14, 2023
72e9126
Handle edge cases for semi-prepared data
aristizabal95 Dec 14, 2023
5f53fd9
Merge branch 'separate-stages' of https://github.com/aristizabal95/Fe…
aristizabal95 Dec 14, 2023
c97597d
Pass models through tarball. Fix skip issues
aristizabal95 Dec 18, 2023
c6f54af
Merge pull request #3 from aristizabal95/nnunet
aristizabal95 Dec 18, 2023
c8a0f45
Merge branch 'fets_2.0' of https://github.com/FeTS-AI/Front-End into …
aristizabal95 Dec 18, 2023
a453733
Remove parameter for testing models
aristizabal95 Dec 18, 2023
3294eb9
Add logic for invalidating subjects
aristizabal95 Dec 18, 2023
d207eee
Fix recursive structure returning wrong path
aristizabal95 Dec 19, 2023
4ec51e9
Fix report not being updated after each stage exec
aristizabal95 Dec 19, 2023
7eee09f
Update mlcube name
aristizabal95 Dec 19, 2023
a28348f
Fix permission issues
aristizabal95 Dec 20, 2023
dad972a
fix the permissions thing
hasan7n Dec 21, 2023
63d6220
remove reportfile from sanity check input
hasan7n Dec 21, 2023
edb3261
Don't fail silently for extract stage
aristizabal95 Dec 21, 2023
0e0090e
Merge branch 'separate-stages' of https://github.com/aristizabal95/Fe…
aristizabal95 Dec 21, 2023
238b297
Revert submodule
aristizabal95 Dec 22, 2023
82b3bde
Merge pull request #74 from aristizabal95/separate-stages
sarthakpati Dec 23, 2023
16293bd
Fix issue with hardcoded input paths
aristizabal95 Jan 4, 2024
e34bd1e
Fix datatype conversion on csv read
aristizabal95 Jan 4, 2024
9f9a7b7
Fix gt not found error. Create mlcube constants
aristizabal95 Jan 8, 2024
1114439
update is_done functions
aristizabal95 Jan 8, 2024
e4e0d21
Remove resolved TODO
aristizabal95 Jan 8, 2024
127d7bd
Fix csv stage using wrong status code
aristizabal95 Jan 8, 2024
35b97ea
gpu support
hasan7n Jan 10, 2024
fe05957
Merge pull request #77 from aristizabal95/separate-stages
sarthakpati Jan 10, 2024
64818a4
add cuda visible devices env var
hasan7n Jan 11, 2024
e64bdd9
Generate dataset statistics instead of DICOM ones
aristizabal95 Jan 11, 2024
91358e7
added a check for nifti files
sarthakpati Jan 12, 2024
47218ae
Merge branch 'fets_2.0' of https://github.com/FeTS-AI/Front-End into …
aristizabal95 Jan 12, 2024
ebb7edb
Fix non-preprocessed NIfTIs not being detected
aristizabal95 Jan 16, 2024
cb90aab
Merge pull request #78 from aristizabal95/separate-stages
sarthakpati Jan 16, 2024
0bc3aa1
Update Dockerfile
sarthakpati Jan 16, 2024
51d4c25
Write documentation for RANO
aristizabal95 Jan 26, 2024
405b89d
Remove unused image
aristizabal95 Jan 26, 2024
c58b76a
Merge pull request #80 from aristizabal95/rano_docs
sarthakpati Jan 27, 2024
69b1dd6
Merge branch 'master' of https://github.com/FeTS-AI/Front-End into fe…
sarthakpati Feb 15, 2024
dd1dab9
end of file updated
sarthakpati Feb 15, 2024
3df09a5
Merge pull request #82 from FeTS-AI/fets_2.0_master_sync
sarthakpati Feb 15, 2024
d11351d
Update Dockerfile
sarthakpati Feb 16, 2024
6f374ec
using an environment variable and falling back to temp dir
sarthakpati Feb 28, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -58,3 +58,9 @@ vsts*
superbuild
build
debug.log
data/dicoms_from_tcia/*
venv/*
src/applications/FeTS_Tool_Helper.egg-info/*
src/applications/__pycache__/*
data/*.zip
src/applications/data_prep_models/*
174 changes: 87 additions & 87 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -11,9 +11,9 @@ SET( ${PROJECT_NAME}_Variant "Full" ) # the particular variant of CaPTk (Full/Ne
# So small changes here to formatting or naming convention *may potentially break the linux packager*!
# STRING(TIMESTAMP TODAY "%Y%m%d")

SET( PROJECT_VERSION_MAJOR 1 )
SET( PROJECT_VERSION_MAJOR 2 )
SET( PROJECT_VERSION_MINOR 0 )
SET( PROJECT_VERSION_PATCH 3 )
SET( PROJECT_VERSION_PATCH 0 )
SET( PROJECT_VERSION_TWEAK )

# check for the string "nonRelease" in the PROJECT_VERSION_PATCH variable
Expand Down Expand Up @@ -157,12 +157,12 @@ IF(${PROJECT_NAME}_Variant MATCHES "Full" )
ELSE()
SET( PROJECT_NAME_EXTENDED "Federated Tumor Segmentation (${PROJECT_NAME}_${${PROJECT_NAME}_Variant})" )
ENDIF()
SET( PROJECT_VENDOR "CBICA - UPenn" )
SET( PROJECT_VENDOR "The FeTS-AI Group" )
SET( LICENSE_FILE "${PROJECT_SOURCE_DIR}/LICENSE" )
SET( README_FILE "${PROJECT_SOURCE_DIR}/README.txt" )
SET( PROJECT_DOMAIN "https://www.med.upenn.edu/cbica/captk/" )
SET( PROJECT_CONTACT "[email protected]" )
SET( COPYRIGHT "Copyright (c) 2019 CBICA. All rights reserved.")
SET( PROJECT_DOMAIN "https://www.fets.ai" )
SET( PROJECT_CONTACT "admin@fets" )
SET( COPYRIGHT "Copyright (c) 2023 FeTS-AI. All rights reserved.")
SET( IDENTIFIER "")
ADD_DEFINITIONS(-DPROJECT_NAME="${PROJECT_NAME}" )
ADD_DEFINITIONS(-DPROJECT_VERSION="${PROJECT_VERSION}" )
Expand Down Expand Up @@ -544,95 +544,95 @@ IF( NOT BUILD_DOCUMENTATION_ONLY )
${LIBNAME_Applications}
)

# update submodule
IF( NOT EXISTS "${PROJECT_SOURCE_DIR}/OpenFederatedLearning/setup.py" )
EXECUTE_PROCESS(COMMAND git submodule update --init --recursive
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
RESULT_VARIABLE git_result
OUTPUT_VARIABLE git_ver)
ENDIF()
# # update submodule
# IF( NOT EXISTS "${PROJECT_SOURCE_DIR}/OpenFederatedLearning/setup.py" )
# EXECUTE_PROCESS(COMMAND git submodule update --init --recursive
# WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
# RESULT_VARIABLE git_result
# OUTPUT_VARIABLE git_ver)
# ENDIF()

# update submodule
IF( NOT EXISTS "${PROJECT_SOURCE_DIR}/Models_Pretrained/README.md" )
EXECUTE_PROCESS(COMMAND git submodule update --init --recursive
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
RESULT_VARIABLE git_result
OUTPUT_VARIABLE git_ver)
ENDIF()
# # update submodule
# IF( NOT EXISTS "${PROJECT_SOURCE_DIR}/Models_Pretrained/README.md" )
# EXECUTE_PROCESS(COMMAND git submodule update --init --recursive
# WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
# RESULT_VARIABLE git_result
# OUTPUT_VARIABLE git_ver)
# ENDIF()

# get lfs to pull
IF( EXISTS "${PROJECT_SOURCE_DIR}/BrainMaGe" )
EXECUTE_PROCESS(COMMAND git lfs pull
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/BrainMaGe
RESULT_VARIABLE git_result
OUTPUT_VARIABLE git_ver)
ENDIF()
# # get lfs to pull
# IF( EXISTS "${PROJECT_SOURCE_DIR}/BrainMaGe" )
# EXECUTE_PROCESS(COMMAND git lfs pull
# WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/BrainMaGe
# RESULT_VARIABLE git_result
# OUTPUT_VARIABLE git_ver)
# ENDIF()

# copy plans from algorithms
IF( EXISTS "${PROJECT_SOURCE_DIR}/OpenFederatedLearning/submodules/fets_ai/Algorithms/fets/bin/federations/plans/pt_3dresunet_brainmagebrats.yaml" )
FILE( GLOB FETS_AI_PLANS
"${PROJECT_SOURCE_DIR}/OpenFederatedLearning/submodules/fets_ai/Algorithms/fets/bin/federations/plans/*.yaml"
)
FOREACH(fetsai_plan ${FETS_AI_PLANS})
CONFIGURE_FILE("${fetsai_plan}" "${PROJECT_SOURCE_DIR}/OpenFederatedLearning/bin/federations/plans/" COPYONLY)
ENDFOREACH()
ENDIF()

# copy weights from models
SET( DOWNLOAD_LINK "ftp://www.nitrc.org/home/groups/captk/downloads/models/torch/pt_3dresunet_ss_brainmagebrats_best.pt" )
SET( FILE_TO_EXTRACT "${PROJECT_SOURCE_DIR}/OpenFederatedLearning/bin/federations/weights/pt_3dresunet_ss_brainmagebrats_best.pt")
# IF( NOT EXISTS "${FILE_TO_EXTRACT}" )

# # download exe from url
# MESSAGE( STATUS "Downloading weights for skull stripping" )
# FILE(DOWNLOAD "${DOWNLOAD_LINK}" "${FILE_TO_EXTRACT}" TIMEOUT 1000000 STATUS STATUS_CODE SHOW_PROGRESS)
# IF(NOT STATUS_CODE EQUAL 0)
# MESSAGE(FATAL_ERROR "Failed to download skull-stripping weights. Status=${STATUS_CODE}")
# ENDIF()
# ENDIF()

# copy network information
## todo: change to a direct installation so that git doesn't get confused that submodule has changed
CONFIGURE_FILE("${PROJECT_SOURCE_DIR}/data/fets/network.yaml" "${PROJECT_SOURCE_DIR}/OpenFederatedLearning/bin/federations/plans/defaults/network.yaml")
CONFIGURE_FILE("${PROJECT_SOURCE_DIR}/data/fets/cert_chain.crt" "${PROJECT_SOURCE_DIR}/OpenFederatedLearning/bin/federations/pki/cert_chain.crt")
#CONFIGURE_FILE("${PROJECT_SOURCE_DIR}/data/fets/pt_3dresunet_brainmagebrats.yaml" "${PROJECT_SOURCE_DIR}/OpenFederatedLearning/bin/federations/plans/pt_3dresunet_brainmagebrats.yaml" COPYONLY)
CONFIGURE_FILE("${PROJECT_SOURCE_DIR}/data/fets/deepscan_inference.yaml" "${PROJECT_SOURCE_DIR}/OpenFederatedLearning/bin/federations/plans/deepscan_inference.yaml" COPYONLY)
CONFIGURE_FILE("${PROJECT_SOURCE_DIR}/data/fets/nnunet_inference.yaml" "${PROJECT_SOURCE_DIR}/OpenFederatedLearning/bin/federations/plans/nnunet_inference.yaml" COPYONLY)
# # copy plans from algorithms
# IF( EXISTS "${PROJECT_SOURCE_DIR}/OpenFederatedLearning/submodules/fets_ai/Algorithms/fets/bin/federations/plans/pt_3dresunet_brainmagebrats.yaml" )
# FILE( GLOB FETS_AI_PLANS
# "${PROJECT_SOURCE_DIR}/OpenFederatedLearning/submodules/fets_ai/Algorithms/fets/bin/federations/plans/*.yaml"
# )
# FOREACH(fetsai_plan ${FETS_AI_PLANS})
# CONFIGURE_FILE("${fetsai_plan}" "${PROJECT_SOURCE_DIR}/OpenFederatedLearning/bin/federations/plans/" COPYONLY)
# ENDFOREACH()
# ENDIF()

# find stand-alone CMD applications
FILE( GLOB DeepScan_Weights
"${PROJECT_SOURCE_DIR}/data/fets/*.tar"
)
file(MAKE_DIRECTORY "${PROJECT_SOURCE_DIR}/OpenFederatedLearning/bin/federations/weights/deepscan/")
FOREACH(deepScan_weight ${DeepScan_Weights})
CONFIGURE_FILE("${deepScan_weight}" "${PROJECT_SOURCE_DIR}/OpenFederatedLearning/bin/federations/weights/deepscan/" COPYONLY)
ENDFOREACH()
# # copy weights from models
# SET( DOWNLOAD_LINK "ftp://www.nitrc.org/home/groups/captk/downloads/models/torch/pt_3dresunet_ss_brainmagebrats_best.pt" )
# SET( FILE_TO_EXTRACT "${PROJECT_SOURCE_DIR}/OpenFederatedLearning/bin/federations/weights/pt_3dresunet_ss_brainmagebrats_best.pt")
# IF( NOT EXISTS "${FILE_TO_EXTRACT}" )

# # download exe from url
# MESSAGE( STATUS "Downloading weights for skull stripping" )
# FILE(DOWNLOAD "${DOWNLOAD_LINK}" "${FILE_TO_EXTRACT}" TIMEOUT 1000000 STATUS STATUS_CODE SHOW_PROGRESS)
# IF(NOT STATUS_CODE EQUAL 0)
# MESSAGE(FATAL_ERROR "Failed to download skull-stripping weights. Status=${STATUS_CODE}")
# ENDIF()
# ENDIF()

INSTALL(
DIRECTORY "${PROJECT_SOURCE_DIR}/OpenFederatedLearning"
DESTINATION bin
PATTERN ".git" EXCLUDE
PATTERN "venv" EXCLUDE
)
# # copy network information
# ## todo: change to a direct installation so that git doesn't get confused that submodule has changed
# CONFIGURE_FILE("${PROJECT_SOURCE_DIR}/data/fets/network.yaml" "${PROJECT_SOURCE_DIR}/OpenFederatedLearning/bin/federations/plans/defaults/network.yaml")
# CONFIGURE_FILE("${PROJECT_SOURCE_DIR}/data/fets/cert_chain.crt" "${PROJECT_SOURCE_DIR}/OpenFederatedLearning/bin/federations/pki/cert_chain.crt")
# #CONFIGURE_FILE("${PROJECT_SOURCE_DIR}/data/fets/pt_3dresunet_brainmagebrats.yaml" "${PROJECT_SOURCE_DIR}/OpenFederatedLearning/bin/federations/plans/pt_3dresunet_brainmagebrats.yaml" COPYONLY)
# CONFIGURE_FILE("${PROJECT_SOURCE_DIR}/data/fets/deepscan_inference.yaml" "${PROJECT_SOURCE_DIR}/OpenFederatedLearning/bin/federations/plans/deepscan_inference.yaml" COPYONLY)
# CONFIGURE_FILE("${PROJECT_SOURCE_DIR}/data/fets/nnunet_inference.yaml" "${PROJECT_SOURCE_DIR}/OpenFederatedLearning/bin/federations/plans/nnunet_inference.yaml" COPYONLY)

# # find stand-alone CMD applications
# FILE( GLOB DeepScan_Weights
# "${PROJECT_SOURCE_DIR}/data/fets/*.tar"
# )
# file(MAKE_DIRECTORY "${PROJECT_SOURCE_DIR}/OpenFederatedLearning/bin/federations/weights/deepscan/")
# FOREACH(deepScan_weight ${DeepScan_Weights})
# CONFIGURE_FILE("${deepScan_weight}" "${PROJECT_SOURCE_DIR}/OpenFederatedLearning/bin/federations/weights/deepscan/" COPYONLY)
# ENDFOREACH()

# INSTALL(
# DIRECTORY "${PROJECT_SOURCE_DIR}/OpenFederatedLearning"
# DESTINATION bin
# PATTERN ".git" EXCLUDE
# PATTERN "venv" EXCLUDE
# )

INSTALL(
DIRECTORY "${PROJECT_SOURCE_DIR}/LabelFusion"
DESTINATION bin
PATTERN ".git" EXCLUDE
PATTERN "venv" EXCLUDE
)
# INSTALL(
# DIRECTORY "${PROJECT_SOURCE_DIR}/LabelFusion"
# DESTINATION bin
# PATTERN ".git" EXCLUDE
# PATTERN "venv" EXCLUDE
# )

INSTALL(
DIRECTORY "${PROJECT_SOURCE_DIR}/BrainMaGe"
DESTINATION bin
PATTERN ".git" EXCLUDE
PATTERN "venv" EXCLUDE
)
# INSTALL(
# DIRECTORY "${PROJECT_SOURCE_DIR}/BrainMaGe"
# DESTINATION bin
# PATTERN ".git" EXCLUDE
# PATTERN "venv" EXCLUDE
# )


FILE( GLOB_RECURSE ALL_PY_FILES "${PROJECT_SOURCE_DIR}/src/applications/*.py" )
FILE( GLOB ALL_PY_FILES "${PROJECT_SOURCE_DIR}/src/applications/*.py" )
FOREACH( pyFile ${ALL_PY_FILES} )
INSTALL( FILES "${pyFile}" DESTINATION bin )
INSTALL( FILES "${pyFile}" DESTINATION bin PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE)
ENDFOREACH()

# find stand-alone CMD applications
Expand Down Expand Up @@ -1046,9 +1046,9 @@ IF( NOT BUILD_DOCUMENTATION_ONLY )
SET(CPACK_NSIS_ENABLE_UNINSTALL_BEFORE_INSTALL ON)
SET(CPACK_NSIS_MUI_ICON "${DATA_DIR}/icons/application/windows/FeTS.ico")
SET(CPACK_NSIS_MUI_FINISHPAGE_RUN "${EXE_NAME}.exe")
SET(CPACK_NSIS_HELP_LINK "https:\\\\\\\\www.med.upenn.edu\\\\cbica\\\\captk\\\\")
SET(CPACK_NSIS_HELP_LINK "https:\\\\\\\\www.fets.ai\\\\")
SET(CPACK_NSIS_CONTACT "${PROJECT_CONTACT}")
SET(CPACK_NSIS_URL_INFO_ABOUT "https:\\\\\\\\www.med.upenn.edu\\\\cbica\\\\captk\\\\")
SET(CPACK_NSIS_URL_INFO_ABOUT "https:\\\\\\\\www.fets.ai\\\\")
#SET(CPACK_NSIS_MODIFY_PATH "ON") # desktop shortcut doesn't work, for some reason
# create extra shortcuts and respective uninstall targets
SET(CPACK_NSIS_CREATE_ICONS_EXTRA "CreateShortCut '\$SMPROGRAMS\\\\$STARTMENU_FOLDER\\\\${EXE_NAME}.lnk' '\$INSTDIR\\\\bin\\\\${EXE_NAME}.exe'")
Expand Down
126 changes: 77 additions & 49 deletions Dockerfile
Original file line number Diff line number Diff line change
@@ -1,65 +1,54 @@
FROM ghcr.io/fets-ai/fetstool_docker_dependencies:0.0.2.gpu
FROM ghcr.io/fets-ai/fetstool_docker_dependencies AS fets_base

LABEL authors="FeTS_Admin <[email protected]>"

RUN apt-get update && apt-get update --fix-missing && apt-get install -y libnss3 libnspr4 libxcursor1 libxcursor-dev libasound2 libdbus-1-dev libglfw3-dev libgles2-mesa-dev ffmpeg libsm6 libxext6 python3.8 python3.8-venv python3.8-dev python3-setuptools

# older python
RUN apt-get update -y && apt install -y --reinstall software-properties-common && add-apt-repository ppa:deadsnakes/ppa && apt update -y && apt install -y python3.7 python3.7-venv python3.7-dev python3-setuptools

ENV PATH=/workspace/CaPTk/bin/qt/5.12.1/bin:/workspace/CaPTk/bin/qt/5.12.1/libexec:$PATH
ENV CMAKE_PREFIX_PATH=/workspace/CaPTk/bin/ITK-build:/workspace/CaPTk/bin/DCMTK-build:/workspace/CaPTk/bin/qt/5.12.1/lib/cmake/Qt5:$CMAKE_PREFIX_PATH
ENV SKLEARN_ALLOW_DEPRECATED_SKLEARN_PACKAGE_INSTALL=True
ENV PATH=/CaPTk/bin/qt/5.12.1/bin:/CaPTk/bin/qt/5.12.1/libexec:$PATH
ENV CMAKE_PREFIX_PATH=/CaPTk/bin/ITK-build:/CaPTk/bin/DCMTK-build:/CaPTk/bin/qt/5.12.1/lib/cmake/Qt5:$CMAKE_PREFIX_PATH

RUN pwd && ls -l

WORKDIR /Front-End

COPY . .
# Download model checkpoints to torch checkpoint location
# https://pytorch.org/docs/stable/hub.html#where-are-my-downloaded-models-saved
ENV TORCH_HOME="/.pytorch_cache"
RUN mkdir -p $TORCH_HOME/hub/checkpoints && \
wget -O $TORCH_HOME/hub/checkpoints/dpn98-722954780.pth http://data.lip6.fr/cadene/pretrainedmodels/dpn98-722954780.pth --no-check-certificate && \
wget -O $TORCH_HOME/hub/checkpoints/resnet50-19c8e357.pth https://download.pytorch.org/models/resnet50-19c8e357.pth

COPY src src

COPY CMakeLists.txt README.txt LICENSE .

COPY cmake_modules cmake_modules

RUN pwd && ls -l && mv ./data/Algorithms_for_fetsTool1.0.zip OpenFederatedLearning/submodules/fets_ai/ && cd OpenFederatedLearning/submodules/fets_ai/ && unzip -qq Algorithms_for_fetsTool1.0.zip && rm -rf Algorithms_for_fetsTool1.0.zip
COPY data data

RUN pwd && ls -l && mv ./data/GANDLF_for_fetsTool1.0.zip OpenFederatedLearning/submodules/fets_ai/Algorithms && cd OpenFederatedLearning/submodules/fets_ai/Algorithms && unzip -qq GANDLF_for_fetsTool1.0.zip && rm -rf GANDLF_for_fetsTool1.0.zip
COPY docs_sources docs_sources

RUN pwd && ls -l

## C++ build
RUN mkdir bin && cd bin && cmake -DCMAKE_INSTALL_PREFIX="./install/appdir/usr" -DITK_DIR="/workspace/CaPTk/bin/ITK-build" -DDCMTK_DIR="/workspace/CaPTk/bin/DCMTK-build" -DBUILD_TESTING=OFF .. && make -j$(nproc) && make install/strip

# ## Python package installation -- this is for the new docker image, which is much simpler
# RUN cd bin/install/appdir/usr/bin/ && python3.8 -m venv ./venv && ./venv/bin/pip install --upgrade pip wheel && ./venv/bin/pip install torch==1.13.1+cpu torchvision==0.14.1+cpu torchaudio==0.13.1 --extra-index-url https://download.pytorch.org/whl/cpu && ./venv/bin/pip install -e . && ./venv/bin/pip install setuptools-rust Cython scikit-build scikit-learn openvino-dev==2023.0.1 && ./venv/bin/pip install -e .

# set up environment and install correct version of pytorch
RUN echo "Setting up virtual environment for OpenFederatedLearning with base dependencies" && \
cd bin/install/appdir/usr/bin/OpenFederatedLearning && \
rm -rf ./venv && python3.7 -m venv ./venv && ./venv/bin/pip install Cython && \
./venv/bin/pip install --upgrade pip setuptools wheel setuptools-rust && \
./venv/bin/pip install torch==1.7.1+cu110 torchvision==0.8.2+cu110 torchaudio==0.7.2 -f https://download.pytorch.org/whl/torch_stable.html && \
./venv/bin/pip install wheel && \
./venv/bin/pip install SimpleITK==1.2.4 && \
./venv/bin/pip install protobuf==3.17.3 grpcio==1.30.0 && \
./venv/bin/pip install opencv-python==4.2.0.34 && \
./venv/bin/pip install scikit-build scikit-learn && \
make install_openfl && \
make install_openfl_pytorch

RUN echo "Setting up virtual environment for OpenFederatedLearning with second-level dependencies" && \
cd bin/install/appdir/usr/bin/OpenFederatedLearning && \
./venv/bin/pip install ../BrainMaGe && \
./venv/bin/pip install ./submodules/fets_ai/Algorithms && \
./venv/bin/pip install -e ./submodules/fets_ai/Algorithms/GANDLF

RUN echo "Installing separate environment for LabelFusion" && \
cd bin/install/appdir/usr/bin/LabelFusion && \
rm -rf venv && python3.8 -m venv ./venv && \
./venv/bin/pip install --upgrade pip setuptools wheel setuptools-rust && \
./venv/bin/pip install -e .

RUN echo "Downloading model weights" && \
cd bin/install/appdir/usr/data && \
wget https://upenn.box.com/shared/static/f7zt19d08c545qt3tcaeg7b37z6qafum.zip -O nnunet.zip && \
unzip -qq nnunet.zip && rm -rf nnunet.zip && \
wget https://upenn.box.com/shared/static/hhvn8nb9xtz6nxcilmdl8kbx9n1afkdu.zip -O ./fets_consensus_models.zip && \
unzip -qq fets_consensus_models.zip && rm -rf fets_consensus_models.zip

RUN mkdir bin && cd bin && cmake -DCMAKE_INSTALL_PREFIX="./install/appdir/usr" -DITK_DIR="/CaPTk/bin/ITK-build" -DDCMTK_DIR="/CaPTk/bin/DCMTK-build" -DBUILD_TESTING=OFF .. && make -j$(nproc) && make install/strip

## Python package installation
RUN apt-get install software-properties-common curl -y && \
add-apt-repository ppa:deadsnakes/ppa -y && apt-get update && \
apt-get install python3.8 python3.8-distutils -y && \
apt-get remove --purge python3.6 -y && \
apt autoremove -y && \
apt-get install python3.8-distutils -y && \
rm -fr /usr/bin/python /usr/bin/python3 /usr/bin/pip /usr/bin/pip3 && \
ln -s /usr/bin/python3.8 /usr/bin/python && ln -s /usr/bin/python3.8 /usr/bin/python3 && \
ln -s /usr/bin/pip3.8 /usr/bin/pip && ln -s /usr/bin/pip3.8 /usr/bin/pip3

RUN curl -fSsL -O https://bootstrap.pypa.io/get-pip.py -o get-pip.py && \
python3.8 get-pip.py && rm get-pip.py

RUN cd bin/install/appdir/usr/bin/ && pip install --upgrade pip wheel && pip install torch==1.13.1+cpu torchvision==0.14.1+cpu torchaudio==0.13.1 --extra-index-url https://download.pytorch.org/whl/cpu && pip install -e . && pip install setuptools-rust Cython scikit-build scikit-learn openvino==2023.0.1 openvino-dev==2023.0.1 && pip install -e .

### put together a data example that is already aligned and ready to invoke the brain extraction and tumor segmentation

# set up the docker for GUI
Expand All @@ -71,4 +60,43 @@ ENV QT_GRAPHICSSYSTEM="native"
RUN echo "Env paths\n" && echo $PATH && echo $LD_LIBRARY_PATH

# define entry point
ENTRYPOINT ["/Front-End/bin/install/appdir/usr/bin/FeTS_CLI_Segment"]
ENTRYPOINT ["python", "/Front-End/bin/install/appdir/usr/bin/PrepareDataset.py"]

FROM fets_base AS data_prep

RUN find /Front-End/bin/install/appdir/usr/bin -type f \( -perm -u=x -o -type l \) -exec cp -P {} /usr/bin \;

WORKDIR /

COPY ./mlcubes/data_preparation/project/requirements.txt /project/requirements.txt

RUN pip install --upgrade pip

RUN pip install -r /project/requirements.txt

ENV LANG C.UTF-8

RUN mkdir /project/stages

RUN cp /Front-End/bin/install/appdir/usr/bin/*.py /project/stages/

RUN cp -R /Front-End/bin/install/appdir/usr/bin/data_prep_models /project/stages/data_prep_models

# Hotfix: install more recent version of GaNDLF for metrics generation
RUN pip install git+https://github.com/mlcommons/GaNDLF@616b37bafad8f89d5c816a88f44fa30470601311

# setup a separate env for nnunet
RUN python -m venv /nnunet_env && /nnunet_env/bin/pip install --upgrade pip

RUN /nnunet_env/bin/pip install torch==1.12.1+cu102 torchvision==0.13.1+cu102 torchaudio==0.12.1 --extra-index-url https://download.pytorch.org/whl/cu102

RUN /nnunet_env/bin/pip install git+https://github.com/MIC-DKFZ/nnUNet.git@nnunetv1

ENV nnUNet_raw_data_base="/tmp/nnUNet_raw_data_base"
ENV nnUNet_preprocessed="/tmp/nnUNet_preprocessed"
# see https://docs.docker.com/config/containers/resource_constraints/#gpu for detailed explanation
ENV CUDA_VISIBLE_DEVICES="0"

COPY ./mlcubes/data_preparation/project /project

ENTRYPOINT ["python", "/project/mlcube.py"]
Loading
Loading