Ejemplo n.º 1
0
def random_directions_bounded_test_1():
    # TODO: write actual test
    r = np.pi / 2
    N = 180
    random_directions_bounded(ndim=2, radius=r, num_points=N, center=None)
    random_directions_bounded(ndim=3, radius=r, num_points=N, center=None)
    random_directions_bounded(ndim=2, radius=r, num_points=N, center=random_direction(2))
    random_directions_bounded(ndim=3, radius=r, num_points=N, center=random_direction(3))
    def random_directions_bounded_density_3d(center, radius, N):

        S = random_directions_bounded(3, radius, N, center=center)
        distances = distances_from(S, center)

        if not (distances <= radius).all():
            invalid = np.nonzero(distances > radius)[0]
            msg = 'Invalid distances: %s > %f' % (distances[invalid], radius)
            raise Exception(msg)

        subs = 6
        A = spherical_cap_area(cap_radius=radius)
        da = A / subs
        dist = np.zeros(subs, dtype='int')
        for s in range(subs):
            lower = s * da
            upper = lower + da

            r1 = spherical_cap_with_area(lower)
            r2 = spherical_cap_with_area(upper)
            num_here = np.logical_and(distances >= r1, distances < r2).sum()

            dist[s] = num_here

        assert dist.sum() == N
        return DiscreteUniformDistribution(dist,
                                    'Distribution of distances from center')
Ejemplo n.º 3
0
    def random_directions_bounded_density_3d(center, radius, N):

        S = random_directions_bounded(3, radius, N, center=center)
        distances = distances_from(S, center)

        if not (distances <= radius).all():
            invalid = np.nonzero(distances > radius)[0]
            msg = 'Invalid distances: %s > %f' % (distances[invalid], radius)
            raise Exception(msg)

        subs = 6
        A = spherical_cap_area(cap_radius=radius)
        da = A / subs
        dist = np.zeros(subs, dtype='int')
        for s in range(subs):
            lower = s * da
            upper = lower + da

            r1 = spherical_cap_with_area(lower)
            r2 = spherical_cap_with_area(upper)
            num_here = np.logical_and(distances >= r1, distances < r2).sum()

            dist[s] = num_here

        assert dist.sum() == N
        return DiscreteUniformDistribution(dist,
                                    'Distribution of distances from center')
Ejemplo n.º 4
0
def random_directions_bounded_test_1():
    # TODO: write actual test
    r = np.pi / 2
    N = 180
    random_directions_bounded(ndim=2, radius=r, num_points=N, center=None)
    random_directions_bounded(ndim=3, radius=r, num_points=N, center=None)
    random_directions_bounded(ndim=2, radius=r, num_points=N,
                              center=random_direction(2))
    random_directions_bounded(ndim=3, radius=r, num_points=N,
                              center=random_direction(3))
def random_directions_bounded_check(ndim, radius, N):
    S = random_directions_bounded(ndim=ndim, radius=radius, num_points=N)
    r2 = distribution_radius(S)
    check_reasonable_radius(radius, r2, N)
Ejemplo n.º 6
0
def random_directions_bounded_check(ndim, radius, N):
    S = random_directions_bounded(ndim=ndim, radius=radius, num_points=N)
    r2 = distribution_radius(S)
    check_reasonable_radius(radius, r2, N)