monai-weekly 1.5.dev2448__py3-none-any.whl → 1.5.dev2449__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
monai/__init__.py CHANGED
@@ -136,4 +136,4 @@ except BaseException:
136
136
 
137
137
  if MONAIEnvVars.debug():
138
138
  raise
139
- __commit_id__ = "44e249d7d492d858199acfca1c948faa5aa33763"
139
+ __commit_id__ = "e604d1841fe60c0ffb6978ae4116535ca8d8f34f"
monai/_version.py CHANGED
@@ -8,11 +8,11 @@ import json
8
8
 
9
9
  version_json = '''
10
10
  {
11
- "date": "2024-12-01T02:35:43+0000",
11
+ "date": "2024-12-08T02:32:52+0000",
12
12
  "dirty": false,
13
13
  "error": null,
14
- "full-revisionid": "d4ff1455cf46b35e4dcfb6f57d54b0738b39f738",
15
- "version": "1.5.dev2448"
14
+ "full-revisionid": "8cad248c8b374702245989507da1dd8430ef863f",
15
+ "version": "1.5.dev2449"
16
16
  }
17
17
  ''' # END VERSION_JSON
18
18
 
monai/losses/dice.py CHANGED
@@ -23,6 +23,7 @@ from torch.nn.modules.loss import _Loss
23
23
 
24
24
  from monai.losses.focal_loss import FocalLoss
25
25
  from monai.losses.spatial_mask import MaskedLoss
26
+ from monai.losses.utils import compute_tp_fp_fn
26
27
  from monai.networks import one_hot
27
28
  from monai.utils import DiceCEReduction, LossReduction, Weight, look_up_option, pytorch_after
28
29
 
@@ -39,8 +40,16 @@ class DiceLoss(_Loss):
39
40
  The `smooth_nr` and `smooth_dr` parameters are values added to the intersection and union components of
40
41
  the inter-over-union calculation to smooth results respectively, these values should be small.
41
42
 
42
- The original paper: Milletari, F. et. al. (2016) V-Net: Fully Convolutional Neural Networks forVolumetric
43
- Medical Image Segmentation, 3DV, 2016.
43
+ The original papers:
44
+
45
+ Milletari, F. et. al. (2016) V-Net: Fully Convolutional Neural Networks for Volumetric
46
+ Medical Image Segmentation. 3DV 2016.
47
+
48
+ Wang, Z. et. al. (2023) Jaccard Metric Losses: Optimizing the Jaccard Index with
49
+ Soft Labels. NeurIPS 2023.
50
+
51
+ Wang, Z. et. al. (2023) Dice Semimetric Losses: Optimizing the Dice Score with
52
+ Soft Labels. MICCAI 2023.
44
53
 
45
54
  """
46
55
 
@@ -58,6 +67,7 @@ class DiceLoss(_Loss):
58
67
  smooth_dr: float = 1e-5,
59
68
  batch: bool = False,
60
69
  weight: Sequence[float] | float | int | torch.Tensor | None = None,
70
+ soft_label: bool = False,
61
71
  ) -> None:
62
72
  """
63
73
  Args:
@@ -89,6 +99,8 @@ class DiceLoss(_Loss):
89
99
  of the sequence should be the same as the number of classes. If not ``include_background``,
90
100
  the number of classes should not include the background category class 0).
91
101
  The value/values should be no less than 0. Defaults to None.
102
+ soft_label: whether the target contains non-binary values (soft labels) or not.
103
+ If True a soft label formulation of the loss will be used.
92
104
 
93
105
  Raises:
94
106
  TypeError: When ``other_act`` is not an ``Optional[Callable]``.
@@ -114,6 +126,7 @@ class DiceLoss(_Loss):
114
126
  weight = torch.as_tensor(weight) if weight is not None else None
115
127
  self.register_buffer("class_weight", weight)
116
128
  self.class_weight: None | torch.Tensor
129
+ self.soft_label = soft_label
117
130
 
118
131
  def forward(self, input: torch.Tensor, target: torch.Tensor) -> torch.Tensor:
119
132
  """
@@ -174,21 +187,15 @@ class DiceLoss(_Loss):
174
187
  # reducing spatial dimensions and batch
175
188
  reduce_axis = [0] + reduce_axis
176
189
 
177
- intersection = torch.sum(target * input, dim=reduce_axis)
178
-
179
- if self.squared_pred:
180
- ground_o = torch.sum(target**2, dim=reduce_axis)
181
- pred_o = torch.sum(input**2, dim=reduce_axis)
182
- else:
183
- ground_o = torch.sum(target, dim=reduce_axis)
184
- pred_o = torch.sum(input, dim=reduce_axis)
185
-
186
- denominator = ground_o + pred_o
187
-
188
- if self.jaccard:
189
- denominator = 2.0 * (denominator - intersection)
190
+ ord = 2 if self.squared_pred else 1
191
+ tp, fp, fn = compute_tp_fp_fn(input, target, reduce_axis, ord, self.soft_label)
192
+ if not self.jaccard:
193
+ fp *= 0.5
194
+ fn *= 0.5
195
+ numerator = 2 * tp + self.smooth_nr
196
+ denominator = 2 * (tp + fp + fn) + self.smooth_dr
190
197
 
191
- f: torch.Tensor = 1.0 - (2.0 * intersection + self.smooth_nr) / (denominator + self.smooth_dr)
198
+ f: torch.Tensor = 1 - numerator / denominator
192
199
 
193
200
  num_of_classes = target.shape[1]
194
201
  if self.class_weight is not None and num_of_classes != 1:
@@ -272,6 +279,7 @@ class GeneralizedDiceLoss(_Loss):
272
279
  smooth_nr: float = 1e-5,
273
280
  smooth_dr: float = 1e-5,
274
281
  batch: bool = False,
282
+ soft_label: bool = False,
275
283
  ) -> None:
276
284
  """
277
285
  Args:
@@ -295,6 +303,8 @@ class GeneralizedDiceLoss(_Loss):
295
303
  batch: whether to sum the intersection and union areas over the batch dimension before the dividing.
296
304
  Defaults to False, intersection over union is computed from each item in the batch.
297
305
  If True, the class-weighted intersection and union areas are first summed across the batches.
306
+ soft_label: whether the target contains non-binary values (soft labels) or not.
307
+ If True a soft label formulation of the loss will be used.
298
308
 
299
309
  Raises:
300
310
  TypeError: When ``other_act`` is not an ``Optional[Callable]``.
@@ -319,6 +329,7 @@ class GeneralizedDiceLoss(_Loss):
319
329
  self.smooth_nr = float(smooth_nr)
320
330
  self.smooth_dr = float(smooth_dr)
321
331
  self.batch = batch
332
+ self.soft_label = soft_label
322
333
 
323
334
  def w_func(self, grnd):
324
335
  if self.w_type == str(Weight.SIMPLE):
@@ -370,13 +381,13 @@ class GeneralizedDiceLoss(_Loss):
370
381
  reduce_axis: list[int] = torch.arange(2, len(input.shape)).tolist()
371
382
  if self.batch:
372
383
  reduce_axis = [0] + reduce_axis
373
- intersection = torch.sum(target * input, reduce_axis)
374
384
 
375
- ground_o = torch.sum(target, reduce_axis)
376
- pred_o = torch.sum(input, reduce_axis)
377
-
378
- denominator = ground_o + pred_o
385
+ tp, fp, fn = compute_tp_fp_fn(input, target, reduce_axis, 1, self.soft_label)
386
+ fp *= 0.5
387
+ fn *= 0.5
388
+ denominator = 2 * (tp + fp + fn)
379
389
 
390
+ ground_o = torch.sum(target, reduce_axis)
380
391
  w = self.w_func(ground_o.float())
381
392
  infs = torch.isinf(w)
382
393
  if self.batch:
@@ -388,7 +399,7 @@ class GeneralizedDiceLoss(_Loss):
388
399
  w = w + infs * max_values
389
400
 
390
401
  final_reduce_dim = 0 if self.batch else 1
391
- numer = 2.0 * (intersection * w).sum(final_reduce_dim, keepdim=True) + self.smooth_nr
402
+ numer = 2.0 * (tp * w).sum(final_reduce_dim, keepdim=True) + self.smooth_nr
392
403
  denom = (denominator * w).sum(final_reduce_dim, keepdim=True) + self.smooth_dr
393
404
  f: torch.Tensor = 1.0 - (numer / denom)
394
405
 
monai/losses/tversky.py CHANGED
@@ -17,6 +17,7 @@ from collections.abc import Callable
17
17
  import torch
18
18
  from torch.nn.modules.loss import _Loss
19
19
 
20
+ from monai.losses.utils import compute_tp_fp_fn
20
21
  from monai.networks import one_hot
21
22
  from monai.utils import LossReduction
22
23
 
@@ -28,6 +29,9 @@ class TverskyLoss(_Loss):
28
29
  Sadegh et al. (2017) Tversky loss function for image segmentation
29
30
  using 3D fully convolutional deep networks. (https://arxiv.org/abs/1706.05721)
30
31
 
32
+ Wang, Z. et. al. (2023) Dice Semimetric Losses: Optimizing the Dice Score with
33
+ Soft Labels. MICCAI 2023.
34
+
31
35
  Adapted from:
32
36
  https://github.com/NifTK/NiftyNet/blob/v0.6.0/niftynet/layer/loss_segmentation.py#L631
33
37
 
@@ -46,6 +50,7 @@ class TverskyLoss(_Loss):
46
50
  smooth_nr: float = 1e-5,
47
51
  smooth_dr: float = 1e-5,
48
52
  batch: bool = False,
53
+ soft_label: bool = False,
49
54
  ) -> None:
50
55
  """
51
56
  Args:
@@ -70,6 +75,8 @@ class TverskyLoss(_Loss):
70
75
  batch: whether to sum the intersection and union areas over the batch dimension before the dividing.
71
76
  Defaults to False, a Dice loss value is computed independently from each item in the batch
72
77
  before any `reduction`.
78
+ soft_label: whether the target contains non-binary values (soft labels) or not.
79
+ If True a soft label formulation of the loss will be used.
73
80
 
74
81
  Raises:
75
82
  TypeError: When ``other_act`` is not an ``Optional[Callable]``.
@@ -93,6 +100,7 @@ class TverskyLoss(_Loss):
93
100
  self.smooth_nr = float(smooth_nr)
94
101
  self.smooth_dr = float(smooth_dr)
95
102
  self.batch = batch
103
+ self.soft_label = soft_label
96
104
 
97
105
  def forward(self, input: torch.Tensor, target: torch.Tensor) -> torch.Tensor:
98
106
  """
@@ -134,20 +142,15 @@ class TverskyLoss(_Loss):
134
142
  if target.shape != input.shape:
135
143
  raise AssertionError(f"ground truth has differing shape ({target.shape}) from input ({input.shape})")
136
144
 
137
- p0 = input
138
- p1 = 1 - p0
139
- g0 = target
140
- g1 = 1 - g0
141
-
142
145
  # reducing only spatial dimensions (not batch nor channels)
143
146
  reduce_axis: list[int] = torch.arange(2, len(input.shape)).tolist()
144
147
  if self.batch:
145
148
  # reducing spatial dimensions and batch
146
149
  reduce_axis = [0] + reduce_axis
147
150
 
148
- tp = torch.sum(p0 * g0, reduce_axis)
149
- fp = self.alpha * torch.sum(p0 * g1, reduce_axis)
150
- fn = self.beta * torch.sum(p1 * g0, reduce_axis)
151
+ tp, fp, fn = compute_tp_fp_fn(input, target, reduce_axis, 1, self.soft_label, False)
152
+ fp *= self.alpha
153
+ fn *= self.beta
151
154
  numerator = tp + self.smooth_nr
152
155
  denominator = tp + fp + fn + self.smooth_dr
153
156
 
monai/losses/utils.py ADDED
@@ -0,0 +1,68 @@
1
+ # Copyright (c) MONAI Consortium
2
+ # Licensed under the Apache License, Version 2.0 (the "License");
3
+ # you may not use this file except in compliance with the License.
4
+ # You may obtain a copy of the License at
5
+ # http://www.apache.org/licenses/LICENSE-2.0
6
+ # Unless required by applicable law or agreed to in writing, software
7
+ # distributed under the License is distributed on an "AS IS" BASIS,
8
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
9
+ # See the License for the specific language governing permissions and
10
+ # limitations under the License.
11
+
12
+ from __future__ import annotations
13
+
14
+ import torch
15
+ import torch.linalg as LA
16
+
17
+
18
+ def compute_tp_fp_fn(
19
+ input: torch.Tensor,
20
+ target: torch.Tensor,
21
+ reduce_axis: list[int],
22
+ ord: int,
23
+ soft_label: bool,
24
+ decoupled: bool = True,
25
+ ) -> tuple[torch.Tensor, torch.Tensor, torch.Tensor]:
26
+ """
27
+ Args:
28
+ input: the shape should be BNH[WD], where N is the number of classes.
29
+ target: the shape should be BNH[WD] or B1H[WD], where N is the number of classes.
30
+ reduce_axis: the axis to be reduced.
31
+ ord: the order of the vector norm.
32
+ soft_label: whether the target contains non-binary values (soft labels) or not.
33
+ If True a soft label formulation of the loss will be used.
34
+ decoupled: whether the input and the target should be decoupled when computing fp and fn.
35
+ Only for the original implementation when soft_label is False.
36
+
37
+ Adapted from:
38
+ https://github.com/zifuwanggg/JDTLosses
39
+ """
40
+
41
+ # the original implementation that is erroneous with soft labels
42
+ if ord == 1 and not soft_label:
43
+ tp = torch.sum(input * target, dim=reduce_axis)
44
+ # the original implementation of Dice and Jaccard loss
45
+ if decoupled:
46
+ fp = torch.sum(input, dim=reduce_axis) - tp
47
+ fn = torch.sum(target, dim=reduce_axis) - tp
48
+ # the original implementation of Tversky loss
49
+ else:
50
+ fp = torch.sum(input * (1 - target), dim=reduce_axis)
51
+ fn = torch.sum((1 - input) * target, dim=reduce_axis)
52
+ # the new implementation that is correct with soft labels
53
+ # and it is identical to the original implementation with hard labels
54
+ else:
55
+ pred_o = LA.vector_norm(input, ord=ord, dim=reduce_axis)
56
+ ground_o = LA.vector_norm(target, ord=ord, dim=reduce_axis)
57
+ difference = LA.vector_norm(input - target, ord=ord, dim=reduce_axis)
58
+
59
+ if ord > 1:
60
+ pred_o = torch.pow(pred_o, exponent=ord)
61
+ ground_o = torch.pow(ground_o, exponent=ord)
62
+ difference = torch.pow(difference, exponent=ord)
63
+
64
+ tp = (pred_o + ground_o - difference) / 2
65
+ fp = pred_o - tp
66
+ fn = ground_o - tp
67
+
68
+ return tp, fp, fn
@@ -56,7 +56,7 @@ def build_sincos_position_embedding(
56
56
  grid_h = torch.arange(h, dtype=torch.float32)
57
57
  grid_w = torch.arange(w, dtype=torch.float32)
58
58
 
59
- grid_h, grid_w = torch.meshgrid(grid_h, grid_w, indexing="ij")
59
+ grid_h, grid_w = torch.meshgrid(grid_h, grid_w)
60
60
 
61
61
  if embed_dim % 4 != 0:
62
62
  raise AssertionError("Embed dimension must be divisible by 4 for 2D sin-cos position embedding")
@@ -75,7 +75,7 @@ def build_sincos_position_embedding(
75
75
  grid_w = torch.arange(w, dtype=torch.float32)
76
76
  grid_d = torch.arange(d, dtype=torch.float32)
77
77
 
78
- grid_h, grid_w, grid_d = torch.meshgrid(grid_h, grid_w, grid_d, indexing="ij")
78
+ grid_h, grid_w, grid_d = torch.meshgrid(grid_h, grid_w, grid_d)
79
79
 
80
80
  if embed_dim % 6 != 0:
81
81
  raise AssertionError("Embed dimension must be divisible by 6 for 3D sin-cos position embedding")
@@ -75,7 +75,7 @@ class SwinUNETR(nn.Module):
75
75
  dropout_path_rate: float = 0.0,
76
76
  normalize: bool = True,
77
77
  norm_layer: type[LayerNorm] = nn.LayerNorm,
78
- patch_norm: bool = True,
78
+ patch_norm: bool = False,
79
79
  use_checkpoint: bool = False,
80
80
  spatial_dims: int = 3,
81
81
  downsample: str | nn.Module = "merging",
@@ -102,7 +102,7 @@ class SwinUNETR(nn.Module):
102
102
  dropout_path_rate: drop path rate.
103
103
  normalize: normalize output intermediate features in each stage.
104
104
  norm_layer: normalization layer.
105
- patch_norm: whether to apply normalization to the patch embedding.
105
+ patch_norm: whether to apply normalization to the patch embedding. Default is False.
106
106
  use_checkpoint: use gradient checkpointing for reduced memory usage.
107
107
  spatial_dims: number of spatial dims.
108
108
  downsample: module used for downsampling, available options are `"mergingv2"`, `"merging"` and a
@@ -1054,12 +1054,11 @@ class ClassesToIndices(Transform, MultiSampleTrait):
1054
1054
 
1055
1055
  class ConvertToMultiChannelBasedOnBratsClasses(Transform):
1056
1056
  """
1057
- Convert labels to multi channels based on brats18 classes:
1058
- label 1 is the necrotic and non-enhancing tumor core
1059
- label 2 is the peritumoral edema
1060
- label 4 is the GD-enhancing tumor
1061
- The possible classes are TC (Tumor core), WT (Whole tumor)
1062
- and ET (Enhancing tumor).
1057
+ Convert labels to multi channels based on `brats18 <https://www.med.upenn.edu/sbia/brats2018/data.html>`_ classes,
1058
+ which include TC (Tumor core), WT (Whole tumor) and ET (Enhancing tumor):
1059
+ label 1 is the necrotic and non-enhancing tumor core, which should be counted under TC and WT subregion,
1060
+ label 2 is the peritumoral edema, which is counted only under WT subregion,
1061
+ label 4 is the GD-enhancing tumor, which should be counted under ET, TC, WT subregions.
1063
1062
  """
1064
1063
 
1065
1064
  backend = [TransformBackends.TORCH, TransformBackends.NUMPY]
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: monai-weekly
3
- Version: 1.5.dev2448
3
+ Version: 1.5.dev2449
4
4
  Summary: AI Toolkit for Healthcare Imaging
5
5
  Home-page: https://monai.io/
6
6
  Author: MONAI Consortium
@@ -1,5 +1,5 @@
1
- monai/__init__.py,sha256=iAf8W1W9ATQdrTIOSFo-6azszcYoz1kkY4MnCgX4Y4U,4095
2
- monai/_version.py,sha256=C3XqwkXQaNqY0gKbUFW8ztNtyWAc5vmVP0oukF2Q3H8,503
1
+ monai/__init__.py,sha256=8nDtqXXT8g-2RkTMzJScb7J2ivFmb37BrqgM3S_NJ1k,4095
2
+ monai/_version.py,sha256=uJdYCwRIEg12C-k2c1DKHw0XzzOkPRe-G7r0glT9iYU,503
3
3
  monai/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
4
4
  monai/_extensions/__init__.py,sha256=NEBPreRhQ8H9gVvgrLr_y52_TmqB96u_u4VQmeNT93I,642
5
5
  monai/_extensions/loader.py,sha256=7SiKw36q-nOzH8CRbBurFrz7GM40GCu7rc93Tm8XpnI,3643
@@ -204,7 +204,7 @@ monai/losses/barlow_twins.py,sha256=prDdaY0vXAXMuVDmc9Tv6svRZzNwKA0LdsmRaUmusiI,
204
204
  monai/losses/cldice.py,sha256=NeUVJuFjowlH90MSLtq8HJzhzLVwal_G7gaOyc1_5OY,6328
205
205
  monai/losses/contrastive.py,sha256=-SCvgQOA1JADQaFl7S4wEoIFtNd4uFkfTPlkMkky_LQ,3261
206
206
  monai/losses/deform.py,sha256=mBOvFgKyW1qw9267AZCd0h_xi10xvy_ybYfhzQzl5rI,9701
207
- monai/losses/dice.py,sha256=S4JKPybHN82JY26qIwqJTJovT3YHWbVQOwKB30bLViY,51475
207
+ monai/losses/dice.py,sha256=U5SHjK4ja-Csb8ibqcrmbPu6ZVoCnBh7wx9j9Lm59bQ,52050
208
208
  monai/losses/ds_loss.py,sha256=ts92Rc_YAkfb5WUUWxRTecpY32lVwC20pu7u-dJCgyY,3854
209
209
  monai/losses/focal_loss.py,sha256=OhAtxzAwZ1CoNGH1S2dQbG7iDyowYUqv64KXi0GgMhk,11772
210
210
  monai/losses/giou_loss.py,sha256=Mogq6fR0tO__Xj0Ul388QMEx03XrSS-Ue96i9ahY-uo,2795
@@ -217,8 +217,9 @@ monai/losses/spatial_mask.py,sha256=rPyW8fJPSdqHUS7YB7m30Sq4G-YYpobO_fvKsFSAFQ0,
217
217
  monai/losses/spectral_loss.py,sha256=PqmZdmJOAzaarW0bzBu8SeL9sOy3XQhul7pnLY4Ih-I,3368
218
218
  monai/losses/ssim_loss.py,sha256=v8LaVXtBzpTey80CBtsWTs5qWw7fiJwYAXqXcCgo5kA,5058
219
219
  monai/losses/sure_loss.py,sha256=PDDNNeZm8SLPRCDUPbc8o4--ribHnY4nbo8y55nRo0w,8179
220
- monai/losses/tversky.py,sha256=8idAtxrZW3SYI0vC8Hw2EDkOb4ybgCnJD3aNipWOEGc,6645
220
+ monai/losses/tversky.py,sha256=uLuqCvsac8OabTJzKQEzAfAvlwrflYCh0s76rgbcVJ0,6955
221
221
  monai/losses/unified_focal_loss.py,sha256=rCj8IpueYH_UMrOUXU0tjbXIN4Uix3bGnRZQtRvl7Sg,10224
222
+ monai/losses/utils.py,sha256=wrpKcEO0XhbFOHz_jJRqeAeIgpMiMxmepnRf31_DNRU,2786
222
223
  monai/metrics/__init__.py,sha256=DUjK3_qfGZbw0zCv6OJgMSL3AfiYN47aYqLsxn69-HU,2174
223
224
  monai/metrics/active_learning_metrics.py,sha256=uKID2O4mnY-9P2ZzyT4sqJd2NfgzjSpNKpAwulWCozU,8211
224
225
  monai/metrics/confusion_matrix.py,sha256=Spb20jYPnbgGZfPKDQI36ePznPf1xujxhboNnW8HxdQ,15064
@@ -264,7 +265,7 @@ monai/networks/blocks/localnet_block.py,sha256=b2-ZZvkMPphHJZYTbwEZDhqA-mMBSFM5W
264
265
  monai/networks/blocks/mednext_block.py,sha256=GKaFkRvmho79yxwfYyeSaJtHFtk185dY0tA4_rPnsQA,10487
265
266
  monai/networks/blocks/mlp.py,sha256=qw_jgyrYwoQ5WYBM1rtSSaO4C837ZbctoRKhh_BQQFI,3341
266
267
  monai/networks/blocks/patchembedding.py,sha256=tp0coxpi70LcUk03HbnygFeCxcBv5bNHJbw1crIG_Js,8956
267
- monai/networks/blocks/pos_embed_utils.py,sha256=vFEQqxZ6UAmjcy_icFDL9EwjRHYXuIbWr1chWUJqO7g,4070
268
+ monai/networks/blocks/pos_embed_utils.py,sha256=alvCh5x_OF2lv8fO6vvhAwkQJHV7TJT6V8cPJY0vbRg,4040
268
269
  monai/networks/blocks/regunet_block.py,sha256=1FLIwVBtk66II6xQ7Q4LMY8DP0rMmeftN7HuaEgnf3A,8825
269
270
  monai/networks/blocks/rel_pos_embedding.py,sha256=wuTJsk_NHSDX-3V0X9ctF99WIh2-SHLDbQxzrG7tz_4,2208
270
271
  monai/networks/blocks/segresnet_block.py,sha256=dREFa0CWuSWlSOm53fT7vZz6UC2J_7JAEaeHB9rYjAk,3339
@@ -325,7 +326,7 @@ monai/networks/nets/senet.py,sha256=gulqPMYmSABbMbN39NElGzSU1TKGviJas7EPTBaZ60A,
325
326
  monai/networks/nets/spade_autoencoderkl.py,sha256=-b2Sbl4jPpwo3ukTgsTcON26cSTB35K9sy1S9DKlZz0,19566
326
327
  monai/networks/nets/spade_diffusion_model_unet.py,sha256=zYsXhkHNpHWWyal5ljAMxOICJ1loYQQMAOuzWzdLBCM,39007
327
328
  monai/networks/nets/spade_network.py,sha256=GguYucjIRyT_rZa9DrvUmv00FtqXHZtY1VfJM9Rygns,16479
328
- monai/networks/nets/swin_unetr.py,sha256=myQIg5jFUvDX5O_3KjZILkXk2a6KIVd08pYM8mSWytU,45522
329
+ monai/networks/nets/swin_unetr.py,sha256=ycqFgfR5skPJ885twQjS8OJKpA2ZkPgjWiTud6BLbb8,45541
329
330
  monai/networks/nets/torchvision_fc.py,sha256=3g5PD7C1MSkQ8xndhnVd0b3aN8zfshT8uiFS0OHyQaY,6309
330
331
  monai/networks/nets/transchex.py,sha256=uA_RfTDfPhwA1ecAPZ9EDnMyJKn2tUMLEWdyB_rU2v0,15726
331
332
  monai/networks/nets/transformer.py,sha256=-nzl20Z5xdtn7xChOd_cRbbPVoPIFGVfTQw3fIEGMuE,6395
@@ -395,7 +396,7 @@ monai/transforms/spatial/array.py,sha256=5EKivdPYCP4i4qYUlkK1RpYQFzaU_baYyzgubid
395
396
  monai/transforms/spatial/dictionary.py,sha256=t0SvEDSVNFUEw2fK66OVF20sqSzCNxil17HmvsMFBt8,133752
396
397
  monai/transforms/spatial/functional.py,sha256=IwS0witCqbGkyuxzu_R4Ztp90S0pg9hY1irG7feXqig,33886
397
398
  monai/transforms/utility/__init__.py,sha256=s9djSd6kvViPnFvMR11Dgd30Lv4oY6FaPJr4ZZJZLq0,573
398
- monai/transforms/utility/array.py,sha256=OaEmhjDoWg9buQHXbgwgN713qqR05trZJ0F7qAm1re0,81658
399
+ monai/transforms/utility/array.py,sha256=Rjfe1UOesH8ulh8q4rI4IfbC2t0e1KFq4AasZ3UvOwY,81848
399
400
  monai/transforms/utility/dictionary.py,sha256=iOFdTSekvkAsBbbfHeffcRsOKRtNcnt3N1cVuUarZ1s,80549
400
401
  monai/utils/__init__.py,sha256=2_AIpb1wqGMkmgoZ3r43muFTEsnMTCkPu3LtckipYHg,3793
401
402
  monai/utils/component_store.py,sha256=Fe9jbHgwwBBAeJAw0nI02Ae13v17wlwF6N9uUue8tJg,4525
@@ -419,8 +420,8 @@ monai/visualize/img2tensorboard.py,sha256=NnMcyfIFqX-jD7TBO3Rn02zt5uug79d_7pIIaV
419
420
  monai/visualize/occlusion_sensitivity.py,sha256=OQHEJLyIhB8zWqQsfKaX-1kvCjWFVYtLfS4dFC0nKFI,18160
420
421
  monai/visualize/utils.py,sha256=B-MhTVs7sQbIqYS3yPnpBwPw2K82rE2PBtGIfpwZtWM,9894
421
422
  monai/visualize/visualizer.py,sha256=qckyaMZCbezYUwE20k5yc-Pb7UozVavMDbrmyQwfYHY,1377
422
- monai_weekly-1.5.dev2448.dist-info/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
423
- monai_weekly-1.5.dev2448.dist-info/METADATA,sha256=5LrqePqyfsUBBT1Y_VCaJlgKAP0ZCcNibWIHTp6YOOc,11293
424
- monai_weekly-1.5.dev2448.dist-info/WHEEL,sha256=PZUExdf71Ui_so67QXpySuHtCi3-J3wvF4ORK6k_S8U,91
425
- monai_weekly-1.5.dev2448.dist-info/top_level.txt,sha256=UaNwRzLGORdus41Ip446s3bBfViLkdkDsXDo34J2P44,6
426
- monai_weekly-1.5.dev2448.dist-info/RECORD,,
423
+ monai_weekly-1.5.dev2449.dist-info/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
424
+ monai_weekly-1.5.dev2449.dist-info/METADATA,sha256=pkXaiu1fplwCSKbFQn3lkiY_rbmynZAw6dJmE2RhjNk,11293
425
+ monai_weekly-1.5.dev2449.dist-info/WHEEL,sha256=PZUExdf71Ui_so67QXpySuHtCi3-J3wvF4ORK6k_S8U,91
426
+ monai_weekly-1.5.dev2449.dist-info/top_level.txt,sha256=UaNwRzLGORdus41Ip446s3bBfViLkdkDsXDo34J2P44,6
427
+ monai_weekly-1.5.dev2449.dist-info/RECORD,,