예제 #1
0
    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
예제 #2
0
    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