def test_ODF_cell(self, reference_dir, fractions, degrees, N): steps = np.array([144, 36, 36]) limits = np.array([360., 90., 90.]) rng = tuple(zip(np.zeros(3), limits)) weights = Table.load( reference_dir / 'ODF_experimental_cell.txt').get('intensity').flatten() Eulers = grid_filters.cell_coord0(steps, limits) Eulers = np.radians(Eulers) if not degrees else Eulers Eulers_r = Rotation.from_ODF(weights, Eulers.reshape(-1, 3, order='F'), N, degrees, fractions).as_Eulers(True) weights_r = np.histogramdd( Eulers_r, steps, rng)[0].flatten(order='F') / N * np.sum(weights) if fractions: assert np.sqrt(((weights_r - weights)**2).mean()) < 4
def test_ODF_node(self, reference_dir, degrees, N): steps = np.array([144, 36, 36]) limits = np.array([360., 90., 90.]) rng = tuple(zip(-limits / steps * .5, limits - limits / steps * .5)) weights = Table.load(reference_dir / 'ODF_experimental.txt').get('intensity') weights = weights.reshape(steps + 1, order='F')[:-1, :-1, :-1].reshape(-1, order='F') Eulers = grid_filters.node_coord0(steps, limits)[:-1, :-1, :-1] Eulers = np.radians(Eulers) if not degrees else Eulers Eulers_r = Rotation.from_ODF(weights, Eulers.reshape(-1, 3, order='F'), N, degrees).as_Eulers(True) weights_r = np.histogramdd( Eulers_r, steps, rng)[0].flatten(order='F') / N * np.sum(weights) assert np.sqrt(((weights_r - weights)**2).mean()) < 5