Source code for rubin_sim.maf.batches.altaz_batch

__all__ = ("altazHealpix", "altazLambert")

import rubin_sim.maf.metric_bundles as mb
import rubin_sim.maf.metrics as metrics
import rubin_sim.maf.plots as plots
import rubin_sim.maf.slicers as slicers

from .col_map_dict import col_map_dict
from .common import filter_list


def basicSetup(metric_name, colmap=None, nside=64):
    if colmap is None:
        colmap = col_map_dict()

    slicer = slicers.HealpixSlicer(
        nside=nside,
        lat_col=colmap["alt"],
        lon_col=colmap["az"],
        lat_lon_deg=colmap["raDecDeg"],
        use_cache=False,
    )
    metric = metrics.CountMetric(colmap["mjd"], metric_name=metric_name)

    return colmap, slicer, metric


[docs] def altazHealpix( colmap=None, run_name="run name", extraSql=None, extraInfoLabel=None, metric_name="NVisits Alt/Az", ): """ Generate a set of metrics measuring the number visits as a function of alt/az plotted on a HealpixSkyMap. Parameters ---------- colmap : `dict`, optional A dictionary with a mapping of column names. run_name : `str`, optional The name of the simulated survey. extraSql : `str`, optional Additional constraint to add to any sql constraints. extraInfoLabel : `str`, optional Additional info_label to add before any below (i.e. "WFD"). metric_name : `str`, optional Unique name to assign to metric Returns ------- metric_bundleDict : `dict` of {`str`: `maf.MetricBundle`} """ colmap, slicer, metric = basicSetup(metric_name=metric_name, colmap=colmap) # Set up basic all and per filter sql constraints. filterlist, colors, orders, sqls, info_label = filter_list( all=True, extra_sql=extraSql, extra_info_label=extraInfoLabel ) bundleList = [] plotDict = {"rot": (90, 90, 90), "flip": "geo"} plotFunc = plots.HealpixSkyMap() for f in filterlist: if f == "all": subgroup = "All Observations" else: subgroup = "Per filter" displayDict = { "group": "Alt/Az", "order": orders[f], "subgroup": subgroup, "caption": "Pointing History on the alt-az sky (zenith center) for filter %s" % f, } bundle = mb.MetricBundle( metric, slicer, sqls[f], plot_dict=plotDict, run_name=run_name, info_label=info_label[f], plot_funcs=[plotFunc], display_dict=displayDict, ) bundleList.append(bundle) for b in bundleList: b.set_run_name(run_name) return mb.make_bundles_dict_from_list(bundleList)
[docs] def altazLambert( colmap=None, runName="opsim", extraSql=None, extraInfoLabel=None, metric_name="Nvisits as function of Alt/Az", ): """ Generate a set of metrics measuring the number visits as a function of alt/az plotted on a LambertSkyMap. Parameters ---------- colmap : `dict`, optional A dictionary with a mapping of column names. runName : `str`, optional The name of the simulated survey. extraSql : `str`, optional Additional constraint to add to any sql constraints. extraInfoLabel : `str`, optional Additional info_label to add before any below (i.e. "WFD"). metric_name : `str`, optional Unique name to assign to metric Returns ------- metric_bundleDict : `dict` of {`str`: `maf.MetricBundle`} """ colmap, slicer, metric = basicSetup(metric_name=metric_name, colmap=colmap) # Set up basic all and per filter sql constraints. filterlist, colors, orders, sqls, info_label = filter_list( all=True, extra_sql=extraSql, extra_info_label=extraInfoLabel ) bundleList = [] plotFunc = plots.LambertSkyMap() for f in filterlist: if f == "all": subgroup = "All Observations" else: subgroup = "Per filter" displayDict = { "group": "Alt/Az", "order": orders[f], "subgroup": subgroup, "caption": "Alt/Az pointing distribution for filter %s" % f, } bundle = mb.MetricBundle( metric, slicer, sqls[f], run_name=runName, info_label=info_label[f], plot_funcs=[plotFunc], display_dict=displayDict, ) bundleList.append(bundle) for b in bundleList: b.set_run_name(runName) return mb.make_bundles_dict_from_list(bundleList)