nabu 2024.1.0rc3__tar.gz → 2024.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-2024.1.0rc3/nabu.egg-info → nabu-2024.1.1}/PKG-INFO +1 -1
- {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/__init__.py +1 -1
- {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/estimation/cor.py +2 -2
- {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/io/cast_volume.py +10 -2
- {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/pipeline/estimators.py +13 -7
- {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/resources/dataset_analyzer.py +15 -6
- {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/stitching/config.py +2 -2
- {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/stitching/z_stitching.py +3 -1
- {nabu-2024.1.0rc3 → nabu-2024.1.1/nabu.egg-info}/PKG-INFO +1 -1
- {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu.egg-info/SOURCES.txt +1 -33
- nabu-2024.1.0rc3/doc/doc_config.py +0 -32
- nabu-2024.1.0rc3/sandbox/align_test.py +0 -61
- nabu-2024.1.0rc3/sandbox/app.py +0 -123
- nabu-2024.1.0rc3/sandbox/binning_cython.py +0 -37
- nabu-2024.1.0rc3/sandbox/circ_sm.py +0 -195
- nabu-2024.1.0rc3/sandbox/composite_image.py +0 -90
- nabu-2024.1.0rc3/sandbox/convert_id15.py +0 -148
- nabu-2024.1.0rc3/sandbox/do_test_ctf.py +0 -40
- nabu-2024.1.0rc3/sandbox/esrf_envs.py +0 -36
- nabu-2024.1.0rc3/sandbox/fbp_polar.py +0 -39
- nabu-2024.1.0rc3/sandbox/fbp_tilt.py +0 -340
- nabu-2024.1.0rc3/sandbox/interleaved.py +0 -129
- nabu-2024.1.0rc3/sandbox/interp_sinos_halftomo.py +0 -31
- nabu-2024.1.0rc3/sandbox/linear_interp.py +0 -14
- nabu-2024.1.0rc3/sandbox/merge_recs.py +0 -56
- nabu-2024.1.0rc3/sandbox/moduleutils.py +0 -50
- nabu-2024.1.0rc3/sandbox/nbreconstruct.py +0 -246
- nabu-2024.1.0rc3/sandbox/pag_margin.py +0 -38
- nabu-2024.1.0rc3/sandbox/parse.py +0 -132
- nabu-2024.1.0rc3/sandbox/plot.py +0 -49
- nabu-2024.1.0rc3/sandbox/proj3D.py +0 -75
- nabu-2024.1.0rc3/sandbox/rec_bm05.py +0 -71
- nabu-2024.1.0rc3/sandbox/rec_thread.py +0 -133
- nabu-2024.1.0rc3/sandbox/shift_bilinear2.py +0 -42
- nabu-2024.1.0rc3/sandbox/sinotilt.py +0 -181
- nabu-2024.1.0rc3/sandbox/sysutils.py +0 -63
- nabu-2024.1.0rc3/sandbox/test_mp_queue.py +0 -73
- nabu-2024.1.0rc3/sandbox/tilt.py +0 -251
- nabu-2024.1.0rc3/sandbox/utils.py +0 -54
- nabu-2024.1.0rc3/sandbox/vo.py +0 -204
- nabu-2024.1.0rc3/sandbox/workers.py +0 -123
- nabu-2024.1.0rc3/sandbox/xrdrec_pyFAI_data.py +0 -212
- {nabu-2024.1.0rc3 → nabu-2024.1.1}/LICENSE +0 -0
- {nabu-2024.1.0rc3 → nabu-2024.1.1}/README.md +0 -0
- {nabu-2024.1.0rc3 → nabu-2024.1.1}/doc/conf.py +0 -0
- {nabu-2024.1.0rc3 → nabu-2024.1.1}/doc/create_conf_doc.py +0 -0
- {nabu-2024.1.0rc3 → nabu-2024.1.1}/doc/get_mathjax.py +0 -0
- {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/app/__init__.py +0 -0
- {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/app/bootstrap.py +0 -0
- {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/app/bootstrap_stitching.py +0 -0
- {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/app/cast_volume.py +0 -0
- {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/app/cli_configs.py +0 -0
- {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/app/compare_volumes.py +0 -0
- {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/app/composite_cor.py +0 -0
- {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/app/correct_rot.py +0 -0
- {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/app/create_distortion_map_from_poly.py +0 -0
- {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/app/diag_to_pix.py +0 -0
- {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/app/diag_to_rot.py +0 -0
- {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/app/double_flatfield.py +0 -0
- {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/app/generate_header.py +0 -0
- {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/app/histogram.py +0 -0
- {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/app/multicor.py +0 -0
- {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/app/nx_z_splitter.py +0 -0
- {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/app/parse_reconstruction_log.py +0 -0
- {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/app/prepare_weights_double.py +0 -0
- {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/app/reconstruct.py +0 -0
- {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/app/reconstruct_helical.py +0 -0
- {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/app/reduce_dark_flat.py +0 -0
- {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/app/rotate.py +0 -0
- {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/app/shrink_dataset.py +0 -0
- {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/app/stitching.py +0 -0
- {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/app/tests/test_reduce_dark_flat.py +0 -0
- {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/app/utils.py +0 -0
- {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/app/validator.py +0 -0
- {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/cuda/__init__.py +0 -0
- {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/cuda/convolution.py +0 -0
- {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/cuda/fft.py +0 -0
- {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/cuda/kernel.py +0 -0
- {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/cuda/medfilt.py +0 -0
- {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/cuda/padding.py +0 -0
- {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/cuda/processing.py +0 -0
- {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/cuda/src/ElementOp.cu +0 -0
- {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/cuda/src/backproj.cu +0 -0
- {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/cuda/src/backproj_polar.cu +0 -0
- {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/cuda/src/boundary.h +0 -0
- {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/cuda/src/convolution.cu +0 -0
- {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/cuda/src/dfi_fftshift.cu +0 -0
- {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/cuda/src/flatfield.cu +0 -0
- {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/cuda/src/fourier_wavelets.cu +0 -0
- {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/cuda/src/halftomo.cu +0 -0
- {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/cuda/src/helical_padding.cu +0 -0
- {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/cuda/src/histogram.cu +0 -0
- {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/cuda/src/interpolation.cu +0 -0
- {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/cuda/src/medfilt.cu +0 -0
- {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/cuda/src/normalization.cu +0 -0
- {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/cuda/src/padding.cu +0 -0
- {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/cuda/src/proj.cu +0 -0
- {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/cuda/src/rotation.cu +0 -0
- {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/cuda/src/transpose.cu +0 -0
- {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/cuda/tests/__init__.py +0 -0
- {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/cuda/utils.py +0 -0
- {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/estimation/__init__.py +0 -0
- {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/estimation/alignment.py +0 -0
- {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/estimation/cor_sino.py +0 -0
- {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/estimation/distortion.py +0 -0
- {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/estimation/focus.py +0 -0
- {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/estimation/tests/__init__.py +0 -0
- {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/estimation/tests/test_alignment.py +0 -0
- {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/estimation/tests/test_cor.py +0 -0
- {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/estimation/tests/test_focus.py +0 -0
- {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/estimation/tests/test_tilt.py +0 -0
- {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/estimation/tests/test_translation.py +0 -0
- {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/estimation/tilt.py +0 -0
- {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/estimation/translation.py +0 -0
- {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/estimation/utils.py +0 -0
- {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/io/__init__.py +0 -0
- {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/io/detector_distortion.py +0 -0
- {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/io/reader.py +0 -0
- {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/io/reader_helical.py +0 -0
- {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/io/tests/__init__.py +0 -0
- {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/io/tests/test_cast_volume.py +0 -0
- {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/io/tests/test_detector_distortion.py +0 -0
- {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/io/tests/test_writers.py +0 -0
- {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/io/tiffwriter_zmm.py +0 -0
- {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/io/utils.py +0 -0
- {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/io/writer.py +0 -0
- {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/misc/__init__.py +0 -0
- {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/misc/binning.py +0 -0
- {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/misc/fftshift.py +0 -0
- {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/misc/filters.py +0 -0
- {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/misc/fourier_filters.py +0 -0
- {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/misc/histogram.py +0 -0
- {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/misc/histogram_cuda.py +0 -0
- {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/misc/kernel_base.py +0 -0
- {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/misc/padding.py +0 -0
- {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/misc/padding_base.py +0 -0
- {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/misc/processing_base.py +0 -0
- {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/misc/rotation.py +0 -0
- {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/misc/rotation_cuda.py +0 -0
- {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/misc/tests/__init__.py +0 -0
- {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/misc/tests/test_binning.py +0 -0
- {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/misc/tests/test_interpolation.py +0 -0
- {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/misc/transpose.py +0 -0
- {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/misc/unsharp.py +0 -0
- {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/misc/unsharp_cuda.py +0 -0
- {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/misc/unsharp_opencl.py +0 -0
- {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/misc/utils.py +0 -0
- {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/opencl/__init__.py +0 -0
- {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/opencl/fft.py +0 -0
- {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/opencl/kernel.py +0 -0
- {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/opencl/memcpy.py +0 -0
- {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/opencl/padding.py +0 -0
- {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/opencl/processing.py +0 -0
- {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/opencl/src/ElementOp.cl +0 -0
- {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/opencl/src/backproj.cl +0 -0
- {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/opencl/src/fftshift.cl +0 -0
- {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/opencl/src/halftomo.cl +0 -0
- {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/opencl/src/padding.cl +0 -0
- {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/opencl/src/roll.cl +0 -0
- {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/opencl/src/transpose.cl +0 -0
- {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/opencl/tests/__init__.py +0 -0
- {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/opencl/utils.py +0 -0
- {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/pipeline/__init__.py +0 -0
- {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/pipeline/config.py +0 -0
- {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/pipeline/config_validators.py +0 -0
- {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/pipeline/datadump.py +0 -0
- {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/pipeline/dataset_validator.py +0 -0
- {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/pipeline/detector_distortion_provider.py +0 -0
- {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/pipeline/fallback_utils.py +0 -0
- {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/pipeline/fullfield/__init__.py +0 -0
- {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/pipeline/fullfield/chunked.py +0 -0
- {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/pipeline/fullfield/chunked_cuda.py +0 -0
- {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/pipeline/fullfield/computations.py +0 -0
- {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/pipeline/fullfield/dataset_validator.py +0 -0
- {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/pipeline/fullfield/nabu_config.py +0 -0
- {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/pipeline/fullfield/processconfig.py +0 -0
- {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/pipeline/fullfield/reconstruction.py +0 -0
- {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/pipeline/helical/__init__.py +0 -0
- {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/pipeline/helical/dataset_validator.py +0 -0
- {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/pipeline/helical/fbp.py +0 -0
- {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/pipeline/helical/filtering.py +0 -0
- {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/pipeline/helical/gridded_accumulator.py +0 -0
- {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/pipeline/helical/helical_chunked_regridded.py +0 -0
- {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/pipeline/helical/helical_chunked_regridded_cuda.py +0 -0
- {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/pipeline/helical/helical_reconstruction.py +0 -0
- {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/pipeline/helical/helical_utils.py +0 -0
- {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/pipeline/helical/nabu_config.py +0 -0
- {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/pipeline/helical/processconfig.py +0 -0
- {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/pipeline/helical/span_strategy.py +0 -0
- {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/pipeline/helical/tests/__init__.py +0 -0
- {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/pipeline/helical/tests/test_accumulator.py +0 -0
- {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/pipeline/helical/tests/test_pipeline_elements_full.py +0 -0
- {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/pipeline/helical/tests/test_strategy.py +0 -0
- {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/pipeline/helical/utils.py +0 -0
- {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/pipeline/helical/weight_balancer.py +0 -0
- {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/pipeline/params.py +0 -0
- {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/pipeline/processconfig.py +0 -0
- {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/pipeline/tests/test_chunk_reader.py +0 -0
- {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/pipeline/tests/test_estimators.py +0 -0
- {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/pipeline/utils.py +0 -0
- {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/pipeline/writer.py +0 -0
- {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/pipeline/xrdct/__init__.py +0 -0
- {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/preproc/__init__.py +0 -0
- {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/preproc/alignment.py +0 -0
- {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/preproc/ccd.py +0 -0
- {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/preproc/ccd_cuda.py +0 -0
- {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/preproc/ctf.py +0 -0
- {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/preproc/ctf_cuda.py +0 -0
- {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/preproc/distortion.py +0 -0
- {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/preproc/double_flatfield.py +0 -0
- {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/preproc/double_flatfield_cuda.py +0 -0
- {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/preproc/double_flatfield_variable_region.py +0 -0
- {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/preproc/flatfield.py +0 -0
- {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/preproc/flatfield_cuda.py +0 -0
- {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/preproc/flatfield_variable_region.py +0 -0
- {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/preproc/phase.py +0 -0
- {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/preproc/phase_cuda.py +0 -0
- {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/preproc/shift.py +0 -0
- {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/preproc/shift_cuda.py +0 -0
- {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/preproc/tests/__init__.py +0 -0
- {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/preproc/tests/test_ccd_corr.py +0 -0
- {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/preproc/tests/test_ctf.py +0 -0
- {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/preproc/tests/test_double_flatfield.py +0 -0
- {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/preproc/tests/test_flatfield.py +0 -0
- {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/preproc/tests/test_paganin.py +0 -0
- {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/preproc/tests/test_vshift.py +0 -0
- {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/processing/__init__.py +0 -0
- {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/processing/convolution_cuda.py +0 -0
- {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/processing/fft_base.py +0 -0
- {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/processing/fft_cuda.py +0 -0
- {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/processing/fft_opencl.py +0 -0
- {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/processing/fftshift.py +0 -0
- {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/processing/histogram.py +0 -0
- {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/processing/histogram_cuda.py +0 -0
- {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/processing/kernel_base.py +0 -0
- {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/processing/medfilt_cuda.py +0 -0
- {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/processing/muladd.py +0 -0
- {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/processing/muladd_cuda.py +0 -0
- {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/processing/padding_base.py +0 -0
- {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/processing/padding_cuda.py +0 -0
- {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/processing/padding_opencl.py +0 -0
- {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/processing/processing_base.py +0 -0
- {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/processing/roll_opencl.py +0 -0
- {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/processing/rotation.py +0 -0
- {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/processing/rotation_cuda.py +0 -0
- {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/processing/tests/__init__.py +0 -0
- {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/processing/tests/test_fft.py +0 -0
- {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/processing/tests/test_fftshift.py +0 -0
- {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/processing/tests/test_histogram.py +0 -0
- {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/processing/tests/test_medfilt.py +0 -0
- {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/processing/tests/test_muladd.py +0 -0
- {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/processing/tests/test_padding.py +0 -0
- {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/processing/tests/test_roll.py +0 -0
- {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/processing/tests/test_rotation.py +0 -0
- {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/processing/tests/test_transpose.py +0 -0
- {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/processing/tests/test_unsharp.py +0 -0
- {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/processing/transpose.py +0 -0
- {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/processing/unsharp.py +0 -0
- {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/processing/unsharp_cuda.py +0 -0
- {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/processing/unsharp_opencl.py +0 -0
- {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/reconstruction/__init__.py +0 -0
- {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/reconstruction/cone.py +0 -0
- {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/reconstruction/fbp.py +0 -0
- {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/reconstruction/fbp_base.py +0 -0
- {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/reconstruction/fbp_opencl.py +0 -0
- {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/reconstruction/filtering.py +0 -0
- {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/reconstruction/filtering_cuda.py +0 -0
- {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/reconstruction/filtering_opencl.py +0 -0
- {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/reconstruction/projection.py +0 -0
- {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/reconstruction/reconstructor.py +0 -0
- {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/reconstruction/reconstructor_cuda.py +0 -0
- {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/reconstruction/rings.py +0 -0
- {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/reconstruction/rings_cuda.py +0 -0
- {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/reconstruction/sinogram.py +0 -0
- {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/reconstruction/sinogram_cuda.py +0 -0
- {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/reconstruction/sinogram_opencl.py +0 -0
- {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/reconstruction/tests/__init__.py +0 -0
- {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/reconstruction/tests/test_cone.py +0 -0
- {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/reconstruction/tests/test_deringer.py +0 -0
- {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/reconstruction/tests/test_fbp.py +0 -0
- {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/reconstruction/tests/test_filtering.py +0 -0
- {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/reconstruction/tests/test_halftomo.py +0 -0
- {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/reconstruction/tests/test_projector.py +0 -0
- {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/reconstruction/tests/test_reconstructor.py +0 -0
- {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/reconstruction/tests/test_sino_normalization.py +0 -0
- {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/resources/__init__.py +0 -0
- {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/resources/cli/__init__.py +0 -0
- {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/resources/cor.py +0 -0
- {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/resources/gpu.py +0 -0
- {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/resources/logger.py +0 -0
- {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/resources/nxflatfield.py +0 -0
- {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/resources/templates/__init__.py +0 -0
- {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/resources/templates/bm05_pag.conf +0 -0
- {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/resources/templates/id16_ctf.conf +0 -0
- {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/resources/templates/id16_holo.conf +0 -0
- {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/resources/templates/id19_pag.conf +0 -0
- {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/resources/tests/__init__.py +0 -0
- {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/resources/tests/test_nxflatfield.py +0 -0
- {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/resources/tests/test_units.py +0 -0
- {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/resources/utils.py +0 -0
- {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/stitching/__init__.py +0 -0
- {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/stitching/alignment.py +0 -0
- {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/stitching/definitions.py +0 -0
- {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/stitching/frame_composition.py +0 -0
- {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/stitching/overlap.py +0 -0
- {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/stitching/sample_normalization.py +0 -0
- {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/stitching/slurm_utils.py +0 -0
- {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/stitching/tests/__init__.py +0 -0
- {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/stitching/tests/test_alignment.py +0 -0
- {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/stitching/tests/test_config.py +0 -0
- {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/stitching/tests/test_frame_composition.py +0 -0
- {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/stitching/tests/test_overlap.py +0 -0
- {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/stitching/tests/test_sample_normalization.py +0 -0
- {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/stitching/tests/test_slurm_utils.py +0 -0
- {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/stitching/tests/test_utils.py +0 -0
- {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/stitching/tests/test_z_stitching.py +0 -0
- {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/stitching/utils.py +0 -0
- {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/tests.py +0 -0
- {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/testutils.py +0 -0
- {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/thirdparty/__init__.py +0 -0
- {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/thirdparty/algotom_convert_sino.py +0 -0
- {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/thirdparty/pore3d_deringer_munch.py +0 -0
- {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/thirdparty/tomocupy_remove_stripe.py +0 -0
- {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/thirdparty/tomopy_phase.py +0 -0
- {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/thirdparty/tomwer_load_flats_darks.py +0 -0
- {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu/utils.py +0 -0
- {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu.egg-info/dependency_links.txt +0 -0
- {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu.egg-info/entry_points.txt +0 -0
- {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu.egg-info/requires.txt +0 -0
- {nabu-2024.1.0rc3 → nabu-2024.1.1}/nabu.egg-info/top_level.txt +0 -0
- {nabu-2024.1.0rc3 → nabu-2024.1.1}/pyproject.toml +0 -0
- {nabu-2024.1.0rc3 → nabu-2024.1.1}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: nabu
|
3
|
-
Version: 2024.1.
|
3
|
+
Version: 2024.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>
|
@@ -285,13 +285,13 @@ class CenterOfRotationSlidingWindow(CenterOfRotation):
|
|
285
285
|
abs_pos = near_pos + img_shape[-1] // 2
|
286
286
|
offset = min(img_shape[-1] - abs_pos, abs_pos) # distance to closest edge.
|
287
287
|
|
288
|
-
window_fraction = 0.
|
288
|
+
window_fraction = 0.4 # Hard-coded ?
|
289
289
|
window_shift = int(np.floor(offset * window_fraction))
|
290
290
|
window_width = 2 * window_shift + 1
|
291
291
|
|
292
292
|
sliding_shift = int(np.floor(offset * (1 - window_fraction))) - 1
|
293
293
|
n = 2 * sliding_shift + 1
|
294
|
-
win_1_start_seed =
|
294
|
+
win_1_start_seed = 2 * near_pos - sliding_shift
|
295
295
|
|
296
296
|
if side.lower() == "right":
|
297
297
|
win_2_start = 0
|
@@ -167,6 +167,12 @@ def cast_volume(
|
|
167
167
|
if not isinstance(output_volume, VolumeBase):
|
168
168
|
raise TypeError(f"output_volume is expected to be a {VolumeBase}. {type(output_volume)} provided")
|
169
169
|
|
170
|
+
try:
|
171
|
+
output_data_type = numpy.dtype(
|
172
|
+
output_data_type
|
173
|
+
) # User friendly API in case user provides np.uint16 e.g. (see issue #482)
|
174
|
+
except Exception:
|
175
|
+
pass
|
170
176
|
if not isinstance(output_data_type, numpy.dtype):
|
171
177
|
raise TypeError(f"output_data_type is expected to be a {numpy.dtype}. {type(output_data_type)} provided")
|
172
178
|
|
@@ -326,7 +332,7 @@ def find_histogram(volume: VolumeBase, scan: Optional[TomoScanBase] = None) -> O
|
|
326
332
|
)
|
327
333
|
|
328
334
|
|
329
|
-
def _get_hst_saturations(hist, bins, rescale_min_percentile, rescale_max_percentile):
|
335
|
+
def _get_hst_saturations(hist, bins, rescale_min_percentile: numpy.float32, rescale_max_percentile: numpy.float32):
|
330
336
|
hist_cum = numpy.cumsum(hist)
|
331
337
|
bin_index_min = numpy.searchsorted(hist_cum, numpy.percentile(hist_cum, rescale_min_percentile))
|
332
338
|
bin_index_max = numpy.searchsorted(hist_cum, numpy.percentile(hist_cum, rescale_max_percentile))
|
@@ -360,4 +366,6 @@ def _min_max_from_histo(url: DataUrl, rescale_min_percentile: int, rescale_max_p
|
|
360
366
|
else:
|
361
367
|
bins = histogram[1]
|
362
368
|
hist = histogram[0]
|
363
|
-
return _get_hst_saturations(
|
369
|
+
return _get_hst_saturations(
|
370
|
+
hist, bins, numpy.float32(rescale_min_percentile), numpy.float32(rescale_max_percentile)
|
371
|
+
)
|
@@ -27,7 +27,7 @@ from ..resources.logger import LoggerOrPrint
|
|
27
27
|
from ..resources.utils import extract_parameters
|
28
28
|
from ..utils import check_supported, is_int
|
29
29
|
from .params import tilt_methods
|
30
|
-
from ..resources.dataset_analyzer import
|
30
|
+
from ..resources.dataset_analyzer import get_radio_pair
|
31
31
|
from ..processing.rotation import Rotation
|
32
32
|
from ..io.reader import ChunkReader
|
33
33
|
from ..preproc.ccd import Log, CCDFilter
|
@@ -148,7 +148,7 @@ class CORFinderBase:
|
|
148
148
|
)
|
149
149
|
near_init = default_lookup_side
|
150
150
|
elif isinstance(near_init, Real):
|
151
|
-
self.cor_options.update({"near_pos": near_init})
|
151
|
+
self.cor_options.update({"near_pos": int(near_init)})
|
152
152
|
near_init = "near" # ???
|
153
153
|
elif near_init == "near": # Legacy
|
154
154
|
if not isinstance(self.cor_options["near_pos"], Real):
|
@@ -201,8 +201,8 @@ class CORFinderBase:
|
|
201
201
|
lookup_side = self.cor_options.get("side", default_lookup_side)
|
202
202
|
|
203
203
|
# OctaveAccurate
|
204
|
-
if cor_class == CenterOfRotationOctaveAccurate:
|
205
|
-
|
204
|
+
# if cor_class == CenterOfRotationOctaveAccurate:
|
205
|
+
# lookup_side = "center"
|
206
206
|
angles = self.dataset_info.rotation_angles
|
207
207
|
|
208
208
|
self.cor_exec_args = []
|
@@ -246,7 +246,9 @@ class CORFinder(CORFinderBase):
|
|
246
246
|
},
|
247
247
|
}
|
248
248
|
|
249
|
-
def __init__(
|
249
|
+
def __init__(
|
250
|
+
self, method, dataset_info, do_flatfield=True, cor_options=None, logger=None, radio_angles: tuple = (0.0, np.pi)
|
251
|
+
):
|
250
252
|
"""
|
251
253
|
Initialize a CORFinder object.
|
252
254
|
|
@@ -254,15 +256,19 @@ class CORFinder(CORFinderBase):
|
|
254
256
|
----------
|
255
257
|
dataset_info: `nabu.resources.dataset_analyzer.DatasetAnalyzer`
|
256
258
|
Dataset information structure
|
259
|
+
radio_angles: angles to use to find the cor
|
257
260
|
"""
|
258
261
|
super().__init__(method, dataset_info, do_flatfield=do_flatfield, cor_options=cor_options, logger=logger)
|
262
|
+
self._radio_angles = radio_angles
|
259
263
|
self._init_radios()
|
260
264
|
self._init_flatfield()
|
261
265
|
self._apply_flatfield()
|
262
266
|
self._apply_tilt()
|
263
267
|
|
264
268
|
def _init_radios(self):
|
265
|
-
self.radios, self._radios_indices =
|
269
|
+
self.radios, self._radios_indices = get_radio_pair(
|
270
|
+
self.dataset_info, radio_angles=self._radio_angles, return_indices=True
|
271
|
+
)
|
266
272
|
|
267
273
|
def _init_flatfield(self):
|
268
274
|
if not (self.do_flatfield):
|
@@ -919,7 +925,7 @@ class DetectorTiltEstimator:
|
|
919
925
|
named arguments to pass to the detector tilt estimator class.
|
920
926
|
"""
|
921
927
|
self._set_params(dataset_info, do_flatfield, logger, autotilt_options)
|
922
|
-
self.radios, self.radios_indices =
|
928
|
+
self.radios, self.radios_indices = get_radio_pair(dataset_info, radio_angles=(0.0, np.pi), return_indices=True)
|
923
929
|
self._init_flatfield()
|
924
930
|
self._apply_flatfield()
|
925
931
|
|
@@ -424,14 +424,17 @@ def analyze_dataset(dataset_path, extra_options=None, logger=None):
|
|
424
424
|
return dataset_structure
|
425
425
|
|
426
426
|
|
427
|
-
def
|
427
|
+
def get_radio_pair(dataset_info, radio_angles: tuple, return_indices=False):
|
428
428
|
"""
|
429
|
-
Get
|
429
|
+
Get closest radios at radio_angles[0] and radio_angles[1]
|
430
|
+
angles must be in angles
|
430
431
|
|
431
432
|
Parameters
|
432
433
|
----------
|
433
434
|
dataset_info: `DatasetAnalyzer` instance
|
434
435
|
Data structure with the dataset information
|
436
|
+
radio_angles: tuple
|
437
|
+
tuple of two elements: angles (in radian) to get
|
435
438
|
return_indices: bool, optional
|
436
439
|
Whether to return radios indices along with the radios array.
|
437
440
|
|
@@ -441,14 +444,20 @@ def get_0_180_radios(dataset_info, return_indices=False):
|
|
441
444
|
If return_indices is True, return a tuple (radios, indices).
|
442
445
|
Otherwise, return an array with the radios.
|
443
446
|
"""
|
447
|
+
if not (isinstance(radio_angles, tuple) and len(radio_angles) == 2):
|
448
|
+
raise TypeError("radio_angles should be a tuple of two elements.")
|
449
|
+
if not isinstance(radio_angles[0], (np.floating, float)) or not isinstance(radio_angles[1], (np.floating, float)):
|
450
|
+
raise TypeError(
|
451
|
+
f"radio_angles should be float. Get {type(radio_angles[0])} and {type(radio_angles[1])} instead"
|
452
|
+
)
|
453
|
+
|
444
454
|
radios_indices = []
|
445
455
|
radios_indices = sorted(dataset_info.projections.keys())
|
446
456
|
angles = dataset_info.rotation_angles
|
447
457
|
angles = angles - angles.min()
|
448
|
-
|
449
|
-
|
450
|
-
|
451
|
-
radios_indices = [radios_indices[i_0], radios_indices[i_180]]
|
458
|
+
i_radio_1 = np.argmin(np.abs(angles - radio_angles[0]))
|
459
|
+
i_radio_2 = np.argmin(np.abs(angles - radio_angles[1]))
|
460
|
+
radios_indices = [radios_indices[i_radio_1], radios_indices[i_radio_2]]
|
452
461
|
n_radios = 2
|
453
462
|
radios = np.zeros((n_radios,) + dataset_info.radio_dims[::-1], "f")
|
454
463
|
for i in range(n_radios):
|
@@ -710,12 +710,12 @@ class StitchingConfiguration:
|
|
710
710
|
"type": "optional",
|
711
711
|
},
|
712
712
|
SLURM_PREPROCESSING_COMMAND: {
|
713
|
-
"default": "
|
713
|
+
"default": "",
|
714
714
|
"help": "python virtual environment to use",
|
715
715
|
"type": "optional",
|
716
716
|
},
|
717
717
|
SLURM_MODULES_TO_LOADS: {
|
718
|
-
"default": "",
|
718
|
+
"default": "tomotools/stable",
|
719
719
|
"help": "module to load",
|
720
720
|
"type": "optional",
|
721
721
|
},
|
@@ -1223,7 +1223,9 @@ class PreProcessZStitcher(ZStitcher):
|
|
1223
1223
|
|
1224
1224
|
# first save the NXtomo entry without the frame
|
1225
1225
|
# dicttonx will fail if the folder does not exists
|
1226
|
-
os.
|
1226
|
+
dir_name = os.path.dirname(self.configuration.output_file_path)
|
1227
|
+
if dir_name not in (None, ""):
|
1228
|
+
os.makedirs(dir_name, exist_ok=True)
|
1227
1229
|
nx_tomo.save(
|
1228
1230
|
file_path=self.configuration.output_file_path,
|
1229
1231
|
data_path=self.configuration.output_data_path,
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: nabu
|
3
|
-
Version: 2024.1.
|
3
|
+
Version: 2024.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>
|
@@ -3,7 +3,6 @@ README.md
|
|
3
3
|
pyproject.toml
|
4
4
|
doc/conf.py
|
5
5
|
doc/create_conf_doc.py
|
6
|
-
doc/doc_config.py
|
7
6
|
doc/get_mathjax.py
|
8
7
|
nabu/__init__.py
|
9
8
|
nabu/tests.py
|
@@ -296,35 +295,4 @@ nabu/thirdparty/algotom_convert_sino.py
|
|
296
295
|
nabu/thirdparty/pore3d_deringer_munch.py
|
297
296
|
nabu/thirdparty/tomocupy_remove_stripe.py
|
298
297
|
nabu/thirdparty/tomopy_phase.py
|
299
|
-
nabu/thirdparty/tomwer_load_flats_darks.py
|
300
|
-
sandbox/align_test.py
|
301
|
-
sandbox/app.py
|
302
|
-
sandbox/binning_cython.py
|
303
|
-
sandbox/circ_sm.py
|
304
|
-
sandbox/composite_image.py
|
305
|
-
sandbox/convert_id15.py
|
306
|
-
sandbox/do_test_ctf.py
|
307
|
-
sandbox/esrf_envs.py
|
308
|
-
sandbox/fbp_polar.py
|
309
|
-
sandbox/fbp_tilt.py
|
310
|
-
sandbox/interleaved.py
|
311
|
-
sandbox/interp_sinos_halftomo.py
|
312
|
-
sandbox/linear_interp.py
|
313
|
-
sandbox/merge_recs.py
|
314
|
-
sandbox/moduleutils.py
|
315
|
-
sandbox/nbreconstruct.py
|
316
|
-
sandbox/pag_margin.py
|
317
|
-
sandbox/parse.py
|
318
|
-
sandbox/plot.py
|
319
|
-
sandbox/proj3D.py
|
320
|
-
sandbox/rec_bm05.py
|
321
|
-
sandbox/rec_thread.py
|
322
|
-
sandbox/shift_bilinear2.py
|
323
|
-
sandbox/sinotilt.py
|
324
|
-
sandbox/sysutils.py
|
325
|
-
sandbox/test_mp_queue.py
|
326
|
-
sandbox/tilt.py
|
327
|
-
sandbox/utils.py
|
328
|
-
sandbox/vo.py
|
329
|
-
sandbox/workers.py
|
330
|
-
sandbox/xrdrec_pyFAI_data.py
|
298
|
+
nabu/thirdparty/tomwer_load_flats_darks.py
|
@@ -1,32 +0,0 @@
|
|
1
|
-
#!/usr/bin/env python
|
2
|
-
|
3
|
-
from nabu.resources.nabu_config import nabu_config
|
4
|
-
|
5
|
-
|
6
|
-
def generate(file_):
|
7
|
-
def write(content):
|
8
|
-
print(content, file=file_)
|
9
|
-
for section, values in nabu_config.items():
|
10
|
-
if section == "about":
|
11
|
-
continue
|
12
|
-
write("## %s\n" % section)
|
13
|
-
for key, val in values.items():
|
14
|
-
if val["type"] == "unsupported":
|
15
|
-
continue
|
16
|
-
write(val["help"] + "\n")
|
17
|
-
write(
|
18
|
-
"```ini\n%s = %s\n```"
|
19
|
-
% (key, val["default"])
|
20
|
-
)
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
if __name__ == "__main__":
|
25
|
-
|
26
|
-
import sys, os
|
27
|
-
print(os.path.abspath(__file__))
|
28
|
-
exit(0)
|
29
|
-
|
30
|
-
fname = "/tmp/test.md"
|
31
|
-
with open(fname, "w") as f:
|
32
|
-
generate(f)
|
@@ -1,61 +0,0 @@
|
|
1
|
-
import numpy as np
|
2
|
-
from nabu.estimation.translation import DetectorTranslationAlongBeam
|
3
|
-
from tomoscan.io import HDF5File
|
4
|
-
|
5
|
-
|
6
|
-
def get_data(fname, h5_paths):
|
7
|
-
with HDF5File(fname, "r") as f:
|
8
|
-
align_data = f[h5_paths["align_data"]][()]
|
9
|
-
dark = f[h5_paths["dark"]][0]
|
10
|
-
pixel_size_um = f[h5_paths["pixel_size"]][()]
|
11
|
-
positions_mm = f[h5_paths["positions"]][()]
|
12
|
-
|
13
|
-
# Dark subtraction
|
14
|
-
align_data = align_data - dark.astype("f")
|
15
|
-
|
16
|
-
return align_data, pixel_size_um, positions_mm
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
def get_alignment(align_data, pixel_size_um, positions_mm, plot=True):
|
21
|
-
|
22
|
-
tr_calc = DetectorTranslationAlongBeam()
|
23
|
-
if plot == True:
|
24
|
-
tr_calc.verbose=True
|
25
|
-
|
26
|
-
shifts_v, shifts_h = tr_calc.find_shift(align_data, positions_mm)
|
27
|
-
|
28
|
-
# pixel_size is in microns, motor position is in mm
|
29
|
-
tilt_v_deg = np.rad2deg(np.arctan(shifts_v * pixel_size_um / 1e3))
|
30
|
-
tilt_h_deg = np.rad2deg(np.arctan(shifts_h * pixel_size_um / 1e3))
|
31
|
-
print (f"\nVertical tilt to be applied in deg (thy): {tilt_v_deg}")
|
32
|
-
print (f"Horizontal tilt to be applied in deg (thz): {tilt_h_deg}\n")
|
33
|
-
|
34
|
-
return align_data, shifts_v, shifts_h, positions_mm
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
if __name__ == "__main__":
|
42
|
-
fname = "/data/id19/inhouse/id192201/id19/sample/sample_0001/sample_0001.h5"
|
43
|
-
h5_paths = {
|
44
|
-
"align_data": "11.1/measurement/pcolinux",
|
45
|
-
"dark": "12.1/measurement/pcolinux",
|
46
|
-
"pixel_size": "11.1/instrument/pcolinux/x_pixel_size",
|
47
|
-
"positions": "11.1/measurement/hrxc"
|
48
|
-
}
|
49
|
-
align_data, pixel_size_um, positions_mm = get_data(fname, h5_paths)
|
50
|
-
# align_data, shifts_v, shifts_h, positions_mm = get_alignment(align_data, pixel_size_um, positions_mm)
|
51
|
-
|
52
|
-
D = DetectorTranslationAlongBeam()
|
53
|
-
D. verbose = True
|
54
|
-
sv, sh = D.find_shift(align_data, positions_mm)
|
55
|
-
D.verbose = False
|
56
|
-
sv, sh = D.find_shift(align_data, positions_mm)
|
57
|
-
D.verbose = True
|
58
|
-
sv, sh = D.find_shift(align_data, positions_mm)
|
59
|
-
|
60
|
-
|
61
|
-
|
nabu-2024.1.0rc3/sandbox/app.py
DELETED
@@ -1,123 +0,0 @@
|
|
1
|
-
from time import sleep
|
2
|
-
import pycuda.autoinit
|
3
|
-
import pycuda.gpuarray as garray
|
4
|
-
from nabu.resources.processconfig import ProcessConfig
|
5
|
-
from nabu.resources.tasks import build_processing_steps
|
6
|
-
|
7
|
-
from nabu.app.logger import Logger
|
8
|
-
|
9
|
-
from nabu.app.chunkreader import ChunkReaderComponent
|
10
|
-
from nabu.app.flatfield import FlatFieldComponent
|
11
|
-
from nabu.app.phase import PhaseRetrievalComponent
|
12
|
-
from nabu.app.opmap import NegativeLogComponent
|
13
|
-
from nabu.app.ccdfilter import CCDFilterComponent
|
14
|
-
from nabu.app.unsharp import UnsharpMaskComponent
|
15
|
-
from nabu.app.reconstructor import ReconstructorComponent
|
16
|
-
|
17
|
-
|
18
|
-
if __name__ == "__main__":
|
19
|
-
|
20
|
-
conf = ProcessConfig("/home/pierre/workspace/data/nabu.conf")
|
21
|
-
steps, options = build_processing_steps(conf)
|
22
|
-
dataset_infos = conf.dataset_infos
|
23
|
-
SUB_REGION = (None, None, None, 50)
|
24
|
-
|
25
|
-
logger = Logger("nabu_processing", console=True)
|
26
|
-
|
27
|
-
# Read chunk
|
28
|
-
options["read_chunk"]["sub_region"] = SUB_REGION
|
29
|
-
options["read_chunk"]["convert_float"] = True
|
30
|
-
Ch = ChunkReaderComponent(options["read_chunk"], dataset_infos, logger=logger)
|
31
|
-
Ch.execute()
|
32
|
-
radios = Ch.chunk_reader.files_data
|
33
|
-
d_radios = garray.to_gpu(radios)
|
34
|
-
|
35
|
-
# Flat-field
|
36
|
-
options["flatfield"]["sub_region"] = SUB_REGION
|
37
|
-
options["flatfield"]["use_opencl"] = False
|
38
|
-
options["flatfield"]["use_cuda"] = True
|
39
|
-
F = FlatFieldComponent(d_radios, options["flatfield"], dataset_infos, logger=logger)
|
40
|
-
F.execute()
|
41
|
-
|
42
|
-
# CCD filter
|
43
|
-
options["ccd_correction"]["use_cuda"] = True
|
44
|
-
options["ccd_correction"]["use_opencl"] = False
|
45
|
-
CCD = CCDFilterComponent(d_radios, options["ccd_correction"], dataset_infos, logger=logger)
|
46
|
-
CCD.execute()
|
47
|
-
|
48
|
-
|
49
|
-
# Phase retrieval
|
50
|
-
options["phase"]["use_cuda"] = True
|
51
|
-
options["phase"]["use_opencl"] = False
|
52
|
-
P = PhaseRetrievalComponent(radios[0].shape, options["phase"], dataset_infos, logger=logger)
|
53
|
-
P.execute(d_radios)
|
54
|
-
|
55
|
-
# Unsharp
|
56
|
-
# ~ options["unsharp_mask"]["use_cuda"] = True
|
57
|
-
# ~ options["unsharp_mask"]["use_opencl"] = False
|
58
|
-
# ~ U = UnsharpMaskComponent(radios[0].shape, options["unsharp_mask"], dataset_infos, logger=logger)
|
59
|
-
# ~ U.execute(d_radios)
|
60
|
-
|
61
|
-
# -log()
|
62
|
-
options["take_log"]["use_cuda"] = True
|
63
|
-
options["take_log"]["use_opencl"] = False
|
64
|
-
L = NegativeLogComponent(d_radios, options["take_log"], dataset_infos, logger=logger)
|
65
|
-
L.execute()
|
66
|
-
|
67
|
-
|
68
|
-
# Test
|
69
|
-
# ~ from spire.utils import ims
|
70
|
-
# ~ r = d_radios.get()
|
71
|
-
# ~ ims(r[:, 10, :])
|
72
|
-
|
73
|
-
|
74
|
-
# Reconstruction
|
75
|
-
options["reconstruction"]["use_cuda"] = True
|
76
|
-
|
77
|
-
# Test ...
|
78
|
-
if 1:
|
79
|
-
options["reconstruction"]["start_x"] = 100
|
80
|
-
options["reconstruction"]["end_x"] = -100
|
81
|
-
options["reconstruction"]["start_y"] = 100
|
82
|
-
options["reconstruction"]["end_y"] = -100
|
83
|
-
options["reconstruction"]["start_z"] = 0
|
84
|
-
options["reconstruction"]["end_z"] = SUB_REGION[-1]-1
|
85
|
-
d_rec = garray.zeros((50, 1849, 1849), "f") # y
|
86
|
-
#
|
87
|
-
else:
|
88
|
-
d_rec = garray.zeros((SUB_REGION[-1], 2048, 2048), "f")
|
89
|
-
R = ReconstructorComponent(d_radios.shape, options["reconstruction"], dataset_infos, logger=logger)
|
90
|
-
R.execute(d_radios, output=d_rec)
|
91
|
-
|
92
|
-
|
93
|
-
# Write to file
|
94
|
-
rec = d_rec.get()
|
95
|
-
import numpy as np
|
96
|
-
np.save("/home/pierre/tmp/crayon/recs_nabu_vertical.npy", rec)
|
97
|
-
|
98
|
-
"""from nabu.reconstruction.reconstructor_cuda import CudaReconstructor
|
99
|
-
R = CudaReconstructor(
|
100
|
-
radios.shape,
|
101
|
-
[0, 1],
|
102
|
-
vol_type="projections",
|
103
|
-
extra_options={"padding_mode": conf.nabu_config["reconstruction"]["padding_type"]}
|
104
|
-
)
|
105
|
-
d_recs = garray.zeros((1, 2048, 2048), "f")
|
106
|
-
R.reconstruct(d_radios, output=d_recs)
|
107
|
-
recs = d_recs.get()
|
108
|
-
ims(recs[0], cmap="gray")
|
109
|
-
# save
|
110
|
-
import numpy as np
|
111
|
-
np.save("/tmp/rec0.npy", recs[0])
|
112
|
-
"""
|
113
|
-
|
114
|
-
|
115
|
-
"""
|
116
|
-
Notes
|
117
|
-
- If the cuda backend is used at step N, it should also be used at step N+1,
|
118
|
-
|
119
|
-
|
120
|
-
otherwise we have to get() the data
|
121
|
-
|
122
|
-
"""
|
123
|
-
|
@@ -1,37 +0,0 @@
|
|
1
|
-
%%cython --compile-args=-fopenmp --link-args=-fopenmp -a
|
2
|
-
#%%cython -a
|
3
|
-
#cython: embedsignature=True, language_level=3, binding=True
|
4
|
-
#cython: boundscheck=False, wraparound=False, cdivision=True, initializedcheck=False,
|
5
|
-
## This is for developping:
|
6
|
-
## cython: profile=True, warn.undeclared=True, warn.unused=True, warn.unused_result=False, warn.unused_arg=True
|
7
|
-
|
8
|
-
import numpy as np
|
9
|
-
from cython.parallel import prange
|
10
|
-
"""
|
11
|
-
def bin2_cython(float[:, ::1] img):
|
12
|
-
cdef:
|
13
|
-
float[:, ::1] res
|
14
|
-
int i, j, Ny, Nx
|
15
|
-
|
16
|
-
shp = img.shape
|
17
|
-
Ny, Nx = (img.shape[0]//2, img.shape[1]//2)
|
18
|
-
res = np.zeros((Ny, Nx), dtype="f")
|
19
|
-
for i in prange(Ny, nogil=True):
|
20
|
-
for j in range(Nx):
|
21
|
-
res[i, j] = 0.25 * (img[2*i, 2*j] + img[2*i+1, 2*j] + img[2*i, 2*j+1] + img[2*i+1, 2*j+1])
|
22
|
-
return np.asarray(res)
|
23
|
-
"""
|
24
|
-
|
25
|
-
|
26
|
-
def bin2_cython(unsigned short[:, ::1] img):
|
27
|
-
cdef:
|
28
|
-
float[:, ::1] res
|
29
|
-
int i, j, Ny, Nx
|
30
|
-
|
31
|
-
shp = img.shape
|
32
|
-
Ny, Nx = (img.shape[0]//2, img.shape[1]//2)
|
33
|
-
res = np.zeros((Ny, Nx), dtype="f")
|
34
|
-
for i in prange(Ny, nogil=True):
|
35
|
-
for j in range(Nx):
|
36
|
-
res[i, j] = 0.25 * (img[2*i, 2*j] + img[2*i+1, 2*j] + img[2*i, 2*j+1] + img[2*i+1, 2*j+1])
|
37
|
-
return np.asarray(res)
|