cuboid_subvolume_labels¶
- halotools.mock_observables.cuboid_subvolume_labels(sample, Nsub, Lbox)[source]¶
Return integer labels indicating which cubical subvolume of a larger cubical volume a set of points occupy.
- Parameters:
- samplearray_like
Npts x 3 numpy array containing 3-D positions of points.
- Nsubarray_like
Length-3 numpy array of integers indicating how many times to split the volume along each dimension. If a single integer, N, is supplied,
Nsub
is set to [N,N,N], and the volume is split along each dimension N times. The total number of subvolumes is given by numpy.prod(Nsub).- Lboxarray_like
Length-3 numpy array definging the lengths of the sides of the cubical volume that
sample
occupies. If only a single scalar is specified, the volume is assumed to be a cube with side-length Lbox
- Returns:
- labelsnumpy.array
(Npts, ) numpy array with integer labels in the range [1,numpy.prod(Nsub)] indicating the subvolume each point in
sample
occupies.- N_sub_volint
number of subvolumes.
Examples
For demonstration purposes we create a randomly distributed set of points within a periodic unit cube.
>>> Npts = 1000 >>> Lbox = 1.0 >>> period = np.array([Lbox,Lbox,Lbox])
>>> x = np.random.random(Npts) >>> y = np.random.random(Npts) >>> z = np.random.random(Npts)
We transform our x, y, z points into the array shape used by the pair-counter by taking the transpose of the result of
numpy.vstack
. This boilerplate transformation is used throughout themock_observables
sub-package:>>> sample = np.vstack((x,y,z)).T
Divide the volume into cubes with length 0.25 on a side.
>>> Nsub = [4,4,4] >>> labels, N_sub_vol = cuboid_subvolume_labels(sample, Nsub, Lbox)