Source code for rubin_sim.maf.batches.skycoverage

"""Evaluate some bulk properties of the sky coverage
"""

__all__ = ("meanRADec", "eastWestBias")

import numpy as np

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

from .col_map_dict import col_map_dict


[docs] def meanRADec(colmap=None, runName="opsim", extraSql=None, extraInfoLabel=None): """Plot the range of RA/Dec as a function of night. 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 (e.g. 'night<365') extraInfoLabel : `str`, optional Additional info_label to add before any below (i.e. "WFD"). Returns ------- metric_bundleDict : `dict` of `maf.MetricBundle` """ if colmap is None: colmap = col_map_dict() bundleList = [] group = "RA Dec coverage" subgroup = "All visits" if extraInfoLabel is not None: subgroup = extraInfoLabel displayDict = {"group": group, "subgroup": subgroup, "order": 0} ra_metrics = [ metrics.MeanAngleMetric(colmap["ra"]), metrics.FullRangeAngleMetric(colmap["ra"]), ] dec_metrics = [ metrics.MeanMetric(colmap["dec"]), metrics.MinMetric(colmap["dec"]), metrics.MaxMetric(colmap["dec"]), ] for m in ra_metrics: slicer = slicers.OneDSlicer(slice_col_name=colmap["night"], bin_size=1) if not colmap["raDecDeg"]: plotDict = {"y_min": np.radians(-5), "y_max": np.radians(365)} else: plotDict = {"y_min": -5, "y_max": 365} bundle = mb.MetricBundle( m, slicer, extraSql, info_label=extraInfoLabel, display_dict=displayDict, plot_dict=plotDict, ) bundleList.append(bundle) for m in dec_metrics: slicer = slicers.OneDSlicer(slice_col_name=colmap["night"], bin_size=1) bundle = mb.MetricBundle(m, slicer, extraSql, info_label=extraInfoLabel, display_dict=displayDict) bundleList.append(bundle) # Set the run_name for all bundles and return the bundleDict. for b in bundleList: b.set_run_name(runName) return mb.make_bundles_dict_from_list(bundleList)
[docs] def eastWestBias(colmap=None, runName="opsim", extraSql=None, extraInfoLabel=None): """Plot the number of observations to the east vs to the west, per night. 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 (e.g. 'night<365') extraInfoLabel : `str`, optional Additional info_label to add before any below (i.e. "WFD"). Returns ------- metric_bundleDict : `dict` of `maf.MetricBundle` """ if colmap is None: colmap = col_map_dict() bundleList = [] group = "East vs West" subgroup = "All visits" if extraInfoLabel is not None: subgroup = extraInfoLabel displayDict = {"group": group, "subgroup": subgroup, "order": 0} eastvswest = 180 if not colmap["raDecDeg"]: eastvswest = np.radians(eastvswest) displayDict["caption"] = "Number of visits per night that occur with azimuth <= 180." if extraSql is not None: displayDict["caption"] += " With additional sql constraint %s." % extraSql metric = metrics.CountMetric(colmap["night"], metric_name="Nvisits East") slicer = slicers.OneDSlicer(slice_col_name=colmap["night"], bin_size=1) sql = "%s <= %f" % (colmap["az"], eastvswest) if extraSql is not None: sql = "(%s) and (%s)" % (sql, extraSql) plotDict = {"color": "orange", "label": "East"} bundle = mb.MetricBundle( metric, slicer, sql, info_label=extraInfoLabel, display_dict=displayDict, plot_dict=plotDict, ) bundleList.append(bundle) displayDict["caption"] = "Number of visits per night that occur with azimuth > 180." if extraSql is not None: displayDict["caption"] += " With additional sql constraint %s." % extraSql metric = metrics.CountMetric(colmap["night"], metric_name="Nvisits West") slicer = slicers.OneDSlicer(slice_col_name=colmap["night"], bin_size=1) sql = "%s > %f" % (colmap["az"], eastvswest) if extraSql is not None: sql = "(%s) and (%s)" % (sql, extraSql) plotDict = {"color": "blue", "label": "West"} bundle = mb.MetricBundle( metric, slicer, sql, info_label=extraInfoLabel, display_dict=displayDict, plot_dict=plotDict, ) bundleList.append(bundle) # Set the run_name for all bundles and return the bundleDict. for b in bundleList: b.set_run_name(runName) return mb.make_bundles_dict_from_list(bundleList)