Source code for hipscat.pixel_tree.negative_tree
from typing import List
from hipscat.pixel_math import HealpixPixel
from hipscat.pixel_tree import PixelAlignmentType, align_trees
from hipscat.pixel_tree.pixel_tree import PixelTree
[docs]
def compute_negative_tree_pixels(tree: PixelTree) -> List[HealpixPixel]:
"""Computes a 'negative pixel tree' consisting of the pixels needed to cover the full sky not in the tree
Args:
tree (PixelTree): the input tree to compute the negative of
Returns (List[HealpixPixel]):
A list of HEALPix pixels needed to cover the part of the sky not covered by the tree, using the least
number of pixels possible.
"""
tree_pixels = set(tree.get_healpix_pixels())
full_tree = PixelTree.from_healpix([(0, i) for i in range(12)])
alignment = align_trees(full_tree, tree, alignment_type=PixelAlignmentType.OUTER)
aligned_tree = alignment.pixel_tree
return [p for p in aligned_tree.get_healpix_pixels() if p not in tree_pixels]