nabu 2024.1.0rc3__py3-none-any.whl → 2024.1.1__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.
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/doc/conf.py +137 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/doc/create_conf_doc.py +38 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/doc/get_mathjax.py +34 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/__init__.py +17 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/__init__.py +0 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/bootstrap.py +88 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/bootstrap_stitching.py +69 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/cast_volume.py +272 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/cli_configs.py +626 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/compare_volumes.py +94 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/composite_cor.py +144 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/correct_rot.py +70 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/create_distortion_map_from_poly.py +153 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/diag_to_pix.py +358 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/diag_to_rot.py +449 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/double_flatfield.py +143 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/generate_header.py +261 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/histogram.py +197 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/multicor.py +90 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/nx_z_splitter.py +125 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/parse_reconstruction_log.py +151 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/prepare_weights_double.py +163 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/reconstruct.py +120 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/reconstruct_helical.py +116 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/reduce_dark_flat.py +181 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/rotate.py +162 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/shrink_dataset.py +98 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/stitching.py +85 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/tests/test_reduce_dark_flat.py +78 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/utils.py +33 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/validator.py +110 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/cuda/__init__.py +0 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/cuda/convolution.py +8 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/cuda/fft.py +4 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/cuda/kernel.py +97 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/cuda/medfilt.py +6 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/cuda/padding.py +6 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/cuda/processing.py +75 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/cuda/tests/__init__.py +1 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/cuda/utils.py +331 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/estimation/__init__.py +12 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/estimation/alignment.py +578 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/estimation/cor.py +1621 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/estimation/cor_sino.py +183 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/estimation/distortion.py +112 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/estimation/focus.py +362 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/estimation/tests/__init__.py +0 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/estimation/tests/test_alignment.py +70 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/estimation/tests/test_cor.py +472 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/estimation/tests/test_focus.py +105 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/estimation/tests/test_tilt.py +41 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/estimation/tests/test_translation.py +78 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/estimation/tilt.py +214 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/estimation/translation.py +193 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/estimation/utils.py +39 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/io/__init__.py +2 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/io/cast_volume.py +371 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/io/detector_distortion.py +305 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/io/reader.py +628 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/io/reader_helical.py +114 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/io/tests/__init__.py +0 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/io/tests/test_cast_volume.py +339 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/io/tests/test_detector_distortion.py +178 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/io/tests/test_writers.py +187 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/io/tiffwriter_zmm.py +99 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/io/utils.py +263 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/io/writer.py +892 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/misc/__init__.py +0 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/misc/binning.py +98 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/misc/fftshift.py +6 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/misc/filters.py +24 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/misc/fourier_filters.py +152 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/misc/histogram.py +6 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/misc/histogram_cuda.py +8 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/misc/kernel_base.py +4 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/misc/padding.py +83 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/misc/padding_base.py +6 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/misc/processing_base.py +4 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/misc/rotation.py +6 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/misc/rotation_cuda.py +6 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/misc/tests/__init__.py +1 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/misc/tests/test_binning.py +48 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/misc/tests/test_interpolation.py +70 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/misc/transpose.py +6 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/misc/unsharp.py +4 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/misc/unsharp_cuda.py +6 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/misc/unsharp_opencl.py +8 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/misc/utils.py +117 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/opencl/__init__.py +0 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/opencl/fft.py +6 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/opencl/kernel.py +135 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/opencl/memcpy.py +35 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/opencl/padding.py +6 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/opencl/processing.py +62 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/opencl/tests/__init__.py +0 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/opencl/utils.py +292 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/__init__.py +0 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/config.py +265 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/config_validators.py +589 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/datadump.py +164 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/dataset_validator.py +211 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/detector_distortion_provider.py +20 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/estimators.py +1012 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/fallback_utils.py +149 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/fullfield/__init__.py +0 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/fullfield/chunked.py +849 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/fullfield/chunked_cuda.py +152 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/fullfield/computations.py +260 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/fullfield/dataset_validator.py +63 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/fullfield/nabu_config.py +590 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/fullfield/processconfig.py +825 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/fullfield/reconstruction.py +851 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/helical/__init__.py +0 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/helical/dataset_validator.py +19 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/helical/fbp.py +147 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/helical/filtering.py +246 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/helical/gridded_accumulator.py +575 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/helical/helical_chunked_regridded.py +1670 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/helical/helical_chunked_regridded_cuda.py +119 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/helical/helical_reconstruction.py +598 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/helical/helical_utils.py +42 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/helical/nabu_config.py +175 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/helical/processconfig.py +62 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/helical/span_strategy.py +483 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/helical/tests/__init__.py +0 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/helical/tests/test_accumulator.py +157 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/helical/tests/test_pipeline_elements_full.py +355 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/helical/tests/test_strategy.py +61 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/helical/utils.py +51 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/helical/weight_balancer.py +101 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/params.py +163 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/processconfig.py +210 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/tests/test_chunk_reader.py +78 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/tests/test_estimators.py +149 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/utils.py +116 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/writer.py +193 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/xrdct/__init__.py +0 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/preproc/__init__.py +7 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/preproc/alignment.py +11 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/preproc/ccd.py +161 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/preproc/ccd_cuda.py +169 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/preproc/ctf.py +361 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/preproc/ctf_cuda.py +142 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/preproc/distortion.py +92 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/preproc/double_flatfield.py +212 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/preproc/double_flatfield_cuda.py +174 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/preproc/double_flatfield_variable_region.py +68 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/preproc/flatfield.py +448 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/preproc/flatfield_cuda.py +144 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/preproc/flatfield_variable_region.py +79 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/preproc/phase.py +425 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/preproc/phase_cuda.py +143 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/preproc/shift.py +95 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/preproc/shift_cuda.py +102 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/preproc/tests/__init__.py +1 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/preproc/tests/test_ccd_corr.py +59 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/preproc/tests/test_ctf.py +250 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/preproc/tests/test_double_flatfield.py +86 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/preproc/tests/test_flatfield.py +626 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/preproc/tests/test_paganin.py +67 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/preproc/tests/test_vshift.py +73 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/__init__.py +0 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/convolution_cuda.py +375 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/fft_base.py +163 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/fft_cuda.py +256 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/fft_opencl.py +54 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/fftshift.py +134 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/histogram.py +286 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/histogram_cuda.py +103 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/kernel_base.py +126 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/medfilt_cuda.py +159 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/muladd.py +29 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/muladd_cuda.py +68 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/padding_base.py +71 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/padding_cuda.py +75 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/padding_opencl.py +77 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/processing_base.py +123 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/roll_opencl.py +64 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/rotation.py +63 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/rotation_cuda.py +66 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/tests/__init__.py +0 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/tests/test_fft.py +268 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/tests/test_fftshift.py +71 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/tests/test_histogram.py +55 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/tests/test_medfilt.py +77 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/tests/test_muladd.py +54 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/tests/test_padding.py +247 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/tests/test_roll.py +63 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/tests/test_rotation.py +83 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/tests/test_transpose.py +72 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/tests/test_unsharp.py +106 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/transpose.py +126 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/unsharp.py +79 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/unsharp_cuda.py +53 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/unsharp_opencl.py +75 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/__init__.py +3 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/cone.py +241 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/fbp.py +124 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/fbp_base.py +391 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/fbp_opencl.py +78 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/filtering.py +220 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/filtering_cuda.py +103 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/filtering_opencl.py +111 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/projection.py +240 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/reconstructor.py +174 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/reconstructor_cuda.py +44 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/rings.py +248 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/rings_cuda.py +322 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/sinogram.py +467 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/sinogram_cuda.py +250 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/sinogram_opencl.py +40 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/tests/__init__.py +1 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/tests/test_cone.py +308 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/tests/test_deringer.py +220 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/tests/test_fbp.py +252 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/tests/test_filtering.py +133 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/tests/test_halftomo.py +100 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/tests/test_projector.py +164 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/tests/test_reconstructor.py +93 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/tests/test_sino_normalization.py +85 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/resources/__init__.py +0 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/resources/cli/__init__.py +0 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/resources/cor.py +5 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/resources/dataset_analyzer.py +469 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/resources/gpu.py +169 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/resources/logger.py +130 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/resources/nxflatfield.py +217 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/resources/templates/__init__.py +0 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/resources/tests/__init__.py +0 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/resources/tests/test_nxflatfield.py +104 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/resources/tests/test_units.py +47 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/resources/utils.py +174 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/stitching/__init__.py +0 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/stitching/alignment.py +184 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/stitching/config.py +1286 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/stitching/definitions.py +6 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/stitching/frame_composition.py +155 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/stitching/overlap.py +373 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/stitching/sample_normalization.py +60 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/stitching/slurm_utils.py +204 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/stitching/tests/__init__.py +0 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/stitching/tests/test_alignment.py +99 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/stitching/tests/test_config.py +226 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/stitching/tests/test_frame_composition.py +180 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/stitching/tests/test_overlap.py +98 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/stitching/tests/test_sample_normalization.py +49 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/stitching/tests/test_slurm_utils.py +146 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/stitching/tests/test_utils.py +21 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/stitching/tests/test_z_stitching.py +1183 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/stitching/utils.py +563 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/stitching/z_stitching.py +2279 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/tests.py +51 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/testutils.py +375 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/thirdparty/__init__.py +0 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/thirdparty/algotom_convert_sino.py +276 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/thirdparty/pore3d_deringer_munch.py +108 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/thirdparty/tomocupy_remove_stripe.py +586 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/thirdparty/tomopy_phase.py +239 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/thirdparty/tomwer_load_flats_darks.py +162 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/utils.py +836 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/doc/conf.py +137 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/doc/create_conf_doc.py +38 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/doc/get_mathjax.py +34 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/__init__.py +17 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/__init__.py +0 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/bootstrap.py +88 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/bootstrap_stitching.py +69 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/cast_volume.py +272 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/cli_configs.py +626 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/compare_volumes.py +94 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/composite_cor.py +144 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/correct_rot.py +70 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/create_distortion_map_from_poly.py +153 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/diag_to_pix.py +358 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/diag_to_rot.py +449 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/double_flatfield.py +143 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/generate_header.py +261 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/histogram.py +197 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/multicor.py +90 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/nx_z_splitter.py +125 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/parse_reconstruction_log.py +151 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/prepare_weights_double.py +163 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/reconstruct.py +120 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/reconstruct_helical.py +116 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/reduce_dark_flat.py +181 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/rotate.py +162 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/shrink_dataset.py +98 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/stitching.py +85 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/tests/test_reduce_dark_flat.py +78 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/utils.py +33 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/validator.py +110 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/cuda/__init__.py +0 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/cuda/convolution.py +8 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/cuda/fft.py +4 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/cuda/kernel.py +97 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/cuda/medfilt.py +6 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/cuda/padding.py +6 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/cuda/processing.py +75 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/cuda/tests/__init__.py +1 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/cuda/utils.py +331 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/estimation/__init__.py +12 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/estimation/alignment.py +578 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/estimation/cor.py +1621 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/estimation/cor_sino.py +183 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/estimation/distortion.py +112 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/estimation/focus.py +362 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/estimation/tests/__init__.py +0 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/estimation/tests/test_alignment.py +70 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/estimation/tests/test_cor.py +472 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/estimation/tests/test_focus.py +105 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/estimation/tests/test_tilt.py +41 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/estimation/tests/test_translation.py +78 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/estimation/tilt.py +214 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/estimation/translation.py +193 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/estimation/utils.py +39 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/io/__init__.py +2 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/io/cast_volume.py +371 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/io/detector_distortion.py +305 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/io/reader.py +628 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/io/reader_helical.py +114 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/io/tests/__init__.py +0 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/io/tests/test_cast_volume.py +339 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/io/tests/test_detector_distortion.py +178 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/io/tests/test_writers.py +187 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/io/tiffwriter_zmm.py +99 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/io/utils.py +263 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/io/writer.py +892 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/misc/__init__.py +0 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/misc/binning.py +98 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/misc/fftshift.py +6 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/misc/filters.py +24 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/misc/fourier_filters.py +152 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/misc/histogram.py +6 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/misc/histogram_cuda.py +8 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/misc/kernel_base.py +4 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/misc/padding.py +83 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/misc/padding_base.py +6 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/misc/processing_base.py +4 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/misc/rotation.py +6 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/misc/rotation_cuda.py +6 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/misc/tests/__init__.py +1 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/misc/tests/test_binning.py +48 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/misc/tests/test_interpolation.py +70 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/misc/transpose.py +6 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/misc/unsharp.py +4 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/misc/unsharp_cuda.py +6 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/misc/unsharp_opencl.py +8 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/misc/utils.py +117 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/opencl/__init__.py +0 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/opencl/fft.py +6 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/opencl/kernel.py +135 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/opencl/memcpy.py +35 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/opencl/padding.py +6 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/opencl/processing.py +62 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/opencl/tests/__init__.py +0 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/opencl/utils.py +292 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/__init__.py +0 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/config.py +265 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/config_validators.py +589 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/datadump.py +164 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/dataset_validator.py +211 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/detector_distortion_provider.py +20 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/estimators.py +1012 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/fallback_utils.py +149 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/fullfield/__init__.py +0 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/fullfield/chunked.py +849 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/fullfield/chunked_cuda.py +152 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/fullfield/computations.py +260 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/fullfield/dataset_validator.py +63 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/fullfield/nabu_config.py +590 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/fullfield/processconfig.py +825 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/fullfield/reconstruction.py +851 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/helical/__init__.py +0 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/helical/dataset_validator.py +19 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/helical/fbp.py +147 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/helical/filtering.py +246 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/helical/gridded_accumulator.py +575 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/helical/helical_chunked_regridded.py +1670 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/helical/helical_chunked_regridded_cuda.py +119 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/helical/helical_reconstruction.py +598 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/helical/helical_utils.py +42 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/helical/nabu_config.py +175 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/helical/processconfig.py +62 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/helical/span_strategy.py +483 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/helical/tests/__init__.py +0 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/helical/tests/test_accumulator.py +157 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/helical/tests/test_pipeline_elements_full.py +355 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/helical/tests/test_strategy.py +61 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/helical/utils.py +51 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/helical/weight_balancer.py +101 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/params.py +163 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/processconfig.py +210 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/tests/test_chunk_reader.py +78 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/tests/test_estimators.py +149 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/utils.py +116 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/writer.py +193 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/xrdct/__init__.py +0 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/preproc/__init__.py +7 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/preproc/alignment.py +11 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/preproc/ccd.py +161 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/preproc/ccd_cuda.py +169 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/preproc/ctf.py +361 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/preproc/ctf_cuda.py +142 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/preproc/distortion.py +92 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/preproc/double_flatfield.py +212 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/preproc/double_flatfield_cuda.py +174 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/preproc/double_flatfield_variable_region.py +68 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/preproc/flatfield.py +448 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/preproc/flatfield_cuda.py +144 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/preproc/flatfield_variable_region.py +79 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/preproc/phase.py +425 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/preproc/phase_cuda.py +143 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/preproc/shift.py +95 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/preproc/shift_cuda.py +102 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/preproc/tests/__init__.py +1 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/preproc/tests/test_ccd_corr.py +59 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/preproc/tests/test_ctf.py +250 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/preproc/tests/test_double_flatfield.py +86 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/preproc/tests/test_flatfield.py +626 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/preproc/tests/test_paganin.py +67 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/preproc/tests/test_vshift.py +73 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/__init__.py +0 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/convolution_cuda.py +375 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/fft_base.py +163 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/fft_cuda.py +256 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/fft_opencl.py +54 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/fftshift.py +134 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/histogram.py +286 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/histogram_cuda.py +103 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/kernel_base.py +126 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/medfilt_cuda.py +159 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/muladd.py +29 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/muladd_cuda.py +68 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/padding_base.py +71 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/padding_cuda.py +75 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/padding_opencl.py +77 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/processing_base.py +123 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/roll_opencl.py +64 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/rotation.py +63 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/rotation_cuda.py +66 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/tests/__init__.py +0 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/tests/test_fft.py +268 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/tests/test_fftshift.py +71 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/tests/test_histogram.py +55 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/tests/test_medfilt.py +77 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/tests/test_muladd.py +54 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/tests/test_padding.py +247 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/tests/test_roll.py +63 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/tests/test_rotation.py +83 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/tests/test_transpose.py +72 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/tests/test_unsharp.py +106 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/transpose.py +126 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/unsharp.py +79 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/unsharp_cuda.py +53 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/unsharp_opencl.py +75 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/__init__.py +3 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/cone.py +241 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/fbp.py +124 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/fbp_base.py +391 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/fbp_opencl.py +78 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/filtering.py +220 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/filtering_cuda.py +103 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/filtering_opencl.py +111 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/projection.py +240 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/reconstructor.py +174 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/reconstructor_cuda.py +44 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/rings.py +248 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/rings_cuda.py +322 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/sinogram.py +467 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/sinogram_cuda.py +250 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/sinogram_opencl.py +40 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/tests/__init__.py +1 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/tests/test_cone.py +308 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/tests/test_deringer.py +220 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/tests/test_fbp.py +252 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/tests/test_filtering.py +133 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/tests/test_halftomo.py +100 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/tests/test_projector.py +164 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/tests/test_reconstructor.py +93 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/tests/test_sino_normalization.py +85 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/resources/__init__.py +0 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/resources/cli/__init__.py +0 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/resources/cor.py +5 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/resources/dataset_analyzer.py +469 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/resources/gpu.py +169 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/resources/logger.py +130 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/resources/nxflatfield.py +217 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/resources/templates/__init__.py +0 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/resources/tests/__init__.py +0 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/resources/tests/test_nxflatfield.py +104 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/resources/tests/test_units.py +47 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/resources/utils.py +174 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/stitching/__init__.py +0 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/stitching/alignment.py +184 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/stitching/config.py +1286 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/stitching/definitions.py +6 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/stitching/frame_composition.py +155 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/stitching/overlap.py +373 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/stitching/sample_normalization.py +60 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/stitching/slurm_utils.py +204 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/stitching/tests/__init__.py +0 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/stitching/tests/test_alignment.py +99 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/stitching/tests/test_config.py +226 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/stitching/tests/test_frame_composition.py +180 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/stitching/tests/test_overlap.py +98 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/stitching/tests/test_sample_normalization.py +49 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/stitching/tests/test_slurm_utils.py +146 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/stitching/tests/test_utils.py +21 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/stitching/tests/test_z_stitching.py +1183 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/stitching/utils.py +563 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/stitching/z_stitching.py +2279 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/tests.py +51 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/testutils.py +375 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/thirdparty/__init__.py +0 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/thirdparty/algotom_convert_sino.py +276 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/thirdparty/pore3d_deringer_munch.py +108 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/thirdparty/tomocupy_remove_stripe.py +586 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/thirdparty/tomopy_phase.py +239 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/thirdparty/tomwer_load_flats_darks.py +162 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/utils.py +836 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/doc/conf.py +137 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/doc/create_conf_doc.py +38 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/doc/get_mathjax.py +34 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/__init__.py +17 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/__init__.py +0 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/bootstrap.py +88 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/bootstrap_stitching.py +69 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/cast_volume.py +272 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/cli_configs.py +626 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/compare_volumes.py +94 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/composite_cor.py +144 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/correct_rot.py +70 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/create_distortion_map_from_poly.py +153 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/diag_to_pix.py +358 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/diag_to_rot.py +449 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/double_flatfield.py +143 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/generate_header.py +261 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/histogram.py +197 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/multicor.py +90 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/nx_z_splitter.py +125 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/parse_reconstruction_log.py +151 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/prepare_weights_double.py +163 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/reconstruct.py +120 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/reconstruct_helical.py +116 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/reduce_dark_flat.py +181 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/rotate.py +162 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/shrink_dataset.py +98 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/stitching.py +85 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/tests/test_reduce_dark_flat.py +78 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/utils.py +33 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/validator.py +110 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/cuda/__init__.py +0 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/cuda/convolution.py +8 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/cuda/fft.py +4 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/cuda/kernel.py +97 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/cuda/medfilt.py +6 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/cuda/padding.py +6 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/cuda/processing.py +75 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/cuda/tests/__init__.py +1 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/cuda/utils.py +331 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/estimation/__init__.py +12 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/estimation/alignment.py +578 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/estimation/cor.py +1621 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/estimation/cor_sino.py +183 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/estimation/distortion.py +112 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/estimation/focus.py +362 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/estimation/tests/__init__.py +0 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/estimation/tests/test_alignment.py +70 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/estimation/tests/test_cor.py +472 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/estimation/tests/test_focus.py +105 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/estimation/tests/test_tilt.py +41 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/estimation/tests/test_translation.py +78 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/estimation/tilt.py +214 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/estimation/translation.py +193 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/estimation/utils.py +39 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/io/__init__.py +2 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/io/cast_volume.py +371 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/io/detector_distortion.py +305 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/io/reader.py +628 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/io/reader_helical.py +114 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/io/tests/__init__.py +0 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/io/tests/test_cast_volume.py +339 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/io/tests/test_detector_distortion.py +178 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/io/tests/test_writers.py +187 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/io/tiffwriter_zmm.py +99 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/io/utils.py +263 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/io/writer.py +892 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/misc/__init__.py +0 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/misc/binning.py +98 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/misc/fftshift.py +6 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/misc/filters.py +24 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/misc/fourier_filters.py +152 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/misc/histogram.py +6 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/misc/histogram_cuda.py +8 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/misc/kernel_base.py +4 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/misc/padding.py +83 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/misc/padding_base.py +6 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/misc/processing_base.py +4 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/misc/rotation.py +6 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/misc/rotation_cuda.py +6 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/misc/tests/__init__.py +1 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/misc/tests/test_binning.py +48 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/misc/tests/test_interpolation.py +70 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/misc/transpose.py +6 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/misc/unsharp.py +4 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/misc/unsharp_cuda.py +6 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/misc/unsharp_opencl.py +8 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/misc/utils.py +117 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/opencl/__init__.py +0 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/opencl/fft.py +6 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/opencl/kernel.py +135 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/opencl/memcpy.py +35 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/opencl/padding.py +6 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/opencl/processing.py +62 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/opencl/tests/__init__.py +0 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/opencl/utils.py +292 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/__init__.py +0 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/config.py +265 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/config_validators.py +589 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/datadump.py +164 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/dataset_validator.py +211 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/detector_distortion_provider.py +20 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/estimators.py +1012 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/fallback_utils.py +149 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/fullfield/__init__.py +0 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/fullfield/chunked.py +849 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/fullfield/chunked_cuda.py +152 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/fullfield/computations.py +260 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/fullfield/dataset_validator.py +63 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/fullfield/nabu_config.py +590 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/fullfield/processconfig.py +825 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/fullfield/reconstruction.py +851 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/helical/__init__.py +0 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/helical/dataset_validator.py +19 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/helical/fbp.py +147 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/helical/filtering.py +246 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/helical/gridded_accumulator.py +575 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/helical/helical_chunked_regridded.py +1670 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/helical/helical_chunked_regridded_cuda.py +119 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/helical/helical_reconstruction.py +598 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/helical/helical_utils.py +42 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/helical/nabu_config.py +175 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/helical/processconfig.py +62 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/helical/span_strategy.py +483 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/helical/tests/__init__.py +0 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/helical/tests/test_accumulator.py +157 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/helical/tests/test_pipeline_elements_full.py +355 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/helical/tests/test_strategy.py +61 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/helical/utils.py +51 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/helical/weight_balancer.py +101 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/params.py +163 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/processconfig.py +210 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/tests/test_chunk_reader.py +78 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/tests/test_estimators.py +149 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/utils.py +116 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/writer.py +193 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/xrdct/__init__.py +0 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/preproc/__init__.py +7 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/preproc/alignment.py +11 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/preproc/ccd.py +161 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/preproc/ccd_cuda.py +169 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/preproc/ctf.py +361 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/preproc/ctf_cuda.py +142 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/preproc/distortion.py +92 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/preproc/double_flatfield.py +212 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/preproc/double_flatfield_cuda.py +174 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/preproc/double_flatfield_variable_region.py +68 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/preproc/flatfield.py +448 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/preproc/flatfield_cuda.py +144 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/preproc/flatfield_variable_region.py +79 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/preproc/phase.py +425 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/preproc/phase_cuda.py +143 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/preproc/shift.py +95 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/preproc/shift_cuda.py +102 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/preproc/tests/__init__.py +1 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/preproc/tests/test_ccd_corr.py +59 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/preproc/tests/test_ctf.py +250 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/preproc/tests/test_double_flatfield.py +86 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/preproc/tests/test_flatfield.py +626 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/preproc/tests/test_paganin.py +67 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/preproc/tests/test_vshift.py +73 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/__init__.py +0 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/convolution_cuda.py +375 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/fft_base.py +163 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/fft_cuda.py +256 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/fft_opencl.py +54 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/fftshift.py +134 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/histogram.py +286 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/histogram_cuda.py +103 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/kernel_base.py +126 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/medfilt_cuda.py +159 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/muladd.py +29 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/muladd_cuda.py +68 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/padding_base.py +71 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/padding_cuda.py +75 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/padding_opencl.py +77 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/processing_base.py +123 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/roll_opencl.py +64 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/rotation.py +63 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/rotation_cuda.py +66 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/tests/__init__.py +0 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/tests/test_fft.py +268 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/tests/test_fftshift.py +71 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/tests/test_histogram.py +55 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/tests/test_medfilt.py +77 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/tests/test_muladd.py +54 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/tests/test_padding.py +247 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/tests/test_roll.py +63 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/tests/test_rotation.py +83 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/tests/test_transpose.py +72 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/tests/test_unsharp.py +106 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/transpose.py +126 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/unsharp.py +79 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/unsharp_cuda.py +53 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/unsharp_opencl.py +75 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/__init__.py +3 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/cone.py +241 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/fbp.py +124 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/fbp_base.py +391 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/fbp_opencl.py +78 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/filtering.py +220 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/filtering_cuda.py +103 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/filtering_opencl.py +111 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/projection.py +240 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/reconstructor.py +174 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/reconstructor_cuda.py +44 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/rings.py +248 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/rings_cuda.py +322 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/sinogram.py +467 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/sinogram_cuda.py +250 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/sinogram_opencl.py +40 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/tests/__init__.py +1 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/tests/test_cone.py +308 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/tests/test_deringer.py +220 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/tests/test_fbp.py +252 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/tests/test_filtering.py +133 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/tests/test_halftomo.py +100 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/tests/test_projector.py +164 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/tests/test_reconstructor.py +93 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/tests/test_sino_normalization.py +85 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/resources/__init__.py +0 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/resources/cli/__init__.py +0 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/resources/cor.py +5 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/resources/dataset_analyzer.py +469 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/resources/gpu.py +169 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/resources/logger.py +130 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/resources/nxflatfield.py +217 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/resources/templates/__init__.py +0 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/resources/tests/__init__.py +0 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/resources/tests/test_nxflatfield.py +104 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/resources/tests/test_units.py +47 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/resources/utils.py +174 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/stitching/__init__.py +0 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/stitching/alignment.py +184 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/stitching/config.py +1286 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/stitching/definitions.py +6 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/stitching/frame_composition.py +155 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/stitching/overlap.py +373 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/stitching/sample_normalization.py +60 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/stitching/slurm_utils.py +204 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/stitching/tests/__init__.py +0 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/stitching/tests/test_alignment.py +99 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/stitching/tests/test_config.py +226 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/stitching/tests/test_frame_composition.py +180 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/stitching/tests/test_overlap.py +98 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/stitching/tests/test_sample_normalization.py +49 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/stitching/tests/test_slurm_utils.py +146 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/stitching/tests/test_utils.py +21 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/stitching/tests/test_z_stitching.py +1183 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/stitching/utils.py +563 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/stitching/z_stitching.py +2279 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/tests.py +51 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/testutils.py +375 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/thirdparty/__init__.py +0 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/thirdparty/algotom_convert_sino.py +276 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/thirdparty/pore3d_deringer_munch.py +108 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/thirdparty/tomocupy_remove_stripe.py +586 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/thirdparty/tomopy_phase.py +239 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/thirdparty/tomwer_load_flats_darks.py +162 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/build/lib/nabu/utils.py +836 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/doc/conf.py +137 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/doc/create_conf_doc.py +38 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/doc/get_mathjax.py +34 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/nabu/__init__.py +17 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/__init__.py +0 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/bootstrap.py +88 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/bootstrap_stitching.py +69 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/cast_volume.py +272 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/cli_configs.py +626 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/compare_volumes.py +94 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/composite_cor.py +144 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/correct_rot.py +70 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/create_distortion_map_from_poly.py +153 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/diag_to_pix.py +358 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/diag_to_rot.py +449 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/double_flatfield.py +143 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/generate_header.py +261 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/histogram.py +197 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/multicor.py +90 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/nx_z_splitter.py +125 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/parse_reconstruction_log.py +151 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/prepare_weights_double.py +163 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/reconstruct.py +120 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/reconstruct_helical.py +116 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/reduce_dark_flat.py +181 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/rotate.py +162 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/shrink_dataset.py +98 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/stitching.py +85 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/tests/test_reduce_dark_flat.py +78 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/utils.py +33 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/nabu/app/validator.py +110 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/nabu/cuda/__init__.py +0 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/nabu/cuda/convolution.py +8 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/nabu/cuda/fft.py +4 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/nabu/cuda/kernel.py +97 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/nabu/cuda/medfilt.py +6 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/nabu/cuda/padding.py +6 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/nabu/cuda/processing.py +75 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/nabu/cuda/tests/__init__.py +1 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/nabu/cuda/utils.py +331 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/nabu/estimation/__init__.py +12 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/nabu/estimation/alignment.py +578 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/nabu/estimation/cor.py +1621 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/nabu/estimation/cor_sino.py +183 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/nabu/estimation/distortion.py +112 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/nabu/estimation/focus.py +362 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/nabu/estimation/tests/__init__.py +0 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/nabu/estimation/tests/test_alignment.py +70 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/nabu/estimation/tests/test_cor.py +472 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/nabu/estimation/tests/test_focus.py +105 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/nabu/estimation/tests/test_tilt.py +41 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/nabu/estimation/tests/test_translation.py +78 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/nabu/estimation/tilt.py +214 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/nabu/estimation/translation.py +193 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/nabu/estimation/utils.py +39 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/nabu/io/__init__.py +2 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/nabu/io/cast_volume.py +371 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/nabu/io/detector_distortion.py +305 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/nabu/io/reader.py +628 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/nabu/io/reader_helical.py +114 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/nabu/io/tests/__init__.py +0 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/nabu/io/tests/test_cast_volume.py +339 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/nabu/io/tests/test_detector_distortion.py +178 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/nabu/io/tests/test_writers.py +187 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/nabu/io/tiffwriter_zmm.py +99 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/nabu/io/utils.py +263 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/nabu/io/writer.py +892 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/nabu/misc/__init__.py +0 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/nabu/misc/binning.py +98 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/nabu/misc/fftshift.py +6 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/nabu/misc/filters.py +24 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/nabu/misc/fourier_filters.py +152 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/nabu/misc/histogram.py +6 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/nabu/misc/histogram_cuda.py +8 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/nabu/misc/kernel_base.py +4 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/nabu/misc/padding.py +83 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/nabu/misc/padding_base.py +6 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/nabu/misc/processing_base.py +4 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/nabu/misc/rotation.py +6 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/nabu/misc/rotation_cuda.py +6 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/nabu/misc/tests/__init__.py +1 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/nabu/misc/tests/test_binning.py +48 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/nabu/misc/tests/test_interpolation.py +70 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/nabu/misc/transpose.py +6 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/nabu/misc/unsharp.py +4 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/nabu/misc/unsharp_cuda.py +6 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/nabu/misc/unsharp_opencl.py +8 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/nabu/misc/utils.py +117 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/nabu/opencl/__init__.py +0 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/nabu/opencl/fft.py +6 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/nabu/opencl/kernel.py +135 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/nabu/opencl/memcpy.py +35 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/nabu/opencl/padding.py +6 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/nabu/opencl/processing.py +62 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/nabu/opencl/tests/__init__.py +0 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/nabu/opencl/utils.py +292 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/__init__.py +0 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/config.py +265 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/config_validators.py +589 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/datadump.py +164 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/dataset_validator.py +211 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/detector_distortion_provider.py +20 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/estimators.py +1012 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/fallback_utils.py +149 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/fullfield/__init__.py +0 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/fullfield/chunked.py +849 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/fullfield/chunked_cuda.py +152 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/fullfield/computations.py +260 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/fullfield/dataset_validator.py +63 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/fullfield/nabu_config.py +590 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/fullfield/processconfig.py +825 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/fullfield/reconstruction.py +851 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/helical/__init__.py +0 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/helical/dataset_validator.py +19 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/helical/fbp.py +147 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/helical/filtering.py +246 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/helical/gridded_accumulator.py +575 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/helical/helical_chunked_regridded.py +1670 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/helical/helical_chunked_regridded_cuda.py +119 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/helical/helical_reconstruction.py +598 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/helical/helical_utils.py +42 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/helical/nabu_config.py +175 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/helical/processconfig.py +62 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/helical/span_strategy.py +483 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/helical/tests/__init__.py +0 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/helical/tests/test_accumulator.py +157 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/helical/tests/test_pipeline_elements_full.py +355 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/helical/tests/test_strategy.py +61 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/helical/utils.py +51 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/helical/weight_balancer.py +101 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/params.py +163 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/processconfig.py +210 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/tests/test_chunk_reader.py +78 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/tests/test_estimators.py +149 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/utils.py +116 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/writer.py +193 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/nabu/pipeline/xrdct/__init__.py +0 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/nabu/preproc/__init__.py +7 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/nabu/preproc/alignment.py +11 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/nabu/preproc/ccd.py +161 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/nabu/preproc/ccd_cuda.py +169 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/nabu/preproc/ctf.py +361 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/nabu/preproc/ctf_cuda.py +142 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/nabu/preproc/distortion.py +92 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/nabu/preproc/double_flatfield.py +212 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/nabu/preproc/double_flatfield_cuda.py +174 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/nabu/preproc/double_flatfield_variable_region.py +68 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/nabu/preproc/flatfield.py +448 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/nabu/preproc/flatfield_cuda.py +144 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/nabu/preproc/flatfield_variable_region.py +79 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/nabu/preproc/phase.py +425 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/nabu/preproc/phase_cuda.py +143 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/nabu/preproc/shift.py +95 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/nabu/preproc/shift_cuda.py +102 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/nabu/preproc/tests/__init__.py +1 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/nabu/preproc/tests/test_ccd_corr.py +59 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/nabu/preproc/tests/test_ctf.py +250 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/nabu/preproc/tests/test_double_flatfield.py +86 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/nabu/preproc/tests/test_flatfield.py +626 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/nabu/preproc/tests/test_paganin.py +67 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/nabu/preproc/tests/test_vshift.py +73 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/__init__.py +0 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/convolution_cuda.py +375 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/fft_base.py +163 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/fft_cuda.py +256 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/fft_opencl.py +54 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/fftshift.py +134 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/histogram.py +286 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/histogram_cuda.py +103 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/kernel_base.py +126 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/medfilt_cuda.py +159 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/muladd.py +29 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/muladd_cuda.py +68 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/padding_base.py +71 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/padding_cuda.py +75 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/padding_opencl.py +77 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/processing_base.py +123 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/roll_opencl.py +64 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/rotation.py +63 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/rotation_cuda.py +66 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/tests/__init__.py +0 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/tests/test_fft.py +268 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/tests/test_fftshift.py +71 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/tests/test_histogram.py +55 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/tests/test_medfilt.py +77 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/tests/test_muladd.py +54 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/tests/test_padding.py +247 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/tests/test_roll.py +63 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/tests/test_rotation.py +83 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/tests/test_transpose.py +72 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/tests/test_unsharp.py +106 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/transpose.py +126 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/unsharp.py +79 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/unsharp_cuda.py +53 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/nabu/processing/unsharp_opencl.py +75 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/__init__.py +3 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/cone.py +241 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/fbp.py +124 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/fbp_base.py +391 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/fbp_opencl.py +78 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/filtering.py +220 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/filtering_cuda.py +103 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/filtering_opencl.py +111 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/projection.py +240 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/reconstructor.py +174 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/reconstructor_cuda.py +44 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/rings.py +248 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/rings_cuda.py +322 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/sinogram.py +467 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/sinogram_cuda.py +250 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/sinogram_opencl.py +40 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/tests/__init__.py +1 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/tests/test_cone.py +308 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/tests/test_deringer.py +220 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/tests/test_fbp.py +252 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/tests/test_filtering.py +133 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/tests/test_halftomo.py +100 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/tests/test_projector.py +164 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/tests/test_reconstructor.py +93 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/tests/test_sino_normalization.py +85 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/nabu/resources/__init__.py +0 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/nabu/resources/cli/__init__.py +0 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/nabu/resources/cor.py +5 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/nabu/resources/dataset_analyzer.py +469 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/nabu/resources/gpu.py +169 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/nabu/resources/logger.py +130 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/nabu/resources/nxflatfield.py +217 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/nabu/resources/templates/__init__.py +0 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/nabu/resources/tests/__init__.py +0 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/nabu/resources/tests/test_nxflatfield.py +104 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/nabu/resources/tests/test_units.py +47 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/nabu/resources/utils.py +174 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/nabu/stitching/__init__.py +0 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/nabu/stitching/alignment.py +184 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/nabu/stitching/config.py +1286 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/nabu/stitching/definitions.py +6 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/nabu/stitching/frame_composition.py +155 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/nabu/stitching/overlap.py +373 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/nabu/stitching/sample_normalization.py +60 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/nabu/stitching/slurm_utils.py +204 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/nabu/stitching/tests/__init__.py +0 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/nabu/stitching/tests/test_alignment.py +99 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/nabu/stitching/tests/test_config.py +226 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/nabu/stitching/tests/test_frame_composition.py +180 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/nabu/stitching/tests/test_overlap.py +98 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/nabu/stitching/tests/test_sample_normalization.py +49 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/nabu/stitching/tests/test_slurm_utils.py +146 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/nabu/stitching/tests/test_utils.py +21 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/nabu/stitching/tests/test_z_stitching.py +1183 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/nabu/stitching/utils.py +563 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/nabu/stitching/z_stitching.py +2279 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/nabu/tests.py +51 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/nabu/testutils.py +375 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/nabu/thirdparty/__init__.py +0 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/nabu/thirdparty/algotom_convert_sino.py +276 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/nabu/thirdparty/pore3d_deringer_munch.py +108 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/nabu/thirdparty/tomocupy_remove_stripe.py +586 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/nabu/thirdparty/tomopy_phase.py +239 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/nabu/thirdparty/tomwer_load_flats_darks.py +162 -0
- build/lib/build/lib/build/lib/build/lib/build/lib/nabu/utils.py +836 -0
- build/lib/build/lib/build/lib/build/lib/doc/conf.py +137 -0
- build/lib/build/lib/build/lib/build/lib/doc/create_conf_doc.py +38 -0
- build/lib/build/lib/build/lib/build/lib/doc/get_mathjax.py +34 -0
- build/lib/build/lib/build/lib/build/lib/nabu/__init__.py +17 -0
- build/lib/build/lib/build/lib/build/lib/nabu/app/__init__.py +0 -0
- build/lib/build/lib/build/lib/build/lib/nabu/app/bootstrap.py +88 -0
- build/lib/build/lib/build/lib/build/lib/nabu/app/bootstrap_stitching.py +69 -0
- build/lib/build/lib/build/lib/build/lib/nabu/app/cast_volume.py +272 -0
- build/lib/build/lib/build/lib/build/lib/nabu/app/cli_configs.py +626 -0
- build/lib/build/lib/build/lib/build/lib/nabu/app/compare_volumes.py +94 -0
- build/lib/build/lib/build/lib/build/lib/nabu/app/composite_cor.py +144 -0
- build/lib/build/lib/build/lib/build/lib/nabu/app/correct_rot.py +70 -0
- build/lib/build/lib/build/lib/build/lib/nabu/app/create_distortion_map_from_poly.py +153 -0
- build/lib/build/lib/build/lib/build/lib/nabu/app/diag_to_pix.py +358 -0
- build/lib/build/lib/build/lib/build/lib/nabu/app/diag_to_rot.py +449 -0
- build/lib/build/lib/build/lib/build/lib/nabu/app/double_flatfield.py +143 -0
- build/lib/build/lib/build/lib/build/lib/nabu/app/generate_header.py +261 -0
- build/lib/build/lib/build/lib/build/lib/nabu/app/histogram.py +197 -0
- build/lib/build/lib/build/lib/build/lib/nabu/app/multicor.py +90 -0
- build/lib/build/lib/build/lib/build/lib/nabu/app/nx_z_splitter.py +125 -0
- build/lib/build/lib/build/lib/build/lib/nabu/app/parse_reconstruction_log.py +151 -0
- build/lib/build/lib/build/lib/build/lib/nabu/app/prepare_weights_double.py +163 -0
- build/lib/build/lib/build/lib/build/lib/nabu/app/reconstruct.py +120 -0
- build/lib/build/lib/build/lib/build/lib/nabu/app/reconstruct_helical.py +116 -0
- build/lib/build/lib/build/lib/build/lib/nabu/app/reduce_dark_flat.py +181 -0
- build/lib/build/lib/build/lib/build/lib/nabu/app/rotate.py +162 -0
- build/lib/build/lib/build/lib/build/lib/nabu/app/shrink_dataset.py +98 -0
- build/lib/build/lib/build/lib/build/lib/nabu/app/stitching.py +85 -0
- build/lib/build/lib/build/lib/build/lib/nabu/app/tests/test_reduce_dark_flat.py +78 -0
- build/lib/build/lib/build/lib/build/lib/nabu/app/utils.py +33 -0
- build/lib/build/lib/build/lib/build/lib/nabu/app/validator.py +110 -0
- build/lib/build/lib/build/lib/build/lib/nabu/cuda/__init__.py +0 -0
- build/lib/build/lib/build/lib/build/lib/nabu/cuda/convolution.py +8 -0
- build/lib/build/lib/build/lib/build/lib/nabu/cuda/fft.py +4 -0
- build/lib/build/lib/build/lib/build/lib/nabu/cuda/kernel.py +97 -0
- build/lib/build/lib/build/lib/build/lib/nabu/cuda/medfilt.py +6 -0
- build/lib/build/lib/build/lib/build/lib/nabu/cuda/padding.py +6 -0
- build/lib/build/lib/build/lib/build/lib/nabu/cuda/processing.py +75 -0
- build/lib/build/lib/build/lib/build/lib/nabu/cuda/tests/__init__.py +1 -0
- build/lib/build/lib/build/lib/build/lib/nabu/cuda/utils.py +331 -0
- build/lib/build/lib/build/lib/build/lib/nabu/estimation/__init__.py +12 -0
- build/lib/build/lib/build/lib/build/lib/nabu/estimation/alignment.py +578 -0
- build/lib/build/lib/build/lib/build/lib/nabu/estimation/cor.py +1621 -0
- build/lib/build/lib/build/lib/build/lib/nabu/estimation/cor_sino.py +183 -0
- build/lib/build/lib/build/lib/build/lib/nabu/estimation/distortion.py +112 -0
- build/lib/build/lib/build/lib/build/lib/nabu/estimation/focus.py +362 -0
- build/lib/build/lib/build/lib/build/lib/nabu/estimation/tests/__init__.py +0 -0
- build/lib/build/lib/build/lib/build/lib/nabu/estimation/tests/test_alignment.py +70 -0
- build/lib/build/lib/build/lib/build/lib/nabu/estimation/tests/test_cor.py +472 -0
- build/lib/build/lib/build/lib/build/lib/nabu/estimation/tests/test_focus.py +105 -0
- build/lib/build/lib/build/lib/build/lib/nabu/estimation/tests/test_tilt.py +41 -0
- build/lib/build/lib/build/lib/build/lib/nabu/estimation/tests/test_translation.py +78 -0
- build/lib/build/lib/build/lib/build/lib/nabu/estimation/tilt.py +214 -0
- build/lib/build/lib/build/lib/build/lib/nabu/estimation/translation.py +193 -0
- build/lib/build/lib/build/lib/build/lib/nabu/estimation/utils.py +39 -0
- build/lib/build/lib/build/lib/build/lib/nabu/io/__init__.py +2 -0
- build/lib/build/lib/build/lib/build/lib/nabu/io/cast_volume.py +371 -0
- build/lib/build/lib/build/lib/build/lib/nabu/io/detector_distortion.py +305 -0
- build/lib/build/lib/build/lib/build/lib/nabu/io/reader.py +628 -0
- build/lib/build/lib/build/lib/build/lib/nabu/io/reader_helical.py +114 -0
- build/lib/build/lib/build/lib/build/lib/nabu/io/tests/__init__.py +0 -0
- build/lib/build/lib/build/lib/build/lib/nabu/io/tests/test_cast_volume.py +339 -0
- build/lib/build/lib/build/lib/build/lib/nabu/io/tests/test_detector_distortion.py +178 -0
- build/lib/build/lib/build/lib/build/lib/nabu/io/tests/test_writers.py +187 -0
- build/lib/build/lib/build/lib/build/lib/nabu/io/tiffwriter_zmm.py +99 -0
- build/lib/build/lib/build/lib/build/lib/nabu/io/utils.py +263 -0
- build/lib/build/lib/build/lib/build/lib/nabu/io/writer.py +892 -0
- build/lib/build/lib/build/lib/build/lib/nabu/misc/__init__.py +0 -0
- build/lib/build/lib/build/lib/build/lib/nabu/misc/binning.py +98 -0
- build/lib/build/lib/build/lib/build/lib/nabu/misc/fftshift.py +6 -0
- build/lib/build/lib/build/lib/build/lib/nabu/misc/filters.py +24 -0
- build/lib/build/lib/build/lib/build/lib/nabu/misc/fourier_filters.py +152 -0
- build/lib/build/lib/build/lib/build/lib/nabu/misc/histogram.py +6 -0
- build/lib/build/lib/build/lib/build/lib/nabu/misc/histogram_cuda.py +8 -0
- build/lib/build/lib/build/lib/build/lib/nabu/misc/kernel_base.py +4 -0
- build/lib/build/lib/build/lib/build/lib/nabu/misc/padding.py +83 -0
- build/lib/build/lib/build/lib/build/lib/nabu/misc/padding_base.py +6 -0
- build/lib/build/lib/build/lib/build/lib/nabu/misc/processing_base.py +4 -0
- build/lib/build/lib/build/lib/build/lib/nabu/misc/rotation.py +6 -0
- build/lib/build/lib/build/lib/build/lib/nabu/misc/rotation_cuda.py +6 -0
- build/lib/build/lib/build/lib/build/lib/nabu/misc/tests/__init__.py +1 -0
- build/lib/build/lib/build/lib/build/lib/nabu/misc/tests/test_binning.py +48 -0
- build/lib/build/lib/build/lib/build/lib/nabu/misc/tests/test_interpolation.py +70 -0
- build/lib/build/lib/build/lib/build/lib/nabu/misc/transpose.py +6 -0
- build/lib/build/lib/build/lib/build/lib/nabu/misc/unsharp.py +4 -0
- build/lib/build/lib/build/lib/build/lib/nabu/misc/unsharp_cuda.py +6 -0
- build/lib/build/lib/build/lib/build/lib/nabu/misc/unsharp_opencl.py +8 -0
- build/lib/build/lib/build/lib/build/lib/nabu/misc/utils.py +117 -0
- build/lib/build/lib/build/lib/build/lib/nabu/opencl/__init__.py +0 -0
- build/lib/build/lib/build/lib/build/lib/nabu/opencl/fft.py +6 -0
- build/lib/build/lib/build/lib/build/lib/nabu/opencl/kernel.py +135 -0
- build/lib/build/lib/build/lib/build/lib/nabu/opencl/memcpy.py +35 -0
- build/lib/build/lib/build/lib/build/lib/nabu/opencl/padding.py +6 -0
- build/lib/build/lib/build/lib/build/lib/nabu/opencl/processing.py +62 -0
- build/lib/build/lib/build/lib/build/lib/nabu/opencl/tests/__init__.py +0 -0
- build/lib/build/lib/build/lib/build/lib/nabu/opencl/utils.py +292 -0
- build/lib/build/lib/build/lib/build/lib/nabu/pipeline/__init__.py +0 -0
- build/lib/build/lib/build/lib/build/lib/nabu/pipeline/config.py +265 -0
- build/lib/build/lib/build/lib/build/lib/nabu/pipeline/config_validators.py +589 -0
- build/lib/build/lib/build/lib/build/lib/nabu/pipeline/datadump.py +164 -0
- build/lib/build/lib/build/lib/build/lib/nabu/pipeline/dataset_validator.py +211 -0
- build/lib/build/lib/build/lib/build/lib/nabu/pipeline/detector_distortion_provider.py +20 -0
- build/lib/build/lib/build/lib/build/lib/nabu/pipeline/estimators.py +1012 -0
- build/lib/build/lib/build/lib/build/lib/nabu/pipeline/fallback_utils.py +149 -0
- build/lib/build/lib/build/lib/build/lib/nabu/pipeline/fullfield/__init__.py +0 -0
- build/lib/build/lib/build/lib/build/lib/nabu/pipeline/fullfield/chunked.py +849 -0
- build/lib/build/lib/build/lib/build/lib/nabu/pipeline/fullfield/chunked_cuda.py +152 -0
- build/lib/build/lib/build/lib/build/lib/nabu/pipeline/fullfield/computations.py +260 -0
- build/lib/build/lib/build/lib/build/lib/nabu/pipeline/fullfield/dataset_validator.py +63 -0
- build/lib/build/lib/build/lib/build/lib/nabu/pipeline/fullfield/nabu_config.py +590 -0
- build/lib/build/lib/build/lib/build/lib/nabu/pipeline/fullfield/processconfig.py +825 -0
- build/lib/build/lib/build/lib/build/lib/nabu/pipeline/fullfield/reconstruction.py +851 -0
- build/lib/build/lib/build/lib/build/lib/nabu/pipeline/helical/__init__.py +0 -0
- build/lib/build/lib/build/lib/build/lib/nabu/pipeline/helical/dataset_validator.py +19 -0
- build/lib/build/lib/build/lib/build/lib/nabu/pipeline/helical/fbp.py +147 -0
- build/lib/build/lib/build/lib/build/lib/nabu/pipeline/helical/filtering.py +246 -0
- build/lib/build/lib/build/lib/build/lib/nabu/pipeline/helical/gridded_accumulator.py +575 -0
- build/lib/build/lib/build/lib/build/lib/nabu/pipeline/helical/helical_chunked_regridded.py +1670 -0
- build/lib/build/lib/build/lib/build/lib/nabu/pipeline/helical/helical_chunked_regridded_cuda.py +119 -0
- build/lib/build/lib/build/lib/build/lib/nabu/pipeline/helical/helical_reconstruction.py +598 -0
- build/lib/build/lib/build/lib/build/lib/nabu/pipeline/helical/helical_utils.py +42 -0
- build/lib/build/lib/build/lib/build/lib/nabu/pipeline/helical/nabu_config.py +175 -0
- build/lib/build/lib/build/lib/build/lib/nabu/pipeline/helical/processconfig.py +62 -0
- build/lib/build/lib/build/lib/build/lib/nabu/pipeline/helical/span_strategy.py +483 -0
- build/lib/build/lib/build/lib/build/lib/nabu/pipeline/helical/tests/__init__.py +0 -0
- build/lib/build/lib/build/lib/build/lib/nabu/pipeline/helical/tests/test_accumulator.py +157 -0
- build/lib/build/lib/build/lib/build/lib/nabu/pipeline/helical/tests/test_pipeline_elements_full.py +355 -0
- build/lib/build/lib/build/lib/build/lib/nabu/pipeline/helical/tests/test_strategy.py +61 -0
- build/lib/build/lib/build/lib/build/lib/nabu/pipeline/helical/utils.py +51 -0
- build/lib/build/lib/build/lib/build/lib/nabu/pipeline/helical/weight_balancer.py +101 -0
- build/lib/build/lib/build/lib/build/lib/nabu/pipeline/params.py +163 -0
- build/lib/build/lib/build/lib/build/lib/nabu/pipeline/processconfig.py +210 -0
- build/lib/build/lib/build/lib/build/lib/nabu/pipeline/tests/test_chunk_reader.py +78 -0
- build/lib/build/lib/build/lib/build/lib/nabu/pipeline/tests/test_estimators.py +149 -0
- build/lib/build/lib/build/lib/build/lib/nabu/pipeline/utils.py +116 -0
- build/lib/build/lib/build/lib/build/lib/nabu/pipeline/writer.py +193 -0
- build/lib/build/lib/build/lib/build/lib/nabu/pipeline/xrdct/__init__.py +0 -0
- build/lib/build/lib/build/lib/build/lib/nabu/preproc/__init__.py +7 -0
- build/lib/build/lib/build/lib/build/lib/nabu/preproc/alignment.py +11 -0
- build/lib/build/lib/build/lib/build/lib/nabu/preproc/ccd.py +161 -0
- build/lib/build/lib/build/lib/build/lib/nabu/preproc/ccd_cuda.py +169 -0
- build/lib/build/lib/build/lib/build/lib/nabu/preproc/ctf.py +361 -0
- build/lib/build/lib/build/lib/build/lib/nabu/preproc/ctf_cuda.py +142 -0
- build/lib/build/lib/build/lib/build/lib/nabu/preproc/distortion.py +92 -0
- build/lib/build/lib/build/lib/build/lib/nabu/preproc/double_flatfield.py +212 -0
- build/lib/build/lib/build/lib/build/lib/nabu/preproc/double_flatfield_cuda.py +174 -0
- build/lib/build/lib/build/lib/build/lib/nabu/preproc/double_flatfield_variable_region.py +68 -0
- build/lib/build/lib/build/lib/build/lib/nabu/preproc/flatfield.py +448 -0
- build/lib/build/lib/build/lib/build/lib/nabu/preproc/flatfield_cuda.py +144 -0
- build/lib/build/lib/build/lib/build/lib/nabu/preproc/flatfield_variable_region.py +79 -0
- build/lib/build/lib/build/lib/build/lib/nabu/preproc/phase.py +425 -0
- build/lib/build/lib/build/lib/build/lib/nabu/preproc/phase_cuda.py +143 -0
- build/lib/build/lib/build/lib/build/lib/nabu/preproc/shift.py +95 -0
- build/lib/build/lib/build/lib/build/lib/nabu/preproc/shift_cuda.py +102 -0
- build/lib/build/lib/build/lib/build/lib/nabu/preproc/tests/__init__.py +1 -0
- build/lib/build/lib/build/lib/build/lib/nabu/preproc/tests/test_ccd_corr.py +59 -0
- build/lib/build/lib/build/lib/build/lib/nabu/preproc/tests/test_ctf.py +250 -0
- build/lib/build/lib/build/lib/build/lib/nabu/preproc/tests/test_double_flatfield.py +86 -0
- build/lib/build/lib/build/lib/build/lib/nabu/preproc/tests/test_flatfield.py +626 -0
- build/lib/build/lib/build/lib/build/lib/nabu/preproc/tests/test_paganin.py +67 -0
- build/lib/build/lib/build/lib/build/lib/nabu/preproc/tests/test_vshift.py +73 -0
- build/lib/build/lib/build/lib/build/lib/nabu/processing/__init__.py +0 -0
- build/lib/build/lib/build/lib/build/lib/nabu/processing/convolution_cuda.py +375 -0
- build/lib/build/lib/build/lib/build/lib/nabu/processing/fft_base.py +163 -0
- build/lib/build/lib/build/lib/build/lib/nabu/processing/fft_cuda.py +256 -0
- build/lib/build/lib/build/lib/build/lib/nabu/processing/fft_opencl.py +54 -0
- build/lib/build/lib/build/lib/build/lib/nabu/processing/fftshift.py +134 -0
- build/lib/build/lib/build/lib/build/lib/nabu/processing/histogram.py +286 -0
- build/lib/build/lib/build/lib/build/lib/nabu/processing/histogram_cuda.py +103 -0
- build/lib/build/lib/build/lib/build/lib/nabu/processing/kernel_base.py +126 -0
- build/lib/build/lib/build/lib/build/lib/nabu/processing/medfilt_cuda.py +159 -0
- build/lib/build/lib/build/lib/build/lib/nabu/processing/muladd.py +29 -0
- build/lib/build/lib/build/lib/build/lib/nabu/processing/muladd_cuda.py +68 -0
- build/lib/build/lib/build/lib/build/lib/nabu/processing/padding_base.py +71 -0
- build/lib/build/lib/build/lib/build/lib/nabu/processing/padding_cuda.py +75 -0
- build/lib/build/lib/build/lib/build/lib/nabu/processing/padding_opencl.py +77 -0
- build/lib/build/lib/build/lib/build/lib/nabu/processing/processing_base.py +123 -0
- build/lib/build/lib/build/lib/build/lib/nabu/processing/roll_opencl.py +64 -0
- build/lib/build/lib/build/lib/build/lib/nabu/processing/rotation.py +63 -0
- build/lib/build/lib/build/lib/build/lib/nabu/processing/rotation_cuda.py +66 -0
- build/lib/build/lib/build/lib/build/lib/nabu/processing/tests/__init__.py +0 -0
- build/lib/build/lib/build/lib/build/lib/nabu/processing/tests/test_fft.py +268 -0
- build/lib/build/lib/build/lib/build/lib/nabu/processing/tests/test_fftshift.py +71 -0
- build/lib/build/lib/build/lib/build/lib/nabu/processing/tests/test_histogram.py +55 -0
- build/lib/build/lib/build/lib/build/lib/nabu/processing/tests/test_medfilt.py +77 -0
- build/lib/build/lib/build/lib/build/lib/nabu/processing/tests/test_muladd.py +54 -0
- build/lib/build/lib/build/lib/build/lib/nabu/processing/tests/test_padding.py +247 -0
- build/lib/build/lib/build/lib/build/lib/nabu/processing/tests/test_roll.py +63 -0
- build/lib/build/lib/build/lib/build/lib/nabu/processing/tests/test_rotation.py +83 -0
- build/lib/build/lib/build/lib/build/lib/nabu/processing/tests/test_transpose.py +72 -0
- build/lib/build/lib/build/lib/build/lib/nabu/processing/tests/test_unsharp.py +106 -0
- build/lib/build/lib/build/lib/build/lib/nabu/processing/transpose.py +126 -0
- build/lib/build/lib/build/lib/build/lib/nabu/processing/unsharp.py +79 -0
- build/lib/build/lib/build/lib/build/lib/nabu/processing/unsharp_cuda.py +53 -0
- build/lib/build/lib/build/lib/build/lib/nabu/processing/unsharp_opencl.py +75 -0
- build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/__init__.py +3 -0
- build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/cone.py +241 -0
- build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/fbp.py +124 -0
- build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/fbp_base.py +391 -0
- build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/fbp_opencl.py +78 -0
- build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/filtering.py +220 -0
- build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/filtering_cuda.py +103 -0
- build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/filtering_opencl.py +111 -0
- build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/projection.py +240 -0
- build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/reconstructor.py +174 -0
- build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/reconstructor_cuda.py +44 -0
- build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/rings.py +248 -0
- build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/rings_cuda.py +322 -0
- build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/sinogram.py +467 -0
- build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/sinogram_cuda.py +250 -0
- build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/sinogram_opencl.py +40 -0
- build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/tests/__init__.py +1 -0
- build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/tests/test_cone.py +308 -0
- build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/tests/test_deringer.py +220 -0
- build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/tests/test_fbp.py +252 -0
- build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/tests/test_filtering.py +133 -0
- build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/tests/test_halftomo.py +100 -0
- build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/tests/test_projector.py +164 -0
- build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/tests/test_reconstructor.py +93 -0
- build/lib/build/lib/build/lib/build/lib/nabu/reconstruction/tests/test_sino_normalization.py +85 -0
- build/lib/build/lib/build/lib/build/lib/nabu/resources/__init__.py +0 -0
- build/lib/build/lib/build/lib/build/lib/nabu/resources/cli/__init__.py +0 -0
- build/lib/build/lib/build/lib/build/lib/nabu/resources/cor.py +5 -0
- build/lib/build/lib/build/lib/build/lib/nabu/resources/dataset_analyzer.py +469 -0
- build/lib/build/lib/build/lib/build/lib/nabu/resources/gpu.py +169 -0
- build/lib/build/lib/build/lib/build/lib/nabu/resources/logger.py +130 -0
- build/lib/build/lib/build/lib/build/lib/nabu/resources/nxflatfield.py +217 -0
- build/lib/build/lib/build/lib/build/lib/nabu/resources/templates/__init__.py +0 -0
- build/lib/build/lib/build/lib/build/lib/nabu/resources/tests/__init__.py +0 -0
- build/lib/build/lib/build/lib/build/lib/nabu/resources/tests/test_nxflatfield.py +104 -0
- build/lib/build/lib/build/lib/build/lib/nabu/resources/tests/test_units.py +47 -0
- build/lib/build/lib/build/lib/build/lib/nabu/resources/utils.py +174 -0
- build/lib/build/lib/build/lib/build/lib/nabu/stitching/__init__.py +0 -0
- build/lib/build/lib/build/lib/build/lib/nabu/stitching/alignment.py +184 -0
- build/lib/build/lib/build/lib/build/lib/nabu/stitching/config.py +1286 -0
- build/lib/build/lib/build/lib/build/lib/nabu/stitching/definitions.py +6 -0
- build/lib/build/lib/build/lib/build/lib/nabu/stitching/frame_composition.py +155 -0
- build/lib/build/lib/build/lib/build/lib/nabu/stitching/overlap.py +373 -0
- build/lib/build/lib/build/lib/build/lib/nabu/stitching/sample_normalization.py +60 -0
- build/lib/build/lib/build/lib/build/lib/nabu/stitching/slurm_utils.py +204 -0
- build/lib/build/lib/build/lib/build/lib/nabu/stitching/tests/__init__.py +0 -0
- build/lib/build/lib/build/lib/build/lib/nabu/stitching/tests/test_alignment.py +99 -0
- build/lib/build/lib/build/lib/build/lib/nabu/stitching/tests/test_config.py +226 -0
- build/lib/build/lib/build/lib/build/lib/nabu/stitching/tests/test_frame_composition.py +180 -0
- build/lib/build/lib/build/lib/build/lib/nabu/stitching/tests/test_overlap.py +98 -0
- build/lib/build/lib/build/lib/build/lib/nabu/stitching/tests/test_sample_normalization.py +49 -0
- build/lib/build/lib/build/lib/build/lib/nabu/stitching/tests/test_slurm_utils.py +146 -0
- build/lib/build/lib/build/lib/build/lib/nabu/stitching/tests/test_utils.py +21 -0
- build/lib/build/lib/build/lib/build/lib/nabu/stitching/tests/test_z_stitching.py +1183 -0
- build/lib/build/lib/build/lib/build/lib/nabu/stitching/utils.py +563 -0
- build/lib/build/lib/build/lib/build/lib/nabu/stitching/z_stitching.py +2279 -0
- build/lib/build/lib/build/lib/build/lib/nabu/tests.py +51 -0
- build/lib/build/lib/build/lib/build/lib/nabu/testutils.py +375 -0
- build/lib/build/lib/build/lib/build/lib/nabu/thirdparty/__init__.py +0 -0
- build/lib/build/lib/build/lib/build/lib/nabu/thirdparty/algotom_convert_sino.py +276 -0
- build/lib/build/lib/build/lib/build/lib/nabu/thirdparty/pore3d_deringer_munch.py +108 -0
- build/lib/build/lib/build/lib/build/lib/nabu/thirdparty/tomocupy_remove_stripe.py +586 -0
- build/lib/build/lib/build/lib/build/lib/nabu/thirdparty/tomopy_phase.py +239 -0
- build/lib/build/lib/build/lib/build/lib/nabu/thirdparty/tomwer_load_flats_darks.py +162 -0
- build/lib/build/lib/build/lib/build/lib/nabu/utils.py +836 -0
- build/lib/build/lib/build/lib/doc/conf.py +137 -0
- build/lib/build/lib/build/lib/doc/create_conf_doc.py +38 -0
- build/lib/build/lib/build/lib/doc/get_mathjax.py +34 -0
- build/lib/build/lib/build/lib/nabu/__init__.py +17 -0
- build/lib/build/lib/build/lib/nabu/app/__init__.py +0 -0
- build/lib/build/lib/build/lib/nabu/app/bootstrap.py +88 -0
- build/lib/build/lib/build/lib/nabu/app/bootstrap_stitching.py +69 -0
- build/lib/build/lib/build/lib/nabu/app/cast_volume.py +272 -0
- build/lib/build/lib/build/lib/nabu/app/cli_configs.py +626 -0
- build/lib/build/lib/build/lib/nabu/app/compare_volumes.py +94 -0
- build/lib/build/lib/build/lib/nabu/app/composite_cor.py +144 -0
- build/lib/build/lib/build/lib/nabu/app/correct_rot.py +70 -0
- build/lib/build/lib/build/lib/nabu/app/create_distortion_map_from_poly.py +153 -0
- build/lib/build/lib/build/lib/nabu/app/diag_to_pix.py +358 -0
- build/lib/build/lib/build/lib/nabu/app/diag_to_rot.py +449 -0
- build/lib/build/lib/build/lib/nabu/app/double_flatfield.py +143 -0
- build/lib/build/lib/build/lib/nabu/app/generate_header.py +261 -0
- build/lib/build/lib/build/lib/nabu/app/histogram.py +197 -0
- build/lib/build/lib/build/lib/nabu/app/multicor.py +90 -0
- build/lib/build/lib/build/lib/nabu/app/nx_z_splitter.py +125 -0
- build/lib/build/lib/build/lib/nabu/app/parse_reconstruction_log.py +151 -0
- build/lib/build/lib/build/lib/nabu/app/prepare_weights_double.py +163 -0
- build/lib/build/lib/build/lib/nabu/app/reconstruct.py +120 -0
- build/lib/build/lib/build/lib/nabu/app/reconstruct_helical.py +116 -0
- build/lib/build/lib/build/lib/nabu/app/reduce_dark_flat.py +181 -0
- build/lib/build/lib/build/lib/nabu/app/rotate.py +162 -0
- build/lib/build/lib/build/lib/nabu/app/shrink_dataset.py +98 -0
- build/lib/build/lib/build/lib/nabu/app/stitching.py +85 -0
- build/lib/build/lib/build/lib/nabu/app/tests/test_reduce_dark_flat.py +78 -0
- build/lib/build/lib/build/lib/nabu/app/utils.py +33 -0
- build/lib/build/lib/build/lib/nabu/app/validator.py +110 -0
- build/lib/build/lib/build/lib/nabu/cuda/__init__.py +0 -0
- build/lib/build/lib/build/lib/nabu/cuda/convolution.py +8 -0
- build/lib/build/lib/build/lib/nabu/cuda/fft.py +4 -0
- build/lib/build/lib/build/lib/nabu/cuda/kernel.py +97 -0
- build/lib/build/lib/build/lib/nabu/cuda/medfilt.py +6 -0
- build/lib/build/lib/build/lib/nabu/cuda/padding.py +6 -0
- build/lib/build/lib/build/lib/nabu/cuda/processing.py +75 -0
- build/lib/build/lib/build/lib/nabu/cuda/tests/__init__.py +1 -0
- build/lib/build/lib/build/lib/nabu/cuda/utils.py +331 -0
- build/lib/build/lib/build/lib/nabu/estimation/__init__.py +12 -0
- build/lib/build/lib/build/lib/nabu/estimation/alignment.py +578 -0
- build/lib/build/lib/build/lib/nabu/estimation/cor.py +1621 -0
- build/lib/build/lib/build/lib/nabu/estimation/cor_sino.py +183 -0
- build/lib/build/lib/build/lib/nabu/estimation/distortion.py +112 -0
- build/lib/build/lib/build/lib/nabu/estimation/focus.py +362 -0
- build/lib/build/lib/build/lib/nabu/estimation/tests/__init__.py +0 -0
- build/lib/build/lib/build/lib/nabu/estimation/tests/test_alignment.py +70 -0
- build/lib/build/lib/build/lib/nabu/estimation/tests/test_cor.py +472 -0
- build/lib/build/lib/build/lib/nabu/estimation/tests/test_focus.py +105 -0
- build/lib/build/lib/build/lib/nabu/estimation/tests/test_tilt.py +41 -0
- build/lib/build/lib/build/lib/nabu/estimation/tests/test_translation.py +78 -0
- build/lib/build/lib/build/lib/nabu/estimation/tilt.py +214 -0
- build/lib/build/lib/build/lib/nabu/estimation/translation.py +193 -0
- build/lib/build/lib/build/lib/nabu/estimation/utils.py +39 -0
- build/lib/build/lib/build/lib/nabu/io/__init__.py +2 -0
- build/lib/build/lib/build/lib/nabu/io/cast_volume.py +371 -0
- build/lib/build/lib/build/lib/nabu/io/detector_distortion.py +305 -0
- build/lib/build/lib/build/lib/nabu/io/reader.py +628 -0
- build/lib/build/lib/build/lib/nabu/io/reader_helical.py +114 -0
- build/lib/build/lib/build/lib/nabu/io/tests/__init__.py +0 -0
- build/lib/build/lib/build/lib/nabu/io/tests/test_cast_volume.py +339 -0
- build/lib/build/lib/build/lib/nabu/io/tests/test_detector_distortion.py +178 -0
- build/lib/build/lib/build/lib/nabu/io/tests/test_writers.py +187 -0
- build/lib/build/lib/build/lib/nabu/io/tiffwriter_zmm.py +99 -0
- build/lib/build/lib/build/lib/nabu/io/utils.py +263 -0
- build/lib/build/lib/build/lib/nabu/io/writer.py +892 -0
- build/lib/build/lib/build/lib/nabu/misc/__init__.py +0 -0
- build/lib/build/lib/build/lib/nabu/misc/binning.py +98 -0
- build/lib/build/lib/build/lib/nabu/misc/fftshift.py +6 -0
- build/lib/build/lib/build/lib/nabu/misc/filters.py +24 -0
- build/lib/build/lib/build/lib/nabu/misc/fourier_filters.py +152 -0
- build/lib/build/lib/build/lib/nabu/misc/histogram.py +6 -0
- build/lib/build/lib/build/lib/nabu/misc/histogram_cuda.py +8 -0
- build/lib/build/lib/build/lib/nabu/misc/kernel_base.py +4 -0
- build/lib/build/lib/build/lib/nabu/misc/padding.py +83 -0
- build/lib/build/lib/build/lib/nabu/misc/padding_base.py +6 -0
- build/lib/build/lib/build/lib/nabu/misc/processing_base.py +4 -0
- build/lib/build/lib/build/lib/nabu/misc/rotation.py +6 -0
- build/lib/build/lib/build/lib/nabu/misc/rotation_cuda.py +6 -0
- build/lib/build/lib/build/lib/nabu/misc/tests/__init__.py +1 -0
- build/lib/build/lib/build/lib/nabu/misc/tests/test_binning.py +48 -0
- build/lib/build/lib/build/lib/nabu/misc/tests/test_interpolation.py +70 -0
- build/lib/build/lib/build/lib/nabu/misc/transpose.py +6 -0
- build/lib/build/lib/build/lib/nabu/misc/unsharp.py +4 -0
- build/lib/build/lib/build/lib/nabu/misc/unsharp_cuda.py +6 -0
- build/lib/build/lib/build/lib/nabu/misc/unsharp_opencl.py +8 -0
- build/lib/build/lib/build/lib/nabu/misc/utils.py +117 -0
- build/lib/build/lib/build/lib/nabu/opencl/__init__.py +0 -0
- build/lib/build/lib/build/lib/nabu/opencl/fft.py +6 -0
- build/lib/build/lib/build/lib/nabu/opencl/kernel.py +135 -0
- build/lib/build/lib/build/lib/nabu/opencl/memcpy.py +35 -0
- build/lib/build/lib/build/lib/nabu/opencl/padding.py +6 -0
- build/lib/build/lib/build/lib/nabu/opencl/processing.py +62 -0
- build/lib/build/lib/build/lib/nabu/opencl/tests/__init__.py +0 -0
- build/lib/build/lib/build/lib/nabu/opencl/utils.py +292 -0
- build/lib/build/lib/build/lib/nabu/pipeline/__init__.py +0 -0
- build/lib/build/lib/build/lib/nabu/pipeline/config.py +265 -0
- build/lib/build/lib/build/lib/nabu/pipeline/config_validators.py +589 -0
- build/lib/build/lib/build/lib/nabu/pipeline/datadump.py +164 -0
- build/lib/build/lib/build/lib/nabu/pipeline/dataset_validator.py +211 -0
- build/lib/build/lib/build/lib/nabu/pipeline/detector_distortion_provider.py +20 -0
- build/lib/build/lib/build/lib/nabu/pipeline/estimators.py +1012 -0
- build/lib/build/lib/build/lib/nabu/pipeline/fallback_utils.py +149 -0
- build/lib/build/lib/build/lib/nabu/pipeline/fullfield/__init__.py +0 -0
- build/lib/build/lib/build/lib/nabu/pipeline/fullfield/chunked.py +849 -0
- build/lib/build/lib/build/lib/nabu/pipeline/fullfield/chunked_cuda.py +152 -0
- build/lib/build/lib/build/lib/nabu/pipeline/fullfield/computations.py +260 -0
- build/lib/build/lib/build/lib/nabu/pipeline/fullfield/dataset_validator.py +63 -0
- build/lib/build/lib/build/lib/nabu/pipeline/fullfield/nabu_config.py +590 -0
- build/lib/build/lib/build/lib/nabu/pipeline/fullfield/processconfig.py +825 -0
- build/lib/build/lib/build/lib/nabu/pipeline/fullfield/reconstruction.py +851 -0
- build/lib/build/lib/build/lib/nabu/pipeline/helical/__init__.py +0 -0
- build/lib/build/lib/build/lib/nabu/pipeline/helical/dataset_validator.py +19 -0
- build/lib/build/lib/build/lib/nabu/pipeline/helical/fbp.py +147 -0
- build/lib/build/lib/build/lib/nabu/pipeline/helical/filtering.py +246 -0
- build/lib/build/lib/build/lib/nabu/pipeline/helical/gridded_accumulator.py +575 -0
- build/lib/build/lib/build/lib/nabu/pipeline/helical/helical_chunked_regridded.py +1670 -0
- build/lib/build/lib/build/lib/nabu/pipeline/helical/helical_chunked_regridded_cuda.py +119 -0
- build/lib/build/lib/build/lib/nabu/pipeline/helical/helical_reconstruction.py +598 -0
- build/lib/build/lib/build/lib/nabu/pipeline/helical/helical_utils.py +42 -0
- build/lib/build/lib/build/lib/nabu/pipeline/helical/nabu_config.py +175 -0
- build/lib/build/lib/build/lib/nabu/pipeline/helical/processconfig.py +62 -0
- build/lib/build/lib/build/lib/nabu/pipeline/helical/span_strategy.py +483 -0
- build/lib/build/lib/build/lib/nabu/pipeline/helical/tests/__init__.py +0 -0
- build/lib/build/lib/build/lib/nabu/pipeline/helical/tests/test_accumulator.py +157 -0
- build/lib/build/lib/build/lib/nabu/pipeline/helical/tests/test_pipeline_elements_full.py +355 -0
- build/lib/build/lib/build/lib/nabu/pipeline/helical/tests/test_strategy.py +61 -0
- build/lib/build/lib/build/lib/nabu/pipeline/helical/utils.py +51 -0
- build/lib/build/lib/build/lib/nabu/pipeline/helical/weight_balancer.py +101 -0
- build/lib/build/lib/build/lib/nabu/pipeline/params.py +163 -0
- build/lib/build/lib/build/lib/nabu/pipeline/processconfig.py +210 -0
- build/lib/build/lib/build/lib/nabu/pipeline/tests/test_chunk_reader.py +78 -0
- build/lib/build/lib/build/lib/nabu/pipeline/tests/test_estimators.py +149 -0
- build/lib/build/lib/build/lib/nabu/pipeline/utils.py +116 -0
- build/lib/build/lib/build/lib/nabu/pipeline/writer.py +193 -0
- build/lib/build/lib/build/lib/nabu/pipeline/xrdct/__init__.py +0 -0
- build/lib/build/lib/build/lib/nabu/preproc/__init__.py +7 -0
- build/lib/build/lib/build/lib/nabu/preproc/alignment.py +11 -0
- build/lib/build/lib/build/lib/nabu/preproc/ccd.py +161 -0
- build/lib/build/lib/build/lib/nabu/preproc/ccd_cuda.py +169 -0
- build/lib/build/lib/build/lib/nabu/preproc/ctf.py +361 -0
- build/lib/build/lib/build/lib/nabu/preproc/ctf_cuda.py +142 -0
- build/lib/build/lib/build/lib/nabu/preproc/distortion.py +92 -0
- build/lib/build/lib/build/lib/nabu/preproc/double_flatfield.py +212 -0
- build/lib/build/lib/build/lib/nabu/preproc/double_flatfield_cuda.py +174 -0
- build/lib/build/lib/build/lib/nabu/preproc/double_flatfield_variable_region.py +68 -0
- build/lib/build/lib/build/lib/nabu/preproc/flatfield.py +448 -0
- build/lib/build/lib/build/lib/nabu/preproc/flatfield_cuda.py +144 -0
- build/lib/build/lib/build/lib/nabu/preproc/flatfield_variable_region.py +79 -0
- build/lib/build/lib/build/lib/nabu/preproc/phase.py +425 -0
- build/lib/build/lib/build/lib/nabu/preproc/phase_cuda.py +143 -0
- build/lib/build/lib/build/lib/nabu/preproc/shift.py +95 -0
- build/lib/build/lib/build/lib/nabu/preproc/shift_cuda.py +102 -0
- build/lib/build/lib/build/lib/nabu/preproc/tests/__init__.py +1 -0
- build/lib/build/lib/build/lib/nabu/preproc/tests/test_ccd_corr.py +59 -0
- build/lib/build/lib/build/lib/nabu/preproc/tests/test_ctf.py +250 -0
- build/lib/build/lib/build/lib/nabu/preproc/tests/test_double_flatfield.py +86 -0
- build/lib/build/lib/build/lib/nabu/preproc/tests/test_flatfield.py +626 -0
- build/lib/build/lib/build/lib/nabu/preproc/tests/test_paganin.py +67 -0
- build/lib/build/lib/build/lib/nabu/preproc/tests/test_vshift.py +73 -0
- build/lib/build/lib/build/lib/nabu/processing/__init__.py +0 -0
- build/lib/build/lib/build/lib/nabu/processing/convolution_cuda.py +375 -0
- build/lib/build/lib/build/lib/nabu/processing/fft_base.py +163 -0
- build/lib/build/lib/build/lib/nabu/processing/fft_cuda.py +256 -0
- build/lib/build/lib/build/lib/nabu/processing/fft_opencl.py +54 -0
- build/lib/build/lib/build/lib/nabu/processing/fftshift.py +134 -0
- build/lib/build/lib/build/lib/nabu/processing/histogram.py +286 -0
- build/lib/build/lib/build/lib/nabu/processing/histogram_cuda.py +103 -0
- build/lib/build/lib/build/lib/nabu/processing/kernel_base.py +126 -0
- build/lib/build/lib/build/lib/nabu/processing/medfilt_cuda.py +159 -0
- build/lib/build/lib/build/lib/nabu/processing/muladd.py +29 -0
- build/lib/build/lib/build/lib/nabu/processing/muladd_cuda.py +68 -0
- build/lib/build/lib/build/lib/nabu/processing/padding_base.py +71 -0
- build/lib/build/lib/build/lib/nabu/processing/padding_cuda.py +75 -0
- build/lib/build/lib/build/lib/nabu/processing/padding_opencl.py +77 -0
- build/lib/build/lib/build/lib/nabu/processing/processing_base.py +123 -0
- build/lib/build/lib/build/lib/nabu/processing/roll_opencl.py +64 -0
- build/lib/build/lib/build/lib/nabu/processing/rotation.py +63 -0
- build/lib/build/lib/build/lib/nabu/processing/rotation_cuda.py +66 -0
- build/lib/build/lib/build/lib/nabu/processing/tests/__init__.py +0 -0
- build/lib/build/lib/build/lib/nabu/processing/tests/test_fft.py +268 -0
- build/lib/build/lib/build/lib/nabu/processing/tests/test_fftshift.py +71 -0
- build/lib/build/lib/build/lib/nabu/processing/tests/test_histogram.py +55 -0
- build/lib/build/lib/build/lib/nabu/processing/tests/test_medfilt.py +77 -0
- build/lib/build/lib/build/lib/nabu/processing/tests/test_muladd.py +54 -0
- build/lib/build/lib/build/lib/nabu/processing/tests/test_padding.py +247 -0
- build/lib/build/lib/build/lib/nabu/processing/tests/test_roll.py +63 -0
- build/lib/build/lib/build/lib/nabu/processing/tests/test_rotation.py +83 -0
- build/lib/build/lib/build/lib/nabu/processing/tests/test_transpose.py +72 -0
- build/lib/build/lib/build/lib/nabu/processing/tests/test_unsharp.py +106 -0
- build/lib/build/lib/build/lib/nabu/processing/transpose.py +126 -0
- build/lib/build/lib/build/lib/nabu/processing/unsharp.py +79 -0
- build/lib/build/lib/build/lib/nabu/processing/unsharp_cuda.py +53 -0
- build/lib/build/lib/build/lib/nabu/processing/unsharp_opencl.py +75 -0
- build/lib/build/lib/build/lib/nabu/reconstruction/__init__.py +3 -0
- build/lib/build/lib/build/lib/nabu/reconstruction/cone.py +241 -0
- build/lib/build/lib/build/lib/nabu/reconstruction/fbp.py +124 -0
- build/lib/build/lib/build/lib/nabu/reconstruction/fbp_base.py +391 -0
- build/lib/build/lib/build/lib/nabu/reconstruction/fbp_opencl.py +78 -0
- build/lib/build/lib/build/lib/nabu/reconstruction/filtering.py +220 -0
- build/lib/build/lib/build/lib/nabu/reconstruction/filtering_cuda.py +103 -0
- build/lib/build/lib/build/lib/nabu/reconstruction/filtering_opencl.py +111 -0
- build/lib/build/lib/build/lib/nabu/reconstruction/projection.py +240 -0
- build/lib/build/lib/build/lib/nabu/reconstruction/reconstructor.py +174 -0
- build/lib/build/lib/build/lib/nabu/reconstruction/reconstructor_cuda.py +44 -0
- build/lib/build/lib/build/lib/nabu/reconstruction/rings.py +248 -0
- build/lib/build/lib/build/lib/nabu/reconstruction/rings_cuda.py +322 -0
- build/lib/build/lib/build/lib/nabu/reconstruction/sinogram.py +467 -0
- build/lib/build/lib/build/lib/nabu/reconstruction/sinogram_cuda.py +250 -0
- build/lib/build/lib/build/lib/nabu/reconstruction/sinogram_opencl.py +40 -0
- build/lib/build/lib/build/lib/nabu/reconstruction/tests/__init__.py +1 -0
- build/lib/build/lib/build/lib/nabu/reconstruction/tests/test_cone.py +308 -0
- build/lib/build/lib/build/lib/nabu/reconstruction/tests/test_deringer.py +220 -0
- build/lib/build/lib/build/lib/nabu/reconstruction/tests/test_fbp.py +252 -0
- build/lib/build/lib/build/lib/nabu/reconstruction/tests/test_filtering.py +133 -0
- build/lib/build/lib/build/lib/nabu/reconstruction/tests/test_halftomo.py +100 -0
- build/lib/build/lib/build/lib/nabu/reconstruction/tests/test_projector.py +164 -0
- build/lib/build/lib/build/lib/nabu/reconstruction/tests/test_reconstructor.py +93 -0
- build/lib/build/lib/build/lib/nabu/reconstruction/tests/test_sino_normalization.py +85 -0
- build/lib/build/lib/build/lib/nabu/resources/__init__.py +0 -0
- build/lib/build/lib/build/lib/nabu/resources/cli/__init__.py +0 -0
- build/lib/build/lib/build/lib/nabu/resources/cor.py +5 -0
- build/lib/build/lib/build/lib/nabu/resources/dataset_analyzer.py +469 -0
- build/lib/build/lib/build/lib/nabu/resources/gpu.py +169 -0
- build/lib/build/lib/build/lib/nabu/resources/logger.py +130 -0
- build/lib/build/lib/build/lib/nabu/resources/nxflatfield.py +217 -0
- build/lib/build/lib/build/lib/nabu/resources/templates/__init__.py +0 -0
- build/lib/build/lib/build/lib/nabu/resources/tests/__init__.py +0 -0
- build/lib/build/lib/build/lib/nabu/resources/tests/test_nxflatfield.py +104 -0
- build/lib/build/lib/build/lib/nabu/resources/tests/test_units.py +47 -0
- build/lib/build/lib/build/lib/nabu/resources/utils.py +174 -0
- build/lib/build/lib/build/lib/nabu/stitching/__init__.py +0 -0
- build/lib/build/lib/build/lib/nabu/stitching/alignment.py +184 -0
- build/lib/build/lib/build/lib/nabu/stitching/config.py +1286 -0
- build/lib/build/lib/build/lib/nabu/stitching/definitions.py +6 -0
- build/lib/build/lib/build/lib/nabu/stitching/frame_composition.py +155 -0
- build/lib/build/lib/build/lib/nabu/stitching/overlap.py +373 -0
- build/lib/build/lib/build/lib/nabu/stitching/sample_normalization.py +60 -0
- build/lib/build/lib/build/lib/nabu/stitching/slurm_utils.py +204 -0
- build/lib/build/lib/build/lib/nabu/stitching/tests/__init__.py +0 -0
- build/lib/build/lib/build/lib/nabu/stitching/tests/test_alignment.py +99 -0
- build/lib/build/lib/build/lib/nabu/stitching/tests/test_config.py +226 -0
- build/lib/build/lib/build/lib/nabu/stitching/tests/test_frame_composition.py +180 -0
- build/lib/build/lib/build/lib/nabu/stitching/tests/test_overlap.py +98 -0
- build/lib/build/lib/build/lib/nabu/stitching/tests/test_sample_normalization.py +49 -0
- build/lib/build/lib/build/lib/nabu/stitching/tests/test_slurm_utils.py +146 -0
- build/lib/build/lib/build/lib/nabu/stitching/tests/test_utils.py +21 -0
- build/lib/build/lib/build/lib/nabu/stitching/tests/test_z_stitching.py +1183 -0
- build/lib/build/lib/build/lib/nabu/stitching/utils.py +563 -0
- build/lib/build/lib/build/lib/nabu/stitching/z_stitching.py +2279 -0
- build/lib/build/lib/build/lib/nabu/tests.py +51 -0
- build/lib/build/lib/build/lib/nabu/testutils.py +375 -0
- build/lib/build/lib/build/lib/nabu/thirdparty/__init__.py +0 -0
- build/lib/build/lib/build/lib/nabu/thirdparty/algotom_convert_sino.py +276 -0
- build/lib/build/lib/build/lib/nabu/thirdparty/pore3d_deringer_munch.py +108 -0
- build/lib/build/lib/build/lib/nabu/thirdparty/tomocupy_remove_stripe.py +586 -0
- build/lib/build/lib/build/lib/nabu/thirdparty/tomopy_phase.py +239 -0
- build/lib/build/lib/build/lib/nabu/thirdparty/tomwer_load_flats_darks.py +162 -0
- build/lib/build/lib/build/lib/nabu/utils.py +836 -0
- build/lib/build/lib/doc/conf.py +137 -0
- build/lib/build/lib/doc/create_conf_doc.py +38 -0
- build/lib/build/lib/doc/get_mathjax.py +34 -0
- build/lib/build/lib/nabu/__init__.py +17 -0
- build/lib/build/lib/nabu/app/__init__.py +0 -0
- build/lib/build/lib/nabu/app/bootstrap.py +88 -0
- build/lib/build/lib/nabu/app/bootstrap_stitching.py +69 -0
- build/lib/build/lib/nabu/app/cast_volume.py +272 -0
- build/lib/build/lib/nabu/app/cli_configs.py +626 -0
- build/lib/build/lib/nabu/app/compare_volumes.py +94 -0
- build/lib/build/lib/nabu/app/composite_cor.py +144 -0
- build/lib/build/lib/nabu/app/correct_rot.py +70 -0
- build/lib/build/lib/nabu/app/create_distortion_map_from_poly.py +153 -0
- build/lib/build/lib/nabu/app/diag_to_pix.py +358 -0
- build/lib/build/lib/nabu/app/diag_to_rot.py +449 -0
- build/lib/build/lib/nabu/app/double_flatfield.py +143 -0
- build/lib/build/lib/nabu/app/generate_header.py +261 -0
- build/lib/build/lib/nabu/app/histogram.py +197 -0
- build/lib/build/lib/nabu/app/multicor.py +90 -0
- build/lib/build/lib/nabu/app/nx_z_splitter.py +125 -0
- build/lib/build/lib/nabu/app/parse_reconstruction_log.py +151 -0
- build/lib/build/lib/nabu/app/prepare_weights_double.py +163 -0
- build/lib/build/lib/nabu/app/reconstruct.py +120 -0
- build/lib/build/lib/nabu/app/reconstruct_helical.py +116 -0
- build/lib/build/lib/nabu/app/reduce_dark_flat.py +181 -0
- build/lib/build/lib/nabu/app/rotate.py +162 -0
- build/lib/build/lib/nabu/app/shrink_dataset.py +98 -0
- build/lib/build/lib/nabu/app/stitching.py +85 -0
- build/lib/build/lib/nabu/app/tests/test_reduce_dark_flat.py +78 -0
- build/lib/build/lib/nabu/app/utils.py +33 -0
- build/lib/build/lib/nabu/app/validator.py +110 -0
- build/lib/build/lib/nabu/cuda/__init__.py +0 -0
- build/lib/build/lib/nabu/cuda/convolution.py +8 -0
- build/lib/build/lib/nabu/cuda/fft.py +4 -0
- build/lib/build/lib/nabu/cuda/kernel.py +97 -0
- build/lib/build/lib/nabu/cuda/medfilt.py +6 -0
- build/lib/build/lib/nabu/cuda/padding.py +6 -0
- build/lib/build/lib/nabu/cuda/processing.py +75 -0
- build/lib/build/lib/nabu/cuda/tests/__init__.py +1 -0
- build/lib/build/lib/nabu/cuda/utils.py +331 -0
- build/lib/build/lib/nabu/estimation/__init__.py +12 -0
- build/lib/build/lib/nabu/estimation/alignment.py +578 -0
- build/lib/build/lib/nabu/estimation/cor.py +1621 -0
- build/lib/build/lib/nabu/estimation/cor_sino.py +183 -0
- build/lib/build/lib/nabu/estimation/distortion.py +112 -0
- build/lib/build/lib/nabu/estimation/focus.py +362 -0
- build/lib/build/lib/nabu/estimation/tests/__init__.py +0 -0
- build/lib/build/lib/nabu/estimation/tests/test_alignment.py +70 -0
- build/lib/build/lib/nabu/estimation/tests/test_cor.py +472 -0
- build/lib/build/lib/nabu/estimation/tests/test_focus.py +105 -0
- build/lib/build/lib/nabu/estimation/tests/test_tilt.py +41 -0
- build/lib/build/lib/nabu/estimation/tests/test_translation.py +78 -0
- build/lib/build/lib/nabu/estimation/tilt.py +214 -0
- build/lib/build/lib/nabu/estimation/translation.py +193 -0
- build/lib/build/lib/nabu/estimation/utils.py +39 -0
- build/lib/build/lib/nabu/io/__init__.py +2 -0
- build/lib/build/lib/nabu/io/cast_volume.py +371 -0
- build/lib/build/lib/nabu/io/detector_distortion.py +305 -0
- build/lib/build/lib/nabu/io/reader.py +628 -0
- build/lib/build/lib/nabu/io/reader_helical.py +114 -0
- build/lib/build/lib/nabu/io/tests/__init__.py +0 -0
- build/lib/build/lib/nabu/io/tests/test_cast_volume.py +339 -0
- build/lib/build/lib/nabu/io/tests/test_detector_distortion.py +178 -0
- build/lib/build/lib/nabu/io/tests/test_writers.py +187 -0
- build/lib/build/lib/nabu/io/tiffwriter_zmm.py +99 -0
- build/lib/build/lib/nabu/io/utils.py +263 -0
- build/lib/build/lib/nabu/io/writer.py +892 -0
- build/lib/build/lib/nabu/misc/__init__.py +0 -0
- build/lib/build/lib/nabu/misc/binning.py +98 -0
- build/lib/build/lib/nabu/misc/fftshift.py +6 -0
- build/lib/build/lib/nabu/misc/filters.py +24 -0
- build/lib/build/lib/nabu/misc/fourier_filters.py +152 -0
- build/lib/build/lib/nabu/misc/histogram.py +6 -0
- build/lib/build/lib/nabu/misc/histogram_cuda.py +8 -0
- build/lib/build/lib/nabu/misc/kernel_base.py +4 -0
- build/lib/build/lib/nabu/misc/padding.py +83 -0
- build/lib/build/lib/nabu/misc/padding_base.py +6 -0
- build/lib/build/lib/nabu/misc/processing_base.py +4 -0
- build/lib/build/lib/nabu/misc/rotation.py +6 -0
- build/lib/build/lib/nabu/misc/rotation_cuda.py +6 -0
- build/lib/build/lib/nabu/misc/tests/__init__.py +1 -0
- build/lib/build/lib/nabu/misc/tests/test_binning.py +48 -0
- build/lib/build/lib/nabu/misc/tests/test_interpolation.py +70 -0
- build/lib/build/lib/nabu/misc/transpose.py +6 -0
- build/lib/build/lib/nabu/misc/unsharp.py +4 -0
- build/lib/build/lib/nabu/misc/unsharp_cuda.py +6 -0
- build/lib/build/lib/nabu/misc/unsharp_opencl.py +8 -0
- build/lib/build/lib/nabu/misc/utils.py +117 -0
- build/lib/build/lib/nabu/opencl/__init__.py +0 -0
- build/lib/build/lib/nabu/opencl/fft.py +6 -0
- build/lib/build/lib/nabu/opencl/kernel.py +135 -0
- build/lib/build/lib/nabu/opencl/memcpy.py +35 -0
- build/lib/build/lib/nabu/opencl/padding.py +6 -0
- build/lib/build/lib/nabu/opencl/processing.py +62 -0
- build/lib/build/lib/nabu/opencl/tests/__init__.py +0 -0
- build/lib/build/lib/nabu/opencl/utils.py +292 -0
- build/lib/build/lib/nabu/pipeline/__init__.py +0 -0
- build/lib/build/lib/nabu/pipeline/config.py +265 -0
- build/lib/build/lib/nabu/pipeline/config_validators.py +589 -0
- build/lib/build/lib/nabu/pipeline/datadump.py +164 -0
- build/lib/build/lib/nabu/pipeline/dataset_validator.py +211 -0
- build/lib/build/lib/nabu/pipeline/detector_distortion_provider.py +20 -0
- build/lib/build/lib/nabu/pipeline/estimators.py +1012 -0
- build/lib/build/lib/nabu/pipeline/fallback_utils.py +149 -0
- build/lib/build/lib/nabu/pipeline/fullfield/__init__.py +0 -0
- build/lib/build/lib/nabu/pipeline/fullfield/chunked.py +849 -0
- build/lib/build/lib/nabu/pipeline/fullfield/chunked_cuda.py +152 -0
- build/lib/build/lib/nabu/pipeline/fullfield/computations.py +260 -0
- build/lib/build/lib/nabu/pipeline/fullfield/dataset_validator.py +63 -0
- build/lib/build/lib/nabu/pipeline/fullfield/nabu_config.py +590 -0
- build/lib/build/lib/nabu/pipeline/fullfield/processconfig.py +825 -0
- build/lib/build/lib/nabu/pipeline/fullfield/reconstruction.py +851 -0
- build/lib/build/lib/nabu/pipeline/helical/__init__.py +0 -0
- build/lib/build/lib/nabu/pipeline/helical/dataset_validator.py +19 -0
- build/lib/build/lib/nabu/pipeline/helical/fbp.py +147 -0
- build/lib/build/lib/nabu/pipeline/helical/filtering.py +246 -0
- build/lib/build/lib/nabu/pipeline/helical/gridded_accumulator.py +575 -0
- build/lib/build/lib/nabu/pipeline/helical/helical_chunked_regridded.py +1670 -0
- build/lib/build/lib/nabu/pipeline/helical/helical_chunked_regridded_cuda.py +119 -0
- build/lib/build/lib/nabu/pipeline/helical/helical_reconstruction.py +598 -0
- build/lib/build/lib/nabu/pipeline/helical/helical_utils.py +42 -0
- build/lib/build/lib/nabu/pipeline/helical/nabu_config.py +175 -0
- build/lib/build/lib/nabu/pipeline/helical/processconfig.py +62 -0
- build/lib/build/lib/nabu/pipeline/helical/span_strategy.py +483 -0
- build/lib/build/lib/nabu/pipeline/helical/tests/__init__.py +0 -0
- build/lib/build/lib/nabu/pipeline/helical/tests/test_accumulator.py +157 -0
- build/lib/build/lib/nabu/pipeline/helical/tests/test_pipeline_elements_full.py +355 -0
- build/lib/build/lib/nabu/pipeline/helical/tests/test_strategy.py +61 -0
- build/lib/build/lib/nabu/pipeline/helical/utils.py +51 -0
- build/lib/build/lib/nabu/pipeline/helical/weight_balancer.py +101 -0
- build/lib/build/lib/nabu/pipeline/params.py +163 -0
- build/lib/build/lib/nabu/pipeline/processconfig.py +210 -0
- build/lib/build/lib/nabu/pipeline/tests/test_chunk_reader.py +78 -0
- build/lib/build/lib/nabu/pipeline/tests/test_estimators.py +149 -0
- build/lib/build/lib/nabu/pipeline/utils.py +116 -0
- build/lib/build/lib/nabu/pipeline/writer.py +193 -0
- build/lib/build/lib/nabu/pipeline/xrdct/__init__.py +0 -0
- build/lib/build/lib/nabu/preproc/__init__.py +7 -0
- build/lib/build/lib/nabu/preproc/alignment.py +11 -0
- build/lib/build/lib/nabu/preproc/ccd.py +161 -0
- build/lib/build/lib/nabu/preproc/ccd_cuda.py +169 -0
- build/lib/build/lib/nabu/preproc/ctf.py +361 -0
- build/lib/build/lib/nabu/preproc/ctf_cuda.py +142 -0
- build/lib/build/lib/nabu/preproc/distortion.py +92 -0
- build/lib/build/lib/nabu/preproc/double_flatfield.py +212 -0
- build/lib/build/lib/nabu/preproc/double_flatfield_cuda.py +174 -0
- build/lib/build/lib/nabu/preproc/double_flatfield_variable_region.py +68 -0
- build/lib/build/lib/nabu/preproc/flatfield.py +448 -0
- build/lib/build/lib/nabu/preproc/flatfield_cuda.py +144 -0
- build/lib/build/lib/nabu/preproc/flatfield_variable_region.py +79 -0
- build/lib/build/lib/nabu/preproc/phase.py +425 -0
- build/lib/build/lib/nabu/preproc/phase_cuda.py +143 -0
- build/lib/build/lib/nabu/preproc/shift.py +95 -0
- build/lib/build/lib/nabu/preproc/shift_cuda.py +102 -0
- build/lib/build/lib/nabu/preproc/tests/__init__.py +1 -0
- build/lib/build/lib/nabu/preproc/tests/test_ccd_corr.py +59 -0
- build/lib/build/lib/nabu/preproc/tests/test_ctf.py +250 -0
- build/lib/build/lib/nabu/preproc/tests/test_double_flatfield.py +86 -0
- build/lib/build/lib/nabu/preproc/tests/test_flatfield.py +626 -0
- build/lib/build/lib/nabu/preproc/tests/test_paganin.py +67 -0
- build/lib/build/lib/nabu/preproc/tests/test_vshift.py +73 -0
- build/lib/build/lib/nabu/processing/__init__.py +0 -0
- build/lib/build/lib/nabu/processing/convolution_cuda.py +375 -0
- build/lib/build/lib/nabu/processing/fft_base.py +163 -0
- build/lib/build/lib/nabu/processing/fft_cuda.py +256 -0
- build/lib/build/lib/nabu/processing/fft_opencl.py +54 -0
- build/lib/build/lib/nabu/processing/fftshift.py +134 -0
- build/lib/build/lib/nabu/processing/histogram.py +286 -0
- build/lib/build/lib/nabu/processing/histogram_cuda.py +103 -0
- build/lib/build/lib/nabu/processing/kernel_base.py +126 -0
- build/lib/build/lib/nabu/processing/medfilt_cuda.py +159 -0
- build/lib/build/lib/nabu/processing/muladd.py +29 -0
- build/lib/build/lib/nabu/processing/muladd_cuda.py +68 -0
- build/lib/build/lib/nabu/processing/padding_base.py +71 -0
- build/lib/build/lib/nabu/processing/padding_cuda.py +75 -0
- build/lib/build/lib/nabu/processing/padding_opencl.py +77 -0
- build/lib/build/lib/nabu/processing/processing_base.py +123 -0
- build/lib/build/lib/nabu/processing/roll_opencl.py +64 -0
- build/lib/build/lib/nabu/processing/rotation.py +63 -0
- build/lib/build/lib/nabu/processing/rotation_cuda.py +66 -0
- build/lib/build/lib/nabu/processing/tests/__init__.py +0 -0
- build/lib/build/lib/nabu/processing/tests/test_fft.py +268 -0
- build/lib/build/lib/nabu/processing/tests/test_fftshift.py +71 -0
- build/lib/build/lib/nabu/processing/tests/test_histogram.py +55 -0
- build/lib/build/lib/nabu/processing/tests/test_medfilt.py +77 -0
- build/lib/build/lib/nabu/processing/tests/test_muladd.py +54 -0
- build/lib/build/lib/nabu/processing/tests/test_padding.py +247 -0
- build/lib/build/lib/nabu/processing/tests/test_roll.py +63 -0
- build/lib/build/lib/nabu/processing/tests/test_rotation.py +83 -0
- build/lib/build/lib/nabu/processing/tests/test_transpose.py +72 -0
- build/lib/build/lib/nabu/processing/tests/test_unsharp.py +106 -0
- build/lib/build/lib/nabu/processing/transpose.py +126 -0
- build/lib/build/lib/nabu/processing/unsharp.py +79 -0
- build/lib/build/lib/nabu/processing/unsharp_cuda.py +53 -0
- build/lib/build/lib/nabu/processing/unsharp_opencl.py +75 -0
- build/lib/build/lib/nabu/reconstruction/__init__.py +3 -0
- build/lib/build/lib/nabu/reconstruction/cone.py +241 -0
- build/lib/build/lib/nabu/reconstruction/fbp.py +124 -0
- build/lib/build/lib/nabu/reconstruction/fbp_base.py +391 -0
- build/lib/build/lib/nabu/reconstruction/fbp_opencl.py +78 -0
- build/lib/build/lib/nabu/reconstruction/filtering.py +220 -0
- build/lib/build/lib/nabu/reconstruction/filtering_cuda.py +103 -0
- build/lib/build/lib/nabu/reconstruction/filtering_opencl.py +111 -0
- build/lib/build/lib/nabu/reconstruction/projection.py +240 -0
- build/lib/build/lib/nabu/reconstruction/reconstructor.py +174 -0
- build/lib/build/lib/nabu/reconstruction/reconstructor_cuda.py +44 -0
- build/lib/build/lib/nabu/reconstruction/rings.py +248 -0
- build/lib/build/lib/nabu/reconstruction/rings_cuda.py +322 -0
- build/lib/build/lib/nabu/reconstruction/sinogram.py +467 -0
- build/lib/build/lib/nabu/reconstruction/sinogram_cuda.py +250 -0
- build/lib/build/lib/nabu/reconstruction/sinogram_opencl.py +40 -0
- build/lib/build/lib/nabu/reconstruction/tests/__init__.py +1 -0
- build/lib/build/lib/nabu/reconstruction/tests/test_cone.py +308 -0
- build/lib/build/lib/nabu/reconstruction/tests/test_deringer.py +220 -0
- build/lib/build/lib/nabu/reconstruction/tests/test_fbp.py +252 -0
- build/lib/build/lib/nabu/reconstruction/tests/test_filtering.py +133 -0
- build/lib/build/lib/nabu/reconstruction/tests/test_halftomo.py +100 -0
- build/lib/build/lib/nabu/reconstruction/tests/test_projector.py +164 -0
- build/lib/build/lib/nabu/reconstruction/tests/test_reconstructor.py +93 -0
- build/lib/build/lib/nabu/reconstruction/tests/test_sino_normalization.py +85 -0
- build/lib/build/lib/nabu/resources/__init__.py +0 -0
- build/lib/build/lib/nabu/resources/cli/__init__.py +0 -0
- build/lib/build/lib/nabu/resources/cor.py +5 -0
- build/lib/build/lib/nabu/resources/dataset_analyzer.py +469 -0
- build/lib/build/lib/nabu/resources/gpu.py +169 -0
- build/lib/build/lib/nabu/resources/logger.py +130 -0
- build/lib/build/lib/nabu/resources/nxflatfield.py +217 -0
- build/lib/build/lib/nabu/resources/templates/__init__.py +0 -0
- build/lib/build/lib/nabu/resources/tests/__init__.py +0 -0
- build/lib/build/lib/nabu/resources/tests/test_nxflatfield.py +104 -0
- build/lib/build/lib/nabu/resources/tests/test_units.py +47 -0
- build/lib/build/lib/nabu/resources/utils.py +174 -0
- build/lib/build/lib/nabu/stitching/__init__.py +0 -0
- build/lib/build/lib/nabu/stitching/alignment.py +184 -0
- build/lib/build/lib/nabu/stitching/config.py +1286 -0
- build/lib/build/lib/nabu/stitching/definitions.py +6 -0
- build/lib/build/lib/nabu/stitching/frame_composition.py +155 -0
- build/lib/build/lib/nabu/stitching/overlap.py +373 -0
- build/lib/build/lib/nabu/stitching/sample_normalization.py +60 -0
- build/lib/build/lib/nabu/stitching/slurm_utils.py +204 -0
- build/lib/build/lib/nabu/stitching/tests/__init__.py +0 -0
- build/lib/build/lib/nabu/stitching/tests/test_alignment.py +99 -0
- build/lib/build/lib/nabu/stitching/tests/test_config.py +226 -0
- build/lib/build/lib/nabu/stitching/tests/test_frame_composition.py +180 -0
- build/lib/build/lib/nabu/stitching/tests/test_overlap.py +98 -0
- build/lib/build/lib/nabu/stitching/tests/test_sample_normalization.py +49 -0
- build/lib/build/lib/nabu/stitching/tests/test_slurm_utils.py +146 -0
- build/lib/build/lib/nabu/stitching/tests/test_utils.py +21 -0
- build/lib/build/lib/nabu/stitching/tests/test_z_stitching.py +1183 -0
- build/lib/build/lib/nabu/stitching/utils.py +563 -0
- build/lib/build/lib/nabu/stitching/z_stitching.py +2279 -0
- build/lib/build/lib/nabu/tests.py +51 -0
- build/lib/build/lib/nabu/testutils.py +375 -0
- build/lib/build/lib/nabu/thirdparty/__init__.py +0 -0
- build/lib/build/lib/nabu/thirdparty/algotom_convert_sino.py +276 -0
- build/lib/build/lib/nabu/thirdparty/pore3d_deringer_munch.py +108 -0
- build/lib/build/lib/nabu/thirdparty/tomocupy_remove_stripe.py +586 -0
- build/lib/build/lib/nabu/thirdparty/tomopy_phase.py +239 -0
- build/lib/build/lib/nabu/thirdparty/tomwer_load_flats_darks.py +162 -0
- build/lib/build/lib/nabu/utils.py +836 -0
- build/lib/doc/conf.py +137 -0
- build/lib/doc/create_conf_doc.py +38 -0
- build/lib/doc/get_mathjax.py +34 -0
- build/lib/nabu/__init__.py +17 -0
- build/lib/nabu/app/__init__.py +0 -0
- build/lib/nabu/app/bootstrap.py +88 -0
- build/lib/nabu/app/bootstrap_stitching.py +69 -0
- build/lib/nabu/app/cast_volume.py +272 -0
- build/lib/nabu/app/cli_configs.py +626 -0
- build/lib/nabu/app/compare_volumes.py +94 -0
- build/lib/nabu/app/composite_cor.py +144 -0
- build/lib/nabu/app/correct_rot.py +70 -0
- build/lib/nabu/app/create_distortion_map_from_poly.py +153 -0
- build/lib/nabu/app/diag_to_pix.py +358 -0
- build/lib/nabu/app/diag_to_rot.py +449 -0
- build/lib/nabu/app/double_flatfield.py +143 -0
- build/lib/nabu/app/generate_header.py +261 -0
- build/lib/nabu/app/histogram.py +197 -0
- build/lib/nabu/app/multicor.py +90 -0
- build/lib/nabu/app/nx_z_splitter.py +125 -0
- build/lib/nabu/app/parse_reconstruction_log.py +151 -0
- build/lib/nabu/app/prepare_weights_double.py +163 -0
- build/lib/nabu/app/reconstruct.py +120 -0
- build/lib/nabu/app/reconstruct_helical.py +116 -0
- build/lib/nabu/app/reduce_dark_flat.py +181 -0
- build/lib/nabu/app/rotate.py +162 -0
- build/lib/nabu/app/shrink_dataset.py +98 -0
- build/lib/nabu/app/stitching.py +85 -0
- build/lib/nabu/app/tests/test_reduce_dark_flat.py +78 -0
- build/lib/nabu/app/utils.py +33 -0
- build/lib/nabu/app/validator.py +110 -0
- build/lib/nabu/cuda/__init__.py +0 -0
- build/lib/nabu/cuda/convolution.py +8 -0
- build/lib/nabu/cuda/fft.py +4 -0
- build/lib/nabu/cuda/kernel.py +97 -0
- build/lib/nabu/cuda/medfilt.py +6 -0
- build/lib/nabu/cuda/padding.py +6 -0
- build/lib/nabu/cuda/processing.py +75 -0
- build/lib/nabu/cuda/tests/__init__.py +1 -0
- build/lib/nabu/cuda/utils.py +331 -0
- build/lib/nabu/estimation/__init__.py +12 -0
- build/lib/nabu/estimation/alignment.py +578 -0
- build/lib/nabu/estimation/cor.py +1621 -0
- build/lib/nabu/estimation/cor_sino.py +183 -0
- build/lib/nabu/estimation/distortion.py +112 -0
- build/lib/nabu/estimation/focus.py +362 -0
- build/lib/nabu/estimation/tests/__init__.py +0 -0
- build/lib/nabu/estimation/tests/test_alignment.py +70 -0
- build/lib/nabu/estimation/tests/test_cor.py +472 -0
- build/lib/nabu/estimation/tests/test_focus.py +105 -0
- build/lib/nabu/estimation/tests/test_tilt.py +41 -0
- build/lib/nabu/estimation/tests/test_translation.py +78 -0
- build/lib/nabu/estimation/tilt.py +214 -0
- build/lib/nabu/estimation/translation.py +193 -0
- build/lib/nabu/estimation/utils.py +39 -0
- build/lib/nabu/io/__init__.py +2 -0
- build/lib/nabu/io/cast_volume.py +371 -0
- build/lib/nabu/io/detector_distortion.py +305 -0
- build/lib/nabu/io/reader.py +628 -0
- build/lib/nabu/io/reader_helical.py +114 -0
- build/lib/nabu/io/tests/__init__.py +0 -0
- build/lib/nabu/io/tests/test_cast_volume.py +339 -0
- build/lib/nabu/io/tests/test_detector_distortion.py +178 -0
- build/lib/nabu/io/tests/test_writers.py +187 -0
- build/lib/nabu/io/tiffwriter_zmm.py +99 -0
- build/lib/nabu/io/utils.py +263 -0
- build/lib/nabu/io/writer.py +892 -0
- build/lib/nabu/misc/__init__.py +0 -0
- build/lib/nabu/misc/binning.py +98 -0
- build/lib/nabu/misc/fftshift.py +6 -0
- build/lib/nabu/misc/filters.py +24 -0
- build/lib/nabu/misc/fourier_filters.py +152 -0
- build/lib/nabu/misc/histogram.py +6 -0
- build/lib/nabu/misc/histogram_cuda.py +8 -0
- build/lib/nabu/misc/kernel_base.py +4 -0
- build/lib/nabu/misc/padding.py +83 -0
- build/lib/nabu/misc/padding_base.py +6 -0
- build/lib/nabu/misc/processing_base.py +4 -0
- build/lib/nabu/misc/rotation.py +6 -0
- build/lib/nabu/misc/rotation_cuda.py +6 -0
- build/lib/nabu/misc/tests/__init__.py +1 -0
- build/lib/nabu/misc/tests/test_binning.py +48 -0
- build/lib/nabu/misc/tests/test_interpolation.py +70 -0
- build/lib/nabu/misc/transpose.py +6 -0
- build/lib/nabu/misc/unsharp.py +4 -0
- build/lib/nabu/misc/unsharp_cuda.py +6 -0
- build/lib/nabu/misc/unsharp_opencl.py +8 -0
- build/lib/nabu/misc/utils.py +117 -0
- build/lib/nabu/opencl/__init__.py +0 -0
- build/lib/nabu/opencl/fft.py +6 -0
- build/lib/nabu/opencl/kernel.py +135 -0
- build/lib/nabu/opencl/memcpy.py +35 -0
- build/lib/nabu/opencl/padding.py +6 -0
- build/lib/nabu/opencl/processing.py +62 -0
- build/lib/nabu/opencl/tests/__init__.py +0 -0
- build/lib/nabu/opencl/utils.py +292 -0
- build/lib/nabu/pipeline/__init__.py +0 -0
- build/lib/nabu/pipeline/config.py +265 -0
- build/lib/nabu/pipeline/config_validators.py +589 -0
- build/lib/nabu/pipeline/datadump.py +164 -0
- build/lib/nabu/pipeline/dataset_validator.py +211 -0
- build/lib/nabu/pipeline/detector_distortion_provider.py +20 -0
- build/lib/nabu/pipeline/estimators.py +1012 -0
- build/lib/nabu/pipeline/fallback_utils.py +149 -0
- build/lib/nabu/pipeline/fullfield/__init__.py +0 -0
- build/lib/nabu/pipeline/fullfield/chunked.py +849 -0
- build/lib/nabu/pipeline/fullfield/chunked_cuda.py +152 -0
- build/lib/nabu/pipeline/fullfield/computations.py +260 -0
- build/lib/nabu/pipeline/fullfield/dataset_validator.py +63 -0
- build/lib/nabu/pipeline/fullfield/nabu_config.py +590 -0
- build/lib/nabu/pipeline/fullfield/processconfig.py +825 -0
- build/lib/nabu/pipeline/fullfield/reconstruction.py +851 -0
- build/lib/nabu/pipeline/helical/__init__.py +0 -0
- build/lib/nabu/pipeline/helical/dataset_validator.py +19 -0
- build/lib/nabu/pipeline/helical/fbp.py +147 -0
- build/lib/nabu/pipeline/helical/filtering.py +246 -0
- build/lib/nabu/pipeline/helical/gridded_accumulator.py +575 -0
- build/lib/nabu/pipeline/helical/helical_chunked_regridded.py +1670 -0
- build/lib/nabu/pipeline/helical/helical_chunked_regridded_cuda.py +119 -0
- build/lib/nabu/pipeline/helical/helical_reconstruction.py +598 -0
- build/lib/nabu/pipeline/helical/helical_utils.py +42 -0
- build/lib/nabu/pipeline/helical/nabu_config.py +175 -0
- build/lib/nabu/pipeline/helical/processconfig.py +62 -0
- build/lib/nabu/pipeline/helical/span_strategy.py +483 -0
- build/lib/nabu/pipeline/helical/tests/__init__.py +0 -0
- build/lib/nabu/pipeline/helical/tests/test_accumulator.py +157 -0
- build/lib/nabu/pipeline/helical/tests/test_pipeline_elements_full.py +355 -0
- build/lib/nabu/pipeline/helical/tests/test_strategy.py +61 -0
- build/lib/nabu/pipeline/helical/utils.py +51 -0
- build/lib/nabu/pipeline/helical/weight_balancer.py +101 -0
- build/lib/nabu/pipeline/params.py +163 -0
- build/lib/nabu/pipeline/processconfig.py +210 -0
- build/lib/nabu/pipeline/tests/test_chunk_reader.py +78 -0
- build/lib/nabu/pipeline/tests/test_estimators.py +149 -0
- build/lib/nabu/pipeline/utils.py +116 -0
- build/lib/nabu/pipeline/writer.py +193 -0
- build/lib/nabu/pipeline/xrdct/__init__.py +0 -0
- build/lib/nabu/preproc/__init__.py +7 -0
- build/lib/nabu/preproc/alignment.py +11 -0
- build/lib/nabu/preproc/ccd.py +161 -0
- build/lib/nabu/preproc/ccd_cuda.py +169 -0
- build/lib/nabu/preproc/ctf.py +361 -0
- build/lib/nabu/preproc/ctf_cuda.py +142 -0
- build/lib/nabu/preproc/distortion.py +92 -0
- build/lib/nabu/preproc/double_flatfield.py +212 -0
- build/lib/nabu/preproc/double_flatfield_cuda.py +174 -0
- build/lib/nabu/preproc/double_flatfield_variable_region.py +68 -0
- build/lib/nabu/preproc/flatfield.py +448 -0
- build/lib/nabu/preproc/flatfield_cuda.py +144 -0
- build/lib/nabu/preproc/flatfield_variable_region.py +79 -0
- build/lib/nabu/preproc/phase.py +425 -0
- build/lib/nabu/preproc/phase_cuda.py +143 -0
- build/lib/nabu/preproc/shift.py +95 -0
- build/lib/nabu/preproc/shift_cuda.py +102 -0
- build/lib/nabu/preproc/tests/__init__.py +1 -0
- build/lib/nabu/preproc/tests/test_ccd_corr.py +59 -0
- build/lib/nabu/preproc/tests/test_ctf.py +250 -0
- build/lib/nabu/preproc/tests/test_double_flatfield.py +86 -0
- build/lib/nabu/preproc/tests/test_flatfield.py +626 -0
- build/lib/nabu/preproc/tests/test_paganin.py +67 -0
- build/lib/nabu/preproc/tests/test_vshift.py +73 -0
- build/lib/nabu/processing/__init__.py +0 -0
- build/lib/nabu/processing/convolution_cuda.py +375 -0
- build/lib/nabu/processing/fft_base.py +163 -0
- build/lib/nabu/processing/fft_cuda.py +256 -0
- build/lib/nabu/processing/fft_opencl.py +54 -0
- build/lib/nabu/processing/fftshift.py +134 -0
- build/lib/nabu/processing/histogram.py +286 -0
- build/lib/nabu/processing/histogram_cuda.py +103 -0
- build/lib/nabu/processing/kernel_base.py +126 -0
- build/lib/nabu/processing/medfilt_cuda.py +159 -0
- build/lib/nabu/processing/muladd.py +29 -0
- build/lib/nabu/processing/muladd_cuda.py +68 -0
- build/lib/nabu/processing/padding_base.py +71 -0
- build/lib/nabu/processing/padding_cuda.py +75 -0
- build/lib/nabu/processing/padding_opencl.py +77 -0
- build/lib/nabu/processing/processing_base.py +123 -0
- build/lib/nabu/processing/roll_opencl.py +64 -0
- build/lib/nabu/processing/rotation.py +63 -0
- build/lib/nabu/processing/rotation_cuda.py +66 -0
- build/lib/nabu/processing/tests/__init__.py +0 -0
- build/lib/nabu/processing/tests/test_fft.py +268 -0
- build/lib/nabu/processing/tests/test_fftshift.py +71 -0
- build/lib/nabu/processing/tests/test_histogram.py +55 -0
- build/lib/nabu/processing/tests/test_medfilt.py +77 -0
- build/lib/nabu/processing/tests/test_muladd.py +54 -0
- build/lib/nabu/processing/tests/test_padding.py +247 -0
- build/lib/nabu/processing/tests/test_roll.py +63 -0
- build/lib/nabu/processing/tests/test_rotation.py +83 -0
- build/lib/nabu/processing/tests/test_transpose.py +72 -0
- build/lib/nabu/processing/tests/test_unsharp.py +106 -0
- build/lib/nabu/processing/transpose.py +126 -0
- build/lib/nabu/processing/unsharp.py +79 -0
- build/lib/nabu/processing/unsharp_cuda.py +53 -0
- build/lib/nabu/processing/unsharp_opencl.py +75 -0
- build/lib/nabu/reconstruction/__init__.py +3 -0
- build/lib/nabu/reconstruction/cone.py +241 -0
- build/lib/nabu/reconstruction/fbp.py +124 -0
- build/lib/nabu/reconstruction/fbp_base.py +391 -0
- build/lib/nabu/reconstruction/fbp_opencl.py +78 -0
- build/lib/nabu/reconstruction/filtering.py +220 -0
- build/lib/nabu/reconstruction/filtering_cuda.py +103 -0
- build/lib/nabu/reconstruction/filtering_opencl.py +111 -0
- build/lib/nabu/reconstruction/projection.py +240 -0
- build/lib/nabu/reconstruction/reconstructor.py +174 -0
- build/lib/nabu/reconstruction/reconstructor_cuda.py +44 -0
- build/lib/nabu/reconstruction/rings.py +248 -0
- build/lib/nabu/reconstruction/rings_cuda.py +322 -0
- build/lib/nabu/reconstruction/sinogram.py +467 -0
- build/lib/nabu/reconstruction/sinogram_cuda.py +250 -0
- build/lib/nabu/reconstruction/sinogram_opencl.py +40 -0
- build/lib/nabu/reconstruction/tests/__init__.py +1 -0
- build/lib/nabu/reconstruction/tests/test_cone.py +308 -0
- build/lib/nabu/reconstruction/tests/test_deringer.py +220 -0
- build/lib/nabu/reconstruction/tests/test_fbp.py +252 -0
- build/lib/nabu/reconstruction/tests/test_filtering.py +133 -0
- build/lib/nabu/reconstruction/tests/test_halftomo.py +100 -0
- build/lib/nabu/reconstruction/tests/test_projector.py +164 -0
- build/lib/nabu/reconstruction/tests/test_reconstructor.py +93 -0
- build/lib/nabu/reconstruction/tests/test_sino_normalization.py +85 -0
- build/lib/nabu/resources/__init__.py +0 -0
- build/lib/nabu/resources/cli/__init__.py +0 -0
- build/lib/nabu/resources/cor.py +5 -0
- build/lib/nabu/resources/dataset_analyzer.py +469 -0
- build/lib/nabu/resources/gpu.py +169 -0
- build/lib/nabu/resources/logger.py +130 -0
- build/lib/nabu/resources/nxflatfield.py +217 -0
- build/lib/nabu/resources/templates/__init__.py +0 -0
- build/lib/nabu/resources/tests/__init__.py +0 -0
- build/lib/nabu/resources/tests/test_nxflatfield.py +104 -0
- build/lib/nabu/resources/tests/test_units.py +47 -0
- build/lib/nabu/resources/utils.py +174 -0
- build/lib/nabu/stitching/__init__.py +0 -0
- build/lib/nabu/stitching/alignment.py +184 -0
- build/lib/nabu/stitching/config.py +1286 -0
- build/lib/nabu/stitching/definitions.py +6 -0
- build/lib/nabu/stitching/frame_composition.py +155 -0
- build/lib/nabu/stitching/overlap.py +373 -0
- build/lib/nabu/stitching/sample_normalization.py +60 -0
- build/lib/nabu/stitching/slurm_utils.py +204 -0
- build/lib/nabu/stitching/tests/__init__.py +0 -0
- build/lib/nabu/stitching/tests/test_alignment.py +99 -0
- build/lib/nabu/stitching/tests/test_config.py +226 -0
- build/lib/nabu/stitching/tests/test_frame_composition.py +180 -0
- build/lib/nabu/stitching/tests/test_overlap.py +98 -0
- build/lib/nabu/stitching/tests/test_sample_normalization.py +49 -0
- build/lib/nabu/stitching/tests/test_slurm_utils.py +146 -0
- build/lib/nabu/stitching/tests/test_utils.py +21 -0
- build/lib/nabu/stitching/tests/test_z_stitching.py +1183 -0
- build/lib/nabu/stitching/utils.py +563 -0
- build/lib/nabu/stitching/z_stitching.py +2279 -0
- build/lib/nabu/tests.py +51 -0
- build/lib/nabu/testutils.py +375 -0
- build/lib/nabu/thirdparty/__init__.py +0 -0
- build/lib/nabu/thirdparty/algotom_convert_sino.py +276 -0
- build/lib/nabu/thirdparty/pore3d_deringer_munch.py +108 -0
- build/lib/nabu/thirdparty/tomocupy_remove_stripe.py +586 -0
- build/lib/nabu/thirdparty/tomopy_phase.py +239 -0
- build/lib/nabu/thirdparty/tomwer_load_flats_darks.py +162 -0
- build/lib/nabu/utils.py +836 -0
- nabu/__init__.py +1 -1
- nabu/estimation/cor.py +2 -2
- nabu/io/cast_volume.py +10 -2
- nabu/pipeline/estimators.py +13 -7
- nabu/resources/dataset_analyzer.py +15 -6
- nabu/stitching/config.py +2 -2
- nabu/stitching/z_stitching.py +3 -1
- {nabu-2024.1.0rc3.dist-info → nabu-2024.1.1.dist-info}/METADATA +1 -1
- nabu-2024.1.1.dist-info/RECORD +2375 -0
- nabu-2024.1.1.dist-info/top_level.txt +4 -0
- doc/doc_config.py +0 -32
- nabu-2024.1.0rc3.dist-info/RECORD +0 -296
- nabu-2024.1.0rc3.dist-info/top_level.txt +0 -2
- {nabu-2024.1.0rc3.dist-info → nabu-2024.1.1.dist-info}/LICENSE +0 -0
- {nabu-2024.1.0rc3.dist-info → nabu-2024.1.1.dist-info}/WHEEL +0 -0
- {nabu-2024.1.0rc3.dist-info → nabu-2024.1.1.dist-info}/entry_points.txt +0 -0
@@ -0,0 +1,1670 @@
|
|
1
|
+
# pylint: skip-file
|
2
|
+
|
3
|
+
from os import path
|
4
|
+
import numpy as np
|
5
|
+
import math
|
6
|
+
from silx.image.tomography import get_next_power
|
7
|
+
from scipy import ndimage as nd
|
8
|
+
import h5py
|
9
|
+
import silx.io
|
10
|
+
import copy
|
11
|
+
from silx.io.url import DataUrl
|
12
|
+
from ...resources.logger import LoggerOrPrint
|
13
|
+
from ...resources.utils import is_hdf5_extension
|
14
|
+
from ...io.reader_helical import ChunkReaderHelical, get_hdf5_dataset_shape
|
15
|
+
from ...preproc.flatfield_variable_region import FlatFieldDataVariableRegionUrls as FlatFieldDataHelicalUrls
|
16
|
+
from ...preproc.distortion import DistortionCorrection
|
17
|
+
from ...preproc.shift import VerticalShift
|
18
|
+
from ...preproc.double_flatfield_variable_region import DoubleFlatFieldVariableRegion as DoubleFlatFieldHelical
|
19
|
+
from ...preproc.phase import PaganinPhaseRetrieval
|
20
|
+
from ...reconstruction.sinogram import SinoBuilder
|
21
|
+
from ...processing.unsharp import UnsharpMask
|
22
|
+
from ...processing.histogram import PartialHistogram, hist_as_2Darray
|
23
|
+
from ..utils import use_options, pipeline_step
|
24
|
+
|
25
|
+
from ..detector_distortion_provider import DetectorDistortionProvider
|
26
|
+
|
27
|
+
from .utils import (
|
28
|
+
WriterConfiguratorHelical as WriterConfigurator,
|
29
|
+
) # .utils is the same as ..utils but internally we retouch the key associated to "tiffwriter" of Writers to
|
30
|
+
|
31
|
+
# point to our class which can write tiff with names indexed by the z height above the sample stage in millimiters
|
32
|
+
|
33
|
+
from numpy.lib.stride_tricks import sliding_window_view
|
34
|
+
from ...misc.binning import get_binning_function
|
35
|
+
from .helical_utils import find_mirror_indexes
|
36
|
+
|
37
|
+
|
38
|
+
try:
|
39
|
+
import nabuxx
|
40
|
+
|
41
|
+
GriddedAccumulator = nabuxx.gridded_accumulator.GriddedAccumulator
|
42
|
+
CCDFilter = nabuxx.ccd.CCDFilter
|
43
|
+
Log = nabuxx.ccd.LogFilter
|
44
|
+
cxx_paganin = nabuxx.paganin
|
45
|
+
except:
|
46
|
+
logger_tmp = LoggerOrPrint(None)
|
47
|
+
logger_tmp.info(
|
48
|
+
"Nabuxx not available. Loading python implementation for gridded_accumulator, Log, CCDFilter, paganin"
|
49
|
+
)
|
50
|
+
from . import gridded_accumulator
|
51
|
+
|
52
|
+
GriddedAccumulator = gridded_accumulator.GriddedAccumulator
|
53
|
+
from ...preproc.ccd import Log, CCDFilter
|
54
|
+
|
55
|
+
cxx_paganin = None
|
56
|
+
|
57
|
+
|
58
|
+
# For now we don't have a plain python/numpy backend for reconstruction
|
59
|
+
Backprojector = None
|
60
|
+
|
61
|
+
|
62
|
+
class HelicalChunkedRegriddedPipeline:
|
63
|
+
"""
|
64
|
+
Pipeline for "helical" full or half field tomography.
|
65
|
+
Data is processed by chunks. A chunk consists in K+-1 contiguous lines of all the radios
|
66
|
+
which are read at variable height following the translations
|
67
|
+
"""
|
68
|
+
|
69
|
+
extra_marge_granularity = 4
|
70
|
+
""" This offers extra reading space to be able to read the redundant part
|
71
|
+
which might be sligtly larger and or require extra border for interpolation
|
72
|
+
"""
|
73
|
+
|
74
|
+
FlatFieldClass = FlatFieldDataHelicalUrls
|
75
|
+
DoubleFlatFieldClass = DoubleFlatFieldHelical
|
76
|
+
|
77
|
+
CCDFilterClass = CCDFilter
|
78
|
+
MLogClass = Log
|
79
|
+
|
80
|
+
PaganinPhaseRetrievalClass = PaganinPhaseRetrieval
|
81
|
+
UnsharpMaskClass = UnsharpMask
|
82
|
+
VerticalShiftClass = VerticalShift
|
83
|
+
SinoBuilderClass = SinoBuilder
|
84
|
+
|
85
|
+
FBPClass = Backprojector
|
86
|
+
HBPClass = None
|
87
|
+
HistogramClass = PartialHistogram
|
88
|
+
regular_accumulator = None
|
89
|
+
|
90
|
+
def __init__(
|
91
|
+
self,
|
92
|
+
process_config,
|
93
|
+
sub_region,
|
94
|
+
logger=None,
|
95
|
+
extra_options=None,
|
96
|
+
phase_margin=None,
|
97
|
+
reading_granularity=10,
|
98
|
+
span_info=None,
|
99
|
+
diag_zpro_run=0,
|
100
|
+
):
|
101
|
+
"""
|
102
|
+
Initialize a "HelicalChunked" pipeline.
|
103
|
+
|
104
|
+
Parameters
|
105
|
+
----------
|
106
|
+
process_config: `nabu.resources.processcinfig.ProcessConfig`
|
107
|
+
Process configuration.
|
108
|
+
sub_region: tuple
|
109
|
+
Sub-region to process in the volume for this worker, in the format
|
110
|
+
`(start_x, end_x, start_z, end_z)`.
|
111
|
+
logger: `nabu.app.logger.Logger`, optional
|
112
|
+
Logger class
|
113
|
+
extra_options: dict, optional
|
114
|
+
Advanced extra options.
|
115
|
+
phase_margin: tuple, optional
|
116
|
+
Margin to use when performing phase retrieval, in the form ((up, down), (left, right)).
|
117
|
+
See also the documentation of PaganinPhaseRetrieval.
|
118
|
+
If not provided, no margin is applied.
|
119
|
+
reading_granularity: int
|
120
|
+
The data angular span which needs to be read for a reconstruction is read step by step,
|
121
|
+
reading each time a maximum of reading_granularity radios, and doing the preprocessing
|
122
|
+
till phase retrieval for each of these angular groups
|
123
|
+
|
124
|
+
Notes
|
125
|
+
------
|
126
|
+
Using a `phase_margin` results in a lesser number of reconstructed slices.
|
127
|
+
More specifically, if `phase_margin = (V, H)`, then there will be `chunk_size - 2*V`
|
128
|
+
reconstructed slices (if the sub-region is in the middle of the volume)
|
129
|
+
or `chunk_size - V` reconstructed slices (if the sub-region is on top or bottom
|
130
|
+
of the volume).
|
131
|
+
"""
|
132
|
+
|
133
|
+
self.span_info = span_info
|
134
|
+
self.reading_granularity = reading_granularity
|
135
|
+
|
136
|
+
self.logger = LoggerOrPrint(logger)
|
137
|
+
|
138
|
+
self._set_params(process_config, sub_region, extra_options, phase_margin, diag_zpro_run)
|
139
|
+
|
140
|
+
self._init_pipeline()
|
141
|
+
|
142
|
+
def _set_params(self, process_config, sub_region, extra_options, phase_margin, diag_zpro_run):
|
143
|
+
self.diag_zpro_run = diag_zpro_run
|
144
|
+
self.process_config = process_config
|
145
|
+
self.dataset_info = self.process_config.dataset_info
|
146
|
+
|
147
|
+
self.processing_steps = self.process_config.processing_steps.copy()
|
148
|
+
self.processing_options = self.process_config.processing_options
|
149
|
+
|
150
|
+
sub_region = self._check_subregion(sub_region)
|
151
|
+
|
152
|
+
self.chunk_size = sub_region[-1] - sub_region[-2]
|
153
|
+
self.radios_buffer = None
|
154
|
+
|
155
|
+
self._set_detector_distortion_correction()
|
156
|
+
|
157
|
+
self.set_subregion(sub_region)
|
158
|
+
|
159
|
+
self._set_phase_margin(phase_margin)
|
160
|
+
self._set_extra_options(extra_options)
|
161
|
+
self._callbacks = {}
|
162
|
+
self._steps_name2component = {}
|
163
|
+
self._steps_component2name = {}
|
164
|
+
self._data_dump = {}
|
165
|
+
self._resume_from_step = None
|
166
|
+
|
167
|
+
@staticmethod
|
168
|
+
def _check_subregion(sub_region):
|
169
|
+
if len(sub_region) < 4:
|
170
|
+
assert len(sub_region) == 2, " at least start_z and end_z are required in subregion"
|
171
|
+
sub_region = (None, None) + sub_region
|
172
|
+
if None in sub_region[-2:]:
|
173
|
+
raise ValueError("Cannot set z_min or z_max to None")
|
174
|
+
return sub_region
|
175
|
+
|
176
|
+
def _set_extra_options(self, extra_options):
|
177
|
+
if extra_options is None:
|
178
|
+
extra_options = {}
|
179
|
+
advanced_options = {}
|
180
|
+
advanced_options.update(extra_options)
|
181
|
+
self.extra_options = advanced_options
|
182
|
+
|
183
|
+
def _set_phase_margin(self, phase_margin):
|
184
|
+
if phase_margin is None:
|
185
|
+
phase_margin = ((0, 0), (0, 0))
|
186
|
+
self._phase_margin_up = phase_margin[0][0]
|
187
|
+
self._phase_margin_down = phase_margin[0][1]
|
188
|
+
self._phase_margin_left = phase_margin[1][0]
|
189
|
+
self._phase_margin_right = phase_margin[1][1]
|
190
|
+
|
191
|
+
def set_subregion(self, sub_region):
|
192
|
+
"""
|
193
|
+
Set a sub-region to process.
|
194
|
+
|
195
|
+
Parameters
|
196
|
+
----------
|
197
|
+
sub_region: tuple
|
198
|
+
Sub-region to process in the volume, in the format
|
199
|
+
`(start_x, end_x, start_z, end_z)` or `(start_z, end_z)`.
|
200
|
+
"""
|
201
|
+
sub_region = self._check_subregion(sub_region)
|
202
|
+
dz = sub_region[-1] - sub_region[-2]
|
203
|
+
if dz != self.chunk_size:
|
204
|
+
raise ValueError(
|
205
|
+
"Class was initialized for chunk_size = %d but provided sub_region has chunk_size = %d"
|
206
|
+
% (self.chunk_size, dz)
|
207
|
+
)
|
208
|
+
self.sub_region = sub_region
|
209
|
+
self.z_min = sub_region[-2]
|
210
|
+
self.z_max = sub_region[-1]
|
211
|
+
|
212
|
+
def _compute_phase_kernel_margin(self):
|
213
|
+
"""
|
214
|
+
Get the "margin" to pass to classes like PaganinPhaseRetrieval.
|
215
|
+
In order to have a good accuracy for filter-based phase retrieval methods,
|
216
|
+
we need to load extra data around the edges of each image. Otherwise,
|
217
|
+
a default padding type is applied.
|
218
|
+
"""
|
219
|
+
if not (self.use_radio_processing_margin):
|
220
|
+
self._phase_margin = None
|
221
|
+
return
|
222
|
+
up_margin = self._phase_margin_up
|
223
|
+
down_margin = self._phase_margin_down
|
224
|
+
# Horizontal margin is not implemented
|
225
|
+
left_margin, right_margin = (0, 0)
|
226
|
+
self._phase_margin = ((up_margin, down_margin), (left_margin, right_margin))
|
227
|
+
|
228
|
+
@property
|
229
|
+
def use_radio_processing_margin(self):
|
230
|
+
return ("phase" in self.processing_steps) or ("unsharp_mask" in self.processing_steps)
|
231
|
+
|
232
|
+
def _get_phase_margin(self):
|
233
|
+
if not (self.use_radio_processing_margin):
|
234
|
+
return ((0, 0), (0, 0))
|
235
|
+
return self._phase_margin
|
236
|
+
|
237
|
+
@property
|
238
|
+
def phase_margin(self):
|
239
|
+
"""
|
240
|
+
Return the margin for phase retrieval in the form ((up, down), (left, right))
|
241
|
+
"""
|
242
|
+
return self._get_phase_margin()
|
243
|
+
|
244
|
+
def _get_process_name(self, kind="reconstruction"):
|
245
|
+
# In the future, might be something like "reconstruction-<ID>"
|
246
|
+
if kind == "reconstruction":
|
247
|
+
return "reconstruction"
|
248
|
+
elif kind == "histogram":
|
249
|
+
return "histogram"
|
250
|
+
return kind
|
251
|
+
|
252
|
+
def _configure_dump(self, step_name):
|
253
|
+
if step_name not in self.processing_steps:
|
254
|
+
if step_name == "sinogram" and self.process_config._dump_sinogram:
|
255
|
+
fname_full = self.process_config._dump_sinogram_file
|
256
|
+
else:
|
257
|
+
return
|
258
|
+
else:
|
259
|
+
if not self.processing_options[step_name].get("save", False):
|
260
|
+
return
|
261
|
+
fname_full = self.processing_options[step_name]["save_steps_file"]
|
262
|
+
|
263
|
+
fname, ext = path.splitext(fname_full)
|
264
|
+
dirname, file_prefix = path.split(fname)
|
265
|
+
output_dir = path.join(dirname, file_prefix)
|
266
|
+
file_prefix += str("_%06d" % self._get_image_start_index())
|
267
|
+
|
268
|
+
self.logger.info("omitting config in data_dump because of too slow nexus writer ")
|
269
|
+
|
270
|
+
self._data_dump[step_name] = WriterConfigurator(
|
271
|
+
output_dir,
|
272
|
+
file_prefix,
|
273
|
+
file_format="hdf5",
|
274
|
+
overwrite=True,
|
275
|
+
logger=self.logger,
|
276
|
+
nx_info={
|
277
|
+
"process_name": step_name,
|
278
|
+
"processing_index": 0, # TODO
|
279
|
+
# "config": {"processing_options": self.processing_options, "nabu_config": self.process_config.nabu_config},
|
280
|
+
"config": None,
|
281
|
+
"entry": getattr(self.dataset_info.dataset_scanner, "entry", None),
|
282
|
+
},
|
283
|
+
)
|
284
|
+
|
285
|
+
def _configure_data_dumps(self):
|
286
|
+
self.process_config._configure_save_steps()
|
287
|
+
for step_name in self.processing_steps:
|
288
|
+
self._configure_dump(step_name)
|
289
|
+
# sinogram is a special keyword: not in processing_steps, but guaranteed to be before sinogram generation
|
290
|
+
|
291
|
+
if self.process_config._dump_sinogram:
|
292
|
+
self._configure_dump("sinogram")
|
293
|
+
|
294
|
+
#
|
295
|
+
# Callbacks
|
296
|
+
#
|
297
|
+
|
298
|
+
def register_callback(self, step_name, callback):
|
299
|
+
"""
|
300
|
+
Register a callback for a pipeline processing step.
|
301
|
+
|
302
|
+
Parameters
|
303
|
+
----------
|
304
|
+
step_name: str
|
305
|
+
processing step name
|
306
|
+
callback: callable
|
307
|
+
A function. It will be executed once the processing step `step_name`
|
308
|
+
is finished. The function takes only one argument: the class instance.
|
309
|
+
"""
|
310
|
+
if step_name not in self.processing_steps:
|
311
|
+
raise ValueError("'%s' is not in processing steps %s" % (step_name, self.processing_steps))
|
312
|
+
if step_name in self._callbacks:
|
313
|
+
self._callbacks[step_name].append(callback)
|
314
|
+
else:
|
315
|
+
self._callbacks[step_name] = [callback]
|
316
|
+
|
317
|
+
#
|
318
|
+
# Overwritten in inheriting classes
|
319
|
+
#
|
320
|
+
|
321
|
+
def _get_shape(self, step_name):
|
322
|
+
"""
|
323
|
+
Get the shape to provide to the class corresponding to step_name.
|
324
|
+
"""
|
325
|
+
if step_name == "flatfield":
|
326
|
+
shape = self.radios_subset.shape
|
327
|
+
elif step_name == "double_flatfield":
|
328
|
+
shape = self.radios_subset.shape
|
329
|
+
elif step_name == "phase":
|
330
|
+
shape = self.radios_subset.shape[1:]
|
331
|
+
elif step_name == "ccd_correction":
|
332
|
+
shape = self.gridded_radios.shape[1:]
|
333
|
+
elif step_name == "unsharp_mask":
|
334
|
+
shape = self.radios_subset.shape[1:]
|
335
|
+
elif step_name == "take_log":
|
336
|
+
shape = self.radios.shape
|
337
|
+
elif step_name == "radios_movements":
|
338
|
+
shape = self.radios.shape
|
339
|
+
elif step_name == "sino_normalization":
|
340
|
+
shape = self.radios.shape
|
341
|
+
elif step_name == "sino_normalization_slim":
|
342
|
+
shape = self.radios.shape[:1] + (1,) + self.radios.shape[2:]
|
343
|
+
elif step_name == "one_sino_slim":
|
344
|
+
shape = self.radios.shape[:1] + self.radios.shape[2:]
|
345
|
+
elif step_name == "build_sino":
|
346
|
+
shape = self.radios.shape[:1] + (1,) + self.radios.shape[2:]
|
347
|
+
elif step_name == "reconstruction":
|
348
|
+
shape = self.sino_builder.output_shape[1:]
|
349
|
+
else:
|
350
|
+
raise ValueError("Unknown processing step %s" % step_name)
|
351
|
+
self.logger.debug("Data shape for %s is %s" % (step_name, str(shape)))
|
352
|
+
return shape
|
353
|
+
|
354
|
+
def _allocate_array(self, shape, dtype, name=None):
|
355
|
+
"""this function can be redefined in the derived class which is dedicated to gpu
|
356
|
+
and will return gpu garrays
|
357
|
+
"""
|
358
|
+
return _cpu_allocate_array(shape, dtype, name=name)
|
359
|
+
|
360
|
+
def _cpu_allocate_array(self, shape, dtype, name=None):
|
361
|
+
"""For objects used in the pre-gpu part. They will be always on CPU even in the derived class"""
|
362
|
+
result = np.zeros(shape, dtype=dtype)
|
363
|
+
return result
|
364
|
+
|
365
|
+
def _allocate_sinobuilder_output(self):
|
366
|
+
return self._cpu_allocate_array(self.sino_builder.output_shape, "f", name="sinos")
|
367
|
+
|
368
|
+
def _allocate_recs(self, ny, nx):
|
369
|
+
self.n_slices = self.gridded_radios.shape[1]
|
370
|
+
if self.use_radio_processing_margin:
|
371
|
+
self.n_slices -= sum(self.phase_margin[0])
|
372
|
+
self.recs = self._allocate_array((1, ny, nx), "f", name="recs")
|
373
|
+
self.recs_stack = self._cpu_allocate_array((self.n_slices, ny, nx), "f", name="recs_stack")
|
374
|
+
|
375
|
+
def _reset_memory(self):
|
376
|
+
pass
|
377
|
+
|
378
|
+
def _get_read_dump_subregion(self):
|
379
|
+
read_opts = self.processing_options["read_chunk"]
|
380
|
+
if read_opts.get("process_file", None) is None:
|
381
|
+
return None
|
382
|
+
dump_start_z, dump_end_z = read_opts["dump_start_z"], read_opts["dump_end_z"]
|
383
|
+
relative_start_z = self.z_min - dump_start_z
|
384
|
+
relative_end_z = relative_start_z + self.chunk_size
|
385
|
+
# (n_angles, n_z, n_x)
|
386
|
+
subregion = (None, None, relative_start_z, relative_end_z, None, None)
|
387
|
+
return subregion
|
388
|
+
|
389
|
+
def _check_resume_from_step(self):
|
390
|
+
if self._resume_from_step is None:
|
391
|
+
return
|
392
|
+
read_opts = self.processing_options["read_chunk"]
|
393
|
+
expected_radios_shape = get_hdf5_dataset_shape(
|
394
|
+
read_opts["process_file"],
|
395
|
+
read_opts["process_h5_path"],
|
396
|
+
sub_region=self._get_read_dump_subregion(),
|
397
|
+
)
|
398
|
+
# TODO check
|
399
|
+
|
400
|
+
def _init_reader_finalize(self):
|
401
|
+
"""
|
402
|
+
Method called after _init_reader
|
403
|
+
"""
|
404
|
+
self._check_resume_from_step()
|
405
|
+
|
406
|
+
self._compute_phase_kernel_margin()
|
407
|
+
|
408
|
+
self._allocate_reduced_gridded_and_subset_radios()
|
409
|
+
|
410
|
+
def _allocate_reduced_gridded_and_subset_radios(self):
|
411
|
+
shp_h = self.chunk_reader.data.shape[-1]
|
412
|
+
|
413
|
+
sliding_window_size = self.chunk_size
|
414
|
+
if sliding_window_size % 2 == 0:
|
415
|
+
sliding_window_size += 1
|
416
|
+
sliding_window_radius = (sliding_window_size - 1) // 2
|
417
|
+
|
418
|
+
if sliding_window_radius == 0:
|
419
|
+
n_projs_max = (self.span_info.sunshine_ends - self.span_info.sunshine_starts).max()
|
420
|
+
else:
|
421
|
+
padded_starts = self.span_info.sunshine_starts
|
422
|
+
padded_ends = self.span_info.sunshine_ends
|
423
|
+
|
424
|
+
padded_starts = np.concatenate(
|
425
|
+
[[padded_starts[0]] * sliding_window_radius, padded_starts, [padded_starts[-1]] * sliding_window_radius]
|
426
|
+
)
|
427
|
+
starts = sliding_window_view(padded_starts, sliding_window_size).min(axis=-1)
|
428
|
+
|
429
|
+
padded_ends = np.concatenate(
|
430
|
+
[[padded_ends[0]] * sliding_window_radius, padded_ends, [padded_ends[-1]] * sliding_window_radius]
|
431
|
+
)
|
432
|
+
|
433
|
+
ends = sliding_window_view(padded_ends, sliding_window_size).max(axis=-1)
|
434
|
+
|
435
|
+
n_projs_max = (ends - starts).max()
|
436
|
+
|
437
|
+
((up_margin, down_margin), (left_margin, right_margin)) = self.phase_margin
|
438
|
+
|
439
|
+
(start_x, end_x, start_z, end_z) = self.sub_region
|
440
|
+
|
441
|
+
## and now the gridded ones
|
442
|
+
|
443
|
+
my_angle_step = abs(np.diff(self.span_info.projection_angles_deg).mean())
|
444
|
+
self.n_gridded_angles = int(round(360.0 / my_angle_step))
|
445
|
+
|
446
|
+
self.my_angles_rad = np.arange(self.n_gridded_angles) * 2 * np.pi / self.n_gridded_angles
|
447
|
+
|
448
|
+
my_angles_deg = np.rad2deg(self.my_angles_rad)
|
449
|
+
|
450
|
+
self.mirror_angle_relative_indexes = find_mirror_indexes(my_angles_deg)
|
451
|
+
|
452
|
+
if "read_chunk" not in self.processing_steps:
|
453
|
+
raise ValueError("Cannot proceed without reading data")
|
454
|
+
|
455
|
+
r_shp_v, r_shp_h = self.whole_radio_shape
|
456
|
+
|
457
|
+
(subr_start_x, subr_end_x, subr_start_z, subr_end_z) = self.sub_region
|
458
|
+
|
459
|
+
subradio_shape = subr_end_z - subr_start_z, r_shp_h
|
460
|
+
|
461
|
+
### these radios are for diagnostic of the translations ( they will be optionally written, for being further used
|
462
|
+
## by correlation techniques ). Two radios for the first two pass over the first gridded angles
|
463
|
+
if self.diag_zpro_run:
|
464
|
+
# 2 for the redundancy, 2 for +180 mirror
|
465
|
+
ndiag = 2 * 2 * self.diag_zpro_run
|
466
|
+
else:
|
467
|
+
ndiag = 2 * 2
|
468
|
+
|
469
|
+
self.diagnostic_searched_angles_rad_clipped = (
|
470
|
+
(0.5 + np.arange(ndiag // 2)) * (2 * np.pi / (ndiag // 2))
|
471
|
+
).astype("f")
|
472
|
+
|
473
|
+
self.diagnostic_radios = np.zeros((ndiag,) + subradio_shape, np.float32)
|
474
|
+
self.diagnostic_weights = np.zeros((ndiag,) + subradio_shape, np.float32)
|
475
|
+
self.diagnostic_proj_angle = np.zeros([ndiag], "f")
|
476
|
+
self.diagnostic_zpix_transl = np.zeros([ndiag], "f")
|
477
|
+
self.diagnostic_zmm_transl = np.zeros([ndiag], "f")
|
478
|
+
|
479
|
+
self.diagnostic = {
|
480
|
+
"radios": self.diagnostic_radios,
|
481
|
+
"weights": self.diagnostic_weights,
|
482
|
+
"angles": self.diagnostic_proj_angle,
|
483
|
+
"zpix_transl": self.diagnostic_zpix_transl,
|
484
|
+
"zmm_trans": self.diagnostic_zmm_transl,
|
485
|
+
"pixel_size_mm": self.span_info.pix_size_mm,
|
486
|
+
"searched_rad": self.diagnostic_searched_angles_rad_clipped,
|
487
|
+
}
|
488
|
+
## -------
|
489
|
+
if self.diag_zpro_run == 0:
|
490
|
+
self.gridded_radios = np.zeros((self.n_gridded_angles,) + subradio_shape, np.float32)
|
491
|
+
self.gridded_cumulated_weights = np.zeros((self.n_gridded_angles,) + subradio_shape, np.float32)
|
492
|
+
else:
|
493
|
+
# only diagnostic will be cumulated. No need to keep the full size for diagnostic runs.
|
494
|
+
# The gridder is initialised passing also the two buffer below,
|
495
|
+
# and the two first dimensions are used to allocate auxiliaries,
|
496
|
+
# so we shorten only the last dimension, but this is already a good cut
|
497
|
+
self.gridded_radios = np.zeros((self.n_gridded_angles,) + (subradio_shape[0], 2), np.float32)
|
498
|
+
self.gridded_cumulated_weights = np.zeros((self.n_gridded_angles,) + (subradio_shape[0], 2), np.float32)
|
499
|
+
|
500
|
+
self.radios_subset = np.zeros((self.reading_granularity,) + subradio_shape, np.float32)
|
501
|
+
self.radios_weights_subset = np.zeros((self.reading_granularity,) + subradio_shape, np.float32)
|
502
|
+
|
503
|
+
if not self.diag_zpro_run:
|
504
|
+
self.radios = np.zeros(
|
505
|
+
(self.n_gridded_angles,) + ((end_z - down_margin) - (start_z + up_margin), shp_h), np.float32
|
506
|
+
)
|
507
|
+
else:
|
508
|
+
# place holder
|
509
|
+
self.radios = np.zeros((self.n_gridded_angles,) + (1, 1), np.float32)
|
510
|
+
|
511
|
+
self.radios_weights = np.zeros_like(self.radios)
|
512
|
+
|
513
|
+
self.radios_slim = self._allocate_array(self._get_shape("one_sino_slim"), "f", name="radios_slim")
|
514
|
+
|
515
|
+
def _process_finalize(self):
|
516
|
+
"""
|
517
|
+
Method called once the pipeline has been executed
|
518
|
+
"""
|
519
|
+
pass
|
520
|
+
|
521
|
+
def _get_slice_start_index(self):
|
522
|
+
return self.z_min + self._phase_margin_up
|
523
|
+
|
524
|
+
_get_image_start_index = _get_slice_start_index
|
525
|
+
|
526
|
+
#
|
527
|
+
# Pipeline initialization
|
528
|
+
#
|
529
|
+
|
530
|
+
def _reset_diagnostics(self):
|
531
|
+
self.diagnostic_radios[:] = 0
|
532
|
+
self.diagnostic_weights[:] = 0
|
533
|
+
self.diagnostic_zpix_transl[:] = 0
|
534
|
+
self.diagnostic_zmm_transl[:] = 0
|
535
|
+
self.diagnostic_proj_angle[:] = np.nan
|
536
|
+
|
537
|
+
def _init_pipeline(self):
|
538
|
+
self._get_size_of_a_raw_radio()
|
539
|
+
|
540
|
+
self._init_reader()
|
541
|
+
|
542
|
+
self._init_flatfield()
|
543
|
+
|
544
|
+
self._init_double_flatfield()
|
545
|
+
self._init_weights_field()
|
546
|
+
|
547
|
+
self._init_ccd_corrections()
|
548
|
+
self._init_phase()
|
549
|
+
self._init_unsharp()
|
550
|
+
self._init_mlog()
|
551
|
+
self._init_sino_normalization()
|
552
|
+
self._init_sino_builder()
|
553
|
+
self._prepare_reconstruction()
|
554
|
+
self._init_reconstruction()
|
555
|
+
self._init_histogram()
|
556
|
+
self._init_writer()
|
557
|
+
self._configure_data_dumps()
|
558
|
+
|
559
|
+
self._configure_regular_accumulator()
|
560
|
+
|
561
|
+
def _set_detector_distortion_correction(self):
|
562
|
+
if self.process_config.nabu_config["preproc"]["detector_distortion_correction"] is None:
|
563
|
+
self.detector_corrector = None
|
564
|
+
else:
|
565
|
+
self.detector_corrector = DetectorDistortionProvider(
|
566
|
+
detector_full_shape_vh=self.process_config.dataset_info.radio_dims[::-1],
|
567
|
+
correction_type=self.process_config.nabu_config["preproc"]["detector_distortion_correction"],
|
568
|
+
options=self.process_config.nabu_config["preproc"]["detector_distortion_correction_options"],
|
569
|
+
)
|
570
|
+
|
571
|
+
def _configure_regular_accumulator(self):
|
572
|
+
##
|
573
|
+
# keeping these freshly numpyed objects referenced by self
|
574
|
+
# ensures that their buffer info, conserved by c++ implementation of GriddedAccumulator
|
575
|
+
# will always point to existing data, which could otherwise be garbage collected by python
|
576
|
+
#
|
577
|
+
|
578
|
+
if self.process_config.nabu_config["preproc"]["normalize_srcurrent"]:
|
579
|
+
self.radios_srcurrent = np.array(self.dataset_info.projections_srcurrent, "f")
|
580
|
+
self.flats_srcurrent = np.array(self.dataset_info.flats_srcurrent, "f")
|
581
|
+
else:
|
582
|
+
self.radios_srcurrent = None
|
583
|
+
self.flats_srcurrent = None
|
584
|
+
|
585
|
+
self.regular_accumulator = GriddedAccumulator(
|
586
|
+
gridded_radios=self.gridded_radios,
|
587
|
+
gridded_weights=self.gridded_cumulated_weights,
|
588
|
+
diagnostic_radios=self.diagnostic_radios,
|
589
|
+
diagnostic_weights=self.diagnostic_weights,
|
590
|
+
diagnostic_angles=self.diagnostic_proj_angle,
|
591
|
+
diagnostic_zpix_transl=self.diagnostic_zpix_transl,
|
592
|
+
diagnostic_searched_angles_rad_clipped=self.diagnostic_searched_angles_rad_clipped,
|
593
|
+
dark=self.flatfield.get_dark(),
|
594
|
+
flat_indexes=self.flatfield._sorted_flat_indices,
|
595
|
+
flats=self.flatfield.flats_stack,
|
596
|
+
weights=self.weights_field.data,
|
597
|
+
double_flat=self.double_flatfield.data,
|
598
|
+
diag_zpro_run=self.diag_zpro_run,
|
599
|
+
radios_srcurrent=self.radios_srcurrent,
|
600
|
+
flats_srcurrent=self.flats_srcurrent,
|
601
|
+
)
|
602
|
+
|
603
|
+
return
|
604
|
+
|
605
|
+
def _get_size_of_a_raw_radio(self):
|
606
|
+
"""Once for all we find the shape of a radio.
|
607
|
+
This information will be used in other parts of the code when allocating
|
608
|
+
bunch of data holders
|
609
|
+
"""
|
610
|
+
if "read_chunk" not in self.processing_steps:
|
611
|
+
raise ValueError("Cannot proceed without reading data")
|
612
|
+
|
613
|
+
options = self.processing_options["read_chunk"]
|
614
|
+
|
615
|
+
here_a_file = next(iter(options["files"].values()))
|
616
|
+
here_a_radio = silx.io.get_data(here_a_file)
|
617
|
+
|
618
|
+
binning_x, binning_z = self._get_binning()
|
619
|
+
if (binning_z, binning_x) != (1, 1):
|
620
|
+
binning_function = get_binning_function((binning_z, binning_x))
|
621
|
+
here_a_radio = binning_function(here_a_radio)
|
622
|
+
|
623
|
+
self.whole_radio_shape = here_a_radio.shape
|
624
|
+
return self.whole_radio_shape
|
625
|
+
|
626
|
+
@use_options("read_chunk", "chunk_reader")
|
627
|
+
def _init_reader(self):
|
628
|
+
if "read_chunk" not in self.processing_steps:
|
629
|
+
raise ValueError("Cannot proceed without reading data")
|
630
|
+
options = self.processing_options["read_chunk"]
|
631
|
+
|
632
|
+
assert options.get("process_file", None) is None, "Resume not yet implemented in helical pipeline"
|
633
|
+
|
634
|
+
# dummy initialisation, it will be _set_subregion'ed and set_data_buffer'ed in the loops
|
635
|
+
self.chunk_reader = ChunkReaderHelical(
|
636
|
+
options["files"],
|
637
|
+
sub_region=None, # setting of subregion will be already done by calls to set_subregion
|
638
|
+
detector_corrector=self.detector_corrector,
|
639
|
+
convert_float=True,
|
640
|
+
binning=options["binning"],
|
641
|
+
dataset_subsampling=options["dataset_subsampling"],
|
642
|
+
data_buffer=None,
|
643
|
+
pre_allocate=True,
|
644
|
+
)
|
645
|
+
|
646
|
+
self._init_reader_finalize()
|
647
|
+
|
648
|
+
@use_options("flatfield", "flatfield")
|
649
|
+
def _init_flatfield(self, shape=None):
|
650
|
+
if shape is None:
|
651
|
+
shape = self._get_shape("flatfield")
|
652
|
+
options = self.processing_options["flatfield"]
|
653
|
+
|
654
|
+
distortion_correction = None
|
655
|
+
if options["do_flat_distortion"]:
|
656
|
+
self.logger.info("Flats distortion correction will be applied")
|
657
|
+
estimation_kwargs = {}
|
658
|
+
estimation_kwargs.update(options["flat_distortion_params"])
|
659
|
+
estimation_kwargs["logger"] = self.logger
|
660
|
+
distortion_correction = DistortionCorrection(
|
661
|
+
estimation_method="fft-correlation", estimation_kwargs=estimation_kwargs, correction_method="interpn"
|
662
|
+
)
|
663
|
+
|
664
|
+
self.flatfield = self.FlatFieldClass(
|
665
|
+
shape,
|
666
|
+
flats=self.dataset_info.flats,
|
667
|
+
darks=self.dataset_info.darks,
|
668
|
+
radios_indices=options["projs_indices"],
|
669
|
+
interpolation="linear",
|
670
|
+
distortion_correction=distortion_correction,
|
671
|
+
radios_srcurrent=options["radios_srcurrent"],
|
672
|
+
flats_srcurrent=options["flats_srcurrent"],
|
673
|
+
detector_corrector=self.detector_corrector,
|
674
|
+
## every flat will be read at a different heigth
|
675
|
+
### sub_region=self.sub_region,
|
676
|
+
binning=options["binning"],
|
677
|
+
convert_float=True,
|
678
|
+
)
|
679
|
+
|
680
|
+
def _get_binning(self):
|
681
|
+
options = self.processing_options["read_chunk"]
|
682
|
+
binning = options["binning"]
|
683
|
+
if binning is None:
|
684
|
+
return 1, 1
|
685
|
+
else:
|
686
|
+
return binning
|
687
|
+
|
688
|
+
def _init_double_flatfield(self):
|
689
|
+
options = self.processing_options["double_flatfield"]
|
690
|
+
|
691
|
+
binning_x, binning_z = self._get_binning()
|
692
|
+
|
693
|
+
result_url = None
|
694
|
+
|
695
|
+
self.double_flatfield = None
|
696
|
+
|
697
|
+
if options["processes_file"] not in (None, ""):
|
698
|
+
file_path = options["processes_file"]
|
699
|
+
data_path = (self.dataset_info.hdf5_entry or "entry") + "/double_flatfield/results/data"
|
700
|
+
|
701
|
+
if path.exists(file_path) and (data_path in h5py.File(file_path, "r")):
|
702
|
+
result_url = DataUrl(file_path=file_path, data_path=data_path)
|
703
|
+
self.logger.info("Loading double flatfield from %s" % result_url.file_path())
|
704
|
+
|
705
|
+
self.double_flatfield = self.DoubleFlatFieldClass(
|
706
|
+
self._get_shape("double_flatfield"),
|
707
|
+
result_url=result_url,
|
708
|
+
binning_x=binning_x,
|
709
|
+
binning_z=binning_z,
|
710
|
+
detector_corrector=self.detector_corrector,
|
711
|
+
)
|
712
|
+
|
713
|
+
def _init_weights_field(self):
|
714
|
+
options = self.processing_options["double_flatfield"]
|
715
|
+
result_url = None
|
716
|
+
|
717
|
+
binning_x, binning_z = self.chunk_reader.get_binning()
|
718
|
+
|
719
|
+
self.weights_field = None
|
720
|
+
|
721
|
+
if options["processes_file"] not in (None, ""):
|
722
|
+
file_path = options["processes_file"]
|
723
|
+
data_path = (self.dataset_info.hdf5_entry or "entry") + "/weights_field/results/data"
|
724
|
+
|
725
|
+
if path.exists(file_path) and (data_path in h5py.File(file_path, "r")):
|
726
|
+
result_url = DataUrl(file_path=file_path, data_path=data_path)
|
727
|
+
self.logger.info("Loading weights_field from %s" % result_url.file_path())
|
728
|
+
|
729
|
+
self.weights_field = self.DoubleFlatFieldClass(
|
730
|
+
self._get_shape("double_flatfield"), result_url=result_url, binning_x=binning_x, binning_z=binning_z
|
731
|
+
)
|
732
|
+
|
733
|
+
def _init_ccd_corrections(self):
|
734
|
+
if "ccd_correction" not in self.processing_steps:
|
735
|
+
return
|
736
|
+
|
737
|
+
options = self.processing_options["ccd_correction"]
|
738
|
+
|
739
|
+
median_clip_thresh = options["median_clip_thresh"]
|
740
|
+
|
741
|
+
self.ccd_correction = self.CCDFilterClass(
|
742
|
+
self._get_shape("ccd_correction"), median_clip_thresh=median_clip_thresh
|
743
|
+
)
|
744
|
+
|
745
|
+
@use_options("phase", "phase_retrieval")
|
746
|
+
def _init_phase(self):
|
747
|
+
options = self.processing_options["phase"]
|
748
|
+
# If unsharp mask follows phase retrieval, then it should be done
|
749
|
+
# before cropping to the "inner part".
|
750
|
+
# Otherwise, crop the data just after phase retrieval.
|
751
|
+
if "unsharp_mask" in self.processing_steps:
|
752
|
+
margin = None
|
753
|
+
else:
|
754
|
+
margin = self._phase_margin
|
755
|
+
self.phase_retrieval = self.PaganinPhaseRetrievalClass(
|
756
|
+
self._get_shape("phase"),
|
757
|
+
distance=options["distance_m"],
|
758
|
+
energy=options["energy_kev"],
|
759
|
+
delta_beta=options["delta_beta"],
|
760
|
+
pixel_size=options["pixel_size_m"],
|
761
|
+
padding=options["padding_type"],
|
762
|
+
margin=margin,
|
763
|
+
fft_num_threads=True, # TODO tune in advanced params of nabu config file
|
764
|
+
)
|
765
|
+
if self.phase_retrieval.use_fftw:
|
766
|
+
self.logger.debug(
|
767
|
+
"PaganinPhaseRetrieval using FFTW with %d threads" % self.phase_retrieval.fftw.num_threads
|
768
|
+
)
|
769
|
+
|
770
|
+
##@use_options("unsharp_mask", "unsharp_mask")
|
771
|
+
|
772
|
+
def _init_unsharp(self):
|
773
|
+
if "unsharp_mask" not in self.processing_steps:
|
774
|
+
self.unsharp_mask = None
|
775
|
+
self.unsharp_sigma = 0.0
|
776
|
+
self.unsharp_coeff = 0.0
|
777
|
+
self.unsharp_method = "log"
|
778
|
+
else:
|
779
|
+
options = self.processing_options["unsharp_mask"]
|
780
|
+
self.unsharp_sigma = options["unsharp_sigma"]
|
781
|
+
self.unsharp_coeff = options["unsharp_coeff"]
|
782
|
+
self.unsharp_method = options["unsharp_method"]
|
783
|
+
|
784
|
+
self.unsharp_mask = self.UnsharpMaskClass(
|
785
|
+
self._get_shape("unsharp_mask"),
|
786
|
+
options["unsharp_sigma"],
|
787
|
+
options["unsharp_coeff"],
|
788
|
+
mode="reflect",
|
789
|
+
method=options["unsharp_method"],
|
790
|
+
)
|
791
|
+
|
792
|
+
def _init_mlog(self):
|
793
|
+
options = self.processing_options["take_log"]
|
794
|
+
|
795
|
+
self.mlog = self.MLogClass(
|
796
|
+
self._get_shape("take_log"), clip_min=options["log_min_clip"], clip_max=options["log_max_clip"]
|
797
|
+
)
|
798
|
+
|
799
|
+
@use_options("sino_normalization", "sino_normalization")
|
800
|
+
def _init_sino_normalization(self):
|
801
|
+
options = self.processing_options["sino_normalization"]
|
802
|
+
self.sino_normalization = self.SinoNormalizationClass(
|
803
|
+
kind=options["method"],
|
804
|
+
radios_shape=self._get_shape("sino_normalization_slim"),
|
805
|
+
)
|
806
|
+
|
807
|
+
def _init_sino_builder(self):
|
808
|
+
options = self.processing_options["reconstruction"] ## build_sino class disappeared disappeared
|
809
|
+
|
810
|
+
self.sino_builder = self.SinoBuilderClass(
|
811
|
+
radios_shape=self._get_shape("build_sino"),
|
812
|
+
rot_center=options["rotation_axis_position"],
|
813
|
+
halftomo=False,
|
814
|
+
)
|
815
|
+
self._sinobuilder_copy = False
|
816
|
+
self._sinobuilder_output = None
|
817
|
+
self.sinos = None
|
818
|
+
|
819
|
+
# this should be renamed, as it could be confused with _init_reconstruction. What about _get_reconstruction_array ?
|
820
|
+
@use_options("reconstruction", "reconstruction")
|
821
|
+
def _prepare_reconstruction(self):
|
822
|
+
options = self.processing_options["reconstruction"]
|
823
|
+
x_s, x_e = options["start_x"], options["end_x"]
|
824
|
+
y_s, y_e = options["start_y"], options["end_y"]
|
825
|
+
|
826
|
+
if not self.diag_zpro_run:
|
827
|
+
self._rec_roi = (x_s, x_e + 1, y_s, y_e + 1)
|
828
|
+
self._allocate_recs(y_e - y_s + 1, x_e - x_s + 1)
|
829
|
+
else:
|
830
|
+
## Dummy 1x1 place holder
|
831
|
+
self._rec_roi = (x_s, x_s + 1, y_s, y_s + 1)
|
832
|
+
self._allocate_recs(y_s - y_s + 1, x_s - x_s + 1)
|
833
|
+
|
834
|
+
@use_options("reconstruction", "reconstruction")
|
835
|
+
def _init_reconstruction(self):
|
836
|
+
options = self.processing_options["reconstruction"]
|
837
|
+
|
838
|
+
if self.sino_builder is None:
|
839
|
+
raise ValueError("Reconstruction cannot be done without build_sino")
|
840
|
+
|
841
|
+
if self.FBPClass is None:
|
842
|
+
raise ValueError("No usable FBP module was found")
|
843
|
+
|
844
|
+
rot_center = options["rotation_axis_position"]
|
845
|
+
|
846
|
+
start_y, end_y, start_x, end_x = self._rec_roi
|
847
|
+
|
848
|
+
if self.HBPClass is not None and self.process_config.nabu_config["reconstruction"]["use_hbp"]:
|
849
|
+
fan_source_distance_meters = self.process_config.nabu_config["reconstruction"]["fan_source_distance_meters"]
|
850
|
+
|
851
|
+
self.reconstruction_hbp = self.HBPClass(
|
852
|
+
self._get_shape("one_sino_slim"),
|
853
|
+
slice_shape=(end_y - start_y, end_x - start_x),
|
854
|
+
angles=self.my_angles_rad,
|
855
|
+
rot_center=rot_center,
|
856
|
+
extra_options={"axis_correction": np.zeros(self.radios.shape[0], "f")},
|
857
|
+
axis_source_meters=fan_source_distance_meters,
|
858
|
+
voxel_size_microns=options["voxel_size_cm"][0] * 1.0e4,
|
859
|
+
scale_factor=2.0 / options["voxel_size_cm"][0],
|
860
|
+
clip_outer_circle=options["clip_outer_circle"],
|
861
|
+
)
|
862
|
+
|
863
|
+
else:
|
864
|
+
self.reconstruction_hbp = None
|
865
|
+
|
866
|
+
self.reconstruction = self.FBPClass(
|
867
|
+
self._get_shape("reconstruction"),
|
868
|
+
angles=np.zeros(self.radios.shape[0], "f"),
|
869
|
+
rot_center=rot_center,
|
870
|
+
filter_name=options["fbp_filter_type"],
|
871
|
+
slice_roi=self._rec_roi,
|
872
|
+
# slice_shape = ( end_y-start_y, end_x- start_x ),
|
873
|
+
scale_factor=2.0 / options["voxel_size_cm"][0],
|
874
|
+
padding_mode=options["padding_type"],
|
875
|
+
extra_options={
|
876
|
+
"scale_factor": 2.0 / options["voxel_size_cm"][0],
|
877
|
+
"axis_correction": np.zeros(self.radios.shape[0], "f"),
|
878
|
+
"clip_outer_circle": options["clip_outer_circle"],
|
879
|
+
}, # "padding_mode": options["padding_type"], },
|
880
|
+
)
|
881
|
+
|
882
|
+
my_options = self.process_config.nabu_config["reconstruction"]
|
883
|
+
if my_options["axis_to_the_center"]:
|
884
|
+
x_s, x_ep1, y_s, y_ep1 = self._rec_roi
|
885
|
+
off_x = -int(round((x_s + x_ep1 - 1) / 2.0 - rot_center))
|
886
|
+
off_y = -int(round((y_s + y_ep1 - 1) / 2.0 - rot_center))
|
887
|
+
self.reconstruction.offsets = {"x": off_x, "y": off_y}
|
888
|
+
|
889
|
+
if options["fbp_filter_type"] is None:
|
890
|
+
self.reconstruction.fbp = self.reconstruction.backproj
|
891
|
+
|
892
|
+
@use_options("histogram", "histogram")
|
893
|
+
def _init_histogram(self):
|
894
|
+
options = self.processing_options["histogram"]
|
895
|
+
self.histogram = self.HistogramClass(method="fixed_bins_number", num_bins=options["histogram_bins"])
|
896
|
+
self.histo_stack = []
|
897
|
+
|
898
|
+
@use_options("save", "writer")
|
899
|
+
def _init_writer(self, chunk_info=None):
|
900
|
+
options = self.processing_options["save"]
|
901
|
+
file_prefix = options["file_prefix"]
|
902
|
+
output_dir = path.join(options["location"], file_prefix)
|
903
|
+
nx_info = None
|
904
|
+
self._hdf5_output = is_hdf5_extension(options["file_format"])
|
905
|
+
|
906
|
+
if chunk_info is not None:
|
907
|
+
d_v, d_h = self.process_config.dataset_info.radio_dims[::-1]
|
908
|
+
h_rels = self._get_slice_start_index() + np.arange(chunk_info.span_v[1] - chunk_info.span_v[0])
|
909
|
+
fact_mm = self.process_config.dataset_info.pixel_size * 1.0e-3
|
910
|
+
heights_mm = (
|
911
|
+
fact_mm * (-self.span_info.z_pix_per_proj[0] + (d_v - 1) / 2 - h_rels) - self.span_info.z_offset_mm
|
912
|
+
)
|
913
|
+
else:
|
914
|
+
heights_mm = None
|
915
|
+
|
916
|
+
if self._hdf5_output:
|
917
|
+
fname_start_index = None
|
918
|
+
file_prefix += str("_%06d" % self._get_slice_start_index())
|
919
|
+
entry = getattr(self.dataset_info.dataset_scanner, "entry", None)
|
920
|
+
nx_info = {
|
921
|
+
"process_name": self._get_process_name(),
|
922
|
+
"processing_index": 0,
|
923
|
+
"config": {
|
924
|
+
"processing_options": self.processing_options,
|
925
|
+
"nabu_config": self.process_config.nabu_config,
|
926
|
+
},
|
927
|
+
"entry": entry,
|
928
|
+
}
|
929
|
+
self._histogram_processing_index = nx_info["processing_index"] + 1
|
930
|
+
elif options["file_format"] in ["tif", "tiff", "edf"]:
|
931
|
+
fname_start_index = self._get_slice_start_index()
|
932
|
+
self._histogram_processing_index = 1
|
933
|
+
|
934
|
+
self._writer_configurator = WriterConfigurator(
|
935
|
+
output_dir,
|
936
|
+
file_prefix,
|
937
|
+
file_format=options["file_format"],
|
938
|
+
overwrite=options["overwrite"],
|
939
|
+
start_index=fname_start_index,
|
940
|
+
heights_above_stage_mm=heights_mm,
|
941
|
+
logger=self.logger,
|
942
|
+
nx_info=nx_info,
|
943
|
+
write_histogram=("histogram" in self.processing_steps),
|
944
|
+
histogram_entry=getattr(self.dataset_info.dataset_scanner, "entry", "entry"),
|
945
|
+
)
|
946
|
+
self.writer = self._writer_configurator.writer
|
947
|
+
self._writer_exec_args = self._writer_configurator._writer_exec_args
|
948
|
+
self._writer_exec_kwargs = self._writer_configurator._writer_exec_kwargs
|
949
|
+
self.histogram_writer = self._writer_configurator.get_histogram_writer()
|
950
|
+
|
951
|
+
def _apply_expand_fact(self, t):
|
952
|
+
if t is not None:
|
953
|
+
t = t * self.chunk_reader.dataset_subsampling
|
954
|
+
return t
|
955
|
+
|
956
|
+
def _expand_slice(self, subchunk_slice):
|
957
|
+
start, stop, step = subchunk_slice.start, subchunk_slice.stop, subchunk_slice.step
|
958
|
+
if step is None:
|
959
|
+
step = 1
|
960
|
+
|
961
|
+
start, stop, step = list(map(self._apply_expand_fact, [start, stop, step]))
|
962
|
+
result_slice = slice(start, stop, step)
|
963
|
+
return result_slice
|
964
|
+
|
965
|
+
def _read_data_and_apply_flats(self, sub_total_prange_slice, subchunk_slice, chunk_info):
|
966
|
+
my_integer_shifts_v = chunk_info.integer_shift_v[subchunk_slice]
|
967
|
+
fract_complement_shifts_v = chunk_info.fract_complement_to_integer_shift_v[subchunk_slice]
|
968
|
+
x_shifts_list = chunk_info.x_pix_per_proj[subchunk_slice]
|
969
|
+
(subr_start_x, subr_end_x, subr_start_z, subr_end_z) = self.sub_region
|
970
|
+
subr_start_z_list = subr_start_z - my_integer_shifts_v
|
971
|
+
subr_end_z_list = subr_end_z - my_integer_shifts_v + 1
|
972
|
+
|
973
|
+
self._reset_reader_subregion((None, None, subr_start_z_list.min(), subr_end_z_list.max()))
|
974
|
+
|
975
|
+
dtasrc_start_x, dtasrc_end_x, dtasrc_start_z, dtasrc_end_z = self.trimmed_floating_subregion
|
976
|
+
|
977
|
+
if self.diag_zpro_run:
|
978
|
+
searched_angles = self.diagnostic_searched_angles_rad_clipped
|
979
|
+
|
980
|
+
these_angles = chunk_info.angles_rad[subchunk_slice]
|
981
|
+
if len(these_angles) > 1:
|
982
|
+
# these_angles are the projection angles
|
983
|
+
# if no diagnostic angle falls close to them we skip to the next angular subchunk
|
984
|
+
# (here slice refers to angular slicing)
|
985
|
+
# We like hdf5 but we that is not a reason to read them all the time, so we spare time
|
986
|
+
|
987
|
+
a_step = abs(these_angles[1:] - these_angles[:-1]).mean()
|
988
|
+
distance = abs(np.mod(these_angles, np.pi * 2) - searched_angles[:, None]).min()
|
989
|
+
distance_l = abs(np.mod(these_angles, np.pi * 2) - searched_angles[:, None] - a_step).min()
|
990
|
+
distance_h = abs(np.mod(these_angles, np.pi * 2) - searched_angles[:, None] + a_step).min()
|
991
|
+
distance = np.array([distance, distance_h, distance_l]).min()
|
992
|
+
|
993
|
+
if distance > 2 * a_step:
|
994
|
+
return
|
995
|
+
|
996
|
+
self.chunk_reader.load_data(overwrite=True, sub_total_prange_slice=sub_total_prange_slice)
|
997
|
+
if self.chunk_reader.dataset_subsampling > 1:
|
998
|
+
radios_angular_range_slicing = self._expand_slice(sub_total_prange_slice)
|
999
|
+
else:
|
1000
|
+
radios_angular_range_slicing = sub_total_prange_slice
|
1001
|
+
my_subsampled_indexes = self.chunk_reader._sorted_files_indices[radios_angular_range_slicing]
|
1002
|
+
data_raw = self.chunk_reader.data[: len(my_subsampled_indexes)]
|
1003
|
+
|
1004
|
+
self.regular_accumulator.extract_preprocess_with_flats(
|
1005
|
+
subchunk_slice,
|
1006
|
+
my_subsampled_indexes, # these are indexes pointing within the global domain sequence which is composed of darks flats radios
|
1007
|
+
chunk_info,
|
1008
|
+
np.array((subr_start_z, subr_end_z), "i"),
|
1009
|
+
np.array((dtasrc_start_z, dtasrc_end_z), "i"),
|
1010
|
+
data_raw,
|
1011
|
+
radios_angular_range_slicing # my_subsampled_indexes is important in order to compare the
|
1012
|
+
# radios positions with respect to the flat position, and these position
|
1013
|
+
# are given as the sequential acquisition number which counts everything ( flats, darks, radios )
|
1014
|
+
# Insteqd, in order to access array which spans only the radios, we need to have an idea of where we are.
|
1015
|
+
# this is provided by radios_angular_range_slicing which addresses the radios domain
|
1016
|
+
)
|
1017
|
+
|
1018
|
+
def binning_expanded(self, region):
|
1019
|
+
binning_x, binning_z = self.chunk_reader.get_binning()
|
1020
|
+
binnings = [binning_x] * 2 + [binning_z] * 2
|
1021
|
+
res = [None if tok is None else tok * fact for tok, fact in zip(region, binnings)]
|
1022
|
+
return res
|
1023
|
+
|
1024
|
+
def _reset_reader_subregion(self, floating_subregion):
|
1025
|
+
if self._resume_from_step is None:
|
1026
|
+
binning_x, binning_z = self.chunk_reader.get_binning()
|
1027
|
+
|
1028
|
+
start_x, end_x, start_z, end_z = floating_subregion
|
1029
|
+
trimmed_start_z = max(0, start_z)
|
1030
|
+
trimmed_end_z = min(self.whole_radio_shape[0], end_z)
|
1031
|
+
|
1032
|
+
my_buffer_height = trimmed_end_z - trimmed_start_z
|
1033
|
+
|
1034
|
+
if self.radios_buffer is None or my_buffer_height > self.safe_buffer_height:
|
1035
|
+
self.safe_buffer_height = end_z - start_z
|
1036
|
+
assert (
|
1037
|
+
self.safe_buffer_height >= my_buffer_height
|
1038
|
+
), "This should always be true, if not contact the developer"
|
1039
|
+
self.radios_buffer = None
|
1040
|
+
self.radios_buffer = np.zeros(
|
1041
|
+
(self.reading_granularity + self.extra_marge_granularity,)
|
1042
|
+
+ (self.safe_buffer_height, self.whole_radio_shape[1]),
|
1043
|
+
np.float32,
|
1044
|
+
)
|
1045
|
+
|
1046
|
+
self.trimmed_floating_subregion = start_x, end_x, trimmed_start_z, trimmed_end_z
|
1047
|
+
|
1048
|
+
self.chunk_reader._set_subregion(self.binning_expanded(self.trimmed_floating_subregion))
|
1049
|
+
self.chunk_reader._init_reader()
|
1050
|
+
self.chunk_reader._loaded = False
|
1051
|
+
|
1052
|
+
self.chunk_reader.set_data_buffer(self.radios_buffer[:, :my_buffer_height, :], pre_allocate=False)
|
1053
|
+
|
1054
|
+
else:
|
1055
|
+
message = "Resume not yet implemented in helical pipeline"
|
1056
|
+
raise RuntimeError(message)
|
1057
|
+
|
1058
|
+
def _ccd_corrections(self, radios=None):
|
1059
|
+
if radios is None:
|
1060
|
+
radios = self.gridded_radios
|
1061
|
+
if hasattr(self.ccd_correction, "median_clip_correction_multiple_images"):
|
1062
|
+
self.ccd_correction.median_clip_correction_multiple_images(radios)
|
1063
|
+
else:
|
1064
|
+
_tmp_radio = self._cpu_allocate_array(radios.shape[1:], "f", name="tmp_ccdcorr_radio")
|
1065
|
+
for i in range(radios.shape[0]):
|
1066
|
+
self.ccd_correction.median_clip_correction(radios[i], output=_tmp_radio)
|
1067
|
+
radios[i][:] = _tmp_radio[:]
|
1068
|
+
|
1069
|
+
def _retrieve_phase(self):
|
1070
|
+
if "unsharp_mask" in self.processing_steps:
|
1071
|
+
for i in range(self.gridded_radios.shape[0]):
|
1072
|
+
self.gridded_radios[i] = self.phase_retrieval.apply_filter(self.gridded_radios[i])
|
1073
|
+
else:
|
1074
|
+
for i in range(self.gridded_radios.shape[0]):
|
1075
|
+
self.radios[i] = self.phase_retrieval.apply_filter(self.gridded_radios[i])
|
1076
|
+
|
1077
|
+
def _nophase_put_to_radios(self, target, source):
|
1078
|
+
((up_margin, down_margin), (left_margin, right_margin)) = self.phase_margin
|
1079
|
+
|
1080
|
+
zslice = slice(up_margin or None, -down_margin or None)
|
1081
|
+
xslice = slice(left_margin or None, -right_margin or None)
|
1082
|
+
|
1083
|
+
for i in range(target.shape[0]):
|
1084
|
+
target[i] = source[i][zslice, xslice]
|
1085
|
+
|
1086
|
+
def _apply_unsharp():
|
1087
|
+
((up_margin, down_margin), (left_margin, right_margin)) = self._phase_margin
|
1088
|
+
|
1089
|
+
zslice = slice(up_margin or None, -down_margin or None)
|
1090
|
+
xslice = slice(left_margin or None, -right_margin or None)
|
1091
|
+
|
1092
|
+
for i in range(self.radios.shape[0]):
|
1093
|
+
self.radios[i] = self.unsharp_mask.unsharp(self.gridded_radios[i])[zslice, xslice]
|
1094
|
+
|
1095
|
+
def _take_log(self):
|
1096
|
+
self.mlog.take_logarithm(self.radios)
|
1097
|
+
|
1098
|
+
@pipeline_step("sino_normalization", "Normalizing sinograms")
|
1099
|
+
def _normalize_sinos(self, radios=None):
|
1100
|
+
if radios is None:
|
1101
|
+
radios = self.radios
|
1102
|
+
sinos = radios.transpose((1, 0, 2))
|
1103
|
+
self.sino_normalization.normalize(sinos)
|
1104
|
+
|
1105
|
+
def _dump_sinogram(self, radios=None):
|
1106
|
+
if radios is None:
|
1107
|
+
radios = self.radios
|
1108
|
+
self._dump_data_to_file("sinogram", data=radios)
|
1109
|
+
|
1110
|
+
@pipeline_step("sino_builder", "Building sinograms")
|
1111
|
+
def _build_sino(self):
|
1112
|
+
self.sinos = self.radios_slim
|
1113
|
+
|
1114
|
+
def _filter(self):
|
1115
|
+
rot_center = self.processing_options["reconstruction"]["rotation_axis_position"]
|
1116
|
+
self.reconstruction.sino_filter.filter_sino(
|
1117
|
+
self.radios_slim,
|
1118
|
+
mirror_indexes=self.mirror_angle_relative_indexes,
|
1119
|
+
rot_center=rot_center,
|
1120
|
+
output=self.radios_slim,
|
1121
|
+
)
|
1122
|
+
|
1123
|
+
def _build_sino(self):
|
1124
|
+
self.sinos = self.radios_slim
|
1125
|
+
|
1126
|
+
def _reconstruct(self, sinos=None, chunk_info=None, i_slice=0):
|
1127
|
+
if sinos is None:
|
1128
|
+
sinos = self.sinos
|
1129
|
+
|
1130
|
+
use_hbp = self.process_config.nabu_config["reconstruction"]["use_hbp"]
|
1131
|
+
|
1132
|
+
if not use_hbp:
|
1133
|
+
if i_slice == 0:
|
1134
|
+
self.reconstruction.set_custom_angles_and_axis_corrections(
|
1135
|
+
self.my_angles_rad, np.zeros_like(self.my_angles_rad)
|
1136
|
+
)
|
1137
|
+
|
1138
|
+
self.reconstruction.backprojection(sinos, output=self.recs[0])
|
1139
|
+
|
1140
|
+
self.recs[0].get(self.recs_stack[i_slice])
|
1141
|
+
else:
|
1142
|
+
if self.reconstruction_hbp is None:
|
1143
|
+
raise ValueError("You requested the hierchical backprojector but the module could not be imported")
|
1144
|
+
self.reconstruction_hbp.backprojection(sinos, output=self.recs_stack[i_slice])
|
1145
|
+
|
1146
|
+
def _compute_histogram(self, data=None, i_slice=None, num_slices=None):
|
1147
|
+
if self.histogram is None:
|
1148
|
+
return
|
1149
|
+
|
1150
|
+
if data is None:
|
1151
|
+
data = self.recs
|
1152
|
+
|
1153
|
+
my_histo = self.histogram.compute_histogram(data.ravel())
|
1154
|
+
self.histo_stack.append(my_histo)
|
1155
|
+
|
1156
|
+
if i_slice == num_slices - 1:
|
1157
|
+
self.recs_histogram = self.histogram.merge_histograms(self.histo_stack)
|
1158
|
+
self.histo_stack.clear()
|
1159
|
+
|
1160
|
+
def _write_data(self, data=None):
|
1161
|
+
if data is None:
|
1162
|
+
data = self.recs_stack
|
1163
|
+
my_kw_args = copy.copy(self._writer_exec_kwargs)
|
1164
|
+
if "config" in my_kw_args:
|
1165
|
+
self.logger.info(
|
1166
|
+
"omitting config in writer because of too slow nexus writer. Just writing the diagnostics, if any "
|
1167
|
+
)
|
1168
|
+
|
1169
|
+
# diagnostic are saved here, with the Nabu mechanism for config
|
1170
|
+
self.diagnostic_zpix_transl[:] = np.interp(
|
1171
|
+
self.diagnostic_proj_angle,
|
1172
|
+
np.deg2rad(self.span_info.projection_angles_deg_internally),
|
1173
|
+
self.span_info.z_pix_per_proj,
|
1174
|
+
)
|
1175
|
+
self.diagnostic_zmm_transl[:] = self.diagnostic_zpix_transl * self.span_info.pix_size_mm
|
1176
|
+
|
1177
|
+
my_kw_args["config"] = self.diagnostic
|
1178
|
+
|
1179
|
+
self.writer.write(data, *self._writer_exec_args, **my_kw_args)
|
1180
|
+
self.logger.info("Wrote %s" % self.writer.get_filename())
|
1181
|
+
self._write_histogram()
|
1182
|
+
|
1183
|
+
def _write_histogram(self):
|
1184
|
+
if "histogram" not in self.processing_steps:
|
1185
|
+
return
|
1186
|
+
self.logger.info("Saving histogram")
|
1187
|
+
self.histogram_writer.write(
|
1188
|
+
hist_as_2Darray(self.recs_histogram),
|
1189
|
+
self._get_process_name(kind="histogram"),
|
1190
|
+
processing_index=self._histogram_processing_index,
|
1191
|
+
config={
|
1192
|
+
"file": path.basename(self.writer.get_filename()),
|
1193
|
+
"bins": self.processing_options["histogram"]["histogram_bins"],
|
1194
|
+
},
|
1195
|
+
)
|
1196
|
+
|
1197
|
+
def _dump_data_to_file(self, step_name, data=None):
|
1198
|
+
if step_name not in self._data_dump:
|
1199
|
+
return
|
1200
|
+
self.logger.info(f"DUMP step_name={step_name}")
|
1201
|
+
if data is None:
|
1202
|
+
data = self.radios
|
1203
|
+
writer = self._data_dump[step_name]
|
1204
|
+
self.logger.info("Dumping data to %s" % writer.fname)
|
1205
|
+
writer.write_data(data)
|
1206
|
+
|
1207
|
+
def balance_weights(self):
|
1208
|
+
options = self.processing_options["reconstruction"]
|
1209
|
+
|
1210
|
+
rot_center = options["rotation_axis_position"]
|
1211
|
+
|
1212
|
+
self.radios_weights[:] = rebalance(self.radios_weights, self.my_angles_rad, rot_center)
|
1213
|
+
|
1214
|
+
# When standard scans are incomplete, due to motors errors, some angular range
|
1215
|
+
# is missing short of 360 degrees.
|
1216
|
+
# The weight accounting correctly deal with it, but still the padding
|
1217
|
+
# procedure with theta+180 data may fall on empty data
|
1218
|
+
# and this may cause problems, coming from the ramp filter,
|
1219
|
+
# in half tomo.
|
1220
|
+
# To correct this we complete with what we have at hand from the nearest
|
1221
|
+
# non empty data
|
1222
|
+
#
|
1223
|
+
to_be_filled = []
|
1224
|
+
for i in range(len(self.radios_weights) - 1, 0, -1):
|
1225
|
+
if self.radios_weights[i].sum():
|
1226
|
+
break
|
1227
|
+
to_be_filled.append(i)
|
1228
|
+
for i in to_be_filled:
|
1229
|
+
self.radios[i] = self.radios[to_be_filled[-1] - 1]
|
1230
|
+
|
1231
|
+
def _post_primary_data_reduction(self, i_slice):
|
1232
|
+
"""This will be used in the derived class to transfer data to gpu"""
|
1233
|
+
self.radios_slim[:] = self.radios[:, i_slice, :]
|
1234
|
+
|
1235
|
+
def process_chunk(self, sub_region=None):
|
1236
|
+
self._private_process_chunk(sub_region=sub_region)
|
1237
|
+
self._process_finalize()
|
1238
|
+
|
1239
|
+
def _private_process_chunk(self, sub_region=None):
|
1240
|
+
assert sub_region is not None, "sub_region argument is mandatory in helical pipeline"
|
1241
|
+
|
1242
|
+
# Every chunk has its diagnostic, that is good to follow the trends in helical scans
|
1243
|
+
# or zstages
|
1244
|
+
self._reset_diagnostics()
|
1245
|
+
|
1246
|
+
self.set_subregion(sub_region)
|
1247
|
+
|
1248
|
+
(subr_start_x, subr_end_x, subr_start_z, subr_end_z) = self.sub_region
|
1249
|
+
|
1250
|
+
span_v = subr_start_z + self._phase_margin_up, subr_end_z - self._phase_margin_down
|
1251
|
+
|
1252
|
+
chunk_info = self.span_info.get_chunk_info(span_v)
|
1253
|
+
|
1254
|
+
self._reset_memory()
|
1255
|
+
self._init_writer(chunk_info)
|
1256
|
+
|
1257
|
+
self._configure_data_dumps()
|
1258
|
+
proj_num_start, proj_num_end = chunk_info.angle_index_span
|
1259
|
+
|
1260
|
+
n_granularity = self.reading_granularity
|
1261
|
+
pnum_start_list = list(np.arange(proj_num_start, proj_num_end, n_granularity))
|
1262
|
+
pnum_end_list = pnum_start_list[1:] + [proj_num_end]
|
1263
|
+
|
1264
|
+
my_first_pnum = proj_num_start
|
1265
|
+
|
1266
|
+
if self.diag_zpro_run == 0:
|
1267
|
+
# It may seem anodine, but setting a huge vector to zero
|
1268
|
+
# takes time.
|
1269
|
+
# In diagnostic collection mode we can spare it. On the other hand nothing has would be allocated for the data
|
1270
|
+
# in such case
|
1271
|
+
self.gridded_cumulated_weights[:] = 0
|
1272
|
+
self.gridded_radios[:] = 0
|
1273
|
+
|
1274
|
+
for pnum_start, pnum_end in zip(pnum_start_list, pnum_end_list):
|
1275
|
+
start_in_chunk = pnum_start - my_first_pnum
|
1276
|
+
end_in_chunk = pnum_end - my_first_pnum
|
1277
|
+
|
1278
|
+
self._read_data_and_apply_flats(
|
1279
|
+
slice(pnum_start, pnum_end), slice(start_in_chunk, end_in_chunk), chunk_info
|
1280
|
+
)
|
1281
|
+
|
1282
|
+
if not self.diag_zpro_run:
|
1283
|
+
# when we collect diagnostics we dont collect all the data
|
1284
|
+
# so there would be nothing to process here
|
1285
|
+
|
1286
|
+
self.gridded_radios[:] /= self.gridded_cumulated_weights
|
1287
|
+
|
1288
|
+
self.correct_for_missing_angles()
|
1289
|
+
|
1290
|
+
linea = self.gridded_cumulated_weights.sum(axis=(1, 2))
|
1291
|
+
i_zero_list = np.where(linea == 0)[0]
|
1292
|
+
for i_zero in i_zero_list:
|
1293
|
+
if i_zero > linea.shape[0] // 2:
|
1294
|
+
direction = -1
|
1295
|
+
else:
|
1296
|
+
direction = 1
|
1297
|
+
i = i_zero
|
1298
|
+
while ((i >= 0 and direction == -1) or ((i < linea.shape[0] - 1) and direction == 1)) and linea[i] == 0:
|
1299
|
+
i += direction
|
1300
|
+
if linea[i]:
|
1301
|
+
self.gridded_radios[i_zero] = self.gridded_radios[i]
|
1302
|
+
self.gridded_cumulated_weights[i_zero] = self.gridded_cumulated_weights[i]
|
1303
|
+
|
1304
|
+
if "flatfield" in self._data_dump:
|
1305
|
+
paganin_margin = self._phase_margin_up
|
1306
|
+
if paganin_margin:
|
1307
|
+
data_to_dump = self.gridded_radios[:, paganin_margin:-paganin_margin, :]
|
1308
|
+
else:
|
1309
|
+
data_to_dump = self.gridded_radios
|
1310
|
+
self._dump_data_to_file("flatfield", data_to_dump)
|
1311
|
+
if self.process_config.nabu_config["pipeline"]["skip_after_flatfield_dump"]:
|
1312
|
+
return
|
1313
|
+
|
1314
|
+
if "ccd_correction" in self.processing_steps:
|
1315
|
+
self._ccd_corrections()
|
1316
|
+
|
1317
|
+
if cxx_paganin is None:
|
1318
|
+
if ("phase" in self.processing_steps) or ("unsharp_mask" in self.processing_steps):
|
1319
|
+
self._retrieve_phase()
|
1320
|
+
if "unsharp_mask" in self.processing_steps:
|
1321
|
+
self._apply_unsharp()
|
1322
|
+
else:
|
1323
|
+
self._nophase_put_to_radios(self.radios, self.gridded_radios)
|
1324
|
+
else:
|
1325
|
+
if "phase" in self.processing_steps:
|
1326
|
+
pr = self.phase_retrieval
|
1327
|
+
paganin_l_micron = math.sqrt(pr.wavelength_micron * pr.distance_micron * pr.delta_beta * math.pi)
|
1328
|
+
cxx_paganin.paganin_pyhst(
|
1329
|
+
data_raw=self.gridded_radios,
|
1330
|
+
output=self.radios,
|
1331
|
+
num_of_threads=-1,
|
1332
|
+
paganin_marge=self._phase_margin_up,
|
1333
|
+
paganin_l_micron=paganin_l_micron / pr.pixel_size_micron,
|
1334
|
+
image_pixel_size_y=1.0,
|
1335
|
+
image_pixel_size_x=1.0,
|
1336
|
+
unsharp_sigma=self.unsharp_sigma,
|
1337
|
+
unsharp_coeff=self.unsharp_coeff,
|
1338
|
+
unsharp_LoG=int((self.unsharp_method == "log")),
|
1339
|
+
)
|
1340
|
+
else:
|
1341
|
+
self._nophase_put_to_radios(self.radios, self.gridded_radios)
|
1342
|
+
|
1343
|
+
self.logger.info(" LOG ")
|
1344
|
+
self._nophase_put_to_radios(self.radios_weights, self.gridded_cumulated_weights)
|
1345
|
+
|
1346
|
+
# print( " processing steps ", self.processing_steps )
|
1347
|
+
# ['read_chunk', 'flatfield', 'double_flatfield', 'take_log', 'reconstruction', 'save']
|
1348
|
+
|
1349
|
+
if "take_log" in self.processing_steps:
|
1350
|
+
self._take_log()
|
1351
|
+
|
1352
|
+
self.logger.info(" BALANCE ")
|
1353
|
+
|
1354
|
+
self.balance_weights()
|
1355
|
+
|
1356
|
+
num_slices = self.radios.shape[1]
|
1357
|
+
|
1358
|
+
self.logger.info(" NORMALIZE")
|
1359
|
+
self._normalize_sinos()
|
1360
|
+
self._dump_sinogram()
|
1361
|
+
|
1362
|
+
if "reconstruction" in self.processing_steps:
|
1363
|
+
if not self.diag_zpro_run:
|
1364
|
+
# otherwise, when collecting diagnostic, we are not interested in the remaining steps
|
1365
|
+
# on the other hand there would be nothing to process because only diagnostics have been collected
|
1366
|
+
for i_slice in range(num_slices):
|
1367
|
+
self._post_primary_data_reduction(i_slice) # charge on self.radios_slim
|
1368
|
+
|
1369
|
+
self._filter()
|
1370
|
+
|
1371
|
+
self.apply_weights(i_slice)
|
1372
|
+
|
1373
|
+
self._build_sino()
|
1374
|
+
|
1375
|
+
self._reconstruct(chunk_info=chunk_info, i_slice=i_slice)
|
1376
|
+
|
1377
|
+
self._compute_histogram(i_slice=i_slice, num_slices=num_slices)
|
1378
|
+
|
1379
|
+
self._write_data()
|
1380
|
+
|
1381
|
+
def apply_weights(self, i_slice):
|
1382
|
+
"""radios_slim is on gpu"""
|
1383
|
+
n_provided_angles = self.radios_slim.shape[0]
|
1384
|
+
|
1385
|
+
for first_angle_index in range(0, n_provided_angles, self.num_weight_radios_per_app):
|
1386
|
+
end_angle_index = min(n_provided_angles, first_angle_index + self.num_weight_radios_per_app)
|
1387
|
+
self._d_radios_weights[: end_angle_index - first_angle_index].set(
|
1388
|
+
self.radios_weights[first_angle_index:end_angle_index, i_slice]
|
1389
|
+
)
|
1390
|
+
self.radios_slim[first_angle_index:end_angle_index] *= self._d_radios_weights[
|
1391
|
+
: end_angle_index - first_angle_index
|
1392
|
+
]
|
1393
|
+
|
1394
|
+
def correct_for_missing_angles(self):
|
1395
|
+
"""For non helical scan, the rotation is often incomplete ( < 360)
|
1396
|
+
here we complement the missing angles
|
1397
|
+
"""
|
1398
|
+
linea = self.gridded_cumulated_weights.sum(axis=(1, 2))
|
1399
|
+
i_zero_list = np.where(linea == 0)[0]
|
1400
|
+
for i_zero in i_zero_list:
|
1401
|
+
if i_zero > linea.shape[0] // 2:
|
1402
|
+
direction = -1
|
1403
|
+
else:
|
1404
|
+
direction = 1
|
1405
|
+
i = i_zero
|
1406
|
+
while ((i >= 0 and direction == -1) or ((i < linea.shape[0] - 1) and direction == 1)) and linea[i] == 0:
|
1407
|
+
i += direction
|
1408
|
+
if linea[i]:
|
1409
|
+
self.gridded_radios[i_zero] = self.gridded_radios[i]
|
1410
|
+
self.gridded_cumulated_weights[i_zero] = self.gridded_cumulated_weights[i]
|
1411
|
+
|
1412
|
+
@classmethod
|
1413
|
+
def estimate_required_memory(
|
1414
|
+
cls, process_config, reading_granularity=None, chunk_size=None, margin_v=0, span_info=None, diag_zpro_run=0
|
1415
|
+
):
|
1416
|
+
"""
|
1417
|
+
Estimate the memory (RAM) needed for a reconstruction.
|
1418
|
+
|
1419
|
+
Parameters
|
1420
|
+
-----------
|
1421
|
+
process_config: `ProcessConfig` object
|
1422
|
+
Data structure with the processing configuration
|
1423
|
+
chunk_size: int, optional
|
1424
|
+
Size of a "radios chunk", i.e "delta z". A radios chunk is a 3D array of shape (n_angles, chunk_size, n_x)
|
1425
|
+
If set to None, then chunk_size = n_z
|
1426
|
+
|
1427
|
+
Notes
|
1428
|
+
-----
|
1429
|
+
It seems that Cuda does not allow allocating and/or transferring more than 16384 MiB (17.18 GB).
|
1430
|
+
If warn_from_GB is not None, then the result is in the form (estimated_memory_GB, warning)
|
1431
|
+
where warning is a boolean indicating wheher memory allocation/transfer might be problematic.
|
1432
|
+
"""
|
1433
|
+
dataset = process_config.dataset_info
|
1434
|
+
nabu_config = process_config.nabu_config
|
1435
|
+
processing_steps = process_config.processing_steps
|
1436
|
+
Nx, Ny = dataset.radio_dims
|
1437
|
+
|
1438
|
+
total_memory_needed = 0
|
1439
|
+
|
1440
|
+
# Read data
|
1441
|
+
# ----------
|
1442
|
+
|
1443
|
+
# gridded part
|
1444
|
+
tmp_angles_deg = np.rad2deg(process_config.processing_options["reconstruction"]["angles"])
|
1445
|
+
tmp_my_angle_step = abs(np.diff(tmp_angles_deg).mean())
|
1446
|
+
|
1447
|
+
my_angle_step = abs(np.diff(span_info.projection_angles_deg).mean())
|
1448
|
+
n_gridded_angles = int(round(360.0 / my_angle_step))
|
1449
|
+
|
1450
|
+
binning_z = nabu_config["dataset"]["binning_z"]
|
1451
|
+
projections_subsampling = nabu_config["dataset"]["projections_subsampling"]
|
1452
|
+
|
1453
|
+
if not diag_zpro_run:
|
1454
|
+
# the gridded target
|
1455
|
+
total_memory_needed += Nx * (2 * margin_v + chunk_size) * n_gridded_angles * 4
|
1456
|
+
|
1457
|
+
# the gridded weights
|
1458
|
+
total_memory_needed += Nx * (2 * margin_v + chunk_size) * n_gridded_angles * 4
|
1459
|
+
|
1460
|
+
# the read grain
|
1461
|
+
total_memory_needed += (
|
1462
|
+
(reading_granularity + cls.extra_marge_granularity) * (2 * margin_v + chunk_size + 2) * Nx * 4
|
1463
|
+
)
|
1464
|
+
|
1465
|
+
total_memory_needed += (
|
1466
|
+
(reading_granularity + cls.extra_marge_granularity) * (2 * margin_v + chunk_size + 2) * Nx * 4
|
1467
|
+
)
|
1468
|
+
|
1469
|
+
# the preprocessed radios, their weigth and the buffer used for balancing ( total of three buffer of the same size plus mask plus temporary)
|
1470
|
+
total_memory_needed += 5 * (Nx * (chunk_size) * n_gridded_angles) * 4
|
1471
|
+
|
1472
|
+
if "flatfield" in processing_steps:
|
1473
|
+
# Flat-field is done in-place, but still need to load darks/flats
|
1474
|
+
n_darks = len(dataset.darks)
|
1475
|
+
n_flats = len(dataset.flats)
|
1476
|
+
darks_size = n_darks * Nx * (2 * margin_v + chunk_size) * 2 # uint16
|
1477
|
+
flats_size = n_flats * Nx * (2 * margin_v + chunk_size) * 4 # f32
|
1478
|
+
total_memory_needed += darks_size + flats_size
|
1479
|
+
|
1480
|
+
if "ccd_correction" in processing_steps:
|
1481
|
+
total_memory_needed += Nx * (2 * margin_v + chunk_size) * 4
|
1482
|
+
|
1483
|
+
# Phase retrieval
|
1484
|
+
# ---------------
|
1485
|
+
if "phase" in processing_steps:
|
1486
|
+
# Phase retrieval is done image-wise, so near in-place, but needs to
|
1487
|
+
# allocate some images, fft plans, and so on
|
1488
|
+
Nx_p = get_next_power(2 * Nx)
|
1489
|
+
Ny_p = get_next_power(2 * (2 * margin_v + chunk_size))
|
1490
|
+
img_size_real = 2 * 4 * Nx_p * Ny_p
|
1491
|
+
img_size_cplx = 2 * 8 * ((Nx_p * Ny_p) // 2 + 1)
|
1492
|
+
total_memory_needed += 2 * img_size_real + 3 * img_size_cplx
|
1493
|
+
|
1494
|
+
# Reconstruction
|
1495
|
+
# ---------------
|
1496
|
+
reconstructed_volume_size = 0
|
1497
|
+
if "reconstruction" in processing_steps and not diag_zpro_run:
|
1498
|
+
## radios_slim is used to process one slice at once, It will be on the gpu
|
1499
|
+
## and cannot be reduced further, therefore no need to estimate it.
|
1500
|
+
## Either it passes or it does not.
|
1501
|
+
#### if radios_and_sinos:
|
1502
|
+
#### togtal_memory_needed += data_volume_size # radios + sinos
|
1503
|
+
|
1504
|
+
rec_config = process_config.processing_options["reconstruction"]
|
1505
|
+
|
1506
|
+
Nx_rec = rec_config["end_x"] - rec_config["start_x"] + 1
|
1507
|
+
Ny_rec = rec_config["end_y"] - rec_config["start_y"] + 1
|
1508
|
+
|
1509
|
+
Nz_rec = chunk_size // binning_z
|
1510
|
+
|
1511
|
+
## the volume is used to reconstruct for each chunk
|
1512
|
+
reconstructed_volume_size = Nx_rec * Ny_rec * Nz_rec * 4 # float32
|
1513
|
+
total_memory_needed += reconstructed_volume_size
|
1514
|
+
|
1515
|
+
return total_memory_needed
|
1516
|
+
|
1517
|
+
|
1518
|
+
# target_central_slicer, source_central_slicer = overlap_logic( subr_start_z, subr_end_z, dtasrc_start_z, dtasrcs_end_z )
|
1519
|
+
def overlap_logic(subr_start_z, subr_end_z, dtasrc_start_z, dtasrc_end_z):
|
1520
|
+
"""determines the useful lines which can be transferred from the dtasrc_start_z:dtasrc_end_z
|
1521
|
+
range targeting the range subr_start_z: subr_end_z ..................
|
1522
|
+
|
1523
|
+
"""
|
1524
|
+
|
1525
|
+
t_h = subr_end_z - subr_start_z
|
1526
|
+
s_h = dtasrc_end_z - dtasrc_start_z
|
1527
|
+
|
1528
|
+
my_start = max(0, dtasrc_start_z - subr_start_z)
|
1529
|
+
my_end = min(t_h, dtasrc_end_z - subr_start_z)
|
1530
|
+
|
1531
|
+
if my_start >= my_end:
|
1532
|
+
return None, None
|
1533
|
+
|
1534
|
+
target_central_slicer = slice(my_start, my_end)
|
1535
|
+
|
1536
|
+
my_start = max(0, subr_start_z - dtasrc_start_z)
|
1537
|
+
my_end = min(s_h, subr_end_z - dtasrc_start_z)
|
1538
|
+
|
1539
|
+
assert my_start < my_end, "Overlap_logic logic error"
|
1540
|
+
|
1541
|
+
dtasrc_central_slicer = slice(my_start, my_end)
|
1542
|
+
|
1543
|
+
return target_central_slicer, dtasrc_central_slicer
|
1544
|
+
|
1545
|
+
|
1546
|
+
def padding_logic(subr_start_z, subr_end_z, dtasrc_start_z, dtasrc_end_z):
|
1547
|
+
""".......... and the missing ranges which possibly could be obtained by extension padding"""
|
1548
|
+
t_h = subr_end_z - subr_start_z
|
1549
|
+
s_h = dtasrc_end_z - dtasrc_start_z
|
1550
|
+
|
1551
|
+
if dtasrc_start_z <= subr_start_z:
|
1552
|
+
target_lower_padding = None
|
1553
|
+
else:
|
1554
|
+
target_lower_padding = slice(0, dtasrc_start_z - subr_start_z)
|
1555
|
+
|
1556
|
+
if dtasrc_end_z >= subr_end_z:
|
1557
|
+
target_upper_padding = None
|
1558
|
+
else:
|
1559
|
+
target_upper_padding = slice(dtasrc_end_z - subr_end_z, None)
|
1560
|
+
|
1561
|
+
return target_lower_padding, target_upper_padding
|
1562
|
+
|
1563
|
+
|
1564
|
+
def _fill_in_chunk_by_shift_crop_data(
|
1565
|
+
data_target,
|
1566
|
+
data_read,
|
1567
|
+
fract_shit,
|
1568
|
+
my_subr_start_z,
|
1569
|
+
my_subr_end_z,
|
1570
|
+
dtasrc_start_z,
|
1571
|
+
dtasrc_end_z,
|
1572
|
+
x_shift=0.0,
|
1573
|
+
extension_padding=True,
|
1574
|
+
):
|
1575
|
+
"""given a freshly read cube of data, it dispatches every slice to its proper vertical position and proper radio by shifting, cropping, and extending if necessary"""
|
1576
|
+
data_read_precisely_shifted = nd.interpolation.shift(data_read, (-fract_shit, x_shift), order=1, mode="nearest")[
|
1577
|
+
:-1
|
1578
|
+
]
|
1579
|
+
|
1580
|
+
target_central_slicer, dtasrc_central_slicer = overlap_logic(
|
1581
|
+
my_subr_start_z, my_subr_end_z - 1, dtasrc_start_z, dtasrc_end_z - 1
|
1582
|
+
)
|
1583
|
+
|
1584
|
+
if None not in [target_central_slicer, dtasrc_central_slicer]:
|
1585
|
+
data_target[target_central_slicer] = data_read_precisely_shifted[dtasrc_central_slicer]
|
1586
|
+
|
1587
|
+
target_lower_slicer, target_upper_slicer = padding_logic(
|
1588
|
+
my_subr_start_z, my_subr_end_z - 1, dtasrc_start_z, dtasrc_end_z - 1
|
1589
|
+
)
|
1590
|
+
|
1591
|
+
if extension_padding:
|
1592
|
+
if target_lower_slicer is not None:
|
1593
|
+
data_target[target_lower_slicer] = data_read_precisely_shifted[0]
|
1594
|
+
if target_upper_slicer is not None:
|
1595
|
+
data_target[target_upper_slicer] = data_read_precisely_shifted[-1]
|
1596
|
+
else:
|
1597
|
+
if target_lower_slicer is not None:
|
1598
|
+
data_target[target_lower_slicer] = 1.0e-6
|
1599
|
+
if target_upper_slicer is not None:
|
1600
|
+
data_target[target_upper_slicer] = 1.0e-6
|
1601
|
+
|
1602
|
+
|
1603
|
+
def shift(arr, shift, fill_value=0.0):
|
1604
|
+
"""trivial horizontal shift.
|
1605
|
+
Contrarily to scipy.ndimage.interpolation.shift, this shift does not cut the tails abruptly, but by interpolation
|
1606
|
+
"""
|
1607
|
+
result = np.zeros_like(arr)
|
1608
|
+
|
1609
|
+
num1 = int(math.floor(shift))
|
1610
|
+
num2 = num1 + 1
|
1611
|
+
partition = shift - num1
|
1612
|
+
|
1613
|
+
for num, factor in zip([num1, num2], [(1 - partition), partition]):
|
1614
|
+
if num > 0:
|
1615
|
+
result[:, :num] += fill_value * factor
|
1616
|
+
result[:, num:] += arr[:, :-num] * factor
|
1617
|
+
elif num < 0:
|
1618
|
+
result[:, num:] += fill_value * factor
|
1619
|
+
result[:, :num] += arr[:, -num:] * factor
|
1620
|
+
else:
|
1621
|
+
result[:] += arr * factor
|
1622
|
+
|
1623
|
+
return result
|
1624
|
+
|
1625
|
+
|
1626
|
+
def rebalance(radios_weights, angles, ax_pos):
|
1627
|
+
"""rebalance the weights, within groups of equivalent (up to multiple of 180), data pixels"""
|
1628
|
+
balanced = np.zeros_like(radios_weights)
|
1629
|
+
n_span = int(math.ceil(angles[-1] - angles[0]) / np.pi)
|
1630
|
+
center = (radios_weights.shape[-1] - 1) / 2
|
1631
|
+
nloop = balanced.shape[0]
|
1632
|
+
|
1633
|
+
for i in range(nloop):
|
1634
|
+
w_res = balanced[i]
|
1635
|
+
angle = angles[i]
|
1636
|
+
|
1637
|
+
for i_half_turn in range(-n_span - 1, n_span + 2):
|
1638
|
+
if i_half_turn == 0:
|
1639
|
+
w_res[:] += radios_weights[i]
|
1640
|
+
continue
|
1641
|
+
|
1642
|
+
shifted_angle = angle + i_half_turn * np.pi
|
1643
|
+
|
1644
|
+
insertion_index = np.searchsorted(angles, shifted_angle)
|
1645
|
+
|
1646
|
+
if insertion_index in [0, angles.shape[0]]:
|
1647
|
+
if insertion_index == 0:
|
1648
|
+
continue
|
1649
|
+
else:
|
1650
|
+
if shifted_angle > 2 * np.pi:
|
1651
|
+
continue
|
1652
|
+
myimage = radios_weights[-1]
|
1653
|
+
else:
|
1654
|
+
partition = (shifted_angle - angles[insertion_index - 1]) / (
|
1655
|
+
angles[insertion_index] - angles[insertion_index - 1]
|
1656
|
+
)
|
1657
|
+
myimage = (1.0 - partition) * radios_weights[insertion_index - 1] + partition * radios_weights[
|
1658
|
+
insertion_index
|
1659
|
+
]
|
1660
|
+
|
1661
|
+
if i_half_turn % 2 == 0:
|
1662
|
+
w_res[:] += myimage
|
1663
|
+
else:
|
1664
|
+
myimage = np.fliplr(myimage)
|
1665
|
+
w_res[:] += shift(myimage, (2 * ax_pos - 2 * center))
|
1666
|
+
|
1667
|
+
mask = np.equal(0, radios_weights)
|
1668
|
+
balanced[:] = radios_weights / balanced
|
1669
|
+
balanced[mask] = 0
|
1670
|
+
return balanced
|