Check out the Hyperspy Workshop May 13-17, 2024 Online

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)

# 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 | 141.33 us
[                                        ] | 0% Completed | 100.64 ms
[                                        ] | 0% Completed | 200.97 ms
[                                        ] | 0% Completed | 301.55 ms
[########################################] | 100% Completed | 401.85 ms

[                                        ] | 0% Completed | 127.78 us
[                                        ] | 0% Completed | 100.50 ms
[                                        ] | 0% Completed | 200.77 ms
[                                        ] | 0% Completed | 301.09 ms
[                                        ] | 0% Completed | 401.94 ms
[                                        ] | 0% Completed | 502.26 ms
[                                        ] | 0% Completed | 602.61 ms
[                                        ] | 0% Completed | 702.91 ms
[########################################] | 100% Completed | 803.30 ms

[                                        ] | 0% Completed | 138.55 us
[########################################] | 100% Completed | 100.42 ms

[                                        ] | 0% Completed | 217.78 us
[########################################] | 100% Completed | 102.32 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 | 136.40 us
[########################################] | 100% Completed | 100.46 ms

[                                        ] | 0% Completed | 124.47 us
[########################################] | 100% Completed | 100.40 ms

[                                        ] | 0% Completed | 142.16 us
[########################################] | 100% Completed | 100.41 ms

[                                        ] | 0% Completed | 113.86 us
[########################################] | 100% Completed | 100.39 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 | 140.11 us
[########################################] | 100% Completed | 100.48 ms

[                                        ] | 0% Completed | 131.87 us
[########################################] | 100% Completed | 100.42 ms

[                                        ] | 0% Completed | 124.71 us
[########################################] | 100% Completed | 100.39 ms

[                                        ] | 0% Completed | 127.36 us
[########################################] | 100% Completed | 100.40 ms

[                                        ] | 0% Completed | 127.31 us
[########################################] | 100% Completed | 100.39 ms

[                                        ] | 0% Completed | 114.28 us
[########################################] | 100% Completed | 100.37 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 | 138.57 us
[########################################] | 100% Completed | 100.47 ms

[                                        ] | 0% Completed | 126.45 us
[########################################] | 100% Completed | 100.42 ms

[                                        ] | 0% Completed | 133.35 us
[########################################] | 100% Completed | 100.41 ms

[                                        ] | 0% Completed | 123.69 us
[########################################] | 100% Completed | 100.40 ms

[                                        ] | 0% Completed | 133.35 us
[########################################] | 100% Completed | 100.45 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 | 160.65 us
[########################################] | 100% Completed | 100.49 ms

[                                        ] | 0% Completed | 121.54 us
[########################################] | 100% Completed | 100.39 ms

[                                        ] | 0% Completed | 118.75 us
[########################################] | 100% Completed | 100.40 ms

[                                        ] | 0% Completed | 115.95 us
[########################################] | 100% Completed | 100.38 ms

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

Gallery generated by Sphinx-Gallery