nabu 2024.1.5__tar.gz → 2024.1.6__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.5/nabu.egg-info → nabu-2024.1.6}/PKG-INFO +2 -22
- {nabu-2024.1.5 → nabu-2024.1.6}/nabu/__init__.py +1 -1
- {nabu-2024.1.5 → nabu-2024.1.6}/nabu/io/cast_volume.py +34 -11
- {nabu-2024.1.5 → nabu-2024.1.6}/nabu/io/tests/test_cast_volume.py +18 -10
- nabu-2024.1.6/nabu/thirdparty/__init__.py +0 -0
- {nabu-2024.1.5 → nabu-2024.1.6/nabu.egg-info}/PKG-INFO +2 -22
- {nabu-2024.1.5 → nabu-2024.1.6}/nabu.egg-info/SOURCES.txt +2 -33
- {nabu-2024.1.5 → nabu-2024.1.6}/nabu.egg-info/top_level.txt +1 -0
- nabu-2024.1.5/doc/doc_config.py +0 -32
- nabu-2024.1.5/sandbox/align_test.py +0 -61
- nabu-2024.1.5/sandbox/app.py +0 -123
- nabu-2024.1.5/sandbox/binning_cython.py +0 -37
- nabu-2024.1.5/sandbox/circ_sm.py +0 -195
- nabu-2024.1.5/sandbox/composite_image.py +0 -90
- nabu-2024.1.5/sandbox/convert_id15.py +0 -148
- nabu-2024.1.5/sandbox/do_test_ctf.py +0 -40
- nabu-2024.1.5/sandbox/esrf_envs.py +0 -36
- nabu-2024.1.5/sandbox/fbp_polar.py +0 -39
- nabu-2024.1.5/sandbox/fbp_tilt.py +0 -340
- nabu-2024.1.5/sandbox/interleaved.py +0 -129
- nabu-2024.1.5/sandbox/interp_sinos_halftomo.py +0 -31
- nabu-2024.1.5/sandbox/linear_interp.py +0 -14
- nabu-2024.1.5/sandbox/merge_recs.py +0 -56
- nabu-2024.1.5/sandbox/moduleutils.py +0 -50
- nabu-2024.1.5/sandbox/nbreconstruct.py +0 -246
- nabu-2024.1.5/sandbox/pag_margin.py +0 -38
- nabu-2024.1.5/sandbox/parse.py +0 -132
- nabu-2024.1.5/sandbox/plot.py +0 -49
- nabu-2024.1.5/sandbox/proj3D.py +0 -75
- nabu-2024.1.5/sandbox/rec_bm05.py +0 -71
- nabu-2024.1.5/sandbox/rec_thread.py +0 -133
- nabu-2024.1.5/sandbox/shift_bilinear2.py +0 -42
- nabu-2024.1.5/sandbox/sinotilt.py +0 -181
- nabu-2024.1.5/sandbox/sysutils.py +0 -63
- nabu-2024.1.5/sandbox/test_mp_queue.py +0 -73
- nabu-2024.1.5/sandbox/tilt.py +0 -251
- nabu-2024.1.5/sandbox/utils.py +0 -54
- nabu-2024.1.5/sandbox/vo.py +0 -204
- nabu-2024.1.5/sandbox/workers.py +0 -123
- nabu-2024.1.5/sandbox/xrdrec_pyFAI_data.py +0 -212
- {nabu-2024.1.5 → nabu-2024.1.6}/LICENSE +0 -0
- {nabu-2024.1.5 → nabu-2024.1.6}/README.md +0 -0
- {nabu-2024.1.5 → nabu-2024.1.6}/doc/conf.py +0 -0
- {nabu-2024.1.5 → nabu-2024.1.6}/doc/create_conf_doc.py +0 -0
- {nabu-2024.1.5 → nabu-2024.1.6}/doc/get_mathjax.py +0 -0
- {nabu-2024.1.5 → nabu-2024.1.6}/nabu/app/__init__.py +0 -0
- {nabu-2024.1.5 → nabu-2024.1.6}/nabu/app/bootstrap.py +0 -0
- {nabu-2024.1.5 → nabu-2024.1.6}/nabu/app/bootstrap_stitching.py +0 -0
- {nabu-2024.1.5 → nabu-2024.1.6}/nabu/app/cast_volume.py +0 -0
- {nabu-2024.1.5 → nabu-2024.1.6}/nabu/app/cli_configs.py +0 -0
- {nabu-2024.1.5 → nabu-2024.1.6}/nabu/app/compare_volumes.py +0 -0
- {nabu-2024.1.5 → nabu-2024.1.6}/nabu/app/composite_cor.py +0 -0
- {nabu-2024.1.5 → nabu-2024.1.6}/nabu/app/correct_rot.py +0 -0
- {nabu-2024.1.5 → nabu-2024.1.6}/nabu/app/create_distortion_map_from_poly.py +0 -0
- {nabu-2024.1.5 → nabu-2024.1.6}/nabu/app/diag_to_pix.py +0 -0
- {nabu-2024.1.5 → nabu-2024.1.6}/nabu/app/diag_to_rot.py +0 -0
- {nabu-2024.1.5 → nabu-2024.1.6}/nabu/app/double_flatfield.py +0 -0
- {nabu-2024.1.5 → nabu-2024.1.6}/nabu/app/generate_header.py +0 -0
- {nabu-2024.1.5 → nabu-2024.1.6}/nabu/app/histogram.py +0 -0
- {nabu-2024.1.5 → nabu-2024.1.6}/nabu/app/multicor.py +0 -0
- {nabu-2024.1.5 → nabu-2024.1.6}/nabu/app/nx_z_splitter.py +0 -0
- {nabu-2024.1.5 → nabu-2024.1.6}/nabu/app/parse_reconstruction_log.py +0 -0
- {nabu-2024.1.5 → nabu-2024.1.6}/nabu/app/prepare_weights_double.py +0 -0
- {nabu-2024.1.5 → nabu-2024.1.6}/nabu/app/reconstruct.py +0 -0
- {nabu-2024.1.5 → nabu-2024.1.6}/nabu/app/reconstruct_helical.py +0 -0
- {nabu-2024.1.5 → nabu-2024.1.6}/nabu/app/reduce_dark_flat.py +0 -0
- {nabu-2024.1.5 → nabu-2024.1.6}/nabu/app/rotate.py +0 -0
- {nabu-2024.1.5 → nabu-2024.1.6}/nabu/app/shrink_dataset.py +0 -0
- {nabu-2024.1.5 → nabu-2024.1.6}/nabu/app/stitching.py +0 -0
- {nabu-2024.1.5/nabu/cuda → nabu-2024.1.6/nabu/app/tests}/__init__.py +0 -0
- {nabu-2024.1.5 → nabu-2024.1.6}/nabu/app/tests/test_reduce_dark_flat.py +0 -0
- {nabu-2024.1.5 → nabu-2024.1.6}/nabu/app/utils.py +0 -0
- {nabu-2024.1.5 → nabu-2024.1.6}/nabu/app/validator.py +0 -0
- {nabu-2024.1.5/nabu/estimation/tests → nabu-2024.1.6/nabu/cuda}/__init__.py +0 -0
- {nabu-2024.1.5 → nabu-2024.1.6}/nabu/cuda/convolution.py +0 -0
- {nabu-2024.1.5 → nabu-2024.1.6}/nabu/cuda/fft.py +0 -0
- {nabu-2024.1.5 → nabu-2024.1.6}/nabu/cuda/kernel.py +0 -0
- {nabu-2024.1.5 → nabu-2024.1.6}/nabu/cuda/medfilt.py +0 -0
- {nabu-2024.1.5 → nabu-2024.1.6}/nabu/cuda/padding.py +0 -0
- {nabu-2024.1.5 → nabu-2024.1.6}/nabu/cuda/processing.py +0 -0
- {nabu-2024.1.5 → nabu-2024.1.6}/nabu/cuda/src/ElementOp.cu +0 -0
- {nabu-2024.1.5 → nabu-2024.1.6}/nabu/cuda/src/backproj.cu +0 -0
- {nabu-2024.1.5 → nabu-2024.1.6}/nabu/cuda/src/backproj_polar.cu +0 -0
- {nabu-2024.1.5 → nabu-2024.1.6}/nabu/cuda/src/boundary.h +0 -0
- {nabu-2024.1.5 → nabu-2024.1.6}/nabu/cuda/src/convolution.cu +0 -0
- {nabu-2024.1.5 → nabu-2024.1.6}/nabu/cuda/src/dfi_fftshift.cu +0 -0
- {nabu-2024.1.5 → nabu-2024.1.6}/nabu/cuda/src/flatfield.cu +0 -0
- {nabu-2024.1.5 → nabu-2024.1.6}/nabu/cuda/src/fourier_wavelets.cu +0 -0
- {nabu-2024.1.5 → nabu-2024.1.6}/nabu/cuda/src/halftomo.cu +0 -0
- {nabu-2024.1.5 → nabu-2024.1.6}/nabu/cuda/src/helical_padding.cu +0 -0
- {nabu-2024.1.5 → nabu-2024.1.6}/nabu/cuda/src/histogram.cu +0 -0
- {nabu-2024.1.5 → nabu-2024.1.6}/nabu/cuda/src/interpolation.cu +0 -0
- {nabu-2024.1.5 → nabu-2024.1.6}/nabu/cuda/src/medfilt.cu +0 -0
- {nabu-2024.1.5 → nabu-2024.1.6}/nabu/cuda/src/normalization.cu +0 -0
- {nabu-2024.1.5 → nabu-2024.1.6}/nabu/cuda/src/padding.cu +0 -0
- {nabu-2024.1.5 → nabu-2024.1.6}/nabu/cuda/src/proj.cu +0 -0
- {nabu-2024.1.5 → nabu-2024.1.6}/nabu/cuda/src/rotation.cu +0 -0
- {nabu-2024.1.5 → nabu-2024.1.6}/nabu/cuda/src/transpose.cu +0 -0
- {nabu-2024.1.5 → nabu-2024.1.6}/nabu/cuda/tests/__init__.py +0 -0
- {nabu-2024.1.5 → nabu-2024.1.6}/nabu/cuda/utils.py +0 -0
- {nabu-2024.1.5 → nabu-2024.1.6}/nabu/estimation/__init__.py +0 -0
- {nabu-2024.1.5 → nabu-2024.1.6}/nabu/estimation/alignment.py +0 -0
- {nabu-2024.1.5 → nabu-2024.1.6}/nabu/estimation/cor.py +0 -0
- {nabu-2024.1.5 → nabu-2024.1.6}/nabu/estimation/cor_sino.py +0 -0
- {nabu-2024.1.5 → nabu-2024.1.6}/nabu/estimation/distortion.py +0 -0
- {nabu-2024.1.5 → nabu-2024.1.6}/nabu/estimation/focus.py +0 -0
- {nabu-2024.1.5/nabu/io → nabu-2024.1.6/nabu/estimation}/tests/__init__.py +0 -0
- {nabu-2024.1.5 → nabu-2024.1.6}/nabu/estimation/tests/test_alignment.py +0 -0
- {nabu-2024.1.5 → nabu-2024.1.6}/nabu/estimation/tests/test_cor.py +0 -0
- {nabu-2024.1.5 → nabu-2024.1.6}/nabu/estimation/tests/test_focus.py +0 -0
- {nabu-2024.1.5 → nabu-2024.1.6}/nabu/estimation/tests/test_tilt.py +0 -0
- {nabu-2024.1.5 → nabu-2024.1.6}/nabu/estimation/tests/test_translation.py +0 -0
- {nabu-2024.1.5 → nabu-2024.1.6}/nabu/estimation/tilt.py +0 -0
- {nabu-2024.1.5 → nabu-2024.1.6}/nabu/estimation/translation.py +0 -0
- {nabu-2024.1.5 → nabu-2024.1.6}/nabu/estimation/utils.py +0 -0
- {nabu-2024.1.5 → nabu-2024.1.6}/nabu/io/__init__.py +0 -0
- {nabu-2024.1.5 → nabu-2024.1.6}/nabu/io/detector_distortion.py +0 -0
- {nabu-2024.1.5 → nabu-2024.1.6}/nabu/io/reader.py +0 -0
- {nabu-2024.1.5 → nabu-2024.1.6}/nabu/io/reader_helical.py +0 -0
- {nabu-2024.1.5/nabu/misc → nabu-2024.1.6/nabu/io/tests}/__init__.py +0 -0
- {nabu-2024.1.5 → nabu-2024.1.6}/nabu/io/tests/test_detector_distortion.py +0 -0
- {nabu-2024.1.5 → nabu-2024.1.6}/nabu/io/tests/test_writers.py +0 -0
- {nabu-2024.1.5 → nabu-2024.1.6}/nabu/io/tiffwriter_zmm.py +0 -0
- {nabu-2024.1.5 → nabu-2024.1.6}/nabu/io/utils.py +0 -0
- {nabu-2024.1.5 → nabu-2024.1.6}/nabu/io/writer.py +0 -0
- {nabu-2024.1.5/nabu/opencl → nabu-2024.1.6/nabu/misc}/__init__.py +0 -0
- {nabu-2024.1.5 → nabu-2024.1.6}/nabu/misc/binning.py +0 -0
- {nabu-2024.1.5 → nabu-2024.1.6}/nabu/misc/fftshift.py +0 -0
- {nabu-2024.1.5 → nabu-2024.1.6}/nabu/misc/filters.py +0 -0
- {nabu-2024.1.5 → nabu-2024.1.6}/nabu/misc/fourier_filters.py +0 -0
- {nabu-2024.1.5 → nabu-2024.1.6}/nabu/misc/histogram.py +0 -0
- {nabu-2024.1.5 → nabu-2024.1.6}/nabu/misc/histogram_cuda.py +0 -0
- {nabu-2024.1.5 → nabu-2024.1.6}/nabu/misc/kernel_base.py +0 -0
- {nabu-2024.1.5 → nabu-2024.1.6}/nabu/misc/padding.py +0 -0
- {nabu-2024.1.5 → nabu-2024.1.6}/nabu/misc/padding_base.py +0 -0
- {nabu-2024.1.5 → nabu-2024.1.6}/nabu/misc/processing_base.py +0 -0
- {nabu-2024.1.5 → nabu-2024.1.6}/nabu/misc/rotation.py +0 -0
- {nabu-2024.1.5 → nabu-2024.1.6}/nabu/misc/rotation_cuda.py +0 -0
- {nabu-2024.1.5 → nabu-2024.1.6}/nabu/misc/tests/__init__.py +0 -0
- {nabu-2024.1.5 → nabu-2024.1.6}/nabu/misc/tests/test_binning.py +0 -0
- {nabu-2024.1.5 → nabu-2024.1.6}/nabu/misc/tests/test_interpolation.py +0 -0
- {nabu-2024.1.5 → nabu-2024.1.6}/nabu/misc/transpose.py +0 -0
- {nabu-2024.1.5 → nabu-2024.1.6}/nabu/misc/unsharp.py +0 -0
- {nabu-2024.1.5 → nabu-2024.1.6}/nabu/misc/unsharp_cuda.py +0 -0
- {nabu-2024.1.5 → nabu-2024.1.6}/nabu/misc/unsharp_opencl.py +0 -0
- {nabu-2024.1.5 → nabu-2024.1.6}/nabu/misc/utils.py +0 -0
- {nabu-2024.1.5/nabu/opencl/tests → nabu-2024.1.6/nabu/opencl}/__init__.py +0 -0
- {nabu-2024.1.5 → nabu-2024.1.6}/nabu/opencl/fft.py +0 -0
- {nabu-2024.1.5 → nabu-2024.1.6}/nabu/opencl/kernel.py +0 -0
- {nabu-2024.1.5 → nabu-2024.1.6}/nabu/opencl/memcpy.py +0 -0
- {nabu-2024.1.5 → nabu-2024.1.6}/nabu/opencl/padding.py +0 -0
- {nabu-2024.1.5 → nabu-2024.1.6}/nabu/opencl/processing.py +0 -0
- {nabu-2024.1.5 → nabu-2024.1.6}/nabu/opencl/src/ElementOp.cl +0 -0
- {nabu-2024.1.5 → nabu-2024.1.6}/nabu/opencl/src/backproj.cl +0 -0
- {nabu-2024.1.5 → nabu-2024.1.6}/nabu/opencl/src/fftshift.cl +0 -0
- {nabu-2024.1.5 → nabu-2024.1.6}/nabu/opencl/src/halftomo.cl +0 -0
- {nabu-2024.1.5 → nabu-2024.1.6}/nabu/opencl/src/padding.cl +0 -0
- {nabu-2024.1.5 → nabu-2024.1.6}/nabu/opencl/src/roll.cl +0 -0
- {nabu-2024.1.5 → nabu-2024.1.6}/nabu/opencl/src/transpose.cl +0 -0
- {nabu-2024.1.5/nabu/pipeline → nabu-2024.1.6/nabu/opencl/tests}/__init__.py +0 -0
- {nabu-2024.1.5 → nabu-2024.1.6}/nabu/opencl/utils.py +0 -0
- {nabu-2024.1.5/nabu/pipeline/fullfield → nabu-2024.1.6/nabu/pipeline}/__init__.py +0 -0
- {nabu-2024.1.5 → nabu-2024.1.6}/nabu/pipeline/config.py +0 -0
- {nabu-2024.1.5 → nabu-2024.1.6}/nabu/pipeline/config_validators.py +0 -0
- {nabu-2024.1.5 → nabu-2024.1.6}/nabu/pipeline/datadump.py +0 -0
- {nabu-2024.1.5 → nabu-2024.1.6}/nabu/pipeline/dataset_validator.py +0 -0
- {nabu-2024.1.5 → nabu-2024.1.6}/nabu/pipeline/detector_distortion_provider.py +0 -0
- {nabu-2024.1.5 → nabu-2024.1.6}/nabu/pipeline/estimators.py +0 -0
- {nabu-2024.1.5 → nabu-2024.1.6}/nabu/pipeline/fallback_utils.py +0 -0
- {nabu-2024.1.5/nabu/pipeline/helical → nabu-2024.1.6/nabu/pipeline/fullfield}/__init__.py +0 -0
- {nabu-2024.1.5 → nabu-2024.1.6}/nabu/pipeline/fullfield/chunked.py +0 -0
- {nabu-2024.1.5 → nabu-2024.1.6}/nabu/pipeline/fullfield/chunked_cuda.py +0 -0
- {nabu-2024.1.5 → nabu-2024.1.6}/nabu/pipeline/fullfield/computations.py +0 -0
- {nabu-2024.1.5 → nabu-2024.1.6}/nabu/pipeline/fullfield/dataset_validator.py +0 -0
- {nabu-2024.1.5 → nabu-2024.1.6}/nabu/pipeline/fullfield/nabu_config.py +0 -0
- {nabu-2024.1.5 → nabu-2024.1.6}/nabu/pipeline/fullfield/processconfig.py +0 -0
- {nabu-2024.1.5 → nabu-2024.1.6}/nabu/pipeline/fullfield/reconstruction.py +0 -0
- {nabu-2024.1.5/nabu/pipeline/helical/tests → nabu-2024.1.6/nabu/pipeline/helical}/__init__.py +0 -0
- {nabu-2024.1.5 → nabu-2024.1.6}/nabu/pipeline/helical/dataset_validator.py +0 -0
- {nabu-2024.1.5 → nabu-2024.1.6}/nabu/pipeline/helical/fbp.py +0 -0
- {nabu-2024.1.5 → nabu-2024.1.6}/nabu/pipeline/helical/filtering.py +0 -0
- {nabu-2024.1.5 → nabu-2024.1.6}/nabu/pipeline/helical/gridded_accumulator.py +0 -0
- {nabu-2024.1.5 → nabu-2024.1.6}/nabu/pipeline/helical/helical_chunked_regridded.py +0 -0
- {nabu-2024.1.5 → nabu-2024.1.6}/nabu/pipeline/helical/helical_chunked_regridded_cuda.py +0 -0
- {nabu-2024.1.5 → nabu-2024.1.6}/nabu/pipeline/helical/helical_reconstruction.py +0 -0
- {nabu-2024.1.5 → nabu-2024.1.6}/nabu/pipeline/helical/helical_utils.py +0 -0
- {nabu-2024.1.5 → nabu-2024.1.6}/nabu/pipeline/helical/nabu_config.py +0 -0
- {nabu-2024.1.5 → nabu-2024.1.6}/nabu/pipeline/helical/processconfig.py +0 -0
- {nabu-2024.1.5 → nabu-2024.1.6}/nabu/pipeline/helical/span_strategy.py +0 -0
- {nabu-2024.1.5/nabu/pipeline/xrdct → nabu-2024.1.6/nabu/pipeline/helical/tests}/__init__.py +0 -0
- {nabu-2024.1.5 → nabu-2024.1.6}/nabu/pipeline/helical/tests/test_accumulator.py +0 -0
- {nabu-2024.1.5 → nabu-2024.1.6}/nabu/pipeline/helical/tests/test_pipeline_elements_full.py +0 -0
- {nabu-2024.1.5 → nabu-2024.1.6}/nabu/pipeline/helical/tests/test_strategy.py +0 -0
- {nabu-2024.1.5 → nabu-2024.1.6}/nabu/pipeline/helical/utils.py +0 -0
- {nabu-2024.1.5 → nabu-2024.1.6}/nabu/pipeline/helical/weight_balancer.py +0 -0
- {nabu-2024.1.5 → nabu-2024.1.6}/nabu/pipeline/params.py +0 -0
- {nabu-2024.1.5 → nabu-2024.1.6}/nabu/pipeline/processconfig.py +0 -0
- {nabu-2024.1.5 → nabu-2024.1.6}/nabu/pipeline/tests/test_chunk_reader.py +0 -0
- {nabu-2024.1.5 → nabu-2024.1.6}/nabu/pipeline/tests/test_estimators.py +0 -0
- {nabu-2024.1.5 → nabu-2024.1.6}/nabu/pipeline/utils.py +0 -0
- {nabu-2024.1.5 → nabu-2024.1.6}/nabu/pipeline/writer.py +0 -0
- {nabu-2024.1.5/nabu/processing → nabu-2024.1.6/nabu/pipeline/xrdct}/__init__.py +0 -0
- {nabu-2024.1.5 → nabu-2024.1.6}/nabu/preproc/__init__.py +0 -0
- {nabu-2024.1.5 → nabu-2024.1.6}/nabu/preproc/alignment.py +0 -0
- {nabu-2024.1.5 → nabu-2024.1.6}/nabu/preproc/ccd.py +0 -0
- {nabu-2024.1.5 → nabu-2024.1.6}/nabu/preproc/ccd_cuda.py +0 -0
- {nabu-2024.1.5 → nabu-2024.1.6}/nabu/preproc/ctf.py +0 -0
- {nabu-2024.1.5 → nabu-2024.1.6}/nabu/preproc/ctf_cuda.py +0 -0
- {nabu-2024.1.5 → nabu-2024.1.6}/nabu/preproc/distortion.py +0 -0
- {nabu-2024.1.5 → nabu-2024.1.6}/nabu/preproc/double_flatfield.py +0 -0
- {nabu-2024.1.5 → nabu-2024.1.6}/nabu/preproc/double_flatfield_cuda.py +0 -0
- {nabu-2024.1.5 → nabu-2024.1.6}/nabu/preproc/double_flatfield_variable_region.py +0 -0
- {nabu-2024.1.5 → nabu-2024.1.6}/nabu/preproc/flatfield.py +0 -0
- {nabu-2024.1.5 → nabu-2024.1.6}/nabu/preproc/flatfield_cuda.py +0 -0
- {nabu-2024.1.5 → nabu-2024.1.6}/nabu/preproc/flatfield_variable_region.py +0 -0
- {nabu-2024.1.5 → nabu-2024.1.6}/nabu/preproc/phase.py +0 -0
- {nabu-2024.1.5 → nabu-2024.1.6}/nabu/preproc/phase_cuda.py +0 -0
- {nabu-2024.1.5 → nabu-2024.1.6}/nabu/preproc/shift.py +0 -0
- {nabu-2024.1.5 → nabu-2024.1.6}/nabu/preproc/shift_cuda.py +0 -0
- {nabu-2024.1.5 → nabu-2024.1.6}/nabu/preproc/tests/__init__.py +0 -0
- {nabu-2024.1.5 → nabu-2024.1.6}/nabu/preproc/tests/test_ccd_corr.py +0 -0
- {nabu-2024.1.5 → nabu-2024.1.6}/nabu/preproc/tests/test_ctf.py +0 -0
- {nabu-2024.1.5 → nabu-2024.1.6}/nabu/preproc/tests/test_double_flatfield.py +0 -0
- {nabu-2024.1.5 → nabu-2024.1.6}/nabu/preproc/tests/test_flatfield.py +0 -0
- {nabu-2024.1.5 → nabu-2024.1.6}/nabu/preproc/tests/test_paganin.py +0 -0
- {nabu-2024.1.5 → nabu-2024.1.6}/nabu/preproc/tests/test_vshift.py +0 -0
- {nabu-2024.1.5/nabu/processing/tests → nabu-2024.1.6/nabu/processing}/__init__.py +0 -0
- {nabu-2024.1.5 → nabu-2024.1.6}/nabu/processing/convolution_cuda.py +0 -0
- {nabu-2024.1.5 → nabu-2024.1.6}/nabu/processing/fft_base.py +0 -0
- {nabu-2024.1.5 → nabu-2024.1.6}/nabu/processing/fft_cuda.py +0 -0
- {nabu-2024.1.5 → nabu-2024.1.6}/nabu/processing/fft_opencl.py +0 -0
- {nabu-2024.1.5 → nabu-2024.1.6}/nabu/processing/fftshift.py +0 -0
- {nabu-2024.1.5 → nabu-2024.1.6}/nabu/processing/histogram.py +0 -0
- {nabu-2024.1.5 → nabu-2024.1.6}/nabu/processing/histogram_cuda.py +0 -0
- {nabu-2024.1.5 → nabu-2024.1.6}/nabu/processing/kernel_base.py +0 -0
- {nabu-2024.1.5 → nabu-2024.1.6}/nabu/processing/medfilt_cuda.py +0 -0
- {nabu-2024.1.5 → nabu-2024.1.6}/nabu/processing/muladd.py +0 -0
- {nabu-2024.1.5 → nabu-2024.1.6}/nabu/processing/muladd_cuda.py +0 -0
- {nabu-2024.1.5 → nabu-2024.1.6}/nabu/processing/padding_base.py +0 -0
- {nabu-2024.1.5 → nabu-2024.1.6}/nabu/processing/padding_cuda.py +0 -0
- {nabu-2024.1.5 → nabu-2024.1.6}/nabu/processing/padding_opencl.py +0 -0
- {nabu-2024.1.5 → nabu-2024.1.6}/nabu/processing/processing_base.py +0 -0
- {nabu-2024.1.5 → nabu-2024.1.6}/nabu/processing/roll_opencl.py +0 -0
- {nabu-2024.1.5 → nabu-2024.1.6}/nabu/processing/rotation.py +0 -0
- {nabu-2024.1.5 → nabu-2024.1.6}/nabu/processing/rotation_cuda.py +0 -0
- {nabu-2024.1.5/nabu/resources → nabu-2024.1.6/nabu/processing/tests}/__init__.py +0 -0
- {nabu-2024.1.5 → nabu-2024.1.6}/nabu/processing/tests/test_fft.py +0 -0
- {nabu-2024.1.5 → nabu-2024.1.6}/nabu/processing/tests/test_fftshift.py +0 -0
- {nabu-2024.1.5 → nabu-2024.1.6}/nabu/processing/tests/test_histogram.py +0 -0
- {nabu-2024.1.5 → nabu-2024.1.6}/nabu/processing/tests/test_medfilt.py +0 -0
- {nabu-2024.1.5 → nabu-2024.1.6}/nabu/processing/tests/test_muladd.py +0 -0
- {nabu-2024.1.5 → nabu-2024.1.6}/nabu/processing/tests/test_padding.py +0 -0
- {nabu-2024.1.5 → nabu-2024.1.6}/nabu/processing/tests/test_roll.py +0 -0
- {nabu-2024.1.5 → nabu-2024.1.6}/nabu/processing/tests/test_rotation.py +0 -0
- {nabu-2024.1.5 → nabu-2024.1.6}/nabu/processing/tests/test_transpose.py +0 -0
- {nabu-2024.1.5 → nabu-2024.1.6}/nabu/processing/tests/test_unsharp.py +0 -0
- {nabu-2024.1.5 → nabu-2024.1.6}/nabu/processing/transpose.py +0 -0
- {nabu-2024.1.5 → nabu-2024.1.6}/nabu/processing/unsharp.py +0 -0
- {nabu-2024.1.5 → nabu-2024.1.6}/nabu/processing/unsharp_cuda.py +0 -0
- {nabu-2024.1.5 → nabu-2024.1.6}/nabu/processing/unsharp_opencl.py +0 -0
- {nabu-2024.1.5 → nabu-2024.1.6}/nabu/reconstruction/__init__.py +0 -0
- {nabu-2024.1.5 → nabu-2024.1.6}/nabu/reconstruction/cone.py +0 -0
- {nabu-2024.1.5 → nabu-2024.1.6}/nabu/reconstruction/fbp.py +0 -0
- {nabu-2024.1.5 → nabu-2024.1.6}/nabu/reconstruction/fbp_base.py +0 -0
- {nabu-2024.1.5 → nabu-2024.1.6}/nabu/reconstruction/fbp_opencl.py +0 -0
- {nabu-2024.1.5 → nabu-2024.1.6}/nabu/reconstruction/filtering.py +0 -0
- {nabu-2024.1.5 → nabu-2024.1.6}/nabu/reconstruction/filtering_cuda.py +0 -0
- {nabu-2024.1.5 → nabu-2024.1.6}/nabu/reconstruction/filtering_opencl.py +0 -0
- {nabu-2024.1.5 → nabu-2024.1.6}/nabu/reconstruction/projection.py +0 -0
- {nabu-2024.1.5 → nabu-2024.1.6}/nabu/reconstruction/reconstructor.py +0 -0
- {nabu-2024.1.5 → nabu-2024.1.6}/nabu/reconstruction/reconstructor_cuda.py +0 -0
- {nabu-2024.1.5 → nabu-2024.1.6}/nabu/reconstruction/rings.py +0 -0
- {nabu-2024.1.5 → nabu-2024.1.6}/nabu/reconstruction/rings_cuda.py +0 -0
- {nabu-2024.1.5 → nabu-2024.1.6}/nabu/reconstruction/sinogram.py +0 -0
- {nabu-2024.1.5 → nabu-2024.1.6}/nabu/reconstruction/sinogram_cuda.py +0 -0
- {nabu-2024.1.5 → nabu-2024.1.6}/nabu/reconstruction/sinogram_opencl.py +0 -0
- {nabu-2024.1.5 → nabu-2024.1.6}/nabu/reconstruction/tests/__init__.py +0 -0
- {nabu-2024.1.5 → nabu-2024.1.6}/nabu/reconstruction/tests/test_cone.py +0 -0
- {nabu-2024.1.5 → nabu-2024.1.6}/nabu/reconstruction/tests/test_deringer.py +0 -0
- {nabu-2024.1.5 → nabu-2024.1.6}/nabu/reconstruction/tests/test_fbp.py +0 -0
- {nabu-2024.1.5 → nabu-2024.1.6}/nabu/reconstruction/tests/test_filtering.py +0 -0
- {nabu-2024.1.5 → nabu-2024.1.6}/nabu/reconstruction/tests/test_halftomo.py +0 -0
- {nabu-2024.1.5 → nabu-2024.1.6}/nabu/reconstruction/tests/test_projector.py +0 -0
- {nabu-2024.1.5 → nabu-2024.1.6}/nabu/reconstruction/tests/test_reconstructor.py +0 -0
- {nabu-2024.1.5 → nabu-2024.1.6}/nabu/reconstruction/tests/test_sino_normalization.py +0 -0
- {nabu-2024.1.5/nabu/resources/cli → nabu-2024.1.6/nabu/resources}/__init__.py +0 -0
- {nabu-2024.1.5/nabu/resources/templates → nabu-2024.1.6/nabu/resources/cli}/__init__.py +0 -0
- {nabu-2024.1.5 → nabu-2024.1.6}/nabu/resources/cor.py +0 -0
- {nabu-2024.1.5 → nabu-2024.1.6}/nabu/resources/dataset_analyzer.py +0 -0
- {nabu-2024.1.5 → nabu-2024.1.6}/nabu/resources/gpu.py +0 -0
- {nabu-2024.1.5 → nabu-2024.1.6}/nabu/resources/logger.py +0 -0
- {nabu-2024.1.5 → nabu-2024.1.6}/nabu/resources/nxflatfield.py +0 -0
- {nabu-2024.1.5/nabu/resources/tests → nabu-2024.1.6/nabu/resources/templates}/__init__.py +0 -0
- {nabu-2024.1.5 → nabu-2024.1.6}/nabu/resources/templates/bm05_pag.conf +0 -0
- {nabu-2024.1.5 → nabu-2024.1.6}/nabu/resources/templates/id16_ctf.conf +0 -0
- {nabu-2024.1.5 → nabu-2024.1.6}/nabu/resources/templates/id16_holo.conf +0 -0
- {nabu-2024.1.5 → nabu-2024.1.6}/nabu/resources/templates/id19_pag.conf +0 -0
- {nabu-2024.1.5/nabu/stitching → nabu-2024.1.6/nabu/resources/tests}/__init__.py +0 -0
- {nabu-2024.1.5 → nabu-2024.1.6}/nabu/resources/tests/test_nxflatfield.py +0 -0
- {nabu-2024.1.5 → nabu-2024.1.6}/nabu/resources/tests/test_units.py +0 -0
- {nabu-2024.1.5 → nabu-2024.1.6}/nabu/resources/utils.py +0 -0
- {nabu-2024.1.5/nabu/stitching/tests → nabu-2024.1.6/nabu/stitching}/__init__.py +0 -0
- {nabu-2024.1.5 → nabu-2024.1.6}/nabu/stitching/alignment.py +0 -0
- {nabu-2024.1.5 → nabu-2024.1.6}/nabu/stitching/config.py +0 -0
- {nabu-2024.1.5 → nabu-2024.1.6}/nabu/stitching/definitions.py +0 -0
- {nabu-2024.1.5 → nabu-2024.1.6}/nabu/stitching/frame_composition.py +0 -0
- {nabu-2024.1.5 → nabu-2024.1.6}/nabu/stitching/overlap.py +0 -0
- {nabu-2024.1.5 → nabu-2024.1.6}/nabu/stitching/sample_normalization.py +0 -0
- {nabu-2024.1.5 → nabu-2024.1.6}/nabu/stitching/slurm_utils.py +0 -0
- {nabu-2024.1.5/nabu/thirdparty → nabu-2024.1.6/nabu/stitching/tests}/__init__.py +0 -0
- {nabu-2024.1.5 → nabu-2024.1.6}/nabu/stitching/tests/test_alignment.py +0 -0
- {nabu-2024.1.5 → nabu-2024.1.6}/nabu/stitching/tests/test_config.py +0 -0
- {nabu-2024.1.5 → nabu-2024.1.6}/nabu/stitching/tests/test_frame_composition.py +0 -0
- {nabu-2024.1.5 → nabu-2024.1.6}/nabu/stitching/tests/test_overlap.py +0 -0
- {nabu-2024.1.5 → nabu-2024.1.6}/nabu/stitching/tests/test_sample_normalization.py +0 -0
- {nabu-2024.1.5 → nabu-2024.1.6}/nabu/stitching/tests/test_slurm_utils.py +0 -0
- {nabu-2024.1.5 → nabu-2024.1.6}/nabu/stitching/tests/test_utils.py +0 -0
- {nabu-2024.1.5 → nabu-2024.1.6}/nabu/stitching/tests/test_z_stitching.py +0 -0
- {nabu-2024.1.5 → nabu-2024.1.6}/nabu/stitching/utils.py +0 -0
- {nabu-2024.1.5 → nabu-2024.1.6}/nabu/stitching/z_stitching.py +0 -0
- {nabu-2024.1.5 → nabu-2024.1.6}/nabu/tests.py +0 -0
- {nabu-2024.1.5 → nabu-2024.1.6}/nabu/testutils.py +0 -0
- {nabu-2024.1.5 → nabu-2024.1.6}/nabu/thirdparty/algotom_convert_sino.py +0 -0
- {nabu-2024.1.5 → nabu-2024.1.6}/nabu/thirdparty/pore3d_deringer_munch.py +0 -0
- {nabu-2024.1.5 → nabu-2024.1.6}/nabu/thirdparty/tomocupy_remove_stripe.py +0 -0
- {nabu-2024.1.5 → nabu-2024.1.6}/nabu/thirdparty/tomopy_phase.py +0 -0
- {nabu-2024.1.5 → nabu-2024.1.6}/nabu/thirdparty/tomwer_load_flats_darks.py +0 -0
- {nabu-2024.1.5 → nabu-2024.1.6}/nabu/utils.py +0 -0
- {nabu-2024.1.5 → nabu-2024.1.6}/nabu.egg-info/dependency_links.txt +0 -0
- {nabu-2024.1.5 → nabu-2024.1.6}/nabu.egg-info/entry_points.txt +0 -0
- {nabu-2024.1.5 → nabu-2024.1.6}/nabu.egg-info/requires.txt +0 -0
- {nabu-2024.1.5 → nabu-2024.1.6}/pyproject.toml +0 -0
- {nabu-2024.1.5 → nabu-2024.1.6}/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.6
|
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>
|
@@ -48,29 +48,9 @@ Classifier: Topic :: Scientific/Engineering :: Physics
|
|
48
48
|
Classifier: Topic :: Scientific/Engineering :: Medical Science Apps.
|
49
49
|
Requires-Python: >=3.7
|
50
50
|
Description-Content-Type: text/markdown
|
51
|
-
License-File: LICENSE
|
52
|
-
Requires-Dist: numpy>1.9.0
|
53
|
-
Requires-Dist: scipy
|
54
|
-
Requires-Dist: h5py>=3.0
|
55
|
-
Requires-Dist: silx>=0.15.0
|
56
|
-
Requires-Dist: tomoscan>=2.0.4
|
57
|
-
Requires-Dist: psutil
|
58
|
-
Requires-Dist: pytest
|
59
|
-
Requires-Dist: tifffile
|
60
51
|
Provides-Extra: full
|
61
|
-
Requires-Dist: scikit-image; extra == "full"
|
62
|
-
Requires-Dist: PyWavelets; extra == "full"
|
63
|
-
Requires-Dist: glymur; extra == "full"
|
64
|
-
Requires-Dist: pycuda; extra == "full"
|
65
|
-
Requires-Dist: scikit-cuda; extra == "full"
|
66
|
-
Requires-Dist: pycudwt; extra == "full"
|
67
|
-
Requires-Dist: sluurp>=0.3; extra == "full"
|
68
|
-
Requires-Dist: pyvkfft; extra == "full"
|
69
52
|
Provides-Extra: doc
|
70
|
-
|
71
|
-
Requires-Dist: cloud_sptheme; extra == "doc"
|
72
|
-
Requires-Dist: myst-parser; extra == "doc"
|
73
|
-
Requires-Dist: nbsphinx; extra == "doc"
|
53
|
+
License-File: LICENSE
|
74
54
|
|
75
55
|
# Nabu
|
76
56
|
|
@@ -293,25 +293,48 @@ def find_histogram(volume: VolumeBase, scan: Optional[TomoScanBase] = None) -> O
|
|
293
293
|
data_path = volume.data_url.data_path().replace(HDF5Volume.DATA_DATASET_NAME, "histogram/results/data")
|
294
294
|
elif isinstance(volume, (EDFVolume, JP2KVolume, TIFFVolume, MultiTIFFVolume)):
|
295
295
|
if isinstance(volume, (EDFVolume, JP2KVolume, TIFFVolume)):
|
296
|
-
# TODO: check with pierre what is the policy of histogram files names
|
297
296
|
histogram_file = os.path.join(
|
298
297
|
volume.data_url.file_path(),
|
299
|
-
volume.get_volume_basename() + "
|
298
|
+
volume.get_volume_basename() + "_histogram.hdf5",
|
300
299
|
)
|
300
|
+
if not os.path.exists(histogram_file):
|
301
|
+
# legacy location
|
302
|
+
legacy_histogram_file = os.path.join(
|
303
|
+
volume.data_url.file_path(),
|
304
|
+
volume.get_volume_basename() + "histogram.hdf5",
|
305
|
+
)
|
306
|
+
if os.path.exists(legacy_histogram_file):
|
307
|
+
# only overwrite if exists. Else keep the older one to get a clearer information
|
308
|
+
histogram_file = legacy_histogram_file
|
301
309
|
else:
|
302
|
-
# TODO: check with pierre what is the policy of histogram files names
|
303
310
|
file_path, _ = os.path.splitext(volume.data_url.file_path())
|
304
|
-
histogram_file =
|
311
|
+
histogram_file = file_path + "_histogram.hdf5"
|
305
312
|
|
306
313
|
if scan is not None:
|
307
|
-
data_path = getattr(scan, "entry", "entry")
|
314
|
+
data_path = getattr(scan, "entry/histogram/results/data", "entry/histogram/results/data")
|
308
315
|
else:
|
309
|
-
|
310
|
-
|
311
|
-
|
312
|
-
|
313
|
-
|
314
|
-
|
316
|
+
|
317
|
+
def get_file_entries(file_path: str) -> Optional[tuple]:
|
318
|
+
if os.path.exists(file_path):
|
319
|
+
with HDF5File(file_path, mode="r") as h5s:
|
320
|
+
return tuple(h5s.keys())
|
321
|
+
else:
|
322
|
+
return None
|
323
|
+
|
324
|
+
# in the case we only know about the volume to cast.
|
325
|
+
# in most of the cast the histogram.hdf5 file will only get a single entry. The exception could be
|
326
|
+
# for HDF5 if the user save volumes into the same file.
|
327
|
+
# we can find back the histogram
|
328
|
+
entries = get_file_entries(histogram_file)
|
329
|
+
if entries is not None and len(entries) == 1:
|
330
|
+
data_path = "/".join((entries[0], "histogram/results/data"))
|
331
|
+
else:
|
332
|
+
# TODO: FIXME: how to get the entry name in every case ?
|
333
|
+
# what to do if the histogram file has more than one entry.
|
334
|
+
# one option could be to request the entry from the user...
|
335
|
+
# or keep as today (in this case it will be recomputed)
|
336
|
+
_logger.info("histogram file found but unable to find relevant histogram")
|
337
|
+
return None
|
315
338
|
else:
|
316
339
|
raise NotImplementedError(f"volume {type(volume)} not handled")
|
317
340
|
|
@@ -70,9 +70,9 @@ def test_get_default_output_volume():
|
|
70
70
|
)
|
71
71
|
assert isinstance(output_volume, HDF5Volume)
|
72
72
|
assert output_volume.data_url.file_path() == "vol_cast/my_file.hdf5"
|
73
|
-
assert output_volume.data_url.data_path() == HDF5Volume.DATA_DATASET_NAME
|
73
|
+
assert output_volume.data_url.data_path() == "volume/" + HDF5Volume.DATA_DATASET_NAME
|
74
74
|
assert output_volume.metadata_url.file_path() == "vol_cast/my_file.hdf5"
|
75
|
-
assert output_volume.metadata_url.data_path() == HDF5Volume.METADATA_GROUP_NAME
|
75
|
+
assert output_volume.metadata_url.data_path() == "volume/" + HDF5Volume.METADATA_GROUP_NAME
|
76
76
|
|
77
77
|
# test jp2 to hdf5
|
78
78
|
input_volume = JP2KVolume(
|
@@ -119,19 +119,23 @@ def test_find_histogram_single_frame_volume(tmp_path):
|
|
119
119
|
folder=tmp_path,
|
120
120
|
volume_basename="volume",
|
121
121
|
)
|
122
|
-
histogram_file = os.path.join(tmp_path, "
|
122
|
+
histogram_file = os.path.join(tmp_path, "volume_histogram.hdf5")
|
123
123
|
with h5py.File(histogram_file, mode="w") as h5f:
|
124
124
|
h5f.require_group("entry/histogram/results/data")
|
125
125
|
|
126
126
|
# check behavior
|
127
|
-
assert find_histogram(volume=volume) ==
|
127
|
+
assert find_histogram(volume=volume) == DataUrl(
|
128
|
+
file_path=histogram_file,
|
129
|
+
data_path="entry/histogram/results/data",
|
130
|
+
scheme="silx",
|
131
|
+
)
|
128
132
|
|
129
133
|
assert find_histogram(
|
130
134
|
volume=volume,
|
131
135
|
scan=EDFTomoScan(scan=str(tmp_path)),
|
132
136
|
) == DataUrl(
|
133
137
|
file_path=histogram_file,
|
134
|
-
data_path="entry",
|
138
|
+
data_path="entry/histogram/results/data",
|
135
139
|
scheme="silx",
|
136
140
|
)
|
137
141
|
|
@@ -140,7 +144,7 @@ def test_find_histogram_single_frame_volume(tmp_path):
|
|
140
144
|
scan=NXtomoScan(scan=str(tmp_path), entry="entry"),
|
141
145
|
) == DataUrl(
|
142
146
|
file_path=histogram_file,
|
143
|
-
data_path="entry",
|
147
|
+
data_path="entry/histogram/results/data",
|
144
148
|
scheme="silx",
|
145
149
|
)
|
146
150
|
|
@@ -156,19 +160,23 @@ def test_find_histogram_multi_tiff_volume(tmp_path):
|
|
156
160
|
volume = MultiTIFFVolume(
|
157
161
|
file_path=tiff_file,
|
158
162
|
)
|
159
|
-
histogram_file = os.path.join(tmp_path, "
|
163
|
+
histogram_file = os.path.join(tmp_path, "my_tiff_histogram.hdf5")
|
160
164
|
with h5py.File(histogram_file, mode="w") as h5f:
|
161
165
|
h5f.require_group("entry/histogram/results/data")
|
162
166
|
|
163
167
|
# check behavior
|
164
|
-
assert find_histogram(volume=volume) ==
|
168
|
+
assert find_histogram(volume=volume) == DataUrl(
|
169
|
+
file_path=histogram_file,
|
170
|
+
data_path="entry/histogram/results/data",
|
171
|
+
scheme="silx",
|
172
|
+
)
|
165
173
|
|
166
174
|
assert find_histogram(
|
167
175
|
volume=volume,
|
168
176
|
scan=EDFTomoScan(scan=str(tmp_path)),
|
169
177
|
) == DataUrl(
|
170
178
|
file_path=histogram_file,
|
171
|
-
data_path="entry",
|
179
|
+
data_path="entry/histogram/results/data",
|
172
180
|
scheme="silx",
|
173
181
|
)
|
174
182
|
|
@@ -177,7 +185,7 @@ def test_find_histogram_multi_tiff_volume(tmp_path):
|
|
177
185
|
scan=NXtomoScan(scan=str(tmp_path), entry="entry"),
|
178
186
|
) == DataUrl(
|
179
187
|
file_path=histogram_file,
|
180
|
-
data_path="entry",
|
188
|
+
data_path="entry/histogram/results/data",
|
181
189
|
scheme="silx",
|
182
190
|
)
|
183
191
|
|
File without changes
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: nabu
|
3
|
-
Version: 2024.1.
|
3
|
+
Version: 2024.1.6
|
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>
|
@@ -48,29 +48,9 @@ Classifier: Topic :: Scientific/Engineering :: Physics
|
|
48
48
|
Classifier: Topic :: Scientific/Engineering :: Medical Science Apps.
|
49
49
|
Requires-Python: >=3.7
|
50
50
|
Description-Content-Type: text/markdown
|
51
|
-
License-File: LICENSE
|
52
|
-
Requires-Dist: numpy>1.9.0
|
53
|
-
Requires-Dist: scipy
|
54
|
-
Requires-Dist: h5py>=3.0
|
55
|
-
Requires-Dist: silx>=0.15.0
|
56
|
-
Requires-Dist: tomoscan>=2.0.4
|
57
|
-
Requires-Dist: psutil
|
58
|
-
Requires-Dist: pytest
|
59
|
-
Requires-Dist: tifffile
|
60
51
|
Provides-Extra: full
|
61
|
-
Requires-Dist: scikit-image; extra == "full"
|
62
|
-
Requires-Dist: PyWavelets; extra == "full"
|
63
|
-
Requires-Dist: glymur; extra == "full"
|
64
|
-
Requires-Dist: pycuda; extra == "full"
|
65
|
-
Requires-Dist: scikit-cuda; extra == "full"
|
66
|
-
Requires-Dist: pycudwt; extra == "full"
|
67
|
-
Requires-Dist: sluurp>=0.3; extra == "full"
|
68
|
-
Requires-Dist: pyvkfft; extra == "full"
|
69
52
|
Provides-Extra: doc
|
70
|
-
|
71
|
-
Requires-Dist: cloud_sptheme; extra == "doc"
|
72
|
-
Requires-Dist: myst-parser; extra == "doc"
|
73
|
-
Requires-Dist: nbsphinx; extra == "doc"
|
53
|
+
License-File: LICENSE
|
74
54
|
|
75
55
|
# Nabu
|
76
56
|
|
@@ -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
|
@@ -41,6 +40,7 @@ nabu/app/shrink_dataset.py
|
|
41
40
|
nabu/app/stitching.py
|
42
41
|
nabu/app/utils.py
|
43
42
|
nabu/app/validator.py
|
43
|
+
nabu/app/tests/__init__.py
|
44
44
|
nabu/app/tests/test_reduce_dark_flat.py
|
45
45
|
nabu/cuda/__init__.py
|
46
46
|
nabu/cuda/convolution.py
|
@@ -296,35 +296,4 @@ nabu/thirdparty/algotom_convert_sino.py
|
|
296
296
|
nabu/thirdparty/pore3d_deringer_munch.py
|
297
297
|
nabu/thirdparty/tomocupy_remove_stripe.py
|
298
298
|
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
|
299
|
+
nabu/thirdparty/tomwer_load_flats_darks.py
|
nabu-2024.1.5/doc/doc_config.py
DELETED
@@ -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.5/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)
|