Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
277 commits
Select commit Hold shift + click to select a range
75b5772
fixes data type in switching (#1694)
wyli Mar 5, 2021
889c9f9
WSI reader (#1548)
bhashemian Mar 5, 2021
232e8a5
[DLMED] add WSIReader to LoadImage (#1695)
Nic-Ma Mar 5, 2021
66811fe
Raise import error for openslide and cuimage (#1699)
bhashemian Mar 7, 2021
b25b3d3
1604 Revise docstring cam (#1705)
wyli Mar 8, 2021
ce6628a
1704 Add Affined transform (#1709)
Nic-Ma Mar 8, 2021
133f42a
1693 update for pytorch 1.8 (#1700)
wyli Mar 8, 2021
634b32d
[DLMED] update datasets (#1712)
Nic-Ma Mar 8, 2021
08af0cc
with allow_missing_keys_mode (#1714)
rijobro Mar 8, 2021
f4560a1
update links (#1717)
wyli Mar 8, 2021
cbddce9
1500-update grid dataset to support patch level transforms (#1679)
wyli Mar 8, 2021
0751ca0
Update DataLoader arg type of workflow (#1719)
Nic-Ma Mar 9, 2021
78ec66f
1651 implement RegUNet (#1658)
kate-sann5100 Mar 9, 2021
ea1d04b
remove print msg (#1730)
wyli Mar 9, 2021
a462714
Fix MONAI docker dependency (#1731)
bhashemian Mar 9, 2021
d4c201e
[1710] Gradcam eval (#1734)
rijobro Mar 10, 2021
c362beb
fixes unit test (#1735)
wyli Mar 10, 2021
0b1fc4e
basic inverse API (#1720)
rijobro Mar 10, 2021
c3e5a69
improve decollate test for set_determinism (#1736)
rijobro Mar 10, 2021
6d3bf2f
1236 integration test memory (#1738)
wyli Mar 11, 2021
401ea29
1541 update coverage report config (#1746)
wyli Mar 11, 2021
ce8f92a
1665 adjust localnet (#1752)
kate-sann5100 Mar 12, 2021
abf8a99
1651 globalnet (#1729)
kate-sann5100 Mar 12, 2021
e001d2a
[DLMED] update WSIReader for typos and docs (#1758)
Nic-Ma Mar 12, 2021
21a3c16
1742 Add DistributedWeightedRandomSampler (#1745)
Nic-Ma Mar 12, 2021
f56058d
Croppad inverse transform (#1737)
rijobro Mar 13, 2021
e17e158
TEST: Fix failing pytype check for predict_segmentation (#1762)
adamaji Mar 13, 2021
42e963f
BUG: MedNISTDataset returns differently sized datasets for different …
adamaji Mar 14, 2021
4670fd2
Add __len__ for DistributedWeightedRandomSampler (#1766)
Nic-Ma Mar 15, 2021
1badb41
reduce randomly cropped amount to appease CI (#1769)
rijobro Mar 15, 2021
e5726d1
1756 update ignite version to 0.4.4 (#1759)
Nic-Ma Mar 15, 2021
3ea9ed4
update contrib guide to include some recent changes in dev tools (#1763)
wyli Mar 16, 2021
13a2c59
1768 Update docs based on feedback (#1774)
Nic-Ma Mar 16, 2021
3406398
lossless inverse (#1767)
rijobro Mar 16, 2021
43d9582
1776 Add support for new arg `greater_or_equal` from ignite 0.4.4 (#1…
Nic-Ma Mar 16, 2021
050efb7
1757 Enhance CheckpointLoader to restore max_epochs (#1775)
Nic-Ma Mar 16, 2021
bcbd685
Update WSIReader with cuCIM (#1773)
bhashemian Mar 16, 2021
5588528
Inverse Spacingd (#1779)
rijobro Mar 16, 2021
b868087
1755 improve focal loss (#1765)
yiheng-wang-nv Mar 17, 2021
46154ec
Inverse Resized (#1780)
rijobro Mar 17, 2021
cf3bd1a
Inverse Zoomd and RandZoomd (#1778)
rijobro Mar 17, 2021
592806a
Inverse Rotated (#1782)
rijobro Mar 17, 2021
7f0e789
Inverse Affined and RandAffined (#1781)
rijobro Mar 17, 2021
053d0c8
Fix type error (#1792)
yiheng-wang-nv Mar 17, 2021
f063a47
Update cucim to remove warning message (#1799)
bhashemian Mar 18, 2021
466a0bf
Implement FROC metric (#1509)
yiheng-wang-nv Mar 18, 2021
86cbf05
[1798] fix RandZoomd collation (#1801)
rijobro Mar 18, 2021
4411758
Remove WSIReader from LoadImage (#1796)
bhashemian Mar 18, 2021
7d25743
1804 add pretrain options (#1805)
yiheng-wang-nv Mar 19, 2021
70388fa
1809 add std shift intensity transform (#1810)
yiheng-wang-nv Mar 19, 2021
3e313d2
PadListDataCollate transform (#1813)
rijobro Mar 19, 2021
fdf26fb
Jupyter Utilities (#1797)
ericspod Mar 19, 2021
a2aeb40
Batch inverse (#1795)
rijobro Mar 20, 2021
b6f213e
1804 add pretrain for densenet senet by using subclass (#1812)
yiheng-wang-nv Mar 22, 2021
5151b15
remove .value from InverseKeys enum (#1817)
rijobro Mar 22, 2021
06e1e99
cron tutorial notebooks (#1783)
rijobro Mar 22, 2021
a8f83e1
refactor CommonKeys (#1825)
rijobro Mar 22, 2021
db2f47d
[1823] allow None for switch endianness (#1824)
rijobro Mar 22, 2021
c4bb4cb
Jupyter followup (#1826)
ericspod Mar 23, 2021
672ba95
1808 Drop post transforms from AUC metric (#1828)
Nic-Ma Mar 23, 2021
83855b9
Test time augmentations (#1794)
rijobro Mar 23, 2021
8ddd09f
fixes tutorial issue 150 (#1830)
wyli Mar 23, 2021
07c6e34
1814 Enhance transform chain error logging (#1829)
Nic-Ma Mar 23, 2021
cf502d6
1815 Add train mode and eval mode in Evaluators (#1831)
Nic-Ma Mar 24, 2021
e8e2f3e
1807 Enhance SmartCacheDataset with shuffle and exception (#1832)
Nic-Ma Mar 24, 2021
f8c3901
fix device bug (#1841)
kate-sann5100 Mar 24, 2021
cd08c00
1837 fixes collating data types (#1839)
wyli Mar 24, 2021
c3f1e02
truncate plot title string (#1843)
wyli Mar 24, 2021
b6d1cea
Conditional Random Field (#1806)
Mar 25, 2021
c5be1ad
1827 Fix CUDA affine issue and thread-safe issue in AffineGrid (#1836)
Nic-Ma Mar 25, 2021
7e7cd94
PatchWSIDataset (#1835)
bhashemian Mar 25, 2021
8c13239
Fully convolutional models based on TorchVision models (#1845)
bhashemian Mar 25, 2021
5e4a0ab
Support multidimensional labels (#1851)
bhashemian Mar 25, 2021
126768f
identity init. for global net (#1849)
wyli Mar 25, 2021
e0feb53
[DLMED] fix SmartCache warning (#1855)
Nic-Ma Mar 26, 2021
149216e
1857 - SpatialCrop supports with tensors (#1858)
wyli Mar 26, 2021
83a6ad8
infer spatial dims from input (#1860)
wyli Mar 26, 2021
b209ab7
1822 Implement Prob NMS (#1842)
yiheng-wang-nv Mar 26, 2021
28e000d
1862 Fix checkpoint read permission (#1863)
Nic-Ma Mar 26, 2021
32e6b12
[1859] fix lr finder (#1865)
rijobro Mar 26, 2021
bb15622
1861 Add MapLabelValue (#1864)
Nic-Ma Mar 27, 2021
c157fb8
Update SmartCachePatchWSIDataset and add unittests (#1853)
bhashemian Mar 27, 2021
61a2a21
adds-bicubic-option (#1850)
wyli Mar 27, 2021
76beeb2
1848 - testing with pytorch 1.8.1 (#1856)
wyli Mar 27, 2021
a1f938a
[DLMED] support single item (#1884)
Nic-Ma Mar 29, 2021
9f6ceeb
Epoch/Iteration interval (#1870)
danieltudosiu Mar 29, 2021
140b7cc
1833 Enhance the list collate function (#1887)
Nic-Ma Mar 29, 2021
f3ccbac
[DLMED] add data_root_dir arg (#1890)
Nic-Ma Mar 29, 2021
f5426c8
1821 add slicing index and negative index for datasets (#1885)
Nic-Ma Mar 29, 2021
f8d9755
Update Pathology Tests (#1892)
bhashemian Mar 30, 2021
f0c9c18
Implement random bias field transform (#1886)
yiheng-wang-nv Mar 30, 2021
a397e5d
Fix for Bilateral Filter Backprop (#1888)
Mar 30, 2021
d7ffb82
enhances warping (#1894)
wyli Mar 30, 2021
43f482c
Remove assert statement from non-test files (#1899)
deepsource-autofix[bot] Mar 30, 2021
1612ec3
Update WSIReader for CuCIM (#1876)
bhashemian Mar 31, 2021
8010e2a
Pathology Masked Inference WSI Dataset (#1869)
bhashemian Mar 31, 2021
ca8481f
remove unused in_channels in LNCC (#1903)
wyli Mar 31, 2021
b1d45ee
1905 Enhance the brats transform (#1906)
Nic-Ma Mar 31, 2021
2a7e1ce
Fix stdshift type error (#1907)
yiheng-wang-nv Mar 31, 2021
972fa5f
Pathology Probability Map Generator (#1893)
bhashemian Mar 31, 2021
1314701
Tumor FROC Evaluation (#1878)
bhashemian Mar 31, 2021
613f25e
Update CuCIM (#1909)
bhashemian Mar 31, 2021
5fec791
Update pathology unittests (#1910)
bhashemian Mar 31, 2021
cd3c21a
Update prob map handler (#1911)
bhashemian Apr 1, 2021
ba127a2
Implement dice_focal loss (#1914)
yiheng-wang-nv Apr 1, 2021
debc561
followup of #1878 (#1913)
wyli Apr 1, 2021
32e540f
1868-fix-potential-inf-in-lncc-loss (#1915)
kate-sann5100 Apr 1, 2021
4bd26f9
1919 - test pt 2103 (#1920)
wyli Apr 2, 2021
d9e68c8
fixes typos (#1924)
wyli Apr 2, 2021
03b7560
1900 Add support to save patch data into NIfTI or PNG files (#1922)
Nic-Ma Apr 3, 2021
e7d3d66
Revert "1919 - test pt 2103 (#1920)" (#1925)
wyli Apr 3, 2021
e871ee3
skip warp tests before torch 18 (#1927)
wyli Apr 3, 2021
e80cc4a
update docstrings (#1931)
wyli Apr 3, 2021
30523c0
update get_package_version (#1930)
wyli Apr 3, 2021
1fd5e0a
1904 Add early stop handler (#1921)
Nic-Ma Apr 3, 2021
481f0ce
1900 Change to save `patch_index` in the meta_dict (#1933)
Nic-Ma Apr 3, 2021
23f98f3
enhance min/exact version check (#1937)
wyli Apr 4, 2021
348cbe8
Enabled partial checkpoint loading (#1936)
danieltudosiu Apr 4, 2021
da3240f
fixes issue of typing with py3.6 (#1942)
wyli Apr 5, 2021
3f2238e
Make ProbNMS a Transform (#1941)
bhashemian Apr 5, 2021
baf1bec
fixes ThreadDataLoader (#1945)
wyli Apr 5, 2021
a6b8f2a
fixes itk dep. version (#1944)
wyli Apr 5, 2021
713490b
Garbage Collector Handler (#1940)
bhashemian Apr 5, 2021
f1db865
1939 Add strict_shape option in CheckpointLoader (#1946)
Nic-Ma Apr 5, 2021
a182da6
1947 Enhance load decathlon datalist API (#1948)
Nic-Ma Apr 5, 2021
fbce3c2
Add progress bar to LesionFROC (#1951)
bhashemian Apr 5, 2021
501026b
pipeline for releasing the docker images (#1953)
wyli Apr 6, 2021
81cfbf0
remove unused RandomizableTransform (#1952)
wyli Apr 6, 2021
5c411d1
1956 - docker image building pipelines (#1957)
wyli Apr 7, 2021
0813ae5
1955 style issue (#1958)
wyli Apr 7, 2021
d6ed956
Update garbage collection assertion (#1959)
bhashemian Apr 7, 2021
7581255
Working ParameterScheduler (#1949)
danieltudosiu Apr 7, 2021
baca6e0
[DLMED] remove warning (#1962)
Nic-Ma Apr 7, 2021
99bca69
1916 Add support for custom events in workflows (#1961)
Nic-Ma Apr 7, 2021
8cbd59a
1965 - register_backward_hook (#1966)
wyli Apr 7, 2021
d56c002
1968 Enhance meta data doc-string in SegmentationSaver (#1969)
Nic-Ma Apr 8, 2021
e7a7422
Adding EfficientNetsB0-B7 support (#1938)
masadcv Apr 9, 2021
e9ac80c
1866 Add TransformInverter handler (#1970)
Nic-Ma Apr 9, 2021
3a7cd46
1889 - changelog for v0.5.0 (#1923)
wyli Apr 9, 2021
d178706
1977 Support different inverse interpolation mode (#1978)
Nic-Ma Apr 9, 2021
d4093c7
Update technical highlights for v0.5 (#1981)
Nic-Ma Apr 9, 2021
5f69a60
1973 - docstring update convs example (#1980)
wyli Apr 10, 2021
a625d38
test runner (#1986)
kate-sann5100 Apr 10, 2021
5eed058
1987 Add support for a list of Tensor in metrics handlers (#1988)
Nic-Ma Apr 10, 2021
f5d5737
add timeout (#1989)
wyli Apr 11, 2021
c3dbb8a
fixes ci error handling (#1990)
wyli Apr 11, 2021
b4d8780
1889 update preview version number (#1991)
wyli Apr 12, 2021
d1f4e6f
fix comprehension error (#1995)
rijobro Apr 12, 2021
b3eb73a
TTA progress bar, use torch for mode, add label meta_data (#1992)
rijobro Apr 12, 2021
d72f61e
include meta when inverting (#1997)
wyli Apr 13, 2021
3383380
Update transform inverter for postfix (#1999)
Nic-Ma Apr 13, 2021
2707407
update (#2000)
wyli Apr 13, 2021
583e35b
Add more test for nearest interpolation in TransformInverter (#2001)
Nic-Ma Apr 13, 2021
2c6d688
2003 - adds a what's new page (#2005)
wyli Apr 14, 2021
2d8595d
1985 Add SaliencyInferer (#2006)
Nic-Ma Apr 14, 2021
5f47407
2007 Enhance the unit tests of MapLabelValue transform (#2008)
Nic-Ma Apr 14, 2021
88806e1
2011 Add warning for resample in SegnmentationSaver (#2013)
Nic-Ma Apr 15, 2021
357e6d4
Plot engine fix (#2015)
ericspod Apr 16, 2021
9f4da6a
allow slicing with SpatialCrop(d) (#1954)
rijobro Apr 16, 2021
abcca9b
raising error tolerance to prevent rare failure (#2025)
Apr 16, 2021
9f409c1
fixes tutorial issue 183 (#2031)
wyli Apr 19, 2021
1ddf4af
2032 add alias for DenseNets (#2037)
Nic-Ma Apr 19, 2021
a7a9430
[DLMED] enhance error message (#2038)
Nic-Ma Apr 19, 2021
170fc91
2032 Add more alias for other networks (#2040)
Nic-Ma Apr 19, 2021
abad841
RandTorchVision (#2048)
bhashemian Apr 20, 2021
fc1546a
[DLMED] add post_func arg (#2049)
Nic-Ma Apr 20, 2021
de677ca
update docstring example (#2055)
wyli Apr 20, 2021
14976b5
fixes tutorial issue 184 (#2053)
wyli Apr 20, 2021
8057ae8
Update cucim to 0.19.0 (#2057)
bhashemian Apr 20, 2021
13bf996
2044 Add check for label data type (#2060)
Nic-Ma Apr 21, 2021
51ecc48
[DLMED] enhance metrics (#2061)
Nic-Ma Apr 21, 2021
ac47032
2045 2058 Add support `device` arg in TransformInverter (#2062)
Nic-Ma Apr 21, 2021
5cbcaf6
fixes tutorial 190 (#2063)
wyli Apr 21, 2021
4a0aae8
fix duplication of key_transforms in RandSpatialCropSamplesd (#2010)
rijobro Apr 21, 2021
898d073
2018 Save inverted meta dict into state.batch (#2065)
Nic-Ma Apr 22, 2021
7379ab8
Add pointers to issues for community contributors (#2071)
thewtex Apr 22, 2021
e0035b1
Start with a welcoming statement in the contributing docs (#2072)
thewtex Apr 22, 2021
fea9307
Remove transpose from the tissue masks (#2074)
bhashemian Apr 23, 2021
f843d66
2051 Add support to K divisible crop in CropForeground (#2064)
Nic-Ma Apr 23, 2021
f45108b
RandTorchVisionD update (#2076)
wyli Apr 23, 2021
36d855c
enhance persistent dataset tempfile (#2086)
wyli Apr 25, 2021
dde1100
update box_start/end for deepgrow (#2088)
rijobro Apr 26, 2021
8f2856d
2092 Enhance NIfTI writer logging (#2093)
Nic-Ma Apr 27, 2021
5eb9198
[DLMED] add flag (#2094)
Nic-Ma Apr 27, 2021
9e1a7d4
2095 fix multi-gpu issue in ClassificationSaver (#2096)
Nic-Ma Apr 27, 2021
feb3a33
Add detach to the tensors in handlers (#2100)
Nic-Ma Apr 27, 2021
1f2247e
Adding error messaging for unsupported tensor shapes (#2089)
Apr 27, 2021
4148833
Enhance smartcache doc-string and unit test (#2105)
Nic-Ma Apr 28, 2021
12f267c
2103 Add deepcopy to PosNegCrop transform (#2104)
Nic-Ma Apr 28, 2021
304d1a8
only pip install cucim if on linux (#2106)
rijobro Apr 28, 2021
8bb08a8
re-enable dev branch tests (#2107)
wyli Apr 28, 2021
35cd9df
2041 - update readme/index page (#2108)
wyli Apr 28, 2021
ca26e51
Rician Noise Transform (#2066)
lyndonboone Apr 29, 2021
299f2c2
[DLMED] improve doc-string of partition_dataset (#2109)
Nic-Ma Apr 29, 2021
06fd8fe
fix SegResNetVAE docstring to match args (#2113)
vanossj Apr 29, 2021
198cd2f
2111 - adds a `map_items` option to compose (#2112)
wyli Apr 30, 2021
a6ca680
adds basic py3.9 tests (#2114)
wyli Apr 30, 2021
d93df0e
create meta data key if necessary (#2119)
rijobro Apr 30, 2021
fd9081b
2118 speed up quick test (#2120)
wyli Apr 30, 2021
2db93d8
efficientnet mypy fix BlockArgs class and unittest (#2126)
masadcv May 1, 2021
45c6cf6
2122 - fixes subprocess transforms (#2128)
wyli May 3, 2021
e6b7787
remove requirements workaround (#2134)
wyli May 4, 2021
7ef0142
Temporarily changing crf test to allow some errors (#2135)
May 4, 2021
3affd03
remove default cache_dir None (#2137)
wyli May 4, 2021
9536821
Fix 2132 - CuPy <> NumPy conversion (#2133)
bhashemian May 4, 2021
41e62e5
Transposed (#2144)
rijobro May 5, 2021
9c62769
Pytype fix (#2153)
rijobro May 6, 2021
e816d18
skip RandAffine if possible (#2151)
rijobro May 6, 2021
c16c629
2146 Enhance PersistentDataset with `shutil.move` (#2147)
Nic-Ma May 7, 2021
2a4c9e5
Revert "Pytype fix (#2153)" (#2157)
wyli May 7, 2021
bf5a7e9
2150 2152 Enhance metrics summary report (#2156)
Nic-Ma May 7, 2021
4259151
fix cachedataset w persistent workers problem by deep copying (#2121)
rijobro May 7, 2021
e977596
Adding Regression Evaluation Metrics (#2084)
masadcv May 8, 2021
68e2d78
2155 Enhance tests of UNet for user's case (#2160)
Nic-Ma May 10, 2021
3bd0245
2145 Extract invert logic from `TransformInverter` handler (#2165)
Nic-Ma May 10, 2021
eca3f19
delete set_visible_devices (#2168)
rijobro May 10, 2021
6af86bc
2169 Support more collate and list of data (#2170)
Nic-Ma May 11, 2021
3045ade
fix typo (#2176)
rijobro May 11, 2021
6b0df49
Add reference for surface distance metric (#2182)
yiheng-wang-nv May 12, 2021
89e3ff3
2177 Add max_roi_size to RandSpatialCrop (#2178)
Nic-Ma May 12, 2021
6c0d8d7
fix set visible devices (#2174)
rijobro May 12, 2021
4ef7d22
More efficient SmartCacheLoader (#2181)
cgrain May 12, 2021
a5cf253
2099 - enhances dataloader/randomizable docstrings (#2188)
wyli May 13, 2021
b94fe25
tested (#2192)
wyli May 13, 2021
e68af74
initial network consistency test (#2171)
rijobro May 14, 2021
29a0373
enhance norm and act layers (#2166)
yiheng-wang-nv May 14, 2021
05e1ec2
update msg (#2197)
wyli May 14, 2021
0e6f945
Added Gibbs transform (#2163)
yanielc May 14, 2021
95726b0
enhance get layers API (#2199)
wyli May 14, 2021
97de238
2180 Add RandScaleCrop transform (#2194)
Nic-Ma May 14, 2021
bbca50d
fixes logo link (#2202)
wyli May 14, 2021
96cb3cb
2097 CoordConv transform (#2162)
marksgraham May 15, 2021
ca0bda1
Add warnings for inf/nan surface distance (#2205)
yiheng-wang-nv May 17, 2021
ef66345
2198 Add CenterScaleCrop transform (#2207)
Nic-Ma May 17, 2021
fed0136
allow sequence for network consistency (#2209)
rijobro May 18, 2021
bb08ea4
2203 Add SaveClassifcation transform (#2204)
Nic-Ma May 18, 2021
e6258c9
2041 - fixing main/releasing branch CI/CD; update contributing.md (#2…
wyli May 19, 2021
1ee459b
2208 Add `meta_keys` arg to the components (#2214)
Nic-Ma May 19, 2021
26ee695
cleaning allocated memory (#2216)
May 19, 2021
ba03150
array transforms inherit Transform (#2219)
wyli May 20, 2021
4c6af53
inverse adjust contrast (#2217)
rijobro May 20, 2021
25d4b5a
2026 Make all the data temporarily available for post transforms (#2222)
Nic-Ma May 21, 2021
ebfd550
improve error msg (#2229)
wyli May 21, 2021
2fb4b21
2172 caching grid for randaffine (#2228)
wyli May 21, 2021
a49a63c
1871 thread-safety for the cache-based datasets (#2227)
wyli May 21, 2021
33539db
fix type for margin argument in CropForegroundd (#2234)
ambroslins May 24, 2021
49f8ecd
1994 - adds pip install tests (#2233)
wyli May 24, 2021
fac9350
SaveImage print_log (#2237)
rijobro May 24, 2021
81994d2
2236 Fix the duplicated key issue in CopyItemsd transform (#2238)
Nic-Ma May 24, 2021
5d46589
fixes network docs (#2240)
wyli May 24, 2021
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
4 changes: 3 additions & 1 deletion .dockerignore
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,10 @@ __pycache__/
docs/

.coverage
.coverage.*
.coverage/
coverage.xml
.readthedocs.yml
*.md
*.toml

!README.md
Expand Down
4 changes: 2 additions & 2 deletions .github/pull_request_template.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ A few sentences describing the changes proposed in this pull request.
- [x] Non-breaking change (fix or new feature that would not break existing functionality).
- [ ] Breaking change (fix or new feature that would cause existing functionality to change).
- [ ] New tests added to cover the changes.
- [ ] Integration tests passed locally by running `./runtests.sh --codeformat --coverage`.
- [ ] Quick tests passed locally by running `./runtests.sh --quick`.
- [ ] Integration tests passed locally by running `./runtests.sh -f -u --net --coverage`.
- [ ] Quick tests passed locally by running `./runtests.sh --quick --unittests`.
- [ ] In-line docstrings updated.
- [ ] Documentation updated, tested `make html` command in the `docs/` folder.
152 changes: 137 additions & 15 deletions .github/workflows/cron.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,8 @@ name: crons
on:
schedule:
- cron: "0 2 * * *" # at 02:00 UTC
# Allows you to run this workflow manually from the Actions tab
workflow_dispatch:

jobs:
cron-gpu:
Expand All @@ -13,7 +15,7 @@ jobs:
runs-on: [self-hosted, linux, x64, common]
strategy:
matrix:
pytorch-version: [1.5.0, 1.5.1, 1.6.0, latest]
pytorch-version: [1.5.1, 1.6.0, 1.7.1, latest]
steps:
- uses: actions/checkout@v2
- name: Install the dependencies
Expand All @@ -23,15 +25,12 @@ jobs:
python -m pip uninstall -y torch torchvision
if [ ${{ matrix.pytorch-version }} == "latest" ]; then
python -m pip install torch torchvision
elif [ ${{ matrix.pytorch-version }} == "1.5.0" ]; then
python -m pip install torch==1.5.0
python -m pip install torchvision==0.6.0
elif [ ${{ matrix.pytorch-version }} == "1.5.1" ]; then
python -m pip install torch==1.5.1
python -m pip install torchvision==0.6.1
python -m pip install torch==1.5.1 torchvision==0.6.1
elif [ ${{ matrix.pytorch-version }} == "1.6.0" ]; then
python -m pip install torch==1.6.0
python -m pip install torchvision==0.7.0
python -m pip install torch==1.6.0 torchvision==0.7.0
elif [ ${{ matrix.pytorch-version }} == "1.7.1" ]; then
python -m pip install torch==1.7.1 torchvision==0.8.2
fi
python -m pip install -r requirements-dev.txt
python -m pip list
Expand All @@ -43,10 +42,14 @@ jobs:
nvidia-smi
export CUDA_VISIBLE_DEVICES=$(python -m tests.utils)
echo $CUDA_VISIBLE_DEVICES
trap 'if pgrep python; then pkill python; fi;' ERR
python -c $'import torch\na,b=torch.zeros(1,device="cuda:0"),torch.zeros(1,device="cuda:1");\nwhile True:print(a,b)' > /dev/null &
python -c "import torch; print(torch.__version__); print('{} of GPUs available'.format(torch.cuda.device_count()))"
python -c 'import torch; print(torch.rand(5,3, device=torch.device("cuda:0")))'
BUILD_MONAI=1 ./runtests.sh --coverage
python -c 'import torch; print(torch.rand(5, 3, device=torch.device("cuda:0")))'
BUILD_MONAI=1 ./runtests.sh --coverage --unittests # unit tests with coverage report
BUILD_MONAI=1 ./runtests.sh --coverage --net # integration tests with coverage report
coverage xml
if pgrep python; then pkill python; fi
- name: Upload coverage
uses: codecov/codecov-action@v1
with:
Expand All @@ -55,13 +58,20 @@ jobs:

cron-pt-image:
if: github.repository == 'Project-MONAI/MONAI'
strategy:
matrix:
container: ["pytorch:21.02", "pytorch:21.04"] # 21.02 for backward comp.
container:
image: nvcr.io/nvidia/pytorch:20.12-py3 # testing with the latest pytorch base image
image: nvcr.io/nvidia/${{ matrix.container }}-py3 # testing with the latest pytorch base image
options: "--gpus all"
runs-on: [self-hosted, linux, x64, common]
steps:
- uses: actions/checkout@v2
- name: Install the dependencies
- name: Install APT dependencies
run: |
apt-get update
DEBIAN_FRONTEND="noninteractive" apt-get install -y libopenslide0
- name: Install Python dependencies
run: |
which python
python -m pip install --upgrade pip wheel
Expand All @@ -75,16 +85,87 @@ jobs:
nvidia-smi
export CUDA_VISIBLE_DEVICES=$(python -m tests.utils)
echo $CUDA_VISIBLE_DEVICES
trap 'if pgrep python; then pkill python; fi;' ERR
python -c $'import torch\na,b=torch.zeros(1,device="cuda:0"),torch.zeros(1,device="cuda:1");\nwhile True:print(a,b)' > /dev/null &
python -c "import torch; print(torch.__version__); print('{} of GPUs available'.format(torch.cuda.device_count()))"
python -c 'import torch; print(torch.rand(5,3, device=torch.device("cuda:0")))'
BUILD_MONAI=1 ./runtests.sh --coverage
python -c 'import torch; print(torch.rand(5, 3, device=torch.device("cuda:0")))'
BUILD_MONAI=1 ./runtests.sh --coverage --unittests # unit tests with coverage report
BUILD_MONAI=1 ./runtests.sh --coverage --net # integration tests with coverage report
coverage xml
if pgrep python; then pkill python; fi
- name: Upload coverage
uses: codecov/codecov-action@v1
with:
fail_ci_if_error: false
file: ./coverage.xml

cron-pip:
# pip install monai[all] and use it to run unit tests
if: github.repository == 'Project-MONAI/MONAI'
strategy:
matrix:
container: ["pytorch:21.02", "pytorch:21.04"] # 21.02 for backward comp.
container:
image: nvcr.io/nvidia/${{ matrix.container }}-py3 # testing with the latest pytorch base image
options: "--gpus all"
runs-on: [self-hosted, linux, x64, common]
steps:
- uses: actions/checkout@v2
with:
fetch-depth: 0
- name: Install the dependencies
run: |
which python
python -m pip install --upgrade pip wheel twine
python -m pip uninstall -y torch torchvision
python -m pip list
- name: Run tests report coverage
run: |
pip uninstall monai
pip list | grep -iv monai
git fetch --depth=1 origin +refs/tags/*:refs/tags/*
root_dir=$PWD
echo "$root_dir"
set -e

# build tar.gz and wheel
python setup.py check -m -s
python setup.py sdist bdist_wheel
python -m twine check dist/*

# move packages to a temp dir
tmp_dir=$(mktemp -d)
cp dist/monai* "$tmp_dir"
rm -r build dist monai.egg-info
cd "$tmp_dir"
ls -al

# install from tar.gz
name=$(ls *.tar.gz | head -n1)
echo $name
python -m pip install $name[all]
python -c 'import monai; monai.config.print_config()' 2>&1 | grep -iv "unknown"
python -c 'import monai; print(monai.__file__)'

# run tests
export LAUNCH_DELAY=$[ $RANDOM % 16 * 60 ]
echo "Sleep $LAUNCH_DELAY"
sleep $LAUNCH_DELAY
nvidia-smi
export CUDA_VISIBLE_DEVICES=$(python -m tests.utils)
echo $CUDA_VISIBLE_DEVICES
trap 'if pgrep python; then pkill python; fi;' ERR
python -c $'import torch\na,b=torch.zeros(1,device="cuda:0"),torch.zeros(1,device="cuda:1");\nwhile True:print(a,b)' > /dev/null &
python -c "import torch; print(torch.__version__); print('{} of GPUs available'.format(torch.cuda.device_count()))"

cp $root_dir/requirements*.txt "$tmp_dir"
cp -r $root_dir/tests "$tmp_dir"
pwd
ls -al
python -m pip install -r requirements-dev.txt
BUILD_MONAI=1 python ./tests/runner.py -p 'test_((?!integration).)' # unit tests
if pgrep python; then pkill python; fi

cron-docker:
if: github.repository == 'Project-MONAI/MONAI'
container:
Expand All @@ -100,13 +181,54 @@ jobs:
nvidia-smi
export CUDA_VISIBLE_DEVICES=$(python -m tests.utils)
echo $CUDA_VISIBLE_DEVICES
trap 'if pgrep python; then pkill python; fi;' ERR
python -c $'import torch\na,b=torch.zeros(1,device="cuda:0"),torch.zeros(1,device="cuda:1");\nwhile True:print(a,b)' > /dev/null &
python -c "import torch; print(torch.__version__); print('{} of GPUs available'.format(torch.cuda.device_count()))"
python -c 'import torch; print(torch.rand(5,3, device=torch.device("cuda:0")))'
ngc --version
BUILD_MONAI=1 ./runtests.sh --coverage --pytype
BUILD_MONAI=1 ./runtests.sh --coverage --pytype --unittests # unit tests with pytype checks, coverage report
BUILD_MONAI=1 ./runtests.sh --coverage --net # integration tests with coverage report
coverage xml
if pgrep python; then pkill python; fi
- name: Upload coverage
uses: codecov/codecov-action@v1
with:
fail_ci_if_error: false
file: ./coverage.xml

cron-tutorial-notebooks:
if: github.repository == 'Project-MONAI/MONAI'
needs: cron-gpu # so that monai itself is verified first
container:
image: nvcr.io/nvidia/pytorch:21.04-py3 # testing with the latest pytorch base image
options: "--gpus all --ipc=host"
runs-on: [self-hosted, linux, x64, common]
steps:
- uses: actions/checkout@v2
- name: Install MONAI
id: monai-install
run: |
which python
python -m pip install --upgrade pip wheel
python -m pip install -r requirements-dev.txt
BUILD_MONAI=0 python setup.py develop # install monai
nvidia-smi
export CUDA_VISIBLE_DEVICES=$(python -m tests.utils)
echo $CUDA_VISIBLE_DEVICES
echo "::set-output name=devices::$CUDA_VISIBLE_DEVICES"
- name: Checkout tutorials and install their requirements
run: |
cd /opt
git clone --depth 1 --branch master --single-branch https://github.com/Project-MONAI/tutorials.git # latest commit of master branch
cd tutorials
python -m pip install -r requirements.txt
- name: Run tutorial notebooks
timeout-minutes: 150
run: |
export CUDA_VISIBLE_DEVICES=${{ steps.monai-install.outputs.devices }}
echo $CUDA_VISIBLE_DEVICES
trap 'if pgrep python; then pkill python; fi;' ERR
python -c $'import torch\na,b=torch.zeros(1,device="cuda:0"),torch.zeros(1,device="cuda:1");\nwhile True:print(a,b)' > /dev/null &
cd /opt/tutorials
$(pwd)/runner.sh
if pgrep python; then pkill python; fi
124 changes: 124 additions & 0 deletions .github/workflows/docker.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,124 @@
name: docker
# versioning: compute a static version file
# local_docker: use the version file to build docker images
# docker_test_latest: test the latest internal docker image (has flake)
# docker_test_dockerhub: test the latest dockerhub release (no flake)
on:
# dev only docker deployment and quick tests
push:
branches:
- dev
# Allows you to run this workflow manually from the Actions tab
# This is to trigger building/testing docker image from dev only.
workflow_dispatch:

jobs:
versioning:
# compute versioning file from python setup.py
# upload as artifact
# (also used in release.yml)
if: github.repository == 'Project-MONAI/MONAI'
container:
image: localhost:5000/local_monai:latest
runs-on: [self-hosted, linux, x64, build_only]
steps:
- uses: actions/checkout@v2
# full history so that we can git describe
with:
ref: dev
fetch-depth: 0
- shell: bash
run: |
git describe
python setup.py build
cat build/lib/monai/_version.py
- name: Upload version
uses: actions/upload-artifact@v2
with:
name: _version.py
path: build/lib/monai/_version.py
- name: Clean up directory
shell: bash
run: |
ls -al
rm -rf {*,.[^.]*}

local_docker:
# builds two versions: local_monai:latest and local_monai:dockerhub
# latest: used for local tests
# dockerhub: release, no flake package
if: github.repository == 'Project-MONAI/MONAI'
needs: versioning
runs-on: [self-hosted, linux, x64, build_only]
steps:
- uses: actions/checkout@v2
with:
ref: dev
- name: Download version
uses: actions/download-artifact@v2
with:
name: _version.py
- name: docker_build
shell: bash
run: |
# get tag info for versioning
cat _version.py
mv _version.py monai/
# build and run original docker image for local registry
docker build -t localhost:5000/local_monai:latest -f Dockerfile .
docker push localhost:5000/local_monai:latest
# build once more w/ tag "latest": remove flake package as it is not needed on hub.docker.com
sed -i '/flake/d' requirements-dev.txt
docker build -t projectmonai/monai:latest -f Dockerfile .
# also push as tag "dockerhub" to local registry
docker image tag projectmonai/monai:latest localhost:5000/local_monai:dockerhub
docker push localhost:5000/local_monai:dockerhub
# distribute as always w/ tag "latest" to hub.docker.com
echo "${{ secrets.DOCKER_PW }}" | docker login -u projectmonai --password-stdin
docker push projectmonai/monai:latest
docker logout
docker image prune -f

docker_test_latest:
if: github.repository == 'Project-MONAI/MONAI'
needs: local_docker
container:
image: localhost:5000/local_monai:latest
runs-on: [self-hosted, linux, x64, common]
steps:
- name: Import
run: |
export CUDA_VISIBLE_DEVICES=$(python -m tests.utils)
echo $CUDA_VISIBLE_DEVICES
trap 'if pgrep python; then pkill python; fi;' ERR
python -c $'import torch\na,b=torch.zeros(1,device="cuda:0"),torch.zeros(1,device="cuda:1");\nwhile True:print(a,b)' > /dev/null &
python -c 'import monai; monai.config.print_config()'
cd /opt/monai
ls -al
ngc --version
python -m tests.min_tests
if pgrep python; then pkill python; fi
env:
QUICKTEST: True

docker_test_dockerhub:
if: github.repository == 'Project-MONAI/MONAI'
needs: local_docker
container:
image: localhost:5000/local_monai:dockerhub
runs-on: [self-hosted, linux, x64, common]
steps:
- name: Import
run: |
export CUDA_VISIBLE_DEVICES=$(python -m tests.utils)
echo $CUDA_VISIBLE_DEVICES
trap 'if pgrep python; then pkill python; fi;' ERR
python -c $'import torch\na,b=torch.zeros(1,device="cuda:0"),torch.zeros(1,device="cuda:1");\nwhile True:print(a,b)' > /dev/null &
python -c 'import monai; monai.config.print_config()'
cd /opt/monai
ls -al
ngc --version
python -m tests.min_tests
if pgrep python; then pkill python; fi
env:
QUICKTEST: True
Loading