httomo-backends 0.6.2__py3-none-any.whl → 0.7__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.
Files changed (19) hide show
  1. httomo_backends/methods_database/packages/backends/httomolibgpu/httomolibgpu.yaml +11 -2
  2. httomo_backends/methods_database/packages/backends/httomolibgpu/supporting_funcs/recon/algorithm.py +209 -47
  3. httomo_backends/pipelines_full/FISTA3d_tomobar_directive.yaml +14 -0
  4. httomo_backends/pipelines_full/titaren_center_pc_FBP3d_resample_directive.yaml +18 -0
  5. httomo_backends/scripts/yaml_pipelines_generator.py +15 -11
  6. httomo_backends/yaml_templates/httomolibgpu/httomolibgpu.misc.denoise/total_variation_PD.yaml +1 -0
  7. httomo_backends/yaml_templates/httomolibgpu/httomolibgpu.misc.denoise/total_variation_ROF.yaml +1 -0
  8. httomo_backends/yaml_templates/httomolibgpu/httomolibgpu.recon.algorithm/CGLS3d_tomobar.yaml +2 -1
  9. httomo_backends/yaml_templates/httomolibgpu/httomolibgpu.recon.algorithm/FBP2d_astra.yaml +1 -1
  10. httomo_backends/yaml_templates/httomolibgpu/httomolibgpu.recon.algorithm/FBP3d_tomobar.yaml +1 -1
  11. httomo_backends/yaml_templates/httomolibgpu/httomolibgpu.recon.algorithm/FISTA3d_tomobar.yaml +15 -0
  12. httomo_backends/yaml_templates/httomolibgpu/httomolibgpu.recon.algorithm/LPRec3d_tomobar.yaml +4 -1
  13. httomo_backends/yaml_templates/httomolibgpu/httomolibgpu.recon.algorithm/SIRT3d_tomobar.yaml +2 -1
  14. {httomo_backends-0.6.2.dist-info → httomo_backends-0.7.dist-info}/METADATA +1 -1
  15. {httomo_backends-0.6.2.dist-info → httomo_backends-0.7.dist-info}/RECORD +18 -16
  16. httomo_backends/yaml_templates/httomolibgpu/httomolibgpu.prep.phase/paganin_filter_savu.yaml +0 -11
  17. {httomo_backends-0.6.2.dist-info → httomo_backends-0.7.dist-info}/WHEEL +0 -0
  18. {httomo_backends-0.6.2.dist-info → httomo_backends-0.7.dist-info}/licenses/LICENSE +0 -0
  19. {httomo_backends-0.6.2.dist-info → httomo_backends-0.7.dist-info}/top_level.txt +0 -0
@@ -26,7 +26,7 @@ misc:
26
26
  save_result_default: False
27
27
  padding: True
28
28
  memory_gpu:
29
- multiplier: 5
29
+ multiplier: 6.1
30
30
  method: direct
31
31
  total_variation_PD:
32
32
  pattern: all
@@ -35,7 +35,7 @@ misc:
35
35
  save_result_default: False
36
36
  padding: True
37
37
  memory_gpu:
38
- multiplier: 7
38
+ multiplier: 9.1
39
39
  method: direct
40
40
  morph:
41
41
  sino_360_to_180:
@@ -181,6 +181,15 @@ recon:
181
181
  memory_gpu:
182
182
  multiplier: None
183
183
  method: module
184
+ FISTA3d_tomobar:
185
+ pattern: sinogram
186
+ output_dims_change: True
187
+ implementation: gpu_cupy
188
+ save_result_default: True
189
+ padding: True
190
+ memory_gpu:
191
+ multiplier: None
192
+ method: module
184
193
  rotation:
185
194
  find_center_vo:
186
195
  pattern: projection
@@ -30,14 +30,21 @@ __all__ = [
30
30
  "_calc_memory_bytes_LPRec3d_tomobar",
31
31
  "_calc_memory_bytes_SIRT3d_tomobar",
32
32
  "_calc_memory_bytes_CGLS3d_tomobar",
33
+ "_calc_memory_bytes_FISTA3d_tomobar",
33
34
  "_calc_output_dim_FBP2d_astra",
34
35
  "_calc_output_dim_FBP3d_tomobar",
35
36
  "_calc_output_dim_LPRec3d_tomobar",
36
37
  "_calc_output_dim_SIRT3d_tomobar",
37
38
  "_calc_output_dim_CGLS3d_tomobar",
39
+ "_calc_output_dim_FISTA3d_tomobar",
40
+ "_calc_padding_FISTA3d_tomobar",
38
41
  ]
39
42
 
40
43
 
44
+ def _calc_padding_FISTA3d_tomobar(**kwargs) -> Tuple[int, int]:
45
+ return (5, 5)
46
+
47
+
41
48
  def __calc_output_dim_recon(non_slice_dims_shape, **kwargs):
42
49
  """Function to calculate output dimensions for all reconstructors.
43
50
  The change of the dimension depends either on the user-provided "recon_size"
@@ -72,14 +79,21 @@ def _calc_output_dim_CGLS3d_tomobar(non_slice_dims_shape, **kwargs):
72
79
  return __calc_output_dim_recon(non_slice_dims_shape, **kwargs)
73
80
 
74
81
 
82
+ def _calc_output_dim_FISTA3d_tomobar(non_slice_dims_shape, **kwargs):
83
+ return __calc_output_dim_recon(non_slice_dims_shape, **kwargs)
84
+
85
+
75
86
  def _calc_memory_bytes_FBP3d_tomobar(
76
87
  non_slice_dims_shape: Tuple[int, int],
77
88
  dtype: np.dtype,
78
89
  **kwargs,
79
90
  ) -> Tuple[int, int]:
91
+ detector_pad = 0
80
92
  if "detector_pad" in kwargs:
81
93
  detector_pad = kwargs["detector_pad"]
82
- else:
94
+ if detector_pad is True:
95
+ detector_pad = __estimate_detectorHoriz_padding(non_slice_dims_shape[1])
96
+ elif detector_pad is False:
83
97
  detector_pad = 0
84
98
 
85
99
  angles_tot = non_slice_dims_shape[0]
@@ -132,11 +146,11 @@ def _calc_memory_bytes_FBP3d_tomobar(
132
146
 
133
147
  # 7. astra backprojection will generate an output array
134
148
  # https://github.com/dkazanc/ToMoBAR/blob/54137829b6326406e09f6ef9c95eb35c213838a7/tomobar/astra_wrappers/astra_base.py#L524
135
- output_dims = _calc_output_dim_FBP3d_tomobar(non_slice_dims_shape, **kwargs)
149
+ output_dims = _calc_output_dim_FBP3d_tomobar((angles_tot, det_width), **kwargs)
136
150
  recon_output_size = np.prod(output_dims) * np.float32().itemsize
137
151
 
138
152
  # 7. astra backprojection makes a copy of the input
139
- astra_input_slice_size = np.prod(non_slice_dims_shape) * np.float32().itemsize
153
+ astra_input_slice_size = (angles_tot * det_width) * np.float32().itemsize
140
154
 
141
155
  ## now we calculate back projection memory (2 copies of the input + reconstruction output)
142
156
  projection_mem_size = (
@@ -169,10 +183,16 @@ def _calc_memory_bytes_LPRec3d_tomobar(
169
183
  ) -> Tuple[int, int]:
170
184
  # Based on: https://github.com/dkazanc/ToMoBAR/pull/112/commits/4704ecdc6ded3dd5ec0583c2008aa104f30a8a39
171
185
 
186
+ detector_pad = 0
172
187
  if "detector_pad" in kwargs:
173
188
  detector_pad = kwargs["detector_pad"]
174
- else:
175
- detector_pad = 0
189
+ if detector_pad is True:
190
+ detector_pad = __estimate_detectorHoriz_padding(non_slice_dims_shape[1])
191
+ elif detector_pad is False:
192
+ detector_pad = 0
193
+
194
+ min_mem_usage_filter = False
195
+ min_mem_usage_ifft2 = False
176
196
 
177
197
  angles_tot = non_slice_dims_shape[0]
178
198
  DetectorsLengthH_prepad = non_slice_dims_shape[1]
@@ -195,11 +215,22 @@ def _calc_memory_bytes_LPRec3d_tomobar(
195
215
  )
196
216
  )
197
217
 
198
- center_size = 6144
199
- center_size = min(center_size, n * 2 + m * 2)
218
+ center_size = 32768
219
+ center_size = min(center_size, n * 2)
220
+
221
+ chunk_count = 4
222
+ projection_chunk_count = 4
223
+ oversampling_level = 4 # at least 3 or larger required
224
+ power_of_2_oversampling = True
225
+
226
+ if power_of_2_oversampling:
227
+ ne = 2 ** math.ceil(math.log2(DetectorsLengthH_prepad * 3))
228
+ if n > ne:
229
+ ne = 2 ** math.ceil(math.log2(n))
230
+ else:
231
+ ne = int(oversampling_level * DetectorsLengthH_prepad)
232
+ ne = max(ne, n)
200
233
 
201
- oversampling_level = 2 # at least 2 or larger required
202
- ne = oversampling_level * n
203
234
  padding_m = ne // 2 - n // 2
204
235
 
205
236
  if "angles" in kwargs:
@@ -213,8 +244,6 @@ def _calc_memory_bytes_LPRec3d_tomobar(
213
244
  np.ceil(2)
214
245
  ) # assume a 2 * PI projection angle range
215
246
 
216
- chunk_count = 4
217
-
218
247
  output_dims = __calc_output_dim_recon(non_slice_dims_shape, **kwargs)
219
248
  if odd_horiz:
220
249
  output_dims = tuple(x + 1 for x in output_dims)
@@ -252,7 +281,7 @@ def _calc_memory_bytes_LPRec3d_tomobar(
252
281
  irfft_result_size = angles_tot * (n + padding_m * 2) * np.float32().itemsize
253
282
 
254
283
  datac_size = angles_tot * n * np.complex64().itemsize / 2
255
- fde_size = (2 * m + 2 * n) * (2 * m + 2 * n) * np.complex64().itemsize / 2
284
+ fde_size = 2 * n * 2 * n * np.complex64().itemsize / 2
256
285
  fft_plan_slice_size = (
257
286
  cufft_estimate_1d(nx=n, fft_type=CufftType.CUFFT_C2C, batch=angles_tot * SLICES)
258
287
  / SLICES
@@ -270,7 +299,7 @@ def _calc_memory_bytes_LPRec3d_tomobar(
270
299
  )
271
300
  ifft2_plan_slice_size = (
272
301
  cufft_estimate_2d(
273
- nx=(2 * m + 2 * n), ny=(2 * m + 2 * n), fft_type=CufftType.CUFFT_C2C
302
+ nx=2 * n, ny=2 * n, fft_type=CufftType.CUFFT_C2C
274
303
  )
275
304
  / 2
276
305
  )
@@ -309,24 +338,40 @@ def _calc_memory_bytes_LPRec3d_tomobar(
309
338
  add_to_memory_counters(scaled_filter_size, False)
310
339
 
311
340
  add_to_memory_counters(tmp_p_input_slice, True)
341
+ if min_mem_usage_filter:
342
+ add_to_memory_counters(rfft_plan_slice_size / 4, False)
343
+ add_to_memory_counters(irfft_plan_slice_size / 4, False)
344
+ add_to_memory_counters(padded_tmp_p_input_slice, False)
345
+
346
+ add_to_memory_counters(rfft_result_size, False)
347
+ add_to_memory_counters(filtered_rfft_result_size, False)
348
+ add_to_memory_counters(-rfft_result_size, False)
349
+ add_to_memory_counters(-padded_tmp_p_input_slice, False)
350
+
351
+ add_to_memory_counters(irfft_scratch_memory_size, False)
352
+ add_to_memory_counters(-irfft_scratch_memory_size, False)
353
+ add_to_memory_counters(irfft_result_size, False)
354
+ add_to_memory_counters(-filtered_rfft_result_size, False)
355
+
356
+ add_to_memory_counters(-irfft_result_size, False)
357
+ else:
358
+ add_to_memory_counters(rfft_plan_slice_size / chunk_count / projection_chunk_count * 2, True)
359
+ add_to_memory_counters(irfft_plan_slice_size / chunk_count / projection_chunk_count * 2, True)
360
+ # add_to_memory_counters(irfft_scratch_memory_size / chunk_count / projection_chunk_count, True)
361
+ for _ in range(0, chunk_count):
362
+ add_to_memory_counters(padded_tmp_p_input_slice / chunk_count / projection_chunk_count, True)
312
363
 
313
- add_to_memory_counters(rfft_plan_slice_size / chunk_count * 2, True)
314
- add_to_memory_counters(irfft_plan_slice_size / chunk_count * 2, True)
315
- # add_to_memory_counters(irfft_scratch_memory_size / chunk_count, True)
316
- for _ in range(0, chunk_count):
317
- add_to_memory_counters(padded_tmp_p_input_slice / chunk_count, True)
318
-
319
- add_to_memory_counters(rfft_result_size / chunk_count, True)
320
- add_to_memory_counters(filtered_rfft_result_size / chunk_count, True)
321
- add_to_memory_counters(-rfft_result_size / chunk_count, True)
322
- add_to_memory_counters(-padded_tmp_p_input_slice / chunk_count, True)
364
+ add_to_memory_counters(rfft_result_size / chunk_count / projection_chunk_count, True)
365
+ add_to_memory_counters(filtered_rfft_result_size / chunk_count / projection_chunk_count, True)
366
+ add_to_memory_counters(-rfft_result_size / chunk_count / projection_chunk_count, True)
367
+ add_to_memory_counters(-padded_tmp_p_input_slice / chunk_count / projection_chunk_count, True)
323
368
 
324
- add_to_memory_counters(irfft_scratch_memory_size / chunk_count, True)
325
- add_to_memory_counters(-irfft_scratch_memory_size / chunk_count, True)
326
- add_to_memory_counters(irfft_result_size / chunk_count, True)
327
- add_to_memory_counters(-filtered_rfft_result_size / chunk_count, True)
369
+ add_to_memory_counters(irfft_scratch_memory_size / chunk_count / projection_chunk_count, True)
370
+ add_to_memory_counters(-irfft_scratch_memory_size / chunk_count / projection_chunk_count, True)
371
+ add_to_memory_counters(irfft_result_size / chunk_count / projection_chunk_count, True)
372
+ add_to_memory_counters(-filtered_rfft_result_size / chunk_count / projection_chunk_count, True)
328
373
 
329
- add_to_memory_counters(-irfft_result_size / chunk_count, True)
374
+ add_to_memory_counters(-irfft_result_size / chunk_count / projection_chunk_count, True)
330
375
 
331
376
  add_to_memory_counters(-padded_in_slice_size, True)
332
377
  add_to_memory_counters(-filter_size, False)
@@ -342,17 +387,25 @@ def _calc_memory_bytes_LPRec3d_tomobar(
342
387
 
343
388
  add_to_memory_counters(-fft_result_size, True)
344
389
 
345
- add_to_memory_counters(ifft2_plan_slice_size / chunk_count * 2, True)
346
- for _ in range(0, chunk_count):
347
- add_to_memory_counters(fde_size / chunk_count, True)
348
- add_to_memory_counters(-fde_size / chunk_count, True)
390
+ if min_mem_usage_ifft2:
391
+ add_to_memory_counters(ifft2_plan_slice_size, False)
392
+ add_to_memory_counters(fde_size * 2, False)
393
+ add_to_memory_counters(-fde_size * 2, False)
394
+ else:
395
+ add_to_memory_counters(ifft2_plan_slice_size / chunk_count * 2, True)
396
+ for _ in range(0, chunk_count):
397
+ add_to_memory_counters(fde_size / chunk_count, True)
398
+ add_to_memory_counters(-fde_size / chunk_count, True)
349
399
 
350
400
  add_to_memory_counters(recon_output_size, True)
351
401
  add_to_memory_counters(-fde_size, True)
352
402
  add_to_memory_counters(circular_mask_size, False)
353
403
  add_to_memory_counters(after_recon_swapaxis_slice, True)
354
404
 
355
- return (tot_memory_bytes * 1.05, fixed_amount + 250 * 1024 * 1024)
405
+ if min_mem_usage_ifft2 and min_mem_usage_filter:
406
+ return (tot_memory_bytes * 1.1 + 30 * 1024 * 1024, fixed_amount)
407
+ else:
408
+ return (tot_memory_bytes * 1.1, fixed_amount)
356
409
 
357
410
 
358
411
  def _calc_memory_bytes_SIRT3d_tomobar(
@@ -361,21 +414,48 @@ def _calc_memory_bytes_SIRT3d_tomobar(
361
414
  **kwargs,
362
415
  ) -> Tuple[int, int]:
363
416
 
417
+ detector_pad = 0
364
418
  if "detector_pad" in kwargs:
365
419
  detector_pad = kwargs["detector_pad"]
366
- else:
367
- detector_pad = 0
420
+ if detector_pad is True:
421
+ detector_pad = __estimate_detectorHoriz_padding(non_slice_dims_shape[1])
422
+ elif detector_pad is False:
423
+ detector_pad = 0
424
+
368
425
  anglesnum = non_slice_dims_shape[0]
369
- DetectorsLengthH = non_slice_dims_shape[1] + 2 * detector_pad
426
+ DetectorsLengthH_padded = non_slice_dims_shape[1] + 2 * detector_pad
370
427
  # calculate the output shape
371
428
  output_dims = _calc_output_dim_SIRT3d_tomobar(non_slice_dims_shape, **kwargs)
429
+ recon_data_size_original = (
430
+ np.prod(output_dims) * dtype.itemsize
431
+ ) # x_rec user-defined size
432
+
433
+ in_data_size = (anglesnum * DetectorsLengthH_padded) * dtype.itemsize
434
+
435
+ output_dims_larger_grid = (DetectorsLengthH_padded, DetectorsLengthH_padded)
372
436
 
373
- in_data_size = (anglesnum * DetectorsLengthH) * dtype.itemsize
374
- out_data_size = np.prod(output_dims) * dtype.itemsize
437
+ out_data_size = np.prod(output_dims_larger_grid) * dtype.itemsize
375
438
 
376
- astra_projection = 2.5 * (in_data_size + out_data_size)
439
+ R = in_data_size
440
+ C = out_data_size
377
441
 
378
- tot_memory_bytes = int(2 * in_data_size + 2 * out_data_size + astra_projection)
442
+ Res = in_data_size
443
+ Res_times_R = Res
444
+ C_times_res = out_data_size
445
+
446
+ astra_projection = (in_data_size + out_data_size)
447
+
448
+ tot_memory_bytes = int(
449
+ recon_data_size_original
450
+ + in_data_size
451
+ + out_data_size
452
+ + R
453
+ + C
454
+ + Res
455
+ + Res_times_R
456
+ + C_times_res
457
+ + astra_projection
458
+ )
379
459
  return (tot_memory_bytes, 0)
380
460
 
381
461
 
@@ -384,20 +464,102 @@ def _calc_memory_bytes_CGLS3d_tomobar(
384
464
  dtype: np.dtype,
385
465
  **kwargs,
386
466
  ) -> Tuple[int, int]:
467
+ detector_pad = 0
387
468
  if "detector_pad" in kwargs:
388
469
  detector_pad = kwargs["detector_pad"]
389
- else:
390
- detector_pad = 0
470
+ if detector_pad is True:
471
+ detector_pad = __estimate_detectorHoriz_padding(non_slice_dims_shape[1])
472
+ elif detector_pad is False:
473
+ detector_pad = 0
391
474
 
392
475
  anglesnum = non_slice_dims_shape[0]
393
- DetectorsLengthH = non_slice_dims_shape[1] + 2 * detector_pad
476
+ DetectorsLengthH_padded = non_slice_dims_shape[1] + 2 * detector_pad
394
477
  # calculate the output shape
395
478
  output_dims = _calc_output_dim_CGLS3d_tomobar(non_slice_dims_shape, **kwargs)
479
+ recon_data_size_original = (
480
+ np.prod(output_dims) * dtype.itemsize
481
+ ) # x_rec user-defined size
482
+
483
+ in_data_size = (anglesnum * DetectorsLengthH_padded) * dtype.itemsize
484
+ output_dims_larger_grid = (DetectorsLengthH_padded, DetectorsLengthH_padded)
485
+ recon_data_size = (
486
+ np.prod(output_dims_larger_grid) * dtype.itemsize
487
+ ) # large volume in the algorithm
488
+ recon_data_size2 = recon_data_size # x_rec linearised
489
+ d_recon = recon_data_size
490
+ d_recon2 = d_recon # linearised, possibly a copy
491
+
492
+ data_r = in_data_size
493
+ Ad = recon_data_size
494
+ Ad2 = Ad
495
+ s = data_r
496
+ collection = (
497
+ in_data_size
498
+ + recon_data_size_original
499
+ + recon_data_size
500
+ + recon_data_size2
501
+ + d_recon
502
+ + d_recon2
503
+ + data_r
504
+ + Ad
505
+ + Ad2
506
+ + s
507
+ )
508
+ astra_contribution = in_data_size + recon_data_size
396
509
 
397
- in_data_size = (anglesnum * DetectorsLengthH) * dtype.itemsize
398
- out_data_size = np.prod(output_dims) * dtype.itemsize
510
+ tot_memory_bytes = int(collection + astra_contribution)
511
+ return (tot_memory_bytes, 0)
399
512
 
400
- astra_projection = 2.5 * (in_data_size + out_data_size)
401
513
 
402
- tot_memory_bytes = int(2 * in_data_size + 2 * out_data_size + astra_projection)
514
+ def _calc_memory_bytes_FISTA3d_tomobar(
515
+ non_slice_dims_shape: Tuple[int, int],
516
+ dtype: np.dtype,
517
+ **kwargs,
518
+ ) -> Tuple[int, int]:
519
+ detector_pad = 0
520
+ if "detector_pad" in kwargs:
521
+ detector_pad = kwargs["detector_pad"]
522
+ if detector_pad is True:
523
+ detector_pad = __estimate_detectorHoriz_padding(non_slice_dims_shape[1])
524
+ elif detector_pad is False:
525
+ detector_pad = 0
526
+
527
+ anglesnum = non_slice_dims_shape[0]
528
+ DetectorsLengthH_padded = non_slice_dims_shape[1] + 2 * detector_pad
529
+
530
+ # calculate the output shape
531
+ output_dims = _calc_output_dim_FISTA3d_tomobar(non_slice_dims_shape, **kwargs)
532
+ recon_data_size_original = (
533
+ np.prod(output_dims) * dtype.itemsize
534
+ ) # recon user-defined size
535
+
536
+ in_data_siz_pad = (anglesnum * DetectorsLengthH_padded) * dtype.itemsize
537
+ output_dims_larger_grid = (DetectorsLengthH_padded, DetectorsLengthH_padded)
538
+
539
+ residual_grad = in_data_siz_pad
540
+ out_data_size = np.prod(output_dims_larger_grid) * dtype.itemsize
541
+ X_t = out_data_size
542
+ X_old = out_data_size
543
+
544
+ grad_fidelity = out_data_size
545
+
546
+ fista_part = (
547
+ recon_data_size_original
548
+ + in_data_siz_pad
549
+ + residual_grad
550
+ + grad_fidelity
551
+ + X_t
552
+ + X_old
553
+ + out_data_size
554
+ )
555
+ regul_part = 8 * np.prod(output_dims_larger_grid) * dtype.itemsize
556
+
557
+ tot_memory_bytes = int(fista_part + regul_part)
403
558
  return (tot_memory_bytes, 0)
559
+
560
+
561
+ def __estimate_detectorHoriz_padding(detX_size) -> int:
562
+ det_half = detX_size // 2
563
+ padded_value_exact = int(np.sqrt(2 * (det_half**2))) - det_half
564
+ padded_add_margin = int(0.1 * padded_value_exact)
565
+ return padded_value_exact + padded_add_margin
@@ -0,0 +1,14 @@
1
+ - method: standard_tomo
2
+ module_path: httomo.data.hdf.loaders
3
+ - method: find_center_vo
4
+ module_path: httomolibgpu.recon.rotation
5
+ - method: normalize
6
+ module_path: httomolibgpu.prep.normalize
7
+ - method: FISTA3d_tomobar
8
+ module_path: httomolibgpu.recon.algorithm
9
+ - method: calculate_stats
10
+ module_path: httomo.methods
11
+ - method: rescale_to_int
12
+ module_path: httomolib.misc.rescale
13
+ - method: save_to_images
14
+ module_path: httomolib.misc.images
@@ -0,0 +1,18 @@
1
+ - method: standard_tomo
2
+ module_path: httomo.data.hdf.loaders
3
+ - method: find_center_pc
4
+ module_path: httomolibgpu.recon.rotation
5
+ - method: normalize
6
+ module_path: httomolibgpu.prep.normalize
7
+ - method: remove_stripe_ti
8
+ module_path: httomolibgpu.prep.stripe
9
+ - method: FBP3d_tomobar
10
+ module_path: httomolibgpu.recon.algorithm
11
+ - method: data_resampler
12
+ module_path: httomolibgpu.misc.morph
13
+ - method: calculate_stats
14
+ module_path: httomo.methods
15
+ - method: rescale_to_int
16
+ module_path: httomolib.misc.rescale
17
+ - method: save_to_images
18
+ module_path: httomolib.misc.images
@@ -31,14 +31,10 @@ import ruamel.yaml
31
31
  import httomo_backends
32
32
  import yaml
33
33
 
34
- try:
35
- from httomo import __version__ as httomo_version
36
- except:
37
- httomo_version = "2.5" # temporary version fix for sphinx build
38
- pass
39
34
 
40
35
  CS = ruamel.yaml.comments.CommentedSeq # defaults to block style
41
36
 
37
+
42
38
  class SweepRange:
43
39
  """SweepRange class."""
44
40
 
@@ -140,11 +136,8 @@ def yaml_pipelines_generator(
140
136
  except OSError as e:
141
137
  print("loading yaml template failed", e)
142
138
 
143
- version_split = httomo_version.split(".")
144
- major = version_split[0]
145
- minor = version_split[1]
146
139
  pipeline_full.yaml_set_start_comment(
147
- f"This pipeline is supported by HTTomo ver. {major}.{minor}"
140
+ "This pipeline should be supported by the latest developments of HTTomo. Use module load httomo/latest module at Diamond."
148
141
  )
149
142
 
150
143
  if "loaders" in module_name:
@@ -216,6 +209,17 @@ def yaml_pipelines_generator(
216
209
  key="metadata_path",
217
210
  comment="Provide an absolute path to the text file with distortion coefficients.",
218
211
  )
212
+ elif "data_resampler" in method_name:
213
+ pipeline_full.yaml_set_comment_before_after_key(
214
+ i,
215
+ "--- Down/up sampling the data. --- ",
216
+ indent=0,
217
+ )
218
+ pipeline_full += yaml_template_method
219
+ pipeline_full[i]["parameters"].yaml_add_eol_comment(
220
+ key="newshape",
221
+ comment="Provide a new shape for a 2D slice, e.g. [256, 256].",
222
+ )
219
223
  elif "sino_360_to_180" in method_name:
220
224
  pipeline_full.yaml_set_comment_before_after_key(
221
225
  i,
@@ -243,7 +247,7 @@ def yaml_pipelines_generator(
243
247
  pipeline_full += yaml_template_method
244
248
  pipeline_full[i]["parameters"].yaml_add_eol_comment(
245
249
  key="alpha",
246
- comment="Controls the balance between the strength of the filter and the amount of noise reduction. Higher leads to less noise and more blur.",
250
+ comment="Controls the balance between the strength of the filter and the amount of noise reduction. Smaller values lead to less noise and more blur.",
247
251
  )
248
252
  elif "stripe" in module_name:
249
253
  pipeline_full.yaml_set_comment_before_after_key(
@@ -265,7 +269,7 @@ def yaml_pipelines_generator(
265
269
  )
266
270
  pipeline_full[i]["parameters"].yaml_add_eol_comment(
267
271
  key="detector_pad",
268
- comment="Horizontal detector padding to minimise circle/arc-type artifacts in the reconstruction",
272
+ comment="Horizontal detector padding to minimise circle/arc-type artifacts in the reconstruction. Set to true to enable automatic padding or an integer",
269
273
  )
270
274
  pipeline_full[i]["parameters"].yaml_add_eol_comment(
271
275
  key="recon_mask_radius",
@@ -6,3 +6,4 @@
6
6
  isotropic: true
7
7
  nonnegativity: false
8
8
  lipschitz_const: 8.0
9
+ half_precision: false
@@ -4,3 +4,4 @@
4
4
  regularisation_parameter: 1.0e-05
5
5
  iterations: 3000
6
6
  time_marching_parameter: 0.001
7
+ half_precision: false
@@ -2,8 +2,9 @@
2
2
  module_path: httomolibgpu.recon.algorithm
3
3
  parameters:
4
4
  center: ${{centering.side_outputs.centre_of_rotation}}
5
- detector_pad: 0
5
+ detector_pad: false
6
6
  recon_size: null
7
+ recon_mask_radius: 0.95
7
8
  iterations: 20
8
9
  nonnegativity: true
9
10
  neglog: false
@@ -2,7 +2,7 @@
2
2
  module_path: httomolibgpu.recon.algorithm
3
3
  parameters:
4
4
  center: ${{centering.side_outputs.centre_of_rotation}}
5
- detector_pad: 0
5
+ detector_pad: false
6
6
  filter_type: ram-lak
7
7
  filter_parameter: null
8
8
  filter_d: null
@@ -2,7 +2,7 @@
2
2
  module_path: httomolibgpu.recon.algorithm
3
3
  parameters:
4
4
  center: ${{centering.side_outputs.centre_of_rotation}}
5
- detector_pad: 0
5
+ detector_pad: false
6
6
  filter_freq_cutoff: 0.35
7
7
  recon_size: null
8
8
  recon_mask_radius: 0.95
@@ -0,0 +1,15 @@
1
+ - method: FISTA3d_tomobar
2
+ module_path: httomolibgpu.recon.algorithm
3
+ parameters:
4
+ center: ${{centering.side_outputs.centre_of_rotation}}
5
+ detector_pad: false
6
+ recon_size: null
7
+ recon_mask_radius: 0.95
8
+ iterations: 20
9
+ subsets_number: 6
10
+ regularisation_type: PD_TV
11
+ regularisation_parameter: 1.0e-06
12
+ regularisation_iterations: 50
13
+ regularisation_half_precision: true
14
+ nonnegativity: true
15
+ neglog: false
@@ -2,9 +2,12 @@
2
2
  module_path: httomolibgpu.recon.algorithm
3
3
  parameters:
4
4
  center: ${{centering.side_outputs.centre_of_rotation}}
5
- detector_pad: 0
5
+ detector_pad: false
6
6
  filter_type: shepp
7
7
  filter_freq_cutoff: 1.0
8
8
  recon_size: null
9
9
  recon_mask_radius: 0.95
10
+ power_of_2_oversampling: true
11
+ min_mem_usage_filter: false
12
+ min_mem_usage_ifft2: false
10
13
  neglog: false
@@ -2,8 +2,9 @@
2
2
  module_path: httomolibgpu.recon.algorithm
3
3
  parameters:
4
4
  center: ${{centering.side_outputs.centre_of_rotation}}
5
- detector_pad: 0
5
+ detector_pad: false
6
6
  recon_size: null
7
+ recon_mask_radius: 0.95
7
8
  iterations: 300
8
9
  nonnegativity: true
9
10
  neglog: false
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: httomo-backends
3
- Version: 0.6.2
3
+ Version: 0.7
4
4
  Summary: Supplementary files for HTTomo backends.
5
5
  Author: Garry ODonnell, Jacob Williamson
6
6
  Author-email: Daniil Kazantsev <daniil.kazantsev@diamond.ac.uk>, Yousef Moazzam <yousef.moazzam@diamond.ac.uk>, Jessica Verschoyle <jessica.verschoyle@diamond.ac.uk>, Naman Gera <naman.gera@diamond.ac.uk>, scientificsoftware@diamond.ac.uk
@@ -7,7 +7,7 @@ httomo_backends/methods_database/packages/httomo.yaml,sha256=tI3D-7IJcdu4EbKwjsj
7
7
  httomo_backends/methods_database/packages/backends/httomolib/httomolib.yaml,sha256=8l2Z6GGlXIIe2vcX85GK4wis5zxhgmg7EmlwLMV_rtI,938
8
8
  httomo_backends/methods_database/packages/backends/httomolib/httomolib_modules.yaml,sha256=tbvivxcAc90Wu36v1yFnGN-WqBIA1NHGWrg_D28UXi8,117
9
9
  httomo_backends/methods_database/packages/backends/httomolibgpu/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
10
- httomo_backends/methods_database/packages/backends/httomolibgpu/httomolibgpu.yaml,sha256=HXfQPfhYjlNbnfRaBdTf7zs71Chvfl8B93P0ZfJQN7U,5118
10
+ httomo_backends/methods_database/packages/backends/httomolibgpu/httomolibgpu.yaml,sha256=Y1a3J_OCeojiG4HhbRPkDdJ0KvdpGARkEk6k5OcIzHY,5347
11
11
  httomo_backends/methods_database/packages/backends/httomolibgpu/httomolibgpu_modules.yaml,sha256=HZWQ74Ygi25hjNg7wR9muPDdmN8STtOMY-LXWaTfspc,282
12
12
  httomo_backends/methods_database/packages/backends/httomolibgpu/supporting_funcs/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
13
13
  httomo_backends/methods_database/packages/backends/httomolibgpu/supporting_funcs/misc/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -20,7 +20,7 @@ httomo_backends/methods_database/packages/backends/httomolibgpu/supporting_funcs
20
20
  httomo_backends/methods_database/packages/backends/httomolibgpu/supporting_funcs/prep/phase.py,sha256=kYznizW0jMVJdGyuE10McVLsWWggUsP5bvJiHEVvSSM,4075
21
21
  httomo_backends/methods_database/packages/backends/httomolibgpu/supporting_funcs/prep/stripe.py,sha256=KnS8IpcXaLeiIWr4qAKwOrcK1vS9zrU6u5gOITZ159k,4623
22
22
  httomo_backends/methods_database/packages/backends/httomolibgpu/supporting_funcs/recon/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
23
- httomo_backends/methods_database/packages/backends/httomolibgpu/supporting_funcs/recon/algorithm.py,sha256=PiCLqsGudum2fvVNWrU_lZq4lLJmcKpCS7wEorb6HsA,14972
23
+ httomo_backends/methods_database/packages/backends/httomolibgpu/supporting_funcs/recon/algorithm.py,sha256=ztqcHihOoprL0xYggv8pkF3AS9mQ1L6o0AICszdvTfg,20656
24
24
  httomo_backends/methods_database/packages/backends/httomolibgpu/supporting_funcs/recon/peak_memory_line_profile_hook.py,sha256=hb-CyqD5TKxDg6Rg5fvFeXIO2nvjbp_XMTeRdJZ8ONo,6347
25
25
  httomo_backends/methods_database/packages/backends/tomopy/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
26
26
  httomo_backends/methods_database/packages/backends/tomopy/tomopy.yaml,sha256=URe18BAV1EbGLil53t88T42BuKSiUHz6r3uzs_wo8Ug,11215
@@ -36,16 +36,18 @@ httomo_backends/pipelines_full/FBP2d_astra_directive.yaml,sha256=BAT4wUa3nOacHRA
36
36
  httomo_backends/pipelines_full/FBP3d_tomobar_denoising_directive.yaml,sha256=Ycu8X7mS2n872e0ji4btPLjSTYgEhcZVPeMEeI6MPAk,644
37
37
  httomo_backends/pipelines_full/FBP3d_tomobar_directive.yaml,sha256=QyqyAmWZjmcgV0PjhgmZtSjytHt8BeRLncH4hkJRmcs,574
38
38
  httomo_backends/pipelines_full/FBP3d_tomobar_noimagesaving_directive.yaml,sha256=uute7GdEEshbnmljjeyDi3Z5aqZftBTvo7Ti4wKgzhk,403
39
+ httomo_backends/pipelines_full/FISTA3d_tomobar_directive.yaml,sha256=xuBtnN3vT2tfpKwmW0CH12CRXeV2evNN2hpdPul9L6c,445
39
40
  httomo_backends/pipelines_full/LPRec3d_tomobar_directive.yaml,sha256=c6c-cXCstUgLVqprfMFVdxzcTCeE8H-Dnhq7kmSIhYc,577
40
41
  httomo_backends/pipelines_full/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
41
42
  httomo_backends/pipelines_full/deg360_distortion_FBP3d_tomobar_directive.yaml,sha256=3Ht3yAzi97VW29OfvDE9j_p3NYbZfHDlfZMuRivsdKo,676
42
43
  httomo_backends/pipelines_full/deg360_paganin_FBP3d_tomobar_directive.yaml,sha256=Qikcxqq_b3_9TpaOg5eSlYqfs1Vj9l30vx56cl5YoVI,660
43
44
  httomo_backends/pipelines_full/sweep_center_FBP3d_tomobar_directive.yaml,sha256=ERai5NvyAQz9-1EAdMUw3XkjlMvZhh6LCtXQpRh7mv4,277
44
45
  httomo_backends/pipelines_full/sweep_paganin_FBP3d_tomobar_directive.yaml,sha256=qoiY62uP5kHSL4qqSThJAaMwHq4PTN-dJSNRsBFxyQw,397
46
+ httomo_backends/pipelines_full/titaren_center_pc_FBP3d_resample_directive.yaml,sha256=lhT-jE2karklr_-cgEyvPRYLVwNGJgpf8XBI1r1TMLc,574
45
47
  httomo_backends/pipelines_full/tomopy_gridrec_directive.yaml,sha256=NlrX-mqyzjJvwGotTLwosBnC4d9pPRNB1JWFA7YXHuM,533
46
48
  httomo_backends/scripts/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
47
49
  httomo_backends/scripts/json_pipelines_generator.py,sha256=iWTsYr1i0Ei77Imaml5HXWvZUUeX-tkU1WRIdxskV3M,8322
48
- httomo_backends/scripts/yaml_pipelines_generator.py,sha256=ZEdYj80qr5qNnGOT0JT7OSKQjI9xYWy4d3JFUJYXFlU,16034
50
+ httomo_backends/scripts/yaml_pipelines_generator.py,sha256=t_B3qJ0AGsjzd1_rSp76pC-9o4JbO7e28UIfWcN9olk,16393
49
51
  httomo_backends/scripts/yaml_templates_generator.py,sha256=NjE5q8YXxkXjA-9WTg4YB8ccawNA0veeJE1C8yyWqlI,8532
50
52
  httomo_backends/scripts/yaml_unsupported_tomopy_remove.py,sha256=R3ZAfFgpVsBWS7zBjLlU83-66nawo7EBegFsIAHBWmQ,3715
51
53
  httomo_backends/yaml_templates/httomo/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -61,24 +63,24 @@ httomo_backends/yaml_templates/httomolib/httomolib.prep.phase/paganin_filter.yam
61
63
  httomo_backends/yaml_templates/httomolibgpu/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
62
64
  httomo_backends/yaml_templates/httomolibgpu/httomolibgpu.misc.corr/median_filter.yaml,sha256=vKTeGhT0eLXWMDBvfglisIIZINlBKagOjwRo4JFQRpQ,108
63
65
  httomo_backends/yaml_templates/httomolibgpu/httomolibgpu.misc.corr/remove_outlier.yaml,sha256=k3y2Iwuv401EHdQZWIUreGAyEFoWasu7-0i7ibxRrhQ,110
64
- httomo_backends/yaml_templates/httomolibgpu/httomolibgpu.misc.denoise/total_variation_PD.yaml,sha256=U46wnCcmvLXXiMVU91CpEjfq2XsTLG81v6i6O5wZBMA,213
65
- httomo_backends/yaml_templates/httomolibgpu/httomolibgpu.misc.denoise/total_variation_ROF.yaml,sha256=2l4-tfLFSGM-emRS8x695WIGhMCxmTzTqO5x1t-2RyA,179
66
+ httomo_backends/yaml_templates/httomolibgpu/httomolibgpu.misc.denoise/total_variation_PD.yaml,sha256=73fCwAO9IcPuuC36g5_XJaIB9ujWPli5UdbqrLhWyIk,239
67
+ httomo_backends/yaml_templates/httomolibgpu/httomolibgpu.misc.denoise/total_variation_ROF.yaml,sha256=eXaD6jtKZ1gSplMG663lAhdS6Q79xns4AgKSuMx9Sgc,205
66
68
  httomo_backends/yaml_templates/httomolibgpu/httomolibgpu.misc.morph/data_resampler.yaml,sha256=4fDcC2seGd_TFUyMG0DAs68NrJn5lmIsx7WQ_6bn-A4,142
67
69
  httomo_backends/yaml_templates/httomolibgpu/httomolibgpu.misc.morph/sino_360_to_180.yaml,sha256=vikNDlp_Py6kye8-dySMpCxhYlJp_-AODQNGHTQCarQ,171
68
70
  httomo_backends/yaml_templates/httomolibgpu/httomolibgpu.misc.rescale/rescale_to_int.yaml,sha256=WR_exoyowYnXgDOUH5JYGPQ17-MfUayuVkNwMQTHzac,198
69
71
  httomo_backends/yaml_templates/httomolibgpu/httomolibgpu.prep.alignment/distortion_correction_proj_discorpy.yaml,sha256=KxWTzuZOoHUymFt4OJZVT7jhPs6oAuUmSQskQJqKwZk,163
70
72
  httomo_backends/yaml_templates/httomolibgpu/httomolibgpu.prep.normalize/normalize.yaml,sha256=PIfA4jwCmnWtz7V5n0Zng8lPvD4h1YyIriBSL39CtVM,214
71
- httomo_backends/yaml_templates/httomolibgpu/httomolibgpu.prep.phase/paganin_filter_savu.yaml,sha256=9Hwxgu1WG6lMXliXF7XWx2Z9O1D1yMSWkRjXNfdrn9o,226
72
73
  httomo_backends/yaml_templates/httomolibgpu/httomolibgpu.prep.phase/paganin_filter_tomopy.yaml,sha256=sHWZibK7drnBufYVOND9LZATaBRMtHKkbbBoquCBcmE,157
73
74
  httomo_backends/yaml_templates/httomolibgpu/httomolibgpu.prep.stripe/raven_filter.yaml,sha256=SDqgP_RLq7jjnL9Fz7hfrKko4F7-yahCsabBIJ0XMC8,169
74
75
  httomo_backends/yaml_templates/httomolibgpu/httomolibgpu.prep.stripe/remove_all_stripe.yaml,sha256=MfoMeF_C2zRE7-W5cknhmG9-a5QYb5lpSdz9dwOndJQ,138
75
76
  httomo_backends/yaml_templates/httomolibgpu/httomolibgpu.prep.stripe/remove_stripe_based_sorting.yaml,sha256=xyv_XKqFhs801VcsMUfWPHiKvek0qh8RhkbnInWR5i8,116
76
77
  httomo_backends/yaml_templates/httomolibgpu/httomolibgpu.prep.stripe/remove_stripe_ti.yaml,sha256=5Ed2YbB0Kf-08_nNP5dzTukNDZopRTOo1I6ODJVRrlM,95
77
- httomo_backends/yaml_templates/httomolibgpu/httomolibgpu.recon.algorithm/CGLS3d_tomobar.yaml,sha256=q6qCBdZHAkzVTvilkjhWATV88neFjzjUu9Kvcs2VrkM,244
78
- httomo_backends/yaml_templates/httomolibgpu/httomolibgpu.recon.algorithm/FBP2d_astra.yaml,sha256=Nf2Gh0XewTK4PRwctIPU7KtAdnbd3YWGWHgJMQLLhhs,297
79
- httomo_backends/yaml_templates/httomolibgpu/httomolibgpu.recon.algorithm/FBP3d_tomobar.yaml,sha256=PuJf07CK3wdoACwwRoI769oD0BLXJSVXXbkW9ABMm58,257
80
- httomo_backends/yaml_templates/httomolibgpu/httomolibgpu.recon.algorithm/LPRec3d_tomobar.yaml,sha256=CgJxNqpeTLWG6DvQXTgkqzmX2wZaJCCG9_aJ-o_AAIs,281
81
- httomo_backends/yaml_templates/httomolibgpu/httomolibgpu.recon.algorithm/SIRT3d_tomobar.yaml,sha256=MI3XHxpgKz-dQ3n0Zjfr9ir0hgh-7Uruke3iovgvGuc,245
78
+ httomo_backends/yaml_templates/httomolibgpu/httomolibgpu.recon.algorithm/CGLS3d_tomobar.yaml,sha256=oWoW2vYNXyAeQ81NaV865A0K8XDi3QIbzV9WcRQqi_A,276
79
+ httomo_backends/yaml_templates/httomolibgpu/httomolibgpu.recon.algorithm/FBP2d_astra.yaml,sha256=MxUbW-dMxMrI4Exn5mgh2ovie4Ldv1Eb-zS68ETsNCU,301
80
+ httomo_backends/yaml_templates/httomolibgpu/httomolibgpu.recon.algorithm/FBP3d_tomobar.yaml,sha256=H9-PTd8qW2qXqgHYw-NfZGgy2yut7ReKsbsR3x0_OOA,261
81
+ httomo_backends/yaml_templates/httomolibgpu/httomolibgpu.recon.algorithm/FISTA3d_tomobar.yaml,sha256=i2K7Yc19VY6uZZR8bVjb85jpWIShlM_yCGD-Z5Eb-5E,442
82
+ httomo_backends/yaml_templates/httomolibgpu/httomolibgpu.recon.algorithm/LPRec3d_tomobar.yaml,sha256=X_qcuTOcFW_rXaXU-XhZYQUaPkOgKe5r7uX5stpf1mE,382
83
+ httomo_backends/yaml_templates/httomolibgpu/httomolibgpu.recon.algorithm/SIRT3d_tomobar.yaml,sha256=oom622LQ8xAZbZiHm4t0PSKKsMkX5G743vVBqRbMQek,277
82
84
  httomo_backends/yaml_templates/httomolibgpu/httomolibgpu.recon.rotation/find_center_360.yaml,sha256=nXjbgTBDQcIlBWvXwMd8FoNimtq-8QabgNWAI-fiFU8,322
83
85
  httomo_backends/yaml_templates/httomolibgpu/httomolibgpu.recon.rotation/find_center_pc.yaml,sha256=g3CNIaLhhBI6igluIMwytFqVXzrDlv8A1EU1C7ey4FE,208
84
86
  httomo_backends/yaml_templates/httomolibgpu/httomolibgpu.recon.rotation/find_center_vo.yaml,sha256=CmJ_0a73jX7MmOxQIvQrrKg_2HEtK0MXNVXLrfR3caU,296
@@ -142,8 +144,8 @@ httomo_backends/yaml_templates/tomopy/tomopy.sim.project/add_zingers.yaml,sha256
142
144
  httomo_backends/yaml_templates/tomopy/tomopy.sim.project/project.yaml,sha256=XBVhW5ZxT9C89tHcwDG7OOgcWNdNtQq97mqlBEoiMnU,202
143
145
  httomo_backends/yaml_templates/tomopy/tomopy.sim.project/project2.yaml,sha256=5raeQ-w9nS9mbAzn2ZqhPjdcyfLOkkJflKNStdEnYRA,238
144
146
  httomo_backends/yaml_templates/tomopy/tomopy.sim.project/project3.yaml,sha256=oyofKSMi-_dSpfjrKVMNDqoBhBCCSYbEVRz2Lsc8uTI,257
145
- httomo_backends-0.6.2.dist-info/licenses/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
146
- httomo_backends-0.6.2.dist-info/METADATA,sha256=EDeFVHH7HHFlB3KTyoYJA42Mxirf3PdJlT9JsEJVKGQ,2312
147
- httomo_backends-0.6.2.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
148
- httomo_backends-0.6.2.dist-info/top_level.txt,sha256=v4x8d4CeEyMwo8QoqIvL_p-WoXAVD1bVnASPIrLjSTg,16
149
- httomo_backends-0.6.2.dist-info/RECORD,,
147
+ httomo_backends-0.7.dist-info/licenses/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
148
+ httomo_backends-0.7.dist-info/METADATA,sha256=i2Lo2q21-TN8TYwVmhkDVRbIgb3Vysu4HylmcME7nrM,2310
149
+ httomo_backends-0.7.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
150
+ httomo_backends-0.7.dist-info/top_level.txt,sha256=v4x8d4CeEyMwo8QoqIvL_p-WoXAVD1bVnASPIrLjSTg,16
151
+ httomo_backends-0.7.dist-info/RECORD,,
@@ -1,11 +0,0 @@
1
- - method: paganin_filter_savu
2
- module_path: httomolibgpu.prep.phase
3
- parameters:
4
- ratio: 250.0
5
- energy: 53.0
6
- distance: 1.0
7
- resolution: 1.28
8
- pad_y: 100
9
- pad_x: 100
10
- pad_method: edge
11
- increment: 0.0