def test_environmental_few_points(): """outliers - environmental few points""" points, duplicate_indices = t.rand_xy_list(1, -1, 1, -1, 1) qc = outliers.environmental(points, duplicate_indices, None, None) for grid in ['bathymetry', 'sssalinity', 'sstemperature']: g = qc[grid] assert len(g['ok_mad']) == len(points) and np.all(g['ok_mad']) assert len(g['ok_iqr']) == len(points) and np.all(g['ok_iqr']) assert isinstance(g['median'], float) and g['median'] != 0 for k in ['mad', 'q1', 'q3']: assert g[k] is None xy, duplicate_indices = t.rand_xy_list(10, -1, 1, -1, 1) qc = outliers.environmental(xy, duplicate_indices, mad_coef=1, iqr_coef=0.1) for grid in ['bathymetry', 'sssalinity', 'sstemperature']: g = qc[grid] assert len(g['ok_mad']) == len(xy) and 0 < np.sum(g['ok_mad']) < len(xy) assert len(g['ok_iqr']) == len(xy) and np.all(g['ok_iqr']) assert isinstance(g['median'], float) and g['median'] != 0 assert isinstance(g['mad'], float) and g['mad'] != 0 assert g['q1'] is None assert g['q3'] is None random.seed(42) points, duplicate_indices = [(random.uniform(-1, 1), random.uniform(-1, 1)) for _ in range(21)], list(range(21)) qc = outliers.environmental(points, duplicate_indices, mad_coef=1, iqr_coef=0.1) for grid in ['bathymetry', 'sssalinity', 'sstemperature']: g = qc[grid] assert len(g['ok_mad']) == len(points) and 0 < np.sum(g['ok_mad']) < len(points) assert len(g['ok_iqr']) == len(points) and 0 < np.sum(g['ok_iqr']) < len(points) for k in ['median', 'mad', 'q1', 'q3']: assert isinstance(g[k], float) and g[k] != 0
def _qc_taxon(req): points, aphiaid, mad_coef, iqr_coef, return_values = QcResource._parse_request( req) try: qcstats = None if aphiaid is not None: qcstats = taxoninfo.qc_stats(aphiaid) points, duplicate_indices = np.unique(points, return_inverse=True, axis=0) qc = outliers.environmental(points, duplicate_indices, mad_coef, iqr_coef, qcstats, return_values) qc['spatial'] = outliers.spatial(points, duplicate_indices, mad_coef, iqr_coef, qcstats, return_values) if qcstats is not None: qc['count'] = qcstats['count'] qc['id'] = qcstats['id'] else: qc['count'] = len(points) qc['id'] = None return qc except Exception as ex: raise falcon.HTTPError( falcon.HTTP_400, 'Error looking up data for provided points', str(ex))
def test_environmental(): """outliers - environmental""" points, duplicate_indices = t.rand_xy_list(150) qc = outliers.environmental(points, duplicate_indices, None, None) for grid in ['bathymetry', 'sssalinity', 'sstemperature']: g = qc[grid] assert len(g['ok_mad']) == len(points) assert len(g['ok_iqr']) == len(points) for k in ['median', 'mad', 'q1', 'q3']: assert isinstance(g[k], float) and g[k] != 0
def test_environmental_qcstats(): """outliers - environmental qc stats""" qcstats = taxoninfo.qc_stats(aphiaid=141433) points, duplicate_indices = t.rand_xy_list(200) qc = outliers.environmental(points, duplicate_indices, 12, 6, qcstats=qcstats) for grid in ['bathymetry', 'sssalinity', 'sstemperature']: g = qc[grid] print(grid) print(np.sum(g['ok_mad'])) print(np.sum(g['ok_iqr'])) assert len(g['ok_mad']) == len(points) and 0 < np.sum(g['ok_mad']) < len(points) assert len(g['ok_iqr']) == len(points) and 0 < np.sum(g['ok_iqr']) < len(points) for i, k in enumerate(['median', 'mad', 'q1', 'q3']): assert isinstance(g[k], float) and g[k] == qcstats[grid][i]
def test_environmental_no_valid_points(): """outliers environmental - no valid salinity""" qc = outliers.environmental([[15, 2]], [0], mad_coef=6, iqr_coef=3) for grid in ['sssalinity', 'sstemperature']: g = qc[grid] assert g['median'] is None