nxtomomill 2.1.5__tar.gz → 2.2.0.dev1__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.
- {nxtomomill-2.1.5/nxtomomill.egg-info → nxtomomill-2.2.0.dev1}/PKG-INFO +3 -2
- {nxtomomill-2.1.5 → nxtomomill-2.2.0.dev1}/doc/conf.py +1 -1
- {nxtomomill-2.1.5 → nxtomomill-2.2.0.dev1}/nxtomomill/__init__.py +5 -2
- {nxtomomill-2.1.5 → nxtomomill-2.2.0.dev1}/nxtomomill/__main__.py +2 -2
- {nxtomomill-2.1.5 → nxtomomill-2.2.0.dev1}/nxtomomill/app/patch_nx.py +1 -1
- {nxtomomill-2.1.5 → nxtomomill-2.2.0.dev1}/nxtomomill/app/split_nxfile.py +1 -1
- {nxtomomill-2.1.5 → nxtomomill-2.2.0.dev1}/nxtomomill/app/tests/test_edf2nx_app.py +1 -1
- {nxtomomill-2.1.5 → nxtomomill-2.2.0.dev1}/nxtomomill/app/tests/test_patch_nx_app.py +1 -1
- {nxtomomill-2.1.5 → nxtomomill-2.2.0.dev1}/nxtomomill/app/tests/test_split_nxfile_app.py +2 -2
- {nxtomomill-2.1.5 → nxtomomill-2.2.0.dev1}/nxtomomill/app/z_concatenate_scans.py +4 -4
- {nxtomomill-2.1.5 → nxtomomill-2.2.0.dev1}/nxtomomill/converter/dxfile/dxfileconverter.py +1 -1
- {nxtomomill-2.1.5 → nxtomomill-2.2.0.dev1}/nxtomomill/converter/dxfile/tests/test_dxfile.py +1 -1
- {nxtomomill-2.1.5 → nxtomomill-2.2.0.dev1}/nxtomomill/converter/edf/checks.py +1 -1
- {nxtomomill-2.1.5 → nxtomomill-2.2.0.dev1}/nxtomomill/converter/edf/edfconverter.py +4 -4
- {nxtomomill-2.1.5 → nxtomomill-2.2.0.dev1}/nxtomomill/converter/edf/tests/test_checks.py +2 -2
- {nxtomomill-2.1.5 → nxtomomill-2.2.0.dev1}/nxtomomill/converter/edf/tests/test_edf2nx.py +6 -6
- {nxtomomill-2.1.5 → nxtomomill-2.2.0.dev1}/nxtomomill/converter/edf/tests/test_edf2nx_check.py +2 -2
- {nxtomomill-2.1.5 → nxtomomill-2.2.0.dev1}/nxtomomill/converter/fluo/fluoscan.py +3 -3
- {nxtomomill-2.1.5 → nxtomomill-2.2.0.dev1}/nxtomomill/converter/fscan/fscanconverter.py +2 -2
- {nxtomomill-2.1.5 → nxtomomill-2.2.0.dev1}/nxtomomill/converter/hdf5/acquisition/tests/test_acquisition.py +3 -2
- {nxtomomill-2.1.5 → nxtomomill-2.2.0.dev1}/nxtomomill/converter/hdf5/acquisition/tests/test_acquisition_utils.py +1 -1
- {nxtomomill-2.1.5 → nxtomomill-2.2.0.dev1}/nxtomomill/converter/hdf5/acquisition/tests/test_back_and_forth.py +2 -1
- {nxtomomill-2.1.5 → nxtomomill-2.2.0.dev1}/nxtomomill/converter/hdf5/acquisition/tests/test_bliss_tomo_config.py +3 -2
- {nxtomomill-2.1.5 → nxtomomill-2.2.0.dev1}/nxtomomill/converter/hdf5/acquisition/tests/test_holotomo.py +2 -1
- {nxtomomill-2.1.5 → nxtomomill-2.2.0.dev1}/nxtomomill/converter/hdf5/acquisition/tests/test_legacy.py +4 -2
- {nxtomomill-2.1.5 → nxtomomill-2.2.0.dev1}/nxtomomill/converter/hdf5/acquisition/tests/test_multitomo_zseries.py +2 -1
- {nxtomomill-2.1.5 → nxtomomill-2.2.0.dev1}/nxtomomill/converter/hdf5/acquisition/tests/test_multitomoacquisition.py +4 -4
- {nxtomomill-2.1.5 → nxtomomill-2.2.0.dev1}/nxtomomill/converter/hdf5/hdf5converter.py +2 -2
- {nxtomomill-2.1.5 → nxtomomill-2.2.0.dev1}/nxtomomill/converter/hdf5/post_processing/dark_flat_copy.py +1 -1
- {nxtomomill-2.1.5 → nxtomomill-2.2.0.dev1}/nxtomomill/converter/hdf5/tests/test_frame_flip.py +4 -0
- {nxtomomill-2.1.5 → nxtomomill-2.2.0.dev1}/nxtomomill/converter/hdf5/tests/test_h52nx_utils.py +5 -5
- {nxtomomill-2.1.5 → nxtomomill-2.2.0.dev1}/nxtomomill/converter/hdf5/tests/test_hdf5converter.py +17 -22
- {nxtomomill-2.1.5 → nxtomomill-2.2.0.dev1}/nxtomomill/models/h52nx/FrameGroup.py +1 -1
- {nxtomomill-2.1.5 → nxtomomill-2.2.0.dev1}/nxtomomill/models/utils.py +1 -1
- nxtomomill-2.2.0.dev1/nxtomomill/tests/test_version.py +7 -0
- {nxtomomill-2.1.5 → nxtomomill-2.2.0.dev1}/nxtomomill/tests/utils/bliss.py +1 -1
- {nxtomomill-2.1.5 → nxtomomill-2.2.0.dev1}/nxtomomill/tests/utils/dxfile.py +1 -1
- {nxtomomill-2.1.5 → nxtomomill-2.2.0.dev1}/nxtomomill/utils/_os.py +1 -1
- {nxtomomill-2.1.5 → nxtomomill-2.2.0.dev1}/nxtomomill/utils/flat_reducer.py +2 -2
- {nxtomomill-2.1.5 → nxtomomill-2.2.0.dev1}/nxtomomill/utils/nexus.py +1 -1
- {nxtomomill-2.1.5 → nxtomomill-2.2.0.dev1}/nxtomomill/utils/tests/test_flat_reducer.py +2 -2
- {nxtomomill-2.1.5 → nxtomomill-2.2.0.dev1}/nxtomomill/utils/tests/test_utils.py +22 -24
- {nxtomomill-2.1.5 → nxtomomill-2.2.0.dev1}/nxtomomill/utils/utils.py +1 -2
- {nxtomomill-2.1.5 → nxtomomill-2.2.0.dev1/nxtomomill.egg-info}/PKG-INFO +3 -2
- {nxtomomill-2.1.5 → nxtomomill-2.2.0.dev1}/nxtomomill.egg-info/SOURCES.txt +0 -1
- {nxtomomill-2.1.5 → nxtomomill-2.2.0.dev1}/nxtomomill.egg-info/requires.txt +2 -1
- {nxtomomill-2.1.5 → nxtomomill-2.2.0.dev1}/pyproject.toml +3 -5
- nxtomomill-2.1.5/nxtomomill/tests/test_version.py +0 -7
- nxtomomill-2.1.5/nxtomomill/version.py +0 -109
- {nxtomomill-2.1.5 → nxtomomill-2.2.0.dev1}/LICENSE +0 -0
- {nxtomomill-2.1.5 → nxtomomill-2.2.0.dev1}/README.md +0 -0
- {nxtomomill-2.1.5 → nxtomomill-2.2.0.dev1}/nxtomomill/app/__init__.py +0 -0
- {nxtomomill-2.1.5 → nxtomomill-2.2.0.dev1}/nxtomomill/app/blissfluo2nx.py +0 -0
- {nxtomomill-2.1.5 → nxtomomill-2.2.0.dev1}/nxtomomill/app/blissfluoconfig.py +0 -0
- {nxtomomill-2.1.5 → nxtomomill-2.2.0.dev1}/nxtomomill/app/dxfile2nx.py +0 -0
- {nxtomomill-2.1.5 → nxtomomill-2.2.0.dev1}/nxtomomill/app/edf2nx.py +0 -0
- {nxtomomill-2.1.5 → nxtomomill-2.2.0.dev1}/nxtomomill/app/edf2nx_check.py +0 -0
- {nxtomomill-2.1.5 → nxtomomill-2.2.0.dev1}/nxtomomill/app/edfconfig.py +0 -0
- {nxtomomill-2.1.5 → nxtomomill-2.2.0.dev1}/nxtomomill/app/fluo2nx.py +0 -0
- {nxtomomill-2.1.5 → nxtomomill-2.2.0.dev1}/nxtomomill/app/fluoconfig.py +0 -0
- {nxtomomill-2.1.5 → nxtomomill-2.2.0.dev1}/nxtomomill/app/fscan2nx.py +0 -0
- {nxtomomill-2.1.5 → nxtomomill-2.2.0.dev1}/nxtomomill/app/h52nx.py +0 -0
- {nxtomomill-2.1.5 → nxtomomill-2.2.0.dev1}/nxtomomill/app/h5config.py +0 -0
- {nxtomomill-2.1.5 → nxtomomill-2.2.0.dev1}/nxtomomill/app/nxcopy.py +0 -0
- {nxtomomill-2.1.5 → nxtomomill-2.2.0.dev1}/nxtomomill/app/tests/test_bliss_fluo2nx_app.py +0 -0
- {nxtomomill-2.1.5 → nxtomomill-2.2.0.dev1}/nxtomomill/app/tests/test_dxfile2nx_app.py +0 -0
- {nxtomomill-2.1.5 → nxtomomill-2.2.0.dev1}/nxtomomill/app/tests/test_edf_config_app.py +0 -0
- {nxtomomill-2.1.5 → nxtomomill-2.2.0.dev1}/nxtomomill/app/tests/test_fluo2nx_app.py +0 -0
- {nxtomomill-2.1.5 → nxtomomill-2.2.0.dev1}/nxtomomill/app/tests/test_h52nx_app.py +0 -0
- {nxtomomill-2.1.5 → nxtomomill-2.2.0.dev1}/nxtomomill/app/tests/test_h5_config_app.py +0 -0
- {nxtomomill-2.1.5 → nxtomomill-2.2.0.dev1}/nxtomomill/app/tests/test_nx_copy.py +0 -0
- {nxtomomill-2.1.5 → nxtomomill-2.2.0.dev1}/nxtomomill/app/zstages2nxs.py +0 -0
- {nxtomomill-2.1.5 → nxtomomill-2.2.0.dev1}/nxtomomill/converter/__init__.py +0 -0
- {nxtomomill-2.1.5 → nxtomomill-2.2.0.dev1}/nxtomomill/converter/baseconverter.py +0 -0
- {nxtomomill-2.1.5 → nxtomomill-2.2.0.dev1}/nxtomomill/converter/dxfile/__init__.py +0 -0
- {nxtomomill-2.1.5 → nxtomomill-2.2.0.dev1}/nxtomomill/converter/edf/__init__.py +0 -0
- {nxtomomill-2.1.5 → nxtomomill-2.2.0.dev1}/nxtomomill/converter/fluo/__init__.py +0 -0
- {nxtomomill-2.1.5 → nxtomomill-2.2.0.dev1}/nxtomomill/converter/fluo/blissfluoscan.py +0 -0
- {nxtomomill-2.1.5 → nxtomomill-2.2.0.dev1}/nxtomomill/converter/fluo/fluoconverter.py +0 -0
- {nxtomomill-2.1.5 → nxtomomill-2.2.0.dev1}/nxtomomill/converter/fluo/tests/__init__.py +0 -0
- {nxtomomill-2.1.5 → nxtomomill-2.2.0.dev1}/nxtomomill/converter/fluo/tests/test_fluoscan2D.py +0 -0
- {nxtomomill-2.1.5 → nxtomomill-2.2.0.dev1}/nxtomomill/converter/fluo/tests/test_fluoscan3D.py +0 -0
- {nxtomomill-2.1.5 → nxtomomill-2.2.0.dev1}/nxtomomill/converter/fscan/__init__.py +0 -0
- {nxtomomill-2.1.5 → nxtomomill-2.2.0.dev1}/nxtomomill/converter/hdf5/__init__.py +0 -0
- {nxtomomill-2.1.5 → nxtomomill-2.2.0.dev1}/nxtomomill/converter/hdf5/acquisition/__init__.py +0 -0
- {nxtomomill-2.1.5 → nxtomomill-2.2.0.dev1}/nxtomomill/converter/hdf5/acquisition/_bliss_activeconfig.py +0 -0
- {nxtomomill-2.1.5 → nxtomomill-2.2.0.dev1}/nxtomomill/converter/hdf5/acquisition/backandforth.py +0 -0
- {nxtomomill-2.1.5 → nxtomomill-2.2.0.dev1}/nxtomomill/converter/hdf5/acquisition/baseacquisition.py +0 -0
- {nxtomomill-2.1.5 → nxtomomill-2.2.0.dev1}/nxtomomill/converter/hdf5/acquisition/blisstomoconfig.py +0 -0
- {nxtomomill-2.1.5 → nxtomomill-2.2.0.dev1}/nxtomomill/converter/hdf5/acquisition/multitomo.py +0 -0
- {nxtomomill-2.1.5 → nxtomomill-2.2.0.dev1}/nxtomomill/converter/hdf5/acquisition/pcotomoacquisition.py +0 -0
- {nxtomomill-2.1.5 → nxtomomill-2.2.0.dev1}/nxtomomill/converter/hdf5/acquisition/standardacquisition.py +0 -0
- {nxtomomill-2.1.5 → nxtomomill-2.2.0.dev1}/nxtomomill/converter/hdf5/acquisition/tests/bliss_tomo_datasets.py +0 -0
- {nxtomomill-2.1.5 → nxtomomill-2.2.0.dev1}/nxtomomill/converter/hdf5/acquisition/utils/__init__.py +0 -0
- {nxtomomill-2.1.5 → nxtomomill-2.2.0.dev1}/nxtomomill/converter/hdf5/acquisition/utils/_context.py +0 -0
- {nxtomomill-2.1.5 → nxtomomill-2.2.0.dev1}/nxtomomill/converter/hdf5/acquisition/utils/_keys.py +0 -0
- {nxtomomill-2.1.5 → nxtomomill-2.2.0.dev1}/nxtomomill/converter/hdf5/acquisition/utils/_scan_type_finder.py +0 -0
- {nxtomomill-2.1.5 → nxtomomill-2.2.0.dev1}/nxtomomill/converter/hdf5/acquisition/utils/bliss_scan_type.py +0 -0
- {nxtomomill-2.1.5 → nxtomomill-2.2.0.dev1}/nxtomomill/converter/hdf5/acquisition/utils/detector.py +0 -0
- {nxtomomill-2.1.5 → nxtomomill-2.2.0.dev1}/nxtomomill/converter/hdf5/acquisition/utils/machine_current.py +0 -0
- {nxtomomill-2.1.5 → nxtomomill-2.2.0.dev1}/nxtomomill/converter/hdf5/acquisition/utils/series.py +0 -0
- {nxtomomill-2.1.5 → nxtomomill-2.2.0.dev1}/nxtomomill/converter/hdf5/acquisition/utils/timestamps.py +0 -0
- {nxtomomill-2.1.5 → nxtomomill-2.2.0.dev1}/nxtomomill/converter/hdf5/acquisition/zseriesacquisition.py +0 -0
- {nxtomomill-2.1.5 → nxtomomill-2.2.0.dev1}/nxtomomill/converter/hdf5/acquisitionConstructor.py +0 -0
- {nxtomomill-2.1.5 → nxtomomill-2.2.0.dev1}/nxtomomill/converter/hdf5/post_processing/__init__.py +0 -0
- {nxtomomill-2.1.5 → nxtomomill-2.2.0.dev1}/nxtomomill/converter/hdf5/utils.py +0 -0
- {nxtomomill-2.1.5 → nxtomomill-2.2.0.dev1}/nxtomomill/converter/version.py +0 -0
- {nxtomomill-2.1.5 → nxtomomill-2.2.0.dev1}/nxtomomill/io/__init__.py +0 -0
- {nxtomomill-2.1.5 → nxtomomill-2.2.0.dev1}/nxtomomill/io/config/__init__.py +0 -0
- {nxtomomill-2.1.5 → nxtomomill-2.2.0.dev1}/nxtomomill/io/config/configbase.py +0 -0
- {nxtomomill-2.1.5 → nxtomomill-2.2.0.dev1}/nxtomomill/io/config/confighandler.py +0 -0
- {nxtomomill-2.1.5 → nxtomomill-2.2.0.dev1}/nxtomomill/io/config/dxconfig.py +0 -0
- {nxtomomill-2.1.5 → nxtomomill-2.2.0.dev1}/nxtomomill/io/config/edfconfig.py +0 -0
- {nxtomomill-2.1.5 → nxtomomill-2.2.0.dev1}/nxtomomill/io/config/fluoconfig.py +0 -0
- {nxtomomill-2.1.5 → nxtomomill-2.2.0.dev1}/nxtomomill/io/config/hdf5config.py +0 -0
- {nxtomomill-2.1.5 → nxtomomill-2.2.0.dev1}/nxtomomill/io/config/tests/__init__.py +0 -0
- {nxtomomill-2.1.5 → nxtomomill-2.2.0.dev1}/nxtomomill/io/config/tests/test_confighandler.py +0 -0
- {nxtomomill-2.1.5 → nxtomomill-2.2.0.dev1}/nxtomomill/io/tests/test_frame_group.py +0 -0
- {nxtomomill-2.1.5 → nxtomomill-2.2.0.dev1}/nxtomomill/io/tests/utils.py +0 -0
- {nxtomomill-2.1.5 → nxtomomill-2.2.0.dev1}/nxtomomill/models/__init__.py +0 -0
- {nxtomomill-2.1.5 → nxtomomill-2.2.0.dev1}/nxtomomill/models/base/ConfigBase.py +0 -0
- {nxtomomill-2.1.5 → nxtomomill-2.2.0.dev1}/nxtomomill/models/base/FrmFlatToNestedBase.py +0 -0
- {nxtomomill-2.1.5 → nxtomomill-2.2.0.dev1}/nxtomomill/models/base/NestedModelBase.py +0 -0
- {nxtomomill-2.1.5 → nxtomomill-2.2.0.dev1}/nxtomomill/models/base/__init__.py +0 -0
- {nxtomomill-2.1.5 → nxtomomill-2.2.0.dev1}/nxtomomill/models/base/general_section.py +0 -0
- {nxtomomill-2.1.5 → nxtomomill-2.2.0.dev1}/nxtomomill/models/base/instrument_section.py +0 -0
- {nxtomomill-2.1.5 → nxtomomill-2.2.0.dev1}/nxtomomill/models/base/source_section.py +0 -0
- {nxtomomill-2.1.5 → nxtomomill-2.2.0.dev1}/nxtomomill/models/blissfluo2nx/__init__.py +0 -0
- {nxtomomill-2.1.5 → nxtomomill-2.2.0.dev1}/nxtomomill/models/blissfluo2nx/blissfluo2nx.py +0 -0
- {nxtomomill-2.1.5 → nxtomomill-2.2.0.dev1}/nxtomomill/models/blissfluo2nx/general_section.py +0 -0
- {nxtomomill-2.1.5 → nxtomomill-2.2.0.dev1}/nxtomomill/models/dx2nx.py +0 -0
- {nxtomomill-2.1.5 → nxtomomill-2.2.0.dev1}/nxtomomill/models/edf2nx/__init__.py +0 -0
- {nxtomomill-2.1.5 → nxtomomill-2.2.0.dev1}/nxtomomill/models/edf2nx/dark_and_flat_section.py +0 -0
- {nxtomomill-2.1.5 → nxtomomill-2.2.0.dev1}/nxtomomill/models/edf2nx/detector_section.py +0 -0
- {nxtomomill-2.1.5 → nxtomomill-2.2.0.dev1}/nxtomomill/models/edf2nx/edf2nx.py +0 -0
- {nxtomomill-2.1.5 → nxtomomill-2.2.0.dev1}/nxtomomill/models/edf2nx/general_section.py +0 -0
- {nxtomomill-2.1.5 → nxtomomill-2.2.0.dev1}/nxtomomill/models/edf2nx/keys_section.py +0 -0
- {nxtomomill-2.1.5 → nxtomomill-2.2.0.dev1}/nxtomomill/models/edf2nx/sample_section.py +0 -0
- {nxtomomill-2.1.5 → nxtomomill-2.2.0.dev1}/nxtomomill/models/edf2nx/unit_section.py +0 -0
- {nxtomomill-2.1.5 → nxtomomill-2.2.0.dev1}/nxtomomill/models/fluo2nx/__init__.py +0 -0
- {nxtomomill-2.1.5 → nxtomomill-2.2.0.dev1}/nxtomomill/models/fluo2nx/fluo2nx.py +0 -0
- {nxtomomill-2.1.5 → nxtomomill-2.2.0.dev1}/nxtomomill/models/fluo2nx/general_section.py +0 -0
- {nxtomomill-2.1.5 → nxtomomill-2.2.0.dev1}/nxtomomill/models/h52nx/__init__.py +0 -0
- {nxtomomill-2.1.5 → nxtomomill-2.2.0.dev1}/nxtomomill/models/h52nx/_acquisitionstep.py +0 -0
- {nxtomomill-2.1.5 → nxtomomill-2.2.0.dev1}/nxtomomill/models/h52nx/_context.py +0 -0
- {nxtomomill-2.1.5 → nxtomomill-2.2.0.dev1}/nxtomomill/models/h52nx/entries_and_title_section.py +0 -0
- {nxtomomill-2.1.5 → nxtomomill-2.2.0.dev1}/nxtomomill/models/h52nx/extra_params_section.py +0 -0
- {nxtomomill-2.1.5 → nxtomomill-2.2.0.dev1}/nxtomomill/models/h52nx/frame_type_section.py +0 -0
- {nxtomomill-2.1.5 → nxtomomill-2.2.0.dev1}/nxtomomill/models/h52nx/general_section.py +0 -0
- {nxtomomill-2.1.5 → nxtomomill-2.2.0.dev1}/nxtomomill/models/h52nx/h52nx.py +0 -0
- {nxtomomill-2.1.5 → nxtomomill-2.2.0.dev1}/nxtomomill/models/h52nx/keys_section.py +0 -0
- {nxtomomill-2.1.5 → nxtomomill-2.2.0.dev1}/nxtomomill/models/h52nx/multitomo_section.py +0 -0
- {nxtomomill-2.1.5 → nxtomomill-2.2.0.dev1}/nxtomomill/models/tests/test_context.py +0 -0
- {nxtomomill-2.1.5 → nxtomomill-2.2.0.dev1}/nxtomomill/models/tests/test_edf2nx_model.py +0 -0
- {nxtomomill-2.1.5 → nxtomomill-2.2.0.dev1}/nxtomomill/models/tests/test_fluo2nx_model.py +0 -0
- {nxtomomill-2.1.5 → nxtomomill-2.2.0.dev1}/nxtomomill/models/tests/test_h52nx_model.py +0 -0
- {nxtomomill-2.1.5 → nxtomomill-2.2.0.dev1}/nxtomomill/models/tests/test_io_utils.py +0 -0
- {nxtomomill-2.1.5 → nxtomomill-2.2.0.dev1}/nxtomomill/settings.py +0 -0
- {nxtomomill-2.1.5 → nxtomomill-2.2.0.dev1}/nxtomomill/test.py +0 -0
- {nxtomomill-2.1.5 → nxtomomill-2.2.0.dev1}/nxtomomill/tests/__init__.py +0 -0
- {nxtomomill-2.1.5 → nxtomomill-2.2.0.dev1}/nxtomomill/tests/datasets.py +0 -0
- {nxtomomill-2.1.5 → nxtomomill-2.2.0.dev1}/nxtomomill/tests/resources/__init__.py +0 -0
- {nxtomomill-2.1.5 → nxtomomill-2.2.0.dev1}/nxtomomill/tests/resources/edf2nx_config_files/__init__.py +0 -0
- {nxtomomill-2.1.5 → nxtomomill-2.2.0.dev1}/nxtomomill/tests/resources/fluo2nx_config_files/__init__.py +0 -0
- {nxtomomill-2.1.5 → nxtomomill-2.2.0.dev1}/nxtomomill/tests/resources/h52nx_config_files/__init__.py +0 -0
- {nxtomomill-2.1.5 → nxtomomill-2.2.0.dev1}/nxtomomill/tests/utils/__init__.py +0 -0
- {nxtomomill-2.1.5 → nxtomomill-2.2.0.dev1}/nxtomomill/utils/__init__.py +0 -0
- {nxtomomill-2.1.5 → nxtomomill-2.2.0.dev1}/nxtomomill/utils/h5pyutils.py +0 -0
- {nxtomomill-2.1.5 → nxtomomill-2.2.0.dev1}/nxtomomill/utils/hdf5.py +0 -0
- {nxtomomill-2.1.5 → nxtomomill-2.2.0.dev1}/nxtomomill/utils/io.py +0 -0
- {nxtomomill-2.1.5 → nxtomomill-2.2.0.dev1}/nxtomomill/utils/pintutils.py +0 -0
- {nxtomomill-2.1.5 → nxtomomill-2.2.0.dev1}/nxtomomill/utils/tests/test_h5pyutils.py +0 -0
- {nxtomomill-2.1.5 → nxtomomill-2.2.0.dev1}/nxtomomill/utils/tests/test_nexus_utils.py +0 -0
- {nxtomomill-2.1.5 → nxtomomill-2.2.0.dev1}/nxtomomill.egg-info/dependency_links.txt +0 -0
- {nxtomomill-2.1.5 → nxtomomill-2.2.0.dev1}/nxtomomill.egg-info/entry_points.txt +0 -0
- {nxtomomill-2.1.5 → nxtomomill-2.2.0.dev1}/nxtomomill.egg-info/top_level.txt +0 -0
- {nxtomomill-2.1.5 → nxtomomill-2.2.0.dev1}/setup.cfg +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: nxtomomill
|
|
3
|
-
Version: 2.
|
|
3
|
+
Version: 2.2.0.dev1
|
|
4
4
|
Summary: applications and library to convert raw format to NXtomo format
|
|
5
5
|
Author-email: Henri Payno <henri.payno@esrf.fr>, Pierre Paleo <pierre.paleo@esrf.fr>, Pierre-Olivier Autran <pierre-olivier.autran@esrf.fr>, Jérôme Lesaint <jerome.lesaint@esrf.fr>, Alessandro Mirone <mirone@esrf.fr>
|
|
6
6
|
License:
|
|
@@ -58,7 +58,8 @@ Requires-Dist: silx>=2.0
|
|
|
58
58
|
Requires-Dist: nxtomo>=3.1.0dev1
|
|
59
59
|
Requires-Dist: pint
|
|
60
60
|
Requires-Dist: packaging
|
|
61
|
-
Requires-Dist: tomoscan
|
|
61
|
+
Requires-Dist: tomoscan>=3.0.0dev0
|
|
62
|
+
Requires-Dist: tomobase>=0.0.0dev0
|
|
62
63
|
Requires-Dist: tqdm
|
|
63
64
|
Requires-Dist: pydantic
|
|
64
65
|
Requires-Dist: eval_type_backport; python_version < "3.10"
|
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
from importlib.metadata import version as get_version
|
|
10
10
|
|
|
11
11
|
project = "nxtomomill"
|
|
12
|
-
copyright = "2020-
|
|
12
|
+
copyright = "2020-2026, ESRF"
|
|
13
13
|
author = "P.-O. Autran, J. Lesaint, A. Mirone, C. Nemoz, P. Paleo, H. Payno, A. Sole, N. Vigano"
|
|
14
14
|
|
|
15
15
|
release = get_version("nxtomomill")
|
|
@@ -4,9 +4,12 @@ import atexit
|
|
|
4
4
|
|
|
5
5
|
import logging
|
|
6
6
|
|
|
7
|
-
from .
|
|
7
|
+
from importlib.metadata import version as _get_version, PackageNotFoundError
|
|
8
8
|
|
|
9
|
-
|
|
9
|
+
try:
|
|
10
|
+
__version__ = _get_version("nxtomomill")
|
|
11
|
+
except PackageNotFoundError:
|
|
12
|
+
__version__ = "unknown"
|
|
10
13
|
|
|
11
14
|
_logger = logging.getLogger(__name__)
|
|
12
15
|
|
|
@@ -12,7 +12,7 @@ from collections import namedtuple
|
|
|
12
12
|
|
|
13
13
|
from silx.utils.launcher import Launcher as _Launcher
|
|
14
14
|
|
|
15
|
-
import nxtomomill
|
|
15
|
+
import nxtomomill
|
|
16
16
|
from nxtomomill.utils.io import deprecated_warning
|
|
17
17
|
|
|
18
18
|
logging.basicConfig()
|
|
@@ -118,7 +118,7 @@ def main():
|
|
|
118
118
|
|
|
119
119
|
:returns: The execution status
|
|
120
120
|
"""
|
|
121
|
-
_version = nxtomomill.
|
|
121
|
+
_version = nxtomomill.__version__
|
|
122
122
|
launcher = Launcher(prog="nxtomomill", version=_version)
|
|
123
123
|
launcher.add_command(
|
|
124
124
|
"nx-copy",
|
|
@@ -13,7 +13,7 @@ import os
|
|
|
13
13
|
|
|
14
14
|
from silx.io.url import DataUrl
|
|
15
15
|
from silx.utils.enum import Enum as _Enum
|
|
16
|
-
from tomoscan.
|
|
16
|
+
from tomoscan.scans.nxtomoscan import NXtomoScan
|
|
17
17
|
|
|
18
18
|
from nxtomomill import utils
|
|
19
19
|
from nxtomo.nxobject.nxdetector import ImageKey
|
|
@@ -11,7 +11,7 @@ import logging
|
|
|
11
11
|
import string
|
|
12
12
|
|
|
13
13
|
from nxtomo.application.nxtomo import NXtomo
|
|
14
|
-
from tomoscan.
|
|
14
|
+
from tomoscan.scans.nxtomoscan import NXtomoScan
|
|
15
15
|
from silx.io.utils import open as open_hdf5
|
|
16
16
|
from nxtomomill.utils._os import abspath
|
|
17
17
|
|
|
@@ -2,7 +2,8 @@ import os
|
|
|
2
2
|
import numpy
|
|
3
3
|
import pytest
|
|
4
4
|
import pint
|
|
5
|
-
from
|
|
5
|
+
from h5py import File as HDF5File
|
|
6
|
+
|
|
6
7
|
from nxtomo.application.nxtomo import NXtomo
|
|
7
8
|
from nxtomomill.app.split_nxfile import split
|
|
8
9
|
|
|
@@ -73,7 +74,6 @@ def test_split_nxfile(tmp_path, duplicate_data):
|
|
|
73
74
|
with HDF5File(
|
|
74
75
|
tmp_path / "test_split_nx_file/output_dir_2/entry0002.nx",
|
|
75
76
|
mode="r",
|
|
76
|
-
swmr=get_swmr_mode(),
|
|
77
77
|
) as h5f:
|
|
78
78
|
assert "entry0002" in h5f.keys()
|
|
79
79
|
assert "entry0000" not in h5f.keys()
|
|
@@ -9,10 +9,10 @@ import json
|
|
|
9
9
|
import pint
|
|
10
10
|
|
|
11
11
|
import numpy as np
|
|
12
|
+
from h5py import File as HDF5File
|
|
12
13
|
from silx.io.url import DataUrl
|
|
13
|
-
from tomoscan.
|
|
14
|
-
from tomoscan.scanbase import ReducedFramesInfos
|
|
15
|
-
from tomoscan.io import HDF5File, get_swmr_mode
|
|
14
|
+
from tomoscan.scans.nxtomoscan import NXtomoScan
|
|
15
|
+
from tomoscan.scans.scanbase import ReducedFramesInfos
|
|
16
16
|
|
|
17
17
|
from nxtomo.application.nxtomo import NXtomo
|
|
18
18
|
from nxtomo.nxobject.utils import concatenate as nx_concatenate
|
|
@@ -178,7 +178,7 @@ def get_arguments(argv):
|
|
|
178
178
|
args.pixel_size_m = float(args.pixel_size_m)
|
|
179
179
|
else:
|
|
180
180
|
args.overwrite_pixel_size = False
|
|
181
|
-
with HDF5File(args.file_list[0], "r"
|
|
181
|
+
with HDF5File(args.file_list[0], "r") as h5f:
|
|
182
182
|
args.pixel_size_m = h5f[
|
|
183
183
|
os.path.join(args.entry_name, "instrument", "detector", "x_pixel_size")
|
|
184
184
|
][()]
|
|
@@ -14,7 +14,7 @@ import h5py
|
|
|
14
14
|
import numpy
|
|
15
15
|
from silx.io.url import DataUrl
|
|
16
16
|
from silx.io.utils import get_data, h5py_read_dataset
|
|
17
|
-
from
|
|
17
|
+
from nxtomo.io import HDF5File
|
|
18
18
|
from nxtomo.nxobject.nxdetector import FieldOfView, ImageKey
|
|
19
19
|
from nxtomo.utils.frameappender import FrameAppender
|
|
20
20
|
|
|
@@ -9,7 +9,7 @@ from nxtomomill.converter.dxfile.dxfileconverter import from_dx_config_to_nx
|
|
|
9
9
|
from nxtomomill.models.dx2nx import DX2nxModel
|
|
10
10
|
from nxtomomill.tests.utils.dxfile import MockDxFile
|
|
11
11
|
|
|
12
|
-
from tomoscan.
|
|
12
|
+
from tomoscan.scans.nxtomoscan import NXtomoScan
|
|
13
13
|
from tomoscan.validator import is_valid_for_reconstruction
|
|
14
14
|
|
|
15
15
|
from silx.io.utils import get_data, h5py_read_dataset
|
|
@@ -4,7 +4,7 @@ from silx.utils.enum import Enum as _Enum
|
|
|
4
4
|
from silx.io.utils import open as open_hdf5
|
|
5
5
|
from silx.io.utils import get_data
|
|
6
6
|
|
|
7
|
-
from tomoscan.
|
|
7
|
+
from tomoscan.scans.nxtomoscan import NXtomoScan
|
|
8
8
|
from nxtomo.paths.nxtomo import get_paths as get_nexus_paths
|
|
9
9
|
|
|
10
10
|
_logger = logging.getLogger(__name__)
|
|
@@ -19,10 +19,10 @@ from tqdm import tqdm
|
|
|
19
19
|
from silx.io.dictdump import dicttoh5
|
|
20
20
|
from silx.utils.deprecation import deprecated
|
|
21
21
|
|
|
22
|
-
from tomoscan.
|
|
23
|
-
from tomoscan.
|
|
24
|
-
from tomoscan.
|
|
25
|
-
from
|
|
22
|
+
from tomoscan.scans.edfscan import EDFTomoScan
|
|
23
|
+
from tomoscan.scans.nxtomoscan import NXtomoScan
|
|
24
|
+
from tomoscan.scan_utils import get_parameters_frm_par_or_info
|
|
25
|
+
from nxtomo.io import HDF5File
|
|
26
26
|
|
|
27
27
|
from nxtomo.paths.nxtomo import get_paths as get_nexus_paths
|
|
28
28
|
from nxtomo.nxobject.nxdetector import FieldOfView, ImageKey
|
|
@@ -3,8 +3,8 @@ import numpy
|
|
|
3
3
|
from fabio.edfimage import EdfImage
|
|
4
4
|
from silx.io.url import DataUrl
|
|
5
5
|
from nxtomomill.converter.edf.checks import compare_volumes
|
|
6
|
-
from tomoscan.
|
|
7
|
-
from
|
|
6
|
+
from tomoscan.scans.nxtomoscan import NXtomoScan
|
|
7
|
+
from nxtomo.io import HDF5File
|
|
8
8
|
|
|
9
9
|
|
|
10
10
|
def test_compare_volumes(tmp_path):
|
|
@@ -10,13 +10,13 @@ import numpy
|
|
|
10
10
|
import pytest
|
|
11
11
|
|
|
12
12
|
from tqdm import tqdm
|
|
13
|
+
from h5py import File as HDF5File
|
|
13
14
|
|
|
14
|
-
from tomoscan.
|
|
15
|
-
from tomoscan.
|
|
16
|
-
from tomoscan.
|
|
17
|
-
from tomoscan.
|
|
15
|
+
from tomoscan.tests.mock import MockEDF
|
|
16
|
+
from tomoscan.scans.edfscan import EDFTomoScan
|
|
17
|
+
from tomoscan.scans.nxtomoscan import NXtomoScan
|
|
18
|
+
from tomoscan.scan_utils import dump_info_file
|
|
18
19
|
from tomoscan.validator import is_valid_for_reconstruction
|
|
19
|
-
from tomoscan.io import HDF5File, get_swmr_mode
|
|
20
20
|
|
|
21
21
|
from nxtomo.io import cwd_context
|
|
22
22
|
|
|
@@ -83,7 +83,7 @@ def test_edf_to_nx_converter(
|
|
|
83
83
|
# this will work with the tomotools suite as tomoscan will automatically create a working dircetory context when reading the file.
|
|
84
84
|
# but this can be an issue when sharing data or reading data outside the tomotools suite
|
|
85
85
|
with cwd_context(output_file):
|
|
86
|
-
with HDF5File(output_file, mode="r"
|
|
86
|
+
with HDF5File(output_file, mode="r") as h5f:
|
|
87
87
|
detector_data_path = f"/{nx_entry}/instrument/detector/data"
|
|
88
88
|
assert (
|
|
89
89
|
f"/{nx_entry}/instrument/detector/data" in h5f
|
{nxtomomill-2.1.5 → nxtomomill-2.2.0.dev1}/nxtomomill/converter/edf/tests/test_edf2nx_check.py
RENAMED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import os
|
|
2
2
|
import pytest
|
|
3
3
|
from glob import glob
|
|
4
|
-
from tomoscan.
|
|
5
|
-
from tomoscan.
|
|
4
|
+
from tomoscan.tests.mock import MockEDF
|
|
5
|
+
from tomoscan.scans.edfscan import EDFTomoScan
|
|
6
6
|
from nxtomomill.converter.edf.checks import OUPUT_CHECK
|
|
7
7
|
from nxtomomill.models.edf2nx import EDF2nxModel
|
|
8
8
|
from nxtomomill.converter.edf.edfconverter import from_edf_to_nx, post_processing_check
|
|
@@ -9,9 +9,9 @@ import pint
|
|
|
9
9
|
|
|
10
10
|
import numpy
|
|
11
11
|
|
|
12
|
-
from tomoscan.
|
|
13
|
-
from tomoscan.scanbase import TomoScanBase
|
|
14
|
-
from
|
|
12
|
+
from tomoscan.identifiers.base import ScanIdentifier
|
|
13
|
+
from tomoscan.scans.scanbase import TomoScanBase
|
|
14
|
+
from tomobase.utils import docstring
|
|
15
15
|
|
|
16
16
|
|
|
17
17
|
from dataclasses import dataclass, field
|
|
@@ -2,10 +2,10 @@ import logging
|
|
|
2
2
|
from posixpath import join
|
|
3
3
|
import numpy as np
|
|
4
4
|
import pint
|
|
5
|
-
from tomoscan.
|
|
5
|
+
from tomoscan.h5utils import get_h5_value
|
|
6
6
|
from nxtomo.application.nxtomo import NXtomo
|
|
7
7
|
from nxtomo.nxobject.nxdetector import ImageKey
|
|
8
|
-
from tomoscan.
|
|
8
|
+
from tomoscan.fscan import FscanDataset, list_datasets
|
|
9
9
|
from silx.utils.deprecation import deprecated
|
|
10
10
|
|
|
11
11
|
_logger = logging.getLogger(__name__)
|
|
@@ -7,7 +7,7 @@ import h5py
|
|
|
7
7
|
import pytest
|
|
8
8
|
from silx.io.url import DataUrl
|
|
9
9
|
|
|
10
|
-
from
|
|
10
|
+
from nxtomo.io import HDF5File
|
|
11
11
|
from nxtomomill.converter.hdf5.acquisition.baseacquisition import (
|
|
12
12
|
BaseAcquisition,
|
|
13
13
|
get_dataset_name_from_motor,
|
|
@@ -93,7 +93,8 @@ def test_frame_flips(tmp_path, monkeypatch):
|
|
|
93
93
|
)
|
|
94
94
|
|
|
95
95
|
scan_dir = GitlabDataset.get_dataset("h5_datasets")
|
|
96
|
-
|
|
96
|
+
if scan_dir is None:
|
|
97
|
+
raise FileNotFoundError("Unable to download h5_datasets not found")
|
|
97
98
|
|
|
98
99
|
configuration = TomoHDF5Config()
|
|
99
100
|
configuration.input_file = os.path.join(
|
|
@@ -17,7 +17,8 @@ _ureg = pint.get_application_registry()
|
|
|
17
17
|
def test_back_and_forth_conversion(tmp_path):
|
|
18
18
|
"""test nxtomomill fluo2nx CLI with default parameters (handle all detectors found)"""
|
|
19
19
|
scan_dir = GitlabDataset.get_dataset("h5_datasets")
|
|
20
|
-
|
|
20
|
+
if scan_dir is None:
|
|
21
|
+
raise FileNotFoundError("Unable to download h5_datasets not found")
|
|
21
22
|
input_file = os.path.join(scan_dir, "back_and_forth/bliss_tomo_2025_06_17.h5")
|
|
22
23
|
|
|
23
24
|
output_file = os.path.join(tmp_path, "nexus_file.nx")
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import pytest
|
|
2
2
|
import os
|
|
3
3
|
import numpy
|
|
4
|
-
from
|
|
4
|
+
from h5py import File as HDF5File
|
|
5
|
+
|
|
5
6
|
from nxtomomill.converter.hdf5.acquisition.blisstomoconfig import TomoConfig
|
|
6
7
|
|
|
7
8
|
|
|
@@ -56,7 +57,7 @@ def test_tomo_config(tmp_path):
|
|
|
56
57
|
with pytest.raises(KeyError):
|
|
57
58
|
TomoConfig.from_technique_group(h5s)
|
|
58
59
|
|
|
59
|
-
with HDF5File(file_path, mode="r"
|
|
60
|
+
with HDF5File(file_path, mode="r") as h5s:
|
|
60
61
|
tomo_config = TomoConfig.from_technique_group(h5s["/0/test/instrument"])
|
|
61
62
|
|
|
62
63
|
numpy.testing.assert_array_equal(
|
|
@@ -42,7 +42,8 @@ def test_holotomo_conversion_id16a(tmp_path):
|
|
|
42
42
|
"h5_datasets", "holotomo", "id16a", "SiemensStar_HT_025nm_0002.h5"
|
|
43
43
|
)
|
|
44
44
|
input_file = GitlabDataset.get_dataset(dataset_file)
|
|
45
|
-
|
|
45
|
+
if input_file is None:
|
|
46
|
+
raise FileNotFoundError(f"Unable to download {dataset_file} not found")
|
|
46
47
|
output_file = os.path.join(tmp_path, "nexus_file.nx")
|
|
47
48
|
|
|
48
49
|
assert not os.path.exists(output_file), "output_file exists already"
|
|
@@ -19,14 +19,16 @@ _ureg = pint.get_application_registry()
|
|
|
19
19
|
@pytest.fixture(scope="class")
|
|
20
20
|
def S59_68p41b_16mm_6p5mm_F8_0001_Dataset() -> Path:
|
|
21
21
|
scan_dir = GitlabDataset.get_dataset("h5_datasets")
|
|
22
|
-
|
|
22
|
+
if scan_dir is None:
|
|
23
|
+
raise FileNotFoundError("Unable to download h5_datasets not found")
|
|
23
24
|
return Path(os.path.join(scan_dir, "legacy", "S59_68p41b_16mm_6p5mm_F8_0001.h5"))
|
|
24
25
|
|
|
25
26
|
|
|
26
27
|
@pytest.fixture(scope="class")
|
|
27
28
|
def WGN_01_0000_P_110_8128_D_129_Dataset():
|
|
28
29
|
scan_dir = GitlabDataset.get_dataset("h5_datasets")
|
|
29
|
-
|
|
30
|
+
if scan_dir is None:
|
|
31
|
+
raise FileNotFoundError("Unable to download h5_datasets not found")
|
|
30
32
|
return Path(os.path.join(scan_dir, "legacy", "WGN_01_0000_P_110_8128_D_129.h5"))
|
|
31
33
|
|
|
32
34
|
|
|
@@ -17,7 +17,8 @@ def test_multitomo_z_series(tmp_path):
|
|
|
17
17
|
"""test nxtomomill h52nx with a 'multitomo z-series' acquisition"""
|
|
18
18
|
|
|
19
19
|
scan_dir = GitlabDataset.get_dataset("h5_datasets")
|
|
20
|
-
|
|
20
|
+
if scan_dir is None:
|
|
21
|
+
raise FileNotFoundError("Unable to download h5_datasets not found")
|
|
21
22
|
input_file = os.path.join(
|
|
22
23
|
scan_dir, "multitomo/Zseries_Volcano_passedevis_-1.7-aka720-bis_0002.h5"
|
|
23
24
|
)
|
|
@@ -3,12 +3,12 @@
|
|
|
3
3
|
import os
|
|
4
4
|
import numpy
|
|
5
5
|
import pytest
|
|
6
|
+
from h5py import File as HDF5File
|
|
6
7
|
|
|
7
8
|
from nxtomo.application.nxtomo import NXtomo
|
|
8
9
|
from nxtomo.nxobject.nxdetector import ImageKey
|
|
9
10
|
|
|
10
|
-
from tomoscan.
|
|
11
|
-
from tomoscan.esrf.scan.nxtomoscan import NXtomoScan
|
|
11
|
+
from tomoscan.scans.nxtomoscan import NXtomoScan
|
|
12
12
|
|
|
13
13
|
from nxtomomill import converter
|
|
14
14
|
from nxtomomill.converter.hdf5.acquisition.multitomo import MultiTomoAcquisition
|
|
@@ -61,7 +61,7 @@ def test_multitomo_conversion(tmp_path, config: dict, multitomo_version: int):
|
|
|
61
61
|
assert len(result) == nb_loop * nb_tomo
|
|
62
62
|
n_projs = 10 * nb_loop * nb_tomo
|
|
63
63
|
# check saved datasets
|
|
64
|
-
with HDF5File(sample_file, mode="r"
|
|
64
|
+
with HDF5File(sample_file, mode="r") as h5f:
|
|
65
65
|
darks = h5f["2.1/instrument/pcolinux/data"][()]
|
|
66
66
|
assert len(darks) == n_darks
|
|
67
67
|
flats_1 = h5f["3.1/instrument/pcolinux/data"][()]
|
|
@@ -72,7 +72,7 @@ def test_multitomo_conversion(tmp_path, config: dict, multitomo_version: int):
|
|
|
72
72
|
assert len(flats_2) == n_flats
|
|
73
73
|
|
|
74
74
|
for i_nx_tomo, (file_path, data_path) in enumerate(result):
|
|
75
|
-
with HDF5File(file_path, mode="r"
|
|
75
|
+
with HDF5File(file_path, mode="r") as h5f:
|
|
76
76
|
detector_path = "/".join([data_path, "instrument", "detector", "data"])
|
|
77
77
|
detector_data = h5f[detector_path][()]
|
|
78
78
|
expected_data = numpy.concatenate(
|
|
@@ -14,8 +14,8 @@ import h5py
|
|
|
14
14
|
from tqdm import tqdm
|
|
15
15
|
|
|
16
16
|
from silx.io.url import DataUrl
|
|
17
|
-
from
|
|
18
|
-
from
|
|
17
|
+
from nxtomo.io import HDF5File
|
|
18
|
+
from tomobase.utils.io import filter_esrf_mounting_points
|
|
19
19
|
|
|
20
20
|
from nxtomomill.converter.hdf5.acquisition.utils import group_series
|
|
21
21
|
from nxtomomill.converter.baseconverter import BaseConverter
|
|
@@ -6,7 +6,7 @@ from typing import Literal
|
|
|
6
6
|
|
|
7
7
|
from silx.io.url import DataUrl
|
|
8
8
|
|
|
9
|
-
from tomoscan.
|
|
9
|
+
from tomoscan.scan_utils import get_series_slice, get_n_series
|
|
10
10
|
|
|
11
11
|
from nxtomo.application.nxtomo import NXtomo
|
|
12
12
|
from nxtomo.nxobject.nxdetector import ImageKey
|
{nxtomomill-2.1.5 → nxtomomill-2.2.0.dev1}/nxtomomill/converter/hdf5/tests/test_frame_flip.py
RENAMED
|
@@ -17,6 +17,10 @@ def dataset_id16a(tmp_path):
|
|
|
17
17
|
source_file = GitlabDataset.get_dataset(
|
|
18
18
|
"h5_datasets/holotomo/id16a/Atomium_S2_holo4_HT_010nm_0001.h5"
|
|
19
19
|
)
|
|
20
|
+
if source_file is None:
|
|
21
|
+
raise FileNotFoundError(
|
|
22
|
+
"Unable to download h5_datasets/holotomo/id16a/Atomium_S2_holo4_HT_010nm_0001.h5 not found"
|
|
23
|
+
)
|
|
20
24
|
return shutil.copyfile(
|
|
21
25
|
source_file,
|
|
22
26
|
os.path.join(tmp_path, "Atomium_S2_holo1_HT_010nm_500proj_0003.h5"),
|
{nxtomomill-2.1.5 → nxtomomill-2.2.0.dev1}/nxtomomill/converter/hdf5/tests/test_h52nx_utils.py
RENAMED
|
@@ -236,7 +236,7 @@ def test_read_key(read_key_datasets, caplog):
|
|
|
236
236
|
expected_unit=_ureg.centimeter,
|
|
237
237
|
)
|
|
238
238
|
numpy.testing.assert_array_equal(
|
|
239
|
-
quantity.to_base_units(), numpy.array([0.02] * 10)
|
|
239
|
+
quantity.to_base_units().magnitude, numpy.array([0.02] * 10)
|
|
240
240
|
)
|
|
241
241
|
|
|
242
242
|
# test with dataset with coherent size but incoherent units
|
|
@@ -256,7 +256,7 @@ def test_read_key(read_key_datasets, caplog):
|
|
|
256
256
|
expected_unit=_ureg.centimeter,
|
|
257
257
|
)
|
|
258
258
|
numpy.testing.assert_array_equal(
|
|
259
|
-
quantity.to_base_units(), numpy.array([1.01] * 10)
|
|
259
|
+
quantity.to_base_units().magnitude, numpy.array([1.01] * 10)
|
|
260
260
|
)
|
|
261
261
|
|
|
262
262
|
# test arrays with incoherent size
|
|
@@ -274,7 +274,7 @@ def test_read_key(read_key_datasets, caplog):
|
|
|
274
274
|
expected_unit=_ureg.centimeter,
|
|
275
275
|
)
|
|
276
276
|
numpy.testing.assert_array_equal(
|
|
277
|
-
quantity.to_base_units(), numpy.array([1.02] * 6)
|
|
277
|
+
quantity.to_base_units().magnitude, numpy.array([1.02] * 6)
|
|
278
278
|
)
|
|
279
279
|
assert expected_warning in caplog.record_tuples
|
|
280
280
|
|
|
@@ -286,7 +286,7 @@ def test_read_key(read_key_datasets, caplog):
|
|
|
286
286
|
expected_unit=_ureg.centimeter,
|
|
287
287
|
)
|
|
288
288
|
numpy.testing.assert_array_equal(
|
|
289
|
-
quantity.to_base_units(), numpy.array([1 + 0.014 - 2] * 10)
|
|
289
|
+
quantity.to_base_units().magnitude, numpy.array([1 + 0.014 - 2] * 10)
|
|
290
290
|
)
|
|
291
291
|
# test incoherent arrays with scalar
|
|
292
292
|
quantity: pint.Quantity = read_key(
|
|
@@ -296,5 +296,5 @@ def test_read_key(read_key_datasets, caplog):
|
|
|
296
296
|
expected_unit=_ureg.centimeter,
|
|
297
297
|
)
|
|
298
298
|
numpy.testing.assert_array_equal(
|
|
299
|
-
quantity.to_base_units(), numpy.array([1 - 0.014 + 1] * 9)
|
|
299
|
+
quantity.to_base_units().magnitude, numpy.array([1 - 0.014 + 1] * 9)
|
|
300
300
|
)
|
{nxtomomill-2.1.5 → nxtomomill-2.2.0.dev1}/nxtomomill/converter/hdf5/tests/test_hdf5converter.py
RENAMED
|
@@ -5,6 +5,7 @@ import sys
|
|
|
5
5
|
import tempfile
|
|
6
6
|
|
|
7
7
|
import h5py
|
|
8
|
+
from h5py import File as HDF5File
|
|
8
9
|
import numpy
|
|
9
10
|
import pint
|
|
10
11
|
import shutil
|
|
@@ -27,12 +28,7 @@ from nxtomomill.converter.hdf5.utils import (
|
|
|
27
28
|
)
|
|
28
29
|
from nxtomomill.models.h52nx import H52nxModel
|
|
29
30
|
|
|
30
|
-
from tomoscan.
|
|
31
|
-
|
|
32
|
-
try:
|
|
33
|
-
from tomoscan.esrf.scan.hdf5scan import NXtomoScan
|
|
34
|
-
except ImportError:
|
|
35
|
-
from tomoscan.esrf.hdf5scan import NXtomoScan
|
|
31
|
+
from tomoscan.scans.nxtomoscan import NXtomoScan
|
|
36
32
|
|
|
37
33
|
import subprocess # nosec B404
|
|
38
34
|
from glob import glob
|
|
@@ -107,7 +103,7 @@ def test_simple_converter_with_nx_detector_attr(tmp_path):
|
|
|
107
103
|
# insure only one file is generated
|
|
108
104
|
assert os.path.exists(config.output_file)
|
|
109
105
|
# insure data is here
|
|
110
|
-
with HDF5File(config.output_file, mode="r"
|
|
106
|
+
with HDF5File(config.output_file, mode="r") as h5s:
|
|
111
107
|
for _, entry_node in h5s.items():
|
|
112
108
|
assert "instrument/detector/data" in entry_node
|
|
113
109
|
dataset = entry_node["instrument/detector/data"]
|
|
@@ -187,7 +183,7 @@ def test_simple_converter_without_nx_detector_attr(tmp_path, create_tomo_config:
|
|
|
187
183
|
# insure only one file is generated
|
|
188
184
|
assert os.path.exists(output_file)
|
|
189
185
|
# insure data is here
|
|
190
|
-
with HDF5File(output_file, mode="r"
|
|
186
|
+
with HDF5File(output_file, mode="r") as h5s:
|
|
191
187
|
for _, entry_node in h5s.items():
|
|
192
188
|
assert "instrument/detector/data" in entry_node
|
|
193
189
|
dataset = entry_node["instrument/detector/data"]
|
|
@@ -242,7 +238,7 @@ def test_providing_existing_camera_name(tmp_path):
|
|
|
242
238
|
# insure only one file is generated
|
|
243
239
|
assert os.path.exists(config.output_file)
|
|
244
240
|
# insure data is here
|
|
245
|
-
with HDF5File(config.output_file, mode="r"
|
|
241
|
+
with HDF5File(config.output_file, mode="r") as h5s:
|
|
246
242
|
for _, entry_node in h5s.items():
|
|
247
243
|
assert "instrument/detector/data" in entry_node
|
|
248
244
|
dataset = entry_node["instrument/detector/data"]
|
|
@@ -408,7 +404,7 @@ def test_ignore_sub_entries(tmp_path):
|
|
|
408
404
|
# insure only one file is generated
|
|
409
405
|
assert os.path.exists(config.output_file)
|
|
410
406
|
# insure data is here
|
|
411
|
-
with HDF5File(config.output_file, mode="r"
|
|
407
|
+
with HDF5File(config.output_file, mode="r") as h5s:
|
|
412
408
|
for _, entry_node in h5s.items():
|
|
413
409
|
assert "instrument/detector/data" in entry_node
|
|
414
410
|
dataset = entry_node["instrument/detector/data"]
|
|
@@ -445,7 +441,7 @@ def test_get_nx_detectors(tmp_path):
|
|
|
445
441
|
with HDF5File(h5file, mode="w") as h5s:
|
|
446
442
|
create_nx_detector(node=h5s, name="det1", with_nx_class=True)
|
|
447
443
|
create_nx_detector(node=h5s, name="det2", with_nx_class=False)
|
|
448
|
-
with HDF5File(h5file, mode="r"
|
|
444
|
+
with HDF5File(h5file, mode="r") as h5s:
|
|
449
445
|
dets = get_nx_detectors(h5s)
|
|
450
446
|
assert len(dets) == 1
|
|
451
447
|
assert dets[0].name == "/det1"
|
|
@@ -453,7 +449,7 @@ def test_get_nx_detectors(tmp_path):
|
|
|
453
449
|
with HDF5File(h5file, mode="a") as h5s:
|
|
454
450
|
create_nx_detector(node=h5s, name="det3", with_nx_class=True)
|
|
455
451
|
create_nx_detector(node=h5s, name="det4", with_nx_class=True)
|
|
456
|
-
with HDF5File(h5file, mode="r"
|
|
452
|
+
with HDF5File(h5file, mode="r") as h5s:
|
|
457
453
|
dets = get_nx_detectors(h5s)
|
|
458
454
|
assert len(dets) == 3
|
|
459
455
|
|
|
@@ -467,7 +463,7 @@ def test_guess_nx_detector(tmp_path):
|
|
|
467
463
|
|
|
468
464
|
with HDF5File(h5file, mode="w") as h5s:
|
|
469
465
|
create_nx_detector(node=h5s, name="det2", with_nx_class=False)
|
|
470
|
-
with HDF5File(h5file, mode="r"
|
|
466
|
+
with HDF5File(h5file, mode="r") as h5s:
|
|
471
467
|
dets = get_nx_detectors(h5s)
|
|
472
468
|
assert len(dets) == 0
|
|
473
469
|
dets = guess_nx_detector(h5s)
|
|
@@ -553,7 +549,7 @@ def test_dataset_1(tmp_path):
|
|
|
553
549
|
|
|
554
550
|
assert os.path.exists(config.output_file), "output file does not exists"
|
|
555
551
|
|
|
556
|
-
with HDF5File(config.output_file, mode="r"
|
|
552
|
+
with HDF5File(config.output_file, mode="r") as h5s:
|
|
557
553
|
assert len(h5s.items()) == 1
|
|
558
554
|
assert "entry0000" in h5s
|
|
559
555
|
|
|
@@ -564,7 +560,7 @@ def test_dataset_1(tmp_path):
|
|
|
564
560
|
assert len(scan.projections) == 20
|
|
565
561
|
assert len(scan.darks) == 10
|
|
566
562
|
# check data is a virtual dataset
|
|
567
|
-
with HDF5File(config.output_file, mode="r"
|
|
563
|
+
with HDF5File(config.output_file, mode="r") as h5f:
|
|
568
564
|
dataset = h5f["entry0000/instrument/detector/data"]
|
|
569
565
|
assert dataset.is_virtual
|
|
570
566
|
assert dataset.dtype == frame_data_type
|
|
@@ -663,14 +659,13 @@ def test_dataset_2(tmp_path):
|
|
|
663
659
|
|
|
664
660
|
assert os.path.exists(config.output_file)
|
|
665
661
|
|
|
666
|
-
with HDF5File(config.output_file, mode="r"
|
|
662
|
+
with HDF5File(config.output_file, mode="r") as h5s:
|
|
667
663
|
assert "entry0000" in h5s
|
|
668
664
|
assert len(h5s.items()) == 1
|
|
669
665
|
|
|
670
666
|
with HDF5File(
|
|
671
667
|
config.output_file.replace(".nx", "_0000.nx"),
|
|
672
668
|
mode="r",
|
|
673
|
-
swmr=get_swmr_mode(),
|
|
674
669
|
) as h5s:
|
|
675
670
|
assert "entry0000" in h5s
|
|
676
671
|
assert "duplicate_data" in h5s
|
|
@@ -714,7 +709,7 @@ def test_dataset_2(tmp_path):
|
|
|
714
709
|
flat_data = get_data(url)
|
|
715
710
|
assert flat_data.min() != flat_data.max()
|
|
716
711
|
|
|
717
|
-
with HDF5File(config.output_file, mode="r"
|
|
712
|
+
with HDF5File(config.output_file, mode="r") as h5f:
|
|
718
713
|
dataset = h5f["entry0000/instrument/detector/data"][()]
|
|
719
714
|
assert dataset.shape[0] == 60
|
|
720
715
|
with EntryReader(dark_url_1, open_mode_for_reading="safe") as dark_entry:
|
|
@@ -873,7 +868,7 @@ def test_z_series_conversion_with_external_urls(tmp_path, z_series_version: str)
|
|
|
873
868
|
)
|
|
874
869
|
assert len(new_scans) == 3
|
|
875
870
|
assert os.path.exists(config.output_file)
|
|
876
|
-
with HDF5File(config.output_file, mode="r"
|
|
871
|
+
with HDF5File(config.output_file, mode="r") as h5f:
|
|
877
872
|
assert "entry0000" in h5f
|
|
878
873
|
assert "entry0001" in h5f
|
|
879
874
|
assert "entry0002" in h5f
|
|
@@ -894,7 +889,7 @@ def test_z_series_conversion_with_external_urls(tmp_path, z_series_version: str)
|
|
|
894
889
|
assert not url_has_been_copied(file_path=config.output_file, url=url)
|
|
895
890
|
|
|
896
891
|
# test a few slices
|
|
897
|
-
with HDF5File(config.output_file, mode="r"
|
|
892
|
+
with HDF5File(config.output_file, mode="r") as h5f:
|
|
898
893
|
dataset = h5f["entry0000/instrument/detector/data"]
|
|
899
894
|
assert dataset.shape[0] == 30
|
|
900
895
|
|
|
@@ -1049,7 +1044,7 @@ def test_h52nx_from_command_line(tmp_path):
|
|
|
1049
1044
|
assert dataset.dtype == numpy.uint32
|
|
1050
1045
|
# FIXME: avoid keeping some file open. not clear why this is needed
|
|
1051
1046
|
dataset = None
|
|
1052
|
-
with HDF5File(output_file, "r"
|
|
1047
|
+
with HDF5File(output_file, "r") as h5f:
|
|
1053
1048
|
assert "/entry0000/instrument/diode" not in h5f
|
|
1054
1049
|
|
|
1055
1050
|
# insure an nxtomo can be created from it
|
|
@@ -1121,7 +1116,7 @@ def test_simple_conversion(input_type, tmp_path, rotation_is_clockwise: bool):
|
|
|
1121
1116
|
# insure only one file is generated
|
|
1122
1117
|
assert os.path.exists(config.output_file)
|
|
1123
1118
|
# insure data is here
|
|
1124
|
-
with HDF5File(config.output_file, mode="r"
|
|
1119
|
+
with HDF5File(config.output_file, mode="r") as h5s:
|
|
1125
1120
|
for _, entry_node in h5s.items():
|
|
1126
1121
|
assert "instrument/detector/data" in entry_node
|
|
1127
1122
|
dataset = entry_node["instrument/detector/data"]
|