autoencodix 0.2.0__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 autoencodix might be problematic. Click here for more details.

Files changed (91) hide show
  1. autoencodix/__init__.py +27 -0
  2. autoencodix/base/.ipynb_checkpoints/_base_pipeline-checkpoint.py +1274 -0
  3. autoencodix/base/.ipynb_checkpoints/_base_trainer-checkpoint.py +247 -0
  4. autoencodix/base/__init__.py +21 -0
  5. autoencodix/base/_base_autoencoder.py +138 -0
  6. autoencodix/base/_base_dataset.py +103 -0
  7. autoencodix/base/_base_evaluator.py +34 -0
  8. autoencodix/base/_base_loss.py +311 -0
  9. autoencodix/base/_base_pipeline.py +1355 -0
  10. autoencodix/base/_base_predictor.py +6 -0
  11. autoencodix/base/_base_preprocessor.py +1033 -0
  12. autoencodix/base/_base_trainer.py +259 -0
  13. autoencodix/base/_base_visualizer.py +578 -0
  14. autoencodix/base/sampleconfig.yaml +132 -0
  15. autoencodix/configs/__init__.py +21 -0
  16. autoencodix/configs/default_config.py +652 -0
  17. autoencodix/configs/disentanglix_config.py +15 -0
  18. autoencodix/configs/maskix_config.py +39 -0
  19. autoencodix/configs/ontix_config.py +35 -0
  20. autoencodix/configs/stackix_config.py +33 -0
  21. autoencodix/configs/vanillix_config.py +18 -0
  22. autoencodix/configs/varix_config.py +15 -0
  23. autoencodix/configs/xmodalix_config.py +43 -0
  24. autoencodix/disentanglix.py +72 -0
  25. autoencodix/evaluate/.ipynb_checkpoints/evaluate-checkpoint.py +532 -0
  26. autoencodix/evaluate/__init__.py +4 -0
  27. autoencodix/evaluate/_general_evaluator.py +730 -0
  28. autoencodix/evaluate/_xmodalix_evaluator.py +376 -0
  29. autoencodix/imagix.py +76 -0
  30. autoencodix/losses/disentanglix_loss.py +215 -0
  31. autoencodix/losses/maskix_loss.py +94 -0
  32. autoencodix/losses/vanillix_loss.py +28 -0
  33. autoencodix/losses/varix_loss.py +102 -0
  34. autoencodix/losses/xmodal_loss.py +304 -0
  35. autoencodix/maskix.py +108 -0
  36. autoencodix/modeling/.ipynb_checkpoints/__init__-checkpoint.py +16 -0
  37. autoencodix/modeling/.ipynb_checkpoints/_captum_forward-checkpoint.py +16 -0
  38. autoencodix/modeling/__init__.py +20 -0
  39. autoencodix/modeling/_captum_forward.py +20 -0
  40. autoencodix/modeling/_classifier.py +45 -0
  41. autoencodix/modeling/_imagevae_architecture.py +296 -0
  42. autoencodix/modeling/_imgfast_architecture.py +288 -0
  43. autoencodix/modeling/_layer_factory.py +71 -0
  44. autoencodix/modeling/_maskix_architecture.py +190 -0
  45. autoencodix/modeling/_ontix_architecture.py +305 -0
  46. autoencodix/modeling/_vanillix_architecture.py +136 -0
  47. autoencodix/modeling/_varix_architecture.py +192 -0
  48. autoencodix/notebooks/__init__.py +0 -0
  49. autoencodix/ontix.py +136 -0
  50. autoencodix/py.typed +0 -0
  51. autoencodix/stackix.py +122 -0
  52. autoencodix/trainers/__init__.py +6 -0
  53. autoencodix/trainers/_general_trainer.py +525 -0
  54. autoencodix/trainers/_maskix_trainer.py +116 -0
  55. autoencodix/trainers/_ontix_trainer.py +77 -0
  56. autoencodix/trainers/_stackix_orchestrator.py +522 -0
  57. autoencodix/trainers/_stackix_trainer.py +209 -0
  58. autoencodix/trainers/_xmodal_trainer.py +1006 -0
  59. autoencodix/utils/.ipynb_checkpoints/_explainer-checkpoint.py +118 -0
  60. autoencodix/utils/.ipynb_checkpoints/_model_output-checkpoint.py +30 -0
  61. autoencodix/utils/.ipynb_checkpoints/_utils-checkpoint.py +626 -0
  62. autoencodix/utils/.ipynb_checkpoints/adata_converter-checkpoint.py +99 -0
  63. autoencodix/utils/.ipynb_checkpoints/feature_importance-checkpoint.py +823 -0
  64. autoencodix/utils/__init__.py +22 -0
  65. autoencodix/utils/_annealer.py +193 -0
  66. autoencodix/utils/_bulkreader.py +232 -0
  67. autoencodix/utils/_explainer.py +246 -0
  68. autoencodix/utils/_imgreader.py +404 -0
  69. autoencodix/utils/_internals.py +23 -0
  70. autoencodix/utils/_llm_explainer.py +318 -0
  71. autoencodix/utils/_losses.py +20 -0
  72. autoencodix/utils/_model_output.py +30 -0
  73. autoencodix/utils/_result.py +393 -0
  74. autoencodix/utils/_screader.py +76 -0
  75. autoencodix/utils/_traindynamics.py +187 -0
  76. autoencodix/utils/_utils.py +690 -0
  77. autoencodix/utils/adata_converter.py +111 -0
  78. autoencodix/utils/example_data.py +398 -0
  79. autoencodix/utils/feature_importance.py +829 -0
  80. autoencodix/utils/prompts.py +21 -0
  81. autoencodix/vanillix.py +141 -0
  82. autoencodix/varix.py +80 -0
  83. autoencodix/visualize/__init__.py +5 -0
  84. autoencodix/visualize/_general_visualizer.py +913 -0
  85. autoencodix/visualize/_imagix_visualizer.py +111 -0
  86. autoencodix/visualize/_xmodal_visualizer.py +841 -0
  87. autoencodix/visualize/visualize.py +1214 -0
  88. autoencodix/xmodalix.py +318 -0
  89. autoencodix-0.2.0.dist-info/METADATA +143 -0
  90. autoencodix-0.2.0.dist-info/RECORD +91 -0
  91. autoencodix-0.2.0.dist-info/WHEEL +4 -0
@@ -0,0 +1,111 @@
1
+ from dataclasses import field
2
+
3
+ import matplotlib.pyplot as plt
4
+
5
+
6
+ from typing import Any, Dict, no_type_check
7
+ from autoencodix.visualize._general_visualizer import GeneralVisualizer
8
+ from autoencodix.utils._result import Result
9
+ from autoencodix.utils._utils import nested_dict, get_dataset
10
+ from autoencodix.configs.default_config import DefaultConfig
11
+
12
+
13
+ class ImagixVisualizer(GeneralVisualizer):
14
+ plots: Dict[str, Any] = field(
15
+ default_factory=nested_dict
16
+ ) ## Nested dictionary of plots as figure handles
17
+
18
+ def __init__(self):
19
+ self.plots = nested_dict()
20
+
21
+ def __setitem__(self, key, elem):
22
+ self.plots[key] = elem
23
+
24
+ def visualize(self, result: Result, config: DefaultConfig) -> Result:
25
+ ## Make Model Weights plot
26
+ ## TODO needs to be adjusted for Imagix ##
27
+ ## Plot Model weights for each sub-VAE ##
28
+ # self.plots["ModelWeights"] = self._plot_model_weights(model=result.model)
29
+
30
+ ## Make long format of losses
31
+ loss_df_melt = self._make_loss_format(result=result, config=config)
32
+
33
+ ## Make plot loss absolute
34
+ self.plots["loss_absolute"] = self._make_loss_plot(
35
+ df_plot=loss_df_melt, plot_type="absolute"
36
+ )
37
+ ## Make plot loss relative
38
+ self.plots["loss_relative"] = self._make_loss_plot(
39
+ df_plot=loss_df_melt, plot_type="relative"
40
+ )
41
+
42
+ return result
43
+
44
+ ## Latent space visualization via GeneralVisualizer
45
+ # def show_latent_space(
46
+ # self,
47
+ # result: Result,
48
+ # plot_type: str = "2D-scatter",
49
+ # labels: Optional[Union[list, pd.Series, None]] = None,
50
+ # param: Optional[Union[list, str]] = None,
51
+ # import pandas as pd
52
+ # epoch: Optional[Union[int, None]] = None,
53
+ # split: str = "all",
54
+ # ) -> None:
55
+
56
+ def show_weights(self) -> None:
57
+ ## TODO
58
+ raise NotImplementedError(
59
+ "Weight visualization for X-Modalix is not implemented."
60
+ )
61
+
62
+ @no_type_check
63
+ def show_image_recon_grid(self, result: Result, n_samples: int = 3) -> None:
64
+ ## TODO add similar labels/param logic from other visualizations
65
+ dataset = result.datasets
66
+
67
+ ## Overwrite original datasets with new_datasets if available after predict with other data
68
+ if dataset is None:
69
+ dataset = DatasetContainer()
70
+
71
+ if bool(result.new_datasets.test):
72
+ dataset.test = result.new_datasets.test
73
+
74
+ if dataset.test is None:
75
+ raise ValueError("test of dataset is None")
76
+ meta = dataset.test.metadata
77
+ sample_ids = meta.sample(n=n_samples, random_state=42).index
78
+
79
+ all_sample_order = dataset.test.sample_ids
80
+ indices = [
81
+ all_sample_order.index(sid)
82
+ for sid in sample_ids
83
+ if sid in all_sample_order # ty: ignore
84
+ ]
85
+
86
+ fig, axes = plt.subplots(
87
+ ncols=n_samples, # Number of classes
88
+ nrows=2, # Original, Reconstructed
89
+ figsize=(n_samples * 4, 2 * 4),
90
+ )
91
+
92
+ for r in range(2):
93
+ for c in range(n_samples):
94
+ if r == 0:
95
+ ## Original image
96
+ axes[r, c].imshow(dataset.test.raw_data[indices[c]].img.squeeze())
97
+ axes[r, c].set_title(f"Original: {sample_ids[c]}")
98
+ axes[r, c].axis("off")
99
+ if r == 1:
100
+ ## Reconstructed image
101
+ axes[r, c].imshow(
102
+ result.reconstructions.get(split="test", epoch=-1)[
103
+ indices[c]
104
+ ].squeeze()
105
+ )
106
+ axes[r, c].set_title(f"Reconstructed: {sample_ids[c]}")
107
+ axes[r, c].axis("off")
108
+
109
+ self.plots["Image_recon_grid"] = fig
110
+ # show_figure(fig)
111
+ plt.show()