def test_pick_analysis_via_api_3_3d_ds_fail_4(lt_ctx): data = _mk_random(size=(16, 16, 16, 16, 16, 16)) dataset = MemoryDataSet(data=data, tileshape=(1, 16, 16), num_partitions=2, sig_dims=2) analysis = PickFrameAnalysis(dataset=dataset, parameters={}) with pytest.raises(AssertionError): lt_ctx.run(analysis) analysis = PickFrameAnalysis(dataset=dataset, parameters={"x": 7}) with pytest.raises(AssertionError): lt_ctx.run(analysis) analysis = PickFrameAnalysis(dataset=dataset, parameters={"x": 7, "y": 8}) with pytest.raises(AssertionError): lt_ctx.run(analysis) analysis = PickFrameAnalysis(dataset=dataset, parameters={ "x": 7, "y": 8, "z": 11 }) with pytest.raises(AssertionError): lt_ctx.run(analysis)
def test_pick_analysis(default_k2is, lt_ctx, TYPE): analysis = PickFrameAnalysis(dataset=default_k2is, parameters={ "x": 16, "y": 16 }) analysis.TYPE = TYPE results = lt_ctx.run(analysis) assert results[0].raw_data.shape == (1860, 2048)
def test_pick_analysis(default_empad, lt_ctx, TYPE): analysis = PickFrameAnalysis(dataset=default_empad, parameters={ "x": 2, "y": 2 }) analysis.TYPE = TYPE results = lt_ctx.run(analysis) assert results[0].raw_data.shape == (128, 128) assert np.count_nonzero(results[0].raw_data) > 0
def test_pick_from_3d_ds(lt_ctx, TYPE): data = _mk_random(size=(16 * 16, 16, 16)) dataset = MemoryDataSet(data=data, tileshape=(1, 16, 16), num_partitions=2, sig_dims=2) analysis = PickFrameAnalysis(dataset=dataset, parameters={"x": 5}) analysis.TYPE = TYPE result = lt_ctx.run(analysis) assert result.intensity.raw_data.shape == (16, 16) assert np.allclose(result.intensity.raw_data, data[5])
def test_pick_analysis_via_api_3_3d_ds_fail_3(lt_ctx): data = _mk_random(size=(16, 16, 16, 16, 16)) dataset = MemoryDataSet(data=data, tileshape=(1, 16, 16, 16), partition_shape=(16, 16, 16), effective_shape=(16, 16, 16, 16, 16), sig_dims=2) analysis = PickFrameAnalysis(dataset=dataset, parameters={"x": 7}) with pytest.raises(ValueError): lt_ctx.run(analysis) analysis = PickFrameAnalysis(dataset=dataset, parameters={"x": 7, "y": 8}) with pytest.raises(ValueError): lt_ctx.run(analysis)
def test_pick_analysis(lt_ctx, TYPE): """ the other tests cover the pick job, this one uses the analysis """ data = _mk_random(size=(16, 16, 16, 16)) dataset = MemoryDataSet(data=data, tileshape=(1, 16, 16), num_partitions=2, sig_dims=2) analysis = PickFrameAnalysis(dataset=dataset, parameters={"x": 5, "y": 5}) analysis.TYPE = TYPE result = lt_ctx.run(analysis) assert result.intensity.raw_data.shape == (16, 16) assert np.allclose(result.intensity.raw_data, data[5, 5])
def test_pick_analysis(default_raw, lt_ctx): analysis = PickFrameAnalysis(dataset=default_raw, parameters={ "x": 16, "y": 16 }) results = lt_ctx.run(analysis) assert results[0].raw_data.shape == (128, 128)
def test_pick_analysis(default_raw, lt_ctx): analysis = PickFrameAnalysis(dataset=default_raw, parameters={ "x": 15, "y": 15 }) results = lt_ctx.run(analysis) assert results[0].raw_data.shape == (128, 128) assert np.count_nonzero(results[0].raw_data) > 0
def test_pick_from_3d_ds(lt_ctx): data = _mk_random(size=(16 * 16, 16, 16)) dataset = MemoryDataSet(data=data, tileshape=(1, 16, 16), partition_shape=(16, 16, 16), effective_shape=(16, 16, 16, 16), sig_dims=2) analysis = PickFrameAnalysis(dataset=dataset, parameters={"x": 5, "y": 5}) result = lt_ctx.run(analysis) assert result.intensity.raw_data.shape == (16, 16) assert np.allclose(result.intensity.raw_data, data.reshape(dataset._effective_shape)[5, 5])
def create_pick_analysis(self, dataset: DataSet, x: int, y: int = None, z: int = None) -> PickFrameAnalysis: """ Create an Analysis that picks a single frame / signal element from (z, y, x). The number of parameters must match number of navigation dimensions in the dataset, for example if you have a 4D dataset with two signal dimensions and two navigation dimensions, you need to specify x and y. Parameters ---------- dataset The dataset to work on x x coordinate y y coordinate z z coordinate Returns ------- PickFrameAnalysis : libertem.analysis.base.Analysis When run by the Context, this Analysis generates a :class:`libertem.analysis.raw.PickResultSet`. Examples -------- >>> dataset = ctx.load( ... filetype="memory", ... data=np.zeros([16, 16, 16, 16, 16], dtype=np.float32), ... sig_dims=2 ... ) >>> analysis = ctx.create_pick_analysis(dataset=dataset, x=9, y=8, z=7) >>> result = ctx.run(analysis) >>> assert result.intensity.raw_data.shape == tuple(dataset.shape.sig) """ loc = locals() parameters = { name: loc[name] for name in ['x', 'y', 'z'] if loc[name] is not None } return PickFrameAnalysis(dataset=dataset, parameters=parameters)
def test_pick_analysis_via_api_3_3d_ds_fail_5(lt_ctx): data = _mk_random(size=(16, 256, 16, 16)) dataset = MemoryDataSet(data=data, tileshape=(1, 1, 16, 16), partition_shape=(16, 16, 16, 16), effective_shape=(16, 16, 16, 16, 16), sig_dims=2) analysis = PickFrameAnalysis(dataset=dataset, parameters={ "x": 7, "y": 8, "z": 11 }) with pytest.raises(ValueError) as e: lt_ctx.run(analysis) assert "can only reduce origin from N dims to 1D" in str(e)
def create_pick_analysis(self, dataset, x: int, y: int = None, z: int = None): """ Pick a single frame / signal element from (z, y, x). Number of parameters must match number of navigation dimensions in the dataset, for example if you have a 4D dataset with two signal dimensions and two navigation dimensions, you need to specify x and y. Parameters ---------- dataset The dataset to work on x x coordinate y y coordinate z z coordinate Returns ------- :py:class:`numpy.ndarray` the frame as numpy array Examples -------- >>> dataset = ctx.load( ... filetype="memory", ... data=np.zeros([16, 16, 16, 16, 16], dtype=np.float32), ... sig_dims=2 ... ) >>> job = ctx.create_pick_analysis(dataset=dataset, x=9, y=8, z=7) >>> result = ctx.run(job) >>> assert result.intensity.raw_data.shape == tuple(dataset.shape.sig) """ loc = locals() parameters = { name: loc[name] for name in ['x', 'y', 'z'] if loc[name] is not None } return PickFrameAnalysis(dataset=dataset, parameters=parameters)
def create_pick_analysis(self, dataset, x: int, y: int = None, z: int = None): """ Pick a single frame / signal element from (z, y, x). Number of parameters must match number of navigation dimensions in the dataset, for example if you have a 4D dataset with two signal dimensions and two navigation dimensions, you need to specify x and y. Parameters ---------- dataset The dataset to work on x x coordinate y y coordinate z z coordinate Returns ------- :py:class:`numpy.ndarray` the frame as numpy array Examples -------- >>> from libertem.api import Context >>> ctx = Context() >>> ds = ctx.load("...") >>> origin = (7, 8, 9) >>> job = create_pick_analysis(dataset=ds, x=9, y=8, z=7) >>> result = ctx.run(job) >>> assert result.intensity.raw_data.shape == ds.shape.sig """ loc = locals() parameters = { name: loc[name] for name in ['x', 'y', 'z'] if loc[name] is not None } return PickFrameAnalysis(dataset=dataset, parameters=parameters)