Source code for toasty
# -*- mode: python; coding: utf-8 -*-
# Copyright 2013-2021 Chris Beaumont and the AAS WorldWide Telescope project
# Licensed under the MIT License.
from __future__ import absolute_import, division, print_function
__all__ = [
"tile_fits",
"TilingMethod",
]
from enum import Enum
[docs]
class TilingMethod(Enum):
UNTILED = 1
TAN = 2
TOAST = 3
HIPS = 4
AUTO_DETECT = 5
[docs]
def tile_fits(
fits,
out_dir=None,
hdu_index=None,
override=False,
cli_progress=False,
parallel=None,
tiling_method=TilingMethod.AUTO_DETECT,
blankval=None,
**kwargs
):
"""
Process a file or a list of FITS files into a tile pyramid in the form of either a common tangential projection,
TOAST, or HiPS.
Parameters
----------
fits : str or list of str
A single path or a list of paths to FITS files to be processed.
out_dir : optional str, defaults to None
A path to the output directory where all the tiled fits will be located. If not set, the output directory will
be at the location of the first FITS file.
hdu_index : optional int or list of int, defaults to None
Use this parameter to specify which HDU to tile. If the *fits* input is a list of FITS, you can specify the
hdu_index of each FITS by using a list of integers like this: [0, 2, 1]. If hdu_index is not set, toasty will
use the first HDU with tilable content in each FITS.
override : optional boolean, defaults to False
If there is already a tiled FITS in *out_dir*, the tiling process is skipped and the content in *out_dir* is
served. To override the content in *out_dir*, set *override* to True.
cli_progress : optional boolean, defaults to False
If true, progress messages will be printed as the FITS files are being processed.
parallel : integer or None (the default)
The level of parallelization to use. If unspecified, defaults to using
all CPUs. If the OS does not support fork-based multiprocessing,
parallel processing is not possible and serial processing will be
forced. Pass ``1`` to force serial processing.
tiling_method : optional :class:`~toasty.TilingMethod`
Can be used to force a specific tiling method, i.e. tiled tangential projection, TOAST, or HiPS. Defaults to
auto-detection, which choses the most appropriate method.
blankval : optional number, default None
An image value to treat as undefined in all FITS inputs.
kwargs
Settings for the tiling process.
Returns
-------
out_dir : :class:`str`
The relative path to the base directory where the tiled files are located
bld : :class:`~toasty.builder.Builder`
State for the imagery data set that's been assembled.
"""
# Importing here to keep toasty namespace clean:
from toasty import collection, fits_tiler
coll = collection.load(fits, hdu_index=hdu_index, blankval=blankval)
tiler = fits_tiler.FitsTiler(
coll,
out_dir=out_dir,
tiling_method=tiling_method,
)
tiler.tile(
cli_progress=cli_progress, parallel=parallel, override=override, **kwargs
)
return tiler.out_dir, tiler.builder