AOT-biomaps 2.9.220__tar.gz → 2.9.222__tar.gz
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 AOT-biomaps might be problematic. Click here for more details.
- {aot_biomaps-2.9.220 → aot_biomaps-2.9.222}/AOT_biomaps/AOT_Recon/AlgebraicRecon.py +98 -5
- {aot_biomaps-2.9.220 → aot_biomaps-2.9.222}/AOT_biomaps/AOT_Recon/BayesianRecon.py +1 -1
- {aot_biomaps-2.9.220 → aot_biomaps-2.9.222}/AOT_biomaps/AOT_Recon/PrimalDualRecon.py +1 -1
- {aot_biomaps-2.9.220 → aot_biomaps-2.9.222}/AOT_biomaps/__init__.py +3 -1
- {aot_biomaps-2.9.220 → aot_biomaps-2.9.222}/AOT_biomaps.egg-info/PKG-INFO +1 -1
- {aot_biomaps-2.9.220 → aot_biomaps-2.9.222}/PKG-INFO +1 -1
- {aot_biomaps-2.9.220 → aot_biomaps-2.9.222}/setup.py +3 -1
- {aot_biomaps-2.9.220 → aot_biomaps-2.9.222}/AOT_biomaps/AOT_Acoustic/AcousticEnums.py +0 -0
- {aot_biomaps-2.9.220 → aot_biomaps-2.9.222}/AOT_biomaps/AOT_Acoustic/AcousticTools.py +0 -0
- {aot_biomaps-2.9.220 → aot_biomaps-2.9.222}/AOT_biomaps/AOT_Acoustic/FocusedWave.py +0 -0
- {aot_biomaps-2.9.220 → aot_biomaps-2.9.222}/AOT_biomaps/AOT_Acoustic/IrregularWave.py +0 -0
- {aot_biomaps-2.9.220 → aot_biomaps-2.9.222}/AOT_biomaps/AOT_Acoustic/PlaneWave.py +0 -0
- {aot_biomaps-2.9.220 → aot_biomaps-2.9.222}/AOT_biomaps/AOT_Acoustic/StructuredWave.py +0 -0
- {aot_biomaps-2.9.220 → aot_biomaps-2.9.222}/AOT_biomaps/AOT_Acoustic/__init__.py +0 -0
- {aot_biomaps-2.9.220 → aot_biomaps-2.9.222}/AOT_biomaps/AOT_Acoustic/_mainAcoustic.py +0 -0
- {aot_biomaps-2.9.220 → aot_biomaps-2.9.222}/AOT_biomaps/AOT_Experiment/Focus.py +0 -0
- {aot_biomaps-2.9.220 → aot_biomaps-2.9.222}/AOT_biomaps/AOT_Experiment/Tomography.py +0 -0
- {aot_biomaps-2.9.220 → aot_biomaps-2.9.222}/AOT_biomaps/AOT_Experiment/__init__.py +0 -0
- {aot_biomaps-2.9.220 → aot_biomaps-2.9.222}/AOT_biomaps/AOT_Experiment/_mainExperiment.py +0 -0
- {aot_biomaps-2.9.220 → aot_biomaps-2.9.222}/AOT_biomaps/AOT_Optic/Absorber.py +0 -0
- {aot_biomaps-2.9.220 → aot_biomaps-2.9.222}/AOT_biomaps/AOT_Optic/Laser.py +0 -0
- {aot_biomaps-2.9.220 → aot_biomaps-2.9.222}/AOT_biomaps/AOT_Optic/OpticEnums.py +0 -0
- {aot_biomaps-2.9.220 → aot_biomaps-2.9.222}/AOT_biomaps/AOT_Optic/__init__.py +0 -0
- {aot_biomaps-2.9.220 → aot_biomaps-2.9.222}/AOT_biomaps/AOT_Optic/_mainOptic.py +0 -0
- {aot_biomaps-2.9.220 → aot_biomaps-2.9.222}/AOT_biomaps/AOT_Recon/AOT_Optimizers/DEPIERRO.py +0 -0
- {aot_biomaps-2.9.220 → aot_biomaps-2.9.222}/AOT_biomaps/AOT_Recon/AOT_Optimizers/LS.py +0 -0
- {aot_biomaps-2.9.220 → aot_biomaps-2.9.222}/AOT_biomaps/AOT_Recon/AOT_Optimizers/MAPEM.py +0 -0
- {aot_biomaps-2.9.220 → aot_biomaps-2.9.222}/AOT_biomaps/AOT_Recon/AOT_Optimizers/MLEM.py +0 -0
- {aot_biomaps-2.9.220 → aot_biomaps-2.9.222}/AOT_biomaps/AOT_Recon/AOT_Optimizers/PDHG.py +0 -0
- {aot_biomaps-2.9.220 → aot_biomaps-2.9.222}/AOT_biomaps/AOT_Recon/AOT_Optimizers/__init__.py +0 -0
- {aot_biomaps-2.9.220 → aot_biomaps-2.9.222}/AOT_biomaps/AOT_Recon/AOT_PotentialFunctions/Huber.py +0 -0
- {aot_biomaps-2.9.220 → aot_biomaps-2.9.222}/AOT_biomaps/AOT_Recon/AOT_PotentialFunctions/Quadratic.py +0 -0
- {aot_biomaps-2.9.220 → aot_biomaps-2.9.222}/AOT_biomaps/AOT_Recon/AOT_PotentialFunctions/RelativeDifferences.py +0 -0
- {aot_biomaps-2.9.220 → aot_biomaps-2.9.222}/AOT_biomaps/AOT_Recon/AOT_PotentialFunctions/__init__.py +0 -0
- {aot_biomaps-2.9.220 → aot_biomaps-2.9.222}/AOT_biomaps/AOT_Recon/AnalyticRecon.py +0 -0
- {aot_biomaps-2.9.220 → aot_biomaps-2.9.222}/AOT_biomaps/AOT_Recon/DeepLearningRecon.py +0 -0
- {aot_biomaps-2.9.220 → aot_biomaps-2.9.222}/AOT_biomaps/AOT_Recon/ReconEnums.py +0 -0
- {aot_biomaps-2.9.220 → aot_biomaps-2.9.222}/AOT_biomaps/AOT_Recon/ReconTools.py +0 -0
- {aot_biomaps-2.9.220 → aot_biomaps-2.9.222}/AOT_biomaps/AOT_Recon/__init__.py +0 -0
- {aot_biomaps-2.9.220 → aot_biomaps-2.9.222}/AOT_biomaps/AOT_Recon/_mainRecon.py +0 -0
- {aot_biomaps-2.9.220 → aot_biomaps-2.9.222}/AOT_biomaps/Config.py +0 -0
- {aot_biomaps-2.9.220 → aot_biomaps-2.9.222}/AOT_biomaps/Settings.py +0 -0
- {aot_biomaps-2.9.220 → aot_biomaps-2.9.222}/AOT_biomaps.egg-info/SOURCES.txt +0 -0
- {aot_biomaps-2.9.220 → aot_biomaps-2.9.222}/AOT_biomaps.egg-info/dependency_links.txt +0 -0
- {aot_biomaps-2.9.220 → aot_biomaps-2.9.222}/AOT_biomaps.egg-info/requires.txt +0 -0
- {aot_biomaps-2.9.220 → aot_biomaps-2.9.222}/AOT_biomaps.egg-info/top_level.txt +0 -0
- {aot_biomaps-2.9.220 → aot_biomaps-2.9.222}/README.md +0 -0
- {aot_biomaps-2.9.220 → aot_biomaps-2.9.222}/setup.cfg +0 -0
|
@@ -671,12 +671,13 @@ class AlgebraicRecon(Recon):
|
|
|
671
671
|
if not os.path.exists(results_dir):
|
|
672
672
|
os.makedirs(results_dir)
|
|
673
673
|
|
|
674
|
-
if os.path.exists(os.path.join(results_dir,"
|
|
674
|
+
if os.path.exists(os.path.join(results_dir,"indices.npy")):
|
|
675
675
|
return (True, results_dir)
|
|
676
676
|
|
|
677
677
|
return (False, results_dir)
|
|
678
678
|
|
|
679
|
-
|
|
679
|
+
|
|
680
|
+
def load(self, withTumor=True, results_date=None, optimizer=None, filePath=None):
|
|
680
681
|
"""
|
|
681
682
|
Load the reconstruction results (reconPhantom or reconLaser) and indices as lists of 2D np arrays into self.
|
|
682
683
|
If the loaded file is a 3D array, it is split into a list of 2D arrays.
|
|
@@ -686,9 +687,101 @@ class AlgebraicRecon(Recon):
|
|
|
686
687
|
optimizer: Optimizer name (as string or enum) to filter results. If None, uses the current optimizer of the instance.
|
|
687
688
|
filePath: Optional. If provided, loads directly from this path (overrides saveDir and results_date).
|
|
688
689
|
"""
|
|
689
|
-
|
|
690
|
-
|
|
691
|
-
|
|
690
|
+
if filePath is not None:
|
|
691
|
+
# Mode chargement direct depuis un fichier
|
|
692
|
+
recon_key = 'reconPhantom' if withTumor else 'reconLaser'
|
|
693
|
+
recon_path = filePath
|
|
694
|
+
if not os.path.exists(recon_path):
|
|
695
|
+
raise FileNotFoundError(f"No reconstruction file found at {recon_path}.")
|
|
696
|
+
# Charge le fichier (3D ou liste de 2D)
|
|
697
|
+
data = np.load(recon_path, allow_pickle=True)
|
|
698
|
+
# Découpe en liste de 2D si c'est un tableau 3D
|
|
699
|
+
if isinstance(data, np.ndarray) and data.ndim == 3:
|
|
700
|
+
if withTumor:
|
|
701
|
+
self.reconPhantom = [data[i, :, :] for i in range(data.shape[0])]
|
|
702
|
+
else:
|
|
703
|
+
self.reconLaser = [data[i, :, :] for i in range(data.shape[0])]
|
|
704
|
+
else:
|
|
705
|
+
# Sinon, suppose que c'est déjà une liste de 2D
|
|
706
|
+
if withTumor:
|
|
707
|
+
self.reconPhantom = data
|
|
708
|
+
else:
|
|
709
|
+
self.reconLaser = data
|
|
710
|
+
# Essayer de charger les indices
|
|
711
|
+
base_dir, _ = os.path.split(recon_path)
|
|
712
|
+
indices_path = os.path.join(base_dir, 'indices.npy')
|
|
713
|
+
if os.path.exists(indices_path):
|
|
714
|
+
indices_data = np.load(indices_path, allow_pickle=True)
|
|
715
|
+
if isinstance(indices_data, np.ndarray) and indices_data.ndim == 3:
|
|
716
|
+
self.indices = [indices_data[i, :, :] for i in range(indices_data.shape[0])]
|
|
717
|
+
else:
|
|
718
|
+
self.indices = indices_data
|
|
719
|
+
else:
|
|
720
|
+
self.indices = None
|
|
721
|
+
print(f"Loaded reconstruction results and indices from {recon_path}")
|
|
722
|
+
else:
|
|
723
|
+
# Mode chargement depuis le répertoire de résultats
|
|
724
|
+
if self.saveDir is None:
|
|
725
|
+
raise ValueError("Save directory is not specified. Please set saveDir before loading.")
|
|
726
|
+
# Use current optimizer and potential function if not provided
|
|
727
|
+
opt_name = optimizer.value if optimizer is not None else self.optimizer.value
|
|
728
|
+
# Build the base directory pattern
|
|
729
|
+
dir_pattern = f'results_*_{opt_name}'
|
|
730
|
+
# Add parameters to the pattern based on the optimizer
|
|
731
|
+
if optimizer is None:
|
|
732
|
+
optimizer = self.optimizer
|
|
733
|
+
if optimizer == OptimizerType.PPGMLEM:
|
|
734
|
+
beta_str = f'_Beta_{self.beta}'
|
|
735
|
+
delta_str = f'_Delta_{self.delta}'
|
|
736
|
+
gamma_str = f'_Gamma_{self.gamma}'
|
|
737
|
+
sigma_str = f'_Sigma_{self.sigma}'
|
|
738
|
+
dir_pattern += f'{beta_str}{delta_str}{gamma_str}{sigma_str}'
|
|
739
|
+
elif optimizer in (OptimizerType.PGC, OptimizerType.DEPIERRO95):
|
|
740
|
+
beta_str = f'_Beta_{self.beta}'
|
|
741
|
+
sigma_str = f'_Sigma_{self.sigma}'
|
|
742
|
+
dir_pattern += f'{beta_str}{sigma_str}'
|
|
743
|
+
# Find the most recent results directory if no date is specified
|
|
744
|
+
if results_date is None:
|
|
745
|
+
dirs = [d for d in os.listdir(self.saveDir) if os.path.isdir(os.path.join(self.saveDir, d)) and dir_pattern in d]
|
|
746
|
+
if not dirs:
|
|
747
|
+
raise FileNotFoundError(f"No matching results directory found for pattern '{dir_pattern}' in {self.saveDir}.")
|
|
748
|
+
dirs.sort(reverse=True) # Most recent first
|
|
749
|
+
results_dir = os.path.join(self.saveDir, dirs[0])
|
|
750
|
+
else:
|
|
751
|
+
results_dir = os.path.join(self.saveDir, f'results_{results_date}_{opt_name}')
|
|
752
|
+
if optimizer == OptimizerType.MLEM:
|
|
753
|
+
pass
|
|
754
|
+
elif optimizer == OptimizerType.LS:
|
|
755
|
+
results_dir += f'_Alpha_{self.alpha}'
|
|
756
|
+
if not os.path.exists(results_dir):
|
|
757
|
+
raise FileNotFoundError(f"Directory {results_dir} does not exist.")
|
|
758
|
+
# Load reconstruction results
|
|
759
|
+
recon_key = 'reconPhantom' if withTumor else 'reconLaser'
|
|
760
|
+
recon_path = os.path.join(results_dir, f'{recon_key}.npy')
|
|
761
|
+
if not os.path.exists(recon_path):
|
|
762
|
+
raise FileNotFoundError(f"No reconstruction file found at {recon_path}.")
|
|
763
|
+
data = np.load(recon_path, allow_pickle=True)
|
|
764
|
+
if isinstance(data, np.ndarray) and data.ndim == 3:
|
|
765
|
+
if withTumor:
|
|
766
|
+
self.reconPhantom = [data[i, :, :] for i in range(data.shape[0])]
|
|
767
|
+
else:
|
|
768
|
+
self.reconLaser = [data[i, :, :] for i in range(data.shape[0])]
|
|
769
|
+
else:
|
|
770
|
+
if withTumor:
|
|
771
|
+
self.reconPhantom = data
|
|
772
|
+
else:
|
|
773
|
+
self.reconLaser = data
|
|
774
|
+
# Load saved indices as list of 2D arrays
|
|
775
|
+
indices_path = os.path.join(results_dir, 'indices.npy')
|
|
776
|
+
if not os.path.exists(indices_path):
|
|
777
|
+
raise FileNotFoundError(f"No indices file found at {indices_path}.")
|
|
778
|
+
indices_data = np.load(indices_path, allow_pickle=True)
|
|
779
|
+
if isinstance(indices_data, np.ndarray) and indices_data.ndim == 3:
|
|
780
|
+
self.indices = [indices_data[i, :, :] for i in range(indices_data.shape[0])]
|
|
781
|
+
else:
|
|
782
|
+
self.indices = indices_data
|
|
783
|
+
print(f"Loaded reconstruction results and indices from {results_dir}")
|
|
784
|
+
|
|
692
785
|
|
|
693
786
|
def normalizeSMatrix(self):
|
|
694
787
|
self.SMatrix = self.SMatrix / (float(self.experiment.params.acoustic['voltage'])*float(self.experiment.params.acoustic['sensitivity']))
|
|
@@ -69,7 +69,7 @@ class BayesianRecon(AlgebraicRecon):
|
|
|
69
69
|
if not os.path.exists(results_dir):
|
|
70
70
|
os.makedirs(results_dir)
|
|
71
71
|
|
|
72
|
-
if os.path.exists(os.path.join(results_dir,"
|
|
72
|
+
if os.path.exists(os.path.join(results_dir,"indices.npy")):
|
|
73
73
|
return (True, results_dir)
|
|
74
74
|
|
|
75
75
|
return (False, results_dir)
|
|
@@ -49,7 +49,7 @@ class PrimalDualRecon(AlgebraicRecon):
|
|
|
49
49
|
)
|
|
50
50
|
os.makedirs(results_dir, exist_ok=True)
|
|
51
51
|
|
|
52
|
-
if os.path.exists(os.path.join(results_dir,"
|
|
52
|
+
if os.path.exists(os.path.join(results_dir,"indices.npy")):
|
|
53
53
|
return (True, results_dir)
|
|
54
54
|
|
|
55
55
|
return (False, results_dir)
|
|
@@ -82,7 +82,7 @@ from .AOT_Recon.AOT_PotentialFunctions.RelativeDifferences import *
|
|
|
82
82
|
from .Config import config
|
|
83
83
|
from .Settings import *
|
|
84
84
|
|
|
85
|
-
__version__ = '2.9.
|
|
85
|
+
__version__ = '2.9.222'
|
|
86
86
|
__process__ = config.get_process()
|
|
87
87
|
|
|
88
88
|
def initialize(process=None):
|
|
@@ -254,6 +254,8 @@ def initialize(process=None):
|
|
|
254
254
|
|
|
255
255
|
|
|
256
256
|
|
|
257
|
+
|
|
258
|
+
|
|
257
259
|
|
|
258
260
|
|
|
259
261
|
|
|
@@ -2,7 +2,7 @@ from setuptools import setup, find_packages
|
|
|
2
2
|
|
|
3
3
|
setup(
|
|
4
4
|
name='AOT_biomaps',
|
|
5
|
-
version='2.9.
|
|
5
|
+
version='2.9.222',
|
|
6
6
|
packages=find_packages(),
|
|
7
7
|
include_package_data=True,
|
|
8
8
|
install_requires=[
|
|
@@ -229,6 +229,8 @@ setup(
|
|
|
229
229
|
|
|
230
230
|
|
|
231
231
|
|
|
232
|
+
|
|
233
|
+
|
|
232
234
|
|
|
233
235
|
|
|
234
236
|
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{aot_biomaps-2.9.220 → aot_biomaps-2.9.222}/AOT_biomaps/AOT_Recon/AOT_Optimizers/DEPIERRO.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{aot_biomaps-2.9.220 → aot_biomaps-2.9.222}/AOT_biomaps/AOT_Recon/AOT_Optimizers/__init__.py
RENAMED
|
File without changes
|
{aot_biomaps-2.9.220 → aot_biomaps-2.9.222}/AOT_biomaps/AOT_Recon/AOT_PotentialFunctions/Huber.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{aot_biomaps-2.9.220 → aot_biomaps-2.9.222}/AOT_biomaps/AOT_Recon/AOT_PotentialFunctions/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|