nabu 2025.1.0rc6__tar.gz → 2025.1.1__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {nabu-2025.1.0rc6/nabu.egg-info → nabu-2025.1.1}/PKG-INFO +1 -1
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/__init__.py +1 -1
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/estimation/motion.py +9 -2
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/io/cast_volume.py +33 -11
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/misc/utils.py +2 -2
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/pipeline/estimators.py +1 -1
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/pipeline/fullfield/chunked.py +2 -1
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/pipeline/fullfield/nabu_config.py +1 -1
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/pipeline/fullfield/reconstruction.py +1 -0
- nabu-2025.1.1/nabu/reconstruction/iterative.py +30 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1/nabu.egg-info}/PKG-INFO +1 -1
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu.egg-info/SOURCES.txt +1 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/LICENSE +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/README.md +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/doc/conf.py +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/doc/create_conf_doc.py +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/doc/get_mathjax.py +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/app/__init__.py +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/app/bootstrap.py +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/app/bootstrap_stitching.py +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/app/cast_volume.py +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/app/cli_configs.py +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/app/compare_volumes.py +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/app/composite_cor.py +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/app/create_distortion_map_from_poly.py +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/app/diag_to_pix.py +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/app/diag_to_rot.py +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/app/double_flatfield.py +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/app/estimate_motion.py +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/app/generate_header.py +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/app/histogram.py +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/app/multicor.py +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/app/nx_z_splitter.py +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/app/parse_reconstruction_log.py +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/app/pcaflats.py +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/app/prepare_weights_double.py +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/app/reconstruct.py +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/app/reconstruct_helical.py +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/app/reduce_dark_flat.py +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/app/rotate.py +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/app/shrink_dataset.py +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/app/stitching.py +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/app/tests/__init__.py +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/app/tests/test_reduce_dark_flat.py +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/app/utils.py +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/app/validator.py +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/cuda/__init__.py +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/cuda/convolution.py +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/cuda/fft.py +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/cuda/kernel.py +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/cuda/medfilt.py +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/cuda/padding.py +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/cuda/processing.py +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/cuda/src/ElementOp.cu +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/cuda/src/backproj.cu +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/cuda/src/backproj_polar.cu +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/cuda/src/boundary.h +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/cuda/src/cone.cu +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/cuda/src/convolution.cu +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/cuda/src/dfi_fftshift.cu +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/cuda/src/flatfield.cu +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/cuda/src/fourier_wavelets.cu +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/cuda/src/halftomo.cu +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/cuda/src/helical_padding.cu +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/cuda/src/hierarchical_backproj.cu +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/cuda/src/histogram.cu +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/cuda/src/interpolation.cu +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/cuda/src/medfilt.cu +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/cuda/src/normalization.cu +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/cuda/src/padding.cu +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/cuda/src/proj.cu +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/cuda/src/rotation.cu +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/cuda/src/transpose.cu +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/cuda/tests/__init__.py +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/cuda/utils.py +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/estimation/__init__.py +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/estimation/alignment.py +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/estimation/cor.py +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/estimation/cor_sino.py +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/estimation/distortion.py +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/estimation/focus.py +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/estimation/tests/__init__.py +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/estimation/tests/test_alignment.py +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/estimation/tests/test_cor.py +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/estimation/tests/test_focus.py +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/estimation/tests/test_motion_estimation.py +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/estimation/tests/test_tilt.py +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/estimation/tests/test_translation.py +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/estimation/tilt.py +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/estimation/translation.py +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/estimation/utils.py +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/io/__init__.py +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/io/detector_distortion.py +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/io/reader.py +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/io/reader_helical.py +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/io/tests/__init__.py +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/io/tests/test_cast_volume.py +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/io/tests/test_readers.py +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/io/tests/test_remove_volume.py +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/io/tests/test_writers.py +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/io/utils.py +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/io/writer.py +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/misc/__init__.py +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/misc/binning.py +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/misc/fftshift.py +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/misc/filters.py +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/misc/fourier_filters.py +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/misc/histogram.py +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/misc/histogram_cuda.py +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/misc/kernel_base.py +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/misc/padding.py +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/misc/padding_base.py +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/misc/processing_base.py +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/misc/rotation.py +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/misc/rotation_cuda.py +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/misc/tests/__init__.py +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/misc/tests/test_binning.py +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/misc/tests/test_interpolation.py +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/misc/transpose.py +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/misc/unsharp.py +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/misc/unsharp_cuda.py +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/misc/unsharp_opencl.py +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/opencl/__init__.py +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/opencl/fft.py +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/opencl/kernel.py +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/opencl/memcpy.py +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/opencl/padding.py +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/opencl/processing.py +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/opencl/src/ElementOp.cl +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/opencl/src/backproj.cl +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/opencl/src/fftshift.cl +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/opencl/src/halftomo.cl +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/opencl/src/padding.cl +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/opencl/src/roll.cl +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/opencl/src/transpose.cl +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/opencl/tests/__init__.py +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/opencl/utils.py +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/pipeline/__init__.py +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/pipeline/config.py +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/pipeline/config_validators.py +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/pipeline/datadump.py +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/pipeline/dataset_validator.py +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/pipeline/detector_distortion_provider.py +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/pipeline/fullfield/__init__.py +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/pipeline/fullfield/chunked_cuda.py +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/pipeline/fullfield/computations.py +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/pipeline/fullfield/dataset_validator.py +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/pipeline/fullfield/get_double_flatfield.py +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/pipeline/fullfield/processconfig.py +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/pipeline/helical/__init__.py +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/pipeline/helical/dataset_validator.py +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/pipeline/helical/fbp.py +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/pipeline/helical/filtering.py +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/pipeline/helical/gridded_accumulator.py +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/pipeline/helical/helical_chunked_regridded.py +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/pipeline/helical/helical_chunked_regridded_cuda.py +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/pipeline/helical/helical_reconstruction.py +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/pipeline/helical/helical_utils.py +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/pipeline/helical/nabu_config.py +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/pipeline/helical/processconfig.py +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/pipeline/helical/span_strategy.py +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/pipeline/helical/tests/__init__.py +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/pipeline/helical/weight_balancer.py +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/pipeline/params.py +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/pipeline/processconfig.py +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/pipeline/reader.py +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/pipeline/tests/__init__.py +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/pipeline/tests/test_estimators.py +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/pipeline/utils.py +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/pipeline/writer.py +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/pipeline/xrdct/__init__.py +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/preproc/__init__.py +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/preproc/alignment.py +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/preproc/ccd.py +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/preproc/ccd_cuda.py +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/preproc/ctf.py +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/preproc/ctf_cuda.py +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/preproc/distortion.py +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/preproc/double_flatfield.py +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/preproc/double_flatfield_cuda.py +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/preproc/double_flatfield_variable_region.py +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/preproc/flatfield.py +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/preproc/flatfield_cuda.py +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/preproc/flatfield_variable_region.py +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/preproc/phase.py +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/preproc/phase_cuda.py +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/preproc/shift.py +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/preproc/shift_cuda.py +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/preproc/tests/__init__.py +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/preproc/tests/test_ccd_corr.py +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/preproc/tests/test_ctf.py +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/preproc/tests/test_double_flatfield.py +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/preproc/tests/test_flatfield.py +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/preproc/tests/test_paganin.py +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/preproc/tests/test_pcaflats.py +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/preproc/tests/test_vshift.py +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/processing/__init__.py +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/processing/azim.py +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/processing/convolution_cuda.py +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/processing/fft_base.py +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/processing/fft_cuda.py +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/processing/fft_opencl.py +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/processing/fftshift.py +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/processing/histogram.py +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/processing/histogram_cuda.py +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/processing/kernel_base.py +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/processing/medfilt_cuda.py +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/processing/muladd.py +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/processing/muladd_cuda.py +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/processing/padding_base.py +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/processing/padding_cuda.py +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/processing/padding_opencl.py +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/processing/processing_base.py +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/processing/roll_opencl.py +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/processing/rotation.py +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/processing/rotation_cuda.py +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/processing/tests/__init__.py +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/processing/tests/test_fft.py +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/processing/tests/test_fftshift.py +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/processing/tests/test_histogram.py +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/processing/tests/test_medfilt.py +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/processing/tests/test_muladd.py +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/processing/tests/test_padding.py +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/processing/tests/test_roll.py +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/processing/tests/test_rotation.py +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/processing/tests/test_transpose.py +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/processing/tests/test_unsharp.py +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/processing/transpose.py +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/processing/unsharp.py +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/processing/unsharp_cuda.py +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/processing/unsharp_opencl.py +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/reconstruction/__init__.py +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/reconstruction/cone.py +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/reconstruction/fbp.py +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/reconstruction/fbp_base.py +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/reconstruction/fbp_opencl.py +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/reconstruction/filtering.py +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/reconstruction/filtering_cuda.py +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/reconstruction/filtering_opencl.py +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/reconstruction/hbp.py +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/reconstruction/mlem.py +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/reconstruction/projection.py +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/reconstruction/reconstructor.py +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/reconstruction/reconstructor_cuda.py +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/reconstruction/rings.py +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/reconstruction/rings_cuda.py +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/reconstruction/sinogram.py +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/reconstruction/sinogram_cuda.py +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/reconstruction/sinogram_opencl.py +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/reconstruction/tests/__init__.py +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/reconstruction/tests/test_cone.py +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/reconstruction/tests/test_deringer.py +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/reconstruction/tests/test_fbp.py +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/reconstruction/tests/test_filtering.py +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/reconstruction/tests/test_halftomo.py +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/reconstruction/tests/test_mlem.py +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/reconstruction/tests/test_projector.py +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/reconstruction/tests/test_reconstructor.py +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/reconstruction/tests/test_sino_normalization.py +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/resources/__init__.py +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/resources/cli/__init__.py +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/resources/cor.py +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/resources/dataset_analyzer.py +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/resources/gpu.py +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/resources/logger.py +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/resources/nxflatfield.py +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/resources/templates/__init__.py +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/resources/templates/bm05_pag.conf +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/resources/templates/id16_ctf.conf +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/resources/templates/id16_holo.conf +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/resources/templates/id16a_fluo.conf +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/resources/templates/id19_pag.conf +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/resources/tests/__init__.py +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/resources/tests/test_dataset_analyzer.py +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/resources/tests/test_extract.py +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/resources/tests/test_nxflatfield.py +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/resources/tests/test_units.py +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/resources/utils.py +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/stitching/__init__.py +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/stitching/alignment.py +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/stitching/config.py +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/stitching/definitions.py +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/stitching/frame_composition.py +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/stitching/overlap.py +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/stitching/sample_normalization.py +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/stitching/single_axis_stitching.py +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/stitching/slurm_utils.py +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/stitching/stitcher/__init__.py +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/stitching/stitcher/base.py +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/stitching/stitcher/dumper/__init__.py +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/stitching/stitcher/dumper/base.py +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/stitching/stitcher/dumper/postprocessing.py +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/stitching/stitcher/dumper/preprocessing.py +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/stitching/stitcher/post_processing.py +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/stitching/stitcher/pre_processing.py +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/stitching/stitcher/single_axis.py +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/stitching/stitcher/stitcher.py +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/stitching/stitcher/y_stitcher.py +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/stitching/stitcher/z_stitcher.py +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/stitching/stitcher_2D.py +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/stitching/tests/test_alignment.py +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/stitching/tests/test_config.py +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/stitching/tests/test_frame_composition.py +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/stitching/tests/test_overlap.py +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/stitching/tests/test_sample_normalization.py +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/stitching/tests/test_slurm_utils.py +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/stitching/tests/test_utils.py +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/stitching/tests/test_y_preprocessing_stitching.py +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/stitching/tests/test_z_postprocessing_stitching.py +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/stitching/tests/test_z_preprocessing_stitching.py +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/stitching/utils/__init__.py +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/stitching/utils/post_processing.py +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/stitching/utils/tests/__init__.py +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/stitching/utils/tests/test_post-processing.py +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/stitching/utils/utils.py +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/stitching/y_stitching.py +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/stitching/z_stitching.py +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/tests.py +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/testutils.py +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/thirdparty/__init__.py +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/thirdparty/algotom_convert_sino.py +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/thirdparty/pore3d_deringer_munch.py +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/thirdparty/tomocupy_remove_stripe.py +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/thirdparty/tomopy_phase.py +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/thirdparty/tomwer_load_flats_darks.py +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu/utils.py +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu.egg-info/dependency_links.txt +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu.egg-info/entry_points.txt +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu.egg-info/requires.txt +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/nabu.egg-info/top_level.txt +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/pyproject.toml +0 -0
- {nabu-2025.1.0rc6 → nabu-2025.1.1}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: nabu
|
3
|
-
Version: 2025.1.
|
3
|
+
Version: 2025.1.1
|
4
4
|
Summary: Nabu - Tomography software
|
5
5
|
Author-email: Pierre Paleo <pierre.paleo@esrf.fr>, Henri Payno <henri.payno@esrf.fr>, Alessandro Mirone <mirone@esrf.fr>, Jérôme Lesaint <jerome.lesaint@esrf.fr>
|
6
6
|
Maintainer-email: Pierre Paleo <pierre.paleo@esrf.fr>
|
@@ -1,5 +1,6 @@
|
|
1
1
|
from enum import Enum
|
2
2
|
from multiprocessing.pool import ThreadPool
|
3
|
+
from warnings import warn
|
3
4
|
import numpy as np
|
4
5
|
from ..utils import get_num_threads
|
5
6
|
|
@@ -218,12 +219,18 @@ class MotionEstimation:
|
|
218
219
|
return _normalize_with_reference(a_all[-n_outward_projs:])
|
219
220
|
|
220
221
|
def _configure_shifts_estimator(self, shifts_estimator, shifts_estimator_kwargs):
|
221
|
-
self.shifts_estimator = shifts_estimator
|
222
222
|
if shifts_estimator not in self._shifts_estimators_default_kwargs:
|
223
223
|
raise NotImplementedError(
|
224
224
|
f"Unknown estimator shifts '{shifts_estimator}', available are {list(self._shifts_estimators_default_kwargs.keys())}"
|
225
225
|
)
|
226
|
-
self.
|
226
|
+
self.shifts_estimator = shifts_estimator
|
227
|
+
if self.shifts_estimator == "phase_cross_correlation" and phase_cross_correlation is None:
|
228
|
+
warn(
|
229
|
+
"shift estimator was set to 'phase_cross_correlation' but it requires scikit-image which is not available. Falling back to 'DetectorTranslationAlongBeam'",
|
230
|
+
Warning,
|
231
|
+
)
|
232
|
+
self.shifts_estimator = "DetectorTranslationAlongBeam"
|
233
|
+
self._shifts_estimator_kwargs = self._shifts_estimators_default_kwargs[self.shifts_estimator].copy()
|
227
234
|
self._shifts_estimator_kwargs.update(shifts_estimator_kwargs or {})
|
228
235
|
|
229
236
|
def _find_shifts(self, img1, img2):
|
@@ -142,7 +142,7 @@ def cast_volume(
|
|
142
142
|
remove_input_volume: bool = False,
|
143
143
|
) -> VolumeBase:
|
144
144
|
"""
|
145
|
-
cast
|
145
|
+
cast given volume to output_volume of 'output_data_type' type
|
146
146
|
|
147
147
|
:param VolumeBase input_volume:
|
148
148
|
:param VolumeBase output_volume:
|
@@ -231,6 +231,7 @@ def cast_volume(
|
|
231
231
|
data_max=data_max,
|
232
232
|
rescale_min_percentile=rescale_min_percentile,
|
233
233
|
rescale_max_percentile=rescale_max_percentile,
|
234
|
+
default_value_for_nan=new_min,
|
234
235
|
).astype(output_data_type)
|
235
236
|
else:
|
236
237
|
output_slice = input_slice.astype(output_data_type)
|
@@ -268,25 +269,46 @@ def clamp_and_rescale_data(
|
|
268
269
|
data_max=None,
|
269
270
|
rescale_min_percentile=RESCALE_MIN_PERCENTILE,
|
270
271
|
rescale_max_percentile=RESCALE_MAX_PERCENTILE,
|
272
|
+
default_value_for_nan=None,
|
273
|
+
do_float64=True,
|
271
274
|
):
|
272
275
|
"""
|
273
276
|
rescale data to 'new_min', 'new_max'
|
274
277
|
|
275
|
-
|
276
|
-
|
277
|
-
:
|
278
|
-
|
279
|
-
:
|
280
|
-
|
281
|
-
:
|
282
|
-
|
278
|
+
Parameters
|
279
|
+
----------
|
280
|
+
data: numpy.ndarray
|
281
|
+
Data to be rescaled (image or volume)
|
282
|
+
new_min: scalar
|
283
|
+
Rescaled data new min (clamp min value)
|
284
|
+
new_max: scalar
|
285
|
+
Rescaled data new min (clamp max value)
|
286
|
+
data_min: scalar, optional
|
287
|
+
Data minimum value. If not provided, will re-compute the min() over data.
|
288
|
+
data_max: scalar, optional
|
289
|
+
Data maximum value. If not provided, will re-compute the min() over data.
|
290
|
+
rescale_min_percentile: scalar, optional
|
291
|
+
if `data_min` is None will set data_min to 'rescale_min_percentile'
|
292
|
+
rescale_max_percentile
|
293
|
+
if `data_max` is None will set data_min to 'rescale_max_percentile'
|
294
|
+
default_value_for_nan: scalar, optional
|
295
|
+
Value that will replace NaNs, if any. Default is None (keep NaNs, will likely raise an error)
|
296
|
+
do_float64
|
297
|
+
Whether to do internal computations in float64. Recommended when casting from float32 to int32 for example.
|
283
298
|
"""
|
299
|
+
if do_float64 and data.dtype.itemsize < 8:
|
300
|
+
data = numpy.float64(data)
|
284
301
|
if data_min is None:
|
285
|
-
data_min = numpy.
|
302
|
+
data_min = numpy.nanpercentile(data, rescale_min_percentile)
|
286
303
|
if data_max is None:
|
287
|
-
data_max = numpy.
|
304
|
+
data_max = numpy.nanpercentile(data, rescale_max_percentile)
|
288
305
|
# rescale data
|
289
306
|
rescaled_data = rescale_data(data, new_min=new_min, new_max=new_max, data_min=data_min, data_max=data_max)
|
307
|
+
# Handle NaNs
|
308
|
+
if default_value_for_nan is not None:
|
309
|
+
isnan_mask = numpy.isnan(rescaled_data)
|
310
|
+
if numpy.any(isnan_mask):
|
311
|
+
rescaled_data[isnan_mask] = default_value_for_nan
|
290
312
|
# clamp data
|
291
313
|
rescaled_data[rescaled_data < new_min] = new_min
|
292
314
|
rescaled_data[rescaled_data > new_max] = new_max
|
@@ -3,9 +3,9 @@ import numpy as np
|
|
3
3
|
|
4
4
|
def rescale_data(data, new_min, new_max, data_min=None, data_max=None):
|
5
5
|
if data_min is None:
|
6
|
-
data_min = np.
|
6
|
+
data_min = np.nanmin(data)
|
7
7
|
if data_max is None:
|
8
|
-
data_max = np.
|
8
|
+
data_max = np.nanmax(data)
|
9
9
|
return (new_max - new_min) / (data_max - data_min) * (data - data_min) + new_min
|
10
10
|
|
11
11
|
|
@@ -690,7 +690,7 @@ class CompositeCORFinder(CORFinderBase):
|
|
690
690
|
tmp_sy, ovsd_sx = radio1.shape
|
691
691
|
assert orig_sy == tmp_sy and orig_ovsd_sx == ovsd_sx, "this should not happen"
|
692
692
|
|
693
|
-
cor_side = self.cor_options["side"]
|
693
|
+
cor_side = self._lookup_side if self._lookup_side is not None else self.cor_options["side"]
|
694
694
|
if cor_side == "center":
|
695
695
|
overlap_min = max(round(ovsd_sx - ovsd_sx / 3), 4)
|
696
696
|
overlap_max = min(round(ovsd_sx + ovsd_sx / 3), 2 * ovsd_sx - 4)
|
@@ -879,9 +879,10 @@ class ChunkedPipeline:
|
|
879
879
|
data_vwu[i] = self.radios[:, i, :]
|
880
880
|
# ---
|
881
881
|
|
882
|
-
|
882
|
+
rec = self.reconstruction.reconstruct( # pylint: disable=E1101
|
883
883
|
data_vwu,
|
884
884
|
)
|
885
|
+
return rec.astype("f") # corrct uses float64 data
|
885
886
|
|
886
887
|
@pipeline_step("histogram", "Computing histogram")
|
887
888
|
def _compute_histogram(self, data=None):
|
@@ -103,7 +103,7 @@ nabu_config = {
|
|
103
103
|
},
|
104
104
|
"detector_distortion_correction": {
|
105
105
|
"default": "",
|
106
|
-
"help": "Apply coordinate transformation on the raw data, at the reading stage. Default (empty) is None
|
106
|
+
"help": "Apply coordinate transformation on the raw data, at the reading stage. Default (empty) is None.\n Available are: None, identity(for testing the pipeline), map_xz.\n This latter method requires two URLs being passed by detector_distortion_correction_options: map_x and map_z pointing to two 2D arrays containing the position where each pixel can be interpolated at in the raw data",
|
107
107
|
"validator": detector_distortion_correction_validator,
|
108
108
|
"type": "advanced",
|
109
109
|
},
|
@@ -367,6 +367,7 @@ class FullFieldReconstructor:
|
|
367
367
|
# overlap = ceil(delta_z * d2 / (d1 + d2)) # sqrt(2) missing ?
|
368
368
|
|
369
369
|
max_overlap = ceil(n_z * d2 / (d1 + d2)) # sqrt(2) missing ?
|
370
|
+
max_overlap = max(max_overlap, 10) # use at least 10 pixels
|
370
371
|
|
371
372
|
return (max_overlap, 0)
|
372
373
|
|
@@ -0,0 +1,30 @@
|
|
1
|
+
import numpy as np
|
2
|
+
|
3
|
+
|
4
|
+
class IterativeBase:
|
5
|
+
|
6
|
+
backend = None # placeholder
|
7
|
+
implementation = None # placeholder
|
8
|
+
|
9
|
+
default_extra_options = {
|
10
|
+
"axis_correction": None,
|
11
|
+
"centered_axis": False,
|
12
|
+
"clip_outer_circle": False,
|
13
|
+
"scale_factor": None,
|
14
|
+
"outer_circle_value": 0.0,
|
15
|
+
}
|
16
|
+
|
17
|
+
backend_processing_class = ProcessingBase
|
18
|
+
|
19
|
+
def __init__(
|
20
|
+
self,
|
21
|
+
sino_shape,
|
22
|
+
angles=None,
|
23
|
+
rot_center=None,
|
24
|
+
halftomo=False,
|
25
|
+
filter_name=None,
|
26
|
+
slice_roi=None,
|
27
|
+
scale_factor=None,
|
28
|
+
extra_options=None,
|
29
|
+
backend_options=None,
|
30
|
+
): ...
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: nabu
|
3
|
-
Version: 2025.1.
|
3
|
+
Version: 2025.1.1
|
4
4
|
Summary: Nabu - Tomography software
|
5
5
|
Author-email: Pierre Paleo <pierre.paleo@esrf.fr>, Henri Payno <henri.payno@esrf.fr>, Alessandro Mirone <mirone@esrf.fr>, Jérôme Lesaint <jerome.lesaint@esrf.fr>
|
6
6
|
Maintainer-email: Pierre Paleo <pierre.paleo@esrf.fr>
|
@@ -244,6 +244,7 @@ nabu/reconstruction/filtering.py
|
|
244
244
|
nabu/reconstruction/filtering_cuda.py
|
245
245
|
nabu/reconstruction/filtering_opencl.py
|
246
246
|
nabu/reconstruction/hbp.py
|
247
|
+
nabu/reconstruction/iterative.py
|
247
248
|
nabu/reconstruction/mlem.py
|
248
249
|
nabu/reconstruction/projection.py
|
249
250
|
nabu/reconstruction/reconstructor.py
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|