nabu 2024.1.0rc4__py3-none-any.whl → 2024.1.2__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- nabu/__init__.py +1 -1
- nabu/app/cast_volume.py +11 -2
- nabu/app/multicor.py +24 -2
- nabu/io/cast_volume.py +13 -5
- nabu/io/utils.py +2 -2
- nabu/stitching/config.py +2 -2
- nabu/stitching/tests/test_z_stitching.py +0 -1
- nabu/stitching/z_stitching.py +6 -4
- {nabu-2024.1.0rc4.dist-info → nabu-2024.1.2.dist-info}/METADATA +2 -2
- {nabu-2024.1.0rc4.dist-info → nabu-2024.1.2.dist-info}/RECORD +14 -14
- {nabu-2024.1.0rc4.dist-info → nabu-2024.1.2.dist-info}/LICENSE +0 -0
- {nabu-2024.1.0rc4.dist-info → nabu-2024.1.2.dist-info}/WHEEL +0 -0
- {nabu-2024.1.0rc4.dist-info → nabu-2024.1.2.dist-info}/entry_points.txt +0 -0
- {nabu-2024.1.0rc4.dist-info → nabu-2024.1.2.dist-info}/top_level.txt +0 -0
nabu/__init__.py
CHANGED
nabu/app/cast_volume.py
CHANGED
@@ -228,11 +228,20 @@ def main(argv=None):
|
|
228
228
|
|
229
229
|
# get rescale_min_percentile and rescale_min_percentile
|
230
230
|
rescale_min_percentile = options.rescale_min_percentile
|
231
|
+
|
232
|
+
def clean_percentiles_str(percentile):
|
233
|
+
# remove ' char
|
234
|
+
percentile = percentile.rstrip("'").lstrip("'")
|
235
|
+
# remove " char
|
236
|
+
percentile = percentile.rstrip('"').lstrip('"')
|
237
|
+
# remove % char
|
238
|
+
return percentile.rstrip("%")
|
239
|
+
|
231
240
|
if isinstance(rescale_min_percentile, str):
|
232
|
-
rescale_min_percentile = float(rescale_min_percentile
|
241
|
+
rescale_min_percentile = float(clean_percentiles_str(rescale_min_percentile))
|
233
242
|
rescale_max_percentile = options.rescale_max_percentile
|
234
243
|
if isinstance(rescale_min_percentile, str):
|
235
|
-
rescale_max_percentile = float(rescale_max_percentile
|
244
|
+
rescale_max_percentile = float(clean_percentiles_str(rescale_max_percentile))
|
236
245
|
assert rescale_min_percentile is not None, "rescale_min_percentile should be an int"
|
237
246
|
assert rescale_max_percentile is not None, "rescale_max_percentile should be an int"
|
238
247
|
|
nabu/app/multicor.py
CHANGED
@@ -60,12 +60,12 @@ def main():
|
|
60
60
|
cors = get_user_cors(args["cor"])
|
61
61
|
|
62
62
|
all_recs = []
|
63
|
+
rec_instance = pipeline.reconstruction
|
63
64
|
|
64
65
|
for cor in cors:
|
65
66
|
# Re-configure with new CoR
|
66
67
|
pipeline.processing_options["reconstruction"]["rotation_axis_position"] = cor
|
67
68
|
pipeline.processing_options["save"]["file_prefix"] = file_prefix + "_%.03f" % cor
|
68
|
-
pipeline.reconstruction.reset_rot_center(cor)
|
69
69
|
pipeline._init_writer(create_subfolder=False, single_output_file_initialized=False)
|
70
70
|
|
71
71
|
# Get sinogram into contiguous array
|
@@ -73,8 +73,30 @@ def main():
|
|
73
73
|
# For now: transfer to host... not optimal
|
74
74
|
sino = pipeline._d_radios[:, pipeline._d_radios.shape[1] // 2, :].get() # pylint: disable=E1136
|
75
75
|
|
76
|
+
if pipeline.process_config.do_halftomo:
|
77
|
+
# re-initialize FBP object, because in half-tomography the output slice size is a function of CoR
|
78
|
+
options = pipeline.processing_options["reconstruction"]
|
79
|
+
rec_instance = pipeline.FBPClass(
|
80
|
+
sino.shape,
|
81
|
+
angles=options["angles"],
|
82
|
+
rot_center=cor,
|
83
|
+
filter_name=options["fbp_filter_type"] or "none",
|
84
|
+
halftomo=options["enable_halftomo"],
|
85
|
+
# slice_roi=self.process_config.rec_roi,
|
86
|
+
padding_mode=options["padding_type"],
|
87
|
+
extra_options={
|
88
|
+
"scale_factor": 1.0 / options["voxel_size_cm"][0],
|
89
|
+
"axis_correction": options["axis_correction"],
|
90
|
+
"centered_axis": options["centered_axis"],
|
91
|
+
"clip_outer_circle": options["clip_outer_circle"],
|
92
|
+
"filter_cutoff": options["fbp_filter_cutoff"],
|
93
|
+
},
|
94
|
+
)
|
95
|
+
else:
|
96
|
+
pipeline.reconstruction.reset_rot_center(cor)
|
97
|
+
|
76
98
|
# Run reconstruction
|
77
|
-
rec =
|
99
|
+
rec = rec_instance.fbp(sino)
|
78
100
|
# if return_all_recs:
|
79
101
|
# all_recs.append(rec)
|
80
102
|
rec_3D = view_as_images_stack(rec) # writer wants 3D data
|
nabu/io/cast_volume.py
CHANGED
@@ -74,7 +74,7 @@ def get_default_output_volume(
|
|
74
74
|
volume_basename=input_volume.get_volume_basename(),
|
75
75
|
)
|
76
76
|
else:
|
77
|
-
raise NotImplementedError
|
77
|
+
raise NotImplementedError(f"output volume format {output_type} is not handled")
|
78
78
|
elif isinstance(input_volume, (HDF5Volume, MultiTIFFVolume)):
|
79
79
|
if output_type == "hdf5":
|
80
80
|
data_file_parent_path, data_file_name = os.path.split(input_volume.data_url.file_path())
|
@@ -121,9 +121,9 @@ def get_default_output_volume(
|
|
121
121
|
)
|
122
122
|
)
|
123
123
|
else:
|
124
|
-
raise NotImplementedError
|
124
|
+
raise NotImplementedError(f"output volume format {output_type} is not handled")
|
125
125
|
else:
|
126
|
-
raise NotImplementedError
|
126
|
+
raise NotImplementedError(f"input volume format {input_volume} is not handled")
|
127
127
|
|
128
128
|
|
129
129
|
def cast_volume(
|
@@ -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
|
+
)
|
nabu/io/utils.py
CHANGED
@@ -201,7 +201,7 @@ class EntryReader(_BaseReader):
|
|
201
201
|
"""Context manager used to read a bliss node"""
|
202
202
|
|
203
203
|
def __enter__(self):
|
204
|
-
self._file_handler = HDF5File(
|
204
|
+
self._file_handler = HDF5File(self._url.file_path(), mode="r")
|
205
205
|
if self._url.data_path() == "":
|
206
206
|
entry = self._file_handler
|
207
207
|
else:
|
@@ -215,7 +215,7 @@ class DatasetReader(_BaseReader):
|
|
215
215
|
"""Context manager used to read a bliss node"""
|
216
216
|
|
217
217
|
def __enter__(self):
|
218
|
-
self._file_handler = HDF5File(
|
218
|
+
self._file_handler = HDF5File(self._url.file_path(), mode="r")
|
219
219
|
entry = self._file_handler[self._url.data_path()]
|
220
220
|
if not isinstance(entry, h5py.Dataset):
|
221
221
|
raise ValueError("Data path ({}) should point to a dataset (h5py.Dataset)".format(self._url.path()))
|
nabu/stitching/config.py
CHANGED
@@ -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
|
},
|
nabu/stitching/z_stitching.py
CHANGED
@@ -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,
|
@@ -1256,7 +1258,7 @@ class PreProcessZStitcher(ZStitcher):
|
|
1256
1258
|
|
1257
1259
|
output_dtype = get_output_data_type()
|
1258
1260
|
# append frames ("instrument/detactor/data" dataset)
|
1259
|
-
with HDF5File(
|
1261
|
+
with HDF5File(self.configuration.output_file_path, mode="a") as h5f:
|
1260
1262
|
# note: nx_tomo.save already handles the possible overwrite conflict by removing
|
1261
1263
|
# self.configuration.output_file_path or raising an error
|
1262
1264
|
|
@@ -1832,7 +1834,7 @@ class PostProcessZStitcher(ZStitcher):
|
|
1832
1834
|
def __enter__(self):
|
1833
1835
|
# handle the specific case of HDF5. Goal: avoid getting the full stitched volume in memory
|
1834
1836
|
if isinstance(self._volume, HDF5Volume):
|
1835
|
-
self.__file_handler = HDF5File(
|
1837
|
+
self.__file_handler = HDF5File(self._volume.data_url.file_path(), mode="a")
|
1836
1838
|
# if need to delete an existing dataset
|
1837
1839
|
if self._volume.overwrite and self._volume.data_path in self.__file_handler:
|
1838
1840
|
try:
|
@@ -1900,7 +1902,7 @@ class PostProcessZStitcher(ZStitcher):
|
|
1900
1902
|
if volume.data is not None:
|
1901
1903
|
data = volume.data
|
1902
1904
|
elif isinstance(volume, HDF5Volume):
|
1903
|
-
file_handler = HDF5File(
|
1905
|
+
file_handler = HDF5File(volume.data_url.file_path(), mode="r")
|
1904
1906
|
dataset = file_handler[volume.data_url.data_path()]
|
1905
1907
|
data = dataset
|
1906
1908
|
self.__file_handlers.append(file_handler)
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: nabu
|
3
|
-
Version: 2024.1.
|
3
|
+
Version: 2024.1.2
|
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>
|
@@ -53,7 +53,7 @@ Requires-Dist: numpy >1.9.0
|
|
53
53
|
Requires-Dist: scipy
|
54
54
|
Requires-Dist: h5py >=3.0
|
55
55
|
Requires-Dist: silx >=0.15.0
|
56
|
-
Requires-Dist: tomoscan >=2.0.
|
56
|
+
Requires-Dist: tomoscan >=2.0.4
|
57
57
|
Requires-Dist: psutil
|
58
58
|
Requires-Dist: pytest
|
59
59
|
Requires-Dist: tifffile
|
@@ -1,14 +1,14 @@
|
|
1
1
|
doc/conf.py,sha256=3xtCarCHrXPr50GbeRDuH-o3Jzojw7mpr7vpGfZPLAE,3787
|
2
2
|
doc/create_conf_doc.py,sha256=IVOdP70KvbW9WS_UQu3Iyd0YfS60E2fJ5IDtQ_s4cDw,1143
|
3
3
|
doc/get_mathjax.py,sha256=VIvKRCdDuF2VoY8JD3mSey9XX13AZMmwTJBHdt1tUs4,1012
|
4
|
-
nabu/__init__.py,sha256=
|
4
|
+
nabu/__init__.py,sha256=ZAej-8X8A_uoviFokuukhi8jyzI2YRAj0-zkdCR3LaI,270
|
5
5
|
nabu/tests.py,sha256=cew9OY2uTyncHI_HM32W8CP6B1GTGKaOW65XtMEqs7o,1417
|
6
6
|
nabu/testutils.py,sha256=qqtGgkIhpOpXhgeoXlqCb91Rx-JlI4ALaDF6nt8YRRk,13298
|
7
7
|
nabu/utils.py,sha256=1OKKhQ6-t7OOwTLQkTJuK5Hk9lb7hkEZrDtTdcmvD4c,24164
|
8
8
|
nabu/app/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
9
9
|
nabu/app/bootstrap.py,sha256=UQZzCBKtSXtQp5U0aXtlUhbjbwzgILTI4zD4zVffhBI,3246
|
10
10
|
nabu/app/bootstrap_stitching.py,sha256=Inr0_zRAtyeMTK1BKxGqoDf-Na0O33CICmQJYja06ug,2148
|
11
|
-
nabu/app/cast_volume.py,sha256=
|
11
|
+
nabu/app/cast_volume.py,sha256=oObZVX-UbhsQ-JbNqpG1SdOSeJwIBrALYsJ9PubPWXc,11217
|
12
12
|
nabu/app/cli_configs.py,sha256=FBh9bG80oY0fwfOntmgqgumS5i120_r60tCsj_mcdvE,22109
|
13
13
|
nabu/app/compare_volumes.py,sha256=Mu5O4uP-ANo-el-fE5PLvEq42BTk5FkrscaFRyQZdis,3341
|
14
14
|
nabu/app/composite_cor.py,sha256=N0Q7dxak7GktcuwxtwQ0PdZcmCS5CboChlxa2UCLMIA,5132
|
@@ -19,7 +19,7 @@ nabu/app/diag_to_rot.py,sha256=86lqINSN4SoQ0Eqf0fGYCw-eAhBHm8ds7TDWtLNE6Cg,17111
|
|
19
19
|
nabu/app/double_flatfield.py,sha256=zm9oHWR_QgAV2B3SeNWwgxpJtBsnnWUW4O2lCn5Hjbc,5450
|
20
20
|
nabu/app/generate_header.py,sha256=Voo-FAvwS_mU5gtDxyqpZnSpP_mlMSfd_6bEtgdi_tg,8919
|
21
21
|
nabu/app/histogram.py,sha256=gyLXKwFrU5WPQMkM1k8OdpIXSwGEEKC-f8RcTHKOho4,7930
|
22
|
-
nabu/app/multicor.py,sha256=
|
22
|
+
nabu/app/multicor.py,sha256=h2ykS6Vg3S88E_pZOQu_s7F1VYGv-q7k1nfqxf2IdOM,4055
|
23
23
|
nabu/app/nx_z_splitter.py,sha256=p54jR-PAAw-AkGolM9fZE5lM2vbNLspCNCy5zBnJNP4,4976
|
24
24
|
nabu/app/parse_reconstruction_log.py,sha256=9eiJftCkyNvtZmTDjeOuKgu3a9Fe4KzJcfcI_ZdDlUM,4586
|
25
25
|
nabu/app/prepare_weights_double.py,sha256=5TkhTwNbvgeG8jlDLCwlkeOV_YMINySwdpmjaTM6pbk,5495
|
@@ -76,12 +76,12 @@ nabu/estimation/tests/test_focus.py,sha256=deaVGbIFSzHDAReoeAy-1HLsnKWpJQsC2SL9W
|
|
76
76
|
nabu/estimation/tests/test_tilt.py,sha256=PN4tnV3-XU2nNA608kQShaHugWn_-wbHzWCTnLIaCTk,1658
|
77
77
|
nabu/estimation/tests/test_translation.py,sha256=RkOnCYgk9DZGKlIka1snqTv4wbIz_nG7-EHAxnBHsJU,2999
|
78
78
|
nabu/io/__init__.py,sha256=Mx0HRIENk0dJbN3b9tzPZhiOnPMxBItgVNQn_QLLrlI,176
|
79
|
-
nabu/io/cast_volume.py,sha256=
|
79
|
+
nabu/io/cast_volume.py,sha256=k2EjcWwEjR30VAqm6XK_5ofoJXlAYtf4B2hCafnCVx4,15638
|
80
80
|
nabu/io/detector_distortion.py,sha256=Or4icugi0fGRKWIG0I9hCuR1UZA5Cel25ZGY7cR2j4I,11744
|
81
81
|
nabu/io/reader.py,sha256=1DlUYObfOBEGYJHEqyw1Mb2uQ_b_Z7-FFqMWS-4tIB0,23083
|
82
82
|
nabu/io/reader_helical.py,sha256=_6vZBH-US_VT7oOGJUtYXqPwFws7xZKcmdOthpwvlIQ,4477
|
83
83
|
nabu/io/tiffwriter_zmm.py,sha256=ykaSFqdbYhGNxdBrJRT_rxihx5wj9G8qMQMI1e07fNk,3838
|
84
|
-
nabu/io/utils.py,sha256=
|
84
|
+
nabu/io/utils.py,sha256=pFRULSlmGzJnzBbeSNKRhnKbBPbV0XaeUsxnWmnMtR4,9223
|
85
85
|
nabu/io/writer.py,sha256=cWKY7RcNUztOs1ktzLP2G087fLvq4yNMNdvvBdnoOSk,31417
|
86
86
|
nabu/io/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
87
87
|
nabu/io/tests/test_cast_volume.py,sha256=3zd_aGhMeMPkjg1I3Kq4oKltxwVloizXKgaDV8g_F7Q,10391
|
@@ -265,14 +265,14 @@ nabu/resources/tests/test_nxflatfield.py,sha256=wLcBYpeD1UHGbimRrisGzgS9oVnQ8nNz
|
|
265
265
|
nabu/resources/tests/test_units.py,sha256=F2jFTck-1UwYET1MwTtX6ntzYUosfwOJkugSencGgz8,2155
|
266
266
|
nabu/stitching/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
267
267
|
nabu/stitching/alignment.py,sha256=MSj-6npGfUnD3C5R5rqKwTogVRUDPmJuEZkPG9hMiUY,6752
|
268
|
-
nabu/stitching/config.py,sha256=
|
268
|
+
nabu/stitching/config.py,sha256=t7mkRrkdHKMz0x-lg0f5-IOAO829A6BvKH8WUAuSAps,51333
|
269
269
|
nabu/stitching/definitions.py,sha256=RyqzZY3KLwN4j0SkOFA-T1aicPbO2jBrqfWdz-1djxk,130
|
270
270
|
nabu/stitching/frame_composition.py,sha256=OGM9cLrLfEP5_hvhDbNq_zr2wdMeAuTTNlVqZk-qVBU,5889
|
271
271
|
nabu/stitching/overlap.py,sha256=eXAKsILS5jwqFY62JhDijeNW8H50rP-yjdUUGqjj0aY,15700
|
272
272
|
nabu/stitching/sample_normalization.py,sha256=_radin_wxnuD3MMmZNAOKA__aPa2z3ss4TFbZeocpXc,2069
|
273
273
|
nabu/stitching/slurm_utils.py,sha256=sZ-VQPh_YlJ1Lkh7ap8qxII0rBpZryMyoxE5Xn557t8,8906
|
274
274
|
nabu/stitching/utils.py,sha256=kMn2JEMDhcBQMweSlM0rUd-037H7iNUURTFMhXOTzC8,23651
|
275
|
-
nabu/stitching/z_stitching.py,sha256=
|
275
|
+
nabu/stitching/z_stitching.py,sha256=RRrLUDiOrImj1wvun13RkEC9tYL3WvbCNzS66iSKMgg,103400
|
276
276
|
nabu/stitching/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
277
277
|
nabu/stitching/tests/test_alignment.py,sha256=MACak1ILOr8nRKeT0mWfMd-ZvhCl3SWjjcp6GjRbITc,2735
|
278
278
|
nabu/stitching/tests/test_config.py,sha256=ttWuVB9Y_MM3_wGdKbcbYi_PG3vN87cL7o5zKsMzn9g,8490
|
@@ -281,16 +281,16 @@ nabu/stitching/tests/test_overlap.py,sha256=vfZuK32pclWL0Hg8u5NH0JoxKO28qk3ObRMm
|
|
281
281
|
nabu/stitching/tests/test_sample_normalization.py,sha256=E49E_Quv-Qon6qSuaH9ZBZLqq4TPuBl8RqgB18Rwjc0,1348
|
282
282
|
nabu/stitching/tests/test_slurm_utils.py,sha256=bbhCQd06R3irGB4B9r79KKlf0AlBchI53N2ldsXoAQQ,4950
|
283
283
|
nabu/stitching/tests/test_utils.py,sha256=CjV0vPvXEchJ5vo6o7hGQA-PsOOAyAamuQ6fiHKCQ9M,641
|
284
|
-
nabu/stitching/tests/test_z_stitching.py,sha256=
|
284
|
+
nabu/stitching/tests/test_z_stitching.py,sha256=8gio27FTULOX7bzypmdaAyVwQiO-JOwgBL1e9FwZUN4,42582
|
285
285
|
nabu/thirdparty/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
286
286
|
nabu/thirdparty/algotom_convert_sino.py,sha256=iZVRilvyqMyLTu8RKgbqDFUjObWW5X69rCARrnNizuI,13872
|
287
287
|
nabu/thirdparty/pore3d_deringer_munch.py,sha256=o4bisnFc-wMjuohWBT8wgWmfNehPQGtCl6G2NebJlbg,4500
|
288
288
|
nabu/thirdparty/tomocupy_remove_stripe.py,sha256=VgXHr2tzTAAGZix5pwhFfbPxj4tt3yXBcjCPNQSLPAg,22810
|
289
289
|
nabu/thirdparty/tomopy_phase.py,sha256=hK4oPpkogLOhv23XzzEXQY2u3r8fJvASY_bINVs6ERE,8634
|
290
290
|
nabu/thirdparty/tomwer_load_flats_darks.py,sha256=ZNoVAinUb_wGYbfvs_4BVnWsjsQmNxSvCh1bWhR2WWg,5611
|
291
|
-
nabu-2024.1.
|
292
|
-
nabu-2024.1.
|
293
|
-
nabu-2024.1.
|
294
|
-
nabu-2024.1.
|
295
|
-
nabu-2024.1.
|
296
|
-
nabu-2024.1.
|
291
|
+
nabu-2024.1.2.dist-info/LICENSE,sha256=1eAIPSnEsnSFNUODnLtNtQTs76exG3ZxJ1DJR6zoUBA,1066
|
292
|
+
nabu-2024.1.2.dist-info/METADATA,sha256=SNK5avox9pDHbu-OEbx204ASbhwoMmjSC3e5_9ilMFI,5224
|
293
|
+
nabu-2024.1.2.dist-info/WHEEL,sha256=5sUXSg9e4bi7lTLOHcm6QEYwO5TIF1TNbTSVFVjcJcc,92
|
294
|
+
nabu-2024.1.2.dist-info/entry_points.txt,sha256=cJKGkBeykVL7uK3E4R0RLRqMXifTL2qdO573syPAvJc,1288
|
295
|
+
nabu-2024.1.2.dist-info/top_level.txt,sha256=fsm_N3eXLRZk2QXF9OSKPNDPFXOz8FAQjHh5avT3dok,9
|
296
|
+
nabu-2024.1.2.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|