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.
- autoencodix/__init__.py +27 -0
- autoencodix/base/.ipynb_checkpoints/_base_pipeline-checkpoint.py +1274 -0
- autoencodix/base/.ipynb_checkpoints/_base_trainer-checkpoint.py +247 -0
- autoencodix/base/__init__.py +21 -0
- autoencodix/base/_base_autoencoder.py +138 -0
- autoencodix/base/_base_dataset.py +103 -0
- autoencodix/base/_base_evaluator.py +34 -0
- autoencodix/base/_base_loss.py +311 -0
- autoencodix/base/_base_pipeline.py +1355 -0
- autoencodix/base/_base_predictor.py +6 -0
- autoencodix/base/_base_preprocessor.py +1033 -0
- autoencodix/base/_base_trainer.py +259 -0
- autoencodix/base/_base_visualizer.py +578 -0
- autoencodix/base/sampleconfig.yaml +132 -0
- autoencodix/configs/__init__.py +21 -0
- autoencodix/configs/default_config.py +652 -0
- autoencodix/configs/disentanglix_config.py +15 -0
- autoencodix/configs/maskix_config.py +39 -0
- autoencodix/configs/ontix_config.py +35 -0
- autoencodix/configs/stackix_config.py +33 -0
- autoencodix/configs/vanillix_config.py +18 -0
- autoencodix/configs/varix_config.py +15 -0
- autoencodix/configs/xmodalix_config.py +43 -0
- autoencodix/disentanglix.py +72 -0
- autoencodix/evaluate/.ipynb_checkpoints/evaluate-checkpoint.py +532 -0
- autoencodix/evaluate/__init__.py +4 -0
- autoencodix/evaluate/_general_evaluator.py +730 -0
- autoencodix/evaluate/_xmodalix_evaluator.py +376 -0
- autoencodix/imagix.py +76 -0
- autoencodix/losses/disentanglix_loss.py +215 -0
- autoencodix/losses/maskix_loss.py +94 -0
- autoencodix/losses/vanillix_loss.py +28 -0
- autoencodix/losses/varix_loss.py +102 -0
- autoencodix/losses/xmodal_loss.py +304 -0
- autoencodix/maskix.py +108 -0
- autoencodix/modeling/.ipynb_checkpoints/__init__-checkpoint.py +16 -0
- autoencodix/modeling/.ipynb_checkpoints/_captum_forward-checkpoint.py +16 -0
- autoencodix/modeling/__init__.py +20 -0
- autoencodix/modeling/_captum_forward.py +20 -0
- autoencodix/modeling/_classifier.py +45 -0
- autoencodix/modeling/_imagevae_architecture.py +296 -0
- autoencodix/modeling/_imgfast_architecture.py +288 -0
- autoencodix/modeling/_layer_factory.py +71 -0
- autoencodix/modeling/_maskix_architecture.py +190 -0
- autoencodix/modeling/_ontix_architecture.py +305 -0
- autoencodix/modeling/_vanillix_architecture.py +136 -0
- autoencodix/modeling/_varix_architecture.py +192 -0
- autoencodix/notebooks/__init__.py +0 -0
- autoencodix/ontix.py +136 -0
- autoencodix/py.typed +0 -0
- autoencodix/stackix.py +122 -0
- autoencodix/trainers/__init__.py +6 -0
- autoencodix/trainers/_general_trainer.py +525 -0
- autoencodix/trainers/_maskix_trainer.py +116 -0
- autoencodix/trainers/_ontix_trainer.py +77 -0
- autoencodix/trainers/_stackix_orchestrator.py +522 -0
- autoencodix/trainers/_stackix_trainer.py +209 -0
- autoencodix/trainers/_xmodal_trainer.py +1006 -0
- autoencodix/utils/.ipynb_checkpoints/_explainer-checkpoint.py +118 -0
- autoencodix/utils/.ipynb_checkpoints/_model_output-checkpoint.py +30 -0
- autoencodix/utils/.ipynb_checkpoints/_utils-checkpoint.py +626 -0
- autoencodix/utils/.ipynb_checkpoints/adata_converter-checkpoint.py +99 -0
- autoencodix/utils/.ipynb_checkpoints/feature_importance-checkpoint.py +823 -0
- autoencodix/utils/__init__.py +22 -0
- autoencodix/utils/_annealer.py +193 -0
- autoencodix/utils/_bulkreader.py +232 -0
- autoencodix/utils/_explainer.py +246 -0
- autoencodix/utils/_imgreader.py +404 -0
- autoencodix/utils/_internals.py +23 -0
- autoencodix/utils/_llm_explainer.py +318 -0
- autoencodix/utils/_losses.py +20 -0
- autoencodix/utils/_model_output.py +30 -0
- autoencodix/utils/_result.py +393 -0
- autoencodix/utils/_screader.py +76 -0
- autoencodix/utils/_traindynamics.py +187 -0
- autoencodix/utils/_utils.py +690 -0
- autoencodix/utils/adata_converter.py +111 -0
- autoencodix/utils/example_data.py +398 -0
- autoencodix/utils/feature_importance.py +829 -0
- autoencodix/utils/prompts.py +21 -0
- autoencodix/vanillix.py +141 -0
- autoencodix/varix.py +80 -0
- autoencodix/visualize/__init__.py +5 -0
- autoencodix/visualize/_general_visualizer.py +913 -0
- autoencodix/visualize/_imagix_visualizer.py +111 -0
- autoencodix/visualize/_xmodal_visualizer.py +841 -0
- autoencodix/visualize/visualize.py +1214 -0
- autoencodix/xmodalix.py +318 -0
- autoencodix-0.2.0.dist-info/METADATA +143 -0
- autoencodix-0.2.0.dist-info/RECORD +91 -0
- 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()
|