Exemplo n.º 1
0
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)
Exemplo n.º 2
0
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)
Exemplo n.º 3
0
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
Exemplo n.º 4
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])
Exemplo n.º 5
0
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)
Exemplo n.º 6
0
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])
Exemplo n.º 7
0
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)
Exemplo n.º 8
0
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
Exemplo n.º 9
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])
Exemplo n.º 10
0
    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)
Exemplo n.º 11
0
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)
Exemplo n.º 12
0
    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)
Exemplo n.º 13
0
    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)