Operations on vectors#

This example shows how to perform some basic operations slicing and selecting vectors. This is designed to be very flexible and powerful. Many operations such as slicing with a boolean array are supported.

Additionally, lazy operations are supported and can be chained together. These are often faster than their non-lazy counterparts as dask very effectively prunes the computation graph.

import pyxem as pxm
import hyperspy.api as hs

hs.set_log_level("ERROR")

s = pxm.data.tilt_boundary_data()
temp = s.template_match_disk(disk_r=5, subtract_min=False)

vectors = s.get_diffraction_vectors(threshold_abs=0.4, min_distance=5)
[                                        ] | 0% Completed | 172.75 us
[                                        ] | 0% Completed | 114.43 ms
[                                        ] | 0% Completed | 214.74 ms
[                                        ] | 0% Completed | 315.03 ms
[                                        ] | 0% Completed | 415.33 ms
[########################################] | 100% Completed | 515.70 ms

[                                        ] | 0% Completed | 152.38 us
[                                        ] | 0% Completed | 107.46 ms
[                                        ] | 0% Completed | 207.74 ms
[                                        ] | 0% Completed | 308.06 ms
[                                        ] | 0% Completed | 408.35 ms
[                                        ] | 0% Completed | 508.70 ms
[                                        ] | 0% Completed | 609.06 ms
[                                        ] | 0% Completed | 709.39 ms
[                                        ] | 0% Completed | 809.70 ms
[                                        ] | 0% Completed | 910.00 ms
[                                        ] | 0% Completed | 1.01 s
[                                        ] | 0% Completed | 1.11 s
[                                        ] | 0% Completed | 1.21 s
[                                        ] | 0% Completed | 1.31 s
[                                        ] | 0% Completed | 1.41 s
[########################################] | 100% Completed | 1.51 s

[                                        ] | 0% Completed | 158.82 us
[########################################] | 100% Completed | 104.36 ms

Plotting all the vectors

s.plot()
all_vectors = vectors.to_markers(color="red", sizes=10, alpha=0.5)
s.add_marker(all_vectors)
  • slicing vectors
  • Signal
[                                        ] | 0% Completed | 179.68 us
[########################################] | 100% Completed | 102.20 ms
slic_vectors = (vectors.ivec[:, vectors.ivec[0] < 10]).to_markers(
    color="green", sizes=5, alpha=0.5
)

s.plot()
s.add_marker([all_vectors, slic_vectors])
  • slicing vectors
  • Signal
[                                        ] | 0% Completed | 167.06 us
[########################################] | 100% Completed | 101.60 ms

[                                        ] | 0% Completed | 134.78 us
[########################################] | 100% Completed | 101.99 ms

[                                        ] | 0% Completed | 122.43 us
[########################################] | 100% Completed | 103.06 ms

[                                        ] | 0% Completed | 115.60 us
[########################################] | 100% Completed | 101.93 ms
slic_vectors = (
    vectors.ivec[:, (vectors.ivec[0] > 0) * (vectors.ivec[0] < 10)]
).to_markers(color="w", sizes=5, alpha=0.5)
s.plot()
s.add_marker([all_vectors, slic_vectors])
  • slicing vectors
  • Signal
[                                        ] | 0% Completed | 171.69 us
[########################################] | 100% Completed | 101.61 ms

[                                        ] | 0% Completed | 132.72 us
[########################################] | 100% Completed | 101.98 ms

[                                        ] | 0% Completed | 123.50 us
[########################################] | 100% Completed | 101.39 ms

[                                        ] | 0% Completed | 116.40 us
[########################################] | 100% Completed | 101.91 ms

[                                        ] | 0% Completed | 118.18 us
[########################################] | 100% Completed | 102.53 ms

[                                        ] | 0% Completed | 115.25 us
[########################################] | 100% Completed | 101.85 ms
vect_magnitudes = (vectors.ivec[0] ** 2 + vectors.ivec[1] ** 2) ** 0.5
slic_vectors = vectors.ivec[:, vect_magnitudes < 20].to_markers(
    color="w", sizes=5, alpha=0.5
)
s.plot()
s.add_marker([all_vectors, slic_vectors])
s.add_marker([all_vectors, slic_vectors])
  • slicing vectors
  • Signal
[                                        ] | 0% Completed | 173.25 us
[########################################] | 100% Completed | 101.62 ms

[                                        ] | 0% Completed | 138.01 us
[########################################] | 100% Completed | 101.57 ms

[                                        ] | 0% Completed | 118.89 us
[########################################] | 100% Completed | 102.01 ms

[                                        ] | 0% Completed | 117.18 us
[########################################] | 100% Completed | 102.57 ms

[                                        ] | 0% Completed | 116.36 us
[########################################] | 100% Completed | 101.88 ms
slic_vectors = (vectors.ivec[:, vectors.ivec["intensity"] < 0.5]).to_markers(
    color="w", sizes=5, alpha=0.5
)
s.plot()
s.add_marker([all_vectors, slic_vectors])
s.add_marker([all_vectors, slic_vectors])
  • slicing vectors
  • Signal
[                                        ] | 0% Completed | 177.00 us
[########################################] | 100% Completed | 101.63 ms

[                                        ] | 0% Completed | 125.35 us
[########################################] | 100% Completed | 101.84 ms

[                                        ] | 0% Completed | 118.17 us
[########################################] | 100% Completed | 102.38 ms

[                                        ] | 0% Completed | 115.64 us
[########################################] | 100% Completed | 101.89 ms

sphinx_gallery_thumbnail_number = 8

Total running time of the script: (0 minutes 11.688 seconds)

Gallery generated by Sphinx-Gallery