konfai 1.1.6__py3-none-any.whl → 1.1.8__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.

Potentially problematic release.


This version of konfai might be problematic. Click here for more details.

konfai/predictor.py CHANGED
@@ -27,17 +27,19 @@ from collections import defaultdict
27
27
 
28
28
  class OutDataset(Dataset, NeedDevice, ABC):
29
29
 
30
- def __init__(self, filename: str, group: str, pre_transforms : dict[str, TransformLoader], post_transforms : dict[str, TransformLoader], final_transforms : dict[str, TransformLoader], patchCombine: Union[str, None]) -> None:
30
+ def __init__(self, filename: str, group: str, before_reduction_transforms : dict[str, TransformLoader], after_reduction_transforms : dict[str, TransformLoader], final_transforms : dict[str, TransformLoader], patchCombine: Union[str, None], reduction: str) -> None:
31
31
  filename, format = filename.split(":")
32
32
  super().__init__(filename, format)
33
33
  self.group = group
34
- self._pre_transforms = pre_transforms
35
- self._post_transforms = post_transforms
34
+ self._before_reduction_transforms = before_reduction_transforms
35
+ self._after_reduction_transforms = after_reduction_transforms
36
36
  self._final_transforms = final_transforms
37
37
  self._patchCombine = patchCombine
38
+ self.reduction_classpath = reduction
39
+ self.reduction = None
38
40
 
39
- self.pre_transforms : list[Transform] = []
40
- self.post_transforms : list[Transform] = []
41
+ self.before_reduction_transforms : list[Transform] = []
42
+ self.after_reduction_transforms : list[Transform] = []
41
43
  self.final_transforms : list[Transform] = []
42
44
  self.patchCombine: PathCombine = None
43
45
 
@@ -47,7 +49,7 @@ class OutDataset(Dataset, NeedDevice, ABC):
47
49
  self.nb_data_augmentation = 0
48
50
 
49
51
  def load(self, name_layer: str, datasets: list[Dataset], groups: dict[str, str]):
50
- transforms_type = ["pre_transforms", "post_transforms", "final_transforms"]
52
+ transforms_type = ["before_reduction_transforms", "after_reduction_transforms", "final_transforms"]
51
53
  for name, _transform_type, transform_type in [(k, getattr(self, "_{}".format(k)), getattr(self, k)) for k in transforms_type]:
52
54
 
53
55
  if _transform_type is not None:
@@ -57,8 +59,15 @@ class OutDataset(Dataset, NeedDevice, ABC):
57
59
  transform_type.append(transform)
58
60
 
59
61
  if self._patchCombine is not None:
60
- module, name = _getModule(self._patchCombine, "konfai.data.patching")
61
- self.patchCombine = getattr(importlib.import_module(module), name)(config = None, DL_args = "{}.outsDataset.{}.OutDataset".format(KONFAI_ROOT(), name_layer))
62
+ module, name = _getModule(self._patchCombine, "konfai.data.patching")
63
+ self.patchCombine = config("{}.outsDataset.{}.OutDataset".format(KONFAI_ROOT(), name_layer))(getattr(importlib.import_module(module), name))(config = None)
64
+
65
+ module, name = _getModule(self.reduction_classpath, "konfai.predictor")
66
+ if module == "konfai.predictor":
67
+ self.reduction = getattr(importlib.import_module(module), name)()
68
+ else:
69
+ self.reduction = config("{}.outsDataset.{}.OutDataset.{}".format(KONFAI_ROOT(), name_layer, self.reduction_classpath))(getattr(importlib.import_module(module), name))(config = None)
70
+
62
71
 
63
72
  def setPatchConfig(self, patchSize: Union[list[int], None], overlap: Union[int, None], nb_data_augmentation: int) -> None:
64
73
  if patchSize is not None and overlap is not None:
@@ -70,14 +79,14 @@ class OutDataset(Dataset, NeedDevice, ABC):
70
79
 
71
80
  def setDevice(self, device: torch.device):
72
81
  super().setDevice(device)
73
- transforms_type = ["pre_transforms", "post_transforms", "final_transforms"]
82
+ transforms_type = ["before_reduction_transforms", "after_reduction_transforms", "final_transforms"]
74
83
  for transform_type in [(getattr(self, k)) for k in transforms_type]:
75
84
  if transform_type is not None:
76
85
  for transform in transform_type:
77
86
  transform.setDevice(device)
78
87
 
79
88
  @abstractmethod
80
- def addLayer(self, index: int, index_patch: int, layer: torch.Tensor, dataset: DatasetIter):
89
+ def addLayer(self, index_dataset: int, index_augmentation: int, index_patch: int, layer: torch.Tensor, dataset: DatasetIter):
81
90
  pass
82
91
 
83
92
  def isDone(self, index: int) -> bool:
@@ -115,10 +124,9 @@ class Median(Reduction):
115
124
  class OutSameAsGroupDataset(OutDataset):
116
125
 
117
126
  @config("OutDataset")
118
- def __init__(self, dataset_filename: str = "./Dataset:mha", group: str = "default", sameAsGroup: str = "default", pre_transforms : dict[str, TransformLoader] = {"default:Normalize": TransformLoader()}, post_transforms : dict[str, TransformLoader] = {"default:Normalize": TransformLoader()}, final_transforms : dict[str, TransformLoader] = {"default:Normalize": TransformLoader()}, patchCombine: Union[str, None] = None, reduction: str = "mean", inverse_transform: bool = True) -> None:
119
- super().__init__(dataset_filename, group, pre_transforms, post_transforms, final_transforms, patchCombine)
127
+ def __init__(self, sameAsGroup: str = "default", dataset_filename: str = "default:./Dataset:mha", group: str = "default", before_reduction_transforms : dict[str, TransformLoader] = {"default:Normalize": TransformLoader()}, after_reduction_transforms : dict[str, TransformLoader] = {"default:Normalize": TransformLoader()}, final_transforms : dict[str, TransformLoader] = {"default:Normalize": TransformLoader()}, patchCombine: Union[str, None] = None, reduction: str = "mean", inverse_transform: bool = True) -> None:
128
+ super().__init__(dataset_filename, group, before_reduction_transforms, after_reduction_transforms, final_transforms, patchCombine, reduction)
120
129
  self.group_src, self.group_dest = sameAsGroup.split(":")
121
- self.reduction_classpath = reduction
122
130
  self.inverse_transform = inverse_transform
123
131
 
124
132
  def addLayer(self, index_dataset: int, index_augmentation: int, index_patch: int, layer: torch.Tensor, dataset: DatasetIter):
@@ -135,9 +143,6 @@ class OutSameAsGroupDataset(OutDataset):
135
143
  for i in range(len(input_dataset.patch.getPatch_slices(index_augmentation))):
136
144
  self.attributes[index_dataset][index_augmentation][i] = Attribute(input_dataset.cache_attributes[0])
137
145
 
138
- for transform in self.pre_transforms:
139
- layer = transform(self.names[index_dataset], layer, self.attributes[index_dataset][index_augmentation][index_patch])
140
-
141
146
  if self.inverse_transform:
142
147
  for transform in reversed(dataset.groups_src[self.group_src][self.group_dest].post_transforms):
143
148
  layer = transform.inverse(self.names[index_dataset], layer, self.attributes[index_dataset][index_augmentation][index_patch])
@@ -146,9 +151,7 @@ class OutSameAsGroupDataset(OutDataset):
146
151
 
147
152
  def load(self, name_layer: str, datasets: list[Dataset], groups: dict[str, str]):
148
153
  super().load(name_layer, datasets, groups)
149
- module, name = _getModule(self.reduction_classpath, "konfai.predictor")
150
- self.reduction = config("{}.outsDataset.{}.OutDataset.{}".format(KONFAI_ROOT(), name_layer, self.reduction_classpath))(getattr(importlib.import_module(module), name))(config = None)
151
-
154
+
152
155
  if self.group_src not in groups.keys():
153
156
  raise PredictorError(
154
157
  f"Source group '{self.group_src}' not found. Available groups: {list(groups.keys())}."
@@ -161,7 +164,6 @@ class OutSameAsGroupDataset(OutDataset):
161
164
 
162
165
  def _getOutput(self, index: int, index_augmentation: int, dataset: DatasetIter) -> torch.Tensor:
163
166
  layer = self.output_layer_accumulator[index][index_augmentation].assemble()
164
- name = self.names[index]
165
167
  if index_augmentation > 0:
166
168
 
167
169
  i = 0
@@ -173,53 +175,26 @@ class OutSameAsGroupDataset(OutDataset):
173
175
  break
174
176
  i += dataAugmentations.nb
175
177
 
176
- for transform in self.post_transforms:
177
- layer = transform(name, layer, self.attributes[index][index_augmentation][0])
178
-
179
- if self.inverse_transform:
180
- for transform in reversed(dataset.groups_src[self.group_src][self.group_dest].pre_transforms):
181
- layer = transform.inverse(name, layer, self.attributes[index][index_augmentation][0])
178
+ for transform in self.before_reduction_transforms:
179
+ layer = transform(self.names[index], layer, self.attributes[index][index_augmentation][0])
180
+
182
181
  return layer
183
182
 
184
183
  def getOutput(self, index: int, dataset: DatasetIter) -> torch.Tensor:
185
184
  result = torch.cat([self._getOutput(index, index_augmentation, dataset).unsqueeze(0) for index_augmentation in self.output_layer_accumulator[index].keys()], dim=0)
186
- name = self.names[index]
187
185
  self.output_layer_accumulator.pop(index)
188
186
  result = self.reduction(result.float()).to(result.dtype)
187
+ for transform in self.after_reduction_transforms:
188
+ result = transform(self.names[index], result, self.attributes[index][0][0])
189
189
 
190
+ if self.inverse_transform:
191
+ for transform in reversed(dataset.groups_src[self.group_src][self.group_dest].pre_transforms):
192
+ result = transform.inverse(self.names[index], result, self.attributes[index][0][0])
193
+
190
194
  for transform in self.final_transforms:
191
- result = transform(name, result, self.attributes[index][0][0])
195
+ result = transform(self.names[index], result, self.attributes[index][0][0])
192
196
  return result
193
197
 
194
- class OutLayerDataset(OutDataset):
195
-
196
- @config("OutDataset")
197
- def __init__(self, dataset_filename: str = "Dataset.h5", group: str = "default", overlap : Union[list[int], None] = None, pre_transforms : dict[str, TransformLoader] = {"default:Normalize": TransformLoader()}, post_transforms : dict[str, TransformLoader] = {"default:Normalize": TransformLoader()}, final_transforms : dict[str, TransformLoader] = {"default:Normalize": TransformLoader()}, patchCombine: Union[str, None] = None) -> None:
198
- super().__init__(dataset_filename, group, pre_transforms, post_transforms, final_transforms, patchCombine)
199
- self.overlap = overlap
200
-
201
- def addLayer(self, index: int, index_patch: int, layer: torch.Tensor, dataset: DatasetIter):
202
- if index not in self.output_layer_accumulator:
203
- group = list(dataset.groups.keys())[0]
204
- patch_slices = get_patch_slices_from_nb_patch_per_dim(list(layer.shape[2:]), dataset.getDatasetFromIndex(group, index).patch.nb_patch_per_dim, self.overlap)
205
- self.output_layer_accumulator[index] = Accumulator(patch_slices, self.patchCombine, batch=False)
206
- self.attributes[index] = Attribute()
207
- self.names[index] = dataset.getDatasetFromIndex(group, index).name
208
-
209
-
210
- for transform in self.pre_transforms:
211
- layer = transform(layer, self.attributes[index])
212
- self.output_layer_accumulator[index].addLayer(index_patch, layer)
213
-
214
- def getOutput(self, index: int, dataset: DatasetIter) -> torch.Tensor:
215
- layer = self.output_layer_accumulator[index].assemble()
216
- name = self.names[index]
217
- for transform in self.post_transforms:
218
- layer = transform(name, layer, self.attributes[index])
219
-
220
- self.output_layer_accumulator.pop(index)
221
- return layer
222
-
223
198
  class OutDatasetLoader():
224
199
 
225
200
  @config("OutDataset")
@@ -327,7 +302,7 @@ class ModelComposite(Network):
327
302
  for module_outputs in result.values():
328
303
  for key, tensor in module_outputs:
329
304
  aggregated[key].append(tensor)
330
-
305
+
331
306
  final_outputs = []
332
307
  for key, tensors in aggregated.items():
333
308
  final_outputs.append((key, self.combine(torch.stack(tensors, dim=0))))
@@ -425,9 +400,14 @@ class Predictor(DistributedObject):
425
400
  "Available modules: {}".format(modules),
426
401
  "Please check that the name matches exactly a submodule or output of your model architecture."
427
402
  )
403
+
428
404
  module, name = _getModule(self.combine_classpath, "konfai.predictor")
429
- combine = config("{}.{}".format(KONFAI_ROOT(), self.combine_classpath))(getattr(importlib.import_module(module), name))(config = None)
405
+ if module == "konfai.predictor":
406
+ combine = getattr(importlib.import_module(module), name)()
407
+ else:
408
+ combine = config("{}.{}".format(KONFAI_ROOT(), self.combine_classpath))(getattr(importlib.import_module(module), name))(config = None)
430
409
 
410
+
431
411
  self.modelComposite = ModelComposite(self.model, len(MODEL().split(":")), combine)
432
412
  self.modelComposite.load(self._load())
433
413
 
konfai/utils/utils.py CHANGED
@@ -20,6 +20,11 @@ import torch.nn.functional as F
20
20
  import sys
21
21
  import re
22
22
 
23
+ import requests
24
+ from tqdm import tqdm
25
+ import importlib
26
+ from pathlib import Path
27
+ import shutil
23
28
 
24
29
  def description(model, modelEMA = None, showMemory: bool = True, train: bool = True) -> str:
25
30
  values_desc = lambda weights, values: " ".join(["{}({:.2f}) : {:.6f}".format(name.split(":")[-1], weight, value) for (name, value), weight in zip(values.items(), weights.values())])
@@ -35,11 +40,11 @@ def description(model, modelEMA = None, showMemory: bool = True, train: bool = T
35
40
  def _getModule(classpath : str, type : str) -> tuple[str, str]:
36
41
  if len(classpath.split(":")) > 1:
37
42
  module = ".".join(classpath.split(":")[:-1])
38
- name = classpath.split(":")[-1]
43
+ name = classpath.split(":")[-1]
39
44
  else:
40
45
  module = type+("." if len(classpath.split(".")) > 2 else "")+".".join(classpath.split(".")[:-1])
41
46
  name = classpath.split(".")[-1]
42
- return module, name
47
+ return module, name.split("/")[0]
43
48
 
44
49
  def cpuInfo() -> str:
45
50
  return "CPU ({:.2f} %)".format(psutil.cpu_percent(interval=0.5))
@@ -420,6 +425,8 @@ def setup(parser: argparse.ArgumentParser) -> DistributedObject:
420
425
 
421
426
  os.environ["CUDA_VISIBLE_DEVICES"] = config["gpu"]
422
427
  os.environ["KONFAI_NB_CORES"] = config["cpu"]
428
+
429
+ os.environ["KONFAI_WORKERS"] = str(config["num_workers"])
423
430
  os.environ["KONFAI_MODELS_DIRECTORY"] = config["MODELS_DIRECTORY"]
424
431
  os.environ["KONFAI_CHECKPOINTS_DIRECTORY"] = config["CHECKPOINTS_DIRECTORY"]
425
432
  os.environ["KONFAI_PREDICTIONS_DIRECTORY"] = config["PREDICTIONS_DIRECTORY"]
@@ -536,6 +543,37 @@ def _resample_affine(data: torch.Tensor, matrix: torch.Tensor):
536
543
  return F.grid_sample(data.unsqueeze(0).type(torch.float32), F.affine_grid(matrix[:, :-1,...].type(torch.float32), [1]+list(data.shape), align_corners=True), align_corners=True, mode=mode, padding_mode="reflection").squeeze(0).type(data.dtype)
537
544
 
538
545
 
546
+
547
+ def download_url(model_name: str, url: str) -> str:
548
+ spec = importlib.util.find_spec("konfai")
549
+ base_path = Path(spec.submodule_search_locations[0]) / "metric" / "models"
550
+ subdirs = Path(model_name).parent
551
+ model_dir = base_path / subdirs
552
+ model_dir.mkdir(exist_ok=True)
553
+ filetmp = model_dir / ("tmp_"+str(Path(model_name).name))
554
+ file = model_dir / Path(model_name).name
555
+ if file.exists():
556
+ return str(file)
557
+
558
+ try:
559
+ print(f"[FOCUS] Downloading {model_name} to {file}")
560
+ with requests.get(url+model_name, stream=True) as r:
561
+ r.raise_for_status()
562
+ total = int(r.headers.get('content-length', 0))
563
+ with open(filetmp, 'wb') as f:
564
+ with tqdm(total=total, unit='B', unit_scale=True, desc=f"Downloading {model_name}") as pbar:
565
+ for chunk in r.iter_content(chunk_size=8192):
566
+ f.write(chunk)
567
+ pbar.update(len(chunk))
568
+ shutil.copy2(filetmp, file)
569
+ print("Download finished.")
570
+ except Exception as e:
571
+ raise e
572
+ finally:
573
+ if filetmp.exists():
574
+ os.remove(filetmp)
575
+ return str(file)
576
+
539
577
  SUPPORTED_EXTENSIONS = [
540
578
  "mha", "mhd", # MetaImage
541
579
  "nii", "nii.gz", # NIfTI
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: konfai
3
- Version: 1.1.6
3
+ Version: 1.1.8
4
4
  Summary: Modular and configurable Deep Learning framework with YAML and PyTorch
5
5
  Author-email: Valentin Boussot <boussot.v@gmail.com>
6
6
  License-Expression: Apache-2.0
@@ -0,0 +1,39 @@
1
+ konfai/__init__.py,sha256=YXG-wpSEXWs6Jt3BDI77V4r89gEUNX-6lxW9btj5VYI,851
2
+ konfai/evaluator.py,sha256=WM78NGydV0iqKElahr-WpOCZLEJXHjjPq-LS-gi23rk,8401
3
+ konfai/main.py,sha256=kr7Iie_f67NF6G3dAAj9G6Z9dhn9RzbdLYpzy2WvIh8,2573
4
+ konfai/predictor.py,sha256=ih0GVkYEhIxvolDdQ-Cr9mWTNvtIGyGadtrT_RAkzys,23052
5
+ konfai/trainer.py,sha256=Edi8l8OOfCewYM-Cd5C5rCqCaprvlfxzohd4iLkK5u0,20632
6
+ konfai/data/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
7
+ konfai/data/augmentation.py,sha256=mFVMpbJ8WBKGbMILdmTZYBA8k7kRDQVPOEy1A9t5QP4,32281
8
+ konfai/data/data_manager.py,sha256=FHRGiSg5HcXmlMWntdNgv0_bty_gwaDUBWYt5LSw86k,29020
9
+ konfai/data/patching.py,sha256=zAm6jjUW--lsqTBlDFICVlj7O_QOlSxStFAHS9S9H8I,14753
10
+ konfai/data/transform.py,sha256=RSVCjHshw74yk4QV6d3lPRhqkwP77T08rI3YkNV6nTQ,26513
11
+ konfai/metric/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
12
+ konfai/metric/measure.py,sha256=S65WGBRYMoalkwI_Le3C6K0tQmT4Qft82nUTBwhpvFU,26907
13
+ konfai/metric/schedulers.py,sha256=VPp7zEwD0AtQz51XG0TlutD_NrsTZs4fstC5h8A8f8U,1309
14
+ konfai/models/classification/convNeXt.py,sha256=hZQ_9I1lJW7DX8QnoeZ9L1br-98apV9VXGrsTAN25ds,9261
15
+ konfai/models/classification/resnet.py,sha256=eBoS_zNczfa1EnECKKLr0Ow26ekR_4W5eji6p9cPfHk,7978
16
+ konfai/models/generation/cStyleGan.py,sha256=7D8zZveDEZapFeaaDTe3wVhuDCCHLqq6cpXtl2-QaJA,8059
17
+ konfai/models/generation/ddpm.py,sha256=jXb0eOU3i_gMHvj9pawVAWQDjMGl6SPfCc5m2Jzdrik,13175
18
+ konfai/models/generation/diffusionGan.py,sha256=ZFKdRHvlajEPyw9_HCLo0Q92iChCtZd2dvi2nEF_tBI,33218
19
+ konfai/models/generation/gan.py,sha256=RzpGNu8BlBVDCxFR5CCmEFYUzVBs2YrDl7trIos3ssw,7861
20
+ konfai/models/generation/vae.py,sha256=zH8qk04z2lXDhXAVxTHiRIVMfRi3brB61lHGmEsE3kM,4675
21
+ konfai/models/registration/registration.py,sha256=EAE3w8aic2fPWiJz0ilqrs2kCGUQD6NWvysVfHXxA_g,6329
22
+ konfai/models/representation/representation.py,sha256=TiYcBBqZYySpwsRlnnBQh0QVW29Rcvb9GUjsqnCKKLM,2689
23
+ konfai/models/segmentation/NestedUNet.py,sha256=hDSE7BJ17IqaiHWAD5zlVG7G_KvQzuQmVnAVsiYVE6E,10248
24
+ konfai/models/segmentation/UNet.py,sha256=BktCRfAcCDtvGCw8wGfyZvBtT4G0Oy8teIcVgDFOurk,4078
25
+ konfai/network/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
26
+ konfai/network/blocks.py,sha256=C_dOLmXovxANWCx7P439FzR_95Zisy2I1F7FEwwz7AE,14412
27
+ konfai/network/network.py,sha256=LHeA7HtsVYO7BJu2_kqh23q2GIANn5ZSa4LhKMt7dJg,48642
28
+ konfai/utils/ITK.py,sha256=OxTieDNNYHGkn7zxJsAG-6ecRG1VYMvn1dlBbBe1DOs,13955
29
+ konfai/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
30
+ konfai/utils/config.py,sha256=f7o83ix5_oNbr2pki-Czqr-yHi-8n92ZL64nlo0XGwA,12514
31
+ konfai/utils/dataset.py,sha256=6ZzevdhJ7e5zlXATAVwSh9O6acKXM7gYNxkMAa5DrmM,36351
32
+ konfai/utils/registration.py,sha256=v1srEBOcgDnHrx0YtsK6bcj0yCMH7wNeaQ3wC7gEvOw,8898
33
+ konfai/utils/utils.py,sha256=mQQ6FB0Jw7Odg5GxYeTApR6lvFhXn_iz-GVGZRngGQA,24934
34
+ konfai-1.1.8.dist-info/licenses/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
35
+ konfai-1.1.8.dist-info/METADATA,sha256=nHfQDnRa5XjIHXCoVSRY7JX7pP-kSoaWnb0Nt1IwQaU,2515
36
+ konfai-1.1.8.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
37
+ konfai-1.1.8.dist-info/entry_points.txt,sha256=fG82HRN5-g39ACSOCtij_I3N6EHxfYnMR0D7TI_8pW8,81
38
+ konfai-1.1.8.dist-info/top_level.txt,sha256=xF470dkIlFoFqTZEOlRehKJr4WU_8OKGXrJqYm9vWKs,7
39
+ konfai-1.1.8.dist-info/RECORD,,
@@ -1,39 +0,0 @@
1
- konfai/__init__.py,sha256=YXG-wpSEXWs6Jt3BDI77V4r89gEUNX-6lxW9btj5VYI,851
2
- konfai/evaluator.py,sha256=WM78NGydV0iqKElahr-WpOCZLEJXHjjPq-LS-gi23rk,8401
3
- konfai/main.py,sha256=kr7Iie_f67NF6G3dAAj9G6Z9dhn9RzbdLYpzy2WvIh8,2573
4
- konfai/predictor.py,sha256=kqAF3P4BAOZvjHtBAfv2M4-yonqAOcnIV7APgxdRsww,24283
5
- konfai/trainer.py,sha256=Edi8l8OOfCewYM-Cd5C5rCqCaprvlfxzohd4iLkK5u0,20632
6
- konfai/data/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
7
- konfai/data/augmentation.py,sha256=SD8m0uLz5aQYtjAjns0H04WgrDWSN6nd7lWlNnT2fi8,32300
8
- konfai/data/data_manager.py,sha256=eYgFJjHr9HEpRLTtLabUZLPH4c82OQCiGuYQ84ktWCE,30076
9
- konfai/data/patching.py,sha256=zs3T4yTV8_iCFrqO21bo6GhwTywoTxIL31IAi-jiJDQ,15478
10
- konfai/data/transform.py,sha256=LfdsNUE5_6mIGrVzI6B2N2WO-jaNzFmuMxhP1Y0Fbwk,26538
11
- konfai/metric/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
12
- konfai/metric/measure.py,sha256=j-rEsNgVMPjYFWtahYEaiMSDnyD5Dv8edx5KEt2Rj2U,22797
13
- konfai/metric/schedulers.py,sha256=eZIlJMOQH8AV48F5hiRFbmONmoY4hHMujvS3qgFYXbw,1771
14
- konfai/models/classification/convNeXt.py,sha256=Phj1hO8TCItVhBXoFXQcIkA85DZxurGLyHIPWBfXJ0Y,9243
15
- konfai/models/classification/resnet.py,sha256=t8KJEgGudWBpGJM9YS1lH_5eX0-wGbK7ZW5uZW214eM,7958
16
- konfai/models/generation/cStyleGan.py,sha256=PwaVQX9h5u_8YbbxA7sz7inzIEoMadinuo0kFFNqIn0,8042
17
- konfai/models/generation/ddpm.py,sha256=awvuRo-vk8M80N93NWF4i0-WWfaycBxSOmdYJNJv2Ys,13153
18
- konfai/models/generation/diffusionGan.py,sha256=KnJyV-tx4CiE_ag-5IXwiYLCuC2yFHX16k2CtASdecg,33199
19
- konfai/models/generation/gan.py,sha256=-GoKxHm3W9NdD4U77UcJrG5TfOZ3NWFUZG663kt2XPo,7854
20
- konfai/models/generation/vae.py,sha256=_3JYVT2ojZ0P98tYcD2ny7a-gWVUmnByLDhY7i-n_4g,4719
21
- konfai/models/registration/registration.py,sha256=18EiWt4RJIXLyFtqU-kHjV1sMnQRm9mxAA6_-2B1YqI,6313
22
- konfai/models/representation/representation.py,sha256=RwQYoxtdph440-t_ZLelykl0hkUAD1zdspQaLkgxb-0,2677
23
- konfai/models/segmentation/NestedUNet.py,sha256=D2qChm5SSYqV7FayCe9eT260vxckxRfBOCS1US6xcnw,10184
24
- konfai/models/segmentation/UNet.py,sha256=TKPmhHEnlOYfnUF2Qof3VSETl5nEIh9h0SkblBRdbbg,4036
25
- konfai/network/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
26
- konfai/network/blocks.py,sha256=P7mEuuE1B0HRSgXRCeLxZvzYGKLskHD33hskpdkjIPs,14370
27
- konfai/network/network.py,sha256=zszV7z6tyZpZtWb9SHXqH1pJlvdy9YB4yrf7Muv_HiM,48936
28
- konfai/utils/ITK.py,sha256=OxTieDNNYHGkn7zxJsAG-6ecRG1VYMvn1dlBbBe1DOs,13955
29
- konfai/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
30
- konfai/utils/config.py,sha256=f7o83ix5_oNbr2pki-Czqr-yHi-8n92ZL64nlo0XGwA,12514
31
- konfai/utils/dataset.py,sha256=6ZzevdhJ7e5zlXATAVwSh9O6acKXM7gYNxkMAa5DrmM,36351
32
- konfai/utils/registration.py,sha256=v1srEBOcgDnHrx0YtsK6bcj0yCMH7wNeaQ3wC7gEvOw,8898
33
- konfai/utils/utils.py,sha256=1M46MYSZuPrbH5ihu8WZHaQNfqmvfeVsH-mAk0ED5TI,23575
34
- konfai-1.1.6.dist-info/licenses/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
35
- konfai-1.1.6.dist-info/METADATA,sha256=wU8CbR5KO85P9dY3asD_ylG5rMCFIAQmNL0ifTDXA8g,2515
36
- konfai-1.1.6.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
37
- konfai-1.1.6.dist-info/entry_points.txt,sha256=fG82HRN5-g39ACSOCtij_I3N6EHxfYnMR0D7TI_8pW8,81
38
- konfai-1.1.6.dist-info/top_level.txt,sha256=xF470dkIlFoFqTZEOlRehKJr4WU_8OKGXrJqYm9vWKs,7
39
- konfai-1.1.6.dist-info/RECORD,,
File without changes