Esempio n. 1
0
 def test_get_data_shape_point(self):
     m0 = markers.point(5, 5)
     m1 = markers.point((5, 10), (5, 10))
     m2 = markers.point(((12, 2, 9), (1, 2, 3)), ((2, 5, 1), (3, 9, 2)))
     m3 = markers.vertical_line(((12, 2), (2, 5), (9, 2)))
     m4 = markers.point(5, 5)
     m4.data['x1'][()] = np.array(None, dtype=object)
     m4.data['y1'][()] = np.array(None, dtype=object)
     m5 = markers.vertical_line(9)
     m6 = markers.rectangle(1, 5, 6, 8)
     m7 = markers.rectangle((1, 2), (5, 6), (6, 7), (8, 9))
     m8 = markers.point(
         np.arange(256).reshape(2, 2, 2, 2, 2, 2, 2, 2),
         np.arange(256).reshape(2, 2, 2, 2, 2, 2, 2, 2))
     m9 = markers.arrow(2, 3, 4, 5)
     m10 = markers.arrow((2, 3), (4, 5), (6, 7), (8, 9))
     m11 = markers.ellipse(4, 5, 2, 3)
     m12 = markers.ellipse((2, 3), (4, 5), (6, 7), (8, 9))
     assert m0._get_data_shape() == ()
     assert m1._get_data_shape() == (2,)
     assert m2._get_data_shape() == (2, 3)
     assert m3._get_data_shape() == (3, 2)
     with pytest.raises(ValueError):
         assert m4._get_data_shape() == ()
     assert m5._get_data_shape() == ()
     assert m6._get_data_shape() == ()
     assert m7._get_data_shape() == (2,)
     assert m8._get_data_shape() == (2, 2, 2, 2, 2, 2, 2, 2)
     assert m9._get_data_shape() == ()
     assert m10._get_data_shape() == (2,)
     assert m11._get_data_shape() == ()
     assert m12._get_data_shape() == (2,)
Esempio n. 2
0
 def test_add_marker_signal2d_navigation_dim(self):
     s = Signal2D(np.zeros((3, 50, 50)))
     m0 = markers.point(5, 5)
     m1 = markers.point((5, 10), (10, 15))
     m2 = markers.point(np.zeros((3, )), np.zeros((3, )))
     s.add_marker(m0)
     with pytest.raises(ValueError):
         s.add_marker(m1)
     s.add_marker(m2)
Esempio n. 3
0
 def test_add_markers_as_list_add_different_twice(self):
     s = Signal1D(np.arange(10))
     marker_list0 = []
     for i in range(10):
         marker_list0.append(markers.point(1, 2))
     s.add_marker(marker_list0, permanent=True)
     assert len(s.metadata.Markers) == 10
     marker_list1 = []
     for i in range(10):
         marker_list1.append(markers.point(4, 8))
     s.add_marker(marker_list1, permanent=True)
     assert len(s.metadata.Markers) == 20
Esempio n. 4
0
    def test_dict2marker(self):
        m_point0 = markers.point(x=5, y=5)
        m_point1 = markers.point(x=(5, 10), y=(1, 5))
        m_line = markers.line_segment(x1=5, x2=10, y1=5, y2=10)
        m_vline = markers.vertical_line(x=5)
        m_vline_segment = markers.vertical_line_segment(x=4, y1=3, y2=6)
        m_hline = markers.horizontal_line(y=5)
        m_hline_segment = markers.horizontal_line_segment(x1=1, x2=9, y=5)
        m_rect = markers.rectangle(x1=1, x2=3, y1=5, y2=10)
        m_text = markers.text(x=1, y=5, text="test")

        m_point0_new = dict2marker(m_point0._to_dictionary(), m_point0.name)
        m_point1_new = dict2marker(m_point1._to_dictionary(), m_point1.name)
        m_line_new = dict2marker(m_line._to_dictionary(), m_line.name)
        m_vline_new = dict2marker(m_vline._to_dictionary(), m_vline.name)
        m_vline_segment_new = dict2marker(
            m_vline_segment._to_dictionary(), m_vline_segment.name)
        m_hline_new = dict2marker(m_hline._to_dictionary(), m_hline.name)
        m_hline_segment_new = dict2marker(
            m_hline_segment._to_dictionary(), m_hline_segment.name)
        m_rect_new = dict2marker(m_rect._to_dictionary(), m_rect.name)
        m_text_new = dict2marker(m_text._to_dictionary(), m_text.name)

        m_point0_dict = sanitize_dict(m_point0._to_dictionary())
        m_point1_dict = sanitize_dict(m_point1._to_dictionary())
        m_line_dict = sanitize_dict(m_line._to_dictionary())
        m_vline_dict = sanitize_dict(m_vline._to_dictionary())
        m_vline_segment_dict = sanitize_dict(m_vline_segment._to_dictionary())
        m_hline_dict = sanitize_dict(m_hline._to_dictionary())
        m_hline_segment_dict = sanitize_dict(m_hline_segment._to_dictionary())
        m_rect_dict = sanitize_dict(m_rect._to_dictionary())
        m_text_dict = sanitize_dict(m_text._to_dictionary())

        m_point0_new_dict = sanitize_dict(m_point0_new._to_dictionary())
        m_point1_new_dict = sanitize_dict(m_point1_new._to_dictionary())
        m_line_new_dict = sanitize_dict(m_line_new._to_dictionary())
        m_vline_new_dict = sanitize_dict(m_vline_new._to_dictionary())
        m_vline_segment_new_dict = sanitize_dict(
            m_vline_segment_new._to_dictionary())
        m_hline_new_dict = sanitize_dict(m_hline_new._to_dictionary())
        m_hline_segment_new_dict = sanitize_dict(
            m_hline_segment_new._to_dictionary())
        m_rect_new_dict = sanitize_dict(m_rect_new._to_dictionary())
        m_text_new_dict = sanitize_dict(m_text_new._to_dictionary())
        assert m_point0_dict == m_point0_new_dict
        assert m_point1_dict == m_point1_new_dict
        assert m_line_dict == m_line_new_dict
        assert m_vline_dict == m_vline_new_dict
        assert m_vline_segment_dict == m_vline_segment_new_dict
        assert m_hline_dict == m_hline_new_dict
        assert m_hline_segment_dict == m_hline_segment_new_dict
        assert m_rect_dict == m_rect_new_dict
        assert m_text_dict == m_text_new_dict
Esempio n. 5
0
 def test_permanent_marker_names(self):
     s = Signal1D(np.arange(10))
     m0 = markers.point(x=5, y=5)
     m1 = markers.point(x=5, y=5)
     m0.name = 'test'
     m1.name = 'test'
     s.add_marker(m0, permanent=True)
     s.add_marker(m1, permanent=True)
     assert s.metadata.Markers.test == m0
     assert m0.name == 'test'
     assert s.metadata.Markers.test1 == m1
     assert m1.name == 'test1'
Esempio n. 6
0
 def test_save_load_permanent_marker_all_types(self):
     x1, y1, x2, y2 = 5, 2, 1, 8
     s = Signal2D(np.arange(100).reshape(10, 10))
     m0_list = [
         markers.point(x=x1, y=y1),
         markers.horizontal_line(y=y1),
         markers.horizontal_line_segment(x1=x1, x2=x2, y=y1),
         markers.line_segment(x1=x1, x2=x2, y1=y1, y2=y2),
         markers.rectangle(x1=x1, x2=x2, y1=y1, y2=y2),
         markers.text(x=x1, y=y1, text="test"),
         markers.vertical_line(x=x1),
         markers.vertical_line_segment(x=x1, y1=y1, y2=y2),
     ]
     for m in m0_list:
         s.add_marker(m, permanent=True)
     with tempfile.TemporaryDirectory() as tmp:
         filename = tmp + '/testallmarkersfile.hdf5'
     s.save(filename)
     s1 = load(filename)
     markers_dict = s1.metadata.Markers
     m0_dict_list = []
     m1_dict_list = []
     for m in m0_list:
         m0_dict_list.append(san_dict(m._to_dictionary()))
         m1_dict_list.append(
             san_dict(markers_dict.get_item(m.name)._to_dictionary()))
     assert len(list(s1.metadata.Markers)) == 8
     for m0_dict, m1_dict in zip(m0_dict_list, m1_dict_list):
         assert m0_dict == m1_dict
Esempio n. 7
0
def _get_marker_list(ellipse_parameters,
                     x_list=None,
                     y_list=None,
                     name=None,
                     r_scale=0.05):
    xC, yC, semi_len0, semi_len1, rot, ecce = _get_ellipse_parameters(
        ellipse_parameters)
    xx, yy = _get_ellipse_from_parameters(xC,
                                          yC,
                                          semi_len0,
                                          semi_len1,
                                          rot,
                                          r_scale=r_scale)
    marker_list = []
    if x_list is not None:
        for x, y in zip(x_list, y_list):
            point_marker = point(x, y, color="red")
            if name is not None:
                point_marker.name = name + "_" + point_marker.name
            marker_list.append(point_marker)
    for i in range(len(xx)):
        if i == (len(xx) - 1):
            line = line_segment(xx[i], yy[i], xx[0], yy[0], color="green")
        else:
            line = line_segment(xx[i],
                                yy[i],
                                xx[i + 1],
                                yy[i + 1],
                                color="green")
        if name is not None:
            line.name = name + "_" + line.name
        marker_list.append(line)
    return marker_list
Esempio n. 8
0
def test_plot_markers_mpl_options():
    # check if required parameters are shown in repr
    _test_plot_markers_repr(markers.arrow(10, 20, 30, 40),
                            ['x1', 'y1', 'x2', 'y2',
                             'edgecolor', 'arrowstyle'])
    _test_plot_markers_repr(markers.ellipse(10, 20, 30, 40, color='red'),
                            ['x', 'y', 'width', 'height',
                             'edgecolor'])
    _test_plot_markers_repr(markers.horizontal_line(10),
                            ['y', 'color'])
    _test_plot_markers_repr(markers.horizontal_line_segment(10, 20, 30),
                            ['x1', 'x2', 'y', 'color'])
    _test_plot_markers_repr(markers.line_segment(10, 20, 30,40),
                            ['x1', 'x2', 'y1', 'y2', 'color'])
    _test_plot_markers_repr(markers.point(10, 20),
                            ['x', 'x', 'color', 'size'])
    m = markers.rectangle(10, 20, 30, 40, color='red')
    _test_plot_markers_repr(m, ['edgecolor'])
    # check if 'color' property is converted to 'edgecolor'
    assert 'color' not in m.marker_properties
    assert 'edgecolor' in m.marker_properties
    assert m.marker_properties['edgecolor'] == 'red'

    _test_plot_markers_repr(markers.text(10,20,"test"),
                            ['x', 'y', 'text', 'color'])
    _test_plot_markers_repr(markers.vertical_line(10),
                            ['x', 'color'])
    m = markers.vertical_line_segment(10, 20, 30)
    _test_plot_markers_repr(m,['x', 'y1', 'y2', 'color'])
Esempio n. 9
0
 def test_save_load_permanent_marker_all_types(self):
     x1, y1, x2, y2 = 5, 2, 1, 8
     s = Signal2D(np.arange(100).reshape(10, 10))
     m0_list = [
         markers.point(x=x1, y=y1),
         markers.horizontal_line(y=y1),
         markers.horizontal_line_segment(x1=x1, x2=x2, y=y1),
         markers.line_segment(x1=x1, x2=x2, y1=y1, y2=y2),
         markers.rectangle(x1=x1, x2=x2, y1=y1, y2=y2),
         markers.text(x=x1, y=y1, text="test"),
         markers.vertical_line(x=x1),
         markers.vertical_line_segment(x=x1, y1=y1, y2=y2),
     ]
     for m in m0_list:
         s.add_marker(m, permanent=True)
     with tempfile.TemporaryDirectory() as tmp:
         filename = tmp + '/testallmarkersfile.hdf5'
     s.save(filename)
     s1 = load(filename)
     markers_dict = s1.metadata.Markers
     m0_dict_list = []
     m1_dict_list = []
     for m in m0_list:
         m0_dict_list.append(san_dict(m._to_dictionary()))
         m1_dict_list.append(
             san_dict(markers_dict.get_item(m.name)._to_dictionary()))
     assert len(list(s1.metadata.Markers)) == 8
     for m0_dict, m1_dict in zip(m0_dict_list, m1_dict_list):
         assert m0_dict == m1_dict
Esempio n. 10
0
 def test_add_permanent_marker_twice_different_signal(self):
     s0 = Signal1D(np.arange(10))
     s1 = Signal1D(np.arange(10))
     m = markers.point(x=5, y=5)
     s0.add_marker(m, permanent=True)
     with pytest.raises(ValueError):
         s1.add_marker(m, permanent=True)
Esempio n. 11
0
 def test_add_markers_as_list(self):
     s = Signal1D(np.arange(10))
     marker_list = []
     for i in range(10):
         marker_list.append(markers.point(1, 2))
     s.add_marker(marker_list, permanent=True)
     assert len(s.metadata.Markers) == 10
Esempio n. 12
0
def get_point_list(points: Union[list, np.ndarray], **kwargs) -> list:
    """Return a list of point markers.

    Parameters
    ----------
    points
        On the form [[x0, y0], [x1, y1], ...].
    kwargs
        Keyword arguments allowed by :func:`matplotlib.pyplot.scatter`.

    Returns
    -------
    marker_list : list
        List of :class:`hyperspy.drawing._markers.point.Point`.
    """
    points = np.asarray(points)
    if points.ndim == 1:
        points = points[np.newaxis, ...]

    marker_list = []
    for i in range(points.shape[-2]):  # Iterate over zone axes
        if not np.allclose(points[..., i, :], np.nan, equal_nan=True):
            marker_list.append(
                point(x=points[..., i, 0], y=points[..., i, 1], **kwargs))
    return marker_list
Esempio n. 13
0
 def test_save_permanent_marker(self):
     s = Signal2D(np.arange(100).reshape(10, 10))
     m = markers.point(x=5, y=5)
     s.add_marker(m, permanent=True)
     with tempfile.TemporaryDirectory() as tmp:
         filename = tmp + '/testsavefile.hdf5'
     s.save(filename)
Esempio n. 14
0
 def test_add_several_permanent_markers(self):
     s = Signal1D(np.arange(10))
     m_point = markers.point(x=5, y=5)
     m_line = markers.line_segment(x1=5, x2=10, y1=5, y2=10)
     m_vline = markers.vertical_line(x=5)
     m_vline_segment = markers.vertical_line_segment(x=4, y1=3, y2=6)
     m_hline = markers.horizontal_line(y=5)
     m_hline_segment = markers.horizontal_line_segment(x1=1, x2=9, y=5)
     m_rect = markers.rectangle(x1=1, x2=3, y1=5, y2=10)
     m_text = markers.text(x=1, y=5, text="test")
     m_arrow = markers.arrow(x1=4, y1=5, x2=6, y2=6, arrowstyle='<->')
     m_ellipse = markers.ellipse(x=10, y=11, width=4, height=6)
     s.add_marker(m_point, permanent=True)
     s.add_marker(m_line, permanent=True)
     s.add_marker(m_vline, permanent=True)
     s.add_marker(m_vline_segment, permanent=True)
     s.add_marker(m_hline, permanent=True)
     s.add_marker(m_hline_segment, permanent=True)
     s.add_marker(m_rect, permanent=True)
     s.add_marker(m_text, permanent=True)
     s.add_marker(m_arrow, permanent=True)
     s.add_marker(m_ellipse, permanent=True)
     assert len(list(s.metadata.Markers)) == 10
     with pytest.raises(ValueError):
         s.add_marker(m_rect, permanent=True)
Esempio n. 15
0
 def test_save_permanent_marker(self):
     s = Signal2D(np.arange(100).reshape(10, 10))
     m = markers.point(x=5, y=5)
     s.add_marker(m, permanent=True)
     with tempfile.TemporaryDirectory() as tmp:
         filename = tmp + '/testsavefile.hdf5'
     s.save(filename)
Esempio n. 16
0
 def test_save_load_permanent_marker_all_types(self, tmp_path, file):
     filename = tmp_path / file
     s = self.s
     x1, y1, x2, y2 = 5, 2, 1, 8
     m0_list = [
         markers.point(x=x1, y=y1),
         markers.horizontal_line(y=y1),
         markers.horizontal_line_segment(x1=x1, x2=x2, y=y1),
         markers.line_segment(x1=x1, x2=x2, y1=y1, y2=y2),
         markers.rectangle(x1=x1, x2=x2, y1=y1, y2=y2),
         markers.text(x=x1, y=y1, text="test"),
         markers.vertical_line(x=x1),
         markers.vertical_line_segment(x=x1, y1=y1, y2=y2),
     ]
     for m in m0_list:
         s.add_marker(m, permanent=True)
     s.save(filename)
     s1 = load(filename)
     markers_dict = s1.metadata.Markers
     m0_dict_list = []
     m1_dict_list = []
     for m in m0_list:
         m0_dict_list.append(san_dict(m._to_dictionary()))
         m1_dict_list.append(
             san_dict(markers_dict.get_item(m.name)._to_dictionary()))
     assert len(list(s1.metadata.Markers)) == 8
     for m0_dict, m1_dict in zip(m0_dict_list, m1_dict_list):
         assert m0_dict == m1_dict
Esempio n. 17
0
 def test_add_markers_as_list_add_same_twice(self):
     s = Signal1D(np.arange(10))
     marker_list = []
     for i in range(10):
         marker_list.append(markers.point(1, 2))
     s.add_marker(marker_list, permanent=True)
     with pytest.raises(ValueError):
         s.add_marker(marker_list, permanent=True)
Esempio n. 18
0
 def test_remove_permanent_marker_name(self):
     s = Signal1D(np.arange(10))
     m = markers.point(x=5, y=5)
     m.name = 'test'
     s.add_marker(m, permanent=True)
     assert list(s.metadata.Markers)[0][1] == m
     del s.metadata.Markers.test
     assert len(list(s.metadata.Markers)) == 0
Esempio n. 19
0
 def test_save_load_empty_metadata_markers(self, tmp_path, file):
     filename = tmp_path / file
     s = self.s
     m = markers.point(x=5, y=5)
     m.name = "test"
     s.add_marker(m, permanent=True)
     del s.metadata.Markers.test
     s.save(filename)
     s1 = load(filename)
     assert len(s1.metadata.Markers) == 0
Esempio n. 20
0
 def test_save_load_empty_metadata_markers(self):
     s = Signal2D(np.arange(100).reshape(10, 10))
     m = markers.point(x=5, y=5)
     m.name = "test"
     s.add_marker(m, permanent=True)
     del s.metadata.Markers.test
     with tempfile.TemporaryDirectory() as tmp:
         filename = tmp + '/testsavefile.hdf5'
     s.save(filename)
     s1 = load(filename)
     assert len(s1.metadata.Markers) == 0
Esempio n. 21
0
def _test_plot_point_markers():
    width = 100
    data = np.arange(width * width).reshape((width, width))
    s = Signal2D(data)

    x, y = 10 * np.arange(4), 15 * np.arange(4)
    color = ['yellow', 'green', 'red', 'blue']
    for xi, yi, c in zip(x, y, color):
        m = markers.point(x=xi, y=yi, color=c)
        s.add_marker(m)
    return s
Esempio n. 22
0
 def test_save_load_empty_metadata_markers(self):
     s = Signal2D(np.arange(100).reshape(10, 10))
     m = markers.point(x=5, y=5)
     m.name = "test"
     s.add_marker(m, permanent=True)
     del s.metadata.Markers.test
     with tempfile.TemporaryDirectory() as tmp:
         filename = tmp + '/testsavefile.hdf5'
     s.save(filename)
     s1 = load(filename)
     assert len(s1.metadata.Markers) == 0
Esempio n. 23
0
 def test_deepcopy_permanent_marker(self):
     x, y, color, name = 2, 9, 'blue', 'test_point'
     s = Signal2D(np.arange(100).reshape(10, 10))
     m = markers.point(x=x, y=y, color=color)
     m.name = name
     s.add_marker(m, permanent=True)
     s1 = s.deepcopy()
     m1 = s1.metadata.Markers.get_item(name)
     assert m.get_data_position('x1') == m1.get_data_position('x1')
     assert m.get_data_position('y1') == m1.get_data_position('y1')
     assert m.name == m1.name
     assert m.marker_properties['color'] == m1.marker_properties['color']
Esempio n. 24
0
def test_markers_auto_update():
    # test data for fixed marker
    pos = [1, 2, 3, 4]
    # test data for auto_update marker
    pos_list = np.array([[1, 3, 5], [2, 4, 6]])
    pos_2d = [pos_list + pos[i] for i in range(4)]

    s = Signal2D(np.arange(2 * 3 * 4 * 5).reshape(2, 3, 4, 5))
    marker_list = []
    for _auto_update, _pos in [(False, pos), (True, pos_2d)]:
        _markers = [
            markers.vertical_line(_pos[0]),
            markers.horizontal_line(_pos[0]),
            markers.vertical_line_segment(*(_pos[0:3])),
            markers.horizontal_line_segment(*(_pos[0:3])),
            markers.rectangle(*_pos),
            markers.ellipse(*_pos),
            markers.arrow(*_pos),
            markers.line_segment(*_pos),
            markers.point(_pos[0], _pos[1]),
            markers.text(_pos[0], _pos[1], "test"),
        ]
        for marker in _markers:
            assert marker.auto_update is _auto_update
        marker_list += _markers
    assert len(marker_list) == 20
    s.add_marker(marker_list)
    for iy, temp_marker_list in enumerate(pos_list):
        for ix, value in enumerate(temp_marker_list):
            s.axes_manager.indices = (ix, iy)
            for marker in marker_list:
                _xy = [marker.get_data_position(ax) for ax in ('x1','y1','x2','y2')]
                if marker.auto_update is False:
                    _xy2 = pos
                else:
                    _xy2 = [pos_2d[i][iy, ix] for i in range(4)]
                _name = marker.name
                if marker.auto_update is False:
                    if _name == 'vertical_line':
                        assert _xy2[0] == _xy[0]
                    elif _name == 'horizontal_line':
                        assert _xy2[0] == _xy[1]
                    elif _name == 'vertical_line_segment':
                        assert _xy2[0:3] == [_xy[i] for i in (0,1,3)]
                    elif _name == 'horizontal_line_segment':
                        assert _xy2[0:3] == [_xy[i] for i in (0,2,1)]
                    elif _name in ('rectangle', 'ellipse', 'arrow', 'line_segment'):
                        assert _xy2 == _xy
                    elif _name in ('point', 'text'):
                        assert _xy2[0:2] == _xy[0:2]
                    else:
                        raise ValueError('Unknown marker : ' + _name)
Esempio n. 25
0
 def test_save_load_point_marker(self, tmp_path, file):
     filename = tmp_path / file
     s = self.s
     x, y = 9, 8
     color = 'purple'
     name = "point test"
     m = markers.point(x=x, y=y, color=color)
     m.name = name
     s.add_marker(m, permanent=True)
     s.save(filename)
     s1 = load(filename)
     m1 = s1.metadata.Markers.get_item(name)
     assert san_dict(m1._to_dictionary()) == san_dict(m._to_dictionary())
Esempio n. 26
0
 def test_set_get_data(self):
     m = markers.point(x=0, y=1.3)
     nose.tools.assert_true(m.data['x1'] == 0)
     nose.tools.assert_true(m.data['y1'] == 1.3)
     m.add_data(y1=0.3)
     nose.tools.assert_true(m.data['x1'] == 0)
     nose.tools.assert_true(m.data['y1'] == 0.3)
     m.set_data(y1=1.3)
     nose.tools.assert_true(m.data['x1'][()][()] is None)
     nose.tools.assert_true(m.data['y1'] == 1.3)
     nose.tools.assert_true(m.data['x1'].dtype == np.dtype('O'))
     m.add_data(y1=[1, 2])
     nose.tools.assert_true(m.data['y1'][()].shape == (2, ))
Esempio n. 27
0
 def test_set_get_data(self):
     m = markers.point(x=0, y=1.3)
     nose.tools.assert_equal(m.data['x1'], 0)
     nose.tools.assert_equal(m.data['y1'], 1.3)
     m.add_data(y1=0.3)
     nose.tools.assert_equal(m.data['x1'], 0)
     nose.tools.assert_equal(m.data['y1'], 0.3)
     m.set_data(y1=1.3)
     nose.tools.assert_is_none(m.data['x1'][()][()])
     nose.tools.assert_equal(m.data['y1'], 1.3)
     nose.tools.assert_equal(m.data['x1'].dtype, np.dtype('O'))
     m.add_data(y1=[1, 2])
     nose.tools.assert_equal(m.data['y1'][()].shape, (2, ))
Esempio n. 28
0
 def test_set_get_data(self):
     m = markers.point(x=0, y=1.3)
     nose.tools.assert_equal(m.data['x1'], 0)
     nose.tools.assert_equal(m.data['y1'], 1.3)
     m.add_data(y1=0.3)
     nose.tools.assert_equal(m.data['x1'], 0)
     nose.tools.assert_equal(m.data['y1'], 0.3)
     m.set_data(y1=1.3)
     nose.tools.assert_is_none(m.data['x1'][()][()])
     nose.tools.assert_equal(m.data['y1'], 1.3)
     nose.tools.assert_equal(m.data['x1'].dtype, np.dtype('O'))
     m.add_data(y1=[1, 2])
     nose.tools.assert_equal(m.data['y1'][()].shape, (2,))
Esempio n. 29
0
 def test_set_get_data(self):
     m = markers.point(x=0, y=1.3)
     assert m.data['x1'] == 0
     assert m.data['y1'] == 1.3
     m.add_data(y1=0.3)
     assert m.data['x1'] == 0
     assert m.data['y1'] == 0.3
     m.set_data(y1=1.3)
     assert m.data['x1'][()][()] is None
     assert m.data['y1'] == 1.3
     assert m.data['x1'].dtype == np.dtype('O')
     m.add_data(y1=[1, 2])
     assert m.data['y1'][()].shape == (2,)
Esempio n. 30
0
 def test_set_get_data(self):
     m = markers.point(x=0, y=1.3)
     nose.tools.assert_true(m.data['x1'] == 0)
     nose.tools.assert_true(m.data['y1'] == 1.3)
     m.add_data(y1=0.3)
     nose.tools.assert_true(m.data['x1'] == 0)
     nose.tools.assert_true(m.data['y1'] == 0.3)
     m.set_data(y1=1.3)
     nose.tools.assert_true(m.data['x1'][()][()] is None)
     nose.tools.assert_true(m.data['y1'] == 1.3)
     nose.tools.assert_true(m.data['x1'].dtype == np.dtype('O'))
     m.add_data(y1=[1, 2])
     nose.tools.assert_true(m.data['y1'][()].shape == (2,))
Esempio n. 31
0
 def test_set_get_data(self):
     m = markers.point(x=0, y=1.3)
     assert m.data['x1'] == 0
     assert m.data['y1'] == 1.3
     m.add_data(y1=0.3)
     assert m.data['x1'] == 0
     assert m.data['y1'] == 0.3
     m.set_data(y1=1.3)
     assert m.data['x1'][()][()] is None
     assert m.data['y1'] == 1.3
     assert m.data['x1'].dtype == np.dtype('O')
     m.add_data(y1=[1, 2])
     assert m.data['y1'][()].shape == (2,)
Esempio n. 32
0
 def test_save_load_point_marker(self, mpl_cleanup):
     x, y = 9, 8
     color = 'purple'
     name = "point test"
     s = Signal2D(np.arange(100).reshape(10, 10))
     m = markers.point(x=x, y=y, color=color)
     m.name = name
     s.add_marker(m, permanent=True)
     with tempfile.TemporaryDirectory() as tmp:
         filename = tmp + '/test_save_point_marker.hdf5'
     s.save(filename)
     s1 = load(filename)
     m1 = s1.metadata.Markers.get_item(name)
     assert san_dict(m1._to_dictionary()) == san_dict(m._to_dictionary())
Esempio n. 33
0
 def test_get_data_shape_point(self):
     m0 = markers.point(5, 5)
     m1 = markers.point((5, 10), (5, 10))
     m2 = markers.point(((12, 2, 9), (1, 2, 3)), ((2, 5, 1), (3, 9, 2)))
     m3 = markers.vertical_line(((12, 2), (2, 5), (9, 2)))
     m4 = markers.point(5, 5)
     m4.data['x1'][()] = np.array(None, dtype=np.object)
     m4.data['y1'][()] = np.array(None, dtype=np.object)
     m5 = markers.vertical_line(9)
     m6 = markers.rectangle(1, 5, 6, 8)
     m7 = markers.rectangle((1, 2), (5, 6), (6, 7), (8, 9))
     m8 = markers.point(
         np.arange(256).reshape(2, 2, 2, 2, 2, 2, 2, 2),
         np.arange(256).reshape(2, 2, 2, 2, 2, 2, 2, 2))
     assert m0._get_data_shape() == ()
     assert m1._get_data_shape() == (2,)
     assert m2._get_data_shape() == (2, 3)
     assert m3._get_data_shape() == (3, 2)
     with pytest.raises(ValueError):
         assert m4._get_data_shape() == ()
     assert m5._get_data_shape() == ()
     assert m6._get_data_shape() == ()
     assert m7._get_data_shape() == (2,)
     assert m8._get_data_shape() == (2, 2, 2, 2, 2, 2, 2, 2)
Esempio n. 34
0
 def test_save_load_point_marker(self):
     x, y = 9, 8
     color = 'purple'
     name = "point test"
     s = Signal2D(np.arange(100).reshape(10, 10))
     m = markers.point(
         x=x, y=y, color=color)
     m.name = name
     s.add_marker(m, permanent=True)
     with tempfile.TemporaryDirectory() as tmp:
         filename = tmp + '/test_save_point_marker.hdf5'
     s.save(filename)
     s1 = load(filename)
     m1 = s1.metadata.Markers.get_item(name)
     assert san_dict(m1._to_dictionary()) == san_dict(m._to_dictionary())
Esempio n. 35
0
def get_point_list(points: Union[list, np.ndarray], **kwargs) -> list:
    """Return a list of point markers.

    Parameters
    ----------
    points :
        On the form [[x0, y0], [x1, y1], ...].
    kwargs :
        Keyword arguments allowed by :class:`matplotlib.pyplot.axvline`.

    Returns
    -------
    marker_list :
        List of :class:`hyperspy.utils.markers.point`.
    """
    points = np.atleast_2d(points)
    return [point(x=x, y=y, **kwargs) for x, y in points]
Esempio n. 36
0
 def test_save_load_permanent_marker(self, tmp_path, file):
     filename = tmp_path / file
     s = self.s
     x, y = 5, 2
     color = 'red'
     size = 10
     name = 'testname'
     m = markers.point(x=x, y=y, color=color, size=size)
     m.name = name
     s.add_marker(m, permanent=True)
     s.save(filename)
     s1 = load(filename)
     assert s1.metadata.Markers.has_item(name)
     m1 = s1.metadata.Markers.get_item(name)
     assert m1.get_data_position('x1') == x
     assert m1.get_data_position('y1') == y
     assert m1.get_data_position('size') == size
     assert m1.marker_properties['color'] == color
     assert m1.name == name
Esempio n. 37
0
def test_iterate_markers():
    from skimage.feature import peak_local_max
    import scipy.misc
    ims = BaseSignal(scipy.misc.face()).as_signal2D([1, 2])
    index = np.array([peak_local_max(im.data, min_distance=100,
                                     num_peaks=4) for im in ims])
    # Add multiple markers
    for i in range(4):
        xs = index[:, i, 1]
        ys = index[:, i, 0]
        m = markers.point(x=xs, y=ys, color='red')
        ims.add_marker(m, plot_marker=True, permanent=True)
        m = markers.text(x=10 + xs, y=10 + ys, text=str(i), color='k')
        ims.add_marker(m, plot_marker=True, permanent=True)
    xs = index[:, :, 1]
    ys = index[:, :, 0]
    x1 = np.min(xs, 1)
    y1 = np.min(ys, 1)
    x2 = np.max(xs, 1)
    y2 = np.max(ys, 1)
    m = markers.rectangle(x1, y1, x2, y2, color='green')
    ims.add_marker(m, plot_marker=True, permanent=True)
    m = markers.arrow(x1, y1, x2, y2, arrowstyle='<->',edgecolor='red')
    ims.add_marker(m, plot_marker=True, permanent=True)
    m = markers.ellipse((x1+x2)/2, (y1+y2)/2, x2-x1, y2-y1,
                      edgecolor='yellow')
    ims.add_marker(m, plot_marker=True, permanent=True)

    for im in ims:
        m_original = ims.metadata.Markers
        m_iterated = im.metadata.Markers
        for key in m_original.keys():
            mo = m_original[key]
            mi = m_iterated[key]
            assert mo.__class__.__name__ == mi.__class__.__name__
            assert mo.name == mi.name
            assert mo.get_data_position('x1') == mi.get_data_position('x1')
            assert mo.get_data_position('y1') == mi.get_data_position('y1')
            assert mo.get_data_position('text') == mi.get_data_position('text')
            for propkey in mo.marker_properties:
                assert mo.marker_properties[propkey] == \
                    mi.marker_properties[propkey]
Esempio n. 38
0
 def test_save_load_permanent_marker(self):
     x, y = 5, 2
     color = 'red'
     size = 10
     name = 'testname'
     s = Signal2D(np.arange(100).reshape(10, 10))
     m = markers.point(x=x, y=y, color=color, size=size)
     m.name = name
     s.add_marker(m, permanent=True)
     with tempfile.TemporaryDirectory() as tmp:
         filename = tmp + '/testloadfile.hdf5'
     s.save(filename)
     s1 = load(filename)
     assert s1.metadata.Markers.has_item(name)
     m1 = s1.metadata.Markers.get_item(name)
     assert m1.get_data_position('x1') == x
     assert m1.get_data_position('y1') == y
     assert m1.get_data_position('size') == size
     assert m1.marker_properties['color'] == color
     assert m1.name == name
Esempio n. 39
0
 def test_save_load_permanent_marker(self):
     x, y = 5, 2
     color = 'red'
     size = 10
     name = 'testname'
     s = Signal2D(np.arange(100).reshape(10, 10))
     m = markers.point(x=x, y=y, color=color, size=size)
     m.name = name
     s.add_marker(m, permanent=True)
     with tempfile.TemporaryDirectory() as tmp:
         filename = tmp + '/testloadfile.hdf5'
     s.save(filename)
     s1 = load(filename)
     assert s1.metadata.Markers.has_item(name)
     m1 = s1.metadata.Markers.get_item(name)
     assert m1.get_data_position('x1') == x
     assert m1.get_data_position('y1') == y
     assert m1.get_data_position('size') == size
     assert m1.marker_properties['color'] == color
     assert m1.name == name
Esempio n. 40
0
 def test_save_load_multidim_navigation_marker(self):
     x, y = (1, 2, 3), (5, 6, 7)
     name = 'test point'
     s = Signal2D(np.arange(300).reshape(3, 10, 10))
     m = markers.point(x=x, y=y)
     m.name = name
     s.add_marker(m, permanent=True)
     with tempfile.TemporaryDirectory() as tmp:
         filename = tmp + '/test_save_multidim_nav_marker.hdf5'
     s.save(filename)
     s1 = load(filename)
     m1 = s1.metadata.Markers.get_item(name)
     assert san_dict(m1._to_dictionary()) == san_dict(m._to_dictionary())
     assert m1.get_data_position('x1') == x[0]
     assert m1.get_data_position('y1') == y[0]
     s1.axes_manager.navigation_axes[0].index = 1
     assert m1.get_data_position('x1') == x[1]
     assert m1.get_data_position('y1') == y[1]
     s1.axes_manager.navigation_axes[0].index = 2
     assert m1.get_data_position('x1') == x[2]
     assert m1.get_data_position('y1') == y[2]
Esempio n. 41
0
 def test_add_several_permanent_markers(self):
     s = Signal1D(np.arange(10))
     m_point = markers.point(x=5, y=5)
     m_line = markers.line_segment(x1=5, x2=10, y1=5, y2=10)
     m_vline = markers.vertical_line(x=5)
     m_vline_segment = markers.vertical_line_segment(x=4, y1=3, y2=6)
     m_hline = markers.horizontal_line(y=5)
     m_hline_segment = markers.horizontal_line_segment(x1=1, x2=9, y=5)
     m_rect = markers.rectangle(x1=1, x2=3, y1=5, y2=10)
     m_text = markers.text(x=1, y=5, text="test")
     s.add_marker(m_point, permanent=True)
     s.add_marker(m_line, permanent=True)
     s.add_marker(m_vline, permanent=True)
     s.add_marker(m_vline_segment, permanent=True)
     s.add_marker(m_hline, permanent=True)
     s.add_marker(m_hline_segment, permanent=True)
     s.add_marker(m_rect, permanent=True)
     s.add_marker(m_text, permanent=True)
     assert len(list(s.metadata.Markers)) == 8
     with pytest.raises(ValueError):
         s.add_marker(m_rect, permanent=True)
Esempio n. 42
0
def test_iterate_markers():
    from skimage.feature import peak_local_max
    import scipy.misc
    ims = BaseSignal(scipy.misc.face()).as_signal2D([1, 2])
    index = np.array([peak_local_max(im.data, min_distance=100,
                                     num_peaks=4) for im in ims])
    # Add multiple markers
    for i in range(4):
        xs = index[:, i, 1]
        ys = index[:, i, 0]
        m = markers.point(x=xs, y=ys, color='red')
        ims.add_marker(m, plot_marker=True, permanent=True)
        m = markers.text(x=10 + xs, y=10 + ys, text=str(i), color='k')
        ims.add_marker(m, plot_marker=True, permanent=True)
    xs = index[:, :, 1]
    ys = index[:, :, 0]
    m = markers.rectangle(np.min(xs, 1),
                          np.min(ys, 1),
                          np.max(xs, 1),
                          np.max(ys, 1),
                          color='green')
    ims.add_marker(m, plot_marker=True, permanent=True)

    for im in ims:
        m_original = ims.metadata.Markers
        m_iterated = im.metadata.Markers
        for key in m_original.keys():
            mo = m_original[key]
            mi = m_iterated[key]
            assert mo.__class__.__name__ == mi.__class__.__name__
            assert mo.name == mi.name
            assert mo.get_data_position('x1') == mi.get_data_position('x1')
            assert mo.get_data_position('y1') == mi.get_data_position('y1')
            assert mo.get_data_position('text') == mi.get_data_position('text')
            assert mo.marker_properties['color'] == \
                mi.marker_properties['color']
Esempio n. 43
0
 def test_add_permanent_marker_signal2d(self):
     s = Signal2D(np.arange(100).reshape(10, 10))
     m = markers.point(x=5, y=5)
     s.add_marker(m, permanent=True)
     assert list(s.metadata.Markers)[0][1] == m
Esempio n. 44
0
 def test_add_permanent_marker_not_plot(self):
     s = Signal1D(np.arange(10))
     m = markers.point(x=5, y=5)
     s.add_marker(m, permanent=True, plot_marker=False)
     assert list(s.metadata.Markers)[0][1] == m
Esempio n. 45
0
 def test_add_markers_as_list(self):
     s = Signal1D(np.arange(10))
     marker_list = []
     for i in range(12):
         marker_list.append(markers.point(4, 8))
     s.add_marker(marker_list)
Esempio n. 46
0
 def test_add_permanent_marker_twice(self):
     s = Signal1D(np.arange(10))
     m = markers.point(x=5, y=5)
     s.add_marker(m, permanent=True)
     with pytest.raises(ValueError):
         s.add_marker(m, permanent=True)
Esempio n. 47
0
 def test_add_marker_not_plot(self):
     # This will do nothing, since plot_marker=False and permanent=False
     # So this test will return a _logger warning
     s = Signal1D(np.arange(10))
     m = markers.point(x=5, y=5)
     s.add_marker(m, plot_marker=False)