def test_vector_indexation_generator_init(): vectors = DiffractionVectors([[1], [2]]) vectors.cartesian = [[1], [2]] vector_library = DiffractionVectorLibrary() vector_indexation_generator = VectorIndexationGenerator( vectors, vector_library) assert isinstance(vector_indexation_generator, VectorIndexationGenerator) assert vector_indexation_generator.vectors == vectors assert vector_indexation_generator.library == vector_library
def test_vector_indexation_generator_index_vectors(vector_match_peaks, vector_library): # vectors not used directly vectors = DiffractionVectors(np.array(vector_match_peaks[:, :2])) vectors.cartesian = DiffractionVectors(np.array(vector_match_peaks)) gen = VectorIndexationGenerator(vectors, vector_library) indexation = gen.index_vectors(mag_tol=0.1, angle_tol=6, index_error_tol=0.3, n_peaks_to_index=2, n_best=5) # Values are tested directly on the match_vector in the util tests assert isinstance(indexation.vectors, DiffractionVectors) # (n_best=1, 5 result values from each) np.testing.assert_equal(indexation.data.shape, (5, )) # n_best=1, 3 peaks with hkl) np.testing.assert_equal(indexation.hkls.shape, (1, 3, 3)) refined1 = gen.refine_n_best_orientations(indexation, 1.0, 1.0, n_best=0) assert isinstance(refined1.vectors, DiffractionVectors) np.testing.assert_equal(refined1.data.shape, (5, )) refined2 = gen.refine_best_orientation(indexation, 1.0, 1.0) assert isinstance(refined2.vectors, DiffractionVectors) np.testing.assert_equal(refined2.data.shape, (1, )) assert isinstance(refined2.data[0], OrientationResult) assert refined2.data[0].phase_index == indexation.data[0].phase_index assert refined2.data[0].match_rate == indexation.data[0].match_rate # Must use a large tolerance here, because there are only 3 vectors np.testing.assert_almost_equal( np.diag(refined1.data[0].rotation_matrix), np.diag(indexation.data[0].rotation_matrix), 1, ) np.testing.assert_almost_equal( np.diag(refined2.data[0].rotation_matrix), np.diag(indexation.data[0].rotation_matrix), 1, )