tomwer 1.2.1__py3-none-any.whl → 1.3.12__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.
- orangecontrib/tomwer/tutorials/icat_publication.ows +58 -0
- orangecontrib/tomwer/widgets/__init__.py +11 -11
- orangecontrib/tomwer/widgets/control/DataDiscoveryOW.py +2 -2
- orangecontrib/tomwer/widgets/control/DataListOW.py +9 -7
- orangecontrib/tomwer/widgets/control/DataListenerOW.py +6 -6
- orangecontrib/tomwer/widgets/control/DataSelectorOW.py +21 -10
- orangecontrib/tomwer/widgets/control/DataValidatorOW.py +6 -6
- orangecontrib/tomwer/widgets/control/EDF2NXTomomillOW.py +24 -7
- orangecontrib/tomwer/widgets/control/EmailOW.py +4 -4
- orangecontrib/tomwer/widgets/control/NXTomomillMixIn.py +3 -3
- orangecontrib/tomwer/widgets/control/NXTomomillOW.py +64 -23
- orangecontrib/tomwer/widgets/control/NXtomoConcatenate.py +20 -8
- orangecontrib/tomwer/widgets/control/NotifierOW.py +1 -0
- orangecontrib/tomwer/widgets/control/SingleTomoObjOW.py +6 -6
- orangecontrib/tomwer/widgets/control/VolumeSelector.py +7 -4
- orangecontrib/tomwer/widgets/control/VolumeSymLinkOW.py +182 -182
- orangecontrib/tomwer/widgets/debugtools/DatasetGeneratorOW.py +5 -5
- orangecontrib/tomwer/widgets/edit/DarkFlatPatchOW.py +4 -4
- orangecontrib/tomwer/widgets/edit/ImageKeyEditorOW.py +3 -3
- orangecontrib/tomwer/widgets/edit/ImageKeyUpgraderOW.py +8 -1
- orangecontrib/tomwer/widgets/edit/NXtomoEditorOW.py +3 -3
- orangecontrib/tomwer/widgets/edit/test/test_nxtomo_editor.py +3 -3
- orangecontrib/tomwer/widgets/icat/PublishProcessedDataOW.py +115 -0
- orangecontrib/tomwer/widgets/icat/RawDataScreenshotCreatorOW.py +98 -0
- orangecontrib/tomwer/widgets/icat/SaveToGalleryAndPublishOW.py +129 -0
- orangecontrib/tomwer/widgets/icat/__init__.py +13 -0
- orangecontrib/tomwer/widgets/icat/icons/add_gallery.png +0 -0
- orangecontrib/tomwer/widgets/icat/icons/add_gallery.svg +82 -0
- orangecontrib/tomwer/widgets/icat/icons/publish_processed_data.png +0 -0
- orangecontrib/tomwer/widgets/icat/icons/publish_processed_data.svg +95 -0
- orangecontrib/tomwer/widgets/icat/icons/raw_screenshots.png +0 -0
- orangecontrib/tomwer/widgets/icat/icons/raw_screenshots.svg +143 -0
- orangecontrib/tomwer/widgets/icons/tomwer_data_portal.png +0 -0
- orangecontrib/tomwer/widgets/icons/tomwer_data_portal.svg +76 -0
- orangecontrib/tomwer/widgets/reconstruction/AxisOW.py +22 -20
- orangecontrib/tomwer/widgets/reconstruction/CastNabuVolumeOW.py +19 -3
- orangecontrib/tomwer/widgets/reconstruction/NabuHelicalPrepareWeightsDoubleOW.py +184 -169
- orangecontrib/tomwer/widgets/reconstruction/NabuOW.py +23 -0
- orangecontrib/tomwer/widgets/reconstruction/NabuVolumeOW.py +39 -5
- orangecontrib/tomwer/widgets/reconstruction/SAAxisOW.py +18 -22
- orangecontrib/tomwer/widgets/reconstruction/SADeltaBetaOW.py +18 -26
- orangecontrib/tomwer/widgets/reconstruction/SinoNormOW.py +15 -19
- orangecontrib/tomwer/widgets/visualization/DataViewerOW.py +9 -9
- orangecontrib/tomwer/widgets/visualization/DiffViewerOW.py +1 -1
- orangecontrib/tomwer/widgets/visualization/LivesliceOW.py +1 -1
- orangecontrib/tomwer/widgets/visualization/NXtomoMetadataViewerOW.py +3 -3
- orangecontrib/tomwer/widgets/visualization/SinogramViewerOW.py +0 -1
- orangecontrib/tomwer/widgets/visualization/VolumeViewerOW.py +3 -29
- tomwer/__main__.py +7 -64
- tomwer/app/axis.py +3 -3
- tomwer/app/canvas.py +8 -0
- tomwer/app/canvas_launcher/config.py +16 -14
- tomwer/app/canvas_launcher/environ.py +1 -0
- tomwer/app/canvas_launcher/mainwindow.py +4 -1
- tomwer/app/darkref.py +1 -1
- tomwer/app/darkrefpatch.py +1 -1
- tomwer/app/diffframe.py +3 -3
- tomwer/app/imagekeyeditor.py +5 -5
- tomwer/app/imagekeyupgrader.py +5 -5
- tomwer/app/intensitynormalization.py +14 -13
- tomwer/app/{saaxis.py → multicor.py} +3 -3
- tomwer/app/{sadeltabeta.py → multipag.py} +3 -3
- tomwer/app/nabuapp.py +0 -11
- tomwer/app/radiostack.py +6 -4
- tomwer/app/samplemoved.py +3 -2
- tomwer/app/scanviewer.py +4 -2
- tomwer/app/sinogramviewer.py +3 -2
- tomwer/app/slicestack.py +3 -2
- tomwer/app/zstitching.py +88 -6
- tomwer/core/cluster/cluster.py +26 -0
- tomwer/core/log/logger.py +7 -5
- tomwer/core/process/conditions/filters.py +1 -1
- tomwer/core/process/control/datalistener/datalistener.py +19 -14
- tomwer/core/process/control/datawatcher/edfdwprocess.py +0 -9
- tomwer/core/process/control/nxtomoconcatenate.py +13 -13
- tomwer/core/process/control/nxtomomill.py +92 -34
- tomwer/core/process/control/scantransfer.py +20 -43
- tomwer/core/process/control/scanvalidator.py +3 -2
- tomwer/core/process/control/test/test_concatenate_nxtomos.py +9 -9
- tomwer/core/process/control/test/test_email.py +4 -4
- tomwer/core/process/control/test/test_h52nx_process.py +59 -7
- tomwer/core/process/control/test/test_volume_link.py +64 -64
- tomwer/core/process/control/timer.py +1 -1
- tomwer/core/process/control/volumesymlink.py +200 -200
- tomwer/core/process/edit/darkflatpatch.py +14 -15
- tomwer/core/process/edit/imagekeyeditor.py +41 -39
- tomwer/core/process/icat/__init__.py +0 -0
- tomwer/core/process/icat/createscreenshots.py +100 -0
- tomwer/core/process/icat/gallery.py +377 -0
- tomwer/core/process/icat/icatbase.py +36 -0
- tomwer/core/process/icat/publish.py +228 -0
- tomwer/core/process/icat/screenshots.py +27 -0
- tomwer/core/process/output.py +52 -0
- tomwer/core/process/reconstruction/axis/axis.py +280 -69
- tomwer/core/process/reconstruction/axis/mode.py +163 -48
- tomwer/core/process/reconstruction/axis/params.py +29 -21
- tomwer/core/process/reconstruction/darkref/darkrefs.py +41 -127
- tomwer/core/process/reconstruction/darkref/darkrefscopy.py +4 -3
- tomwer/core/process/reconstruction/darkref/params.py +1 -1
- tomwer/core/process/reconstruction/nabu/castvolume.py +4 -4
- tomwer/core/process/reconstruction/nabu/helical.py +9 -5
- tomwer/core/process/reconstruction/nabu/nabucommon.py +71 -78
- tomwer/core/process/reconstruction/nabu/nabuscores.py +425 -53
- tomwer/core/process/reconstruction/nabu/nabuslices.py +114 -93
- tomwer/core/process/reconstruction/nabu/nabuvolume.py +54 -27
- tomwer/core/process/reconstruction/nabu/plane.py +9 -0
- tomwer/core/process/reconstruction/nabu/settings.py +2 -2
- tomwer/core/process/reconstruction/nabu/utils.py +164 -26
- tomwer/core/process/reconstruction/output.py +108 -0
- tomwer/core/process/reconstruction/saaxis/saaxis.py +238 -264
- tomwer/core/process/reconstruction/sadeltabeta/sadeltabeta.py +151 -87
- tomwer/core/process/reconstruction/scores/params.py +7 -4
- tomwer/core/process/reconstruction/scores/scores.py +13 -0
- tomwer/core/process/reconstruction/test/test_axis_params.py +2 -2
- tomwer/core/process/reconstruction/test/test_darkref.py +3 -3
- tomwer/core/process/reconstruction/test/test_darkref_copy.py +7 -7
- tomwer/core/process/reconstruction/test/test_saaxis.py +3 -4
- tomwer/core/process/reconstruction/test/test_sadeltabeta.py +2 -2
- tomwer/core/process/stitching/nabustitcher.py +13 -12
- tomwer/core/process/task.py +34 -26
- tomwer/core/process/test/test_axis.py +13 -12
- tomwer/core/process/test/test_dark_and_flat.py +10 -7
- tomwer/core/process/test/test_data_transfer.py +10 -8
- tomwer/core/process/test/test_nabu.py +14 -6
- tomwer/core/process/test/test_normalization.py +4 -4
- tomwer/core/scan/blissscan.py +3 -3
- tomwer/core/scan/edfscan.py +13 -10
- tomwer/core/scan/hdf5scan.py +19 -530
- tomwer/core/scan/nxtomoscan.py +534 -0
- tomwer/core/scan/scanbase.py +72 -44
- tomwer/core/scan/scanfactory.py +13 -13
- tomwer/core/scan/test/test_edf.py +2 -2
- tomwer/core/scan/test/test_future_scan.py +3 -3
- tomwer/core/scan/test/test_h5.py +18 -16
- tomwer/core/scan/test/test_process_registration.py +4 -40
- tomwer/core/scan/test/test_scan.py +5 -78
- tomwer/core/settings.py +22 -2
- tomwer/core/test/test_scanutils.py +8 -7
- tomwer/core/test/test_utils.py +35 -28
- tomwer/core/tomwer_object.py +1 -1
- tomwer/core/utils/__init__.py +0 -466
- tomwer/core/utils/deprecation.py +1 -1
- tomwer/core/utils/dictutils.py +14 -0
- tomwer/core/utils/lbsram.py +35 -0
- tomwer/core/utils/nxtomoutils.py +1 -1
- tomwer/core/utils/scanutils.py +6 -6
- tomwer/core/utils/spec.py +263 -0
- tomwer/core/volume/edfvolume.py +6 -6
- tomwer/core/volume/hdf5volume.py +6 -6
- tomwer/core/volume/jp2kvolume.py +6 -6
- tomwer/core/volume/rawvolume.py +6 -6
- tomwer/core/volume/tiffvolume.py +12 -12
- tomwer/core/volume/volumefactory.py +2 -2
- tomwer/gui/cluster/slurm.py +274 -65
- tomwer/gui/cluster/supervisor.py +12 -0
- tomwer/gui/cluster/test/test_cluster.py +14 -2
- tomwer/gui/cluster/test/test_supervisor.py +3 -3
- tomwer/gui/configuration/__init__.py +0 -0
- tomwer/gui/{reconstruction/nabu → configuration}/action.py +1 -32
- tomwer/gui/configuration/level.py +22 -0
- tomwer/gui/control/actions.py +54 -0
- tomwer/gui/control/datalist.py +83 -16
- tomwer/gui/control/datalistener.py +4 -16
- tomwer/gui/control/datawatcher/controlwidget.py +2 -4
- tomwer/gui/control/datawatcher/datawatcher.py +1 -24
- tomwer/gui/control/{email.py → emailnotifier.py} +9 -18
- tomwer/gui/control/history.py +2 -2
- tomwer/gui/control/observations.py +2 -2
- tomwer/gui/control/reducedarkflatselector.py +9 -9
- tomwer/gui/control/selectorwidgetbase.py +36 -9
- tomwer/gui/control/serie/seriecreator.py +5 -22
- tomwer/gui/control/test/test_email.py +1 -1
- tomwer/gui/control/test/test_scanvalidator.py +6 -5
- tomwer/gui/control/test/test_single_tomo_obj.py +3 -3
- tomwer/gui/control/tomoobjdisplaymode.py +8 -0
- tomwer/gui/debugtools/datasetgenerator.py +3 -3
- tomwer/gui/edit/dkrfpatch.py +20 -26
- tomwer/gui/edit/imagekeyeditor.py +11 -12
- tomwer/gui/edit/nxtomoeditor.py +111 -44
- tomwer/gui/edit/nxtomowarmer.py +7 -6
- tomwer/gui/edit/test/test_dkrf_patch.py +13 -13
- tomwer/gui/edit/test/test_image_key_editor.py +3 -3
- tomwer/gui/edit/test/test_nx_editor.py +40 -16
- tomwer/gui/icat/__init__.py +0 -0
- tomwer/gui/icat/createscreenshots.py +80 -0
- tomwer/gui/icat/gallery.py +214 -0
- tomwer/gui/icat/publish.py +187 -0
- tomwer/gui/imagefromfile.py +2 -2
- tomwer/gui/qfolderdialog.py +24 -1
- tomwer/gui/reconstruction/axis/CompareImages.py +88 -168
- tomwer/gui/reconstruction/axis/axis.py +171 -57
- tomwer/gui/reconstruction/axis/radioaxis.py +122 -257
- tomwer/gui/reconstruction/darkref/darkrefcopywidget.py +3 -2
- tomwer/gui/reconstruction/darkref/darkrefwidget.py +2 -1
- tomwer/gui/reconstruction/nabu/castvolume.py +14 -3
- tomwer/gui/reconstruction/nabu/check.py +9 -9
- tomwer/gui/reconstruction/nabu/helical.py +29 -12
- tomwer/gui/reconstruction/nabu/nabuconfig/base.py +2 -4
- tomwer/gui/reconstruction/nabu/nabuconfig/nabuconfig.py +2 -1
- tomwer/gui/reconstruction/nabu/nabuconfig/output.py +126 -35
- tomwer/gui/reconstruction/nabu/nabuconfig/phase.py +39 -32
- tomwer/gui/reconstruction/nabu/nabuconfig/preprocessing.py +222 -31
- tomwer/gui/reconstruction/nabu/nabuconfig/reconstruction.py +57 -27
- tomwer/gui/reconstruction/nabu/nabuflow.py +12 -20
- tomwer/gui/reconstruction/nabu/slices.py +10 -11
- tomwer/gui/reconstruction/nabu/volume.py +22 -10
- tomwer/gui/reconstruction/normalization/intensity.py +18 -48
- tomwer/gui/reconstruction/saaxis/corrangeselector.py +8 -24
- tomwer/gui/reconstruction/saaxis/dimensionwidget.py +1 -1
- tomwer/gui/reconstruction/saaxis/saaxis.py +9 -21
- tomwer/gui/reconstruction/sadeltabeta/saadeltabeta.py +45 -12
- tomwer/gui/reconstruction/scores/control.py +2 -9
- tomwer/gui/reconstruction/scores/scoreplot.py +13 -11
- tomwer/gui/reconstruction/test/test_axis.py +41 -16
- tomwer/gui/reconstruction/test/test_nabu.py +31 -9
- tomwer/gui/reconstruction/test/test_saaxis.py +3 -3
- tomwer/gui/reconstruction/test/test_sadeltabeta.py +12 -2
- tomwer/gui/settings.py +5 -28
- tomwer/gui/stackplot.py +2 -5
- tomwer/gui/stitching/action.py +49 -0
- tomwer/gui/stitching/config/axisparams.py +7 -24
- tomwer/gui/stitching/config/output.py +10 -8
- tomwer/gui/stitching/config/positionoveraxis.py +22 -23
- tomwer/gui/stitching/normalization.py +117 -0
- tomwer/gui/stitching/stitchandbackground.py +4 -6
- tomwer/gui/stitching/stitching.py +267 -45
- tomwer/gui/stitching/stitching_preview.py +62 -55
- tomwer/gui/stitching/stitching_raw.py +13 -12
- tomwer/gui/stitching/z_stitching/fineestimation.py +0 -60
- tomwer/gui/utils/buttons.py +112 -29
- tomwer/gui/utils/inputwidget.py +43 -25
- tomwer/gui/utils/lineselector/lineselector.py +1 -1
- tomwer/gui/utils/scandescription.py +4 -0
- tomwer/gui/utils/step.py +144 -0
- tomwer/gui/utils/unitsystem.py +2 -5
- tomwer/gui/utils/vignettes.py +176 -15
- tomwer/gui/visualization/dataviewer.py +48 -35
- tomwer/gui/visualization/diffviewer/diffviewer.py +7 -16
- tomwer/gui/visualization/diffviewer/shiftwidget.py +2 -5
- tomwer/gui/visualization/scanoverview.py +1 -1
- tomwer/gui/visualization/sinogramviewer.py +20 -36
- tomwer/gui/visualization/test/test_diffviewer.py +3 -3
- tomwer/gui/visualization/test/test_nx_tomo_metadata_viewer.py +4 -4
- tomwer/gui/visualization/test/test_sinogramviewer.py +2 -2
- tomwer/gui/visualization/test/test_stacks.py +3 -3
- tomwer/gui/visualization/test/test_volumeviewer.py +65 -67
- tomwer/gui/visualization/volumeviewer.py +114 -113
- tomwer/io/utils/h5pyutils.py +3 -3
- tomwer/io/utils/raw_and_processed_data.py +84 -0
- tomwer/io/utils/tomoobj.py +4 -6
- tomwer/io/utils/utils.py +7 -7
- tomwer/resources/gui/icons/parameters.svg +1 -1
- tomwer/resources/gui/icons/ruler.png +0 -0
- tomwer/resources/gui/icons/ruler.svg +273 -0
- tomwer/resources/gui/icons/short_description.png +0 -0
- tomwer/resources/gui/icons/short_description.svg +58 -0
- tomwer/resources/gui/icons/url.png +0 -0
- tomwer/resources/gui/icons/url.svg +58 -0
- tomwer/resources/gui/illustrations/no_rot.svg +1 -1
- tomwer/synctools/stacks/edit/darkflatpatch.py +19 -14
- tomwer/synctools/stacks/edit/imagekeyeditor.py +2 -2
- tomwer/synctools/stacks/reconstruction/axis.py +4 -4
- tomwer/synctools/stacks/reconstruction/castvolume.py +22 -7
- tomwer/synctools/stacks/reconstruction/dkrefcopy.py +25 -20
- tomwer/synctools/stacks/reconstruction/nabu.py +2 -2
- tomwer/synctools/stacks/reconstruction/normalization.py +2 -2
- tomwer/synctools/stacks/reconstruction/saaxis.py +2 -2
- tomwer/synctools/stacks/reconstruction/sadeltabeta.py +2 -2
- tomwer/synctools/test/test_darkRefs.py +7 -58
- tomwer/synctools/test/test_foldertransfer.py +6 -6
- tomwer/synctools/utils/scanstages.py +6 -6
- tomwer/tests/conftest.py +34 -0
- tomwer/tests/datasets.py +13 -0
- tomwer/tests/test_scripts.py +91 -41
- tomwer/tests/utils.py +5 -0
- tomwer/third_part/WaitingOverlay.py +110 -0
- tomwer/third_part/__init__.py +0 -0
- tomwer/version.py +2 -2
- tomwer-1.3.12-py3.11-nspkg.pth +1 -0
- {tomwer-1.2.1.dist-info → tomwer-1.3.12.dist-info}/METADATA +73 -58
- {tomwer-1.2.1.dist-info → tomwer-1.3.12.dist-info}/RECORD +287 -286
- {tomwer-1.2.1.dist-info → tomwer-1.3.12.dist-info}/WHEEL +1 -1
- orangecontrib/tomwer/widgets/reconstruction/TofuOW.py +0 -197
- orangecontrib/tomwer/widgets/reconstruction/icons/XY_lamino.svg +0 -168
- orangecontrib/tomwer/widgets/reconstruction/icons/XZ_lamino.svg +0 -275
- orangecontrib/tomwer/widgets/reconstruction/icons/YZ_lamino.svg +0 -182
- tomwer/app/lamino.py +0 -143
- tomwer/core/process/reconstruction/lamino/__init__.py +0 -1
- tomwer/core/process/reconstruction/lamino/tofu.py +0 -1000
- tomwer/core/process/test/test_lamino.py +0 -76
- tomwer/core/test/test_lamino.py +0 -92
- tomwer/gui/reconstruction/lamino/__init__.py +0 -31
- tomwer/gui/reconstruction/lamino/tofu/TofuOptionLoader.py +0 -107
- tomwer/gui/reconstruction/lamino/tofu/__init__.py +0 -1
- tomwer/gui/reconstruction/lamino/tofu/misc.py +0 -148
- tomwer/gui/reconstruction/lamino/tofu/projections.py +0 -896
- tomwer/gui/reconstruction/lamino/tofu/settings.py +0 -75
- tomwer/gui/reconstruction/lamino/tofu/tofu.py +0 -432
- tomwer/gui/reconstruction/lamino/tofu/tofuexpert.py +0 -567
- tomwer/gui/reconstruction/lamino/tofu/tofuoutput.py +0 -760
- tomwer/gui/reconstruction/test/test_lamino.py +0 -189
- tomwer/resources/gui/icons/esrf_1.svg +0 -307
- tomwer/resources/gui/icons/lamino_parameters.svg +0 -70
- tomwer/resources/gui/icons/triangle.svg +0 -80
- tomwer/resources/gui/illustrations/lamino_angle.png +0 -0
- tomwer/resources/gui/illustrations/lamino_angle.svg +0 -509
- tomwer/resources/gui/illustrations/lamino_beta_angle.png +0 -0
- tomwer/resources/gui/illustrations/lamino_beta_angle.svg +0 -97
- tomwer/resources/gui/illustrations/lamino_theta_angle.png +0 -0
- tomwer/resources/gui/illustrations/lamino_theta_angle.svg +0 -368
- tomwer/resources/gui/illustrations/manual_slice.png +0 -0
- tomwer/resources/gui/illustrations/manual_slice.svg +0 -221
- tomwer/resources/gui/illustrations/psi_angle.png +0 -0
- tomwer/resources/gui/illustrations/psi_angle.svg +0 -479
- tomwer/resources/gui/illustrations/rotation_center.png +0 -0
- tomwer/resources/gui/illustrations/rotation_center.svg +0 -276
- tomwer/resources/gui/illustrations/slice_stack.png +0 -0
- tomwer/resources/gui/illustrations/slice_stack.svg +0 -266
- tomwer/resources/gui/illustrations/xy_slice.png +0 -0
- tomwer/resources/gui/illustrations/xy_slice.svg +0 -269
- tomwer/resources/gui/illustrations/xz_slice.png +0 -0
- tomwer/resources/gui/illustrations/xz_slice.svg +0 -270
- tomwer/resources/gui/illustrations/yz_slice.png +0 -0
- tomwer/resources/gui/illustrations/yz_slice.svg +0 -270
- tomwer/synctools/stacks/reconstruction/lamino.py +0 -233
- tomwer/synctools/test/test_scanstages.py +0 -162
- tomwer/tests/utils/__init__.py +0 -247
- tomwer/tests/utils/utilstest.py +0 -220
- tomwer-1.2.1-py3.11-nspkg.pth +0 -1
- /tomwer/core/process/control/{email.py → emailnotifier.py} +0 -0
- {tomwer-1.2.1.dist-info → tomwer-1.3.12.dist-info}/LICENSE +0 -0
- {tomwer-1.2.1.dist-info → tomwer-1.3.12.dist-info}/entry_points.txt +0 -0
- {tomwer-1.2.1.dist-info → tomwer-1.3.12.dist-info}/namespace_packages.txt +0 -0
- {tomwer-1.2.1.dist-info → tomwer-1.3.12.dist-info}/top_level.txt +0 -0
tomwer/core/settings.py
CHANGED
@@ -92,6 +92,7 @@ class SlurmSettingsMode(_Enum):
|
|
92
92
|
CAST_VOLUME = "cast_volume"
|
93
93
|
SLICE_RECONSTRUCTION = "slice_reconstruction"
|
94
94
|
VOLUME_RECONSTRUCTION = "volume_reconstruction"
|
95
|
+
STITCHING = "stitching"
|
95
96
|
|
96
97
|
@staticmethod
|
97
98
|
def get_settings_class(mode):
|
@@ -106,6 +107,8 @@ class SlurmSettingsMode(_Enum):
|
|
106
107
|
return DefaultSlurmSettingsSliceReconstruction
|
107
108
|
elif mode is SlurmSettingsMode.VOLUME_RECONSTRUCTION:
|
108
109
|
return DefaultSlurmSettingsVolumeReconstruction
|
110
|
+
elif mode is SlurmSettingsMode.STITCHING:
|
111
|
+
return DefaultSlurmSettingsStitching
|
109
112
|
else:
|
110
113
|
raise ValueError(f"{mode} not handled")
|
111
114
|
|
@@ -122,7 +125,7 @@ class SlurmSettings:
|
|
122
125
|
N_JOBS = 1
|
123
126
|
"""on how many job we want to split the EwoksTask"""
|
124
127
|
|
125
|
-
MEMORY_PER_WORKER =
|
128
|
+
MEMORY_PER_WORKER = 128 # memory in GB
|
126
129
|
"""Amount of memory per worker"""
|
127
130
|
|
128
131
|
PARTITION = "p9gpu"
|
@@ -133,7 +136,7 @@ class SlurmSettings:
|
|
133
136
|
N_GPUS_PER_WORKER = 1
|
134
137
|
"""number of gpu per worker"""
|
135
138
|
|
136
|
-
PYTHON_VENV =
|
139
|
+
PYTHON_VENV = None
|
137
140
|
"""Python executable to take. Useful if compute nodes have a different environment from the front end.
|
138
141
|
"""
|
139
142
|
|
@@ -141,6 +144,12 @@ class SlurmSettings:
|
|
141
144
|
"""Slurm cluster project name. `scan`, `process` and `info` will be format.
|
142
145
|
"""
|
143
146
|
|
147
|
+
MODULES_TO_LOAD = ("tomotools/stable", )
|
148
|
+
|
149
|
+
SBATCH_EXTRA_PARAMS = {
|
150
|
+
"export": "NONE", # value to provide to sbatch --export={}
|
151
|
+
}
|
152
|
+
|
144
153
|
|
145
154
|
class DefaultSlurmSettingsCastVolume(SlurmSettings):
|
146
155
|
"""
|
@@ -171,3 +180,14 @@ class DefaultSlurmSettingsVolumeReconstruction(SlurmSettings):
|
|
171
180
|
MEMORY_PER_WORKER = 256 # memory in GB
|
172
181
|
|
173
182
|
PARTITION = None
|
183
|
+
|
184
|
+
|
185
|
+
class DefaultSlurmSettingsStitching(SlurmSettings):
|
186
|
+
"""*
|
187
|
+
default proposed configuration for stitching
|
188
|
+
"""
|
189
|
+
N_JOBS = 15
|
190
|
+
|
191
|
+
PARTITION = "nice-long"
|
192
|
+
|
193
|
+
N_GPUS_PER_WORKER = 0
|
@@ -31,22 +31,23 @@ import os
|
|
31
31
|
import tempfile
|
32
32
|
import unittest
|
33
33
|
|
34
|
-
from
|
35
|
-
from tomwer.core.
|
34
|
+
from nxtomo.application.nxtomo import NXtomo
|
35
|
+
from tomwer.core.scan.nxtomoscan import NXtomoScan
|
36
|
+
from tomwer.core.utils.scanutils import MockNXtomo
|
36
37
|
|
37
38
|
|
38
|
-
class
|
39
|
-
"""Test the
|
39
|
+
class TestMockNXtomo(unittest.TestCase):
|
40
|
+
"""Test the MockNXtomo file"""
|
40
41
|
|
41
42
|
def test_creation(self):
|
42
43
|
folder = tempfile.mkdtemp()
|
43
|
-
mock =
|
44
|
+
mock = MockNXtomo(scan_path=folder, n_proj=10, n_ini_proj=10)
|
44
45
|
self.assertEqual(
|
45
46
|
mock.scan_master_file,
|
46
47
|
os.path.join(folder, os.path.basename(folder) + ".h5"),
|
47
48
|
)
|
48
|
-
tomoScan =
|
49
|
-
self.assertEqual(len(
|
49
|
+
tomoScan = NXtomoScan(mock.scan_path, entry=mock.scan_entry)
|
50
|
+
self.assertEqual(len(NXtomo.get_valid_entries(mock.scan_master_file)), 1)
|
50
51
|
tomoScan.update()
|
51
52
|
self.assertEqual(tomoScan.scan_range, 360)
|
52
53
|
self.assertEqual(len(tomoScan.projections), 10)
|
tomwer/core/test/test_utils.py
CHANGED
@@ -35,22 +35,29 @@ import unittest
|
|
35
35
|
|
36
36
|
import numpy
|
37
37
|
|
38
|
-
from tomwer.core import
|
38
|
+
from tomwer.core.utils import spec as spec_utils
|
39
39
|
from tomwer.core.utils.normalization import flatFieldCorrection
|
40
|
-
from tomwer.core.utils.scanutils import MockEDF,
|
41
|
-
from tomwer.tests.
|
40
|
+
from tomwer.core.utils.scanutils import MockEDF, MockNXtomo
|
41
|
+
from tomwer.tests.datasets import TomwerCIDatasets
|
42
42
|
|
43
43
|
|
44
44
|
class TestGetClosestEnergy(unittest.TestCase):
|
45
45
|
def setUp(self):
|
46
46
|
self.topSrcFolder = tempfile.mkdtemp()
|
47
47
|
self.dataSetID = "scan_3_"
|
48
|
-
self.dataDir =
|
48
|
+
self.dataDir = TomwerCIDatasets.get_dataset(
|
49
|
+
f"edf_datasets/{self.dataSetID}",
|
50
|
+
)
|
49
51
|
self.sourceS3 = os.path.join(self.topSrcFolder, self.dataSetID)
|
50
52
|
shutil.copytree(src=os.path.join(self.dataDir), dst=self.sourceS3)
|
51
53
|
|
52
54
|
self.sourceT01 = os.path.join(self.topSrcFolder, "test01")
|
53
|
-
shutil.copytree(
|
55
|
+
shutil.copytree(
|
56
|
+
src=TomwerCIDatasets.get_dataset(
|
57
|
+
"edf_datasets/test01",
|
58
|
+
),
|
59
|
+
dst=self.sourceT01,
|
60
|
+
)
|
54
61
|
self.S3XMLFile = os.path.join(self.sourceS3, "scan_3_.xml")
|
55
62
|
self.S3Ref0000 = os.path.join(self.sourceS3, "ref0000_0000.edf")
|
56
63
|
self.S3Ref0010 = os.path.join(self.sourceS3, "ref0000_0010.edf")
|
@@ -61,34 +68,42 @@ class TestGetClosestEnergy(unittest.TestCase):
|
|
61
68
|
def testEnergyFromEDF(self):
|
62
69
|
os.remove(self.S3XMLFile)
|
63
70
|
self.assertTrue(
|
64
|
-
|
71
|
+
spec_utils.getClosestEnergy(scan=self.sourceS3, refFile=self.S3Ref0000)
|
72
|
+
== 61
|
65
73
|
)
|
66
74
|
self.assertTrue(
|
67
|
-
|
75
|
+
spec_utils.getClosestEnergy(scan=self.sourceS3, refFile=self.S3Ref0010)
|
76
|
+
== 61
|
68
77
|
)
|
69
78
|
|
70
79
|
def testEnergyFromXML(self):
|
71
80
|
os.remove(self.S3Ref0000)
|
72
81
|
os.remove(self.S3Ref0010)
|
73
82
|
self.assertTrue(
|
74
|
-
|
83
|
+
spec_utils.getClosestEnergy(scan=self.sourceS3, refFile=self.S3Ref0000)
|
84
|
+
== 10
|
75
85
|
)
|
76
86
|
self.assertTrue(
|
77
|
-
|
87
|
+
spec_utils.getClosestEnergy(scan=self.sourceS3, refFile=self.S3Ref0010)
|
88
|
+
== 10
|
78
89
|
)
|
79
90
|
|
80
91
|
def testEnergyFromInfo(self):
|
81
|
-
self.assertTrue(
|
92
|
+
self.assertTrue(
|
93
|
+
spec_utils.getClosestEnergy(scan=self.sourceT01, refFile=None) == 19
|
94
|
+
)
|
82
95
|
|
83
96
|
def testDefaultEnergy(self):
|
84
97
|
os.remove(self.S3XMLFile)
|
85
98
|
os.remove(self.S3Ref0000)
|
86
99
|
os.remove(self.S3Ref0010)
|
87
100
|
self.assertTrue(
|
88
|
-
|
101
|
+
spec_utils.getClosestEnergy(scan=self.sourceS3, refFile=self.S3Ref0000)
|
102
|
+
is None
|
89
103
|
)
|
90
104
|
self.assertTrue(
|
91
|
-
|
105
|
+
spec_utils.getClosestEnergy(scan=self.sourceS3, refFile=self.S3Ref0010)
|
106
|
+
is None
|
92
107
|
)
|
93
108
|
|
94
109
|
|
@@ -96,7 +111,9 @@ class TestGetClosestSREnergy(unittest.TestCase):
|
|
96
111
|
def setUp(self):
|
97
112
|
self.topSrcFolder = tempfile.mkdtemp()
|
98
113
|
self.dataSetID = "test10"
|
99
|
-
self.dataDir =
|
114
|
+
self.dataDir = TomwerCIDatasets.get_dataset(
|
115
|
+
f"edf_datasets/{self.dataSetID}",
|
116
|
+
)
|
100
117
|
self.sourceT10 = os.path.join(self.topSrcFolder, self.dataSetID)
|
101
118
|
shutil.copytree(src=os.path.join(self.dataDir), dst=self.sourceT10)
|
102
119
|
self.T10XMLFile = os.path.join(self.sourceT10, "test10.xml")
|
@@ -106,16 +123,6 @@ class TestGetClosestSREnergy(unittest.TestCase):
|
|
106
123
|
def tearDown(self):
|
107
124
|
shutil.rmtree(self.topSrcFolder)
|
108
125
|
|
109
|
-
def testIntenistyFromInfo(self):
|
110
|
-
self.assertTrue(
|
111
|
-
utils.getClosestSRCurrent(scan_dir=self.sourceT10, refFile=None) == 101.3
|
112
|
-
)
|
113
|
-
|
114
|
-
def testDefaultIntensity(self):
|
115
|
-
os.remove(self.T10XMLFile)
|
116
|
-
os.remove(self.T10InfoFile)
|
117
|
-
self.assertTrue(utils.getClosestSRCurrent(scan_dir=self.sourceT10) is None)
|
118
|
-
|
119
126
|
|
120
127
|
class TestMockEDFScan(unittest.TestCase):
|
121
128
|
"""Test that mock scan are adapted to other unit test"""
|
@@ -254,8 +261,8 @@ class TestMockEDFScan(unittest.TestCase):
|
|
254
261
|
self.assertEqual(scan_dynamic[angle_id].file_path(), file_name)
|
255
262
|
|
256
263
|
|
257
|
-
class
|
258
|
-
"""Test
|
264
|
+
class TestMockNXtomo(unittest.TestCase):
|
265
|
+
"""Test MockNXtomo to check that the file produced is valid"""
|
259
266
|
|
260
267
|
def setUp(self) -> None:
|
261
268
|
self._folder = tempfile.mkdtemp()
|
@@ -266,14 +273,14 @@ class TestMockHDF5(unittest.TestCase):
|
|
266
273
|
def testSimpleMockCreationOneCall(self):
|
267
274
|
"""Test mock of an acquisition starting by one dark, then 10 ref,
|
268
275
|
then 20 radios, then 10 'final' ref and 2 alignment radio"""
|
269
|
-
mock =
|
276
|
+
mock = MockNXtomo(
|
270
277
|
scan_path=self._folder,
|
271
278
|
n_proj=20,
|
272
279
|
n_ini_proj=20,
|
273
280
|
n_alignement_proj=2,
|
274
281
|
create_ini_dark=True,
|
275
|
-
|
276
|
-
|
282
|
+
create_ini_flat=True,
|
283
|
+
create_final_flat=True,
|
277
284
|
n_refs=10,
|
278
285
|
)
|
279
286
|
self.assertTrue(0 in mock.scan.darks.keys())
|
tomwer/core/tomwer_object.py
CHANGED
@@ -28,7 +28,7 @@ class TomwerObject(Dataset):
|
|
28
28
|
def cast_volume(self, volume):
|
29
29
|
from tomwer.core.volume.volumebase import TomwerVolumeBase
|
30
30
|
|
31
|
-
if not isinstance(volume, TomwerVolumeBase):
|
31
|
+
if not (volume is None or isinstance(volume, TomwerVolumeBase)):
|
32
32
|
from tomwer.core.volume.volumefactory import (
|
33
33
|
VolumeFactory,
|
34
34
|
) # avoid cyclic import
|