Source code for rubin_sim.maf.metrics.chip_vendor_metric

__all__ = ("ChipVendorMetric",)

import numpy as np

from .base_metric import BaseMetric


[docs] class ChipVendorMetric(BaseMetric): """ See what happens if we have chips from different vendors """ def __init__(self, cols=None, **kwargs): if cols is None: cols = [] super(ChipVendorMetric, self).__init__( col=cols, metric_dtype=float, units="1,2,3:v1,v2,both", **kwargs ) def _chip_names2vendor_id(self, chip_name): """ given a list of chipnames, convert to 1 or 2, representing different vendors """ vendors = [] for chip in chip_name: # Parse the chip_name string. if int(chip[2]) % 2 == 0: vendors.append(1) else: vendors.append(2) return vendors
[docs] def run(self, data_slice, slice_point=None): if "chipNames" not in list(slice_point.keys()): raise ValueError("No chipname info, need to set use_camera=True with a spatial slicer.") uvendor_i_ds = np.unique(self._chip_names2vendor_id(slice_point["chipNames"])) if np.size(uvendor_i_ds) == 1: result = uvendor_i_ds else: result = 3 return result