diff --git a/CyXTraX/simulation/artist_bridge.py b/CyXTraX/simulation/artist_bridge.py index 9e749ba15703044276973cc418035861b5b4c3d4..d8f611070588968aacab90915f983e418baf4e63 100644 --- a/CyXTraX/simulation/artist_bridge.py +++ b/CyXTraX/simulation/artist_bridge.py @@ -63,8 +63,18 @@ class CylindricalProjection: temp_file = temp_file_path / f'temp_{GLOBAL_COUNTER:01}.tiff' GLOBAL_COUNTER += 1 GLOBAL_COUNTER = GLOBAL_COUNTER % 10 + self.api.save_image(temp_file, save_projection_geometry=False, save_mode=SAVEMODES.FLOAT_TIFF) + while not temp_file.exists(): + print('sleepy sleep sleep ...') + # The computation of the cylindrical xray tansforms takes time ... aRTist is not programmed for it. + # This catches problems with the computation and the remote control interfaces + # It is ugly ... but works ... + # Also if the mesh is not waterprof the triangle filter of artist seems to have problems. + + sleep(2.) + image = utility.load_projection(temp_file, load_projection_geometry=False)[0] os.remove(temp_file) diff --git a/CyXTraX/util/datasets/augmentation_pipeline.py b/CyXTraX/util/datasets/augmentation_pipeline.py new file mode 100644 index 0000000000000000000000000000000000000000..2e82b48a42e8fff91c68c9333e134d5bb4e58094 --- /dev/null +++ b/CyXTraX/util/datasets/augmentation_pipeline.py @@ -0,0 +1,16 @@ +from jax import random, numpy as jnp + +class DataAugmentation: + def __init__(self, key: random.PRNGKey) -> None: + self._key = key + self.prost_process = list() + + @property + def key(self) -> random.PRNGKey: + key2save, key2use = random.split(self._key) + self._key = key2save + return key2use + + def register(self): + pass + diff --git a/CyXTraX/util/datasets/pipeline.py b/CyXTraX/util/datasets/pipeline.py index 7f291670865ba49081db0b7a23c45a33ea1312a3..cfb4aab76371be841f7dc13c548b8214fa448a2f 100644 --- a/CyXTraX/util/datasets/pipeline.py +++ b/CyXTraX/util/datasets/pipeline.py @@ -5,6 +5,7 @@ from CyXTraX.io import record_atlas from jax import random, numpy as jnp from jax.scipy.spatial.transform import Rotation + def generate_atlas_from_folder( folder: Path, key: random.PRNGKey, save_folder: Path, @@ -28,3 +29,9 @@ def generate_atlas_from_folder( stl_path.stem, save_folder, map_bounding_box, number_of_maps) + + +def merge_atlas_with_data_augmentation(folder: Path, + data_augmentation_pipeline): + + pass \ No newline at end of file diff --git a/scripts/06_generate_dataset.py b/scripts/06_generate_dataset.py index 5d03fdaafcbe03ba0068f97e54508ae6e6fccc80..516e803405fa2903715f011c93fead392dc42426 100644 --- a/scripts/06_generate_dataset.py +++ b/scripts/06_generate_dataset.py @@ -3,6 +3,11 @@ from pathlib import Path from jax import random +""" +This dataset adds 100 samples of random xray transforms. +It takes about 300 minutes of time +and needs 100gb of space. +""" def main(): # Dataset save folder @@ -10,10 +15,11 @@ def main(): # Dataset of multiple random stl files from: https://ten-thousand-models.appspot.com/ load_folder = Path(r'C:\Users\swittl\Downloads\Thingi10K\Thingi10K\raw_meshes') - number_of_samples = len(list(save_folder.glob('*.stl'))) + number_of_samples = len(list(save_folder.glob('*.h5'))) + 1 for i in range(number_of_samples, number_of_samples + 100): # start from number of samples to generate diffrent rng keys!!! + print(i) key = random.PRNGKey(i) generate_atlas_from_folder( load_folder, key, save_folder)