def test_SAXSWorkflow(): # create processes thresholdmask = ThresholdMaskPlugin() qintegrate = QIntegratePlugin() # set values AI = AzimuthalIntegrator(.283, 5.24e-3, 4.085e-3, 0, 0, 0, 1.72e-4, 1.72e-4, detector=Pilatus2M(), wavelength=1.23984e-10) thresholdmask.data.value = fabio.open( '/Users/hari/Downloads/AGB_5S_USE_2_2m.edf').data def AI_func(): from pyFAI.detectors import Pilatus2M from pyFAI import AzimuthalIntegrator, units return AzimuthalIntegrator(.283, 5.24e-3, 4.085e-3, 0, 0, 0, 1.72e-4, 1.72e-4, detector=Pilatus2M(), wavelength=1.23984e-10) qintegrate.integrator.value = AI_func qintegrate.npt.value = 1000 thresholdmask.minimum.value = 30 thresholdmask.maximum.value = 1e12 qintegrate.data.value = fabio.open( '/Users/hari/Downloads/AGB_5S_USE_2_2m.edf').data thresholdmask.neighborhood.value = 1 qintegrate.normalization_factor.value = 0.5 qintegrate.method.value = "numpy" # connect processes thresholdmask.mask.connect(qintegrate.mask) # add processes to workflow wf = Workflow('QIntegrate') wf.addProcess(thresholdmask) wf.addProcess(qintegrate) dsk = DaskExecutor() result = dsk.execute(wf) print(result)
def test_workflow(): from xicam.core.execution.workflow import Workflow from xicam.core.execution.daskexecutor import DaskExecutor from xicam.plugins.operationplugin import output_names executor = DaskExecutor() @operation @output_names("square") def square(a=3) -> int: return a**2 @operation @output_names("sum") def my_sum(a, b=3) -> int: return a + b wf = Workflow() square = square() my_sum = my_sum() wf.add_operation(square) wf.add_operation(my_sum) wf.add_link(square, my_sum, "square", "a") assert wf.execute_synchronous(executor=executor) == [{"sum": 12}]
def custom_parameter_workflow(qfit): from xicam.core.execution.workflow import Workflow from xicam.core.execution.daskexecutor import DaskExecutor from xicam.plugins import manager manager.collect_plugins() executor = DaskExecutor() wf = Workflow() qfit = qfit() wf.add_operation(qfit) return wf
def test_multiple_instances(square_op, sum_op): from xicam.core.execution.workflow import Workflow from xicam.core.execution.daskexecutor import DaskExecutor executor = DaskExecutor() wf = Workflow() square = square_op() square2 = square_op() square2.filled_values["a"] = 2 my_sum = sum_op() wf.add_operation(square) wf.add_operation(square2) wf.add_operation(my_sum) wf.add_link(square, my_sum, "square", "a") # 3**3 wf.add_link(square2, my_sum, "square", "b") # 2**2 assert wf.execute_synchronous(executor=executor) == [{"sum": 13}]
def test_multiple_instances(square_op, sum_op): from xicam.core.execution.workflow import Workflow from xicam.core.execution.daskexecutor import DaskExecutor executor = DaskExecutor() wf = Workflow() square = square_op() square2 = square_op() square2.filled_values['a'] = 2 my_sum = sum_op() wf.add_operation(square) wf.add_operation(square2) wf.add_operation(my_sum) wf.add_link(square, my_sum, 'square', 'a') wf.add_link(square2, my_sum, 'square', 'b') assert wf.execute_synchronous(executor=executor) == [{'sum': 13}]
def simple_workflow(square_op, sum_op): from xicam.core.execution.workflow import Workflow from xicam.core.execution.daskexecutor import DaskExecutor executor = DaskExecutor() wf = Workflow() square = square_op() square2 = square_op() square2.filled_values['a'] = 2 my_sum = sum_op() wf.add_operation(square) wf.add_operation(square2) wf.add_operation(my_sum) wf.add_link(square, my_sum, 'square', 'a') wf.add_link(square2, my_sum, 'square', 'b') return wf
# - bad pixels set to 0 CSX_TOOLS = False try: from . import CSXCorrectImage CSX_TOOLS = True except ImportError: CSXCorrectImage = None # Disable testing against csxtools here TEST_CSX_TOOLS = CSX_TOOLS and True # TODO: test endianess # TODO: test non-uint16 inputs? # Used for testing purposes executor = DaskExecutor() @pytest.fixture def op() -> correct_fastccd_image: op = correct_fastccd_image() op.filled_values['images'] = np.arange(24, dtype=np.uint16).reshape( (4, 3, 2)) return op @pytest.fixture def old(): if TEST_CSX_TOOLS: op = CSXCorrectImage() op.filled_values['bitmasked_images'] = np.arange(
def test_tomoworkflow(): read = read_APS2BM() read.path.value = '/Users/hari/test.hdf' read.sino.value = (1050, 1051) norm = Normalize() read.arr.connect(norm.arr) read.flat.connect(norm.flats) read.dark.connect(norm.darks) outliers = RemoveOutlier() norm.normalized.connect(outliers.arr) outliers.dif.value = 500 outliers.size.value = 5 # maximum = ArrayMax() # outliers.corrected.connect(maximum.arr) # maximum.floor.value = 1e-16 # neglog = MinusLog() # maximum.out.connect(neglog.arr) # phase = RetrievePhase() # maximum.out.connect(phase.arr) # phase.pixel_size.value=6.5e-5 # phase.dist.value=3 # phase.energy.value=27 stripe = RemoveStripeFw() outliers.corrected.connect(stripe.tomo) stripe.level.value = 8 stripe.wname.value = 'db5' stripe.sigma.value = 4 stripe.pad.value = True padding = Pad() stripe.corrected.connect(padding.arr) padding.axis.value = 2 padding.npad.value = 448 padding.mode.value = 'edge' # angles = Angles() # angles.nang.value=0 # angles.ang1.value=90 # angles.ang2.value=180 gridrec = Recon() padding.padded.connect(gridrec.tomo) read.angles.connect(gridrec.theta) gridrec.filter_name.value = 'butterworth' gridrec.algorithm.value = 'gridrec' gridrec.center.value = np.array([1295 + 448]) # 1295 gridrec.filter_par.value = np.array([0.2, 2]) # gridrec.sinogram_order.value = True crop = Crop() gridrec.reconstructed.connect(crop.arr) crop.p11.value = 448 crop.p22.value = 448 crop.p12.value = 448 crop.p21.value = 448 crop.axis.value = 0 divide = ArrayDivide() circularmask = CircMask() crop.croppedarr.connect(circularmask.arr) circularmask.val.value = 0 circularmask.axis.value = 0 circularmask.ratio.value = 1 writetiff = WriteTiffStack() workflow = Workflow('Tomography') for process in [read, norm, outliers, # maximum, # neglog, # phase, stripe, padding, # angles, gridrec, crop, # divide, circularmask, # writetiff ]: workflow.addProcess(process) dsk = DaskExecutor() result = dsk.execute(workflow) print(result) import pyqtgraph as pg pg.image(result[0]['normalized'].value.squeeze()) from qtpy.QtWidgets import QApplication app = QApplication([]) app.exec_()