コード例 #1
0
ファイル: test_outliers.py プロジェクト: iobis/qc-service
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
コード例 #2
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))
コード例 #3
0
ファイル: test_outliers.py プロジェクト: iobis/qc-service
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
コード例 #4
0
ファイル: test_outliers.py プロジェクト: iobis/qc-service
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]
コード例 #5
0
ファイル: test_outliers.py プロジェクト: iobis/qc-service
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