Source code for rubin_sim.maf.metrics.snr_weight
__all__ = ("SnrWeightedMetric",)
import numpy as np
from rubin_sim.maf.utils import m52snr
from .base_metric import BaseMetric
[docs]
class SnrWeightedMetric(BaseMetric):
"""Take the SNR weighted average of a column."""
def __init__(self, col, m5_col="fiveSigmaDepth", metric_name=None, **kwargs):
if metric_name is None:
metric_name = "SNR Weighted %s" % col
super(SnrWeightedMetric, self).__init__(col=[m5_col, col], metric_name=metric_name, **kwargs)
self.m5_col = m5_col
self.col = col
self.star_mag = 20.0 # Arbitrary reference, value doesn't matter
[docs]
def run(self, data_slice, slice_point=None):
snr = m52snr(self.star_mag, data_slice[self.m5_col])
result = np.average(data_slice[self.col], weights=snr)
return result