HealSparse
can generate uniform randoms based on the valid pixels in a HealSparseMap
map. It is up to the user of these random points to weight them appropriately.
There are two methods to generate randoms. The "fast" method requires more memory, and produces randoms that are quantized (at a very high level). The regular method is not quantized and does not require any extra memory, but is significantly slower.
The fast random generation is run with healsparse.make_uniform_randoms_fast()
. This code path requires more memory and may not be suitable for very large, high resolution masks. The output randoms are quantized by the nside_randoms
quantity. The default is 2**23
, which is approximately 7e-6 arcsecond quantization, which should be adequate for most purposes.
import healsparse
circ = healsparse.Circle(ra=200.0, dec=0.0, radius=1.0, value=1)
smap = circ.get_map(nside_coverage=32, nside_sparse=32768, dtype=np.int16)
# Make 100000 randoms
ra_rand, dec_rand = healsparse.make_uniform_randoms_fast(smap, 100000)
The regular random generation is run with healsparse.make_uniform_randoms()
. This code requirest less memory than the fast generation, and there is no quanitization in the random points. However, it is slower than the fast generation. The API is very similar to healsparse.make_uniform_randoms_fast()
.
import healsparse
circ = healsparse.Circle(ra=200.0, dec=0.0, radius=1.0, value=1)
smap = circ.get_map(nside_coverage=32, nside_sparse=32768, dtype=np.int16)
# Make 100000 randoms
ra_rand, dec_rand = healsparse.make_uniform_randoms(smap, 100000)