def qa_image(im, context="") -> QA: """Assess the quality of an image :param im: :return: QA """ assert isinstance(im, Image), im data = { 'shape': str(im.data.shape), 'max': numpy.max(im.data), 'min': numpy.min(im.data), 'maxabs': numpy.max(numpy.abs(im.data)), 'rms': numpy.std(im.data), 'sum': numpy.sum(im.data), 'medianabs': numpy.median(numpy.abs(im.data)), 'medianabsdevmedian': numpy.median(numpy.abs(im.data - numpy.median(im.data))), 'median': numpy.median(im.data) } qa = QA(origin="qa_image", data=data, context=context) return qa
def test_qa(self): qa = QA(origin='foo', data={ 'rms': 100.0, 'median': 10.0 }, context='test of qa') log.debug(str(qa))
def qa_convolutionfunction(cf, context="") -> QA: """Assess the quality of a convolutionfunction :param cf: :return: QA """ assert isinstance(cf, ConvolutionFunction), cf data = {'shape': str(cf.data.shape), 'max': numpy.max(cf.data), 'min': numpy.min(cf.data), 'rms': numpy.std(cf.data), 'sum': numpy.sum(cf.data), 'medianabs': numpy.median(numpy.abs(cf.data)), 'median': numpy.median(cf.data)} qa = QA(origin="qa_image", data=data, context=context) return qa
def qa_visibility(vis: Union[Visibility, BlockVisibility], context=None) -> QA: """Assess the quality of Visibility :param context: :param vis: Visibility to be assessed :return: QA """ assert isinstance(vis, Visibility) or isinstance(vis, BlockVisibility), vis avis = numpy.abs(vis.vis) data = { 'maxabs': numpy.max(avis), 'minabs': numpy.min(avis), 'rms': numpy.std(avis), 'medianabs': numpy.median(avis) } qa = QA(origin='qa_visibility', data=data, context=context) return qa
def qa_griddata(gd, context="") -> QA: """Assess the quality of a griddata :param gd: :return: QA """ assert isinstance(gd, GridData), gd data = { 'shape': str(gd.data.shape), 'max': numpy.max(gd.data), 'min': numpy.min(gd.data), 'rms': numpy.std(gd.data), 'sum': numpy.sum(gd.data), 'medianabs': numpy.median(numpy.abs(gd.data)), 'median': numpy.median(gd.data) } qa = QA(origin="qa_image", data=data, context=context) return qa
def qa_pointingtable(pt: PointingTable, context=None) -> QA: """Assess the quality of a pointingtable :param pt: :return: AQ """ apt = numpy.abs(pt.pointing[pt.weight > 0.0]) ppt = numpy.angle(pt.pointing[pt.weight > 0.0]) data = { 'shape': pt.pointing.shape, 'maxabs-amp': numpy.max(apt), 'minabs-amp': numpy.min(apt), 'rms-amp': numpy.std(apt), 'medianabs-amp': numpy.median(apt), 'maxabs-phase': numpy.max(ppt), 'minabs-phase': numpy.min(ppt), 'rms-phase': numpy.std(ppt), 'medianabs-phase': numpy.median(ppt), 'residual': numpy.max(pt.residual) } return QA(origin='qa_pointingtable', data=data, context=context)
def qa_gaintable(gt: GainTable, context=None) -> QA: """Assess the quality of a gaintable :param gt: :return: AQ """ agt = numpy.abs(gt.gain) pgt = numpy.angle(gt.gain) data = { 'shape': gt.gain.shape, 'maxabs-amp': numpy.max(agt), 'minabs-amp': numpy.min(agt), 'rms-amp': numpy.std(agt), 'medianabs-amp': numpy.median(agt), 'maxabs-phase': numpy.max(pgt), 'minabs-phase': numpy.min(pgt), 'rms-phase': numpy.std(pgt), 'medianabs-phase': numpy.median(pgt), 'residual': numpy.max(gt.residual) } return QA(origin='qa_gaintable', data=data, context=context)